OrderedOfString OrderedOfString_selectUniqueItems (I, int sort) { iam (OrderedOfString); try { if (! sort) { autoOrderedOfString him = OrderedOfString_create (); for (long i = 1; i <= my size; i++) { SimpleString ss = (SimpleString) my item[i]; if (! OrderedOfString_indexOfItem_c (him.peek(), ss -> string)) { autoSimpleString item = Data_copy (ss); Collection_addItem (him.peek(), item.transfer()); } } Collection_shrinkToFit (him.peek()); return him.transfer(); } autoSortedSetOfString thee = SortedSetOfString_create (); /* Collection_to_SortedSet (I, int (*compare)(I, thou)) */ for (long i = 1; i <= my size; i++) { if (! thy hasItem (my item[i])) { autoSimpleString item = Data_copy ( (SimpleString) my item[i]); Collection_addItem (thee.peek(), item.transfer()); } } autoOrderedOfString him = OrderedOfString_create (); for (long i = 1; i <= thy size; i++) { autoSimpleString item = Data_copy ( (SimpleString) thy item[i]); Collection_addItem (him.peek(), item.transfer()); } return him.transfer(); } catch (MelderError) { Melder_throw (me, ": unique items not selected."); } }
void SpellingChecker_addNewWord (SpellingChecker me, const char32 *word) { try { if (! my userDictionary) my userDictionary = SortedSetOfString_create (); autostring32 generic = Melder_calloc (char32, 3 * str32len (word) + 1); Longchar_genericize32 (word, generic.peek()); SortedSetOfString_addString (my userDictionary, generic.transfer()); } catch (MelderError) { Melder_throw (me, U": word \"", word, U"\" not added."); } }