18d303bb4f14e1edff401c8a85276ff1344f0f37
angie
  Tue Apr 3 10:18:14 2012 -0700
Feature #6152 (Variant Annotation Tool): Added annoStreamVcf, whichled to yet more significant changes to annoRow: instead of every row
declaring its type and annoRow{Free,Clone} taking a numCols argument
that is meaningless for wig, now annoRow{Free,Clone} take the row's
source annoStreamer as an argument.  The annoStreamer now has public
members (rowType and numCols) that provide all information needed about
the row.  annoStreamer constructors need to set rowType.

diff --git src/lib/annoGratorQuery.c src/lib/annoGratorQuery.c
index 17145fd..1c48a6f 100644
--- src/lib/annoGratorQuery.c
+++ src/lib/annoGratorQuery.c
@@ -112,36 +112,35 @@
 	{
 	struct annoGrator *realGrator = (struct annoGrator *)grator;
 	struct annoRow *gratorRows = realGrator->integrate(realGrator, primaryRow, &rjFilterFailed);
 	slAddHead(&gratorRowLists, slRefNew(gratorRows));
 	if (rjFilterFailed)
 	    break;
 	for (formatter = query->formatters;  formatter != NULL;  formatter = formatter->next)
 	    formatter->collect(formatter, grator, gratorRows);
 	}
     slReverse(&gratorRowLists);
     for (formatter = query->formatters;  formatter != NULL;  formatter = formatter->next)
 	if (rjFilterFailed)
 	    formatter->discard(formatter);
 	else
 	    formatter->formatOne(formatter);
-    annoRowFree(&primaryRow, slCount(primarySrc->asObj->columnList));
+    annoRowFree(&primaryRow, primarySrc);
     struct slRef *oneRowList = gratorRowLists;
     grator = (struct annoStreamer *)(query->integrators);
     for (;  oneRowList != NULL;  oneRowList = oneRowList->next, grator = grator->next)
-	annoRowFreeList((struct annoRow **)&(oneRowList->val),
-			slCount(grator->asObj->columnList));
+	annoRowFreeList((struct annoRow **)&(oneRowList->val), grator);
     slFreeList(&oneRowList);
     }
 }
 
 void annoGratorQueryFree(struct annoGratorQuery **pQuery)
 /* Close and free all inputs and outputs; free self. */
 {
 if (pQuery == NULL)
     return;
 struct annoGratorQuery *query = *pQuery;
 freez(&(query->assemblyName));
 if (query->csAllocdHere)
     hashFree(&(query->chromSizes));
 query->primarySource->close(&(query->primarySource));
 struct annoStreamer *grator = (struct annoStreamer *)(query->integrators), *nextGrator;