ua_list.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #ifndef UA_LIST_H_
  2. #define UA_LIST_H_
  3. #include "opcua.h"
  4. /*
  5. * Double Linked Lists
  6. */
  7. typedef void (*UA_list_PayloadVisitor)(void* payload);
  8. typedef struct UA_list_Element {
  9. struct UA_list_List* father;
  10. void *payload;
  11. struct UA_list_Element* next;
  12. struct UA_list_Element* prev;
  13. }UA_list_Element;
  14. typedef struct UA_list_List {
  15. struct UA_list_Element* first;
  16. struct UA_list_Element* last;
  17. UA_Int32 size;
  18. }UA_list_List;
  19. typedef void (*UA_list_ElementVisitor)(UA_list_Element* payload);
  20. //typedef Boolean (*UA_list_PayloadMatcher)(void* payload);
  21. typedef _Bool (*UA_list_PayloadMatcher)(void* payload);
  22. typedef _Bool (*UA_list_PayloadComparer)(void* payload, void* otherPayload);
  23. void UA_list_defaultFreer(void* payload);
  24. UA_Int32 UA_list_initElement(UA_list_Element* element);
  25. UA_Int32 UA_list_init(UA_list_List* list);
  26. UA_Int32 UA_list_addElementToFront(UA_list_List* list, UA_list_Element* element);
  27. UA_Int32 UA_list_addPayloadToFront(UA_list_List* list, void* const payload);
  28. UA_Int32 UA_list_addElementToBack(UA_list_List* list, UA_list_Element* element);
  29. UA_Int32 UA_list_addPayloadToBack(UA_list_List* list, void* const payload);
  30. UA_Int32 UA_list_removeFirst(UA_list_List* list, UA_list_PayloadVisitor visitor);
  31. UA_Int32 UA_list_removeLast(UA_list_List* list, UA_list_PayloadVisitor visitor);
  32. UA_Int32 UA_list_removeElement(UA_list_Element* const elem, UA_list_PayloadVisitor visitor);
  33. UA_Int32 UA_list_destroy(UA_list_List* list, UA_list_PayloadVisitor visitor);
  34. UA_Int32 UA_list_iterateElement(UA_list_List* const list, UA_list_ElementVisitor visitor);
  35. UA_Int32 UA_list_iteratePayload(UA_list_List* const list, UA_list_PayloadVisitor visitor);
  36. UA_list_Element* UA_list_find(UA_list_List* const list, UA_list_PayloadMatcher matcher);
  37. UA_list_Element* UA_list_search(UA_list_List* const list, UA_list_PayloadComparer compare, void* payload);
  38. UA_list_Element* UA_list_getFirst(UA_list_List* const list);
  39. UA_list_Element* UA_list_getLast(UA_list_List* const list);
  40. #endif /* UA_LIST_H_ */