diff options
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/list.c | 32 | ||||
| -rw-r--r-- | src/core/list.h | 2 | ||||
| -rw-r--r-- | src/core/protocol.c | 2 |
3 files changed, 36 insertions, 0 deletions
diff --git a/src/core/list.c b/src/core/list.c index ca200415..b1adf2cd 100644 --- a/src/core/list.c +++ b/src/core/list.c @@ -83,6 +83,38 @@ nni_list_prepend(nni_list *list, void *item) } +void +nni_list_insert_before(nni_list *list, void *item, void *before) +{ + nni_list_node *node = NODE(list, item); + nni_list_node *where = NODE(list, before); + + if ((node->ln_next != NULL) || (node->ln_prev != NULL)) { + nni_panic("prepending node already on a list or not inited"); + } + node->ln_next = where; + node->ln_prev = where->ln_prev; + node->ln_next->ln_prev = node; + node->ln_prev->ln_next = node; +} + + +void +nni_list_insert_after(nni_list *list, void *item, void *after) +{ + nni_list_node *node = NODE(list, item); + nni_list_node *where = NODE(list, after); + + if ((node->ln_next != NULL) || (node->ln_prev != NULL)) { + nni_panic("prepending node already on a list or not inited"); + } + node->ln_prev = where; + node->ln_next = where->ln_next; + node->ln_next->ln_prev = node; + node->ln_prev->ln_next = node; +} + + void * nni_list_next(const nni_list *list, void *item) { diff --git a/src/core/list.h b/src/core/list.h index a6540f5e..7d8b50be 100644 --- a/src/core/list.h +++ b/src/core/list.h @@ -36,6 +36,8 @@ extern void *nni_list_first(const nni_list *); extern void *nni_list_last(const nni_list *); extern void nni_list_append(nni_list *, void *); extern void nni_list_prepend(nni_list *, void *); +extern void nni_list_insert_before(nni_list *, void *, void *); +extern void nni_list_insert_after(nni_list *, void *, void *); extern void *nni_list_next(const nni_list *, void *); extern void *nni_list_prev(const nni_list *, void *); extern void nni_list_remove(nni_list *, void *); diff --git a/src/core/protocol.c b/src/core/protocol.c index 27430771..765c2e9a 100644 --- a/src/core/protocol.c +++ b/src/core/protocol.c @@ -19,11 +19,13 @@ extern nni_proto nni_pair_proto; extern nni_proto nni_rep_proto; extern nni_proto nni_req_proto; +extern nni_proto nni_sub_proto; static nni_proto *protocols[] = { &nni_pair_proto, &nni_rep_proto, &nni_req_proto, + &nni_sub_proto, NULL }; |
