属性
Model 构造只给路径,析构自动关。
约定
darra_ai.h 只导出 C 函数与定长结构体,结构体首字段 size。char** 出参用 darra_string_free 释放。
元信息
只读元信息构造即加载,打开成功后刷新。全 0 / 空 = 缺席,不编造。
| 类别 | 属性 | 类型 | 读写 | 说明 |
|---|---|---|---|---|
| Meta.* | meta().path() | `std::string` | 只读 | 构造登记的模型路径原样回读;不做存在性校验 |
meta().task() | `std::string` | 只读 | 任务短名 detect / classify / …;未声明为空串 | |
meta().labels() | `std::vector<std::string>` | 只读 | 类别名表(下标 = class_id);未声明空表;装入类别名后为生效表 | |
has_class_count() | bool | 只读 | class_count 是否声明(Model 直读;缺 = 不编造) | |
meta().class_count() | `int64_t` | 只读 | 类别数;未声明为 0 | |
meta().input_width() / input_height() / input_channels() | `uint32_t` | 只读 | 输入宽 / 高 / 通道;未声明为 0 | |
meta().is_encrypted() | bool | 只读 | 是否加密容器(构造即判定,不等 Open()) | |
meta_json() | `std::string` | 只读 | 元数据 JSON 原文(Model 直读);未给为空串 | |
| 状态 | license() | ModelState | 只读 | 授权态 NotOpened / Unencrypted / Trial / Binding / Bound;未打开或 close() 后为 NotOpened |
phase() | Phase | 只读 | 生命周期相位 Loaded / Opened / Error;构造后 Loaded,Open() 成功 Opened,失败 Error | |
last_error() | LastError | 只读 | category + code + message;成功后清空 | |
selected_provider() | `std::string` | 只读 | 打开后实测 Provider;池模式记打开请求值;close() 后空串 |
状态管理
| 时机 | 看哪个属性 | 预期 |
|---|---|---|
Open() 前 | phase() / selected_provider() / license() | Loaded / "" / NotOpened |
Open() 后 | license() / selected_provider() | 明文 / 试用 / 绑定 / 已绑定 之一;实际后端 Provider |
| 推理失败时 | last_error().code | 非 0;phase() 仍 Opened |
close() 后 | license() / selected_provider() / phase() | NotOpened / "" / Loaded |