/* create a new one */ public static SequencerTableRec NewSequencerTable() { SequencerTableRec Table = new SequencerTableRec(); Table.NameToArray = new Dictionary <string, List <PlayTrackInfoRec> >(); return(Table); }
/* get reference to array of items for given name. may return NIL if no items */ public static List <PlayTrackInfoRec> SequencerTableQuery( SequencerTableRec Table, string Name) { List <PlayTrackInfoRec> Array; Table.NameToArray.TryGetValue(Name, out Array); return(Array); }
/* add an item */ public static void SequencerTableInsert( SequencerTableRec Table, string Name, PlayTrackInfoRec Object) { List <PlayTrackInfoRec> Array; if (!Table.NameToArray.TryGetValue(Name, out Array)) { Array = new List <PlayTrackInfoRec>(); Table.NameToArray.Add(Name, Array); } Array.Add(Object); }
/* remove an object */ public static void SequencerTableRemoveObject( SequencerTableRec Table, PlayTrackInfoRec Object) { foreach (KeyValuePair <string, List <PlayTrackInfoRec> > entry in Table.NameToArray) { int i = entry.Value.IndexOf(Object); if (i >= 0) { entry.Value.RemoveAt(i); return; } } // object was not found Debug.Assert(false); throw new InvalidOperationException(); }