You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

241 lines
8.1 KiB
C

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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