diff options
Diffstat (limited to 'include/net-snmp/library/container_iterator.h')
-rw-r--r-- | include/net-snmp/library/container_iterator.h | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/include/net-snmp/library/container_iterator.h b/include/net-snmp/library/container_iterator.h new file mode 100644 index 0000000..6878292 --- /dev/null +++ b/include/net-snmp/library/container_iterator.h @@ -0,0 +1,62 @@ +/** + * @file container_iterator.h + * @addtogroup container_iterator + * @{ + */ +#ifndef _CONTAINER_ITERATOR_HANDLER_H_ +#define _CONTAINER_ITERATOR_HANDLER_H_ + +#include "container.h" + +#ifdef __cplusplus +extern "C" { +#endif + + typedef int (Netsnmp_Iterator_Loop_Key) (void *iterator_ctx, + netsnmp_ref_void* loop_ctx, + netsnmp_ref_void* key); + typedef int (Netsnmp_Iterator_Loop_Data)(void *iterator_ctx, + netsnmp_ref_void* loop_ctx, + netsnmp_ref_void* data); + typedef int (Netsnmp_Iterator_Ctx) (void *iterator_ctx, + netsnmp_ref_void* loop_ctx); + typedef int (Netsnmp_Iterator_Ctx_Dup) (void *iterator_ctx, + netsnmp_ref_void* loop_ctx, + netsnmp_ref_void* dup_ctx, + int reuse); + typedef int (Netsnmp_Iterator_Op) (void *iterator_ctx); + typedef int (Netsnmp_Iterator_Data) (void *iterator_ctx, + const void *data); + + void netsnmp_container_iterator_init(void); + + netsnmp_container* netsnmp_container_iterator_get( + void *iterator_user_ctx, + netsnmp_container_compare * compare, + Netsnmp_Iterator_Loop_Key * get_first, + Netsnmp_Iterator_Loop_Key * get_next, + Netsnmp_Iterator_Loop_Data * get_data, + Netsnmp_Iterator_Ctx_Dup * save_pos, /* iff returning static data */ + Netsnmp_Iterator_Ctx * init_loop_ctx, + Netsnmp_Iterator_Ctx * cleanup_loop_ctx, + Netsnmp_Iterator_Data * free_user_ctx, + int sorted); + + /* + * set up optional callbacks/ + * NOTE: even though the first parameter is a generic netsnmp_container, + * this function should only be called for a container created + * by netsnmp_container_iterator_get. + */ + void + netsnmp_container_iterator_set_data_cb(netsnmp_container *c, + Netsnmp_Iterator_Data * insert_data, + Netsnmp_Iterator_Data * remove_data, + Netsnmp_Iterator_Op * get_size); + +#ifdef __cplusplus +} +#endif + +#endif /* _CONTAINER_ITERATOR_HANDLER_H_ */ +/** @} */ |