修复了大量存在的问题,增加了假鸭子类型等等机制
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
"""
|
||||
导出表模块 - 用于收集和存储文件的公开符号信息
|
||||
"""
|
||||
from __future__ import annotations
|
||||
from dataclasses import dataclass, field
|
||||
from typing import Dict, List, Optional, Any
|
||||
|
||||
@@ -79,25 +80,25 @@ class Exportable:
|
||||
|
||||
def add_enum(self, name: str, lineno: int, is_public: bool = True) -> EnumInfo:
|
||||
"""添加枚举类型"""
|
||||
enum_info = EnumInfo(name=name, lineno=lineno, is_public=is_public)
|
||||
enum_info: EnumInfo = EnumInfo(name=name, lineno=lineno, is_public=is_public)
|
||||
self.enums.append(enum_info)
|
||||
return enum_info
|
||||
|
||||
def add_function(self, name: str, return_type: str, lineno: int, is_public: bool = True) -> FunctionInfo:
|
||||
"""添加函数"""
|
||||
func_info = FunctionInfo(name=name, return_type=return_type, lineno=lineno, is_public=is_public)
|
||||
func_info: FunctionInfo = FunctionInfo(name=name, return_type=return_type, lineno=lineno, is_public=is_public)
|
||||
self.functions.append(func_info)
|
||||
return func_info
|
||||
|
||||
def add_struct(self, name: str, lineno: int, is_public: bool = True) -> StructInfo:
|
||||
"""添加结构体"""
|
||||
struct_info = StructInfo(name=name, lineno=lineno, is_public=is_public)
|
||||
struct_info: StructInfo = StructInfo(name=name, lineno=lineno, is_public=is_public)
|
||||
self.structs.append(struct_info)
|
||||
return struct_info
|
||||
|
||||
def add_typedef(self, name: str, original_type: str, lineno: int, is_public: bool = True) -> TypedefInfo:
|
||||
"""添加类型别名"""
|
||||
typedef_info = TypedefInfo(name=name, original_type=original_type, lineno=lineno, is_public=is_public)
|
||||
typedef_info: TypedefInfo = TypedefInfo(name=name, original_type=original_type, lineno=lineno, is_public=is_public)
|
||||
self.typedefs.append(typedef_info)
|
||||
return typedef_info
|
||||
|
||||
@@ -167,7 +168,7 @@ class Exportable:
|
||||
|
||||
def get_public_symbols(self) -> 'Exportable':
|
||||
"""获取仅包含公开符号的导出表"""
|
||||
result = Exportable(filename=self.filename)
|
||||
result: Exportable = Exportable(filename=self.filename)
|
||||
|
||||
result.enums = [e for e in self.enums if e.is_public]
|
||||
result.functions = [f for f in self.functions if f.is_public]
|
||||
|
||||
Reference in New Issue
Block a user