diff --git a/lbkit/lbkit/codegen/idf_interface.py b/lbkit/lbkit/codegen/idf_interface.py index 567300d5748ef7edb2b4e58a5da837adc817ed07..0474528b3a00e8587946aec65d5a29adeacad01f 100644 --- a/lbkit/lbkit/codegen/idf_interface.py +++ b/lbkit/lbkit/codegen/idf_interface.py @@ -124,6 +124,8 @@ CTYPE_SIGNATURE_MAP = { } def get_intfname_and_ctype(class_alias: str, ctype: str): + if ctype == "self": + return class_alias, class_alias match = re.findall(r"([\w][\w\d]*)", ctype) intf = ".".join(match[:-1]) ctype = match[-1] @@ -426,6 +428,8 @@ class IdfCtypeRender(): if is_array: # 结构体数组初始化时为二级空指针,以空指针结束 return [f"{stru_name} **"] + elif stru_name == self.intf.alias: + return [f"struct _{stru_name} *"] else: # 结构体成员初始化时为空结构体,由反序列化时填充内容 return [f"{stru_name} *"]