抛弃GdCpp*.dll/pdb历史重新建库。libhv和Sqlite的dll保留

This commit is contained in:
Zhang Jianjun
2026-02-02 16:09:02 +08:00
parent f148ca49e3
commit 4a2a284ac0
292 changed files with 350450 additions and 0 deletions

94
include/CLang.h Normal file
View File

@@ -0,0 +1,94 @@
#ifndef CLANG_H
#define CLANG_H
#include "GdCPP_Exports.h"
#include "json\_nlohmann_json_wrapper.h"
//#include "LangEnum.h"
/// 界面语言相关。
/// - 定义了一组界面语言和对应的字符串
/// - 定义了界面语言的静态成员,方便全局访问。
/// - 定义了与json互转的函数
struct GDCPP_API CLang
{
///界面语言的枚举
enum eLang {
undef=-1, ///< 未定义
zh=0, ///< 简体中文
en, ///< 英语
vn, ///< 越南语
th, ///< 泰语
sp, ///< 西班牙语
jp, ///< 日语
ru, ///< 俄语
LangNum
};
CLang() = default;
/// 复制构造函数
CLang(const CLang & p) :Lang(p.Lang) {}
CLang(const CLang::eLang& e) :Lang(e) {}
/// 当前语言的枚举
eLang Lang = eLang::zh;
/// 字符串转枚举
static eLang fromStr(const char * str);
/// 用于json文件的英文字符串
static const char* LangStr[LangNum];
/// 用于UI显示的中英文字符串
static const wchar_t* LangWStr[LangNum];
static const wchar_t* LangWStrCn[LangNum];
/// @brief 实例名称后面加括号直接返回
inline eLang operator()() {return Lang;}
/// 重载比较运算符
inline bool operator == (const CLang& l) { return Lang == l.Lang; }
inline bool operator != (const CLang& l) { return Lang != l.Lang; }
inline bool operator == (eLang l) { return Lang == l; }
inline bool operator != (eLang l) { return Lang != l; }
inline bool operator == (const std::string & l) { return l == LangStr[Lang]; }
inline bool operator != (const std::string & l) { return l != LangStr[Lang]; }
inline bool operator == (const char * l) { return strcmp(l, LangStr[Lang]) == 0; }
inline bool operator != (const char * l) { return strcmp(l, LangStr[Lang]) != 0; }
// const char *类型转换操作符重载
inline operator const char *()
{
return LangStr[Lang];
}
// std::string类型转换操作符重载
inline operator std::string()
{
return LangStr[Lang];
}
};
/// \brief 全局共用的语言实例。
/// \details 界面刷新时使用全局实例,参数设置里用局部实例。
/// 加载:
/// app从设置文件中加载配置到局部实例赋值给全局实例。
/// 设置:
/// 界面上修改局部实例,确认时赋值给全局实例,保存到配置文件。
///
/// 为什么不直接用静态成员变量?
/// 如果以exe与dll中都用到且是用静态库或直接使用源码exe与dll的静态成员不是同一个变量。
GDCPP_API extern CLang gLang;
void GDCPP_API to_json(jsonobj& j, const CLang & p);
void GDCPP_API from_json(const jsonobj& j, CLang& p);
#endif // CAPPSETTING_H