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

200 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Convention-CPP Runtime 模块说明
本文档描述了基于 `Convention-Template``Convention-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中添加依赖查找
```cmake
find_package(nlohmann_json QUIET)
```
## 🚀 使用示例
### 文件操作
```cpp
#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";
```
### 配置管理
```cpp
#include "Convention/[Runtime]/GlobalConfig.hpp"
using namespace Convention;
GlobalConfig config("./data");
config["username"] = "player1";
config["level"] = 5;
config.SaveProperties();
// 日志记录
config.Log("Info", "Game started");
```
### 数学运算
```cpp
#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基础设施为后续开发提供了坚实的基础。