docs: rebuild audio and core api docs

This commit is contained in:
2026-03-27 19:18:53 +08:00
parent 53ac1dbc44
commit bf79bd344e
66 changed files with 5441 additions and 1198 deletions

View File

@@ -1,18 +1,88 @@
# SmartPtr
**命名空间**: `XCEngine`
**命名空间**: `XCEngine::Core`
**类型**: `header`
**类型**: `header-overview`
**头文件**: `XCEngine/Core/SmartPtr.h`
**描述**: 定义 `XCEngine/Core` 子目录中的 `SmartPtr` public API
**描述**: 定义 `std::shared_ptr` / `std::unique_ptr` 的引擎内别名,以及 `MakeRef()` / `MakeUnique()` 工厂函数
## 概述
## 角色概述
`SmartPtr.h` `XCEngine/Core` 子目录 下的 public header当前页面作为平行目录中的 canonical 总览,用于汇总该头文件暴露的主要声明。
`SmartPtr.h`当前代码库里最直接、也最现代的一层所有权约定:
- `Ref<T>` = `std::shared_ptr<T>`
- `UniqueRef<T>` = `std::unique_ptr<T>`
- `MakeRef<T>()` = `std::make_shared<T>()`
- `MakeUnique<T>()` = `std::make_unique<T>()`
这让代码在保持引擎命名风格的同时,仍然直接复用标准库语义。
## 当前实现行为
### 1. 这是薄封装,不是自定义智能指针系统
当前头文件里没有自定义控制块、intrusive hook、调试统计或特殊 deleter 逻辑。它只是别名与便捷工厂函数。
这意味着:
- `Ref<T>` 的行为完全等同 `std::shared_ptr<T>`
- `UniqueRef<T>` 的行为完全等同 `std::unique_ptr<T>`
### 2. `MakeRef()` / `MakeUnique()` 只是便捷入口
当前实现直接转发到标准库:
- `MakeRef()` -> `std::make_shared`
- `MakeUnique()` -> `std::make_unique`
`tests/core/test_core.cpp` 已覆盖:
- 默认构造
- 拷贝共享
- 移动语义
- `nullptr` 检查
### 3. 已有真实调用点
当前源码里至少能看到:
- `ResourceManager` 使用 `Core::MakeUnique<AsyncLoader>()`
这说明它不是纯风格占位,而是已经进入实际实现。
## 与 RefCounted 的关系
这是这个头文件最容易被误解的地方。
当前 [RefCounted](../RefCounted/RefCounted.md) 是侵入式手工引用计数基类,而 `Ref<T>` 是标准库 `shared_ptr`。两者当前没有自动打通。
最安全的理解方式是:
- `Ref<T>` / `UniqueRef<T>` 是当前更常规的 C++ RAII 工具
- `RefCounted` 是单独存在的一套 intrusive RC 机制
如果没有明确适配层,不要把继承自 `RefCounted` 的对象直接当成 `Ref<T>` 体系的一部分来想当然混用。
## 线程语义
- 线程语义沿用标准库智能指针本身的语义。
- 文档不额外扩展任何引擎层线程保证。
## 当前实现限制
- 没有自定义内存统计、调试名或对象池集成。
- 没有和 `RefCounted` 的统一 ownership 框架。
- 头文件本身不提供额外行为,只提供命名和风格统一。
## 相关指南
- [Core Foundations: Ownership, Events, And Layers](../../../_guides/Core/Core-Foundations-Ownership-Events-And-Layers.md)
## 相关文档
- [当前目录](../Core.md) - 返回 `Core` 平行目录
- [API 总索引](../../../main.md) - 返回顶层索引
- [当前模块](../Core.md)
- [RefCounted](../RefCounted/RefCounted.md)
- [Types](../Types/Types.md)
- [API 总索引](../../../main.md)