1
0

feat: update BMapSharp binding

This commit is contained in:
2026-02-06 17:52:13 +08:00
parent 37b8f2d023
commit c379c00a3f
4 changed files with 523 additions and 400 deletions

View File

@@ -32,6 +32,7 @@ CPP_PY_TYPE_MAP: dict[str, str] = {
"VXSHADE_MODE": "enum",
"VXCMPFUNC": "enum",
"VXMESH_LITMODE": "enum",
"CK_CAMERA_PROJECTION": "enum",
}
CS_ENUM_LIKE: set[str] = set((
@@ -46,6 +47,7 @@ CS_ENUM_LIKE: set[str] = set((
"VXSHADE_MODE",
"VXCMPFUNC",
"VXMESH_LITMODE",
"CK_CAMERA_PROJECTION",
))
@dataclass(frozen=True)
@@ -108,10 +110,12 @@ class RenderUtils:
# only allow 0 and 1 pointer level for string.
match vt_pointer_level:
case 0:
marshal_as = f'UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(BMStringMarshaler), MarshalCookie = "{direction_cookie}"'
marshaler = 'BMOwnedStringMarshaler' if param.is_input else 'BMStringMarshaler'
marshal_as = f'UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof({marshaler})'
cs_type = "string"
case 1:
marshal_as = f'UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(BMStringArrayMarshaler), MarshalCookie = "{direction_cookie}"'
marshaler = 'BMOwnedStringArrayMarshaler' if param.is_input else 'BMStringArrayMarshaler'
marshal_as = f'UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof({marshaler})'
cs_type = "string[]"
case "CKDWORD":
if vt_pointer_level == 0: