533112afe2a2005e80cdb1f82904ea65032d4302
braney
  Sat Oct 2 11:37:34 2021 -0700
split hg/lib into two separate libaries, one only used by the cgis

diff --git src/hg/cgilib/trackTable.c src/hg/cgilib/trackTable.c
new file mode 100644
index 0000000..f0174c8
--- /dev/null
+++ src/hg/cgilib/trackTable.c
@@ -0,0 +1,409 @@
+/* trackTable.c was originally generated by the autoSql program, which also 
+ * generated trackTable.h and trackTable.sql.  This module links the database and
+ * the RAM representation of objects. */
+
+/* Copyright (C) 2014 The Regents of the University of California 
+ * See README in this or parent directory for licensing information. */
+
+#include "common.h"
+#include "linefile.h"
+#include "jksql.h"
+#include "trackTable.h"
+#include "hdb.h"
+
+
+void trackTableStaticLoad(char **row, struct trackTable *ret)
+/* Load a row from trackTable table into ret.  The contents of ret will
+ * be replaced at the next call to this function. */
+{
+
+ret->mapName = row[0];
+ret->tableName = row[1];
+ret->shortLabel = row[2];
+ret->longLabel = row[3];
+ret->visibility = sqlUnsigned(row[4]);
+ret->colorR = sqlUnsigned(row[5]);
+ret->colorG = sqlUnsigned(row[6]);
+ret->colorB = sqlUnsigned(row[7]);
+ret->altColorR = sqlUnsigned(row[8]);
+ret->altColorG = sqlUnsigned(row[9]);
+ret->altColorB = sqlUnsigned(row[10]);
+ret->useScore = sqlUnsigned(row[11]);
+ret->isSplit = sqlUnsigned(row[12]);
+ret->private = sqlUnsigned(row[13]);
+}
+
+struct trackTable *trackTableLoad(char **row)
+/* Load a trackTable from row fetched with select * from trackTable
+ * from database.  Dispose of this with trackTableFree(). */
+{
+struct trackTable *ret;
+
+AllocVar(ret);
+ret->mapName = cloneString(row[0]);
+ret->tableName = cloneString(row[1]);
+ret->shortLabel = cloneString(row[2]);
+ret->longLabel = cloneString(row[3]);
+ret->visibility = sqlUnsigned(row[4]);
+ret->colorR = sqlUnsigned(row[5]);
+ret->colorG = sqlUnsigned(row[6]);
+ret->colorB = sqlUnsigned(row[7]);
+ret->altColorR = sqlUnsigned(row[8]);
+ret->altColorG = sqlUnsigned(row[9]);
+ret->altColorB = sqlUnsigned(row[10]);
+ret->useScore = sqlUnsigned(row[11]);
+ret->isSplit = sqlUnsigned(row[12]);
+ret->private = sqlUnsigned(row[13]);
+return ret;
+}
+
+struct trackTable *trackTableLoadAll(char *fileName) 
+/* Load all trackTable from a tab-separated file.
+ * Dispose of this with trackTableFreeList(). */
+{
+struct trackTable *list = NULL, *el;
+struct lineFile *lf = lineFileOpen(fileName, TRUE);
+char *row[15];
+
+while (lineFileRow(lf, row))
+    {
+    el = trackTableLoad(row);
+    slAddHead(&list, el);
+    }
+lineFileClose(&lf);
+slReverse(&list);
+return list;
+}
+
+struct trackTable *trackTableCommaIn(char **pS, struct trackTable *ret)
+/* Create a trackTable out of a comma separated string. 
+ * This will fill in ret if non-null, otherwise will
+ * return a new trackTable */
+{
+char *s = *pS;
+
+if (ret == NULL)
+    AllocVar(ret);
+ret->mapName = sqlStringComma(&s);
+ret->tableName = sqlStringComma(&s);
+ret->shortLabel = sqlStringComma(&s);
+ret->longLabel = sqlStringComma(&s);
+ret->visibility = sqlUnsignedComma(&s);
+ret->colorR = sqlUnsignedComma(&s);
+ret->colorG = sqlUnsignedComma(&s);
+ret->colorB = sqlUnsignedComma(&s);
+ret->altColorR = sqlUnsignedComma(&s);
+ret->altColorG = sqlUnsignedComma(&s);
+ret->altColorB = sqlUnsignedComma(&s);
+ret->useScore = sqlUnsignedComma(&s);
+ret->isSplit = sqlUnsignedComma(&s);
+ret->private = sqlUnsignedComma(&s);
+*pS = s;
+return ret;
+}
+
+void trackTableFree(struct trackTable **pEl)
+/* Free a single dynamically allocated trackTable such as created
+ * with trackTableLoad(). */
+{
+struct trackTable *el;
+
+if ((el = *pEl) == NULL) return;
+freeMem(el->mapName);
+freeMem(el->tableName);
+freeMem(el->shortLabel);
+freeMem(el->longLabel);
+freez(pEl);
+}
+
+void trackTableFreeList(struct trackTable **pList)
+/* Free a list of dynamically allocated trackTable's */
+{
+struct trackTable *el, *next;
+
+for (el = *pList; el != NULL; el = next)
+    {
+    next = el->next;
+    trackTableFree(&el);
+    }
+*pList = NULL;
+}
+
+void trackTableOutput(struct trackTable *el, FILE *f, char sep, char lastSep) 
+/* Print out trackTable.  Separate fields with sep. Follow last field with lastSep. */
+{
+if (sep == ',') fputc('"',f);
+fprintf(f, "%s", el->mapName);
+if (sep == ',') fputc('"',f);
+fputc(sep,f);
+if (sep == ',') fputc('"',f);
+fprintf(f, "%s", el->tableName);
+if (sep == ',') fputc('"',f);
+fputc(sep,f);
+if (sep == ',') fputc('"',f);
+fprintf(f, "%s", el->shortLabel);
+if (sep == ',') fputc('"',f);
+fputc(sep,f);
+if (sep == ',') fputc('"',f);
+fprintf(f, "%s", el->longLabel);
+if (sep == ',') fputc('"',f);
+fputc(sep,f);
+fprintf(f, "%u", el->visibility);
+fputc(sep,f);
+fprintf(f, "%u", el->colorR);
+fputc(sep,f);
+fprintf(f, "%u", el->colorG);
+fputc(sep,f);
+fprintf(f, "%u", el->colorB);
+fputc(sep,f);
+fprintf(f, "%u", el->altColorR);
+fputc(sep,f);
+fprintf(f, "%u", el->altColorG);
+fputc(sep,f);
+fprintf(f, "%u", el->altColorB);
+fputc(sep,f);
+fprintf(f, "%u", el->useScore);
+fputc(sep,f);
+fprintf(f, "%u", el->isSplit);
+fputc(sep,f);
+fprintf(f, "%u", el->private);
+fputc(sep,f);
+}
+
+/* ---------------- End of AutoSQL generated code. ------------------ */
+
+static struct trackTable builtIns[] = 
+{
+    {
+     NULL,
+     "hgEst",	/* mapName */
+     "est",	/* tableName */
+     "Human ESTs",	/* shortLabel */
+     "Human ESTs",	/* longLabel */
+     0,	/* visibility */
+     0,0,0,	/* color */
+     0,0,0,	/* altColor */
+     0,	/* useScore */
+     0,	/* isSplit */
+     0,	/* private */
+    },
+    {
+     NULL,
+     "hgMrna",	/* mapName */
+     "mrna",	/* tableName */
+     "Full MGC mRNAs",	/* shortLabel */
+     "Full Length MGC mRNAs",	/* longLabel */
+     2,	/* visibility */
+     0,0,0,	/* color */
+     0,0,0,	/* altColor */
+     0,	/* useScore */
+     0,	/* isSplit */
+     0,	/* private */
+    },
+    {
+     NULL,
+     "BACends",	/* mapName */
+     "bacEnds",	/* tableName */
+     "BAC ends",	/* shortLabel */
+     "BAC end pairs",	/* longLabel */
+     0,	/* visibility */
+     0,0,0,	/* color */
+     0,0,0,	/* altColor */
+     0,	/* useScore */
+     0,	/* isSplit */
+     0,	/* private */
+    },
+    {
+     NULL,
+     "hgEst",	/* mapName */
+     "est",	/* tableName */
+     "Human ESTs",	/* shortLabel */
+     "Human ESTs",	/* longLabel */
+     0,	/* visibility */
+     0,0,0,	/* color */
+     0,0,0,	/* altColor */
+     0,	/* useScore */
+     1,	/* isSplit */
+     0,	/* private */
+    },
+    {
+     NULL,
+     "hgIntronEst",	/* mapName */
+     "intronEst",	/* tableName */
+     "Spliced ESTs",	/* shortLabel */
+     "Human ESTs That Have Been Spliced",	/* longLabel */
+     1,	/* visibility */
+     0,0,0,	/* color */
+     0,0,0,	/* altColor */
+     0,	/* useScore */
+     1,	/* isSplit */
+     0,	/* private */
+    },
+    {
+     NULL,
+     "hgMrna",	/* mapName */
+     "mrna",	/* tableName */
+     "Sequenced mRNAs",	/* shortLabel */
+     "Sequenced mRNAs from Genbank",	/* longLabel */
+     2,	/* visibility */
+     0,0,0,	/* color */
+     0,0,0,	/* altColor */
+     0,	/* useScore */
+     1,	/* isSplit */
+     0,	/* private */
+    },
+    {
+     NULL,
+     "hgRepeat",	/* mapName */
+     "rmsk",	/* tableName */
+     "RepeatMasker",	/* shortLabel */
+     "Repeating Elements by RepeatMasker",	/* longLabel */
+     1,	/* visibility */
+     0,0,0,	/* color */
+     0,0,0,	/* altColor */
+     1,	/* useScore */
+     1,	/* isSplit */
+     0,	/* private */
+    },
+    {
+     NULL,
+     "hgBlatMouse",	/* mapName */
+     "blatMouse",	/* tableName */
+     "Mouse Blat",	/* shortLabel */
+     "Mouse Translated Blat Alignments",	/* longLabel */
+     0,	/* visibility */
+     100,50,0,	/* color */
+     0,0,0,	/* altColor */
+     0,	/* useScore */
+     1,	/* isSplit */
+     0,	/* private */
+    },
+    {
+     NULL,
+     "hgContig",	/* mapName */
+     "ctgPos",	/* tableName */
+     "Chromosome Band",	/* shortLabel */
+     "Chromosome Bands Localized by FISH Mapping Clones",	/* longLabel */
+     1,	/* visibility */
+     150,0,0,	/* color */
+     0,0,0,	/* altColor */
+     0,	/* useScore */
+     0,	/* isSplit */
+     0,	/* private */
+    },
+    {
+     NULL,
+     "hgCytoBands",	/* mapName */
+     "cytoBand",	/* tableName */
+     "Chromosome Band",	/* shortLabel */
+     "Chromosome Bands Localized by FISH Mapping Clones",	/* longLabel */
+     1,	/* visibility */
+     0,0,0,	/* color */
+     150,50,50,	/* altColor */
+     0,	/* useScore */
+     0,	/* isSplit */
+     0,	/* private */
+    },
+    {
+     NULL,
+     "hgExoFish",	/* mapName */
+     "exoFish",	/* tableName */
+     "Exofish ecores",	/* shortLabel */
+     "Exofish Tetraodon/Human Conserved Regions (ecores)",	/* longLabel */
+     1,	/* visibility */
+     153,21,153,	/* color */
+     0,0,255,	/* altColor */
+     0,	/* useScore */
+     0,	/* isSplit */
+     0,	/* private */
+    },
+    {
+     NULL,
+     "hgGcPercent",	/* mapName */
+     "gcPercent",	/* tableName */
+     "GC Percent",	/* shortLabel */
+     "Percentage GC in 20,000 Base Windows",	/* longLabel */
+     0,	/* visibility */
+     0,0,0,	/* color */
+     0,0,0,	/* altColor */
+     0,	/* useScore */
+     0,	/* isSplit */
+     0,	/* private */
+    },
+    {
+     NULL,
+     "hgMusTest1",	/* mapName */
+     "musTest1",	/* tableName */
+     "Mouse Test 40",	/* shortLabel */
+     "Mouse Translated Blat Alignments Score > 40",	/* longLabel */
+     0,	/* visibility */
+     0,0,0,	/* color */
+     0,0,0,	/* altColor */
+     0,	/* useScore */
+     0,	/* isSplit */
+     1,	/* private */
+    },
+    {
+     NULL,
+     "hgRefGene",	/* mapName */
+     "refGene",	/* tableName */
+     "RefSeq Genes",	/* shortLabel */
+     "GenBank RefSeq Genes",	/* longLabel */
+     2,	/* visibility */
+     20,20,170,	/* color */
+     137,137,212,	/* altColor */
+     0,	/* useScore */
+     0,	/* isSplit */
+     0,	/* private */
+    },
+    {
+     NULL,
+     "hgRnaGene",	/* mapName */
+     "rnaGene",	/* tableName */
+     "RNA Genes",	/* shortLabel */
+     "Non-coding RNA Genes (dark) and Pseudogenes (light)",	/* longLabel */
+     2,	/* visibility */
+     170,80,130,	/* color */
+     230,180,130,	/* altColor */
+     0,	/* useScore */
+     0,	/* isSplit */
+     0,	/* private */
+    },
+    {
+     NULL,
+     "hgStsMarker",	/* mapName */
+     "stsMarker",	/* tableName */
+     "STS Markers",	/* shortLabel */
+     "STS Markers on Genetic (blue), FISH (green) and Radiation Hybrid (black) Maps",	/* longLabel */
+     1,	/* visibility */
+     0,0,0,	/* color */
+     128,128,255,	/* altColor */
+     1,	/* useScore */
+     0,	/* isSplit */
+     0,	/* private */
+    },
+};
+
+struct trackTable *hGetTracks(char *db)
+/* Get track table for specified database. */
+{
+struct trackTable *ttList = NULL, *tt;
+int i;
+char table[256];
+
+for (i=0; i<ArraySize(builtIns); ++i)
+    {
+    tt = builtIns+i;
+    if (tt->isSplit)
+       safef(table, sizeof(table), "chr22_%s", tt->tableName);
+    else
+       safef(table, sizeof(table), "%s", tt->tableName);
+    if (hTableExists(db, table))
+        {
+	slAddHead(&ttList, tt);
+	}
+    }
+slReverse(&ttList);
+return ttList;
+}
+