Fix bug and add support for computing transitive closure of must edge graph
[satune.git] / src / Collections / hashset.h
index c9656a69444a676e2f9f22843a3467b30766b638..9282de97c359dd5f7cc2b9b1e38e27a25497e939 100644 (file)
@@ -45,6 +45,7 @@
        HashSet ## Name * copyHashSet ## Name(HashSet ## Name * set);                \
        void resetHashSet ## Name(HashSet ## Name * set);                         \
        bool addHashSet ## Name(HashSet ## Name * set,_Key key);                     \
+       void addAllHashSet ## Name(HashSet ## Name * set,HashSet ## Name * other);  \
        _Key getHashSet ## Name(HashSet ## Name * set,_Key key);                  \
        _Key getHashSetFirstKey ## Name(HashSet ## Name * set);                      \
        bool containsHashSet ## Name(HashSet ## Name * set,_Key key);             \
                reset ## Name ## Set(set->table);                                   \
        }                                                                     \
                                                                         \
+       void addAllHashSet ## Name(HashSet ## Name * set, HashSet ## Name * other) { \
+               HSIterator ## Name * it = iterator ## Name(other);                  \
+               while (hasNext ## Name(it))                                         \
+                       addHashSet ## Name(set, next ## Name(it));                        \
+               deleteIter ## Name(it);                                             \
+       }                                                                     \
+                                                                        \
        bool addHashSet ## Name(HashSet ## Name * set,_Key key) {                    \
                LinkNode ## Name * val = get ## Name ## Set(set->table, key);         \
                if (val == NULL) {                                                    \