sp_pst.h 2.7 KB

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