2d05d30ed4df1612d72ba84c812d004de935b122
angie
  Fri May 17 16:08:54 2024 -0700
Add lib module mmHash (memory-mapped hash), util tabToMmHash, and hgPhyloPlace support for using mmHash files instead of tab-separated files for metadata and name lookup.
Using mmHash for name lookup saves about 50-55 seconds for SARS-CoV-2 hgPhyloPlace name/ID queries.

diff --git src/lib/common.c src/lib/common.c
index 41160e5..b2c18c6 100644
--- src/lib/common.c
+++ src/lib/common.c
@@ -655,31 +655,31 @@
  * the array as a side effect. */
 {
 int median;
 intSort(count, array);
 if ((count&1) == 1)
     median = array[count>>1];
 else
     {
     count >>= 1;
     median = (array[count] + array[count-1]) * 0.5;
     }
 return median;
 }
 
 
-struct slName *newSlName(char *name)
+struct slName *newSlName(const char *name)
 /* Return a new name. */
 {
 struct slName *sn;
 if (name != NULL)
     {
     int len = strlen(name);
     sn = needMem(sizeof(*sn)+len);
     strcpy(sn->name, name);
     return sn;
     }
 else
     {
     AllocVar(sn);
     }
 return sn;
@@ -788,31 +788,31 @@
 char *slNameStore(struct slName **pList, char *string)
 /* Put string into list if it's not there already.
  * Return the version of string stored in list. */
 {
 struct slName *el;
 for (el = *pList; el != NULL; el = el->next)
     {
     if (sameString(string, el->name))
 	return el->name;
     }
 el = newSlName(string);
 slAddHead(pList, el);
 return el->name;
 }
 
-struct slName *slNameAddHead(struct slName **pList, char *name)
+struct slName *slNameAddHead(struct slName **pList, const char *name)
 /* Add name to start of list and return it. */
 {
 struct slName *el = slNameNew(name);
 slAddHead(pList, el);
 return el;
 }
 
 struct slName *slNameAddTail(struct slName **pList, char *name)
 /* Add name to end of list (not efficient for long lists),
  * and return it. */
 {
 struct slName *el = slNameNew(name);
 slAddTail(pList, el);
 return el;
 }