Changed iter_new to inter_init and added new iter_new that allocates the iterator on the heap

This commit is contained in:
Leonardo committed 2019-05-08 11:47:00 -03:00
1 parent 6002650f06
commit c61ac2e347
29 files changed
+261 -71

No files matched your search

+1 -1
View File
@@ -29,7 +29,7 @@ int main(int argc, char const *argv[])
}
deque_iter iter;
d_iter_new(&iter, numbers);
d_iter_init(&iter, numbers);
size_t result, index, sum = 0;
+1 -1
View File
@@ -25,7 +25,7 @@ void print_set(set *s)
size_t index;
int result;
set_iter iter;
set_iter_new(&iter, s);
set_iter_init(&iter, s);
for (set_iter_tostart(&iter); !set_iter_end(&iter);)
{
set_iter_next(&iter, &result, &index);
+1 -1
View File
@@ -27,7 +27,7 @@ int main(int argc, char const *argv[])
// Initialize iterator
deque_iter iter;
d_iter_new(&iter, d);
d_iter_init(&iter, d);
// Make the iterator go back and forward
for (int j = 0; j < 4; j++)
+1 -1
View File
@@ -43,7 +43,7 @@ int main(int argc, char const *argv[])
// Initialize iterator
hmap_iter iter;
hm_iter_new(&iter, hm);
hm_iter_init(&iter, hm);
// Make the iterator go back and forward
for (int j = 0; j < 4; j++)
+1 -1
View File
@@ -42,7 +42,7 @@ int main(int argc, char const *argv[])
// Initialize iterator
hset_iter iter;
hs_iter_new(&iter, hs);
hs_iter_init(&iter, hs);
// Make the iterator go back and forward
for (int j = 0; j < 4; j++)
+1 -1
View File
@@ -30,7 +30,7 @@ int main(int argc, char const *argv[])
// Initialize iterator
heap_iter iter;
h_iter_new(&iter, h);
h_iter_init(&iter, h);
// Make the iterator go back and forward
for (int j = 0; j < 4; j++)
+1 -1
View File
@@ -25,7 +25,7 @@ int main(int argc, char const *argv[])
// Initialize iterator
linked_iter iter;
ll_iter_new(&iter, ll);
ll_iter_init(&iter, ll);
// Make the iterator go back and forward
for (int j = 0; j < 4; j++)
+1 -1
View File
@@ -25,7 +25,7 @@ int main(int argc, char const *argv[])
// Initialize iterator
list_iter iter;
l_iter_new(&iter, l);
l_iter_init(&iter, l);
// Make the iterator go back and forward
for (int j = 0; j < 4; j++)
+1 -1
View File
@@ -25,7 +25,7 @@ int main(int argc, char const *argv[])
// Initialize iterator
queue_iter iter;
q_iter_new(&iter, q);
q_iter_init(&iter, q);
// Make the iterator go back and forward
for (int j = 0; j < 4; j++)
+1 -1
View File
@@ -25,7 +25,7 @@ int main(int argc, char const *argv[])
// Initialize iterator
stack_iter iter;
s_iter_new(&iter, s);
s_iter_init(&iter, s);
// Make the iterator go back and forward
for (int j = 0; j < 4; j++)
+1 -1
View File
@@ -31,7 +31,7 @@ int main(int argc, char const *argv[])
// Initialize iterator
tmap_iter iter;
tm_iter_new(&iter, tm);
tm_iter_init(&iter, tm);
// Make the iterator go back and forward
for (int j = 0; j < 4; j++)
+1 -1
View File
@@ -30,7 +30,7 @@ int main(int argc, char const *argv[])
// Initialize iterator
tset_iter iter;
ts_iter_new(&iter, ts);
ts_iter_init(&iter, ts);
// Make the iterator go back and forward
for (int j = 0; j < 4; j++)
+1 -1
View File
@@ -24,7 +24,7 @@ int main(int argc, char const *argv[])
// Initialize iterator
linked_iter iter;
ll_iter_new(&iter, ll);
ll_iter_init(&iter, ll);
// Move cursor to the end of the list
ll_iter_toend(&iter);
+1 -1
View File
@@ -54,7 +54,7 @@ int main(int argc, char const *argv[])
// Iterate over each element starting from the start (iter_new positions
// the iterator to the start of the list) until the end of the list.
for (l_iter_new(&iter, my_list); !l_iter_end(&iter);)
for (l_iter_init(&iter, my_list); !l_iter_end(&iter);)
{
// Here index corresponds to the position of the result relative to all
// other elements in the iteration. It is only a coincidence that the
+3 -3
View File
@@ -53,7 +53,7 @@ int main(int argc, char const *argv[])
// Iterate through each letter and print it
string_iter iter;
str_iter_new(&iter, my_str);
str_iter_init(&iter, my_str);
size_t index;
char result;
@@ -106,13 +106,13 @@ int main(int argc, char const *argv[])
// Pop white space
str_pop_front(str_out);
for (str_iter_new(&iter, my_str); !str_iter_end(&iter);)
for (str_iter_init(&iter, my_str); !str_iter_end(&iter);)
{
str_iter_next(&iter, &result, &index);
putchar(result);
}
printf("\nString length: %lu\n\n", str_count(my_str));
for (str_iter_new(&iter, str_out); !str_iter_end(&iter);)
for (str_iter_init(&iter, str_out); !str_iter_end(&iter);)
{
str_iter_next(&iter, &result, &index);
putchar(result);
+1 -1
View File
@@ -77,7 +77,7 @@ int main(int argc, char const *argv[])
int key;
size_t mult, _;
for (tm_iter_new(&iter, map); !tm_iter_end(&iter); /* empty */)
for (tm_iter_init(&iter, map); !tm_iter_end(&iter); /* empty */)
{
// Map[key] = multiplicity
tm_iter_next(&iter, &key, &mult, &_);
+1 -1
View File
@@ -25,7 +25,7 @@ void print_set(set *s)
size_t index;
int result;
set_iter iter;
set_iter_new(&iter, s);
set_iter_init(&iter, s);
for (set_iter_tostart(&iter); !set_iter_end(&iter);)
{
set_iter_next(&iter, &result, &index);
+21 -2
View File
@@ -82,7 +82,9 @@
FMOD size_t PFX##_count(SNAME *_deque_); \
FMOD size_t PFX##_capacity(SNAME *_deque_); \
\
FMOD void PFX##_iter_new(SNAME##_iter *iter, SNAME *target); \
FMOD SNAME##_iter *PFX##_iter_new(SNAME *target); \
FMOD void PFX##_iter_free(SNAME##_iter *iter); \
FMOD void PFX##_iter_init(SNAME##_iter *iter, SNAME *target); \
FMOD bool PFX##_iter_start(SNAME##_iter *iter); \
FMOD bool PFX##_iter_end(SNAME##_iter *iter); \
FMOD void PFX##_iter_tostart(SNAME##_iter *iter); \
@@ -279,7 +281,24 @@
return _deque_->capacity; \
} \
\
FMOD void PFX##_iter_new(SNAME##_iter *iter, SNAME *target) \
FMOD SNAME##_iter *PFX##_iter_new(SNAME *target) \
{ \
SNAME##_iter *iter = malloc(sizeof(SNAME##_iter)); \
\
if (!iter) \
return NULL; \
\
PFX##_iter_init(iter, target); \
\
return iter; \
} \
\
FMOD void PFX##_iter_free(SNAME##_iter *iter) \
{ \
free(iter); \
} \
\
FMOD void PFX##_iter_init(SNAME##_iter *iter, SNAME *target) \
{ \
iter->target = target; \
iter->cursor = target->front; \
+4 -4
View File
@@ -20,7 +20,7 @@
size_t index; \
V value; \
SNAME##_iter iter; \
PFX##_iter_new(&iter, TARGET); \
PFX##_iter_init(&iter, TARGET); \
while (PFX##_iter_next(&iter, &value, &index)) \
{ \
BODY; \
@@ -33,7 +33,7 @@
size_t index; \
V value; \
SNAME##_iter iter; \
PFX##_iter_new(&iter, TARGET); \
PFX##_iter_init(&iter, TARGET); \
PFX##_iter_toend(&iter); \
while (PFX##_iter_prev(&iter, &value, &index)) \
{ \
@@ -48,7 +48,7 @@
K key; \
V value; \
SNAME##_iter iter; \
PFX##_iter_new(&iter, TARGET); \
PFX##_iter_init(&iter, TARGET); \
while (PFX##_iter_next(&iter, &key, &value, &index)) \
{ \
BODY; \
@@ -62,7 +62,7 @@
K key; \
V value; \
SNAME##_iter iter; \
PFX##_iter_new(&iter, TARGET); \
PFX##_iter_init(&iter, TARGET); \
PFX##_iter_toend(&iter); \
while (PFX##_iter_prev(&iter, &key, &value, &index)) \
{ \
+24 -5
View File
@@ -134,7 +134,9 @@ static const size_t cmc_hashtable_primes[] = {53, 97, 191, 383, 769, 1531,
FMOD bool PFX##_empty(SNAME *_map_); \
FMOD size_t PFX##_count(SNAME *_map_); \
\
FMOD void PFX##_iter_new(SNAME##_iter *iter, SNAME *target); \
FMOD SNAME##_iter *PFX##_iter_new(SNAME *target); \
FMOD void PFX##_iter_free(SNAME##_iter *iter); \
FMOD void PFX##_iter_init(SNAME##_iter *iter, SNAME *target); \
FMOD bool PFX##_iter_start(SNAME##_iter *iter); \
FMOD bool PFX##_iter_end(SNAME##_iter *iter); \
FMOD void PFX##_iter_tostart(SNAME##_iter *iter); \
@@ -300,7 +302,7 @@ static const size_t cmc_hashtable_primes[] = {53, 97, 191, 383, 769, 1531,
V result_value; \
size_t index; \
\
for (PFX##_iter_new(&iter, _map_); !PFX##_iter_end(&iter);) \
for (PFX##_iter_init(&iter, _map_); !PFX##_iter_end(&iter);) \
{ \
PFX##_iter_next(&iter, &result_key, &result_value, &index); \
\
@@ -332,7 +334,7 @@ static const size_t cmc_hashtable_primes[] = {53, 97, 191, 383, 769, 1531,
V result_value; \
size_t index; \
\
for (PFX##_iter_new(&iter, _map_); !PFX##_iter_end(&iter);) \
for (PFX##_iter_init(&iter, _map_); !PFX##_iter_end(&iter);) \
{ \
PFX##_iter_next(&iter, &result_key, &result_value, &index); \
\
@@ -388,7 +390,24 @@ static const size_t cmc_hashtable_primes[] = {53, 97, 191, 383, 769, 1531,
return _map_->count; \
} \
\
FMOD void PFX##_iter_new(SNAME##_iter *iter, SNAME *target) \
FMOD SNAME##_iter *PFX##_iter_new(SNAME *target) \
{ \
SNAME##_iter *iter = malloc(sizeof(SNAME##_iter)); \
\
if (!iter) \
return NULL; \
\
PFX##_iter_init(iter, target); \
\
return iter; \
} \
\
FMOD void PFX##_iter_free(SNAME##_iter *iter) \
{ \
free(iter); \
} \
\
FMOD void PFX##_iter_init(SNAME##_iter *iter, SNAME *target) \
{ \
iter->target = target; \
iter->cursor = 0; \
@@ -524,7 +543,7 @@ static const size_t cmc_hashtable_primes[] = {53, 97, 191, 383, 769, 1531,
size_t index; \
SNAME##_iter iter; \
\
for (PFX##_iter_new(&iter, _map_); !PFX##_iter_end(&iter);) \
for (PFX##_iter_init(&iter, _map_); !PFX##_iter_end(&iter);) \
{ \
PFX##_iter_next(&iter, &key, &value, &index); \
PFX##_insert(_new_map_, key, value); \
+30 -11
View File
@@ -136,7 +136,9 @@ static const size_t cmc_hashtable_primes[] = {53, 97, 191, 383, 769, 1531,
FMOD SNAME *PFX##_difference(SNAME *_set1_, SNAME *_set2_); \
FMOD SNAME *PFX##_symmetric_difference(SNAME *_set1_, SNAME *_set2_); \
\
FMOD void PFX##_iter_new(SNAME##_iter *iter, SNAME *target); \
FMOD SNAME##_iter *PFX##_iter_new(SNAME *target); \
FMOD void PFX##_iter_free(SNAME##_iter *iter); \
FMOD void PFX##_iter_init(SNAME##_iter *iter, SNAME *target); \
FMOD bool PFX##_iter_start(SNAME##_iter *iter); \
FMOD bool PFX##_iter_end(SNAME##_iter *iter); \
FMOD void PFX##_iter_tostart(SNAME##_iter *iter); \
@@ -294,7 +296,7 @@ static const size_t cmc_hashtable_primes[] = {53, 97, 191, 383, 769, 1531,
size_t index; \
SNAME##_iter iter; \
\
for (PFX##_iter_new(&iter, _set_); !PFX##_iter_end(&iter);) \
for (PFX##_iter_init(&iter, _set_); !PFX##_iter_end(&iter);) \
{ \
PFX##_iter_next(&iter, &result, &index); \
\
@@ -317,7 +319,7 @@ static const size_t cmc_hashtable_primes[] = {53, 97, 191, 383, 769, 1531,
size_t index; \
SNAME##_iter iter; \
\
for (PFX##_iter_new(&iter, _set_); !PFX##_iter_end(&iter);) \
for (PFX##_iter_init(&iter, _set_); !PFX##_iter_end(&iter);) \
{ \
PFX##_iter_next(&iter, &result, &index); \
\
@@ -356,8 +358,8 @@ static const size_t cmc_hashtable_primes[] = {53, 97, 191, 383, 769, 1531,
if (!_set_r_) \
return false; \
\
PFX##_iter_new(&iter1, _set1_); \
PFX##_iter_new(&iter2, _set2_); \
PFX##_iter_init(&iter1, _set1_); \
PFX##_iter_init(&iter2, _set2_); \
\
for (PFX##_iter_tostart(&iter1); !PFX##_iter_end(&iter1);) \
{ \
@@ -388,7 +390,7 @@ static const size_t cmc_hashtable_primes[] = {53, 97, 191, 383, 769, 1531,
SNAME *_set_A_ = _set1_->count < _set2_->count ? _set1_ : _set2_; \
SNAME *_set_B_ = _set_A_ == _set1_ ? _set2_ : _set1_; \
\
PFX##_iter_new(&iter, _set_A_); \
PFX##_iter_init(&iter, _set_A_); \
\
for (PFX##_iter_tostart(&iter); !PFX##_iter_end(&iter);) \
{ \
@@ -412,7 +414,7 @@ static const size_t cmc_hashtable_primes[] = {53, 97, 191, 383, 769, 1531,
if (!_set_r_) \
return false; \
\
PFX##_iter_new(&iter, _set1_); \
PFX##_iter_init(&iter, _set1_); \
\
for (PFX##_iter_tostart(&iter); !PFX##_iter_end(&iter);) \
{ \
@@ -436,8 +438,8 @@ static const size_t cmc_hashtable_primes[] = {53, 97, 191, 383, 769, 1531,
if (!_set_r_) \
return false; \
\
PFX##_iter_new(&iter1, _set1_); \
PFX##_iter_new(&iter2, _set2_); \
PFX##_iter_init(&iter1, _set1_); \
PFX##_iter_init(&iter2, _set2_); \
\
for (PFX##_iter_tostart(&iter1); !PFX##_iter_end(&iter1);) \
{ \
@@ -458,7 +460,24 @@ static const size_t cmc_hashtable_primes[] = {53, 97, 191, 383, 769, 1531,
return _set_r_; \
} \
\
FMOD void PFX##_iter_new(SNAME##_iter *iter, SNAME *target) \
FMOD SNAME##_iter *PFX##_iter_new(SNAME *target) \
{ \
SNAME##_iter *iter = malloc(sizeof(SNAME##_iter)); \
\
if (!iter) \
return NULL; \
\
PFX##_iter_init(iter, target); \
\
return iter; \
} \
\
FMOD void PFX##_iter_free(SNAME##_iter *iter) \
{ \
free(iter); \
} \
\
FMOD void PFX##_iter_init(SNAME##_iter *iter, SNAME *target) \
{ \
iter->target = target; \
iter->cursor = 0; \
@@ -591,7 +610,7 @@ static const size_t cmc_hashtable_primes[] = {53, 97, 191, 383, 769, 1531,
size_t index; \
SNAME##_iter iter; \
\
for (PFX##_iter_new(&iter, _set_); !PFX##_iter_end(&iter);) \
for (PFX##_iter_init(&iter, _set_); !PFX##_iter_end(&iter);) \
{ \
PFX##_iter_next(&iter, &value, &index); \
PFX##_insert(_new_set_, value); \
+21 -2
View File
@@ -83,7 +83,9 @@ typedef enum HeapOrder
FMOD size_t PFX##_count(SNAME *_heap_); \
FMOD size_t PFX##_capacity(SNAME *_heap_); \
\
FMOD void PFX##_iter_new(SNAME##_iter *iter, SNAME *target); \
FMOD SNAME##_iter *PFX##_iter_new(SNAME *target); \
FMOD void PFX##_iter_free(SNAME##_iter *iter); \
FMOD void PFX##_iter_init(SNAME##_iter *iter, SNAME *target); \
FMOD bool PFX##_iter_start(SNAME##_iter *iter); \
FMOD bool PFX##_iter_end(SNAME##_iter *iter); \
FMOD void PFX##_iter_tostart(SNAME##_iter *iter); \
@@ -247,7 +249,24 @@ typedef enum HeapOrder
return _heap_->capacity; \
} \
\
FMOD void PFX##_iter_new(SNAME##_iter *iter, SNAME *target) \
FMOD SNAME##_iter *PFX##_iter_new(SNAME *target) \
{ \
SNAME##_iter *iter = malloc(sizeof(SNAME##_iter)); \
\
if (!iter) \
return NULL; \
\
PFX##_iter_init(iter, target); \
\
return iter; \
} \
\
FMOD void PFX##_iter_free(SNAME##_iter *iter) \
{ \
free(iter); \
} \
\
FMOD void PFX##_iter_init(SNAME##_iter *iter, SNAME *target) \
{ \
iter->target = target; \
iter->cursor = 0; \
+21 -2
View File
@@ -99,7 +99,9 @@
FMOD SNAME##_node *PFX##_next_node(SNAME##_node *_node_); \
FMOD SNAME##_node *PFX##_prev_node(SNAME##_node *_node_); \
\
FMOD void PFX##_iter_new(SNAME##_iter *iter, SNAME *target); \
FMOD SNAME##_iter *PFX##_iter_new(SNAME *target); \
FMOD void PFX##_iter_free(SNAME##_iter *iter); \
FMOD void PFX##_iter_init(SNAME##_iter *iter, SNAME *target); \
FMOD bool PFX##_iter_start(SNAME##_iter *iter); \
FMOD bool PFX##_iter_end(SNAME##_iter *iter); \
FMOD void PFX##_iter_tostart(SNAME##_iter *iter); \
@@ -558,7 +560,24 @@
return _node_->prev; \
} \
\
FMOD void PFX##_iter_new(SNAME##_iter *iter, SNAME *target) \
FMOD SNAME##_iter *PFX##_iter_new(SNAME *target) \
{ \
SNAME##_iter *iter = malloc(sizeof(SNAME##_iter)); \
\
if (!iter) \
return NULL; \
\
PFX##_iter_init(iter, target); \
\
return iter; \
} \
\
FMOD void PFX##_iter_free(SNAME##_iter *iter) \
{ \
free(iter); \
} \
\
FMOD void PFX##_iter_init(SNAME##_iter *iter, SNAME *target) \
{ \
iter->target = target; \
iter->cursor = target->head; \
+21 -2
View File
@@ -89,7 +89,9 @@
FMOD bool PFX##_fits(SNAME *_list_, size_t size); \
FMOD size_t PFX##_capacity(SNAME *_list_); \
\
FMOD void PFX##_iter_new(SNAME##_iter *iter, SNAME *target); \
FMOD SNAME##_iter *PFX##_iter_new(SNAME *target); \
FMOD void PFX##_iter_free(SNAME##_iter *iter); \
FMOD void PFX##_iter_init(SNAME##_iter *iter, SNAME *target); \
FMOD bool PFX##_iter_start(SNAME##_iter *iter); \
FMOD bool PFX##_iter_end(SNAME##_iter *iter); \
FMOD void PFX##_iter_tostart(SNAME##_iter *iter); \
@@ -480,7 +482,24 @@
return _list_->capacity; \
} \
\
FMOD void PFX##_iter_new(SNAME##_iter *iter, SNAME *target) \
FMOD SNAME##_iter *PFX##_iter_new(SNAME *target) \
{ \
SNAME##_iter *iter = malloc(sizeof(SNAME##_iter)); \
\
if (!iter) \
return NULL; \
\
PFX##_iter_init(iter, target); \
\
return iter; \
} \
\
FMOD void PFX##_iter_free(SNAME##_iter *iter) \
{ \
free(iter); \
} \
\
FMOD void PFX##_iter_init(SNAME##_iter *iter, SNAME *target) \
{ \
iter->target = target; \
iter->cursor = 0; \
+21 -2
View File
@@ -77,7 +77,9 @@
FMOD size_t PFX##_count(SNAME *_queue_); \
FMOD size_t PFX##_capacity(SNAME *_queue_); \
\
FMOD void PFX##_iter_new(SNAME##_iter *iter, SNAME *target); \
FMOD SNAME##_iter *PFX##_iter_new(SNAME *target); \
FMOD void PFX##_iter_free(SNAME##_iter *iter); \
FMOD void PFX##_iter_init(SNAME##_iter *iter, SNAME *target); \
FMOD bool PFX##_iter_start(SNAME##_iter *iter); \
FMOD bool PFX##_iter_end(SNAME##_iter *iter); \
FMOD void PFX##_iter_tostart(SNAME##_iter *iter); \
@@ -217,7 +219,24 @@
return _queue_->capacity; \
} \
\
FMOD void PFX##_iter_new(SNAME##_iter *iter, SNAME *target) \
FMOD SNAME##_iter *PFX##_iter_new(SNAME *target) \
{ \
SNAME##_iter *iter = malloc(sizeof(SNAME##_iter)); \
\
if (!iter) \
return NULL; \
\
PFX##_iter_init(iter, target); \
\
return iter; \
} \
\
FMOD void PFX##_iter_free(SNAME##_iter *iter) \
{ \
free(iter); \
} \
\
FMOD void PFX##_iter_init(SNAME##_iter *iter, SNAME *target) \
{ \
iter->target = target; \
iter->cursor = target->front; \
+21 -2
View File
@@ -74,7 +74,9 @@
FMOD size_t PFX##_count(SNAME *_stack_); \
FMOD size_t PFX##_capacity(SNAME *_stack_); \
\
FMOD void PFX##_iter_new(SNAME##_iter *iter, SNAME *target); \
FMOD SNAME##_iter *PFX##_iter_new(SNAME *target); \
FMOD void PFX##_iter_free(SNAME##_iter *iter); \
FMOD void PFX##_iter_init(SNAME##_iter *iter, SNAME *target); \
FMOD bool PFX##_iter_start(SNAME##_iter *iter); \
FMOD bool PFX##_iter_end(SNAME##_iter *iter); \
FMOD void PFX##_iter_tostart(SNAME##_iter *iter); \
@@ -204,7 +206,24 @@
return _stack_->capacity; \
} \
\
FMOD void PFX##_iter_new(SNAME##_iter *iter, SNAME *target) \
FMOD SNAME##_iter *PFX##_iter_new(SNAME *target) \
{ \
SNAME##_iter *iter = malloc(sizeof(SNAME##_iter)); \
\
if (!iter) \
return NULL; \
\
PFX##_iter_init(iter, target); \
\
return iter; \
} \
\
FMOD void PFX##_iter_free(SNAME##_iter *iter) \
{ \
free(iter); \
} \
\
FMOD void PFX##_iter_init(SNAME##_iter *iter, SNAME *target) \
{ \
iter->target = target; \
iter->cursor = iter->target->count - 1; \
+21 -2
View File
@@ -88,7 +88,9 @@
FMOD bool PFX##_empty(SNAME *_map_); \
FMOD size_t PFX##_count(SNAME *_map_); \
\
FMOD void PFX##_iter_new(SNAME##_iter *iter, SNAME *target); \
FMOD SNAME##_iter *PFX##_iter_new(SNAME *target); \
FMOD void PFX##_iter_free(SNAME##_iter *iter); \
FMOD void PFX##_iter_init(SNAME##_iter *iter, SNAME *target); \
FMOD bool PFX##_iter_start(SNAME##_iter *iter); \
FMOD bool PFX##_iter_end(SNAME##_iter *iter); \
FMOD void PFX##_iter_tostart(SNAME##_iter *iter); \
@@ -460,7 +462,24 @@
return _map_->count; \
} \
\
FMOD void PFX##_iter_new(SNAME##_iter *iter, SNAME *target) \
FMOD SNAME##_iter *PFX##_iter_new(SNAME *target) \
{ \
SNAME##_iter *iter = malloc(sizeof(SNAME##_iter)); \
\
if (!iter) \
return NULL; \
\
PFX##_iter_init(iter, target); \
\
return iter; \
} \
\
FMOD void PFX##_iter_free(SNAME##_iter *iter) \
{ \
free(iter); \
} \
\
FMOD void PFX##_iter_init(SNAME##_iter *iter, SNAME *target) \
{ \
iter->target = target; \
iter->index = 0; \
+27 -8
View File
@@ -90,7 +90,9 @@
FMOD SNAME *PFX##_difference(SNAME *_set1_, SNAME *_set2_); \
FMOD SNAME *PFX##_symmetric_difference(SNAME *_set1_, SNAME *_set2_); \
\
FMOD void PFX##_iter_new(SNAME##_iter *iter, SNAME *target); \
FMOD SNAME##_iter *PFX##_iter_new(SNAME *target); \
FMOD void PFX##_iter_free(SNAME##_iter *iter); \
FMOD void PFX##_iter_init(SNAME##_iter *iter, SNAME *target); \
FMOD bool PFX##_iter_start(SNAME##_iter *iter); \
FMOD bool PFX##_iter_end(SNAME##_iter *iter); \
FMOD void PFX##_iter_tostart(SNAME##_iter *iter); \
@@ -443,8 +445,8 @@
if (!_set_r_) \
return false; \
\
PFX##_iter_new(&iter1, _set1_); \
PFX##_iter_new(&iter2, _set2_); \
PFX##_iter_init(&iter1, _set1_); \
PFX##_iter_init(&iter2, _set2_); \
\
for (PFX##_iter_tostart(&iter1); !PFX##_iter_end(&iter1);) \
{ \
@@ -475,7 +477,7 @@
SNAME *_set_A_ = _set1_->count < _set2_->count ? _set1_ : _set2_; \
SNAME *_set_B_ = _set_A_ == _set1_ ? _set2_ : _set1_; \
\
PFX##_iter_new(&iter, _set_A_); \
PFX##_iter_init(&iter, _set_A_); \
\
for (PFX##_iter_tostart(&iter); !PFX##_iter_end(&iter);) \
{ \
@@ -498,7 +500,7 @@
if (!_set_r_) \
return false; \
\
PFX##_iter_new(&iter, _set1_); \
PFX##_iter_init(&iter, _set1_); \
\
for (PFX##_iter_tostart(&iter); !PFX##_iter_end(&iter);) \
{ \
@@ -521,8 +523,8 @@
if (!_set_r_) \
return false; \
\
PFX##_iter_new(&iter1, _set1_); \
PFX##_iter_new(&iter2, _set2_); \
PFX##_iter_init(&iter1, _set1_); \
PFX##_iter_init(&iter2, _set2_); \
\
for (PFX##_iter_tostart(&iter1); !PFX##_iter_end(&iter1);) \
{ \
@@ -541,7 +543,24 @@
return _set_r_; \
} \
\
FMOD void PFX##_iter_new(SNAME##_iter *iter, SNAME *target) \
FMOD SNAME##_iter *PFX##_iter_new(SNAME *target) \
{ \
SNAME##_iter *iter = malloc(sizeof(SNAME##_iter)); \
\
if (!iter) \
return NULL; \
\
PFX##_iter_init(iter, target); \
\
return iter; \
} \
\
FMOD void PFX##_iter_free(SNAME##_iter *iter) \
{ \
free(iter); \
} \
\
FMOD void PFX##_iter_init(SNAME##_iter *iter, SNAME *target) \
{ \
iter->target = target; \
iter->index = 0; \
+10 -10
View File
@@ -44,7 +44,7 @@ void deque_iter_test(void)
// Initialize iterator
deque_iter iter;
d_iter_new(&iter, d);
d_iter_init(&iter, d);
// Make the iterator go back and forward
for (int j = 0; j < 4; j++)
@@ -86,7 +86,7 @@ void hashmap_iter_test(void)
// Initialize iterator
hmap_iter iter;
hm_iter_new(&iter, hm);
hm_iter_init(&iter, hm);
// Make the iterator go back and forward
for (int j = 0; j < 4; j++)
@@ -137,7 +137,7 @@ void hashset_iter_test(void)
// Initialize iterator
hset_iter iter;
hs_iter_new(&iter, hs);
hs_iter_init(&iter, hs);
// Make the iterator go back and forward
for (int j = 0; j < 4; j++)
@@ -178,7 +178,7 @@ void heap_iter_test(void)
// Initialize iterator
heap_iter iter;
h_iter_new(&iter, h);
h_iter_init(&iter, h);
// Make the iterator go back and forward
for (int j = 0; j < 4; j++)
@@ -219,7 +219,7 @@ void linkedlist_iter_test(void)
// Initialize iterator
linked_iter iter;
ll_iter_new(&iter, ll);
ll_iter_init(&iter, ll);
// Make the iterator go back and forward
for (int j = 0; j < 4; j++)
@@ -260,7 +260,7 @@ void list_iter_test(void)
// Initialize iterator
list_iter iter;
l_iter_new(&iter, l);
l_iter_init(&iter, l);
// Make the iterator go back and forward
for (int j = 0; j < 4; j++)
@@ -301,7 +301,7 @@ void queue_iter_test(void)
// Initialize iterator
queue_iter iter;
q_iter_new(&iter, q);
q_iter_init(&iter, q);
// Make the iterator go back and forward
for (int j = 0; j < 4; j++)
@@ -342,7 +342,7 @@ void stack_iter_test(void)
// Initialize iterator
stack_iter iter;
s_iter_new(&iter, s);
s_iter_init(&iter, s);
// Make the iterator go back and forward
for (int j = 0; j < 4; j++)
@@ -384,7 +384,7 @@ void treemap_iter_test(void)
// Initialize iterator
tmap_iter iter;
tm_iter_new(&iter, tm);
tm_iter_init(&iter, tm);
// Make the iterator go back and forward
for (int j = 0; j < 4; j++)
@@ -433,7 +433,7 @@ void treeset_iter_test(void)
// Initialize iterator
tset_iter iter;
ts_iter_new(&iter, ts);
ts_iter_init(&iter, ts);
// Make the iterator go back and forward
for (int j = 0; j < 4; j++)