static PointProcess TextGrid_getStartingPoints_multiNumeric (TextGrid me, uint16_t number) { try { autoPointProcess thee = NULL; int numberOfBits = my numberOfTiers(); for (int ibit = 0; ibit < numberOfBits; ibit ++) { (void) TextGrid_checkSpecifiedTierIsIntervalTier (me, ibit + 1); if (number & (1 << ibit)) { autoPointProcess bitEvents = TextGrid_getStartingPoints (me, ibit + 1, kMelder_string_EQUAL_TO, L"1"); if (thee.peek()) { autoPointProcess intersection = PointProcesses_intersection (thee.peek(), bitEvents.peek()); thee.reset (intersection.transfer()); } else { thee.reset (bitEvents.transfer()); } } } for (int ibit = 0; ibit < numberOfBits; ibit ++) { autoPointProcess bitEvents = TextGrid_getStartingPoints (me, ibit + 1, kMelder_string_EQUAL_TO, L"1"); if (! (number & (1 << ibit))) { if (thee.peek()) { autoPointProcess difference = PointProcesses_difference (thee.peek(), bitEvents.peek()); thee.reset (difference.transfer()); } else { thee.reset (PointProcess_create (my xmin, my xmax, 10)); } } } return thee.transfer(); } catch (MelderError) { Melder_throw (me, ": starting points not converted to PointProcess."); } }
static autoPointProcess TextGrid_getStartingPoints_multiNumeric (TextGrid me, uint16_t number) { try { autoPointProcess thee; int numberOfBits = my tiers->size; for (int ibit = 0; ibit < numberOfBits; ibit ++) { (void) TextGrid_checkSpecifiedTierIsIntervalTier (me, ibit + 1); if (number & (1 << ibit)) { autoPointProcess bitEvents = TextGrid_getStartingPoints (me, ibit + 1, kMelder_string_EQUAL_TO, U"1"); if (thee) { thee = PointProcesses_intersection (thee.get(), bitEvents.get()); } else { thee = bitEvents.move(); } } } for (int ibit = 0; ibit < numberOfBits; ibit ++) { autoPointProcess bitEvents = TextGrid_getStartingPoints (me, ibit + 1, kMelder_string_EQUAL_TO, U"1"); if (! (number & (1 << ibit))) { if (thee) { thee = PointProcesses_difference (thee.get(), bitEvents.get()); } else { thee = PointProcess_create (my xmin, my xmax, 10); } } } return thee; } catch (MelderError) { Melder_throw (me, U": starting points not converted to PointProcess."); } }