0e092ec31d4d48d6a85f4e68d081bd92d88a92b7
hiram
  Wed Apr 17 14:18:30 2019 -0700
correct array output better timing and column header information refs #18869

diff --git src/hg/hubApi/dataApi.h src/hg/hubApi/dataApi.h
index 2d9d8a6..b114a40 100644
--- src/hg/hubApi/dataApi.h
+++ src/hg/hubApi/dataApi.h
@@ -57,38 +57,44 @@
 
 /* limit amount of output to a maximum to avoid overload */
 extern int maxItemsOutput;	/* can be set in URL maxItemsOutput=N */
 /* for debugging purpose, current bot delay value */
 extern int botDelay;
 boolean debug;	/* can be set in URL debug=1, to turn off: debug=0 */
 
 /* default is to list all trackDb entries, composite containers too.
  * This option will limit to only the actual track entries with data
  */
 extern boolean trackLeavesOnly;	/* set by CGI parameter 'trackLeavesOnly' */
 
 /* this selects output type 'arrays', where the default type is: objects */
 extern boolean jsonOutputArrays; /* set by CGI parameter 'jsonOutputArrays' */
 
+extern boolean measureTiming;	/* set by CGI parameters */
+
 /*  functions in hubApi.c */
 struct hubPublic *hubPublicDbLoadAll();
 
 struct dbDb *ucscDbDb();
 /* return the dbDb table as an slList */
 
 /* ######################################################################### */
 /*  functions in apiUtils.c */
+
+void startProcessTiming();
+/* for measureTiming, beginning processing */
+
 void apiFinishOutput(int errorCode, char *errorString, struct jsonWrite *jw);
 /* finish json output, potential output an error code other than 200 */
 
 void apiErrAbort(int errorCode, char *errString, char *format, ...);
 /* Issue an error message in json format, and exit(0) */
 
 struct jsonWrite *apiStartOutput();
 /* begin json output with standard header information for all requests */
 
 extern char *jsonTypeStrings[];
 #define JSON_STRING	0	//    "string",	/* type 0 */
 #define JSON_NUMBER	1	//    "number",	/* type 1 */
 #define JSON_OBJECT	2	//    "object",	/* type 2 */
 #define JSON_ARRAY	3	//    "array",	/* type 3 */
 #define JSON_BOOLEAN	4	//    "boolean",	/* type 4 */
@@ -112,36 +118,34 @@
 
 struct trackDb *findTrackDb(char *track, struct trackDb *tdb);
 /* search tdb structure for specific track, recursion on subtracks */
 
 struct bbiFile *bigFileOpen(char *trackType, char *bigDataUrl);
 /* open bigDataUrl for correct trackType and error catch if failure */
 
 int chromInfoCmp(const void *va, const void *vb);
 /* Compare to sort based on size */
 
 boolean allowedBigBedType(char *type);
 /* return TRUE if the big* type is to be supported
  * add to this list as the big* supported types are expanded
  */
 
-// unsigned largestChrom(char *db, char **nameReturn, int *chromCount);
-/* return the length and get the chrom name for the largest chrom
- * from chromInfo table.  For use is sample getData URLs
- */
-
-// unsigned largestChromInfo(struct chromInfo *ci, char **chromName);
-/* find largest chrom in this chromInfo, return name and size */
+/* temporarily from table browser until proven works, then move to library */
+struct asObject *asForTable(struct sqlConnection *conn, char *table,
+    struct trackDb *tdb);
+/* Get autoSQL description if any associated with table. */
+/* Wrap some error catching around asForTable. */
 
 /* ######################################################################### */
 /*  functions in getData.c */
 
 void apiGetData(char *words[MAX_PATH_INFO]);
 /* 'getData' function, words[1] is the subCommand */
 
 /* ######################################################################### */
 /*  functions in list.c */
 
 void apiList(char *words[MAX_PATH_INFO]);
 /* 'list' function words[1] is the subCommand */
 
 #endif	/*	 DATAAPH_H	*/