/********************************************************************* *文件说明: 变量管理库 *作者: logos *日期: 2018/09/01 *修改日志: 2018/09/01 logos 从comm剥离 2018/11/25 logos 取消变量删除功能 ***********************************************************************/ #pragma once #ifndef DLL_INCLUDE_VAR_H #define DLL_INCLUDE_VAR_H #ifndef EXPORT_C #define EXPORT_C extern "C" #endif #ifndef WINAPI #define WINAPI __stdcall #endif #ifndef MAX_NAME_LEN #define MAX_NAME_LEN 32 #endif #ifndef MAX_BUF_LEN #define MAX_BUF_LEN 256 #endif struct TVar { char name[MAX_NAME_LEN]; //变量名 char desc[MAX_NAME_LEN]; //描述 char val[MAX_BUF_LEN]; //初始值 int id; int bkeep; //状态保持 1保持 0不保持 下次启动记住当前值 }; /**************************************************** *Function: 初始化模块 *Intput: NULL *Output: NULL *Return: 成功返回0 ******************************************************/ EXPORT_C int WINAPI var_init(); /**************************************************** *Function: 释放模块 资源 *Intput: NULL *Output: NULL *Return: 成功返回0 ******************************************************/ EXPORT_C int WINAPI var_deinit(); /**************************************************** *Function: 从文件加载变量列表 *Intput: file 变量文件目录 <256字节 *Output: NULL *Return: 成功返回0,失败返回错误码 *PS: 每次初始化以后都必须加载才能正常使用 *PS: 若不传入文件路径,则使用上一次的路径加载 ******************************************************/ EXPORT_C int WINAPI var_load(const char* file = 0); /**************************************************** *Function: 保存变量列表到文件 -- 根据load的目录 *Intput: NULL *Output: NULL *Return: 成功返回0,失败返回错误码 *PS: 可以重复调用,仅修改过才会实际保存到文件 ******************************************************/ EXPORT_C int WINAPI var_save(); /**************************************************** *Function: 创建一个变量,id传入无效,变量名不能重复 *Intput: pvar 变量结构体 *Output: NULL *Return: 成功返回0,失败返回错误码 ******************************************************/ EXPORT_C int WINAPI create_var(TVar* pvar); /**************************************************** *Function: 修改一个变量,基于pvar->id *Intput: pvar 变量结构体 *Output: NULL *Return: 成功返回0 失败返回错误码 ******************************************************/ EXPORT_C int WINAPI update_var(TVar* pvar); /**************************************************** *Function: 获取所有变量列表,可以先传空获取数量 *Intput: pVarList 变量名存储列表 *Output: pVarList 变量名存储列表 *Return: 返回变量个数 ******************************************************/ EXPORT_C int WINAPI get_var_list(TVar* pVarList = 0); /**************************************************** *Function: 获取一个变量信息 -- 根据ID *Intput: key 变量ID pvar 变量结构体 传NULL判断ID是否存在 *Output: NULL *Return: 成功返回id,大于0 失败返回错误码 ******************************************************/ EXPORT_C int WINAPI get_var_info(int key, TVar* pvar = 0); /**************************************************** *Function: 获取一个变量ID,通过名称获取 *Intput: key 变量名 *Output: NULL *Return: 存在返回变量ID>0,不存在返回0 ******************************************************/ EXPORT_C int WINAPI get_var_id(const char* key); /**************************************************** *Function: 获取一个变量值,基于name查询 *Intput: key 变量名 pval 变量值 -- 可以传NULL *Output: NULL *Return: 成功返回0 失败返回错误码 *PS: 传NULL可以判断一个变量名是否存在 ******************************************************/ EXPORT_C int WINAPI get_var(const char* key, char* pval = 0); /**************************************************** *Function: 获取一个整型变量值 *Intput: key 变量名 *Output: NULL *Return: 返回整型变量值,失败返回0 ******************************************************/ EXPORT_C int WINAPI get_int_var(const char* key); /**************************************************** *Function: 等待一个信号量(变量=目标值),并取反 *Intput: key 变量名 val 变量值 *Output: NULL *Return: 若成功等到信号量,则返回0,错误返回错误代码, 无信号返回 ERR_TIMEOUT *PS: 有保护机制,保证只有一个线程能取得该信号 ******************************************************/ EXPORT_C int WINAPI wait_int_var(const char* key, int val); /**************************************************** *Function: 获取一个double型变量值 *Intput: key 变量名 *Output: NULL *Return: 返回整型变量值,失败返回0 ******************************************************/ EXPORT_C double WINAPI get_double_var(const char* key); /**************************************************** *Function: 设置一个变量值,基于变量名查询,若不存在则返回错误 *Intput: key 变量名 pval 变量值 *Output: NULL *Return: 成功返回0 失败返回错误码 ******************************************************/ EXPORT_C int WINAPI set_var(const char* key, const char* pval); /**************************************************** *Function: 设置一个整型变量值 *Intput: key 变量名 val 变量值 *Output: NULL *Return: 成功返回0 失败返回错误码 ******************************************************/ EXPORT_C int WINAPI set_int_var(const char* key, int val); /**************************************************** *Function: 设置一个double型变量值 *Intput: key 变量名 val 变量值 *Output: NULL *Return: 成功返回0 失败返回错误码 ******************************************************/ EXPORT_C int WINAPI set_double_var(const char* key, double val); /**************************************************** *Function: 获取一个变量值 -- 根据ID *Intput: key 变量ID pval 变量值 *Output: NULL *Return: 成功返回0 失败返回错误码 ******************************************************/ EXPORT_C int WINAPI getd_var(int key, char* pval); /**************************************************** *Function: 获取一个整型变量值 -- 根据ID *Intput: key 变量ID *Output: NULL *Return: 返回整型变量值,失败返回0 ******************************************************/ EXPORT_C int WINAPI getd_int_var(int key); /**************************************************** *Function: 等待一个信号量(变量=目标值),并取反 -- 根据ID *Intput: key 变量ID val 变量值 *Output: NULL *Return: 若成功等到信号量,则返回0,错误返回错误代码, 无信号返回 ERR_TIMEOUT *PS: 有保护机制,保证只有一个线程能取得该信号 ******************************************************/ EXPORT_C int WINAPI waitd_int_var(int key, int val); /**************************************************** *Function: 获取一个double型变量值 -- 根据ID *Intput: key 变量ID *Output: NULL *Return: 返回整型变量值,失败返回0 ******************************************************/ EXPORT_C double WINAPI getd_double_var(int key); /**************************************************** *Function: 设置一个变量 -- 根据ID *Intput: key 变量ID pval 变量值 *Output: NULL *Return: 成功返回0 失败返回错误码 ******************************************************/ EXPORT_C int WINAPI setd_var(int key, const char* pval); /**************************************************** *Function: 设置一个整型变量值 -- 根据ID *Intput: key 变量ID val 变量值 *Output: NULL *Return: 成功返回0 失败返回错误码 ******************************************************/ EXPORT_C int WINAPI setd_int_var(int key, int val); /**************************************************** *Function: 设置一个double型变量值 -- 根据ID *Intput: key 变量ID val 变量值 *Output: NULL *Return: 成功返回0 失败返回错误码 ******************************************************/ EXPORT_C int WINAPI setd_double_var(int key, double val); #endif //防止重复包含头文件