5f9691856204ac8ee77795e1b9a89f82f825d2cd
angie
  Fri Jun 1 14:39:34 2012 -0700
Feature #6152 (Variant Annotation Integrator): added getHeader methodto annoStreamer so formatters can include primary source's header in
output -- header is a crucial part of some formats e.g. VCF.

diff --git src/lib/annoStreamer.c src/lib/annoStreamer.c
index b909e12..202cc80 100644
--- src/lib/annoStreamer.c
+++ src/lib/annoStreamer.c
@@ -19,30 +19,36 @@
 freez(&(self->chrom));
 if (chrom == NULL)
     {
     self->positionIsGenome = TRUE;
     self->regionStart = self->regionEnd = 0;
     }
 else
     {
     self->positionIsGenome = FALSE;
     self->chrom = cloneString(chrom);
     self->regionStart = rStart;
     self->regionEnd = rEnd;
     }
 }
 
+static char *annoStreamerGetHeader(struct annoStreamer *self)
+/* Default method: return NULL. */
+{
+return NULL;
+}
+
 struct annoFilter *annoStreamerGetFilters(struct annoStreamer *self)
 /* Return supported filters with current settings.  Callers can modify and free when done. */
 {
 return annoFilterCloneList(self->filters);
 }
 
 void annoStreamerSetFilters(struct annoStreamer *self, struct annoFilter *newFilters)
 /* Free old filters and use clone of newFilters. */
 {
 annoFilterFreeList(&(self->filters));
 self->filters = annoFilterCloneList(newFilters);
 }
 
 struct annoColumn *annoStreamerGetColumns(struct annoStreamer *self)
 /* Return supported columns with current settings.  Callers can modify and free when done. */
@@ -59,30 +65,31 @@
 
 void annoStreamerSetQuery(struct annoStreamer *self, struct annoGratorQuery *query)
 /* Set query (to be called only by annoGratorQuery which is created after streamers). */
 {
 self->query = query;
 }
 
 void annoStreamerInit(struct annoStreamer *self, struct asObject *asObj)
 /* Initialize a newly allocated annoStreamer with default annoStreamer methods and
  * default filters and columns based on asObj.
  * In general, subclasses' constructors will call this first; override nextRow, close,
  * and probably setRegion and setQuery; and then initialize their private data. */
 {
 self->getAutoSqlObject = annoStreamerGetAutoSqlObject;
 self->setRegion = annoStreamerSetRegion;
+self->getHeader = annoStreamerGetHeader;
 self->getFilters = annoStreamerGetFilters;
 self->setFilters = annoStreamerSetFilters;
 self->getColumns = annoStreamerGetColumns;
 self->setColumns = annoStreamerSetColumns;
 self->setQuery = annoStreamerSetQuery;
 self->positionIsGenome = TRUE;
 self->asObj = asObj;
 self->filters = annoFiltersFromAsObject(asObj);
 self->columns = annoColumnsFromAsObject(asObj);
 self->numCols = slCount(asObj->columnList);
 }
 
 void annoStreamerFree(struct annoStreamer **pSelf)
 /* Free self. This should be called at the end of subclass close methods, after
  * subclass-specific connections are closed and resources are freed. */