#ifndef SP_PST_H #define SP_PST_H #pragma once //TODO: CrossPlaform 文件移除,没有使用,待讨论确认 [Gifur@202584] #ifdef __cplusplus extern "C" { #endif /* persist storage */ typedef struct sp_pst_tree_t sp_pst_tree_t; typedef struct sp_pst_elem_t sp_pst_elem_t; #define SP_PST_T_UNKNOWN 0 #define SP_PST_T_STR 1 #define SP_PST_T_I1 2 #define SP_PST_T_I2 3 #define SP_PST_T_I4 4 #define SP_PST_T_I8 5 #define SP_PST_T_OBJ 6 #define SP_PST_T_BUF 7 #define SP_PST_T_ARR_STR 8 #define SP_PST_T_ARR_I1 9 #define SP_PST_T_ARR_I2 10 #define SP_PST_T_ARR_I4 11 #define SP_PST_T_ARR_I8 12 #define SP_PST_T_ARR_OBJ 13 #include "array.h" int sp_pst_tree_create(sp_pst_tree_t **p_tree); void sp_pst_tree_destroy(sp_pst_tree_t *tree); sp_pst_elem_t *sp_pst_tree_get_root(sp_pst_tree_t *tree); int sp_pst_tree_set_root(sp_pst_tree_t *tree, sp_pst_elem_t *elem); sp_pst_elem_t *sp_pst_elem_create(sp_pst_elem_t *parent, const char *key); void sp_pst_elem_destroy(sp_pst_elem_t *elem); int sp_pst_elem_set_value(sp_pst_elem_t *elem, int type, const void *value, int value_len); sp_pst_elem_t *sp_pst_elem_get_parent(sp_pst_elem_t *elem); const char *sp_pst_elem_get_key(sp_pst_elem_t *elem); int sp_pst_elem_get_type(sp_pst_elem_t *elem); const void *sp_pst_elem_get_value(sp_pst_elem_t *elem); int sp_pst_elem_get_value_len(sp_pst_elem_t *elem); int sp_pst_elem_append_child(sp_pst_elem_t *elem, sp_pst_elem_t *new_elem); int sp_pst_elem_remove_child_by_key(sp_pst_elem_t *elem, const char *key); int sp_pst_elem_remove(sp_pst_elem_t *elem); sp_pst_elem_t *sp_pst_elem_find_child(sp_pst_elem_t *elem, const char *key); int sp_pst_elem_insert_before(sp_pst_elem_t *pos, sp_pst_elem_t *new_elem); int sp_pst_elem_insert_after(sp_pst_elem_t *pos, sp_pst_elem_t *new_elem); sp_pst_elem_t *sp_pst_elem_first_child(sp_pst_elem_t *parent_elem); sp_pst_elem_t *sp_pst_elem_last_child(sp_pst_elem_t *parent_elem); sp_pst_elem_t *sp_pst_elem_next_sibling(sp_pst_elem_t *iter_elem); sp_pst_elem_t *sp_pst_elem_last_sibling(sp_pst_elem_t *iter_elem); int sp_pst_tree_load(const char *base_dir, const char *ent, const char *cls, const char *obj, sp_pst_tree_t **p_tree); int sp_pst_tree_save(const char *base_dir, const char *ent, const char *cls, const char *obj, sp_pst_tree_t *tree); int sp_pst_get_object_count(const char *base_dir, const char *ent, const char *cls, int *p_cnt); array_header_t* sp_pst_get_object_keys(const char *base_dir, const char *ent, const char *cls); int sp_pst_delete_object(const char *base_dir, const char *ent, const char *cls, const char *obj); int sp_pst_delete_class_objects(const char *base_dir, const char *ent, const char *cls); SPBASE_API void sp_pst_recover(const char *base_dir); #ifdef __cplusplus } // extern "C" { #endif #endif // SP_PST_H