292ed473726ab39e40b78978ed44c86add0d34fc
kent
  Wed Oct 12 14:25:28 2011 -0700
Adding hashElCmpWithEmbeddedNumbers.
diff --git src/lib/hash.c src/lib/hash.c
index 8ec874a..4fc097d 100644
--- src/lib/hash.c
+++ src/lib/hash.c
@@ -445,30 +445,39 @@
 for (i=0; i<hash->size; ++i)
     {
     for (hel = hash->table[i]; hel != NULL; hel = hel->next)
 	func(hel->val);
     }
 }
 
 int hashElCmp(const void *va, const void *vb)
 /* Compare two hashEl by name. */
 {
 const struct hashEl *a = *((struct hashEl **)va);
 const struct hashEl *b = *((struct hashEl **)vb);
 return strcmp(a->name, b->name);
 }
 
+int hashElCmpWithEmbeddedNumbers(const void *va, const void *vb)
+/* Compare two hashEl by name sorting including numbers within name,
+ * suitable for chromosomes, genes, etc. */
+{
+const struct hashEl *a = *((struct hashEl **)va);
+const struct hashEl *b = *((struct hashEl **)vb);
+return cmpStringsWithEmbeddedNumbers(a->name, b->name);
+}
+
 void *hashElFindVal(struct hashEl *list, char *name)
 /* Look up name in hashEl list and return val or NULL if not found. */
 {
 struct hashEl *el;
 for (el = list; el != NULL; el = el->next)
     {
     if (strcmp(el->name, name) == 0)
         return el->val;
     }
 return NULL;
 }
 
 struct hashEl *hashElListHash(struct hash *hash)
 /* Return a list of all elements of hash.   Free return with hashElFreeList. */
 {