Skip to content

Commit 99cf3a0

Browse files
committed
feat(python): add get_loaded_dll_names
1 parent 1f3d664 commit 99cf3a0

1 file changed

Lines changed: 15 additions & 0 deletions

File tree

bindings/python/TypeTreeGeneratorAPI/TypeTreeGenerator.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import ctypes
22
import os
33
import platform
4+
import json
45
from typing import List, Optional, Tuple, Literal
56

67

@@ -90,6 +91,8 @@ def init_dll(asm_path: Optional[str] = None):
9091
ctypes.POINTER(ctypes.c_char_p),
9192
ctypes.c_int,
9293
]
94+
dll.TypeTreeGenerator_getLoadedDLLNames.argtypes = [ctypes.c_void_p]
95+
dll.TypeTreeGenerator_getLoadedDLLNames.restype = ctypes.c_void_p
9396

9497
dll.TypeTreeGenerator_del.argtypes = [ctypes.c_void_p]
9598
dll.FreeCoTaskMem.argtypes = [ctypes.c_void_p]
@@ -178,5 +181,17 @@ def get_monobehavior_definitions(self) -> List[Tuple[str, str]]:
178181
DLL.TypeTreeGenerator_freeMonoBehaviorDefinitions(names_ptr, names_cnt)
179182
return [(module, fullname) for module, fullname in zip(names[::2], names[1::2])]
180183

184+
def get_loaded_dll_names(self) -> List[str]:
185+
names_ptr = DLL.TypeTreeGenerator_getLoadedDLLNames(self.ptr)
186+
if not names_ptr:
187+
return []
188+
names_ptr_c = ctypes.cast(names_ptr, ctypes.c_char_p)
189+
if not names_ptr_c.value:
190+
DLL.FreeCoTaskMem(names_ptr)
191+
return []
192+
names = json.loads(names_ptr_c.value)
193+
DLL.FreeCoTaskMem(names_ptr)
194+
return names
195+
181196

182197
__all__ = ("TypeTreeGenerator", "TypeTreeNode", "TypeTreeNodeNative")

0 commit comments

Comments
 (0)