# 2023/08/25 工作日志

### 1. 提交了一些漏洞修复
1. 修改了AnonClass节点（这些漏洞比较难解释，你可以通过对比源码来了解我更改了哪些地方）
2. 修复了部分依赖库（ArrayList.hpp和Stack.hpp）
3. 修复了AST代码，在原本的AST代码当中，将子节点的存储方式从值存储变成指针存储（详见src/ast下的源码）
4. 修复了文档的一些病句（详细请对比20230812.md）

### 2. 更新了依赖库
我添加了NumberMap，它和StringMap相似，是一个以整数为键的Map。
<br>
如果你要了解NumberMap的用法或实现，请阅读NumberMap.hpp。
<br>
当然，目前的NumberMap仍然是临时的，我会在后续做出改动。
<br><br>
此外，我也稍加改动了其他依赖库，让它在后续更容易改动

### 3. 数据类型定义的代码已经全部完工
代码位于src/data_type。
<br>
如果你想要直接**引用**所有数据类型定义，请直接引用DataType.hpp。<br>
注意，所有的数据类型定义都存放在stamon::datatype这个命名空间里，所以如果你要**使用**数据类型定义，可以写以下代码

```C++
#include"DataType.hpp"   //引用DataType.hpp
using namespace stamon::datatype;    //引用数据类型定义的命名空间
```


### 4. 数据类型定义的设计
数据类型定义的设计比Ast节点的设计要简单得多（详见20230812.md）：
<br>
有一个基类DataType，所有的具体数据类型都需要继承DataType。
<br>
<br>
接下来我们来简单介绍一下目录结构。
<br>

```C++
data_type
|-DataType.hpp  //在这里存放基类的定义
|-NullType.hpp  //空值数据类型定义
|-NumberType.hpp    //数字数据类型定义，具体定义了整数、单精度浮点数、双精度浮点数
|-StringType.hpp    //字符串数据类型定义
|-SequenceType.cpp  //数列数据类型定义
|-MethodType.cpp    //方法数据类型定义
|-ClassType.cpp     //类数据类型定义
|-ObjectType.cpp    //类对象数据类型定义
```

<br>
如果你想要阅读数据类型定义的源码，建议按照以下顺序阅读

1. DataType.hpp
2. NullType.hpp
3. NumberType.hpp
4. StringType.hpp
5. SequenceType.cpp
6. MethodType.cpp
7. ClassType.cpp
8. ObjectType.cpp

### 5. 接下来要做的事
1. 完成STVM的内部数据结构
2. 对代码进行测试