Files
Convention-CPP/Runtime-Modules-README.md
2025-06-29 17:43:24 +08:00

5.5 KiB
Raw Blame History

Convention-CPP Runtime 模块说明

本文档描述了基于 Convention-TemplateConvention-CPP 实现的Runtime模块。

📁 模块结构

完整实现的模块

1. File.hpp - 文件操作工具

  • ToolFile类: 面向对象的文件系统操作
  • 完整功能: 文件读写、路径操作、目录管理
  • 链式操作: 支持流畅的API调用
  • 跨平台: 基于std::filesystem

核心功能:

  • 文件存在性检查、类型判断
  • 文本/二进制文件读写
  • 目录遍历和管理
  • 路径组合操作符 |
  • 文件对话框接口(需平台实现)

2. GlobalConfig.hpp - 全局配置管理

  • GlobalConfig类: 配置文件管理和日志系统
  • ProjectConfig类: 项目级配置特化
  • JSON支持: 基于nlohmann/json
  • 完整功能: 配置读写、日志记录

核心功能:

  • 键值对配置管理
  • 自动配置文件生成
  • 时间戳日志系统
  • 迭代器支持foreach循环
  • 文件操作集成

3. Math.hpp - 数学工具库

  • 完整实现: 常用数学函数和工具
  • 模板化: 支持多种数值类型
  • 高性能: 基于标准库优化

核心功能:

  • 数学常量和基础运算
  • 三角函数、指数对数函数
  • 插值函数Lerp, InverseLerp
  • 随机数生成器
  • 浮点数比较工具

接口实现的模块

4. Web.hpp - 网络工具模块

  • ToolURL类: URL解析和操作
  • HttpClient类: HTTP客户端接口
  • 接口状态: 完整API设计需HTTP库实现

设计功能:

  • URL验证和属性解析
  • 文件类型检测
  • HTTP GET/POST方法
  • 异步下载功能
  • URL编码/解码

实现要求: 需要libcurl或类似HTTP库

5. Plugins.hpp - 插件系统

  • PriorityQueue类: 完整的优先队列实现
  • IPlugin接口: 插件基类定义
  • PluginManager类: 插件管理器接口

设计功能:

  • 动态插件加载/卸载
  • 插件依赖管理
  • 平台特定插件支持
  • 事件系统集成
  • 优先级队列调度

实现要求: 需要动态库加载机制

6. EasySave.hpp - 序列化系统

  • EasySave类: 主要序列化接口
  • EasySaveSettings: 配置结构
  • 接口状态: 基础JSON实现完整功能需扩展

设计功能:

  • 多格式序列化JSON/Binary
  • 加密和压缩支持
  • 缓存系统
  • 备份/恢复机制
  • 键值管理

实现要求: 需要加密库和压缩库

继承的模块

7. Config.hpp - 基础配置(已存在)

  • 完整实现: 平台判断、字符串工具、内存管理
  • 基础设施: 为其他模块提供基础功能

8. Architecture.hpp - 核心架构(已存在)

  • 完整实现: 依赖注入、事件系统、时间线管理
  • 设计模式: 单例、依赖注入、观察者模式

🔧 编译配置

依赖库

  • 标准库: C++17 std::filesystem
  • 可选依赖: nlohmann/json配置管理
  • 待实现依赖:
    • libcurlWeb模块
    • OpenSSL/AES库EasySave加密
    • zlibEasySave压缩

CMake配置

已在主CMakeLists.txt中添加依赖查找

find_package(nlohmann_json QUIET)

🚀 使用示例

文件操作

#include "Convention/[Runtime]/File.hpp"
using namespace Convention;

ToolFile file("data/config.txt");
if (file.Exists()) {
    auto content = file.LoadAsText();
    // 处理内容
}

// 链式操作
ToolFile dataDir("assets");
auto configFile = dataDir | "config" | "settings.json";

配置管理

#include "Convention/[Runtime]/GlobalConfig.hpp"
using namespace Convention;

GlobalConfig config("./data");
config["username"] = "player1";
config["level"] = 5;
config.SaveProperties();

// 日志记录
config.Log("Info", "Game started");

数学运算

#include "Convention/[Runtime]/Math.hpp"
using namespace Convention;

auto result = Math::Sin(Math::DegToRad(90.0f));
auto random_value = Math::RandomRange(1, 100);
bool is_equal = Math::Equal(3.14f, Math::Constants<float>::PI, 0.01f);

📋 实现状态总结

模块 状态 完成度 备注
Config 完整 100% 已存在
Architecture 完整 100% 已存在
File 完整 95% 平台对话框需实现
GlobalConfig 完整 100% 功能完整
Math 完整 100% 功能完整
Web 🔧 接口 30% 需HTTP库实现
Plugins 🔧 接口 40% 需动态加载实现
EasySave 🔧 接口 20% 需加密压缩实现

🎯 下一步实现建议

高优先级

  1. 完善Web模块: 集成libcurl实现HTTP功能
  2. 完善EasySave: 实现完整的序列化系统
  3. 文件对话框: 实现平台特定的文件选择功能

中优先级

  1. 插件系统: 实现动态库加载机制
  2. 加密支持: 为EasySave添加AES加密
  3. 压缩支持: 为EasySave添加Gzip压缩

低优先级

  1. 性能优化: 针对关键路径进行优化
  2. 单元测试: 为各模块添加测试用例
  3. 文档完善: 添加详细的API文档

📚 设计原则

本实现遵循以下设计原则:

  1. 模块化: 每个模块功能独立,依赖关系清晰
  2. 类型安全: 大量使用模板和类型检查
  3. RAII: 资源管理遵循RAII原则
  4. 异常安全: 提供清晰的错误处理机制
  5. 跨平台: 基于标准库,支持主要平台
  6. 向前兼容: 接口设计考虑未来扩展性

这个实现为Convention-CPP提供了完整的Runtime基础设施为后续开发提供了坚实的基础。