/************************************************************************** 作者: huangjiangbo 时间: 2024.08.26 描述: 各模组Config数据库操作基类 修改记录: 1、 ***************************************************************************/ #pragma once //#pragma warning(disable:4251) #include "CppSQLite3.h" #include "dt.h" #include #include #include #include #include "CDataBaseOperate.h" namespace ns_db { using namespace std; #ifdef CONFIG_BASE_DLL #define DLL_CONFIG_BASE_API __declspec(dllexport) #else #define DLL_CONFIG_BASE_API #endif typedef struct _CONFIG_BASE_STRUCT { INT iNo_; INT iGroupId = 1; string strName = ""; string strDescribe = ""; string strDescribe_Eng = ""; INT iUserGrade = 1; INT iChangeFlag = 1; string strValue = ""; string strType = ""; string strDefult = ""; string strLowerLimit = "-1000000"; string strUpperLimit = "1000000"; string strUnit = "um"; string strAxisType = ""; string sIcon = ""; bool bEnable = true; string strCallFun = ""; }CONFIG_BASE_STRUCT; enum CONFIG_TYPE { CONFIG_LONG = 0, CONFIG_ULONG, CONFIG_INT, CONFIG_DOUBLE, CONFIG_BOOL, CONFIG_STRING }; typedef struct _MODULE_CONFIG_STRUCT { string strName; void* pValue; CONFIG_TYPE config_type; bool bSave; void* pDefault; _MODULE_CONFIG_STRUCT(string strTemp, LONG* pTemp, bool isSaveTemp, LONG* pDef = NULL) { strName = strTemp; pValue = (void*)pTemp; config_type = CONFIG_TYPE::CONFIG_LONG; bSave = isSaveTemp; pDefault = (void*)pDef; } _MODULE_CONFIG_STRUCT(string strTemp, ULONG* pTemp, bool isSaveTemp, ULONG* pDef = NULL) { strName = strTemp; pValue = (void*)pTemp; config_type = CONFIG_TYPE::CONFIG_ULONG; bSave = isSaveTemp; pDefault = (void*)pDef; } _MODULE_CONFIG_STRUCT(string strTemp, int* pTemp, bool isSaveTemp, int* pDef = NULL) { strName = strTemp; pValue = (void*)pTemp; config_type = CONFIG_TYPE::CONFIG_INT; bSave = isSaveTemp; pDefault = (void*)pDef; } _MODULE_CONFIG_STRUCT(string strTemp, unsigned int* pTemp, bool isSaveTemp, unsigned int* pDef = NULL) { strName = strTemp; pValue = (void*)pTemp; config_type = CONFIG_TYPE::CONFIG_INT; bSave = isSaveTemp; pDefault = (void*)pDef; } _MODULE_CONFIG_STRUCT(string strTemp, double* pTemp, bool isSaveTemp, double* pDef = NULL) { strName = strTemp; pValue = (void*)pTemp; config_type = CONFIG_TYPE::CONFIG_DOUBLE; bSave = isSaveTemp; pDefault = (void*)pDef; } _MODULE_CONFIG_STRUCT(string strTemp, bool* pTemp, bool isSaveTemp, bool* pDef = NULL) { strName = strTemp; pValue = (void*)pTemp; config_type = CONFIG_TYPE::CONFIG_BOOL; bSave = isSaveTemp; pDefault = (void*)pDef; } _MODULE_CONFIG_STRUCT(string strTemp, string* pTemp, bool isSaveTemp, string* pDef = NULL) { strName = strTemp; pValue = (void*)pTemp; config_type = CONFIG_TYPE::CONFIG_STRING; bSave = isSaveTemp; pDefault = (void*)pDef; } }MODULE_CONFIG_STRUCT; // 定义函数指针类型 using GetFunctionPtr = vector(*)(); using SetFunctionPtr = std::function)>; typedef struct { GetFunctionPtr get; SetFunctionPtr set; } CONFIG_FUNCTION_PTR; class DLL_CONFIG_BASE_API CConfigBase { private: // 函数注册表 std::map m_FunctionRegistry; public: // 注册函数 void RegisterFunction(const std::string& name,GetFunctionPtr get, SetFunctionPtr set); LONG CallSetFunction(const std::string& name, CDataBaseOperate* obj, std::vector vecconfig); CConfigBase(string sPathFile, CppSQLite3DB* pDB); LONG LoadConfigDB(string strTableName, vector& vecConfig); LONG SaveConfigDB(string strTableName, vector* vecConfig); LONG Read(vector stConfig, const CHAR* key, string& value); LONG Read(vector stConfig, const CHAR* key, CHAR* value, UINT len); LONG Read(vector stConfig, const CHAR* key, LONG* value); LONG Read(vector stConfig, const CHAR* key, ULONG* value); LONG Read(vector stConfig, const CHAR* key, INT* value); LONG Read(vector stConfig, const CHAR* key, DOUBLE* value); LONG Read(vector stConfig, const CHAR* key, bool* value); LONG Write(vector* stConfig, const CHAR* key, const CHAR* value); LONG Write(vector* stConfig, const CHAR* key, string value); LONG Write(vector* stConfig, const CHAR* key, LONG value); LONG Write(vector* stConfig, const CHAR* key, ULONG value); LONG Write(vector* stConfig, const CHAR* key, INT value); LONG Write(vector* stConfig, const CHAR* key, DOUBLE value); LONG Write(vector* stConfig, const CHAR* key, bool value); LONG Append(vector* stConfig, MODULE_CONFIG_STRUCT config); //在ConfigBase 中查找 ModuleConfig 中需要的数据 LONG GetConfigParam(vector stConfig, vector* vecconfig); //将ModuleConfig的数据设置到ConfigBase中 LONG SetConfigParam(vector* stConfig, vector vecconfig); private: CppSQLite3DB* m_pDB; std::string m_sPathFile = ""; }; }