/*__________________________________________________________________________________*/ static void FreeSexEv( lifo* fl, MidiEvPtr e) { register MidiEvPtr f, c, n; f = c = (MidiEvPtr)LinkSE(e); MSFreeCell (e, fl); do { n = c->link; MSFreeCell (c, fl); c = n; } while (c != f); }
/*__________________________________________________________________________________*/ static MidiEvPtr CopyPrivateEv( lifo* fl, MidiEvPtr ev) { MidiEvPtr copy = MSNewCell( fl); if (copy) { MidiSTPtr ext = (MidiSTPtr)MSNewCell( fl); if (!ext) { MSFreeCell (copy, fl); return 0; } *copy = *ev; *ext = *LinkST(ev); LinkST(copy) = ext; } return copy; }
/*__________________________________________________________________________________*/ static MidiEvPtr NewPrivateEv( lifo* fl, short typeNum) { MidiEvPtr ev = MSNewCell( fl); if( ev) { MidiSTPtr ext= (MidiSTPtr)MSNewCell(fl); if ( !ext) { MSFreeCell (ev, fl); return 0; } /* creates a clear extension block */ ext->val[0]= ext->val[1]= ext->val[2]= ext->val[3]= 0; Link(ev)= 0; /* initialize the header */ Date(ev)= defaultTime; EvType(ev)= (uchar)typeNum; RefNum(ev)= 0xff; Chan(ev) = Port(ev) = 0; LinkST(ev)= ext; /* link the extension block */ } return ev; }
/*__________________________________________________________________________________*/ static void FreePrivateEv( lifo* fl, MidiEvPtr e) { MSFreeCell (LinkST(e), fl); MSFreeCell (e, fl); }
/*__________________________________________________________________________________*/ static void FreeSmallEv( lifo* fl, MidiEvPtr e) { MSFreeCell (e, fl); }
void MIDISHAREAPI MidiFreeCell(MidiEvPtr e) { if (e) MSFreeCell( e, FreeList(Memory(gMem))); }