阶段 2 完成

This commit is contained in:
2026-06-18 12:42:44 +08:00
parent 599335e93d
commit f99666420b
19 changed files with 874 additions and 641 deletions

View File

@@ -79,8 +79,31 @@ class SymbolNode:
'type': self.type,
'lineno': self.lineno,
'file': self.file,
**self.attributes.entry
}
# 序列化 CTypeInfo 属性
attrs = self.attributes
if attrs.BaseType:
result['BaseType'] = str(attrs.BaseType)
if attrs.PtrCount:
result['PtrCount'] = attrs.PtrCount
if attrs.IsTypedef:
result['IsTypedef'] = True
if attrs.IsStruct:
result['IsStruct'] = True
if attrs.IsEnum:
result['IsEnum'] = True
if attrs.IsUnion:
result['IsUnion'] = True
if attrs.IsFunction:
result['IsFunction'] = True
if attrs.IsVariable:
result['IsVariable'] = True
if attrs.IsDefine:
result['IsDefine'] = True
if attrs.OriginalType:
result['OriginalType'] = str(attrs.OriginalType)
if attrs._sm._extra:
result.update(attrs._sm._extra)
if self.children:
result['children'] = {name: child.ToDict() for name, child in self.children.items()}
@@ -118,7 +141,7 @@ class SymbolNode:
node.attributes.Lineno = lineno
else:
if TypeName is not None:
node.attributes.BaseType = CTypeInfo.create_FromTypeName(TypeName)
node.attributes.BaseType = CTypeInfo.CreateFromTypeName(TypeName)
if IsPtr:
node.attributes.PtrCount = 1
if dims:
@@ -158,7 +181,7 @@ class SymbolNode:
CTypeMember.PtrCount = max(CTypeMember.PtrCount, 1)
node.attributes.Members[MemberName] = CTypeMember
if TypeKind == 'struct':
node.attributes.is_struct = True
node.attributes.IsStruct = True
elif TypeKind == 'enum':
node.attributes.IsEnum = True
elif TypeKind == 'union':
@@ -198,7 +221,7 @@ class SymbolNode:
if IsUnion:
node.attributes.IsUnion = True
else:
node.attributes.is_struct = True
node.attributes.IsStruct = True
return node
@classmethod