💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# 库信息文件 库信息文件记录了该支持库提供的所有命令的参数信息、所有类型的成员信息(类似于 TypeScript 的 `*.d.ts`),同时提供了对应的C++标识符,是保证EplOnCpp正确运行并不可少的内容 库信息文件的文件名固定为`info`,根据格式的不同,扩展名可以为`json`(JSON格式)或`yml`(YAML格式) 关于JSON格式的介绍请参考[json.org](https://www.json.org/),关于YAML格式的介绍请参考[yaml.org](https://yaml.org/)。通常来说,YAML格式相比JSON更加简洁、易用 在库信息文件中,所有数据类型均使用C++全限定名称,有关基本类型的C++全限定名称,请参考:[数据类型内部名称](../Reference/DataTypes/InternalNames.md) ## 库信息格式 ### CMakeName (string) 该描述库在CMake配置文件中的名称,***应与`config.cmake`中信息相匹配*** ### SuperTemplate (string) 该字段指定了 SuperTemplate 的位置 有关更多信息,请参考 SuperTemplate 注意:该字段为不稳定接口,随时可能删除,一般情况下请勿使用。 ### Cmd (map) 该字段为Map类型,提供了库命令的信息 其 Key 为 命令中文名,Value 为 命令信息 ### Type (map) 该字段为Map类型,提供了库自定义类型的信息 其 Key 为 类型中文名,Value 为 自定义类型信息 ### Constant (map) 该字段为Map类型,提供了库常量的信息 其 Key 为 常量中文名,Value 为 库常量信息 ### Enum (map) 枚举类型,该字段为Map类型,提供了枚举信息 其 Key 为 枚举类型中文名,Value 为 另一个Map Value.Key 为枚举值中文名 Value.Value 为枚举值信息,格式同常量信息 ## 方法信息格式 ### CppName (string) 表示C标识符 对于全局命令,应为C全限定名称(通常含`::`) 对于成员方法,应为成员名称(不含`::`) ### ReturnDataType (string) 表示命令的返回值类型(C++全限定名称),使用`null`(或省略字段)表示无返回值 ### Parameters (array) 表示参数信息,是一个数组 ## 参数信息格式 ### DataType (string) 表示数据类型(C++全限定名称) ### Optional (bool) 表示是否为可空参数 ### ByRef (bool) 表示是否为传址参数 仅用于非常量引用(`T&`),对常量引用(`const T&`)应设置为`false`以提高运行速度(避免生成中间对象) ### VarArgs (bool) 表示是否为可变长参数,仅用于末尾 C++层面可以配合使用变长参数模板(Variadic Templates)接收信息 ## 自定义类型信息格式 ### CppName (string) 表示C++标识符 ### Method (map) 该字段为Map类型,提供了成员方法的信息 其 Key 为 成员方法中文名,Value 为 成员方法信息 ### Member (map) 该字段为Map类型,提供了成员属性的信息 其 Key 为 成员方法中文名,Value 为 成员属性信息 ## 成员属性信息格式 ### CppName (string) 表示C++标识符 ### DataType (string) 表示数据类型(C++全限定名称) ### Getter (string)表示获取属性值的函数的C++全限定名称,可选 ### Setter (string) 表示设置属性值的函数的C++全限定名称,可选 ### Referencable (bool) 当设置为`false`时,**强制**该属性无法被按 参考 方式传递给用户定义的子程序 注:即使设置为`true`,当你使用 `Getter` & `Setter` 时可能仍然无法按 参考 方式传递 ## 常量信息格式 ### CppName (string) 表示C++标识符 可选,若不存在,则`Value` / `Getter`必须存在 ### DataType (string) 表示数据类型(C++全限定名称) ### Getter (string) 表示获取常量值的函数的C++全限定名称,可选,若不存在,则`CppName` / `Value`必须存在 ### Value (any) 表示常量的值,可选,若不存在,则`CppName` / `Getter`必须存在 为了便于优化,如非特殊情况,请提供此字段 ## 内容示例 YAML格式: ```yaml CMakeName: EocKrnln SuperTemplate: SuperTemplateForKrnln.dll Cmd: 通信测试: CppName: e::lib::krnln::NetworkUtils::ICMPPing ReturnDataType: int32_t Parameters: - DataType: e::system::string - DataType: int32_t Optional: true Type: 对象: CppName: e::lib::krnln::COMObject Method: 是否相等: CppName: ReferenceEquals ReturnDataType: bool Parameters: - DataType: e::lib::krnln::COMObject Constant: 自年首天数: CppName: e::lib::krnln::DateTimeUtils::CalcDayOfYear DataType: int32_t Value: 10 ``` JSON格式: ```json { "CMakeName": "EocKrnln", "SuperTemplate": "SuperTemplateForKrnln.dll", "Cmd": { "通信测试": { "CppName": "e::lib::krnln::NetworkUtils::ICMPPing", "ReturnDataType": "int32_t", "Parameters": [ { "DataType": "e::system::string" }, { "DataType": "int32_t", "Optional": true } ] } }, "Type": { "对象": { "CppName": "e::lib::krnln::COMObject", "Method": { "是否相等": { "CppName": "ReferenceEquals", "ReturnDataType": "bool", "Parameters": [ { "DataType": "e::lib::krnln::COMObject" } ] } } } }, "Constant": { "自年首天数": { "CppName": "e::lib::krnln::DateTimeUtils::CalcDayOfYear", "DataType": "int32_t", "Value": 10 } } } ```