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/inc/annoStreamer.h src/inc/annoStreamer.h
index 7401bfb..33b22d1 100644
--- src/inc/annoStreamer.h
+++ src/inc/annoStreamer.h
@@ -10,32 +10,33 @@
 // The real work of fetching and filtering data is left to subclass
 // implementations.  The purpose of this module is to provide an
 // interface for communication with other components of the
 // annoGratorQuery framework, and simple methods shared by all
 // subclasses.
 
 struct annoStreamer
 /* Generic interface to configure a data source's filters and output data, and then
  * retrieve data, which must be sorted by genomic position.  Subclasses of this
  * will do all the actual work. */
     {
     struct annoStreamer *next;
 
     // Public methods
     struct asObject *(*getAutoSqlObject)(struct annoStreamer *self);
-    void (*setAutoSqlObject)(struct annoStreamer *self, struct asObject *asObj);
-    /* Get and set autoSql representation (do not modify or free asObj!) */
+    /* Get autoSql representation (do not modify or free asObj!)
+     * There is no setter because changing the asObj should never be externally imposed.
+     * Subclasses must use annoStreamerSetAutoSqlObject to change their internal asObj. */
 
     char *(*getName)(struct annoStreamer *self);
     void (*setName)(struct annoStreamer *self, char *name);
     /* Get and set name (short identifier, unique among streamers in a query). */
 
     void (*setRegion)(struct annoStreamer *self, char *chrom, uint rStart, uint rEnd);
     /* Set genomic region for query; if chrom is NULL, region is whole genome.
      * This must be called on all annoGrator components in query, not a subset. */
 
     char *(*getHeader)(struct annoStreamer *self);
     /* Get the file header as a string (possibly NULL, possibly multi-line). */
 
     void (*setFilters)(struct annoStreamer *self, struct annoFilter *newFilters);
     void (*addFilters)(struct annoStreamer *self, struct annoFilter *newFilters);
     /* Set/add filters. Memory management of filters is up to caller. */