container_iterator.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /**
  2. * @file container_iterator.h
  3. * @addtogroup container_iterator
  4. * @{
  5. */
  6. #ifndef _CONTAINER_ITERATOR_HANDLER_H_
  7. #define _CONTAINER_ITERATOR_HANDLER_H_
  8. #include "container.h"
  9. #ifdef __cplusplus
  10. extern "C" {
  11. #endif
  12. typedef int (Netsnmp_Iterator_Loop_Key) (void *iterator_ctx,
  13. netsnmp_ref_void* loop_ctx,
  14. netsnmp_ref_void* key);
  15. typedef int (Netsnmp_Iterator_Loop_Data)(void *iterator_ctx,
  16. netsnmp_ref_void* loop_ctx,
  17. netsnmp_ref_void* data);
  18. typedef int (Netsnmp_Iterator_Ctx) (void *iterator_ctx,
  19. netsnmp_ref_void* loop_ctx);
  20. typedef int (Netsnmp_Iterator_Ctx_Dup) (void *iterator_ctx,
  21. netsnmp_ref_void* loop_ctx,
  22. netsnmp_ref_void* dup_ctx,
  23. int reuse);
  24. typedef int (Netsnmp_Iterator_Op) (void *iterator_ctx);
  25. typedef int (Netsnmp_Iterator_Data) (void *iterator_ctx,
  26. const void *data);
  27. void netsnmp_container_iterator_init(void);
  28. netsnmp_container* netsnmp_container_iterator_get(
  29. void *iterator_user_ctx,
  30. netsnmp_container_compare * compare,
  31. Netsnmp_Iterator_Loop_Key * get_first,
  32. Netsnmp_Iterator_Loop_Key * get_next,
  33. Netsnmp_Iterator_Loop_Data * get_data,
  34. Netsnmp_Iterator_Ctx_Dup * save_pos, /* iff returning static data */
  35. Netsnmp_Iterator_Ctx * init_loop_ctx,
  36. Netsnmp_Iterator_Ctx * cleanup_loop_ctx,
  37. Netsnmp_Iterator_Data * free_user_ctx,
  38. int sorted);
  39. /*
  40. * set up optional callbacks/
  41. * NOTE: even though the first parameter is a generic netsnmp_container,
  42. * this function should only be called for a container created
  43. * by netsnmp_container_iterator_get.
  44. */
  45. void
  46. netsnmp_container_iterator_set_data_cb(netsnmp_container *c,
  47. Netsnmp_Iterator_Data * insert_data,
  48. Netsnmp_Iterator_Data * remove_data,
  49. Netsnmp_Iterator_Op * get_size);
  50. #ifdef __cplusplus
  51. }
  52. #endif
  53. #endif /* _CONTAINER_ITERATOR_HANDLER_H_ */
  54. /** @} */