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. */ {