autoStringsIndex Stringses_to_StringsIndex (Strings me, Strings classes) { try { autoStringsIndex tmp = Strings_to_StringsIndex (classes); long numberOfClasses = tmp -> classes -> size; autoStringsIndex him = StringsIndex_create (my numberOfStrings); for (long i = 1; i <= numberOfClasses; i++) { SimpleString t = (SimpleString) tmp -> classes -> item[i]; autoSimpleString t2 = Data_copy (t); Collection_addItem_move (his classes.peek(), t2.move()); } for (long j = 1; j <= my numberOfStrings; j++) { long index = 0; char32 *stringsj = my strings[j]; for (long i = 1; i <= numberOfClasses; i++) { SimpleString ss = (SimpleString) his classes -> item[i]; if (Melder_cmp (stringsj, ss -> string) == 0) { index = i; break; } } his classIndex[j] = index; } return him; } catch (MelderError) { Melder_throw (me, U": no StringsIndex created."); } }
int StringsIndex_getClass (StringsIndex me, char32 *klasLabel) { for (long i = 1; i <= my classes -> size; i++) { SimpleString ss = (SimpleString) my classes -> item[i]; if (Melder_cmp (ss -> string, klasLabel) == 0) { return i; } } return 0; }
long FilesInMemory_getIndexFromId (FilesInMemory me, const char32 *id) { long index = 0; for (long i = 1; i <= my size; i++) { FileInMemory fim = (FileInMemory) my item[i]; if (Melder_cmp (id, fim -> d_id) == 0) { index = i; break; } } return index; }
void IntervalTier_cutIntervalsOnLabelMatch (IntervalTier me, const char32 *label) { long i = 1; while (i < my intervals -> size) { TextInterval ti = (TextInterval) my intervals -> item[i]; TextInterval tip1 = (TextInterval) my intervals -> item[i + 1]; if ( (label == 0 || (ti -> text != 0 && str32equ (ti -> text, label))) && (Melder_cmp (ti -> text, tip1 -> text) == 0)) { IntervalTier_cutInterval (me, i, 1); } else { i++; } } }
static double TextGrid_getStartTimeOfFirstOccurence (TextGrid thee, long tierNumber, const char32 *label) { TextGrid_checkSpecifiedTierNumberWithinRange (thee, tierNumber); IntervalTier intervalTier = (IntervalTier) thy tiers->at [tierNumber]; if (intervalTier -> classInfo != classIntervalTier) { Melder_throw (U"Tier ", tierNumber, U" is not an interval tier."); } double start = NUMundefined; for (long iint = 1; iint <= intervalTier -> intervals.size; iint ++) { TextInterval ti = intervalTier -> intervals.at [iint]; if (Melder_cmp (ti -> text, label) == 0) { start = ti -> xmin; break; } } return start; }
autoStringsIndex Strings_to_StringsIndex (Strings me) { try { autoStringsIndex thee = StringsIndex_create (my numberOfStrings); autoPermutation sorted = Strings_to_Permutation (me, 1); long numberOfClasses = 0; char32 *strings = nullptr; for (long i = 1; i <= sorted -> numberOfElements; i++) { long index = sorted -> p[i]; char32 *stringsi = my strings[index]; if (i == 1 || Melder_cmp (strings, stringsi) != 0) { numberOfClasses++; autoSimpleString him = SimpleString_create (stringsi); Collection_addItem_move (thy classes.peek(), him.move()); strings = stringsi; } thy classIndex[index] = numberOfClasses; } return thee; } catch (MelderError) { Melder_throw (me, U": no StringsIndex created."); } }
autoConfusion Confusion_createSimple (const char32 *labels) { try { long numberOfLabels = Melder_countTokens (labels); if (numberOfLabels < 1) { Melder_throw (U"Not enough labels."); } autoConfusion me = Confusion_create (numberOfLabels, numberOfLabels); long ilabel = 1; for (char32 *token = Melder_firstToken (labels); token != 0; token = Melder_nextToken ()) { for (long i = 1; i <= ilabel - 1; i++) { if (Melder_cmp (token, my rowLabels[i]) == 0) { Melder_throw (U"Label ", i, U"and ", ilabel, U"may not be equal."); } } TableOfReal_setRowLabel (me.get(), ilabel, token); TableOfReal_setColumnLabel (me.get(), ilabel, token); ilabel++; } return me; } catch (MelderError) { Melder_throw (U"Simple Confusion not created."); } }
int structFileInMemorySet :: s_compare_id (FileInMemory me, FileInMemory thee) { return Melder_cmp (my d_id, thy d_id); }
int structFileInMemorySet :: s_compare_name (FileInMemory me, FileInMemory thee) { return Melder_cmp (my d_path, thy d_path); }
int structFilesInMemory :: s_compare_id (I, thou) { iam (FileInMemory); thouart (FileInMemory); return Melder_cmp (my d_id, thy d_id); }
int structFilesInMemory :: s_compare_name (I, thou) { iam (FileInMemory); thouart (FileInMemory); return Melder_cmp (my d_path, thy d_path); }