From 0569365d79aaeb74aa134f52db13aa54f9619c56 Mon Sep 17 00:00:00 2001 From: Glenn Smith Date: Fri, 20 May 2022 20:42:12 -0400 Subject: Add BinaryView::ParseTypesFromSource for clang+typelibs --- python/typeparser.py | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) (limited to 'python/typeparser.py') diff --git a/python/typeparser.py b/python/typeparser.py index f1dffe13..f4eba3cf 100644 --- a/python/typeparser.py +++ b/python/typeparser.py @@ -120,6 +120,16 @@ class ParsedType: return result +@dataclasses.dataclass(frozen=True) +class BasicTypeParserResult: + types: Dict['types.QualifiedName', 'types.Type'] + variables: Dict['types.QualifiedName', 'types.Type'] + functions: Dict['types.QualifiedName', 'types.Type'] + + def __repr__(self): + return f"" + + @dataclasses.dataclass(frozen=True) class TypeParserResult: types: Dict['types.QualifiedName', ParsedType] @@ -392,14 +402,14 @@ class TypeParser(metaclass=_TypeParserMetaclass): return False def preprocess_source( - self, source: str, file_name: str, platform: platform.Platform, + self, source: str, file_name: str, platform: 'platform.Platform', existing_types: Optional[List[QualifiedNameTypeAndId]] = None, options: Optional[List[str]] = None, include_dirs: Optional[List[str]] = None ) -> Tuple[Optional[str], List[TypeParserError]]: raise NotImplementedError("Not implemented") def parse_types_from_source( - self, source: str, file_name: str, platform: platform.Platform, + self, source: str, file_name: str, platform: 'platform.Platform', existing_types: Optional[List[QualifiedNameTypeAndId]] = None, options: Optional[List[str]] = None, include_dirs: Optional[List[str]] = None, auto_type_source: str = "" @@ -407,7 +417,7 @@ class TypeParser(metaclass=_TypeParserMetaclass): raise NotImplementedError("Not implemented") def parse_type_string( - self, source: str, platform: platform.Platform, + self, source: str, platform: 'platform.Platform', existing_types: Optional[List[QualifiedNameTypeAndId]] = None ) -> Tuple[Optional[Tuple['types.QualifiedNameType', 'types.Type']], List[TypeParserError]]: raise NotImplementedError("Not implemented") @@ -416,7 +426,7 @@ class TypeParser(metaclass=_TypeParserMetaclass): class CoreTypeParser(TypeParser): def preprocess_source( - self, source: str, file_name: str, platform: platform.Platform, + self, source: str, file_name: str, platform: 'platform.Platform', existing_types: Optional[List[QualifiedNameTypeAndId]] = None, options: Optional[List[str]] = None, include_dirs: Optional[List[str]] = None ) -> Tuple[Optional[str], List[TypeParserError]]: @@ -464,7 +474,7 @@ class CoreTypeParser(TypeParser): return output, errors def parse_types_from_source( - self, source: str, file_name: str, platform: platform.Platform, + self, source: str, file_name: str, platform: 'platform.Platform', existing_types: Optional[List[QualifiedNameTypeAndId]] = None, options: Optional[List[str]] = None, include_dirs: Optional[List[str]] = None, auto_type_source: str = "" @@ -514,7 +524,7 @@ class CoreTypeParser(TypeParser): def parse_type_string( - self, source: str, platform: platform.Platform, + self, source: str, platform: 'platform.Platform', existing_types: Optional[List[QualifiedNameTypeAndId]] = None ) -> Tuple[Optional[Tuple['types.QualifiedNameType', 'types.Type']], List[TypeParserError]]: if existing_types is None: -- cgit v1.3.1