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."); } }
autoOrderedOfString OrderedOfString_selectUniqueItems (OrderedOfString me) { try { autoStringSet thee = StringSet_create (); for (long i = 1; i <= my size; i ++) { if (! thy hasItem (my at [i])) { // FIXME: first sort, then unicize autoSimpleString item = Data_copy (my at [i]); thy addItem_move (item.move()); } } autoOrderedOfString him = OrderedOfString_create (); for (long i = 1; i <= thy size; i ++) { autoSimpleString item = Data_copy (thy at [i]); his addItem_move (item.move()); } return him; } catch (MelderError) { Melder_throw (me, U": unique items not selected."); } }