58e020e2059bc60516a8c7282781a4201be42e70
chmalee
  Fri May 24 14:57:10 2019 -0700
hubCheck reports errors in sortOrder setting of composite subtracks, refs #13428

diff --git src/hg/inc/hui.h src/hg/inc/hui.h
index 9508dd3..b065993 100644
--- src/hg/inc/hui.h
+++ src/hg/inc/hui.h
@@ -988,30 +988,42 @@
                                     int visibleChild, struct slPair *events);
 /* Displays hide/show dropdown for supertrack.
  * Set visibleChild to indicate whether 'show' should be grayed
  * out to indicate that no supertrack members are visible:
  *    0 to gray out (no visible children)
  *    1 don't gray out (there are visible children)
  *   -1 don't know (this function should determine)
  * If -1,i the subtracks field must be populated with the child trackDbs.
  * Returns false if not a supertrack */
 #define superTrackDropDown(cart,tdb,visibleChild) \
         superTrackDropDownWithExtra(cart,tdb,visibleChild,NULL)
 
 boolean dimensionsExist(struct trackDb *parentTdb);
 /* Does this parent track contain dimensions? */
 
+typedef struct _membership
+    {
+    int count;
+    char **subgroups;  // Ary of Tags in parentTdb->subGroupN and in childTdb->subGroups (ie view)
+    char **membership; // Ary of Tags of subGroups that child belongs to (ie PK)
+    char **titles;     // Ary of Titles of subGroups a child belongs to (ie Peak)
+    char * setting;
+    } membership_t;
+
+membership_t *subgroupMembershipGet(struct trackDb *childTdb);
+/* gets all the subgroup membership for a child track */
+
 int subgroupCount(struct trackDb *parentTdb);
 /* How many subGroup setting does this parent have? */
 
 char * subgroupSettingByTagOrName(struct trackDb *parentTdb, char *groupNameOrTag);
 /* look for a subGroup by name (ie subGroup1) or tag (ie view) and return an unallocated char* */
 
 boolean subgroupingExists(struct trackDb *parentTdb, char *groupNameOrTag);
 /* Does this parent track contain a particular subgrouping? */
 
 boolean subgroupFind(struct trackDb *childTrack, char *name,char **value);
 /* looks for a single tag in a childTrack's subGroups setting */
 
 void subgroupFree(char **value);
 /* frees subgroup memory */