5c213974bb28e98d1b10ad9a86063101e684e5e3 braney Mon Oct 31 12:16:52 2022 -0700 add Jim's track duplication code diff --git src/hg/inc/dupTrack.h src/hg/inc/dupTrack.h new file mode 100644 index 0000000..0f9f517 --- /dev/null +++ src/hg/inc/dupTrack.h @@ -0,0 +1,47 @@ +/* Stuff to help handle a track that is a duplicate of a another - sharing data + * and type, but having it's own cart settings. */ + +#ifndef DUPTRACK_H +#define DUPTRACK_H + +#define DUP_TRACK_PREFIX "dup_" +#define DUP_TRACKS_VAR DUP_TRACK_PREFIX "tracks" + +struct dupTrack +/* A duplicate track */ + { + struct dupTrack *next; + char *name; /* Usually will look like dup_1_track_name */ + char *source; /* Will look like track_name */ + struct slPair *tagList; /* List of tags */ + }; + +struct dupTrack *dupTrackReadAll(char *fileName); +/* Read in ra file and return it as a list of dupTracks */ + +struct trackDb *dupTdbFrom(struct trackDb *sourceTdb, struct dupTrack *dup); +/* Generate a duplicate trackDb */ + +struct dupTrack *dupTrackListFromCart(struct cart *cart); +/* Consult cart for dup track variable and if it's there return + * list of dupes */ + +struct dupTrack *dupTrackFindInList(struct dupTrack *list, char *name); +/* Return matching element in list */ + +char *dupTrackInCartAndTrash(char *sourceTrack, struct cart *cart, struct trackDb *sourceTdb); +/* Update cart vars to reflect existance of duplicate of sourceTrack. + * Also write out or append to dupe track trash file */ + +void undupTrackInCartAndTrash(char *sourceTrack, struct cart *cart); +/* Update cart vars to reflect removal of dupTrack. Also reduce or + * remove trash file */ + +boolean isDupTrack(char *track); +/* determine if track name refers to a custom track */ + +char *dupTrackSkipToSourceName(char *dupeTrackName); +/* If it looks like it's a dupe track then skip over duppy part + * in particular skip over dup_N_ form prefix for numerical N. */ + +#endif /* DUPTRACK_H */