cfe9afe019db302a08e0cc40ae19e7541540f2d7
angie
  Wed Jan 7 12:12:11 2015 -0800
Added annoStreamer{Get,Set}Name so that we're not stuck with awfully long filenames etc.
diff --git src/inc/annoStreamer.h src/inc/annoStreamer.h
index d6ba052..7401bfb 100644
--- src/inc/annoStreamer.h
+++ src/inc/annoStreamer.h
@@ -13,30 +13,34 @@
 // 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!) */
 
+    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. */
 
     struct annoRow *(*nextRow)(struct annoStreamer *self, char *minChrom, uint minEnd,
 			       struct lm *lm);
     /* Get the next item from this source.  If minChrom is non-NULL, optionally use
      * that as a hint to skip items that precede {minChrom, minEnd}.
@@ -61,30 +65,36 @@
 struct annoStreamRows
 /* An annoStreamer and (possibly NULL) list of rows it generated. */
     {
     struct annoStreamer *streamer;	// annoStreamer interface for metadata about row data
     struct annoRow *rowList;		// row data
     };
 
 // ---------------------- annoStreamer default methods -----------------------
 
 struct asObject *annoStreamerGetAutoSqlObject(struct annoStreamer *self);
 /* Return parsed autoSql definition of this streamer's data type. */
 
 void annoStreamerSetAutoSqlObject(struct annoStreamer *self, struct asObject *asObj);
 /* Use new asObj and update internal state derived from asObj. */
 
+char *annoStreamerGetName(struct annoStreamer *self);
+/* Returns cloned name of streamer; free when done. */
+
+void annoStreamerSetName(struct annoStreamer *self, char *name);
+/* Sets streamer name to clone of name. */
+
 void annoStreamerSetRegion(struct annoStreamer *self, char *chrom, uint rStart, uint rEnd);
 /* Set genomic region for query; if chrom is NULL, position is genome.
  * Many subclasses should make their own setRegion method that calls this and
  * configures their data connection to change to the new position. */
 
 void annoStreamerSetFilters(struct annoStreamer *self, struct annoFilter *newFilters);
 /* Replace any existing filters with newFilters.  It is up to calling code to
  * free old filters and allocate newFilters. */
 
 void annoStreamerAddFilters(struct annoStreamer *self, struct annoFilter *newFilters);
 /* Add newFilter(s).  It is up to calling code to allocate newFilters. */
 
 void annoStreamerInit(struct annoStreamer *self, struct annoAssembly *assembly,
 		      struct asObject *asObj, char *name);
 /* Initialize a newly allocated annoStreamer with default annoStreamer methods and