Skip to content

Commit a684497

Browse files
committed
feat(python): add and export TypeTreeBackend type
1 parent 99cf3a0 commit a684497

1 file changed

Lines changed: 13 additions & 19 deletions

File tree

bindings/python/TypeTreeGeneratorAPI/TypeTreeGenerator.py

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
import ctypes
2+
import json
23
import os
34
import platform
4-
import json
5-
from typing import List, Optional, Tuple, Literal
5+
from typing import List, Literal, Optional, Tuple
6+
7+
TypeTreeBackend = Literal["AssetStudio", "AssetsTools", "AssetRipper"]
68

79

810
class TypeTreeNodeNative(ctypes.Structure):
@@ -105,28 +107,24 @@ class TypeTreeGenerator:
105107
def __init__(
106108
self,
107109
unity_version: str,
108-
generator: Literal["AssetStudio", "AssetsTools", "AssetRipper"] = "AssetStudio",
110+
generator: TypeTreeBackend = "AssetStudio",
109111
asm_path: Optional[str] = None,
110112
):
111113
init_dll(asm_path)
112-
self.ptr = DLL.TypeTreeGenerator_init(
113-
unity_version.encode("ascii"), generator.encode("ascii")
114-
)
114+
self.ptr = DLL.TypeTreeGenerator_init(unity_version.encode("ascii"), generator.encode("ascii"))
115115
if not self.ptr:
116116
raise RuntimeError("Failed to initialize TypeTreeGenerator")
117117

118118
def __del__(self):
119119
DLL.TypeTreeGenerator_del(self.ptr)
120120

121121
def load_dll(self, dll: bytes):
122-
assert not DLL.TypeTreeGenerator_loadDLL(self.ptr, dll, len(dll)), (
123-
"failed to load dll"
124-
)
122+
assert not DLL.TypeTreeGenerator_loadDLL(self.ptr, dll, len(dll)), "failed to load dll"
125123

126124
def load_il2cpp(self, il2cpp: bytes, metadata: bytes):
127-
assert not DLL.TypeTreeGenerator_loadIL2CPP(
128-
self.ptr, il2cpp, len(il2cpp), metadata, len(metadata)
129-
), "failed to load il2cpp"
125+
assert not DLL.TypeTreeGenerator_loadIL2CPP(self.ptr, il2cpp, len(il2cpp), metadata, len(metadata)), (
126+
"failed to load il2cpp"
127+
)
130128

131129
def get_nodes_as_json(self, assembly: str, fullname: str) -> str:
132130
jsonPtr = ctypes.c_char_p()
@@ -151,9 +149,7 @@ def get_nodes(self, assembly: str, fullname: str) -> List[TypeTreeNode]:
151149
ctypes.byref(nodes_ptr),
152150
ctypes.byref(nodes_count),
153151
), "failed to dump nodes raw"
154-
nodes_array = ctypes.cast(
155-
nodes_ptr, ctypes.POINTER(TypeTreeNodeNative * nodes_count.value)
156-
).contents
152+
nodes_array = ctypes.cast(nodes_ptr, ctypes.POINTER(TypeTreeNodeNative * nodes_count.value)).contents
157153
nodes = [
158154
TypeTreeNode(
159155
m_Type=node.m_Type.decode("ascii"),
@@ -174,9 +170,7 @@ def get_monobehavior_definitions(self) -> List[Tuple[str, str]]:
174170
ctypes.byref(names_ptr),
175171
ctypes.byref(names_cnt),
176172
), "failed to get module exports"
177-
ptr_array = ctypes.cast(
178-
names_ptr, ctypes.POINTER(ctypes.c_char_p * names_cnt.value)
179-
)
173+
ptr_array = ctypes.cast(names_ptr, ctypes.POINTER(ctypes.c_char_p * names_cnt.value))
180174
names = [name.decode("utf-8") for name in ptr_array.contents]
181175
DLL.TypeTreeGenerator_freeMonoBehaviorDefinitions(names_ptr, names_cnt)
182176
return [(module, fullname) for module, fullname in zip(names[::2], names[1::2])]
@@ -194,4 +188,4 @@ def get_loaded_dll_names(self) -> List[str]:
194188
return names
195189

196190

197-
__all__ = ("TypeTreeGenerator", "TypeTreeNode", "TypeTreeNodeNative")
191+
__all__ = ["TypeTreeGenerator", "TypeTreeNode", "TypeTreeNodeNative", "TypeTreeBackend"]

0 commit comments

Comments
 (0)