Skip to content

Commit

Permalink
Make iterator data function return pointer to data.
Browse files Browse the repository at this point in the history
Remove iterator set_data function.
  • Loading branch information
fmela committed Oct 27, 2012
1 parent 91c902d commit 4731b5d
Show file tree
Hide file tree
Showing 20 changed files with 30 additions and 177 deletions.
6 changes: 3 additions & 3 deletions anagram.c
Expand Up @@ -72,21 +72,21 @@ main(int argc, char *argv[])

rb_itor *itor = rb_itor_new(tree);
for (rb_itor_first(itor); rb_itor_valid(itor); rb_itor_next(itor)) {
WordList *word = rb_itor_data(itor);
WordList *word = *rb_itor_data(itor);
ASSERT(word != NULL);
if (word->next) {
int count = 1;
while (word->next)
count++, word = word->next;
printf("%2d:[", count);
word = rb_itor_data(itor);
word = *rb_itor_data(itor);
while (word) {
printf("%s%c", word->word, word->next ? ',' : ']');
word = word->next;
}
printf("\n");
}
word = rb_itor_data(itor);
word = *rb_itor_data(itor);
while (word) {
WordList *next = word->next;
free(word->word);
Expand Down
7 changes: 1 addition & 6 deletions include/dict.h
Expand Up @@ -117,9 +117,7 @@ typedef bool (*dict_prevn_func)(void* itor, size_t count);
typedef bool (*dict_first_func)(void* itor);
typedef bool (*dict_last_func)(void* itor);
typedef void* (*dict_key_func)(void* itor);
typedef void* (*dict_data_func)(void* itor);
typedef bool (*dict_set_data_func)(void* itor, void* datum,
void** old_datum);
typedef void** (*dict_data_func)(void* itor);
typedef bool (*dict_iremove_func)(void* itor);
typedef int (*dict_icompare_func)(void* itor1, void* itor2);

Expand All @@ -135,7 +133,6 @@ typedef struct {
dict_last_func last;
dict_key_func key;
dict_data_func data;
dict_set_data_func set_data;
dict_iremove_func remove;
dict_icompare_func compare;
} itor_vtable;
Expand Down Expand Up @@ -174,8 +171,6 @@ struct dict_itor {
#define dict_itor_search(i,k) ((i)->_vtable->search((i)->_itor, (k)))
#define dict_itor_key(i) ((i)->_vtable->key((i)->_itor))
#define dict_itor_data(i) ((i)->_vtable->data((i)->_itor))
#define dict_itor_set_data(i,d,old) \
((i)->_vtable->set_data((i)->_itor, (d), (old)))
#define dict_itor_remove(i) ((i)->_vtable->remove((i)->_itor))
void dict_itor_free(dict_itor* itor);

Expand Down
4 changes: 1 addition & 3 deletions include/hashtable.h
Expand Up @@ -77,9 +77,7 @@ bool hashtable_itor_first(hashtable_itor* itor);
bool hashtable_itor_last(hashtable_itor* itor);
bool hashtable_itor_search(hashtable_itor* itor, const void* key);
const void* hashtable_itor_key(const hashtable_itor* itor);
void* hashtable_itor_data(hashtable_itor* itor);
bool hashtable_itor_set_data(hashtable_itor* itor,
void* datum, void** prev_datum);
void** hashtable_itor_data(hashtable_itor* itor);
bool hashtable_itor_remove(hashtable_itor* itor);

END_DECL
Expand Down
3 changes: 1 addition & 2 deletions include/hb_tree.h
Expand Up @@ -77,8 +77,7 @@ bool hb_itor_first(hb_itor* itor);
bool hb_itor_last(hb_itor* itor);
bool hb_itor_search(hb_itor* itor, const void* key);
const void* hb_itor_key(const hb_itor* itor);
void* hb_itor_data(hb_itor* itor);
bool hb_itor_set_data(hb_itor* itor, void* datum, void** old_datum);
void** hb_itor_data(hb_itor* itor);
bool hb_itor_remove(hb_itor* itor);

END_DECL
Expand Down
3 changes: 1 addition & 2 deletions include/pr_tree.h
Expand Up @@ -77,8 +77,7 @@ bool pr_itor_first(pr_itor* itor);
bool pr_itor_last(pr_itor* itor);
bool pr_itor_search(pr_itor* itor, const void* key);
const void* pr_itor_key(const pr_itor* itor);
void* pr_itor_data(pr_itor* itor);
bool pr_itor_set_data(pr_itor* itor, void* datum, void** old_datum);
void** pr_itor_data(pr_itor* itor);
bool pr_itor_remove(pr_itor* itor);

END_DECL
Expand Down
3 changes: 1 addition & 2 deletions include/rb_tree.h
Expand Up @@ -77,8 +77,7 @@ bool rb_itor_first(rb_itor* itor);
bool rb_itor_last(rb_itor* itor);
bool rb_itor_search(rb_itor* itor, const void* key);
const void* rb_itor_key(const rb_itor* itor);
void* rb_itor_data(rb_itor* itor);
bool rb_itor_set_data(rb_itor* itor, void* datum, void** old_datum);
void** rb_itor_data(rb_itor* itor);
bool rb_itor_remove(rb_itor* itor);

END_DECL
Expand Down
4 changes: 1 addition & 3 deletions include/skiplist.h
Expand Up @@ -74,9 +74,7 @@ bool skiplist_itor_first(skiplist_itor* itor);
bool skiplist_itor_last(skiplist_itor* itor);
bool skiplist_itor_search(skiplist_itor* itor, const void* key);
const void* skiplist_itor_key(const skiplist_itor* itor);
void* skiplist_itor_data(skiplist_itor* itor);
bool skiplist_itor_set_data(skiplist_itor* itor, void* datum,
void** prev_datum);
void** skiplist_itor_data(skiplist_itor* itor);
bool skiplist_itor_remove(skiplist_itor* itor);

END_DECL
Expand Down
3 changes: 1 addition & 2 deletions include/sp_tree.h
Expand Up @@ -77,8 +77,7 @@ bool sp_itor_first(sp_itor* itor);
bool sp_itor_last(sp_itor* itor);
bool sp_itor_search(sp_itor* itor, const void* key);
const void* sp_itor_key(const sp_itor* itor);
void* sp_itor_data(sp_itor* itor);
bool sp_itor_set_data(sp_itor* itor, void* datum, void** old_datum);
void** sp_itor_data(sp_itor* itor);
bool sp_itor_remove(sp_itor* itor);

END_DECL
Expand Down
3 changes: 1 addition & 2 deletions include/tr_tree.h
Expand Up @@ -79,8 +79,7 @@ bool tr_itor_first(tr_itor* itor);
bool tr_itor_last(tr_itor* itor);
bool tr_itor_search(tr_itor* itor, const void* key);
const void* tr_itor_key(const tr_itor* itor);
void* tr_itor_data(tr_itor* itor);
bool tr_itor_set_data(tr_itor* itor, void* datum, void** old_datum);
void** tr_itor_data(tr_itor* itor);
bool tr_itor_remove(tr_itor* itor);

END_DECL
Expand Down
4 changes: 1 addition & 3 deletions include/wb_tree.h
Expand Up @@ -77,9 +77,7 @@ bool wb_itor_first(wb_itor* itor);
bool wb_itor_last(wb_itor* itor);
bool wb_itor_search(wb_itor* itor, const void* key);
const void* wb_itor_key(const wb_itor* itor);
void* wb_itor_data(wb_itor* itor);
const void* wb_itor_cdata(const wb_itor* itor);
bool wb_itor_set_data(wb_itor* itor, void* datum, void** old_datum);
void** wb_itor_data(wb_itor* itor);
bool wb_itor_remove(wb_itor* itor);

END_DECL
Expand Down
19 changes: 2 additions & 17 deletions src/hashtable.c
Expand Up @@ -87,7 +87,6 @@ static itor_vtable hashtable_itor_vtable = {
(dict_last_func) hashtable_itor_last,
(dict_key_func) hashtable_itor_key,
(dict_data_func) hashtable_itor_data,
(dict_set_data_func) hashtable_itor_set_data,
(dict_iremove_func) NULL,/* hashtable_itor_remove not implemented yet */
(dict_icompare_func) NULL/* hashtable_itor_compare not implemented yet */
};
Expand Down Expand Up @@ -600,24 +599,10 @@ hashtable_itor_key(const hashtable_itor* itor)
return itor->node ? itor->node->key : NULL;
}

void*
void**
hashtable_itor_data(hashtable_itor* itor)
{
ASSERT(itor != NULL);

return itor->node ? itor->node->datum : NULL;
}

bool
hashtable_itor_set_data(hashtable_itor* itor, void* datum, void** prev_datum)
{
ASSERT(itor != NULL);

if (!itor->node)
return false;

if (prev_datum)
*prev_datum = itor->node->datum;
itor->node->datum = datum;
return true;
return itor->node ? &itor->node->datum : NULL;
}
19 changes: 2 additions & 17 deletions src/hb_tree.c
Expand Up @@ -75,7 +75,6 @@ static itor_vtable hb_tree_itor_vtable = {
(dict_last_func) tree_iterator_last,
(dict_key_func) tree_iterator_key,
(dict_data_func) tree_iterator_data,
(dict_set_data_func) tree_iterator_set_data,
(dict_iremove_func) NULL,/* hb_itor_remove not implemented yet */
(dict_icompare_func) NULL /* hb_itor_compare not implemented yet */
};
Expand Down Expand Up @@ -722,24 +721,10 @@ hb_itor_key(const hb_itor* itor)
return itor->node ? itor->node->key : NULL;
}

void*
void**
hb_itor_data(hb_itor* itor)
{
ASSERT(itor != NULL);

return itor->node ? itor->node->datum : NULL;
}

bool
hb_itor_set_data(hb_itor* itor, void* datum, void** old_datum)
{
ASSERT(itor != NULL);

if (!itor->node)
return false;

if (old_datum)
*old_datum = itor->node->datum;
itor->node->datum = datum;
return true;
return itor->node ? &itor->node->datum : NULL;
}
19 changes: 2 additions & 17 deletions src/pr_tree.c
Expand Up @@ -77,7 +77,6 @@ static itor_vtable pr_tree_itor_vtable = {
(dict_last_func) tree_iterator_last,
(dict_key_func) tree_iterator_key,
(dict_data_func) tree_iterator_data,
(dict_set_data_func) tree_iterator_set_data,
(dict_iremove_func) NULL,/* pr_itor_remove not implemented yet */
(dict_icompare_func) NULL /* pr_itor_compare not implemented yet */
};
Expand Down Expand Up @@ -799,24 +798,10 @@ pr_itor_key(const pr_itor* itor)
return itor->node ? itor->node->key : NULL;
}

void*
void**
pr_itor_data(pr_itor* itor)
{
ASSERT(itor != NULL);

return itor->node ? itor->node->datum : NULL;
}

bool
pr_itor_set_data(pr_itor* itor, void* datum, void** old_datum)
{
ASSERT(itor != NULL);

if (!itor->node)
return false;

if (old_datum)
*old_datum = itor->node->datum;
itor->node->datum = datum;
return true;
return itor->node ? &itor->node->datum : NULL;
}
19 changes: 2 additions & 17 deletions src/rb_tree.c
Expand Up @@ -92,7 +92,6 @@ static itor_vtable rb_tree_itor_vtable = {
(dict_last_func) rb_itor_last,
(dict_key_func) rb_itor_key,
(dict_data_func) rb_itor_data,
(dict_set_data_func) rb_itor_set_data,
(dict_iremove_func) NULL,/* rb_itor_remove not implemented yet */
(dict_icompare_func) NULL /* rb_itor_compare not implemented yet */
};
Expand Down Expand Up @@ -894,24 +893,10 @@ rb_itor_key(const rb_itor* itor)
return itor->node != RB_NULL ? itor->node->key : NULL;
}

void*
void**
rb_itor_data(rb_itor* itor)
{
ASSERT(itor != NULL);

return (itor->node != RB_NULL) ? itor->node->datum : NULL;
}

bool
rb_itor_set_data(rb_itor* itor, void* datum, void** old_datum)
{
ASSERT(itor != NULL);

if (!itor->node)
return false;

if (old_datum)
*old_datum = itor->node->datum;
itor->node->datum = datum;
return true;
return (itor->node != RB_NULL) ? &itor->node->datum : NULL;
}
19 changes: 2 additions & 17 deletions src/skiplist.c
Expand Up @@ -91,7 +91,6 @@ static itor_vtable skiplist_itor_vtable = {
(dict_last_func) skiplist_itor_last,
(dict_key_func) skiplist_itor_key,
(dict_data_func) skiplist_itor_data,
(dict_set_data_func) skiplist_itor_set_data,
(dict_iremove_func) NULL,/* skiplist_itor_remove not implemented yet */
(dict_icompare_func) NULL/* skiplist_itor_compare not implemented yet */
};
Expand Down Expand Up @@ -539,26 +538,12 @@ skiplist_itor_key(const skiplist_itor* itor)
return itor->node ? itor->node->key : NULL;
}

void*
void**
skiplist_itor_data(skiplist_itor* itor)
{
ASSERT(itor != NULL);

return itor->node ? itor->node->datum : NULL;
}

bool
skiplist_itor_set_data(skiplist_itor* itor, void* datum, void** prev_datum)
{
ASSERT(itor != NULL);

if (!itor->node)
return false;

if (prev_datum)
*prev_datum = itor->node->datum;
itor->node->datum = datum;
return true;
return itor->node ? &itor->node->datum : NULL;
}

skip_node*
Expand Down
11 changes: 1 addition & 10 deletions src/sp_tree.c
Expand Up @@ -91,7 +91,6 @@ static itor_vtable sp_tree_itor_vtable = {
(dict_last_func) tree_iterator_last,
(dict_key_func) tree_iterator_key,
(dict_data_func) tree_iterator_data,
(dict_set_data_func) tree_iterator_set_data,
(dict_iremove_func) NULL,/* sp_itor_remove not implemented yet */
(dict_icompare_func) NULL /* sp_itor_compare not implemented yet */
};
Expand Down Expand Up @@ -693,18 +692,10 @@ sp_itor_key(const sp_itor* itor)
return tree_iterator_key(itor);
}

void*
void**
sp_itor_data(sp_itor* itor)
{
ASSERT(itor != NULL);

return tree_iterator_data(itor);
}

bool
sp_itor_set_data(sp_itor* itor, void* datum, void** old_datum)
{
ASSERT(itor != NULL);

return tree_iterator_set_data(itor, datum, old_datum);
}
19 changes: 2 additions & 17 deletions src/tr_tree.c
Expand Up @@ -96,7 +96,6 @@ static itor_vtable tr_tree_itor_vtable = {
(dict_last_func) tree_iterator_last,
(dict_key_func) tree_iterator_key,
(dict_data_func) tree_iterator_data,
(dict_set_data_func) tree_iterator_set_data,
(dict_iremove_func) NULL,/* tr_itor_remove not implemented yet */
(dict_icompare_func) NULL /* tr_itor_compare not implemented yet */
};
Expand Down Expand Up @@ -571,24 +570,10 @@ tr_itor_key(const tr_itor* itor)
return itor->node ? itor->node->key : NULL;
}

void*
void**
tr_itor_data(tr_itor* itor)
{
ASSERT(itor != NULL);

return itor->node ? itor->node->datum : NULL;
}

bool
tr_itor_set_data(tr_itor* itor, void* datum, void** old_datum)
{
ASSERT(itor != NULL);

if (!itor->node)
return false;

if (old_datum)
*old_datum = itor->node->datum;
itor->node->datum = datum;
return true;
return itor->node ? &itor->node->datum : NULL;
}

0 comments on commit 4731b5d

Please sign in to comment.