834194a10ad846f3fd0bb2bc1eea5b0b5c029cd7
angie
  Wed Nov 18 23:38:39 2015 -0800
Interface change: removing setAutoSqlObject method from streamer and
exposing annoGratorSetAutoSqlObject because asObj should never be
externally imposed, but a streamer/grator may have a need to bootstrap
itself without an asObj and then install one.
refs #15544

diff --git src/hg/lib/annoStreamDbKnownGene.c src/hg/lib/annoStreamDbKnownGene.c
index 729b64f..bd528bb 100644
--- src/hg/lib/annoStreamDbKnownGene.c
+++ src/hg/lib/annoStreamDbKnownGene.c
@@ -58,37 +58,30 @@
 "    uint    exonCount;          \"Number of exons\"\n"
 "    uint[exonCount] exonStarts; \"Exon start positions\"\n"
 "    uint[exonCount] exonEnds;   \"Exon end positions\"\n"
 "    string  proteinID;          \"UniProt display ID for Known Genes,  UniProt accession or RefSeq protein ID for UCSC Genes\" \n"
 "    string  alignID;            \"Unique identifier for each (known gene, alignment position) pair\"\n"
 ")\n";
 
 struct asObject *knownGeneAsObj()
 /* Return an autoSql object for knownGene. */
 {
 return asParseText(kgAutoSqlString);
 }
 
 #define KNOWNGENE_NUM_COLS 12
 
-static void askgSetAutoSqlObject(struct annoStreamer *self, struct asObject *asObj)
-/* Abort if something external tries to change the autoSql object. */
-{
-errAbort("annoStreamDbKnownGene %s: can't change autoSqlObject.",
-	 ((struct annoStreamer *)self)->name);
-}
-
 static void askgSetRegion(struct annoStreamer *sSelf, char *chrom, uint rStart, uint rEnd)
 /* Pass setRegion down to internal source. */
 {
 annoStreamerSetRegion(sSelf, chrom, rStart, rEnd);
 struct annoStreamDbKnownGene *self = (struct annoStreamDbKnownGene *)sSelf;
 self->mySource->setRegion(self->mySource, chrom, rStart, rEnd);
 }
 
 static char *getGeneSymbol(struct annoStreamDbKnownGene *self, char *kgID, struct lm *lm)
 /* Look up kgID in our geneSymbols hash from kgXref. */
 {
 char *symbol = hashFindVal(self->geneSymbols, kgID);
 if (symbol == NULL)
     symbol = "";
 return lmCloneString(lm, symbol);
@@ -157,22 +150,21 @@
  * its use in refGene.
  */
 {
 struct annoStreamDbKnownGene *self;
 AllocVar(self);
 struct annoStreamer *streamer = &(self->streamer);
 // Set up external streamer interface
 annoStreamerInit(streamer, aa, annoStreamDbKnownGeneAsObj(), "knownGene");
 streamer->rowType = arWords;
 // Get internal streamer for knownGene
 self->mySource = annoStreamDbNew(db, "knownGene", aa, maxOutRows, NULL);
 // Slurp in data from kgXref
 self->geneSymbols = hashNew(7);
 getGeneSymbols(self, db);
 // Override methods that need to pass through to internal source:
-streamer->setAutoSqlObject = askgSetAutoSqlObject;
 streamer->setRegion = askgSetRegion;
 streamer->nextRow = askgNextRow;
 streamer->close = askgClose;
 
 return (struct annoStreamer *)self;
 }