b9d476612fdc106e8451223ea470e04779a5d1f5
tdreszer
  Tue Sep 14 15:53:14 2010 -0700
Composite views needed to be distinguished from subtracks
diff --git src/hg/inc/trackDb.h src/hg/inc/trackDb.h
index 9e801a2..4420a6e 100644
--- src/hg/inc/trackDb.h
+++ src/hg/inc/trackDb.h
@@ -60,6 +60,7 @@
 
 #define SUPERTRACK_MASK                 0x10
 #define COMPOSITE_MASK                  0x20
+#define COMPOSITE_VIEW_MASK             0x40
 #define SUPERTRACK_CHILD_MASK           0x01
 #define COMPOSITE_CHILD_MASK            0x02
 #define PARENT_MASK                     0xF0
@@ -69,6 +70,7 @@
 #define CHILD_NODE(nodeType)            ((nodeType) & CHILD_MASK)
 #define SUPERTRACK_NODE(nodeType)       (((nodeType) & SUPERTRACK_MASK) == SUPERTRACK_MASK)
 #define COMPOSITE_NODE(nodeType)        (((nodeType) & COMPOSITE_MASK ) == COMPOSITE_MASK )
+#define COMPOSITE_VIEW_NODE(nodeType)   (((nodeType) & COMPOSITE_VIEW_MASK ) == COMPOSITE_VIEW_MASK )
 #define SUPERTRACK_CHILD_NODE(nodeType) (((nodeType) & SUPERTRACK_CHILD_MASK) == SUPERTRACK_CHILD_MASK)
 #define COMPOSITE_CHILD_NODE(nodeType)  (((nodeType) & COMPOSITE_CHILD_MASK ) == COMPOSITE_CHILD_MASK )
 #define INDEPENDENT_NODE(nodeType)      (((nodeType) & TREETYPE_MASK ) == 0 )
@@ -109,6 +111,12 @@
 return tdb && tdb->parent && COMPOSITE_CHILD_NODE( tdb->treeNodeType);
 }
 
+INLINE boolean tdbIsCompositeView(struct trackDb *tdb)
+/* Is this trackDb struct marked as a child of a composite track ?  */
+{
+return tdb && tdb->subtracks && COMPOSITE_VIEW_NODE( tdb->treeNodeType);
+}
+
 INLINE void tdbMarkAsSuperTrack(struct trackDb *tdb)
 /* Marks a trackDb struct as a supertrack */
 {
@@ -133,6 +141,12 @@
 tdb->treeNodeType |= COMPOSITE_CHILD_MASK;
 }
 
+INLINE void tdbMarkAsCompositeView( struct trackDb *tdb)
+/* Marks a trackDb struct as a view of a composite track  */
+{
+tdb->treeNodeType |= COMPOSITE_VIEW_MASK;
+}
+
 struct trackDb *trackDbLoad(char **row);
 /* Load a trackDb from row fetched with select * from trackDb
  * from database.  Dispose of this with trackDbFree(). */