Implement ManagedImage and codec abstraction (#38)
This commit is contained in:
@@ -38,6 +38,9 @@ TARGETS = {
|
||||
# implementations. The generated module keeps catalog markers and re-exports
|
||||
# the hand-written type so coverage remains deterministic.
|
||||
NATIVE_TYPES = {
|
||||
"T:LibreMetaverse.Imaging.ITextureCodec": "crate::managed_image::ITextureCodec",
|
||||
"T:LibreMetaverse.Imaging.ManagedImage": "crate::managed_image::ManagedImage",
|
||||
"T:LibreMetaverse.Imaging.ManagedImage.ImageChannels": "crate::managed_image::ManagedImageImageChannels",
|
||||
"T:LibreMetaverse.StructuredData.OSD": "crate::model::OSD",
|
||||
"T:LibreMetaverse.StructuredData.OSDArray": "crate::model::OSDArray",
|
||||
"T:LibreMetaverse.StructuredData.OSDBinary": "crate::model::OSDBinary",
|
||||
@@ -507,7 +510,6 @@ PRIVATE_LAYOUTS = {
|
||||
"T:LibreMetaverse.StructuredData.OSDString": [("value", "String")],
|
||||
"T:LibreMetaverse.StructuredData.OSDUUID": [("value", "libremetaverse_types::UUID")],
|
||||
"T:LibreMetaverse.StructuredData.OSDUri": [("value", "libremetaverse_types::compat::Uri")],
|
||||
"T:LibreMetaverse.Imaging.ManagedImage": [("data", "Vec<u8>")],
|
||||
}
|
||||
VALUE_DERIVES = {
|
||||
"T:LibreMetaverse.Matrix4": "Clone, Copy, Debug",
|
||||
@@ -838,6 +840,11 @@ def render_type(item: dict, type_row: dict, member_rows: dict[str, dict[str, str
|
||||
base, arguments, _ = mapping.type_parts(interface)
|
||||
if base not in mapper.interfaces or not base.startswith("LibreMetaverse."):
|
||||
continue
|
||||
# Native traits can have required methods. Their concrete adapters
|
||||
# provide explicit implementations beside the adapter code instead
|
||||
# of receiving an invalid empty generated impl.
|
||||
if f"T:{base}" in NATIVE_TYPES:
|
||||
continue
|
||||
mapped_arguments = [mapper.type(argument, None, set(names)) for argument in arguments]
|
||||
trait_path = mapper.resolved[base] + generic_suffix(mapped_arguments)
|
||||
lines.append(f"impl{suffix} {trait_path} for {rust_name}{suffix} {{}}")
|
||||
|
||||
Reference in New Issue
Block a user