sp_pst.h 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #ifndef SP_PST_H
  2. #define SP_PST_H
  3. #pragma once
  4. #ifdef __cplusplus
  5. extern "C" {
  6. #endif
  7. /* persist storage */
  8. typedef struct sp_pst_tree_t sp_pst_tree_t;
  9. typedef struct sp_pst_elem_t sp_pst_elem_t;
  10. #define SP_PST_T_UNKNOWN 0
  11. #define SP_PST_T_STR 1
  12. #define SP_PST_T_I1 2
  13. #define SP_PST_T_I2 3
  14. #define SP_PST_T_I4 4
  15. #define SP_PST_T_I8 5
  16. #define SP_PST_T_OBJ 6
  17. #define SP_PST_T_BUF 7
  18. #define SP_PST_T_ARR_STR 8
  19. #define SP_PST_T_ARR_I1 9
  20. #define SP_PST_T_ARR_I2 10
  21. #define SP_PST_T_ARR_I4 11
  22. #define SP_PST_T_ARR_I8 12
  23. #define SP_PST_T_ARR_OBJ 13
  24. #include "array.h"
  25. int sp_pst_tree_create(sp_pst_tree_t **p_tree);
  26. void sp_pst_tree_destroy(sp_pst_tree_t *tree);
  27. sp_pst_elem_t *sp_pst_tree_get_root(sp_pst_tree_t *tree);
  28. int sp_pst_tree_set_root(sp_pst_tree_t *tree, sp_pst_elem_t *elem);
  29. sp_pst_elem_t *sp_pst_elem_create(sp_pst_elem_t *parent, const char *key);
  30. void sp_pst_elem_destroy(sp_pst_elem_t *elem);
  31. int sp_pst_elem_set_value(sp_pst_elem_t *elem, int type, const void *value, int value_len);
  32. sp_pst_elem_t *sp_pst_elem_get_parent(sp_pst_elem_t *elem);
  33. const char *sp_pst_elem_get_key(sp_pst_elem_t *elem);
  34. int sp_pst_elem_get_type(sp_pst_elem_t *elem);
  35. const void *sp_pst_elem_get_value(sp_pst_elem_t *elem);
  36. int sp_pst_elem_get_value_len(sp_pst_elem_t *elem);
  37. int sp_pst_elem_append_child(sp_pst_elem_t *elem, sp_pst_elem_t *new_elem);
  38. int sp_pst_elem_remove_child_by_key(sp_pst_elem_t *elem, const char *key);
  39. int sp_pst_elem_remove(sp_pst_elem_t *elem);
  40. sp_pst_elem_t *sp_pst_elem_find_child(sp_pst_elem_t *elem, const char *key);
  41. int sp_pst_elem_insert_before(sp_pst_elem_t *pos, sp_pst_elem_t *new_elem);
  42. int sp_pst_elem_insert_after(sp_pst_elem_t *pos, sp_pst_elem_t *new_elem);
  43. sp_pst_elem_t *sp_pst_elem_first_child(sp_pst_elem_t *parent_elem);
  44. sp_pst_elem_t *sp_pst_elem_last_child(sp_pst_elem_t *parent_elem);
  45. sp_pst_elem_t *sp_pst_elem_next_sibling(sp_pst_elem_t *iter_elem);
  46. sp_pst_elem_t *sp_pst_elem_last_sibling(sp_pst_elem_t *iter_elem);
  47. int sp_pst_tree_load(const char *base_dir, const char *ent, const char *cls, const char *obj, sp_pst_tree_t **p_tree);
  48. int sp_pst_tree_save(const char *base_dir, const char *ent, const char *cls, const char *obj, sp_pst_tree_t *tree);
  49. int sp_pst_get_object_count(const char *base_dir, const char *ent, const char *cls, int *p_cnt);
  50. array_header_t* sp_pst_get_object_keys(const char *base_dir, const char *ent, const char *cls);
  51. int sp_pst_delete_object(const char *base_dir, const char *ent, const char *cls, const char *obj);
  52. int sp_pst_delete_class_objects(const char *base_dir, const char *ent, const char *cls);
  53. SPBASE_API void sp_pst_recover(const char *base_dir);
  54. #ifdef __cplusplus
  55. } // extern "C" {
  56. #endif
  57. #endif // SP_PST_H