e70152e44cc66cc599ff6b699eb8adc07f3e656a
kent
  Sat May 24 21:09:34 2014 -0700
Adding Copyright NNNN Regents of the University of California to all files I believe with reasonable certainty were developed under UCSC employ or as part of Genome Browser copyright assignment.
diff --git src/hg/lib/chromKeeper.c src/hg/lib/chromKeeper.c
index 3ed6cd6..f4be96e 100644
--- src/hg/lib/chromKeeper.c
+++ src/hg/lib/chromKeeper.c
@@ -1,107 +1,110 @@
 /* chromKeeper.c - Wrapper around binKeepers for whole genome. */
+
+/* Copyright (C) 2014 The Regents of the University of California 
+ * See README in this or parent directory for licensing information. */
 #include "common.h"
 #include "hdb.h"
 #include "chromKeeper.h"
 #include "binRange.h"
 #include "jksql.h"
 
 static int chromCount=0;
 static char **chromNames = NULL;
 struct binKeeper **chromRanges = NULL;
 
 void chromKeeperInit(char *db)
 /* Initialize the chromKeeper to a given database (hg15,mm2, etc). */
 {
 struct slName *names = NULL, *name = NULL;
 int count=0;
 names = hAllChromNames(db);
 chromCount = slCount(names);
 assert(chromNames == NULL && chromRanges == NULL);
 AllocArray(chromNames, chromCount);
 AllocArray(chromRanges, chromCount);
 for(name=names; name != NULL; name = name->next)
     {
     int size = hChromSize(db, name->name);
     chromRanges[count] = binKeeperNew(0,size);
     chromNames[count] = cloneString(name->name);
     count++;
     }
 slFreeList(&names);
 }
 
 void chromKeeperInitChroms(struct slName *nameList, int maxChromSize)
 /* Initialize a chrom keeper with a list of names and a size that
    will be used for each one. */
 {
 struct slName *name = NULL;
 int count=0;
 chromCount = slCount(nameList);
 if(chromCount == 0)
     return;
 assert(chromNames == NULL && chromRanges == NULL);
 AllocArray(chromNames, chromCount);
 AllocArray(chromRanges, chromCount);
 for(name=nameList; name != NULL; name = name->next)
     {
     chromRanges[count] = binKeeperNew(0,maxChromSize);
     chromNames[count] = cloneString(name->name);
     count++;
     }
 }
 
 void chromKeeperAdd(char *chrom, int chromStart, int chromEnd, void *val)
 /* Add an item to the chromKeeper. */
 {
 int i=0;
 boolean added = FALSE;
 for(i=0; i<chromCount; i++)
     {
     if(sameString(chrom,chromNames[i])) 
 	{
 	binKeeperAdd(chromRanges[i], chromStart, chromEnd, val);
 	added=TRUE;
 	break;
 	}
     }
 if(!added)
     errAbort("chromKeeper::chromKeeperAdd() - Don't recognize chrom %s", chrom);
 }
 
 struct binElement *chromKeeperFind(char *chrom, int chromStart, int chromEnd)
 /* Return a list of all items in chromKeeper that intersect range.
    Free this list with slFreeList. */
 {
 int i;
 static boolean warned = FALSE;
 struct binElement *be = NULL;
 boolean found = FALSE;
 for(i=0; i<chromCount; i++)
     {
     if(sameString(chromNames[i], chrom))
 	{
 	be = binKeeperFind(chromRanges[i], chromStart, chromEnd);
 	found = TRUE;
 	break;
 	}
     }
 if(!found && !warned)
     {
     warn("chromKeeper::chromKeeperFind() - Don't recognize chrom %s", chrom);
     warned = TRUE;
     }
 return be;
 }
 
 void chromKeeperRemove(char *chrom, int chromStart, int chromEnd, void *val)
 /* Remove the item from the proper chromKeeper. */
 {
 int i=0;
 for(i=0; i<chromCount; i++)
     {
     if(sameString(chrom,chromNames[i])) 
 	{
 	binKeeperRemove(chromRanges[i], chromStart, chromEnd, val);
 	break;
 	}
     }
 }