UA_list.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. /*
  2. * UA_list.h
  3. *
  4. * Created on: Mar 13, 2014
  5. * Author: sten
  6. */
  7. #ifndef UA_LIST_H_
  8. #define UA_LIST_H_
  9. #include "opcua_builtInDatatypes.h"
  10. /*
  11. * Data Structures
  12. */
  13. typedef void (*UA_list_PayloadVisitor)(void* payload);
  14. /*
  15. * Double Linked Lists
  16. */
  17. typedef struct T_UA_list_Element {
  18. struct T_UA_list_List* father;
  19. void *payload;
  20. struct T_UA_list_Element* next;
  21. struct T_UA_list_Element* prev;
  22. }UA_list_Element;
  23. typedef struct T_UA_list_List {
  24. struct T_UA_list_Element* first;
  25. struct T_UA_list_Element* last;
  26. Int32 size;
  27. }UA_list_List;
  28. typedef void (*UA_list_ElementVisitor)(UA_list_Element* payload);
  29. /*
  30. * Returns 1 for true, 0 otherwise
  31. */
  32. typedef Boolean (*UA_list_PayloadMatcher)(void* payload);
  33. Int32 UA_list_initElement(UA_list_Element* const element);
  34. Int32 UA_list_init(UA_list_List* const list);
  35. Int32 UA_list_addElementToFront(UA_list_List* const list, UA_list_Element* const element);
  36. Int32 UA_list_addPayloadToFront(UA_list_List* const list, void* const payload);
  37. Int32 UA_list_addElementToBack(UA_list_List* const list, UA_list_Element* const element);
  38. Int32 UA_list_addPayloadToBack(UA_list_List* const list, void* const payload);
  39. Int32 UA_list_removeFirst(UA_list_List* const list, UA_list_PayloadVisitor visitor);
  40. Int32 UA_list_removeLast(UA_list_List* const list, UA_list_PayloadVisitor visitor);
  41. Int32 UA_list_removeElement(UA_list_Element* const elem, UA_list_PayloadVisitor visitor);
  42. Int32 UA_list_destroy(UA_list_List* const list, UA_list_PayloadVisitor visitor);
  43. Int32 UA_list_iterateElement(UA_list_List* const list, UA_list_ElementVisitor visitor);
  44. Int32 UA_list_iteratePayload(UA_list_List* const list, UA_list_PayloadVisitor visitor);
  45. UA_list_Element* UA_list_find(UA_list_List* const list, UA_list_PayloadMatcher matcher);
  46. UA_list_Element* UA_list_getFirst(UA_list_List* const list);
  47. UA_list_Element* UA_list_getLast(UA_list_List* const list);
  48. #endif /* UA_LIST_H_ */