#ifndef ZLG_CONFIG_INTF_H #define ZLG_CONFIG_INTF_H struct _Meta; struct _Pair; struct _Options; struct _ConfigNode; typedef struct _Meta Meta; typedef struct _Pair Pair; typedef struct _Options Options; typedef struct _ConfigNode ConfigNode; /** * \struct Options * 节点mata的可选项。 */ struct _Options { /*! 可选项的数据类型*/ const char * type; /*! 可选项的值*/ const char * value; /*! 可选项的描述信息*/ const char * desc; }; /** * \struct Meta * 节点mata信息。 */ struct _Meta { /*! 配置项的数据类型 */ const char * type; /*! 配置项的说明性信息 */ const char * desc; /*! 配置项是否是只读的,缺省为可读写 */ int read_only; /*! 配置项输入格式的提示 */ const char * format; /*! 对于数值类型的配置项来说是最小值,对字符串的配置项来说是最小长度(字节数)。 */ double min_value; /*! 对于数值类型的配置项来说是最大值,对字符串的配置项来说是最大长度(字节数)。 */ double max_value; /*! 配置项的单位 */ const char * unit; /*! 通过旋钮/滚轮等方式修改配置项时的增量 */ double delta; /*! 配置项是否可见, true可见,false不可见,也可以绑定表达式(表达式使用参考demo3),缺省可见 */ const char* visible; /*! 该配置项是否使能, true使能,false不使能,也可以绑定表达式(表达式使用参考demo3)。缺省使能 */ const char* enable; /*! 配置项的可选值,仅但『type』为间接类型时有效 */ int editable; /*! 配置项的可选值,仅但『type』为间接类型时有效,以NULL结束 */ Options** options; }; /** * \struct Pair * 属性的KeyValue对。 */ struct _Pair { const char * key; const char * value; }; /** * \struct ConfigNode * ConfigNode */ struct _ConfigNode { /*! 节点的名字 */ const char * name; /*! 节点的值 同样可以绑定表达式*/ const char * value; /*! 节点值的表达式,当有该表达式时,value由此表达式计算而来*/ const char* binding_value; /*! 该节点的路径 */ const char * path; /*! 配置项信息 */ Meta* meta_info; /*! 该节点的子节点, 以NULL结束*/ ConfigNode** children; /*! 该节点的属性, 以NULL结束*/ Pair** attributes; }; /** * \brief 获取属性的描述信息。 * * \retval ConfigNode */ typedef const ConfigNode* (*GetPropertysFunc)(); /** * \brief 设置指定路径的属性的值。 * \param[in] path : 属性的路径。 * \param[in] value : 属性的值。 * * \retval 成功返回1,失败返回0。 */ typedef int (*SetValueFunc)(const char* path, const char* value); /** * \brief 获取指定路径的属性的值。 * \param[in] path : 属性的路径。 * \retval 成功返回属性的值,失败返回NULL。 */ typedef const char* (*GetValueFunc)(const char* path); typedef struct tagIProperty { SetValueFunc SetValue; GetValueFunc GetValue; GetPropertysFunc GetPropertys; }IProperty; #endif/*ZLG_CONFIG_INTF_H*/