Skip to content

Commit ccd5896

Browse files
docs: Update docs
1 parent cd90ec7 commit ccd5896

File tree

3 files changed

+65
-21
lines changed

3 files changed

+65
-21
lines changed

.agents/docs/RFC.md

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -48,32 +48,34 @@
4848

4949
### 值安全
5050

51-
- `checked_value_policy`(默认)
52-
- `unchecked_value_policy`
53-
- `saturating_value_policy`
51+
- `checked_value`(默认)
52+
- `unchecked_value`
53+
- `saturating_value`
5454

5555
关注点:和底层类型的互转、构造,底层类型值域限制,算术/比较的溢出/下溢/除零行为。
5656

5757
### 类型安全
5858

59-
- `strict_type_policy`(默认)
60-
- `relaxed_type_policy`
59+
- `strict_type`(默认)
60+
- `relaxed_type`
6161

6262
关注点:primitive 之间的隐式/显式转换规则,是否允许跨类型算术(如 `Integer + Floating`)或比较。
6363

6464
### 错误模型 / 异常安全
6565

66-
- `throw_error_policy`(默认)
67-
- `expected_error_policy`
68-
- `terminate_error_policy`
66+
- `throw_error`(默认)
67+
- `expected_error`
68+
- `terminate_error`
6969

7070
关注点:错误处理方式,是否允许异常,是否提供 `expected` 风格的错误返回。
7171

7272
### 并发安全
7373

74-
- `single_thread_policy`(默认)
75-
- `atomic_policy`
76-
- `locked_policy<Mutex>`
74+
- `single_thread`(默认)
75+
- `atomic`
76+
- `locked<Mutex>`
77+
78+
注意:项目已将原先带后缀的 policy 名称(例如 `checked_value_policy`)重命名为无后缀形式(`checked_value`)。文档与代码中的示例均已更新以反映此变更。
7779

7880
关注点:是否允许在多线程环境中使用,是否提供原子操作支持,是否需要外部锁。
7981

@@ -88,13 +90,13 @@
8890

8991
### 第二阶段
9092

91-
- 引入 `expected_error_policy`
93+
-- 引入 `expected_error`
9294
- 引入 `unchecked/saturating`
9395
- 完善行为矩阵文档
9496

9597
### 第三阶段
9698

97-
- 引入 `atomic_policy`
99+
-- 引入 `atomic`
98100
- 引入语义标签桥接(非强绑定)
99101

100102
### 第四阶段

.agents/docs/architecture.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,48 @@ ctest --test-dir build
133133
3. 实现无运算的 primitive 包装壳(只存值与策略标签)
134134
4. 将 xmake target 命名从 `templates` 统一迁移到 `primitives`
135135

136+
## 策略(Policy)模块
137+
138+
项目中新增了 `mcpplibs::primitive::policy` 模块,用来表达运行时/编译期的策略标签。核心要点:
139+
140+
- `policy::category`:一个枚举,用以表示四类策略:`value``type``error``concurrency`
141+
- 每个 policy 类型匹配一个 `policy::traits<P>` 特化,`traits` 提供 `enabled``kind`(category)。
142+
- 提供了 `policy::policy_type<P>` 概念用于识别有效的 policy 类型。
143+
- `policy::default_policies` 提供库的默认策略集合(`value`, `type`, `error`, `concurrency`)。
144+
145+
示例用法见 [examples/basic.cpp](examples/basic.cpp#L1)(演示如何查询默认策略与内建策略的类别)。
146+
147+
## Primitive 类模板 设计(草案)
148+
149+
目标:提供零开销、策略化的 `primitive<T, Policies...>` 类模板,作为后续实现 `Integer/ Floating/ Boolean/ Char` 等包装器的基础。
150+
151+
设计要点:
152+
153+
- 定位:实现放置在 `src/primitive.cppm` 的分区或 `src/primitives/primitive.cppm`(按模块组织),导出至 `mcpplibs.primitive`
154+
- 存储:`primitive<T, Policies...>` 应仅持有 `T`(或 `value_type`)的值,不含运行时策略开销;策略仅作为类型标签存在。
155+
- 策略传播:添加 `traits/primitive_traits.cppm`,提供 `primitive_traits<Primitive>`,包含:
156+
- `using value_type` — 底层类型
157+
- `using policies = std::tuple<...>` — 策略标签元组
158+
- `using default_policies = policy::default_policies`
159+
- 编译期谓词 `has_policy_category<Primitive, policy::category::value>` 等,便于操作 trait 的约束和重载。
160+
- 可扩展性:`primitive` 的操作(例如算术、比较)将通过独立的 operation traits 和 concepts 实现,使用 `primitive_traits` 中的 policy 信息进行选择。
161+
162+
示例 API 草案:
163+
164+
```cpp
165+
template<typename T, typename...Policies>
166+
struct primitive {
167+
using value_type = T;
168+
using policies = std::tuple<Policies...>;
169+
constexpr explicit primitive(T v) noexcept : value(v) {}
170+
T value;
171+
};
172+
173+
template<typename P> struct primitive_traits; // 特化以导出信息
174+
```
175+
176+
下一步:我将实现 `primitive` 模板与 `primitive_traits`,并添加单元测试与示例。
177+
136178
## 参考
137179
138180
- RFC: `RFC.md`

README.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
# mcpplibs templates
1+
# mcpplibs primitives
22

3-
> C++23 模块化库项目模板 - `import mcpplibs.templates;`
3+
> C++23 模块化原语库 - `import mcpplibs.primitive;`
44
5-
基于 C++23 模块的库项目模板,提供标准化的项目结构、构建配置和 CI/CD 流水线,帮助快速创建 mcpplibs 风格的模块化 C++ 库
5+
本仓库实现了底层强类型 primitive 基础设施(traits、policy、underlying 类型分类),供上层 `Integer`/`Floating`/`Boolean` 等封装使用
66

77
## 特性
88

@@ -15,9 +15,9 @@
1515
## 项目结构
1616

1717
```
18-
mcpplibs-templates/
18+
mcpplibs-primitives/
1919
├── src/ # 模块源码
20-
│ └── templates.cppm # 主模块接口
20+
│ └── primitive.cppm # 主模块接口(导出 traits 与 primitive 聚合)
2121
├── tests/ # 测试
2222
│ ├── main.cpp
2323
│ └── xmake.lua
@@ -37,10 +37,10 @@ mcpplibs-templates/
3737

3838
```cpp
3939
import std;
40-
import mcpplibs.templates;
40+
import mcpplibs.primitive;
4141

4242
int main() {
43-
mcpplibs::templates::hello_mcpp();
43+
static_assert(mcpplibs::primitive::std_integer<int>);
4444
return 0;
4545
}
4646
```
@@ -58,7 +58,7 @@ xlings install
5858
```bash
5959
xmake build # 构建库
6060
xmake run basic # 运行基础示例
61-
xmake run templates_test # 运行测试
61+
xmake run primitives_test # 运行测试
6262
```
6363

6464
**使用 CMake**

0 commit comments

Comments
 (0)