|
|
/*********************************************************************
|
|
|
*文件说明: 变量管理库
|
|
|
*作者: 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 //防止重复包含头文件
|