Update struct.h

This commit is contained in:
Aoran Zeng 2025-08-10 10:07:32 +08:00
parent d146a8a62a
commit 8458a193a6
No known key found for this signature in database
GPG Key ID: 8F8BA8488E10ED98

View File

@ -108,23 +108,6 @@ typedef enum Capability_t
Capability_t;
/* Target Feature */
typedef struct Feature_t
{
bool can_get;
bool can_reset; /* 有的reset不是暂时没有实现而是现在的实现根本就无法重置 */
bool can_english;
bool can_user_define;
Capability_t cap_locally;
char *cap_locally_explain;
char *note;
}
Feature_t;
typedef struct Contributor_t
{
@ -145,25 +128,33 @@ typedef struct Target_t
Source_t sources;
size_t sources_n;
bool can_english; /* 是否支持英文输出 */
bool can_user_define; /* 是否支持用户自定义URL来换源 */
/* Features */
bool can_english; /* 是否支持英文输出 */
bool can_user_define; /* 是否支持用户自定义URL来换源 */
char *can_user_define_explain; /* 用户自定义URL的说明 */
Capability_t cap_local; /* 是否支持 local mode */
char *cap_local_explain; /* local mode 的说明 */
char *note; /* 备注 */
Contributor_t *recipe_authors;
size_t recipe_authors_n;
/* Recipe maintain info */
char *created_on;
char *last_updated;
char *sources_last_updated;
Contributor_t *authors;
size_t authors_n;
Contributor_t *contributors;
size_t contributors_n;
Contributor_t *current_chef; // 只有一个主维护者
Contributor_t *current_sous_chefs; // 可以有多个副维护者
size_t current_sous_chefs_n;
char *recipe_created_on;
char *recipe_last_updated;
char *sources_last_updated;
Contributor_t *chef; /* Chef 仅有一个 */
Contributor_t *sous_chefs; /* Sous Chef 可以有多个 */
size_t sous_chefs_n;
}
Target_t;
@ -177,28 +168,6 @@ typedef struct TargetRegisterInfo_t
TargetRegisterInfo_t;
// #define def_target_inner_s(t) NULL, t##_setsrc, NULL, NULL
// #define def_target_inner_sr(t) NULL, t##_setsrc, t##_resetsrc, NULL
// #define def_target_inner_sf(t) NULL, t##_setsrc, NULL, t##_feat
// #define def_target_inner_srf(t) NULL, t##_setsrc, t##_resetsrc, t##_feat
// #define def_target_inner_gs(t) t##_getsrc, t##_setsrc, NULL, NULL
// #define def_target_inner_gsr(t) t##_getsrc, t##_setsrc, t##_resetsrc, NULL
// #define def_target_inner_gsf(t) t##_getsrc, t##_setsrc, NULL, t##_feat
// #define def_target_inner_gsrf(t) t##_getsrc, t##_setsrc, t##_resetsrc, t##_feat
#define def_target_sourcesn(t) t##_sources, t##_sources_n
/* 大部分target还不支持reset所以暂时先默认设置为NULL来过渡 */
// #define def_target(t) Target_t t##_target = {def_target_inner_gs(t),def_target_sourcesn(t)}
// #define def_target_s(t) Target_t t##_target = {def_target_inner_s(t),def_target_sourcesn(t)}
// #define def_target_sr(t) Target_t t##_target = {def_target_inner_sr(t),def_target_sourcesn(t)}
// #define def_target_sf(t) Target_t t##_target = {def_target_inner_sf(t),def_target_sourcesn(t)}
// #define def_target_srf(t) Target_t t##_target = {def_target_inner_srf(t),def_target_sourcesn(t)}
// #define def_target_gs(t) Target_t t##_target = {def_target_inner_gs(t),def_target_sourcesn(t)}
// #define def_target_gsr(t) Target_t t##_target = {def_target_inner_gsr(t),def_target_sourcesn(t)}
// #define def_target_gsf(t) Target_t t##_target = {def_target_inner_gsf(t),def_target_sourcesn(t)}
// #define def_target_gsrf(t) Target_t t##_target = {def_target_inner_gsrf(t),def_target_sourcesn(t)}
#define def_target(t) void t##_getsrc(char *option);void t##_setsrc(char *option);void t##_resetsrc(char *option); Target_t t##_target={0};
/* 以下宏仅能放在 prelude() 中使用 */