Files
MetaCrate/tools/generate_api_shims.py
Chili Palmer d5c318d280
All checks were successful
Native code generation / deterministic (push) Successful in 13m18s
Imaging and meshing gate / native (push) Successful in 4m12s
Native Rust workspace compile / compile (push) Successful in 4m12s
Implement native AIS inventory reconciliation (#63)
2026-08-10 06:41:29 +00:00

2624 lines
169 KiB
Python

#!/usr/bin/env python3
"""Generate callable, failure-only Rust shims from the authoritative catalog."""
from __future__ import annotations
import argparse
import csv
import json
import re
import subprocess
from collections import Counter
from pathlib import Path
import generate_rust_mapping as mapping
ROOT = Path(__file__).resolve().parents[1]
CATALOG = ROOT / "api/public-api.json"
LEDGER = ROOT / "api/RUST-MAPPING.tsv"
COVERAGE = ROOT / "api/SHIM-COVERAGE.md"
COMPILE_FIXTURE = ROOT / "tests/api-compile/src/lib.rs"
TARGETS = {
"LibreMetaverse.Imaging.Abstractions": ROOT / "crates/libremetaverse-imaging/src/generated.rs",
"LibreMetaverse.Imaging.Skia": ROOT / "crates/libremetaverse-imaging-skia/src/generated.rs",
"LibreMetaverse.LslTools": ROOT / "crates/libremetaverse-lsl-tools/src/generated.rs",
"LibreMetaverse.PrimMesher": ROOT / "crates/libremetaverse-prim-mesher/src/generated.rs",
"LibreMetaverse.RLV": ROOT / "crates/libremetaverse-rlv/src/generated.rs",
"LibreMetaverse.Rendering.MeshFoundry": ROOT / "crates/libremetaverse-rendering-mesh-foundry/src/generated.rs",
"LibreMetaverse.Rendering.Simple": ROOT / "crates/libremetaverse-rendering-simple/src/generated.rs",
"LibreMetaverse.Types": ROOT / "crates/libremetaverse-types/src/generated.rs",
"LibreMetaverse.StructuredData": ROOT / "crates/libremetaverse-structured-data/src/generated.rs",
"LibreMetaverse.Utilities": ROOT / "crates/libremetaverse-utilities/src/generated.rs",
"LibreMetaverse.Voice.Vivox": ROOT / "crates/libremetaverse-voice-vivox/src/generated.rs",
"LibreMetaverse.Voice.WebRTC": ROOT / "crates/libremetaverse-voice-webrtc/src/generated.rs",
}
# Types whose failure-only generated shells have been replaced by native Rust
# implementations. The generated module keeps catalog markers and re-exports
# the hand-written type so coverage remains deterministic.
NATIVE_TYPES = {
"T:LibreMetaverse.AISResponseMeta": "crate::inventory_ais::AISResponseMeta",
"T:LibreMetaverse.AccountLevelBenefits": "crate::login::AccountLevelBenefits",
"T:LibreMetaverse.AgentDisplayName": "crate::message_decoder::AgentDisplayName",
"T:LibreMetaverse.AgentDataReplyEventArgs": "crate::agent_messages::AgentDataReplyEventArgs",
"T:LibreMetaverse.AgentAccessEventArgs": "crate::agent_messages::AgentAccessEventArgs",
"T:LibreMetaverse.AgentExperiencesEventArgs": "crate::agent_messages::AgentExperiencesEventArgs",
"T:LibreMetaverse.AgentPreferencesEventArgs": "crate::agent_messages::AgentPreferencesEventArgs",
"T:LibreMetaverse.AgentManager.AgentMovement": "crate::agent_movement::AgentManagerAgentMovement",
"T:LibreMetaverse.AgentManager.AgentMovement.AgentCamera": "crate::agent_movement::AgentManagerAgentMovementAgentCamera",
"T:LibreMetaverse.AnimationsChangedEventArgs": "crate::agent_messages::AnimationsChangedEventArgs",
"T:LibreMetaverse.AvatarSitResponseEventArgs": "crate::agent_movement::AvatarSitResponseEventArgs",
"T:LibreMetaverse.AvatarRenderInfoEventArgs": "crate::agent_messages::AvatarRenderInfoEventArgs",
"T:LibreMetaverse.BalanceEventArgs": "crate::agent_messages::BalanceEventArgs",
"T:LibreMetaverse.CapabilitiesReceivedEventArgs": "crate::caps::CapabilitiesReceivedEventArgs",
"T:LibreMetaverse.Caps": "crate::caps::Caps",
"T:LibreMetaverse.CapsRateLimiter": "crate::caps_http::CapsRateLimiter",
"T:LibreMetaverse.CapsRateLimiterOptions": "crate::caps_http::CapsRateLimiterOptions",
"T:LibreMetaverse.Http.DownloadManager": "crate::download_manager::DownloadManager",
"T:LibreMetaverse.Http.DownloadRequest": "crate::download_manager::DownloadRequest",
"T:LibreMetaverse.Http.EventQueueClient": "crate::event_queue::EventQueueClient",
"T:LibreMetaverse.Http.EventQueueClient.ConnectedCallback": "crate::event_queue::EventQueueClientConnectedCallback",
"T:LibreMetaverse.Http.EventQueueClient.EventCallback": "crate::event_queue::EventQueueClientEventCallback",
"T:LibreMetaverse.HttpCapsClient": "crate::caps_http::HttpCapsClient",
"T:LibreMetaverse.HttpCapsClient.ProgressReport": "crate::caps_http::HttpCapsClientProgressReport",
"T:LibreMetaverse.InstantMessage": "crate::agent_manager::InstantMessage",
"T:LibreMetaverse.InstantMessageEventArgs": "crate::agent_manager::InstantMessageEventArgs",
"T:LibreMetaverse.Inventory": "crate::inventory::Inventory",
"T:LibreMetaverse.InventoryAnimation": "crate::inventory::InventoryAnimation",
"T:LibreMetaverse.InventoryAttachment": "crate::inventory::InventoryAttachment",
"T:LibreMetaverse.InventoryBase": "crate::inventory::InventoryBase",
"T:LibreMetaverse.InventoryCallingCard": "crate::inventory::InventoryCallingCard",
"T:LibreMetaverse.InventoryCategory": "crate::inventory::InventoryCategory",
"T:LibreMetaverse.InventoryFolder": "crate::inventory::InventoryFolder",
"T:LibreMetaverse.InventoryGesture": "crate::inventory::InventoryGesture",
"T:LibreMetaverse.InventoryItem": "crate::inventory::InventoryItem",
"T:LibreMetaverse.InventoryLSL": "crate::inventory::InventoryLSL",
"T:LibreMetaverse.InventoryLandmark": "crate::inventory::InventoryLandmark",
"T:LibreMetaverse.InventoryMaterial": "crate::inventory::InventoryMaterial",
"T:LibreMetaverse.InventoryNode": "crate::inventory::InventoryNode",
"T:LibreMetaverse.InventoryNodeDictionary": "crate::inventory::InventoryNodeDictionary",
"T:LibreMetaverse.InventoryNotecard": "crate::inventory::InventoryNotecard",
"T:LibreMetaverse.InventoryObject": "crate::inventory::InventoryObject",
"T:LibreMetaverse.InventoryObjectAddedEventArgs": "crate::inventory::InventoryObjectAddedEventArgs",
"T:LibreMetaverse.InventoryObjectRemovedEventArgs": "crate::inventory::InventoryObjectRemovedEventArgs",
"T:LibreMetaverse.InventoryObjectUpdatedEventArgs": "crate::inventory::InventoryObjectUpdatedEventArgs",
"T:LibreMetaverse.InventoryObjectOfferedEventArgs": "crate::inventory_manager::InventoryObjectOfferedEventArgs",
"T:LibreMetaverse.InventoryManager.CopyItemsResult": "crate::inventory_manager::InventoryManagerCopyItemsResult",
"T:LibreMetaverse.InventoryManager.FolderUpdateResult": "crate::inventory_manager::InventoryManagerFolderUpdateResult",
"T:LibreMetaverse.ItemReceivedEventArgs": "crate::inventory_manager::ItemReceivedEventArgs",
"T:LibreMetaverse.InventorySettings": "crate::inventory::InventorySettings",
"T:LibreMetaverse.InventorySnapshot": "crate::inventory::InventorySnapshot",
"T:LibreMetaverse.InventorySound": "crate::inventory::InventorySound",
"T:LibreMetaverse.InventoryTexture": "crate::inventory::InventoryTexture",
"T:LibreMetaverse.InventoryWearable": "crate::inventory::InventoryWearable",
"T:LibreMetaverse.Permissions": "crate::inventory::Permissions",
"T:LibreMetaverse.FindObjectByPathReplyEventArgs": "crate::inventory_manager::FindObjectByPathReplyEventArgs",
"T:LibreMetaverse.FolderUpdatedEventArgs": "crate::inventory_manager::FolderUpdatedEventArgs",
"T:LibreMetaverse.SaveAssetToInventoryEventArgs": "crate::inventory_manager::SaveAssetToInventoryEventArgs",
"T:LibreMetaverse.ScriptRunningReplyEventArgs": "crate::inventory_manager::ScriptRunningReplyEventArgs",
"T:LibreMetaverse.TaskInventoryReplyEventArgs": "crate::inventory_manager::TaskInventoryReplyEventArgs",
"T:LibreMetaverse.TaskItemReceivedEventArgs": "crate::inventory_manager::TaskItemReceivedEventArgs",
"T:LibreMetaverse.ChatEventArgs": "crate::agent_messages::ChatEventArgs",
"T:LibreMetaverse.ChatSessionMember": "crate::agent_messages::ChatSessionMember",
"T:LibreMetaverse.ChatSessionMemberAddedEventArgs": "crate::agent_messages::ChatSessionMemberAddedEventArgs",
"T:LibreMetaverse.ChatSessionMemberLeftEventArgs": "crate::agent_messages::ChatSessionMemberLeftEventArgs",
"T:LibreMetaverse.CameraConstraintEventArgs": "crate::agent_movement::CameraConstraintEventArgs",
"T:LibreMetaverse.Assets.AssetGesture": "crate::gesture::AssetGesture",
"T:LibreMetaverse.Assets.GestureStep": "crate::gesture::GestureStep",
"T:LibreMetaverse.Assets.GestureStepAnimation": "crate::gesture::GestureStepAnimation",
"T:LibreMetaverse.Assets.GestureStepChat": "crate::gesture::GestureStepChat",
"T:LibreMetaverse.Assets.GestureStepEOF": "crate::gesture::GestureStepEOF",
"T:LibreMetaverse.Assets.GestureStepSound": "crate::gesture::GestureStepSound",
"T:LibreMetaverse.Assets.GestureStepWait": "crate::gesture::GestureStepWait",
"T:LibreMetaverse.ExperienceInfoEventArgs": "crate::agent_messages::ExperienceInfoEventArgs",
"T:LibreMetaverse.ExperiencePreferencesEventArgs": "crate::agent_messages::ExperiencePreferencesEventArgs",
"T:LibreMetaverse.GroupChatJoinedEventArgs": "crate::agent_messages::GroupChatJoinedEventArgs",
"T:LibreMetaverse.RegionExperiencesEventArgs": "crate::agent_messages::RegionExperiencesEventArgs",
"T:LibreMetaverse.SetDisplayNameReplyEventArgs": "crate::agent_messages::SetDisplayNameReplyEventArgs",
"T:LibreMetaverse.TeleportEventArgs": "crate::agent_movement::TeleportEventArgs",
"T:LibreMetaverse.ProductInfoEventArgs": "crate::agent_messages::ProductInfoEventArgs",
"T:LibreMetaverse.RegionCrossedEventArgs": "crate::agent_movement::RegionCrossedEventArgs",
"T:LibreMetaverse.RegionCrossingPredictionEventArgs": "crate::agent_movement::RegionCrossingPredictionEventArgs",
"T:LibreMetaverse.ViewerBenefitsEventArgs": "crate::agent_messages::ViewerBenefitsEventArgs",
"T:LibreMetaverse.Messages.Linden.ProductInfoRequestMessage": "crate::agent_manager::ProductInfoRequestMessage",
"T:LibreMetaverse.Messages.Linden.ProductInfoRequestMessage.ProductInfo": "crate::agent_manager::ProductInfoRequestMessageProductInfo",
"T:LibreMetaverse.Messages.Linden.ExperienceListMessage": "crate::agent_messages::ExperienceListMessage",
"T:LibreMetaverse.Messages.Linden.ExperiencePreferencesMessage": "crate::agent_messages::ExperiencePreferencesMessage",
"T:LibreMetaverse.Messages.Linden.RegionExperiencesMessage": "crate::agent_messages::RegionExperiencesMessage",
"T:LibreMetaverse.Messages.Linden.AgentPreferencesMessage": "crate::agent_messages::AgentPreferencesMessage",
"T:LibreMetaverse.Messages.Linden.AvatarRenderInfoMessage": "crate::agent_messages::AvatarRenderInfoMessage",
"T:LibreMetaverse.Messages.Linden.AvatarRenderInfoMessage.AvatarInfo": "crate::agent_messages::AvatarRenderInfoMessageAvatarInfo",
"T:LibreMetaverse.Messages.Linden.ExperienceInfo": "crate::agent_messages::ExperienceInfo",
"T:LibreMetaverse.Messages.Linden.ExperienceInfoMessage": "crate::agent_messages::ExperienceInfoMessage",
"T:LibreMetaverse.Messages.Linden.ViewerBenefitsMessage": "crate::agent_messages::ViewerBenefitsMessage",
"T:LibreMetaverse.Messages.Linden.ViewerBenefitsMessage.BenefitPackage": "crate::agent_messages::ViewerBenefitsMessageBenefitPackage",
"T:LibreMetaverse.MoneyBalanceReplyEventArgs": "crate::agent_messages::MoneyBalanceReplyEventArgs",
"T:LibreMetaverse.NavMeshStatusUpdateEventArgs": "crate::agent_messages::NavMeshStatusUpdateEventArgs",
"T:LibreMetaverse.LoginCredential": "crate::login::LoginCredential",
"T:LibreMetaverse.LoginException": "crate::login::LoginException",
"T:LibreMetaverse.LoginParams": "crate::login::LoginParams",
"T:LibreMetaverse.LoginProgressEventArgs": "crate::login::LoginProgressEventArgs",
"T:LibreMetaverse.LoginResponseData": "crate::login::LoginResponseData",
"T:LibreMetaverse.LoginResponseData.ParseMessage": "crate::login::LoginResponseDataParseMessage",
"T:LibreMetaverse.LoginResponseData.ParseResult": "crate::login::LoginResponseDataParseResult",
"T:LibreMetaverse.LoggedOutEventArgs": "crate::network_manager::LoggedOutEventArgs",
"T:LibreMetaverse.MediaEntry": "crate::message_decoder::MediaEntry",
"T:LibreMetaverse.Caps.EventQueueCallback": "crate::network_manager::CapsEventQueueCallback",
"T:LibreMetaverse.CapsEventDictionary": "crate::network_manager::CapsEventDictionary",
"T:LibreMetaverse.DisconnectedEventArgs": "crate::network_manager::DisconnectedEventArgs",
"T:LibreMetaverse.EventQueueRunningEventArgs": "crate::network_manager::EventQueueRunningEventArgs",
"T:LibreMetaverse.GenericStreamingMessageEventArgs": "crate::network_manager::GenericStreamingMessageEventArgs",
"T:LibreMetaverse.NetworkManager.IncomingPacket": "crate::network_manager::NetworkManagerIncomingPacket",
"T:LibreMetaverse.NetworkManager.OutgoingPacket": "crate::network_manager::NetworkManagerOutgoingPacket",
"T:LibreMetaverse.NetworkManager.LoginResponseCallback": "crate::login::NetworkManagerLoginResponseCallback",
"T:LibreMetaverse.PacketEventDictionary": "crate::network_manager::PacketEventDictionary",
"T:LibreMetaverse.PacketReceivedEventArgs": "crate::network_manager::PacketReceivedEventArgs",
"T:LibreMetaverse.PacketSentEventArgs": "crate::network_manager::PacketSentEventArgs",
"T:LibreMetaverse.SimChangedEventArgs": "crate::network_manager::SimChangedEventArgs",
"T:LibreMetaverse.SimConnectedEventArgs": "crate::network_manager::SimConnectedEventArgs",
"T:LibreMetaverse.SimConnectingEventArgs": "crate::network_manager::SimConnectingEventArgs",
"T:LibreMetaverse.SimDisconnectedEventArgs": "crate::network_manager::SimDisconnectedEventArgs",
"T:LibreMetaverse.Simulator.SimStats": "crate::sim_stats::SimulatorSimStats",
"T:LibreMetaverse.Messages.Linden.EventMessageBlock": "crate::event_queue::EventMessageBlock",
"T:LibreMetaverse.Messages.Linden.EventQueueAck": "crate::event_queue::EventQueueAck",
"T:LibreMetaverse.Messages.Linden.EventQueueEvent": "crate::event_queue::EventQueueEvent",
"T:LibreMetaverse.Messages.Linden.EventQueueEvent.QueueEvent": "crate::event_queue::EventQueueEventQueueEvent",
"T:LibreMetaverse.Messages.Linden.EventQueueGetMessage": "crate::event_queue::EventQueueGetMessage",
"T:LibreMetaverse.Messages.Linden.AttachmentResourcesMessage": "crate::message_decoder::AttachmentResourcesMessage",
"T:LibreMetaverse.Primitive.PhysicsProperties": "crate::message_decoder::PrimitivePhysicsProperties",
"T:LibreMetaverse.ArchetypeParam": "crate::genepool_catalog::ArchetypeParam",
"T:LibreMetaverse.AttentionData": "crate::attention_catalog::AttentionData",
"T:LibreMetaverse.AttentionSet": "crate::attention_catalog::AttentionSet",
"T:LibreMetaverse.BitPack": "crate::bit_pack::BitPack",
"T:LibreMetaverse.DrivenParamInfo": "crate::visual_catalog::DrivenParamInfo",
"T:LibreMetaverse.GrassDefinition": "crate::foliage_catalog::GrassDefinition",
"T:LibreMetaverse.GrassDefinitions": "crate::foliage_catalog::GrassDefinitions",
"T:LibreMetaverse.Genepool": "crate::genepool_catalog::Genepool",
"T:LibreMetaverse.GenepoolArchetype": "crate::genepool_catalog::GenepoolArchetype",
"T:LibreMetaverse.LindenAttentions": "crate::attention_catalog::LindenAttentions",
"T:LibreMetaverse.Packets.PacketType": "crate::packet_catalog::PacketType",
"T:LibreMetaverse.PrimMesher.Coord": "crate::prim_mesher::Coord",
"T:LibreMetaverse.PrimMesher.Face": "crate::prim_mesher::Face",
"T:LibreMetaverse.PrimMesher.Path": "crate::prim_mesher::Path",
"T:LibreMetaverse.PrimMesher.PathNode": "crate::prim_mesher::PathNode",
"T:LibreMetaverse.PrimMesher.PrimMesh": "crate::prim_mesher::PrimMesh",
"T:LibreMetaverse.PrimMesher.Profile": "crate::prim_mesher::Profile",
"T:LibreMetaverse.PrimMesher.Quat": "crate::prim_mesher::Quat",
"T:LibreMetaverse.PrimMesher.UVCoord": "crate::prim_mesher::UVCoord",
"T:LibreMetaverse.PrimMesher.ViewerFace": "crate::prim_mesher::ViewerFace",
"T:LibreMetaverse.PrimMesher.ObjMesh": "crate::obj_mesh::ObjMesh",
"T:LibreMetaverse.PrimMesher.SculptMap": "crate::sculpt::SculptMap",
"T:LibreMetaverse.PrimMesher.SculptMesh": "crate::sculpt::SculptMesh",
"T:LibreMetaverse.PrimMesher.VertexIndexer": "crate::vertex_indexer::VertexIndexer",
"T:LibreMetaverse.PrimMesher.ViewerPolygon": "crate::vertex_indexer::ViewerPolygon",
"T:LibreMetaverse.PrimMesher.ViewerVertex": "crate::vertex_indexer::ViewerVertex",
"T:LibreMetaverse.Imaging.Skia.SkiaTextureCodec": "crate::skia_codec::SkiaTextureCodec",
"T:LibreMetaverse.Imaging.ManagedImageCreator": "crate::j2k::ManagedImageCreator",
"T:LibreMetaverse.Imaging.ManagedImageInterleavedExtensions": "crate::j2k::ManagedImageInterleavedExtensions",
"T:LibreMetaverse.Imaging.Targa": "crate::targa::Targa",
"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",
"T:LibreMetaverse.StructuredData.OSDBoolean": "crate::model::OSDBoolean",
"T:LibreMetaverse.StructuredData.OSDDate": "crate::model::OSDDate",
"T:LibreMetaverse.StructuredData.OSDException": "crate::model::OSDException",
"T:LibreMetaverse.StructuredData.OSDFormat": "crate::model::OSDFormat",
"T:LibreMetaverse.StructuredData.OSDInteger": "crate::model::OSDInteger",
"T:LibreMetaverse.StructuredData.OSDLlsdXml": "crate::model::OSDLlsdXml",
"T:LibreMetaverse.StructuredData.OSDMap": "crate::model::OSDMap",
"T:LibreMetaverse.StructuredData.OSDReal": "crate::model::OSDReal",
"T:LibreMetaverse.StructuredData.OSDString": "crate::model::OSDString",
"T:LibreMetaverse.StructuredData.OSDType": "crate::model::OSDType",
"T:LibreMetaverse.StructuredData.OSDUUID": "crate::model::OSDUUID",
"T:LibreMetaverse.StructuredData.OSDUri": "crate::model::OSDUri",
"T:LibreMetaverse.CacheDictionary`2": "crate::collections::CacheDictionary",
"T:LibreMetaverse.CacheDictionary`2.CacheDictionaryEnumerator": "crate::collections::CacheDictionaryCacheDictionaryEnumerator",
"T:LibreMetaverse.Color4": "crate::color4::Color4",
"T:LibreMetaverse.CRC32": "crate::crc32::CRC32",
"T:LibreMetaverse.DoubleDictionary`3": "crate::collections::DoubleDictionary",
"T:LibreMetaverse.EmptyRemovalStrategy`1": "crate::collections::EmptyRemovalStrategy",
"T:LibreMetaverse.EnumInfoAttribute": "crate::enum_compat::EnumInfoAttribute",
"T:LibreMetaverse.EnumInfoExtensions": "crate::enum_compat::EnumInfoExtensions",
"T:LibreMetaverse.ExpiringCache`2": "crate::collections::ExpiringCache",
"T:LibreMetaverse.ICacheDictionaryRemovalStrategy`1": "crate::collections::ICacheDictionaryRemovalStrategy",
"T:LibreMetaverse.LruRemovalStrategy`1": "crate::collections::LruRemovalStrategy",
"T:LibreMetaverse.Matrix4": "crate::geometry::Matrix4",
"T:LibreMetaverse.MruRemovalStrategy`1": "crate::collections::MruRemovalStrategy",
"T:LibreMetaverse.MultiValueDictionary`2": "crate::collections::MultiValueDictionary",
"T:LibreMetaverse.Quaternion": "crate::geometry::Quaternion",
"T:LibreMetaverse.Ray": "crate::vectors::Ray",
"T:LibreMetaverse.TokenBucket": "crate::collections::TokenBucket",
"T:LibreMetaverse.UUID": "crate::uuid::UUID",
"T:LibreMetaverse.Vector2": "crate::vectors::Vector2",
"T:LibreMetaverse.Vector3": "crate::vectors::Vector3",
"T:LibreMetaverse.Vector3d": "crate::vectors::Vector3d",
"T:LibreMetaverse.Vector4": "crate::vectors::Vector4",
"T:LibreMetaverse.Utils": "crate::utils::Utils",
"T:LibreMetaverse.SkeletalBoneInfo": "crate::visual_catalog::SkeletalBoneInfo",
"T:LibreMetaverse.TreeDefinition": "crate::foliage_catalog::TreeDefinition",
"T:LibreMetaverse.TreeDefinitions": "crate::foliage_catalog::TreeDefinitions",
"T:LibreMetaverse.AgentThrottle": "crate::udp_transport::AgentThrottle",
"T:LibreMetaverse.IncomingPacketIDCollection": "crate::udp_transport::IncomingPacketIDCollection",
"T:LibreMetaverse.UDPBase": "crate::udp_transport::UDPBase",
"T:LibreMetaverse.UDPPacketBuffer": "crate::udp_transport::UDPPacketBuffer",
"T:LibreMetaverse.VisualAlphaParam": "crate::visual_catalog::VisualAlphaParam",
"T:LibreMetaverse.VisualColorParam": "crate::visual_catalog::VisualColorParam",
"T:LibreMetaverse.VisualParam": "crate::visual_catalog::VisualParam",
"T:LibreMetaverse.VisualParams": "crate::visual_catalog::VisualParams",
"T:LibreMetaverse.VolumeMorphInfo": "crate::visual_catalog::VolumeMorphInfo",
"T:LibreMetaverse.Rendering.CollisionVolume": "crate::skeleton::CollisionVolume",
"T:LibreMetaverse.Rendering.Joint": "crate::skeleton::Joint",
"T:LibreMetaverse.Rendering.JointBase": "crate::skeleton::JointBase",
"T:LibreMetaverse.Rendering.LindenSkeleton": "crate::skeleton::LindenSkeleton",
}
# Native declarations whose cataloged method implementations are still emitted
# below. This is used for static namespace types such as OSDParser: the type is
# hand-written, while its fixed public methods remain generator-audited.
NATIVE_DECLARATIONS = {
"T:LibreMetaverse.AgentManager": "crate::agent_manager::AgentManager",
"T:LibreMetaverse.GridClient": "crate::client_core::GridClient",
"T:LibreMetaverse.InventoryManager": "crate::inventory_manager::InventoryManager",
"T:LibreMetaverse.InventoryAISClient": "crate::inventory_ais::InventoryAISClient",
"T:LibreMetaverse.NetworkManager": "crate::network_manager::NetworkManager",
"T:LibreMetaverse.Settings": "crate::client_core::Settings",
"T:LibreMetaverse.Simulator": "crate::network_manager::Simulator",
"T:LibreMetaverse.StructuredData.OSDParser": "crate::model::OSDParser",
}
NATIVE_MEMBER_BODIES = {
"M:LibreMetaverse.Avatar.AvatarProperties.FromOSD(LibreMetaverse.StructuredData.OSD)":
"crate::agent_messages::avatar_properties_from_osd(o)",
"M:LibreMetaverse.Avatar.AvatarProperties.GetOSD":
"crate::agent_messages::avatar_properties_get_osd(self)",
"P:LibreMetaverse.Avatar.AvatarProperties.AllowPublish":
"self.flags.0 & crate::ProfileFlags::ALLOW_PUBLISH.0 != 0",
"P:LibreMetaverse.Avatar.AvatarProperties.AllowPublish#set":
"if value { self.flags.0 |= crate::ProfileFlags::ALLOW_PUBLISH.0 } else { self.flags.0 &= !crate::ProfileFlags::ALLOW_PUBLISH.0 }",
"P:LibreMetaverse.Avatar.AvatarProperties.Identified":
"self.flags.0 & crate::ProfileFlags::IDENTIFIED.0 != 0",
"P:LibreMetaverse.Avatar.AvatarProperties.Identified#set":
"if value { self.flags.0 |= crate::ProfileFlags::IDENTIFIED.0 } else { self.flags.0 &= !crate::ProfileFlags::IDENTIFIED.0 }",
"P:LibreMetaverse.Avatar.AvatarProperties.MaturePublish":
"self.flags.0 & crate::ProfileFlags::MATURE_PUBLISH.0 != 0",
"P:LibreMetaverse.Avatar.AvatarProperties.MaturePublish#set":
"if value { self.flags.0 |= crate::ProfileFlags::MATURE_PUBLISH.0 } else { self.flags.0 &= !crate::ProfileFlags::MATURE_PUBLISH.0 }",
"P:LibreMetaverse.Avatar.AvatarProperties.Online":
"self.flags.0 & crate::ProfileFlags::ONLINE.0 != 0",
"P:LibreMetaverse.Avatar.AvatarProperties.Online#set":
"if value { self.flags.0 |= crate::ProfileFlags::ONLINE.0 } else { self.flags.0 &= !crate::ProfileFlags::ONLINE.0 }",
"P:LibreMetaverse.Avatar.AvatarProperties.Transacted":
"self.flags.0 & crate::ProfileFlags::TRANSACTED.0 != 0",
"P:LibreMetaverse.Avatar.AvatarProperties.Transacted#set":
"if value { self.flags.0 |= crate::ProfileFlags::TRANSACTED.0 } else { self.flags.0 &= !crate::ProfileFlags::TRANSACTED.0 }",
"M:LibreMetaverse.Avatar.Interests.FromOSD(LibreMetaverse.StructuredData.OSD)":
"crate::agent_messages::avatar_interests_from_osd(o)",
"M:LibreMetaverse.Avatar.Interests.GetOSD":
"crate::agent_messages::avatar_interests_get_osd(self)",
"M:LibreMetaverse.TransactionInfo.#ctor":
"Ok(crate::TransactionInfo { amount: 0, dest_id: libremetaverse_types::UUID::zero(), is_dest_group: false, is_source_group: false, item_description: String::new(), source_id: libremetaverse_types::UUID::zero(), transaction_type: 0 })",
"M:LibreMetaverse.AgentSettings.#ctor":
"Ok(crate::client_core::agent_settings_defaults())",
"M:LibreMetaverse.AssetCacheSettings.#ctor":
"Ok(crate::client_core::asset_cache_settings_defaults())",
"M:LibreMetaverse.ConnectionSettings.#ctor":
"Ok(crate::client_core::connection_settings_defaults())",
"M:LibreMetaverse.LoggingSettings.#ctor":
"Ok(crate::client_core::logging_settings_defaults())",
"M:LibreMetaverse.PacketSettings.#ctor":
"Ok(crate::client_core::packet_settings_defaults())",
"M:LibreMetaverse.ParcelSettings.#ctor":
"Ok(crate::client_core::parcel_settings_defaults())",
"M:LibreMetaverse.TexturePipelineSettings.#ctor":
"Ok(crate::client_core::texture_pipeline_settings_defaults())",
"M:LibreMetaverse.TimingSettings.#ctor":
"Ok(crate::client_core::timing_settings_defaults())",
"M:LibreMetaverse.WorldSettings.#ctor":
"Ok(crate::client_core::world_settings_defaults())",
"M:LibreMetaverse.GridClient.#ctor":
"crate::client_core::GridClientBuilder::default().build().map_err(Into::into)",
"M:LibreMetaverse.GridClient.Dispose":
"self.shutdown().map_err(Into::into)",
"M:LibreMetaverse.GridClient.DisposeAsync":
"self.shutdown().map_err(Into::into)",
"M:LibreMetaverse.GridClient.ToString":
"String::new()",
"P:LibreMetaverse.GridClient.CapsRateLimiter":
"self.native_caps_rate_limiter()",
"P:LibreMetaverse.GridClient.CapsRateLimiter#set":
"self.native_set_caps_rate_limiter(value)",
"P:LibreMetaverse.GridClient.HttpCapsClient":
"self.native_http_caps_client()",
"P:LibreMetaverse.GridClient.HttpCapsClient#set":
"self.native_set_http_caps_client(value)",
"P:LibreMetaverse.GridClient.Inventory":
"self.native_inventory().unwrap_or_else(|_| panic!(\"failed to construct InventoryManager\"))",
"P:LibreMetaverse.GridClient.Inventory#set":
"self.native_set_inventory(value)",
"P:LibreMetaverse.GridClient.AisClient":
"self.native_ais_client().unwrap_or_else(|_| panic!(\"failed to construct InventoryAISClient\"))",
"P:LibreMetaverse.GridClient.AisClient#set":
"self.native_set_ais_client(value)",
"P:LibreMetaverse.GridClient.Network":
"self.native_network().unwrap_or_else(|_| panic!(\"failed to construct NetworkManager\"))",
"P:LibreMetaverse.GridClient.Network#set":
"self.native_set_network(value)",
"P:LibreMetaverse.GridClient.Self":
"self.native_self()",
"E:LibreMetaverse.InventoryManager.FindObjectByPathReply":
"self.native_subscribe_find_object_by_path_reply(handler)",
"E:LibreMetaverse.InventoryManager.FolderUpdated":
"self.native_subscribe_folder_updated(handler)",
"E:LibreMetaverse.InventoryManager.InventoryObjectOffered":
"self.native_subscribe_inventory_object_offered(handler)",
"E:LibreMetaverse.InventoryManager.ItemReceived":
"self.native_subscribe_item_received(handler)",
"E:LibreMetaverse.InventoryManager.SaveAssetToInventory":
"self.native_subscribe_save_asset_to_inventory(handler)",
"E:LibreMetaverse.InventoryManager.ScriptRunningReply":
"self.native_subscribe_script_running_reply(handler)",
"E:LibreMetaverse.InventoryManager.TaskInventoryReply":
"self.native_subscribe_task_inventory_reply(handler)",
"E:LibreMetaverse.InventoryManager.TaskItemReceived":
"self.native_subscribe_task_item_received(handler)",
"F:LibreMetaverse.InventoryManager.MAGIC_ID":
"crate::inventory_manager::InventoryManager::native_magic_id()",
"M:LibreMetaverse.InventoryManager.#ctor(LibreMetaverse.GridClient)":
"crate::inventory_manager::InventoryManager::native_new(client)",
"F:LibreMetaverse.InventoryAISClient.INVENTORY_CAP_NAME":
"crate::inventory_ais::InventoryAISClient::INVENTORY_CAP_NAME",
"F:LibreMetaverse.InventoryAISClient.LIBRARY_CAP_NAME":
"crate::inventory_ais::InventoryAISClient::LIBRARY_CAP_NAME",
"M:LibreMetaverse.InventoryAISClient.#ctor(LibreMetaverse.GridClient)":
"crate::inventory_ais::InventoryAISClient::native_new(client)",
"P:LibreMetaverse.InventoryAISClient.IsAvailable": "self.native_is_available()",
"M:LibreMetaverse.InventoryAISClient.CreateInventoryAsync(LibreMetaverse.UUID,LibreMetaverse.StructuredData.OSD,System.Boolean,System.Threading.CancellationToken)":
"self.native_create_inventory(parent_uuid, new_inventory, create_link, cancellation_token).await",
"M:LibreMetaverse.InventoryAISClient.SlamFolderAsync(LibreMetaverse.UUID,LibreMetaverse.StructuredData.OSD,System.Threading.CancellationToken)":
"self.native_slam_folder(folder_uuid, new_inventory, cancellation_token).await",
"M:LibreMetaverse.InventoryAISClient.RemoveCategoryAsync(LibreMetaverse.UUID,System.Threading.CancellationToken)":
"self.native_remove_category(category_uuid, cancellation_token).await",
"M:LibreMetaverse.InventoryAISClient.RemoveItemAsync(LibreMetaverse.UUID,System.Threading.CancellationToken)":
"self.native_remove_item(item_uuid, cancellation_token).await",
"M:LibreMetaverse.InventoryAISClient.CopyLibraryCategoryAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Boolean,System.Threading.CancellationToken)":
"self.native_copy_library_category(source_uuid, dest_uuid, copy_subfolders, cancellation_token).await",
"M:LibreMetaverse.InventoryAISClient.PurgeDescendentsAsync(LibreMetaverse.UUID,System.Threading.CancellationToken)":
"self.native_purge_descendents(category_uuid, cancellation_token).await",
"M:LibreMetaverse.InventoryAISClient.UpdateCategoryAsync(LibreMetaverse.UUID,LibreMetaverse.StructuredData.OSD,System.Threading.CancellationToken)":
"self.native_update_category(category_uuid, updates, cancellation_token).await",
"M:LibreMetaverse.InventoryAISClient.UpdateItemAsync(LibreMetaverse.UUID,LibreMetaverse.StructuredData.OSD,System.Threading.CancellationToken)":
"self.native_update_item(item_uuid, updates, cancellation_token).await",
"M:LibreMetaverse.InventoryAISClient.CopyCategoryAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Boolean,System.Threading.CancellationToken)":
"self.native_copy_category(source_uuid, dest_uuid, simulate, cancellation_token).await",
"M:LibreMetaverse.InventoryAISClient.MoveCategoryAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Threading.CancellationToken)":
"self.native_move_category(source_uuid, dest_uuid, cancellation_token).await",
"M:LibreMetaverse.InventoryAISClient.PutCategoryChildrenAsync(System.String,LibreMetaverse.StructuredData.OSD,System.Threading.CancellationToken)":
"self.native_put_category_children(category, children_payload, cancellation_token).await",
"M:LibreMetaverse.InventoryAISClient.CopyCategoryChildrenAsync(System.String,LibreMetaverse.UUID,System.Threading.CancellationToken)":
"self.native_copy_category_children(category, dest_uuid, cancellation_token).await",
"M:LibreMetaverse.InventoryAISClient.MoveCategoryChildrenAsync(System.String,LibreMetaverse.UUID,System.Threading.CancellationToken)":
"self.native_move_category_children(category, dest_uuid, cancellation_token).await",
"M:LibreMetaverse.InventoryAISClient.DeleteCategoryChildrenAsync(System.String,System.Threading.CancellationToken)":
"self.native_delete_category_children(category, cancellation_token).await",
"M:LibreMetaverse.InventoryAISClient.PutCategoryLinksAsync(System.String,LibreMetaverse.StructuredData.OSD,System.Threading.CancellationToken)":
"self.native_put_category_links(category, links_payload, cancellation_token).await",
"M:LibreMetaverse.InventoryAISClient.CopyCategoryLinksAsync(System.String,LibreMetaverse.UUID,System.Threading.CancellationToken)":
"self.native_copy_category_links(category, dest_uuid, cancellation_token).await",
"M:LibreMetaverse.InventoryAISClient.MoveCategoryLinksAsync(System.String,LibreMetaverse.UUID,System.Threading.CancellationToken)":
"self.native_move_category_links(category, dest_uuid, cancellation_token).await",
"M:LibreMetaverse.InventoryAISClient.DeleteCategoryLinksAsync(System.String,System.Threading.CancellationToken)":
"self.native_delete_category_links(category, cancellation_token).await",
"M:LibreMetaverse.InventoryAISClient.CopyItemAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Threading.CancellationToken)":
"self.native_copy_item(item_uuid, dest_uuid, cancellation_token).await",
"M:LibreMetaverse.InventoryAISClient.MoveItemAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Threading.CancellationToken)":
"self.native_move_item(item_uuid, dest_uuid, cancellation_token).await",
"M:LibreMetaverse.InventoryAISClient.GetCategoryAsync(System.String,System.Threading.CancellationToken)":
"self.native_get_category(category, cancellation_token).await",
"M:LibreMetaverse.InventoryAISClient.GetCategoryChildrenAsync(System.String,System.Int32,System.Boolean,System.Threading.CancellationToken)":
"self.native_get_category_children(category, depth, recursive, cancellation_token).await",
"M:LibreMetaverse.InventoryAISClient.FetchCategoryCategoriesAsync(LibreMetaverse.UUID,System.Boolean,System.Boolean,System.Int32,System.Threading.CancellationToken)":
"self.native_fetch_category_categories(cat_id, use_inventory_cap, recursive, depth, cancellation_token).await",
"M:LibreMetaverse.InventoryAISClient.FetchCategorySubsetAsync(LibreMetaverse.UUID,System.Collections.Generic.IEnumerable{LibreMetaverse.UUID},System.Boolean,System.Boolean,System.Int32,System.Threading.CancellationToken)":
"self.native_fetch_category_subset(cat_id, specific_children, use_inventory_cap, recursive, depth, cancellation_token).await",
"M:LibreMetaverse.InventoryAISClient.GetCategoryLinksAsync(System.String,System.Threading.CancellationToken)":
"self.native_get_category_links(category, cancellation_token).await",
"M:LibreMetaverse.InventoryAISClient.FetchItemAsync(LibreMetaverse.UUID,System.Threading.CancellationToken)":
"self.native_fetch_item(item_uuid, cancellation_token).await",
"M:LibreMetaverse.InventoryAISClient.FetchCOFAsync(System.Threading.CancellationToken)":
"self.native_fetch_cof(cancellation_token).await",
"M:LibreMetaverse.InventoryAISClient.FetchOrphansAsync(System.Threading.CancellationToken)":
"self.native_fetch_orphans(cancellation_token).await",
"M:LibreMetaverse.InventoryAISClient.EmptyTrashAsync(System.Threading.CancellationToken)":
"self.native_empty_trash(cancellation_token).await",
"M:LibreMetaverse.InventoryAISClient.ParseItemsFromEmbedded(LibreMetaverse.StructuredData.OSDMap)":
"self.native_parse_items_from_embedded(response)",
"M:LibreMetaverse.InventoryAISClient.ParseFoldersFromEmbedded(LibreMetaverse.StructuredData.OSDMap)":
"self.native_parse_folders_from_embedded(response)",
"M:LibreMetaverse.InventoryAISClient.ParseLinksFromEmbedded(LibreMetaverse.StructuredData.OSDMap)":
"self.native_parse_links_from_embedded(response)",
"M:LibreMetaverse.InventoryAISClient.ParseEmbedded(LibreMetaverse.StructuredData.OSDMap,System.Collections.Generic.List{LibreMetaverse.InventoryFolder}@,System.Collections.Generic.List{LibreMetaverse.InventoryItem}@,System.Collections.Generic.List{LibreMetaverse.InventoryItem}@)":
"self.native_parse_embedded(response, folders, items, links)",
"M:LibreMetaverse.InventoryAISClient.ParseAISResponseMeta(LibreMetaverse.StructuredData.OSDMap)":
"crate::inventory_ais::InventoryAISClient::native_parse_ais_response_meta(response)",
"M:LibreMetaverse.InventoryManager.CreateInventoryItem(LibreMetaverse.InventoryType,LibreMetaverse.UUID)":
"crate::inventory_manager::InventoryManager::native_create_inventory_item(type_, id)",
"M:LibreMetaverse.InventoryManager.CopyItemAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.String,LibreMetaverse.UUID,System.Threading.CancellationToken)":
"self.native_copy_item(item, new_parent, new_name, old_owner_id, cancellation_token).await",
"M:LibreMetaverse.InventoryManager.CopyItemAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.String,System.Threading.CancellationToken)":
"self.native_copy_item_default_owner(item, new_parent, new_name, cancellation_token).await",
"M:LibreMetaverse.InventoryManager.CopyScriptToTask(System.UInt32,LibreMetaverse.InventoryItem,System.Boolean,LibreMetaverse.Simulator)":
"self.native_copy_script_to_task(object_local_id, item, enable_script, simulator)",
"M:LibreMetaverse.InventoryManager.CreateFolder(LibreMetaverse.UUID,System.String)":
"self.native_create_folder(parent_id, name, libremetaverse_types::FolderType::None)",
"M:LibreMetaverse.InventoryManager.CreateFolder(LibreMetaverse.UUID,System.String,LibreMetaverse.FolderType)":
"self.native_create_folder(parent_id, name, preferred_type)",
"M:LibreMetaverse.InventoryManager.CreateItemAsync(LibreMetaverse.UUID,System.String,System.String,LibreMetaverse.AssetType,LibreMetaverse.UUID,LibreMetaverse.InventoryType,LibreMetaverse.PermissionMask,System.Threading.CancellationToken)":
"self.native_create_item(parent_folder, name, description, type_, asset_transaction_id, inv_type, libremetaverse_types::WearableType::Shape, next_owner_mask, cancellation_token).await",
"M:LibreMetaverse.InventoryManager.CreateItemAsync(LibreMetaverse.UUID,System.String,System.String,LibreMetaverse.AssetType,LibreMetaverse.UUID,LibreMetaverse.InventoryType,LibreMetaverse.WearableType,LibreMetaverse.PermissionMask,System.Threading.CancellationToken)":
"self.native_create_item(parent_folder, name, description, type_, asset_transaction_id, inv_type, wearable_type, next_owner_mask, cancellation_token).await",
"M:LibreMetaverse.InventoryManager.CreateLinkAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.String,System.String,LibreMetaverse.InventoryType,LibreMetaverse.UUID,System.Threading.CancellationToken)":
"self.native_create_link(folder_id, item_id, name, description, inv_type, transaction_id, cancellation_token).await",
"M:LibreMetaverse.InventoryManager.CreateLinksAsync(LibreMetaverse.UUID,System.Collections.Generic.IEnumerable{System.ValueTuple{LibreMetaverse.InventoryBase,System.String}},System.Action{System.Boolean},System.Threading.CancellationToken)":
"self.native_create_links(folder_id, links_to_create, callback, cancellation_token).await",
"M:LibreMetaverse.InventoryManager.CreateOrRetrieveInventoryItem(LibreMetaverse.InventoryType,LibreMetaverse.UUID)":
"self.native_create_or_retrieve_inventory_item(inv_type, item_id)",
"M:LibreMetaverse.InventoryManager.DecryptShadowID(LibreMetaverse.UUID)":
"crate::inventory_manager::InventoryManager::native_decrypt_shadow_id(shadow_id)",
"M:LibreMetaverse.InventoryManager.Dispose":
"self.native_dispose()",
"M:LibreMetaverse.InventoryManager.EncryptAssetID(LibreMetaverse.UUID)":
"crate::inventory_manager::InventoryManager::native_encrypt_asset_id(asset_id)",
"M:LibreMetaverse.InventoryManager.EmptyFolder(LibreMetaverse.UUID)":
"self.native_empty_folder(folder_id)",
"M:LibreMetaverse.InventoryManager.EmptyLostAndFoundAsync(System.Threading.CancellationToken)":
"self.native_empty_system_folder(libremetaverse_types::FolderType::LostAndFound, cancellation_token).await",
"M:LibreMetaverse.InventoryManager.EmptyTrashAsync(System.Threading.CancellationToken)":
"self.native_empty_system_folder(libremetaverse_types::FolderType::Trash, cancellation_token).await",
"M:LibreMetaverse.InventoryManager.FetchItemAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Threading.CancellationToken)":
"self.native_fetch_item(item_id, owner_id, cancellation_token, false).await",
"M:LibreMetaverse.InventoryManager.FetchItemHttpAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Threading.CancellationToken)":
"self.native_fetch_item(item_id, owner_id, token, true).await",
"M:LibreMetaverse.InventoryManager.FindFolderForType(LibreMetaverse.AssetType)":
"Ok(self.native_find_folder_for_asset_type(type_))",
"M:LibreMetaverse.InventoryManager.FindFolderForType(LibreMetaverse.FolderType)":
"Ok(self.native_find_folder_for_type(type_))",
"M:LibreMetaverse.InventoryManager.FindObjectByPathAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.String,System.Threading.CancellationToken)":
"self.native_find_object_by_path(base_folder, inventory_owner, path, cancellation_token).await",
"M:LibreMetaverse.InventoryManager.FolderContentsAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Boolean,System.Boolean,LibreMetaverse.InventorySortOrder,System.Threading.CancellationToken,System.Boolean)":
"self.native_folder_contents(folder, owner, fetch_folders, fetch_items, order, cancellation_token, follow_links.unwrap_or(false)).await",
"M:LibreMetaverse.InventoryManager.GetInventoryRecursiveAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Collections.Generic.List{LibreMetaverse.InventoryFolder},System.Collections.Generic.List{LibreMetaverse.InventoryItem},System.Threading.CancellationToken)":
"self.native_get_inventory_recursive(folder_id, owner, cats, items, cancellation_token).await",
"M:LibreMetaverse.InventoryManager.GetTaskInventoryAsync(LibreMetaverse.UUID,System.UInt32,LibreMetaverse.Simulator,System.Threading.CancellationToken)":
"self.native_get_task_inventory(object_id, object_local_id, simulator, cancellation_token).await",
"M:LibreMetaverse.InventoryManager.GiveFolderAsync(LibreMetaverse.UUID,System.String,LibreMetaverse.UUID,System.Boolean,System.Threading.CancellationToken)":
"self.native_give_folder(folder_id, folder_name, recipient, do_effect, cancellation_token).await",
"M:LibreMetaverse.InventoryManager.GiveItem(LibreMetaverse.UUID,System.String,LibreMetaverse.AssetType,LibreMetaverse.UUID,System.Boolean)":
"self.native_give_item(item_id, item_name, asset_type, recipient, do_effect)",
"M:LibreMetaverse.InventoryManager.ItemCRC(LibreMetaverse.InventoryItem)":
"crate::inventory_manager::InventoryManager::native_item_crc(&iitem)",
"M:LibreMetaverse.InventoryManager.ParseTaskInventory(System.String)":
"crate::inventory_manager::InventoryManager::native_parse_task_inventory(task_data)",
"M:LibreMetaverse.InventoryManager.LocalFind(LibreMetaverse.UUID,System.String[],System.Int32,System.Boolean)":
"self.native_local_find(base_folder, path, level, first_only)",
"M:LibreMetaverse.InventoryManager.Move(LibreMetaverse.InventoryBase,LibreMetaverse.InventoryFolder)":
"self.native_move_object(item, new_parent)",
"M:LibreMetaverse.InventoryManager.MoveFolder(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Threading.CancellationToken)":
"self.native_move_folders(std::collections::HashMap::from([(folder_id, new_parent_id)]), cancellation_token)",
"M:LibreMetaverse.InventoryManager.MoveFolderAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Threading.CancellationToken)":
"self.native_move_folders_async(std::collections::HashMap::from([(folder_id, new_parent_id)]), cancellation_token).await",
"M:LibreMetaverse.InventoryManager.MoveFolders(System.Collections.Generic.Dictionary{LibreMetaverse.UUID,LibreMetaverse.UUID},System.Threading.CancellationToken)":
"self.native_move_folders(folders_new_parents, cancellation_token)",
"M:LibreMetaverse.InventoryManager.MoveFoldersAsync(System.Collections.Generic.Dictionary{LibreMetaverse.UUID,LibreMetaverse.UUID},System.Threading.CancellationToken)":
"self.native_move_folders_async(folders_new_parents, cancellation_token).await",
"M:LibreMetaverse.InventoryManager.MoveItem(LibreMetaverse.UUID,LibreMetaverse.UUID,System.String,System.Threading.CancellationToken)":
"self.native_move_items(std::collections::HashMap::from([(item_id, (folder_id, new_name))]), cancellation_token)",
"M:LibreMetaverse.InventoryManager.MoveItem(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Threading.CancellationToken)":
"self.native_move_items(std::collections::HashMap::from([(item_id, (folder_id, String::new()))]), cancellation_token)",
"M:LibreMetaverse.InventoryManager.MoveItemAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.String,System.Threading.CancellationToken)":
"self.native_move_items_async(std::collections::HashMap::from([(item_id, (folder_id, new_name))]), cancellation_token).await",
"M:LibreMetaverse.InventoryManager.MoveItemAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Threading.CancellationToken)":
"self.native_move_items_async(std::collections::HashMap::from([(item_id, (folder_id, String::new()))]), cancellation_token).await",
"M:LibreMetaverse.InventoryManager.MoveItems(System.Collections.Generic.Dictionary{LibreMetaverse.UUID,LibreMetaverse.UUID},System.Threading.CancellationToken)":
"self.native_move_items(items_new_folders.into_iter().map(|(item, folder)| (item, (folder, String::new()))).collect(), cancellation_token)",
"M:LibreMetaverse.InventoryManager.MoveItemsAsync(System.Collections.Generic.Dictionary{LibreMetaverse.UUID,LibreMetaverse.UUID},System.Threading.CancellationToken)":
"self.native_move_items_async(items_new_folders.into_iter().map(|(item, folder)| (item, (folder, String::new()))).collect(), cancellation_token).await",
"M:LibreMetaverse.InventoryManager.MoveTaskInventory(System.UInt32,LibreMetaverse.UUID,LibreMetaverse.UUID,LibreMetaverse.Simulator)":
"self.native_move_task_inventory(object_local_id, task_item_id, inventory_folder_id, simulator)",
"M:LibreMetaverse.InventoryManager.RemoveDescendantsAsync(LibreMetaverse.UUID,System.Threading.CancellationToken)":
"self.native_remove_descendants(folder, cancellation_token).await",
"M:LibreMetaverse.InventoryManager.RemoveFolderAsync(LibreMetaverse.UUID,System.Threading.CancellationToken)":
"self.native_remove_inventory_objects(Vec::new(), vec![folder], cancellation_token).await",
"M:LibreMetaverse.InventoryManager.RemoveItemAsync(LibreMetaverse.UUID,System.Threading.CancellationToken)":
"self.native_remove_inventory_objects(vec![item], Vec::new(), cancellation_token).await",
"M:LibreMetaverse.InventoryManager.RemoveItemsAsync(System.Collections.Generic.IEnumerable{LibreMetaverse.UUID},System.Threading.CancellationToken)":
"self.native_remove_inventory_objects(items.collect(), Vec::new(), cancellation_token).await",
"M:LibreMetaverse.InventoryManager.RemoveTaskInventory(System.UInt32,LibreMetaverse.UUID,LibreMetaverse.Simulator)":
"self.native_remove_task_inventory(object_local_id, task_item_id, simulator)",
"M:LibreMetaverse.InventoryManager.RequestCopyItemAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.String,LibreMetaverse.UUID,System.Threading.CancellationToken)":
"self.native_copy_item(item, new_parent, new_name, old_owner_id, cancellation_token).await",
"M:LibreMetaverse.InventoryManager.RequestCopyItemAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.String,System.Threading.CancellationToken)":
"self.native_copy_item_default_owner(item, new_parent, new_name, cancellation_token).await",
"M:LibreMetaverse.InventoryManager.RequestCopyItemFromNotecardAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,LibreMetaverse.UUID,LibreMetaverse.UUID,System.Threading.CancellationToken,System.IProgress{LibreMetaverse.HttpCapsClient.ProgressReport})":
"self.native_copy_item_from_notecard(object_id, notecard_id, folder_id, item_id, cancellation_token, progress).await",
"M:LibreMetaverse.InventoryManager.RequestCopyItemsAsync(System.Collections.Generic.List{LibreMetaverse.UUID},System.Collections.Generic.List{LibreMetaverse.UUID},System.Collections.Generic.List{System.String},LibreMetaverse.UUID,System.Threading.CancellationToken)":
"self.native_copy_items(items, target_folders, new_names, old_owner_id, cancellation_token).await",
"M:LibreMetaverse.InventoryManager.RequestCopyItemsWithResultAsync(System.Collections.Generic.List{LibreMetaverse.UUID},System.Collections.Generic.List{LibreMetaverse.UUID},System.Collections.Generic.List{System.String},LibreMetaverse.UUID,System.Threading.CancellationToken)":
"self.native_copy_items(items, target_folders, new_names, old_owner_id, cancellation_token).await",
"M:LibreMetaverse.InventoryManager.RequestDeRezToInventory(System.UInt32)":
"self.native_de_rez_to_objects_folder(object_local_id)",
"M:LibreMetaverse.InventoryManager.RequestDeRezToInventory(System.UInt32,LibreMetaverse.DeRezDestination,LibreMetaverse.UUID,LibreMetaverse.UUID)":
"self.native_de_rez_to_inventory(object_local_id, dest_type, dest_folder, transaction_id)",
"M:LibreMetaverse.InventoryManager.RequestFetchInventory(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Threading.CancellationToken)":
"self.native_request_fetch_inventory(std::collections::HashMap::from([(item_id, owner_id)]), cancellation_token)",
"M:LibreMetaverse.InventoryManager.RequestFetchInventory(System.Collections.Generic.Dictionary{LibreMetaverse.UUID,LibreMetaverse.UUID},System.Threading.CancellationToken)":
"self.native_request_fetch_inventory(items, cancellation_token)",
"M:LibreMetaverse.InventoryManager.RequestFetchInventoryAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Threading.CancellationToken)":
"self.native_request_fetch_inventory_async(std::collections::HashMap::from([(item_id, owner_id)]), cancellation_token, None).await",
"M:LibreMetaverse.InventoryManager.RequestFetchInventoryAsync(System.Collections.Generic.Dictionary{LibreMetaverse.UUID,LibreMetaverse.UUID},System.Threading.CancellationToken,System.Action{System.Collections.Generic.List{LibreMetaverse.InventoryItem}})":
"self.native_request_fetch_inventory_async(items, cancellation_token, callback).await",
"M:LibreMetaverse.InventoryManager.RequestFindObjectByPathAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.String,System.Threading.CancellationToken)":
"self.native_find_object_by_path(base_folder, inventory_owner, path, cancellation_token).await.map(|_| ())",
"M:LibreMetaverse.InventoryManager.RequestFolderContentsAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Boolean,System.Boolean,LibreMetaverse.InventorySortOrder,System.Threading.CancellationToken)":
"self.native_request_folder_contents(folder_id, owner_id, fetch_folders, fetch_items, order, cancellation_token).await",
"M:LibreMetaverse.InventoryManager.RequestFolderContentsAsync(System.Collections.Generic.List{LibreMetaverse.InventoryFolder},System.Uri,System.Boolean,System.Boolean,LibreMetaverse.InventorySortOrder,System.Threading.CancellationToken)":
"self.native_request_folder_contents_batch(batch, capability_uri, fetch_folders, fetch_items, order, cancellation_token).await",
"M:LibreMetaverse.InventoryManager.RequestFolderUpdateAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Boolean,System.Boolean,LibreMetaverse.InventorySortOrder,System.Threading.CancellationToken)":
"self.native_request_folder_update(folder_id, owner_id, fetch_folders.unwrap_or(true), fetch_items.unwrap_or(true), order.unwrap_or(crate::InventorySortOrder::BY_NAME), cancellation_token).await",
"M:LibreMetaverse.InventoryManager.RequestGetScriptRunning(LibreMetaverse.UUID,LibreMetaverse.UUID)":
"self.native_request_get_script_running(object_id, script_id)",
"M:LibreMetaverse.InventoryManager.RequestRestoreRezFromInventory(LibreMetaverse.Simulator,LibreMetaverse.InventoryItem,LibreMetaverse.UUID)":
"self.native_restore_rez_from_inventory(simulator, item, query_id)",
"M:LibreMetaverse.InventoryManager.RequestRezFromInventory(LibreMetaverse.Simulator,LibreMetaverse.Quaternion,LibreMetaverse.Vector3,LibreMetaverse.InventoryItem)":
"self.native_rez_from_inventory_default(simulator, rotation, position, item, None)",
"M:LibreMetaverse.InventoryManager.RequestRezFromInventory(LibreMetaverse.Simulator,LibreMetaverse.Quaternion,LibreMetaverse.Vector3,LibreMetaverse.InventoryItem,LibreMetaverse.UUID)":
"self.native_rez_from_inventory_default(simulator, rotation, position, item, Some(group_owner))",
"M:LibreMetaverse.InventoryManager.RequestRezFromInventory(LibreMetaverse.Simulator,LibreMetaverse.UUID,LibreMetaverse.Quaternion,LibreMetaverse.Vector3,LibreMetaverse.InventoryItem,LibreMetaverse.UUID,LibreMetaverse.UUID,System.Boolean)":
"self.native_rez_from_inventory(simulator, task_id, rotation, position, item, group_owner, query_id, rez_selected)",
"M:LibreMetaverse.InventoryManager.RequestSetScriptRunning(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Boolean)":
"self.native_request_set_script_running(object_id, script_id, running)",
"M:LibreMetaverse.InventoryManager.RequestTaskInventory(System.UInt32)":
"self.native_request_task_inventory(object_local_id, None)",
"M:LibreMetaverse.InventoryManager.RequestTaskInventory(System.UInt32,LibreMetaverse.Simulator)":
"self.native_request_task_inventory(object_local_id, simulator)",
"M:LibreMetaverse.InventoryManager.RequestUpdateItem(LibreMetaverse.InventoryItem)":
"self.native_request_update_items(vec![item], libremetaverse_types::UUID::random()?)",
"M:LibreMetaverse.InventoryManager.RequestUpdateItems(System.Collections.Generic.List{LibreMetaverse.InventoryItem})":
"self.native_request_update_items(items, libremetaverse_types::UUID::random()?)",
"M:LibreMetaverse.InventoryManager.RequestUpdateItems(System.Collections.Generic.List{LibreMetaverse.InventoryItem},LibreMetaverse.UUID)":
"self.native_request_update_items(items, transaction_id)",
"M:LibreMetaverse.InventoryManager.UpdateFolderProperties(LibreMetaverse.UUID,LibreMetaverse.UUID,System.String,LibreMetaverse.FolderType)":
"self.native_update_folder_properties(folder_id, parent_id, name, type_)",
"M:LibreMetaverse.InventoryManager.UpdateTaskInventory(System.UInt32,LibreMetaverse.InventoryItem,LibreMetaverse.Simulator,System.Boolean)":
"self.native_update_task_inventory(object_local_id, item, simulator, only_mod_meta.unwrap_or(true))",
"M:LibreMetaverse.InventoryManager.WaitForNextInventoryOfferAsync(System.Threading.CancellationToken)":
"self.native_wait_for_next_inventory_offer(cancellation_token).await",
"P:LibreMetaverse.InventoryManager.NoResults":
"crate::inventory_manager::InventoryManager::native_no_results()",
"P:LibreMetaverse.InventoryManager.Store":
"self.native_store()",
"E:LibreMetaverse.AgentManager.IM":
"self.native_subscribe_im(handler)",
"E:LibreMetaverse.AgentManager.AgentDataReply":
"self.native_subscribe_agent_data_reply(handler)",
"E:LibreMetaverse.AgentManager.AnimationsChanged":
"self.native_subscribe_animations_changed(handler)",
"E:LibreMetaverse.AgentManager.AvatarSitResponse":
"self.native_subscribe_avatar_sit_response(handler)",
"E:LibreMetaverse.AgentManager.CameraConstraint":
"self.native_subscribe_camera_constraint(handler)",
"E:LibreMetaverse.AgentManager.ChatFromSimulator":
"self.native_subscribe_chat_from_simulator(handler)",
"E:LibreMetaverse.AgentManager.MoneyBalance":
"self.native_subscribe_money_balance(handler)",
"E:LibreMetaverse.AgentManager.MoneyBalanceReply":
"self.native_subscribe_money_balance_reply(handler)",
"E:LibreMetaverse.AgentManager.AgentExperiencesUpdated":
"self.native_subscribe_agent_experiences_updated(handler)",
"E:LibreMetaverse.AgentManager.ExperiencePreferencesUpdated":
"self.native_subscribe_experience_preferences_updated(handler)",
"E:LibreMetaverse.AgentManager.RegionExperiencesUpdated":
"self.native_subscribe_region_experiences_updated(handler)",
"E:LibreMetaverse.AgentManager.ExperienceInfoReceived":
"self.native_subscribe_experience_info_received(handler)",
"E:LibreMetaverse.AgentManager.AgentPreferencesUpdated":
"self.native_subscribe_agent_preferences_updated(handler)",
"E:LibreMetaverse.AgentManager.AvatarRenderInfoUpdated":
"self.native_subscribe_avatar_render_info_updated(handler)",
"E:LibreMetaverse.AgentManager.ViewerBenefitsUpdated":
"self.native_subscribe_viewer_benefits_updated(handler)",
"E:LibreMetaverse.AgentManager.ProductInfoUpdated":
"self.native_subscribe_product_info_updated(handler)",
"E:LibreMetaverse.AgentManager.RegionCrossed":
"self.native_subscribe_region_crossed(handler)",
"E:LibreMetaverse.AgentManager.RegionCrossingPredicted":
"self.native_subscribe_region_crossing_predicted(handler)",
"E:LibreMetaverse.AgentManager.MuteListUpdated":
"self.native_subscribe_mute_list_updated(handler)",
"E:LibreMetaverse.AgentManager.GroupChatJoined":
"self.native_subscribe_group_chat_joined(handler)",
"E:LibreMetaverse.AgentManager.ChatSessionMemberAdded":
"self.native_subscribe_chat_session_member_added(handler)",
"E:LibreMetaverse.AgentManager.ChatSessionMemberLeft":
"self.native_subscribe_chat_session_member_left(handler)",
"E:LibreMetaverse.AgentManager.SetDisplayNameReply":
"self.native_subscribe_set_display_name_reply(handler)",
"E:LibreMetaverse.AgentManager.NavMeshStatusUpdate":
"self.native_subscribe_nav_mesh_status_update(handler)",
"E:LibreMetaverse.AgentManager.TeleportProgress":
"self.native_subscribe_teleport_progress(handler)",
"M:LibreMetaverse.AgentManager.#ctor(LibreMetaverse.GridClient)":
"crate::agent_manager::AgentManager::native_new(client)",
"M:LibreMetaverse.AgentManager.Dispose":
"self.native_dispose()",
"M:LibreMetaverse.AgentManager.ActivateGesture(LibreMetaverse.UUID,LibreMetaverse.UUID)":
"self.native_activate_gesture(inv_id, asset_id)",
"M:LibreMetaverse.AgentManager.Animate(System.Collections.Generic.Dictionary{LibreMetaverse.UUID,System.Boolean},System.Boolean)":
"self.native_animate(animations, reliable)",
"M:LibreMetaverse.AgentManager.AnimationStart(LibreMetaverse.UUID,System.Boolean)":
"self.native_animation_start(animation, reliable)",
"M:LibreMetaverse.AgentManager.AnimationStop(LibreMetaverse.UUID,System.Boolean)":
"self.native_animation_stop(animation, reliable)",
"M:LibreMetaverse.AgentManager.AutoPilot(System.Double,System.Double,System.Double)":
"self.native_autopilot_f64(global_x, global_y, z)",
"M:LibreMetaverse.AgentManager.AutoPilot(System.UInt64,System.UInt64,System.Single)":
"self.native_autopilot_u64(global_x, global_y, z)",
"M:LibreMetaverse.AgentManager.AutoPilotCancel":
"self.native_autopilot_cancel()",
"M:LibreMetaverse.AgentManager.AutoPilotLocal(System.Int32,System.Int32,System.Single)":
"self.native_autopilot_local(local_x, local_y, z)",
"M:LibreMetaverse.AgentManager.CancelCrossing":
"Ok(self.native_cancel_crossing())",
"M:LibreMetaverse.AgentManager.BeamEffect(LibreMetaverse.UUID,LibreMetaverse.UUID,LibreMetaverse.Vector3d,LibreMetaverse.Color4,System.Single,LibreMetaverse.UUID)":
"self.native_viewer_effect(source_avatar, target_object, global_offset, color, duration, effect_id, crate::EffectType::Beam, None)",
"M:LibreMetaverse.AgentManager.Chat(System.String,System.Int32,LibreMetaverse.ChatType,System.Boolean)":
"self.native_chat(message, channel, type_, split_large_messages)",
"M:LibreMetaverse.AgentManager.ChatterBoxAcceptInviteAsync(LibreMetaverse.UUID,System.Threading.CancellationToken)":
"self.native_chatter_box_accept_invite(session_id, cancellation_token).await",
"M:LibreMetaverse.AgentManager.CompleteAgentMovement(LibreMetaverse.Simulator)":
"self.native_complete_agent_movement(simulator)",
"M:LibreMetaverse.AgentManager.Crouch(System.Boolean)":
"self.native_crouch(crouching)",
"M:LibreMetaverse.AgentManager.DeactivateGesture(LibreMetaverse.UUID)":
"self.native_deactivate_gesture(inv_id)",
"M:LibreMetaverse.AgentManager.DeleteClassified(LibreMetaverse.UUID)":
"self.native_delete_classified(classified_id)",
"M:LibreMetaverse.AgentManager.FindExperienceByNameAsync(System.String,System.Int32,System.Int32,System.Threading.CancellationToken)":
"self.native_find_experience_by_name(query, page, page_size, cancellation_token).await",
"M:LibreMetaverse.AgentManager.Fly(System.Boolean)":
"self.native_fly(start)",
"M:LibreMetaverse.AgentManager.ForgetExperiencePermissionAsync(LibreMetaverse.UUID,System.Threading.CancellationToken)":
"self.native_forget_experience_permission(experience_id, cancellation_token).await",
"M:LibreMetaverse.AgentManager.GetAdminExperiencesAsync(System.Threading.CancellationToken)":
"self.native_get_admin_experiences(cancellation_token).await",
"M:LibreMetaverse.AgentManager.GetAgentExperiencePermissionsAsync(System.Threading.CancellationToken)":
"self.native_get_agent_experience_permissions(cancellation_token).await",
"M:LibreMetaverse.AgentManager.GetAgentExperiencesAsync(System.Threading.CancellationToken)":
"self.native_get_agent_experiences(cancellation_token).await",
"M:LibreMetaverse.AgentManager.GetAgentPreferencesAsync(System.Threading.CancellationToken)":
"self.native_get_agent_preferences(cancellation_token).await",
"M:LibreMetaverse.AgentManager.GetAttachmentResourcesAsync(System.Threading.CancellationToken)":
"self.native_get_attachment_resources(cancellation_token).await",
"M:LibreMetaverse.AgentManager.GetAvatarRenderInfoAsync(System.Threading.CancellationToken)":
"self.native_get_avatar_render_info(cancellation_token).await",
"M:LibreMetaverse.AgentManager.GetCreatorExperiencesAsync(System.Threading.CancellationToken)":
"self.native_get_creator_experiences(cancellation_token).await",
"M:LibreMetaverse.AgentManager.GetCrossingDetails":
"Ok(self.native_crossing_details())",
"M:LibreMetaverse.AgentManager.GetCrossingFailureReason":
"Ok(self.native_crossing_failure_reason())",
"M:LibreMetaverse.AgentManager.GetCrossingState":
"Ok(self.native_crossing_state())",
"M:LibreMetaverse.AgentManager.GetSimulatorsForObject(LibreMetaverse.UUID)":
"Ok(self.native_get_simulators_for_object(object_id))",
"M:LibreMetaverse.AgentManager.GetExperienceInfoAsync(System.Collections.Generic.IEnumerable{LibreMetaverse.UUID},System.Threading.CancellationToken)":
"self.native_get_experience_info(experience_ids, cancellation_token).await",
"M:LibreMetaverse.AgentManager.GetExperiencePermissionAsync(LibreMetaverse.UUID,System.Threading.CancellationToken)":
"self.native_get_experience_permission(experience_id, cancellation_token).await",
"M:LibreMetaverse.AgentManager.GetExperiencePreferencesAsync(System.Threading.CancellationToken)":
"self.native_get_experience_preferences(cancellation_token).await",
"M:LibreMetaverse.AgentManager.GetGroupExperiencesAsync(LibreMetaverse.UUID,System.Threading.CancellationToken)":
"self.native_get_group_experiences(group_id, cancellation_token).await",
"M:LibreMetaverse.AgentManager.GetProductInfoAsync(System.Threading.CancellationToken)":
"self.native_get_product_info(cancellation_token).await",
"M:LibreMetaverse.AgentManager.GetRegionExperiencesAsync(System.Threading.CancellationToken)":
"self.native_get_region_experiences(cancellation_token).await",
"M:LibreMetaverse.AgentManager.GetViewerBenefitsAsync(System.Threading.CancellationToken)":
"self.native_get_viewer_benefits(cancellation_token).await",
"M:LibreMetaverse.AgentManager.GoHomeAsync(System.Threading.CancellationToken)":
"self.native_teleport_landmark(libremetaverse_types::UUID::zero(), cancellation_token).await",
"M:LibreMetaverse.AgentManager.IsCrossing":
"Ok(self.native_is_crossing())",
"M:LibreMetaverse.AgentManager.IsNearBorder(LibreMetaverse.Vector3,System.UInt32,System.UInt32,System.Single)":
"Ok(self.native_is_near_border(position, region_size_x, region_size_y, threshold.unwrap_or(32.0)))",
"M:LibreMetaverse.AgentManager.GiveAvatarMoney(LibreMetaverse.UUID,System.Int32)":
"self.native_give_avatar_money(target, amount, String::new())",
"M:LibreMetaverse.AgentManager.GiveAvatarMoney(LibreMetaverse.UUID,System.Int32,System.String)":
"self.native_give_avatar_money(target, amount, description)",
"M:LibreMetaverse.AgentManager.GiveGroupMoney(LibreMetaverse.UUID,System.Int32)":
"self.native_give_group_money(target, amount, String::new())",
"M:LibreMetaverse.AgentManager.GiveGroupMoney(LibreMetaverse.UUID,System.Int32,System.String)":
"self.native_give_group_money(target, amount, description)",
"M:LibreMetaverse.AgentManager.GiveMoney(LibreMetaverse.UUID,System.Int32,System.String,LibreMetaverse.MoneyTransactionType,LibreMetaverse.TransactionFlags)":
"self.native_give_money(target, amount, description, type_, flags)",
"M:LibreMetaverse.AgentManager.GiveObjectMoney(LibreMetaverse.UUID,System.Int32,System.String)":
"self.native_give_object_money(target, amount, object_name)",
"M:LibreMetaverse.AgentManager.GroupInviteRespond(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Boolean)":
"self.native_group_invite_respond(group_id, im_session_id, accept)",
"M:LibreMetaverse.AgentManager.InstantMessage(LibreMetaverse.UUID,System.String)":
"self.native_instant_message(target, message, None)",
"M:LibreMetaverse.AgentManager.InstantMessage(LibreMetaverse.UUID,System.String,LibreMetaverse.UUID)":
"self.native_instant_message(target, message, Some(im_session_id))",
"M:LibreMetaverse.AgentManager.InstantMessage(System.String,LibreMetaverse.UUID,System.String,LibreMetaverse.UUID,LibreMetaverse.InstantMessageDialog,LibreMetaverse.InstantMessageOnline,LibreMetaverse.Vector3,LibreMetaverse.UUID,System.Byte[])":
"self.native_instant_message_full(from_name, target, message, im_session_id, dialog, offline, position, region_id, binary_bucket)",
"M:LibreMetaverse.AgentManager.InstantMessage(System.String,LibreMetaverse.UUID,System.String,LibreMetaverse.UUID,LibreMetaverse.UUID[])":
"self.native_instant_message_conference(from_name, target, message, im_session_id, conference_i_ds)",
"M:LibreMetaverse.AgentManager.InstantMessageGroup(LibreMetaverse.UUID,System.String)":
"self.native_instant_message_group(None, group_id, message)",
"M:LibreMetaverse.AgentManager.InstantMessageGroup(System.String,LibreMetaverse.UUID,System.String)":
"self.native_instant_message_group(Some(from_name), group_id, message)",
"M:LibreMetaverse.AgentManager.IsExperienceAdminAsync(LibreMetaverse.UUID,System.Threading.CancellationToken)":
"self.native_is_experience_role(\"IsExperienceAdmin\", experience_id, cancellation_token).await",
"M:LibreMetaverse.AgentManager.IsExperienceContributorAsync(LibreMetaverse.UUID,System.Threading.CancellationToken)":
"self.native_is_experience_role(\"IsExperienceContributor\", experience_id, cancellation_token).await",
"M:LibreMetaverse.AgentManager.IsGroupMessage(LibreMetaverse.InstantMessage)":
"Ok(self.native_is_group_message(message))",
"M:LibreMetaverse.AgentManager.Jump(System.Boolean)":
"self.native_jump(jumping)",
"M:LibreMetaverse.AgentManager.LookAtEffect(LibreMetaverse.UUID,LibreMetaverse.UUID,LibreMetaverse.Vector3d,LibreMetaverse.LookAtType,LibreMetaverse.UUID)":
"self.native_look_at_effect(source_avatar, target_object, global_offset, type_, effect_id)",
"M:LibreMetaverse.AgentManager.ModerateChatSessions(LibreMetaverse.UUID,LibreMetaverse.UUID,System.String,System.Boolean,System.Threading.CancellationToken)":
"self.native_moderate_chat_sessions(session_id, member_id, key, moderate, cancellation_token)",
"M:LibreMetaverse.AgentManager.PayUploadFee":
"self.native_pay_upload_fee(None, String::new())",
"M:LibreMetaverse.AgentManager.PayUploadFee(System.Int32)":
"self.native_pay_upload_fee(Some(amount), String::new())",
"M:LibreMetaverse.AgentManager.PayUploadFee(System.String)":
"self.native_pay_upload_fee(None, description)",
"M:LibreMetaverse.AgentManager.PickDelete(LibreMetaverse.UUID)":
"self.native_pick_delete(pick_id)",
"M:LibreMetaverse.AgentManager.PickInfoUpdate(LibreMetaverse.UUID,System.Boolean,LibreMetaverse.UUID,System.String,LibreMetaverse.Vector3d,LibreMetaverse.UUID,System.String)":
"self.native_pick_info_update(pick_id, top_pick, parcel_id, name, global_position, texture_id, description)",
"M:LibreMetaverse.AgentManager.PlayGestureAsync(LibreMetaverse.UUID,System.Threading.CancellationToken)":
"self.native_play_gesture(gesture_id, cancellation_token).await",
"M:LibreMetaverse.AgentManager.PointAtEffect(LibreMetaverse.UUID,LibreMetaverse.UUID,LibreMetaverse.Vector3d,LibreMetaverse.PointAtType,LibreMetaverse.UUID)":
"self.native_point_at_effect(source_avatar, target_object, global_offset, type_, effect_id)",
"M:LibreMetaverse.AgentManager.PostAvatarRenderInfoAsync(System.Collections.Generic.IReadOnlyDictionary{LibreMetaverse.UUID,System.ValueTuple{System.Int32,System.Boolean}},System.Threading.CancellationToken)":
"self.native_post_avatar_render_info(agents, cancellation_token).await",
"M:LibreMetaverse.AgentManager.PostAvatarRenderInfoAsync(System.Int32,System.Boolean,System.Threading.CancellationToken)":
"self.native_post_local_avatar_render_info(weight, too_complex, cancellation_token).await",
"M:LibreMetaverse.AgentManager.ReplyToScriptDialog(System.Int32,System.Int32,System.String,LibreMetaverse.UUID)":
"self.native_reply_to_script_dialog(channel, button_index, button_label, object_id)",
"M:LibreMetaverse.AgentManager.RequestBalance":
"self.native_request_balance()",
"M:LibreMetaverse.AgentManager.RequestJoinGroupChat(LibreMetaverse.UUID)":
"self.native_join_group_chat(group_id)",
"M:LibreMetaverse.AgentManager.RequestLeaveGroupChat(LibreMetaverse.UUID)":
"self.native_leave_group_chat(group_id)",
"M:LibreMetaverse.AgentManager.RequestMuteList":
"self.native_request_mute_list()",
"M:LibreMetaverse.AgentManager.RequestSit(LibreMetaverse.UUID,LibreMetaverse.Vector3)":
"self.native_request_sit(target_id, offset)",
"M:LibreMetaverse.AgentManager.RequestTeleport(LibreMetaverse.UUID)":
"self.native_request_teleport_landmark(landmark)",
"M:LibreMetaverse.AgentManager.RequestTeleport(System.UInt64,LibreMetaverse.Vector3)":
"self.native_request_teleport_location(region_handle, position, libremetaverse_types::Vector3::unit_y(), Some(false))",
"M:LibreMetaverse.AgentManager.RequestTeleport(System.UInt64,LibreMetaverse.Vector3,LibreMetaverse.Vector3,System.Boolean)":
"self.native_request_teleport_location(region_handle, position, look_at, ignore_caps_status)",
"M:LibreMetaverse.AgentManager.RequestNavMeshGenerationStatusAsync(System.Threading.CancellationToken)":
"self.native_request_nav_mesh_generation_status(cancellation_token).await",
"M:LibreMetaverse.AgentManager.RequestNavMeshRebakeAsync(System.Threading.CancellationToken)":
"self.native_request_nav_mesh_rebake(cancellation_token).await",
"M:LibreMetaverse.AgentManager.RemoveMuteListEntry(LibreMetaverse.UUID,System.String)":
"self.native_remove_mute_list_entry(id, name)",
"M:LibreMetaverse.AgentManager.RetrieveInstantMessagesAsync(System.Threading.CancellationToken)":
"self.native_retrieve_instant_messages(cancellation_token).await",
"M:LibreMetaverse.AgentManager.QueryExperiencesOnParcelAsync(System.Int32,System.Collections.Generic.IEnumerable{LibreMetaverse.UUID},System.Threading.CancellationToken)":
"self.native_query_experiences_on_parcel(parcel_local_id, experience_ids, cancellation_token).await",
"M:LibreMetaverse.AgentManager.SendPostcardAsync(System.Byte[],System.String,System.String,System.String,System.String,LibreMetaverse.Vector3,System.Threading.CancellationToken)":
"self.native_send_postcard(jpeg_image_data, to_email, from_name, subject, message, global_position, cancellation_token).await",
"M:LibreMetaverse.AgentManager.SendViewerStatsAsync(LibreMetaverse.Messages.Linden.ViewerStatsMessage,System.Threading.CancellationToken)":
"self.native_send_viewer_stats(stats, cancellation_token).await",
"M:LibreMetaverse.AgentManager.SendTeleportLure(LibreMetaverse.UUID)":
"self.native_send_teleport_lure(target_id, None)",
"M:LibreMetaverse.AgentManager.SendTeleportLure(LibreMetaverse.UUID,System.String)":
"self.native_send_teleport_lure(target_id, Some(message))",
"M:LibreMetaverse.AgentManager.SendTeleportLureRequest(LibreMetaverse.UUID)":
"self.native_send_teleport_lure_request(target_id, target_id, \"Let me join you in your location\".into())",
"M:LibreMetaverse.AgentManager.SendTeleportLureRequest(LibreMetaverse.UUID,LibreMetaverse.UUID,System.String)":
"self.native_send_teleport_lure_request(target_id, session_id, message)",
"M:LibreMetaverse.AgentManager.SendTeleportLureRequest(LibreMetaverse.UUID,System.String)":
"self.native_send_teleport_lure_request(target_id, target_id, message)",
"M:LibreMetaverse.AgentManager.SetAgentAccessAsync(System.String,System.Threading.CancellationToken)":
"self.native_set_agent_access_async(access, cancellation_token).await",
"M:LibreMetaverse.AgentManager.SetDisplayNameAsync(System.String,System.String,System.Threading.CancellationToken)":
"self.native_set_display_name(old_name, new_name, cancellation_token).await",
"M:LibreMetaverse.AgentManager.SetExperiencePermissionAsync(LibreMetaverse.UUID,System.String,System.Threading.CancellationToken)":
"self.native_set_experience_permission(experience_id, permission, cancellation_token).await",
"M:LibreMetaverse.AgentManager.SetExperiencePreferencesAsync(LibreMetaverse.Messages.Linden.ExperiencePreferencesMessage,System.Threading.CancellationToken)":
"self.native_set_experience_preferences_async(preferences, cancellation_token).await",
"M:LibreMetaverse.AgentManager.UpdateExperienceAsync(LibreMetaverse.Messages.Linden.ExperienceInfo,System.Threading.CancellationToken)":
"self.native_update_experience(info, cancellation_token).await",
"M:LibreMetaverse.AgentManager.SphereEffect(LibreMetaverse.Vector3d,LibreMetaverse.Color4,System.Single,LibreMetaverse.UUID)":
"self.native_viewer_effect(libremetaverse_types::UUID::zero(), libremetaverse_types::UUID::zero(), global_offset, color, duration, effect_id, crate::EffectType::Sphere, None)",
"M:LibreMetaverse.AgentManager.StartIMConferenceAsync(System.Collections.Generic.List{LibreMetaverse.UUID},LibreMetaverse.UUID,System.Threading.CancellationToken)":
"self.native_start_im_conference(participants, tmp_session_id, cancellation_token).await",
"M:LibreMetaverse.AgentManager.SetHoverHeightAsync(System.Double,System.Threading.CancellationToken)":
"self.native_set_hover_height_async(hover_height, cancellation_token).await",
"M:LibreMetaverse.AgentManager.Sit":
"self.native_sit()",
"M:LibreMetaverse.AgentManager.SitOnGround":
"self.native_sit_on_ground()",
"M:LibreMetaverse.AgentManager.Stand":
"self.native_stand()",
"M:LibreMetaverse.AgentManager.TeleportAsync(LibreMetaverse.UUID,System.Threading.CancellationToken)":
"self.native_teleport_landmark(landmark, cancellation_token).await",
"M:LibreMetaverse.AgentManager.TeleportAsync(System.String,LibreMetaverse.Vector3,LibreMetaverse.Vector3,System.Threading.CancellationToken)":
"self.native_teleport_name(sim_name, position, look_at, cancellation_token).await",
"M:LibreMetaverse.AgentManager.TeleportAsync(System.String,LibreMetaverse.Vector3,System.Threading.CancellationToken)":
"self.native_teleport_name(sim_name, position, libremetaverse_types::Vector3::unit_y(), cancellation_token).await",
"M:LibreMetaverse.AgentManager.TeleportAsync(System.UInt64,LibreMetaverse.Vector3,LibreMetaverse.Vector3,System.Threading.CancellationToken)":
"self.native_teleport_location(region_handle, position, look_at, cancellation_token).await",
"M:LibreMetaverse.AgentManager.TeleportAsync(System.UInt64,LibreMetaverse.Vector3,System.Threading.CancellationToken)":
"self.native_teleport_location(region_handle, position, libremetaverse_types::Vector3::unit_y(), cancellation_token).await",
"M:LibreMetaverse.AgentManager.TeleportFailedEventHandler(System.String,LibreMetaverse.Interfaces.IMessage,LibreMetaverse.Simulator)":
"self.native_movement_runtime().handle_caps_event(\"TeleportFailed\", message.as_ref(), simulator).map(|_| ())",
"M:LibreMetaverse.AgentManager.TeleportLureRespond(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Boolean)":
"self.native_teleport_lure_respond(requester_id, session_id, accept)",
"M:LibreMetaverse.AgentManager.TrackObjectInSimulator(LibreMetaverse.UUID,LibreMetaverse.Simulator)":
"Ok(self.native_track_object_in_simulator(object_id, sim))",
"M:LibreMetaverse.AgentManager.UntrackObjectInSimulator(LibreMetaverse.UUID,LibreMetaverse.Simulator)":
"Ok(self.native_untrack_object_in_simulator(object_id, &sim))",
"M:LibreMetaverse.AgentManager.UpdateAgentLanguageAsync(System.String,System.Boolean,System.Threading.CancellationToken)":
"self.native_update_agent_language(language, is_public, cancellation_token).await",
"M:LibreMetaverse.AgentManager.UpdateClassifiedInfo(LibreMetaverse.UUID,LibreMetaverse.DirectoryManager.ClassifiedCategories,LibreMetaverse.UUID,System.Int32,LibreMetaverse.Vector3d,System.String,System.String,System.Boolean)":
"self.native_update_classified_info(classified_id, category, snapshot_id, price, position, name, desc, auto_renew)",
"M:LibreMetaverse.AgentManager.UpdateClassifiedInfo(LibreMetaverse.UUID,LibreMetaverse.DirectoryManager.ClassifiedCategories,LibreMetaverse.UUID,System.Int32,System.String,System.String,System.Boolean)":
"self.native_update_classified_info(classified_id, category, snapshot_id, price, libremetaverse_types::Vector3d::zero(), name, desc, auto_renew)",
"M:LibreMetaverse.AgentManager.UpdateInterests(LibreMetaverse.Avatar.Interests)":
"self.native_update_interests(interests)",
"M:LibreMetaverse.AgentManager.UpdateMuteListEntry(LibreMetaverse.MuteType,LibreMetaverse.UUID,System.String)":
"self.native_update_mute_list_entry(type_, id, name, crate::MuteFlags::DEFAULT)",
"M:LibreMetaverse.AgentManager.UpdateMuteListEntry(LibreMetaverse.MuteType,LibreMetaverse.UUID,System.String,LibreMetaverse.MuteFlags)":
"self.native_update_mute_list_entry(type_, id, name, flags)",
"M:LibreMetaverse.AgentManager.UpdateProfile(LibreMetaverse.Avatar.AvatarProperties)":
"self.native_update_profile(profile)",
"M:LibreMetaverse.AgentManager.UpdateProfileAsync(LibreMetaverse.Avatar.AvatarProperties,System.Threading.CancellationToken)":
"self.native_update_profile_async(profile, cancellation_token).await",
"M:LibreMetaverse.AgentManager.UpdateProfileNotes(LibreMetaverse.UUID,System.String)":
"self.native_update_profile_notes(target, notes)",
"M:LibreMetaverse.AgentManager.UpdateProfileNotesAsync(LibreMetaverse.UUID,System.String,System.Threading.CancellationToken)":
"self.native_update_profile_notes_async(target, notes, cancellation_token).await",
"M:LibreMetaverse.AgentManager.UpdateProfileUdp(LibreMetaverse.Avatar.AvatarProperties)":
"self.native_update_profile_udp(profile)",
"P:LibreMetaverse.AgentManager.ActiveGestures":
"self.native_active_gestures()",
"P:LibreMetaverse.AgentManager.AgentExperienceList":
"self.native_agent_experience_list()",
"P:LibreMetaverse.AgentManager.AgentExperienceList#set":
"self.native_set_agent_experience_list(value)",
"P:LibreMetaverse.AgentManager.ExperiencePreferences":
"self.native_experience_preferences()",
"P:LibreMetaverse.AgentManager.ExperiencePreferences#set":
"self.native_set_experience_preferences(value)",
"P:LibreMetaverse.AgentManager.LastRegionExperiences":
"self.native_last_region_experiences()",
"P:LibreMetaverse.AgentManager.LastRegionExperiences#set":
"self.native_set_last_region_experiences(value)",
"P:LibreMetaverse.AgentManager.AvatarRenderInfo":
"self.native_avatar_render_info()",
"P:LibreMetaverse.AgentManager.AvatarRenderInfo#set":
"self.native_set_avatar_render_info(value)",
"P:LibreMetaverse.AgentManager.ViewerBenefits":
"self.native_viewer_benefits()",
"P:LibreMetaverse.AgentManager.ViewerBenefits#set":
"self.native_set_viewer_benefits(value)",
"P:LibreMetaverse.AgentManager.Benefits":
"self.native_benefits()",
"P:LibreMetaverse.AgentManager.Benefits#set":
"self.native_set_benefits(value)",
"P:LibreMetaverse.AgentManager.Name":
"self.native_name()",
"P:LibreMetaverse.AgentManager.ActiveGroup":
"self.native_active_group()",
"P:LibreMetaverse.AgentManager.ActiveGroup#set":
"self.native_set_active_group(value)",
"P:LibreMetaverse.AgentManager.ActiveGroupPowers":
"self.native_active_group_powers()",
"P:LibreMetaverse.AgentManager.ActiveGroupPowers#set":
"self.native_set_active_group_powers(value)",
"P:LibreMetaverse.AgentManager.FirstName":
"self.native_first_name()",
"P:LibreMetaverse.AgentManager.FirstName#set":
"self.native_set_first_name(value)",
"P:LibreMetaverse.AgentManager.LastName":
"self.native_last_name()",
"P:LibreMetaverse.AgentManager.LastName#set":
"self.native_set_last_name(value)",
"P:LibreMetaverse.AgentManager.AgentAccess":
"self.native_agent_access()",
"P:LibreMetaverse.AgentManager.AgentAccess#set":
"self.native_set_agent_access(value)",
"P:LibreMetaverse.AgentManager.HoverHeight":
"self.native_hover_height()",
"P:LibreMetaverse.AgentManager.HoverHeight#set":
"self.native_set_hover_height(value)",
"P:LibreMetaverse.AgentManager.ProductInfo":
"self.native_product_info()",
"P:LibreMetaverse.AgentManager.ProductInfo#set":
"self.native_set_product_info(value)",
"P:LibreMetaverse.AgentManager.Balance":
"self.native_balance()",
"P:LibreMetaverse.AgentManager.Balance#set":
"self.native_set_balance(value)",
"P:LibreMetaverse.AgentManager.LastNavMeshStatus":
"self.native_last_nav_mesh_status()",
"P:LibreMetaverse.AgentManager.LastNavMeshStatus#set":
"self.native_set_last_nav_mesh_status(value)",
"P:LibreMetaverse.AgentManager.AgentID":
"self.native_agent_id()",
"P:LibreMetaverse.AgentManager.AgentID#set":
"self.native_set_agent_id(value)",
"P:LibreMetaverse.AgentManager.SessionID":
"self.native_session_id()",
"P:LibreMetaverse.AgentManager.SessionID#set":
"self.native_set_session_id(value)",
"P:LibreMetaverse.AgentManager.Acceleration":
"self.native_movement_runtime().acceleration()",
"P:LibreMetaverse.AgentManager.AngularVelocity":
"self.native_movement_runtime().angular_velocity()",
"P:LibreMetaverse.AgentManager.GlobalPosition":
"self.native_movement_runtime().global_position()",
"P:LibreMetaverse.AgentManager.HomePosition":
"self.native_movement_runtime().home_position()",
"P:LibreMetaverse.AgentManager.LastPositionUpdate":
"self.native_movement_runtime().last_position_update()",
"P:LibreMetaverse.AgentManager.LastPositionUpdate#set":
"self.native_movement_runtime().set_last_position_update(value)",
"P:LibreMetaverse.AgentManager.RelativePosition":
"self.native_movement_runtime().relative_position()",
"P:LibreMetaverse.AgentManager.RelativePosition#set":
"self.native_movement_runtime().set_relative_position(value)",
"P:LibreMetaverse.AgentManager.RelativePositionEstimate":
"self.native_movement_runtime().relative_position_estimate()",
"P:LibreMetaverse.AgentManager.RelativePositionEstimate#set":
"self.native_movement_runtime().set_relative_position(value)",
"P:LibreMetaverse.AgentManager.RelativeRotation":
"self.native_movement_runtime().relative_rotation()",
"P:LibreMetaverse.AgentManager.RelativeRotation#set":
"self.native_movement_runtime().set_relative_rotation(value)",
"P:LibreMetaverse.AgentManager.SimPosition":
"self.native_movement_runtime().sim_position()",
"P:LibreMetaverse.AgentManager.SimRotation":
"self.native_movement_runtime().sim_rotation()",
"P:LibreMetaverse.AgentManager.SittingOn":
"self.native_movement_runtime().sitting_on()",
"P:LibreMetaverse.AgentManager.TeleportMessage":
"self.native_movement_runtime().teleport_message()",
"P:LibreMetaverse.AgentManager.TeleportMessage#set":
"self.native_movement_runtime().set_teleport_message(value)",
"P:LibreMetaverse.AgentManager.Velocity":
"self.native_movement_runtime().velocity()",
"E:LibreMetaverse.NetworkManager.Disconnected":
"self.native_subscribe_disconnected(handler)",
"E:LibreMetaverse.NetworkManager.EventQueueRunning":
"self.native_subscribe_event_queue_running(handler)",
"E:LibreMetaverse.NetworkManager.GenericStreamingMessage":
"self.native_subscribe_generic_streaming_message(handler)",
"E:LibreMetaverse.NetworkManager.LoggedOut":
"self.native_subscribe_logged_out(handler)",
"E:LibreMetaverse.NetworkManager.LoginProgress":
"self.native_subscribe_login_progress(handler)",
"E:LibreMetaverse.NetworkManager.PacketSent":
"self.native_subscribe_packet_sent(handler)",
"E:LibreMetaverse.NetworkManager.SimChanged":
"self.native_subscribe_sim_changed(handler)",
"E:LibreMetaverse.NetworkManager.SimConnected":
"self.native_subscribe_sim_connected(handler)",
"E:LibreMetaverse.NetworkManager.SimConnecting":
"self.native_subscribe_sim_connecting(handler)",
"E:LibreMetaverse.NetworkManager.SimDisconnected":
"self.native_subscribe_sim_disconnected(handler)",
"M:LibreMetaverse.NetworkManager.#ctor(LibreMetaverse.GridClient)":
"crate::network_manager::NetworkManager::native_new(client)",
"M:LibreMetaverse.NetworkManager.AbortLogin":
"self.native_abort_login()",
"M:LibreMetaverse.NetworkManager.BeginLogin(LibreMetaverse.LoginParams)":
"self.native_begin_login(login_params)",
"M:LibreMetaverse.NetworkManager.BeginLogout":
"self.native_begin_logout()",
"M:LibreMetaverse.NetworkManager.Connect(System.Net.IPAddress,System.UInt16,System.UInt64,System.Boolean,System.Uri)":
"self.native_connect(std::net::SocketAddr::new(ip, port), handle, set_default, seedcaps, crate::network_manager::Simulator::DEFAULT_REGION_SIZE_X, crate::network_manager::Simulator::DEFAULT_REGION_SIZE_Y)",
"M:LibreMetaverse.NetworkManager.Connect(System.Net.IPAddress,System.UInt16,System.UInt64,System.Boolean,System.Uri,System.UInt32,System.UInt32)":
"self.native_connect(std::net::SocketAddr::new(ip, port), handle, set_default, seedcaps, size_x, size_y)",
"M:LibreMetaverse.NetworkManager.Connect(System.Net.IPEndPoint,System.UInt64,System.Boolean,System.Uri)":
"self.native_connect(end_point, handle, set_default, seedcaps, crate::network_manager::Simulator::DEFAULT_REGION_SIZE_X, crate::network_manager::Simulator::DEFAULT_REGION_SIZE_Y)",
"M:LibreMetaverse.NetworkManager.Connect(System.Net.IPEndPoint,System.UInt64,System.Boolean,System.Uri,System.UInt32,System.UInt32)":
"self.native_connect(end_point, handle, set_default, seedcaps, size_x, size_y)",
"M:LibreMetaverse.NetworkManager.ConnectAsync(System.Net.IPAddress,System.UInt16,System.UInt64,System.Boolean,System.Uri)":
"self.native_connect_async(std::net::SocketAddr::new(ip, port), handle, set_default, seedcaps, crate::network_manager::Simulator::DEFAULT_REGION_SIZE_X, crate::network_manager::Simulator::DEFAULT_REGION_SIZE_Y).await",
"M:LibreMetaverse.NetworkManager.ConnectAsync(System.Net.IPEndPoint,System.UInt64,System.Boolean,System.Uri,System.UInt32,System.UInt32)":
"self.native_connect_async(end_point, handle, set_default, seedcaps, size_x, size_y).await",
"M:LibreMetaverse.NetworkManager.DisconnectSim(LibreMetaverse.Simulator,System.Boolean)":
"self.native_disconnect_sim(simulator, send_close_circuit)",
"M:LibreMetaverse.NetworkManager.EnqueueIncoming(LibreMetaverse.NetworkManager.IncomingPacket)":
"self.native_enqueue_incoming(packet)",
"M:LibreMetaverse.NetworkManager.EnqueueOutgoing(LibreMetaverse.NetworkManager.OutgoingPacket)":
"self.native_enqueue_outgoing(packet)",
"M:LibreMetaverse.NetworkManager.FindSimulator(System.Net.IPEndPoint)":
"Ok(self.native_find_endpoint(end_point))",
"M:LibreMetaverse.Messages.MessageUtils.DecodeEvent(System.String,LibreMetaverse.StructuredData.OSDMap)":
"crate::message_decoder::decode_event(&event_name, &map)",
"M:LibreMetaverse.Messages.MessageUtils.FromDictionaryString(System.Collections.Generic.Dictionary{System.String,System.String})":
"crate::message_decoder::from_dictionary_string(dict)",
"M:LibreMetaverse.Messages.MessageUtils.FromDictionaryUri(System.Collections.Generic.Dictionary{System.Uri,System.Uri})":
"crate::message_decoder::from_dictionary_uri(dict)",
"M:LibreMetaverse.Messages.MessageUtils.FromIP(System.Net.IPAddress)":
"crate::message_decoder::from_ip(address)",
"M:LibreMetaverse.Messages.MessageUtils.ToDictionaryString(LibreMetaverse.StructuredData.OSD)":
"crate::message_decoder::to_dictionary_string(osd)",
"M:LibreMetaverse.Messages.MessageUtils.ToDictionaryUri(LibreMetaverse.StructuredData.OSD)":
"crate::message_decoder::to_dictionary_uri(osd)",
"M:LibreMetaverse.Messages.MessageUtils.ToIP(LibreMetaverse.StructuredData.OSD)":
"crate::message_decoder::to_ip(osd)",
"M:LibreMetaverse.NetworkManager.FindSimulator(System.UInt64)":
"Ok(self.native_find_handle(handle))",
"M:LibreMetaverse.NetworkManager.DefaultLoginParams(System.String,System.String,System.String,System.String,System.String)":
"self.native_default_login_params(first_name, last_name, password, channel, version)",
"M:LibreMetaverse.NetworkManager.GetHashedMAC":
"crate::login::hashed_mac()",
"M:LibreMetaverse.NetworkManager.GetMAC":
"Ok(crate::login::mac_address())",
"M:LibreMetaverse.NetworkManager.GetPlatform":
"Ok(crate::login::platform())",
"M:LibreMetaverse.NetworkManager.GetPlatformVersion":
"Ok(crate::login::platform_version())",
"M:LibreMetaverse.NetworkManager.RefreshMac":
"Ok(crate::login::refresh_mac())",
"M:LibreMetaverse.NetworkManager.Login(LibreMetaverse.LoginResponseData)":
"self.native_login_response(response)",
"M:LibreMetaverse.NetworkManager.LoginAsync(LibreMetaverse.LoginCredential,System.String,System.String,System.String,System.Threading.CancellationToken)":
"self.native_login_credential(credential, channel, Some(start), version, cancellation_token).await",
"M:LibreMetaverse.NetworkManager.LoginAsync(LibreMetaverse.LoginCredential,System.String,System.String,System.Threading.CancellationToken)":
"self.native_login_credential(credential, channel, None, version, cancellation_token).await",
"M:LibreMetaverse.NetworkManager.LoginAsync(LibreMetaverse.LoginParams,System.Threading.CancellationToken)":
"self.native_login(login_params, cancellation_token).await",
"M:LibreMetaverse.NetworkManager.LoginAsync(System.String,System.String,System.String,System.String,System.String,System.String,System.Threading.CancellationToken)":
"self.native_login_strings(first_name, last_name, password, channel, start, version, cancellation_token).await",
"M:LibreMetaverse.NetworkManager.LoginWithResponseAsync(LibreMetaverse.LoginCredential,System.String,System.String,System.String,System.Threading.CancellationToken)":
"self.native_login_credential_response(credential, channel, Some(start), version, cancellation_token).await",
"M:LibreMetaverse.NetworkManager.LoginWithResponseAsync(LibreMetaverse.LoginCredential,System.String,System.String,System.Threading.CancellationToken)":
"self.native_login_credential_response(credential, channel, None, version, cancellation_token).await",
"M:LibreMetaverse.NetworkManager.LoginWithResponseAsync(LibreMetaverse.LoginParams,System.Threading.CancellationToken)":
"self.native_login_response_async(login_params, cancellation_token).await",
"M:LibreMetaverse.NetworkManager.LoginWithResponseAsync(System.String,System.String,System.String,System.String,System.String,System.String,System.Threading.CancellationToken)":
"self.native_login_strings_response(first_name, last_name, password, channel, start, version, cancellation_token).await",
"M:LibreMetaverse.NetworkManager.Logout":
"self.native_logout()",
"M:LibreMetaverse.NetworkManager.LogoutAsync(System.Threading.CancellationToken)":
"self.native_logout_async(cancellation_token).await",
"M:LibreMetaverse.NetworkManager.RegisterLoginResponseCallback(LibreMetaverse.NetworkManager.LoginResponseCallback)":
"self.native_register_login_response_callback(callback, None)",
"M:LibreMetaverse.NetworkManager.RegisterLoginResponseCallback(LibreMetaverse.NetworkManager.LoginResponseCallback,System.String[])":
"self.native_register_login_response_callback(callback, options)",
"M:LibreMetaverse.NetworkManager.RequestLogout":
"self.native_request_logout()",
"M:LibreMetaverse.NetworkManager.StartLocation(System.String,System.Int32,System.Int32,System.Int32)":
"Ok(crate::login::start_location(&sim, x, y, z))",
"M:LibreMetaverse.NetworkManager.UnregisterLoginResponseCallback(LibreMetaverse.NetworkManager.LoginResponseCallback)":
"self.native_unregister_login_response_callback(&callback)",
"M:LibreMetaverse.InventoryFolder.#ctor(LibreMetaverse.UUID)":
"Ok(Self { base: crate::InventoryBase { native_uuid: uuid, native_owner_id: libremetaverse_types::UUID::zero(), native_parent_uuid: libremetaverse_types::UUID::zero(), native_name: String::new() }, native_descendent_count: 0, native_preferred_type: libremetaverse_types::FolderType::None, native_version: Self::VERSION_UNKNOWN })",
"P:LibreMetaverse.InventoryBase.Name":
"self.native_name.clone()",
"P:LibreMetaverse.InventoryBase.Name#set":
"self.native_name = value",
"P:LibreMetaverse.InventoryBase.OwnerID":
"self.native_owner_id",
"P:LibreMetaverse.InventoryBase.OwnerID#set":
"self.native_owner_id = value",
"P:LibreMetaverse.InventoryBase.ParentUUID":
"self.native_parent_uuid",
"P:LibreMetaverse.InventoryBase.ParentUUID#set":
"self.native_parent_uuid = value",
"P:LibreMetaverse.InventoryBase.UUID":
"self.native_uuid",
"P:LibreMetaverse.InventoryBase.UUID#set":
"self.native_uuid = value",
"P:LibreMetaverse.InventoryFolder.DescendentCount":
"self.native_descendent_count",
"P:LibreMetaverse.InventoryFolder.DescendentCount#set":
"self.native_descendent_count = value",
"P:LibreMetaverse.InventoryFolder.PreferredType":
"self.native_preferred_type",
"P:LibreMetaverse.InventoryFolder.PreferredType#set":
"self.native_preferred_type = value",
"P:LibreMetaverse.InventoryFolder.Version":
"self.native_version",
"P:LibreMetaverse.InventoryFolder.Version#set":
"self.native_version = value",
"M:LibreMetaverse.NetworkManager.RegisterCallback(LibreMetaverse.Packets.PacketType,System.EventHandler{LibreMetaverse.PacketReceivedEventArgs})":
"self.native_register_callback(type_, callback, true)",
"M:LibreMetaverse.NetworkManager.RegisterCallback(LibreMetaverse.Packets.PacketType,System.EventHandler{LibreMetaverse.PacketReceivedEventArgs},System.Boolean)":
"self.native_register_callback(type_, callback, is_async)",
"M:LibreMetaverse.NetworkManager.RegisterEventCallback(System.String,LibreMetaverse.Caps.EventQueueCallback)":
"self.native_register_caps(caps_event, callback)",
"M:LibreMetaverse.NetworkManager.SendPacket(LibreMetaverse.Packets.Packet)":
"self.native_send_packet(packet, None)",
"M:LibreMetaverse.NetworkManager.SendPacket(LibreMetaverse.Packets.Packet,LibreMetaverse.Simulator)":
"self.native_send_packet(packet, simulator)",
"M:LibreMetaverse.NetworkManager.Shutdown(LibreMetaverse.NetworkManager.DisconnectType)":
"self.native_shutdown(type_, format!(\"{type_:?}\"))",
"M:LibreMetaverse.NetworkManager.Shutdown(LibreMetaverse.NetworkManager.DisconnectType,System.String)":
"self.native_shutdown(type_, message)",
"M:LibreMetaverse.NetworkManager.ShutdownAsync(LibreMetaverse.NetworkManager.DisconnectType,System.String)":
"self.native_shutdown_async(type_, message).await",
"M:LibreMetaverse.NetworkManager.UnregisterCallback(LibreMetaverse.Packets.PacketType,System.EventHandler{LibreMetaverse.PacketReceivedEventArgs})":
"self.native_unregister_callback(type_, callback)",
"M:LibreMetaverse.NetworkManager.UnregisterEventCallback(System.String,LibreMetaverse.Caps.EventQueueCallback)":
"self.native_unregister_caps(caps_event, callback)",
"P:LibreMetaverse.NetworkManager.CircuitCode":
"self.native_circuit_code()",
"P:LibreMetaverse.NetworkManager.CircuitCode#set":
"self.native_set_circuit_code(value)",
"P:LibreMetaverse.NetworkManager.Connected":
"self.native_connected()",
"P:LibreMetaverse.NetworkManager.Connected#set":
"self.native_set_connected(value)",
"P:LibreMetaverse.NetworkManager.CurrentSim":
"self.native_current_sim()",
"P:LibreMetaverse.NetworkManager.CurrentSim#set":
"self.native_set_current_sim(value)",
"P:LibreMetaverse.NetworkManager.InboxCount":
"self.native_inbox_count()",
"P:LibreMetaverse.NetworkManager.AccountLevelBenefits":
"self.native_account_level_benefits()",
"P:LibreMetaverse.NetworkManager.AgentAppearanceServiceURL":
"self.native_agent_appearance_service_url()",
"P:LibreMetaverse.NetworkManager.LoginErrorKey":
"self.native_login_error_key()",
"P:LibreMetaverse.NetworkManager.LoginErrorKey#set":
"self.native_set_login_error_key(value)",
"P:LibreMetaverse.NetworkManager.LoginMessage":
"self.native_login_message()",
"P:LibreMetaverse.NetworkManager.LoginMessage#set":
"self.native_set_login_message(value)",
"P:LibreMetaverse.NetworkManager.LoginSeedCapability":
"self.native_login_seed_capability()",
"P:LibreMetaverse.NetworkManager.LoginSeedCapability#set":
"self.native_set_login_seed_capability(value)",
"P:LibreMetaverse.NetworkManager.LoginStatusCode":
"self.native_login_status_code()",
"P:LibreMetaverse.NetworkManager.LoginStatusCode#set":
"self.native_set_login_status_code(value)",
"P:LibreMetaverse.NetworkManager.MaxAgentGroups":
"self.native_max_agent_groups()",
"P:LibreMetaverse.NetworkManager.OutboxCount":
"self.native_outbox_count()",
"M:LibreMetaverse.Simulator.#ctor(LibreMetaverse.GridClient,System.Net.IPEndPoint,System.UInt64,System.UInt32,System.UInt32)":
"crate::network_manager::Simulator::native_new(client, address, handle, size_x, size_y)",
"M:LibreMetaverse.Simulator.Connect(System.Boolean)":
"self.native_connect(move_to_sim)",
"M:LibreMetaverse.Simulator.ConnectAsync(System.Boolean)":
"self.native_connect_async(move_to_sim).await",
"M:LibreMetaverse.Simulator.Disconnect(System.Boolean)":
"self.native_disconnect(send_close_circuit)",
"M:LibreMetaverse.Simulator.Dispose":
"self.native_dispose()",
"M:LibreMetaverse.Simulator.Equals(System.Object)":
"self.native_equals(obj)",
"M:LibreMetaverse.Simulator.GetHashCode":
"self.native_hash_code()",
"M:LibreMetaverse.Simulator.IsEventQueueRunning(System.Boolean)":
"self.native_is_event_queue_running(block_until_running)",
"M:LibreMetaverse.Simulator.Pause":
"self.native_pause()",
"M:LibreMetaverse.Simulator.Resume":
"self.native_resume()",
"M:LibreMetaverse.Simulator.SendPacket(LibreMetaverse.Packets.Packet)":
"self.native_send_packet(packet)",
"M:LibreMetaverse.Simulator.SendPacketData(System.Byte[],System.Int32,LibreMetaverse.Packets.PacketType,System.Boolean)":
"self.native_send_packet_data(data, data_length, type_, do_zerocode)",
"M:LibreMetaverse.Simulator.SendPing":
"self.native_send_ping()",
"M:LibreMetaverse.Simulator.SetSeedCaps(System.Uri,System.Boolean)":
"self.native_set_seed_caps(seedcaps, changed_sim)",
"M:LibreMetaverse.Simulator.ToString":
"self.native_to_string()",
"M:LibreMetaverse.Simulator.UseCircuitCode(System.Boolean)":
"self.native_use_circuit_code(wait_for_ack)",
"M:LibreMetaverse.Simulator.UseCircuitCodeAsync(System.Boolean)":
"self.native_use_circuit_code_async(wait_for_ack).await",
"M:LibreMetaverse.Simulator.op_Equality(LibreMetaverse.Simulator,LibreMetaverse.Simulator)":
"lhs == rhs",
"M:LibreMetaverse.Simulator.op_Inequality(LibreMetaverse.Simulator,LibreMetaverse.Simulator)":
"lhs != rhs",
"P:LibreMetaverse.Simulator.Connected":
"self.native_is_connected()",
"P:LibreMetaverse.Simulator.HandshakeComplete":
"self.native_handshake_complete()",
"P:LibreMetaverse.Simulator.IPEndPoint":
"self.native_ip_end_point()",
"P:LibreMetaverse.GridClient.Settings":
"&mut self.settings",
"P:LibreMetaverse.GridClient.TimeProvider":
"self.time_provider.clone()",
"P:LibreMetaverse.GridClient.TimeProvider#set":
"self.time_provider = value",
"F:LibreMetaverse.Settings.BindAddress":
"std::net::IpAddr::V4(std::net::Ipv4Addr::UNSPECIFIED)",
"F:LibreMetaverse.Settings.LogLevel":
"crate::logging::LogLevel(1)",
"F:LibreMetaverse.Settings.MaxHttpConnections":
"32",
"F:LibreMetaverse.Settings.PacketArchiveSize":
"1000",
"F:LibreMetaverse.Settings.ResourceDir":
'"linden".to_owned()',
"F:LibreMetaverse.Settings.SimulatorPoolTimeout":
"120_000",
"F:LibreMetaverse.Settings.TexturePipelineRefreshInterval":
"500.0",
"F:LibreMetaverse.Settings.UdpReceiveQueueCapacity":
"512",
"F:LibreMetaverse.Settings.UserAgent":
'"LibreMetaverse".to_owned()',
"M:LibreMetaverse.Settings.#ctor(LibreMetaverse.GridClient)":
"Ok(crate::client_core::Settings::defaults())",
"P:LibreMetaverse.Settings.Agent":
"self.agent.clone()",
"P:LibreMetaverse.Settings.AssetCache":
"self.asset_cache.clone()",
"P:LibreMetaverse.Settings.Connection":
"self.connection.clone()",
"P:LibreMetaverse.Settings.Logging":
"self.logging.clone()",
"P:LibreMetaverse.Settings.Packets":
"self.packets.clone()",
"P:LibreMetaverse.Settings.Parcel":
"self.parcel.clone()",
"P:LibreMetaverse.Settings.TexturePipeline":
"self.texture_pipeline.clone()",
"P:LibreMetaverse.Settings.Timing":
"&mut self.timing",
"P:LibreMetaverse.Settings.UploadCost":
"self.upload_cost",
"P:LibreMetaverse.Settings.UploadCost#set":
"self.upload_cost = value",
"P:LibreMetaverse.Settings.World":
"self.world.clone()",
"M:LibreMetaverse.Avatar.#ctor":
"crate::visual_catalog::new_avatar()",
"M:LibreMetaverse.Avatar.DecodeVisualParams":
"Ok(crate::visual_catalog::decode_visual_params(&self.visual_parameters))",
"M:LibreMetaverse.AvatarAppearanceEventArgs.#ctor(LibreMetaverse.Simulator,LibreMetaverse.UUID,System.Boolean,LibreMetaverse.Primitive.TextureEntryFace,LibreMetaverse.Primitive.TextureEntryFace[],System.Collections.Generic.List{System.Byte},System.Byte,System.Int32,LibreMetaverse.AppearanceFlags,System.Int32)":
"Ok(Self { stored_visual_params: visual_params })",
"M:LibreMetaverse.AvatarAppearanceEventArgs.DecodeVisualParams":
"Ok(crate::visual_catalog::decode_visual_params(&self.stored_visual_params))",
"P:LibreMetaverse.AvatarAppearanceEventArgs.VisualParams":
"self.stored_visual_params.clone()",
"M:LibreMetaverse.Primitive.GetGrassDefinition":
"crate::foliage_catalog::grass_by_id(self.prim_data.state)",
"M:LibreMetaverse.Primitive.GetTreeDefinition":
"crate::foliage_catalog::TreeDefinitions::get(self.tree_species)",
"M:LibreMetaverse.Primitive.TextureEntryFace.#ctor(LibreMetaverse.Primitive.TextureEntryFace)":
"crate::visual_catalog::new_texture_entry_face()",
"M:LibreMetaverse.StructuredData.OSDParser.BufferCharactersEqual(System.IO.StringReader,System.Char[],System.Int32)":
"crate::notation::buffer_characters_equal(reader, buffer, offset)",
"M:LibreMetaverse.StructuredData.OSDParser.ConsumeBytes(System.IO.Stream,System.Int32)":
"crate::binary::consume_bytes(stream, consume_bytes)",
"M:LibreMetaverse.StructuredData.OSDParser.DeserializeLLSDBinary(System.Byte[])":
"crate::binary::deserialize_bytes(binary_data)",
"M:LibreMetaverse.StructuredData.OSDParser.DeserializeLLSDBinary(System.IO.Stream)":
"crate::binary::deserialize_stream(stream)",
"M:LibreMetaverse.StructuredData.OSDParser.DeserializeLLSDNotation(System.IO.StringReader)":
"crate::notation::deserialize_reader(reader)",
"M:LibreMetaverse.StructuredData.OSDParser.DeserializeLLSDNotation(System.String)":
"crate::notation::deserialize_string(notation_data)",
"M:LibreMetaverse.StructuredData.OSDParser.DeserializeLLSDProtobuf(System.Byte[])":
"crate::protobuf::deserialize_bytes(data)",
"M:LibreMetaverse.StructuredData.OSDParser.DeserializeLLSDProtobuf(System.IO.Stream)":
"crate::protobuf::deserialize_stream(stream)",
"M:LibreMetaverse.StructuredData.OSDParser.DeserializeJson(System.IO.Stream)":
"crate::json_codec::deserialize_stream(json)",
"M:LibreMetaverse.StructuredData.OSDParser.DeserializeJson(System.String)":
"crate::json_codec::deserialize_string(json)",
"M:LibreMetaverse.StructuredData.OSDParser.DeserializeLLSDXml(System.Byte[])":
"crate::xml_codec::deserialize_bytes(xml_data)",
"M:LibreMetaverse.StructuredData.OSDParser.DeserializeLLSDXml(System.IO.Stream)":
"crate::xml_codec::deserialize_stream(xml_stream)",
"M:LibreMetaverse.StructuredData.OSDParser.DeserializeLLSDXml(System.String)":
"crate::xml_codec::deserialize_string(xml_data)",
"M:LibreMetaverse.StructuredData.OSDParser.DeserializeLLSDXml(System.Xml.XmlReader)":
"crate::xml_codec::deserialize_reader(xml_data)",
"M:LibreMetaverse.StructuredData.OSDParser.EscapeCharacter(System.String,System.Char)":
"crate::notation::escape_character(s, c)",
"M:LibreMetaverse.StructuredData.OSDParser.FindByte(System.IO.Stream,System.Byte)":
"crate::binary::find_byte(stream, to_find)",
"M:LibreMetaverse.StructuredData.OSDParser.FindString(System.IO.Stream,System.String)":
"crate::binary::find_string(stream, to_find)",
"M:LibreMetaverse.StructuredData.OSDParser.GetLengthInBrackets(System.IO.StringReader)":
"crate::notation::get_length_in_brackets(reader)",
"M:LibreMetaverse.StructuredData.OSDParser.GetStringDelimitedBy(System.IO.StringReader,System.Char)":
"crate::notation::get_string_delimited_by(reader, delimiter)",
"M:LibreMetaverse.StructuredData.OSDParser.HostToNetworkIntBytes(System.Int32)":
"crate::binary::host_to_network_int_bytes(int_host_end)",
"M:LibreMetaverse.StructuredData.OSDParser.NetworkToHostDouble(System.Byte[])":
"crate::binary::network_to_host_double(binary_net_end)",
"M:LibreMetaverse.StructuredData.OSDParser.NetworkToHostInt(System.Byte[])":
"crate::binary::network_to_host_int(binary_net_end)",
"M:LibreMetaverse.StructuredData.OSDParser.PeekAndSkipWhitespace(System.IO.StringReader)":
"crate::notation::peek_and_skip_whitespace(reader)",
"M:LibreMetaverse.StructuredData.OSDParser.ReadAndSkipWhitespace(System.IO.StringReader)":
"crate::notation::read_and_skip_whitespace(reader)",
"M:LibreMetaverse.StructuredData.OSDParser.SerializeLLSDBinary(LibreMetaverse.StructuredData.OSD)":
"crate::binary::serialize(osd)",
"M:LibreMetaverse.StructuredData.OSDParser.SerializeLLSDBinary(LibreMetaverse.StructuredData.OSD,System.Boolean)":
"crate::binary::serialize_with_header(osd, prepend_header)",
"M:LibreMetaverse.StructuredData.OSDParser.SerializeLLSDBinaryStream(LibreMetaverse.StructuredData.OSD)":
"crate::binary::serialize_stream(data)",
"M:LibreMetaverse.StructuredData.OSDParser.SerializeLLSDBinaryStream(LibreMetaverse.StructuredData.OSD,System.Boolean)":
"crate::binary::serialize_stream_with_header(data, prepend_header)",
"M:LibreMetaverse.StructuredData.OSDParser.SerializeJsonString(LibreMetaverse.StructuredData.OSD,System.Boolean)":
"crate::json_codec::serialize(osd, preserve_defaults)",
"M:LibreMetaverse.StructuredData.OSDParser.SerializeLLSDInnerXmlString(LibreMetaverse.StructuredData.OSD)":
"crate::xml_codec::serialize_inner(data)",
"M:LibreMetaverse.StructuredData.OSDParser.SerializeLLSDNotation(LibreMetaverse.StructuredData.OSD)":
"crate::notation::serialize(osd)",
"M:LibreMetaverse.StructuredData.OSDParser.SerializeLLSDNotationFormatted(LibreMetaverse.StructuredData.OSD)":
"crate::notation::serialize_formatted(osd)",
"M:LibreMetaverse.StructuredData.OSDParser.SerializeLLSDNotationStream(LibreMetaverse.StructuredData.OSD)":
"crate::notation::serialize_stream(osd)",
"M:LibreMetaverse.StructuredData.OSDParser.SerializeLLSDNotationStreamFormatted(LibreMetaverse.StructuredData.OSD)":
"crate::notation::serialize_stream_formatted(osd)",
"M:LibreMetaverse.StructuredData.OSDParser.SerializeLLSDProtobuf(LibreMetaverse.StructuredData.OSD,System.Boolean)":
"crate::protobuf::serialize(osd, prepend_header)",
"M:LibreMetaverse.StructuredData.OSDParser.SerializeLLSDXmlBytes(LibreMetaverse.StructuredData.OSD)":
"crate::xml_codec::serialize_bytes(data)",
"M:LibreMetaverse.StructuredData.OSDParser.SerializeLLSDXmlElement(System.Xml.XmlWriter,LibreMetaverse.StructuredData.OSD)":
"crate::xml_codec::serialize_element(writer, data)",
"M:LibreMetaverse.StructuredData.OSDParser.SerializeLLSDXmlString(LibreMetaverse.StructuredData.OSD)":
"crate::xml_codec::serialize_string(data)",
"M:LibreMetaverse.StructuredData.OSDParser.SkipWhiteSpace(System.IO.Stream)":
"crate::binary::skip_whitespace(stream)",
"M:LibreMetaverse.StructuredData.OSDParser.UnescapeCharacter(System.String,System.Char)":
"crate::notation::unescape_character(s, c)",
"M:LibreMetaverse.StructuredData.OSDParser.Deserialize(System.Byte[])":
"crate::dispatch::deserialize_bytes(data)",
"M:LibreMetaverse.StructuredData.OSDParser.Deserialize(System.IO.Stream)":
"crate::dispatch::deserialize_stream(stream)",
"M:LibreMetaverse.StructuredData.OSDParser.Deserialize(System.String)":
"crate::dispatch::deserialize_string(data)",
"M:LibreMetaverse.Utils.ReadSingleLittleEndian(System.Byte[],System.Int32)":
"crate::byte_order::read_single_little_endian(src, pos)",
"M:LibreMetaverse.Utils.WriteSingleLittleEndian(System.Byte[],System.Int32,System.Single)":
"crate::byte_order::write_single_little_endian(dest, pos, value)",
"M:LibreMetaverse.Utils.ReadDoubleLittleEndian(System.Byte[],System.Int32)":
"crate::byte_order::read_double_little_endian(src, pos)",
"M:LibreMetaverse.Utils.WriteDoubleLittleEndian(System.Byte[],System.Int32,System.Double)":
"crate::byte_order::write_double_little_endian(dest, pos, value)",
}
CLIENT_CORE_NATIVE_OWNERS = (
"AgentSettings",
"AssetCacheSettings",
"ConnectionSettings",
"GridClient",
"LoggingSettings",
"PacketSettings",
"ParcelSettings",
"Settings",
"TexturePipelineSettings",
"TimingSettings",
"WorldSettings",
)
NETWORK_NATIVE_OWNERS = (
"InventoryBase",
"InventoryFolder",
"NetworkManager",
"Simulator",
)
NATIVE_OWNER_BOUNDS = {
"T:LibreMetaverse.CacheDictionary`2": {
"TKey": "TKey: Clone + PartialEq",
"TValue": "TValue: Clone + PartialEq",
},
"T:LibreMetaverse.CacheDictionary`2.CacheDictionaryEnumerator": {
"TKey": "TKey: Clone",
"TValue": "TValue: Clone",
},
"T:LibreMetaverse.DoubleDictionary`3": {
"TKey1": "TKey1: Clone + PartialEq",
"TKey2": "TKey2: Clone + PartialEq",
"TValue": "TValue: Clone + PartialEq",
},
"T:LibreMetaverse.EmptyRemovalStrategy`1": {"TKey": "TKey: Clone + PartialEq + Send"},
"T:LibreMetaverse.ExpiringCache`2": {
"TKey": "TKey: Clone + PartialEq",
"TValue": "TValue: Clone",
},
"T:LibreMetaverse.LruRemovalStrategy`1": {"TKey": "TKey: Clone + PartialEq + Send"},
"T:LibreMetaverse.MruRemovalStrategy`1": {"TKey": "TKey: Clone + PartialEq + Send"},
"T:LibreMetaverse.MultiValueDictionary`2": {
"TKey": "TKey: Clone + PartialEq",
"TValue": "TValue: Clone + PartialEq",
},
}
MAIN_TARGET = ROOT / "crates/libremetaverse/src/generated.rs"
WIRE_NAMESPACES = (
"LibreMetaverse.Assets",
"LibreMetaverse.Formatters",
"LibreMetaverse.Imaging",
"LibreMetaverse.ImportExport",
"LibreMetaverse.Materials",
"LibreMetaverse.Messages",
"LibreMetaverse.Packets",
"LibreMetaverse.Rendering",
)
WIRE_ROOT_TYPES = {
"T:LibreMetaverse.Animation",
"T:LibreMetaverse.BitPack",
"T:LibreMetaverse.Bumpiness",
"T:LibreMetaverse.FieldType",
"T:LibreMetaverse.GLTFMaterialUpdate",
"T:LibreMetaverse.Grass",
"T:LibreMetaverse.GrassDefinition",
"T:LibreMetaverse.Interfaces.IMessage",
"T:LibreMetaverse.LiveParticle",
"T:LibreMetaverse.MappingType",
"T:LibreMetaverse.MediaControls",
"T:LibreMetaverse.MediaEntry",
"T:LibreMetaverse.MediaPermission",
"T:LibreMetaverse.NameValue",
"T:LibreMetaverse.NameValue.ClassType",
"T:LibreMetaverse.NameValue.SendtoType",
"T:LibreMetaverse.NameValue.ValueType",
"T:LibreMetaverse.PacketFrequency",
"T:LibreMetaverse.PermissionMask",
"T:LibreMetaverse.PermissionWho",
"T:LibreMetaverse.Permissions",
"T:LibreMetaverse.Shininess",
"T:LibreMetaverse.TextureAttributes",
"T:LibreMetaverse.Tree",
"T:LibreMetaverse.TreeDefinition",
}
COMPOSED_BASE_TYPES = {
"T:LibreMetaverse.InventoryAnimation",
"T:LibreMetaverse.InventoryAttachment",
"T:LibreMetaverse.InventoryCallingCard",
"T:LibreMetaverse.InventoryCategory",
"T:LibreMetaverse.InventoryFolder",
"T:LibreMetaverse.InventoryGesture",
"T:LibreMetaverse.InventoryItem",
"T:LibreMetaverse.InventoryLSL",
"T:LibreMetaverse.InventoryLandmark",
"T:LibreMetaverse.InventoryMaterial",
"T:LibreMetaverse.InventoryNotecard",
"T:LibreMetaverse.InventoryObject",
"T:LibreMetaverse.InventorySettings",
"T:LibreMetaverse.InventorySnapshot",
"T:LibreMetaverse.InventorySound",
"T:LibreMetaverse.InventoryTexture",
"T:LibreMetaverse.InventoryWearable",
"T:LibreMetaverse.Messages.Linden.ChatSessionAcceptInvitation",
"T:LibreMetaverse.Messages.Linden.ChatSessionRequestMuteUpdate",
"T:LibreMetaverse.Messages.Linden.ChatSessionRequestStartConference",
"T:LibreMetaverse.Messages.Linden.MapLayerReplyVariant",
"T:LibreMetaverse.Packets.DirPlacesReplyPacket",
"T:LibreMetaverse.Packets.TestMessagePacket",
"T:LibreMetaverse.Rendering.Joint",
}
NATIVE_MESSAGE_CODEC_TYPES = {
"T:LibreMetaverse.Messages.Linden.AgentDropGroupMessage",
"T:LibreMetaverse.Messages.Linden.AgentDropGroupMessage.AgentData",
"T:LibreMetaverse.Messages.Linden.AgentGroupDataUpdateMessage",
"T:LibreMetaverse.Messages.Linden.AgentGroupDataUpdateMessage.GroupData",
"T:LibreMetaverse.Messages.Linden.AgentGroupDataUpdateMessage.NewGroupData",
"T:LibreMetaverse.Messages.Linden.AgentStateUpdateMessage",
"T:LibreMetaverse.Messages.Linden.BulkUpdateInventoryMessage",
"T:LibreMetaverse.Messages.Linden.BulkUpdateInventoryMessage.FolderDataInfo",
"T:LibreMetaverse.Messages.Linden.BulkUpdateInventoryMessage.ItemDataInfo",
"T:LibreMetaverse.Messages.Linden.ChatSessionAcceptInvitation",
"T:LibreMetaverse.Messages.Linden.ChatSessionRequestBlock",
"T:LibreMetaverse.Messages.Linden.ChatSessionRequestMuteUpdate",
"T:LibreMetaverse.Messages.Linden.ChatSessionRequestStartConference",
"T:LibreMetaverse.Messages.Linden.ChatterBoxInvitationMessage",
"T:LibreMetaverse.Messages.Linden.ChatterBoxSessionAgentListUpdatesMessage",
"T:LibreMetaverse.Messages.Linden.ChatterBoxSessionAgentListUpdatesMessage.AgentUpdatesBlock",
"T:LibreMetaverse.Messages.Linden.ChatterBoxSessionStartReplyMessage",
"T:LibreMetaverse.Messages.Linden.ChatterboxSessionEventReplyMessage",
"T:LibreMetaverse.Messages.Linden.CopyInventoryFromNotecardMessage",
"T:LibreMetaverse.Messages.Linden.CrossedRegionMessage",
"T:LibreMetaverse.Messages.Linden.DirLandReplyMessage",
"T:LibreMetaverse.Messages.Linden.DirLandReplyMessage.QueryReply",
"T:LibreMetaverse.Messages.Linden.EnableSimulatorMessage",
"T:LibreMetaverse.Messages.Linden.EnableSimulatorMessage.SimulatorInfoBlock",
"T:LibreMetaverse.Messages.Linden.EstablishAgentCommunicationMessage",
"T:LibreMetaverse.Messages.Linden.ForceCloseChatterBoxSessionMessage",
"T:LibreMetaverse.Messages.Linden.GetDisplayNamesMessage",
"T:LibreMetaverse.Messages.Linden.GetObjectCostMessage",
"T:LibreMetaverse.Messages.Linden.GetObjectCostRequest",
"T:LibreMetaverse.Messages.Linden.LandResourcesMessage",
"T:LibreMetaverse.Messages.Linden.LandResourcesRequest",
"T:LibreMetaverse.Messages.Linden.LandStatReplyMessage",
"T:LibreMetaverse.Messages.Linden.LandStatReplyMessage.ReportDataBlock",
"T:LibreMetaverse.Messages.Linden.MapLayerMessageBase",
"T:LibreMetaverse.Messages.Linden.MapLayerReplyVariant",
"T:LibreMetaverse.Messages.Linden.MapLayerReplyVariant.LayerData",
"T:LibreMetaverse.Messages.Linden.NavMeshStatusUpdateMessage",
"T:LibreMetaverse.Messages.Linden.ObjectMediaNavigateMessage",
"T:LibreMetaverse.Messages.Linden.ObjectMediaRequest",
"T:LibreMetaverse.Messages.Linden.ObjectMediaResponse",
"T:LibreMetaverse.Messages.Linden.ObjectMediaUpdate",
"T:LibreMetaverse.Messages.Linden.ObjectPhysicsPropertiesMessage",
"T:LibreMetaverse.Messages.Linden.ParcelObjectOwnersReplyMessage",
"T:LibreMetaverse.Messages.Linden.ParcelObjectOwnersReplyMessage.PrimOwner",
"T:LibreMetaverse.Messages.Linden.ParcelPropertiesMessage",
"T:LibreMetaverse.Messages.Linden.ParcelPropertiesUpdateMessage",
"T:LibreMetaverse.Messages.Linden.ParcelVoiceInfoRequestMessage",
"T:LibreMetaverse.Messages.Linden.PlacesReplyMessage",
"T:LibreMetaverse.Messages.Linden.PlacesReplyMessage.QueryData",
"T:LibreMetaverse.Messages.Linden.ProvisionVoiceAccountRequestMessage",
"T:LibreMetaverse.Messages.Linden.RemoteParcelRequestReply",
"T:LibreMetaverse.Messages.Linden.RegionInfoMessage",
"T:LibreMetaverse.Messages.Linden.RenderMaterialsMessage",
"T:LibreMetaverse.Messages.Linden.RequiredVoiceVersionMessage",
"T:LibreMetaverse.Messages.Linden.ScriptRunningReplyMessage",
"T:LibreMetaverse.Messages.Linden.SearchStatRequestReply",
"T:LibreMetaverse.Messages.Linden.SearchStatRequestRequest",
"T:LibreMetaverse.Messages.Linden.SendPostcardMessage",
"T:LibreMetaverse.Messages.Linden.SetDisplayNameMessage",
"T:LibreMetaverse.Messages.Linden.SetDisplayNameReplyMessage",
"T:LibreMetaverse.Messages.Linden.DisplayNameUpdateMessage",
"T:LibreMetaverse.Messages.Linden.SimConsoleResponseMessage",
"T:LibreMetaverse.Messages.Linden.TeleportFailedMessage",
"T:LibreMetaverse.Messages.Linden.TeleportFinishMessage",
"T:LibreMetaverse.Messages.Linden.UpdateAgentInformationMessage",
"T:LibreMetaverse.Messages.Linden.UpdateAgentInventoryRequestMessage",
"T:LibreMetaverse.Messages.Linden.UpdateAgentLanguageMessage",
"T:LibreMetaverse.Messages.Linden.UpdateScriptAgentRequestMessage",
"T:LibreMetaverse.Messages.Linden.UpdateScriptTaskUpdateMessage",
"T:LibreMetaverse.Messages.Linden.UploaderRequestComplete",
"T:LibreMetaverse.Messages.Linden.UploaderRequestUpload",
"T:LibreMetaverse.Messages.Linden.ViewerStatsMessage",
}
OPEN_ENUM_IDS = {"T:LibreMetaverse.BakeType", "T:LibreMetaverse.HoleType"}
TRAIT_SUPERTRAITS = {
"T:LibreMetaverse.IBakingTextureProvider": "std::any::Any",
"T:LibreMetaverse.Interfaces.IMessage": "std::any::Any",
"T:LibreMetaverse.Appearance.ICurrentOutfitPolicy": "Send + Sync",
}
CORE_NAMESPACES = (
"LibreMetaverse.Http",
"LibreMetaverse.Stats",
"LibreMetaverse.Threading",
)
CORE_ROOT_TYPES = {
"T:LibreMetaverse.CapabilitiesReceivedEventArgs",
"T:LibreMetaverse.Caps",
"T:LibreMetaverse.Caps.EventQueueCallback",
"T:LibreMetaverse.CapsCategory",
"T:LibreMetaverse.CapsEventDictionary",
"T:LibreMetaverse.CapsRateLimiter",
"T:LibreMetaverse.CapsRateLimiterOptions",
"T:LibreMetaverse.ConnectionSettings",
"T:LibreMetaverse.DisconnectedEventArgs",
"T:LibreMetaverse.DisposalHelper.DisposalGuard",
"T:LibreMetaverse.DisposalHelper",
"T:LibreMetaverse.EventQueueRunningEventArgs",
"T:LibreMetaverse.EventSubscription`1",
"T:LibreMetaverse.EventSubscriptionHelper",
"T:LibreMetaverse.FileHelper",
"T:LibreMetaverse.DictionaryChangeCallback",
"T:LibreMetaverse.DictionaryEventAction",
"T:LibreMetaverse.GenericStreamingMessageEventArgs",
"T:LibreMetaverse.GenericStreamingMethod",
"T:LibreMetaverse.GridClient",
"T:LibreMetaverse.GridClientBakingTextureProvider",
"T:LibreMetaverse.GridClientServiceCollectionExtensions",
"T:LibreMetaverse.Helpers",
"T:LibreMetaverse.HomeInfo",
"T:LibreMetaverse.HttpCapsClient",
"T:LibreMetaverse.IBakingTextureProvider",
"T:LibreMetaverse.IGridClient",
"T:LibreMetaverse.ImageCodec",
"T:LibreMetaverse.ImageDownload",
"T:LibreMetaverse.ImageReceiveProgressEventArgs",
"T:LibreMetaverse.ImageRequest",
"T:LibreMetaverse.ImageType",
"T:LibreMetaverse.IncomingPacketIDCollection",
"T:LibreMetaverse.Interfaces.IByteBufferPool",
"T:LibreMetaverse.Logger",
"T:LibreMetaverse.Logger.LogCallback",
"T:LibreMetaverse.LoggingSettings",
"T:LibreMetaverse.LoginCredential",
"T:LibreMetaverse.LoginException",
"T:LibreMetaverse.LoginParams",
"T:LibreMetaverse.LoginProgressEventArgs",
"T:LibreMetaverse.LoginResponseData",
"T:LibreMetaverse.LoginResponseData.ParseMessage",
"T:LibreMetaverse.LoginResponseData.ParseMessageLevel",
"T:LibreMetaverse.LoginResponseData.ParseResult",
"T:LibreMetaverse.LoginState",
"T:LibreMetaverse.LoginStatus",
"T:LibreMetaverse.LoggedOutEventArgs",
"T:LibreMetaverse.NetworkManager",
"T:LibreMetaverse.NetworkManager.DisconnectType",
"T:LibreMetaverse.NetworkManager.IncomingPacket",
"T:LibreMetaverse.NetworkManager.LoginResponseCallback",
"T:LibreMetaverse.NetworkManager.OutgoingPacket",
"T:LibreMetaverse.LastExecStatus",
"T:LibreMetaverse.ObservableDictionary`2",
"T:LibreMetaverse.PacketEventDictionary",
"T:LibreMetaverse.PacketReceivedEventArgs",
"T:LibreMetaverse.PacketSentEventArgs",
"T:LibreMetaverse.PacketSettings",
"T:LibreMetaverse.HttpCapsClient.ProgressReport",
"T:LibreMetaverse.ProtocolManager",
"T:LibreMetaverse.Repeat",
"T:LibreMetaverse.Settings",
"T:LibreMetaverse.SimChangedEventArgs",
"T:LibreMetaverse.SimConnectedEventArgs",
"T:LibreMetaverse.SimConnectingEventArgs",
"T:LibreMetaverse.SimDisconnectedEventArgs",
"T:LibreMetaverse.Simulator",
"T:LibreMetaverse.Simulator.SimStats",
"T:LibreMetaverse.SimulatorDataPool",
"T:LibreMetaverse.SimulatorFeatures",
"T:LibreMetaverse.SourceType",
"T:LibreMetaverse.StatusCode",
"T:LibreMetaverse.TargetType",
"T:LibreMetaverse.TexturePipeline",
"T:LibreMetaverse.TexturePipelineSettings",
"T:LibreMetaverse.TextureRequestState",
"T:LibreMetaverse.TimingSettings",
"T:LibreMetaverse.Transfer",
"T:LibreMetaverse.TransferError",
"T:LibreMetaverse.UDPBase",
"T:LibreMetaverse.UDPPacketBuffer",
"T:LibreMetaverse.XferDownload",
"T:LibreMetaverse.XferReceivedEventArgs",
}
AVATAR_NAMESPACES = (
"LibreMetaverse.Animesh",
"LibreMetaverse.Appearance",
)
AVATAR_TYPE_PREFIXES = (
"T:LibreMetaverse.Agent",
"T:LibreMetaverse.Animations",
"T:LibreMetaverse.AnimeshSkinning",
"T:LibreMetaverse.Appearance",
"T:LibreMetaverse.ArchetypeParam",
"T:LibreMetaverse.Asset",
"T:LibreMetaverse.Attention",
"T:LibreMetaverse.Avatar",
"T:LibreMetaverse.Inventory",
)
AVATAR_ROOT_TYPES = {
"T:LibreMetaverse.AISResponseMeta",
"T:LibreMetaverse.AccountLevelBenefits",
"T:LibreMetaverse.AlertMessageEventArgs",
"T:LibreMetaverse.BakeType",
"T:LibreMetaverse.BalanceEventArgs",
"T:LibreMetaverse.BinBVHAnimationReader",
"T:LibreMetaverse.BorderCrossingDirection",
"T:LibreMetaverse.CallingCardOfferedEventArgs",
"T:LibreMetaverse.CameraConstraintEventArgs",
"T:LibreMetaverse.ChannelType",
"T:LibreMetaverse.ChatAudibleLevel",
"T:LibreMetaverse.ChatEventArgs",
"T:LibreMetaverse.ChatSessionMember",
"T:LibreMetaverse.ChatSessionMemberAddedEventArgs",
"T:LibreMetaverse.ChatSessionMemberLeftEventArgs",
"T:LibreMetaverse.ChatSourceType",
"T:LibreMetaverse.ChatType",
"T:LibreMetaverse.ClassifiedAd",
"T:LibreMetaverse.ClassifiedInfoReplyEventArgs",
"T:LibreMetaverse.DeRezDestination",
"T:LibreMetaverse.DisplayNameUpdateEventArgs",
"T:LibreMetaverse.DrivenParamInfo",
"T:LibreMetaverse.EffectType",
"T:LibreMetaverse.ExperienceInfoEventArgs",
"T:LibreMetaverse.ExperiencePreferencesEventArgs",
"T:LibreMetaverse.FindObjectByPathReplyEventArgs",
"T:LibreMetaverse.FolderUpdatedEventArgs",
"T:LibreMetaverse.Genepool",
"T:LibreMetaverse.GenepoolArchetype",
"T:LibreMetaverse.GroupChatJoinedEventArgs",
"T:LibreMetaverse.HandPose",
"T:LibreMetaverse.InitiateDownloadEventArgs",
"T:LibreMetaverse.InstantMessage",
"T:LibreMetaverse.InstantMessageDialog",
"T:LibreMetaverse.InstantMessageEventArgs",
"T:LibreMetaverse.InstantMessageOnline",
"T:LibreMetaverse.ItemReceivedEventArgs",
"T:LibreMetaverse.LindenAttentions",
"T:LibreMetaverse.LoadUrlEventArgs",
"T:LibreMetaverse.LookAtType",
"T:LibreMetaverse.MeanCollisionEventArgs",
"T:LibreMetaverse.MeanCollisionType",
"T:LibreMetaverse.MoneyBalanceReplyEventArgs",
"T:LibreMetaverse.MoneyTransactionType",
"T:LibreMetaverse.MuteEntry",
"T:LibreMetaverse.MuteFlags",
"T:LibreMetaverse.MuteType",
"T:LibreMetaverse.NavMeshStatusUpdateEventArgs",
"T:LibreMetaverse.PayPriceReplyEventArgs",
"T:LibreMetaverse.PayPriceType",
"T:LibreMetaverse.PickInfoReplyEventArgs",
"T:LibreMetaverse.PointAtType",
"T:LibreMetaverse.ProductInfoEventArgs",
"T:LibreMetaverse.ProfileFlags",
"T:LibreMetaverse.ProfilePick",
"T:LibreMetaverse.RebakeAvatarTexturesEventArgs",
"T:LibreMetaverse.RegionCrossedEventArgs",
"T:LibreMetaverse.RegionCrossingPredictionEventArgs",
"T:LibreMetaverse.RegionExperiencesEventArgs",
"T:LibreMetaverse.SaveAssetToInventoryEventArgs",
"T:LibreMetaverse.ScriptControlChange",
"T:LibreMetaverse.ScriptControlEventArgs",
"T:LibreMetaverse.ScriptDialogEventArgs",
"T:LibreMetaverse.ScriptPermission",
"T:LibreMetaverse.ScriptQuestionEventArgs",
"T:LibreMetaverse.ScriptRunningReplyEventArgs",
"T:LibreMetaverse.ScriptSensorReplyEventArgs",
"T:LibreMetaverse.ScriptSensorTypeFlags",
"T:LibreMetaverse.SetDisplayNameReplyEventArgs",
"T:LibreMetaverse.SkeletalBoneInfo",
"T:LibreMetaverse.TaskInventoryReplyEventArgs",
"T:LibreMetaverse.TaskItemReceivedEventArgs",
"T:LibreMetaverse.TeleportEventArgs",
"T:LibreMetaverse.TeleportFlags",
"T:LibreMetaverse.TeleportLureFlags",
"T:LibreMetaverse.TeleportStatus",
"T:LibreMetaverse.TransactionFlags",
"T:LibreMetaverse.TransactionInfo",
"T:LibreMetaverse.UUIDNameReplyEventArgs",
"T:LibreMetaverse.ViewerBenefitsEventArgs",
"T:LibreMetaverse.ViewerEffectEventArgs",
"T:LibreMetaverse.ViewerEffectLookAtEventArgs",
"T:LibreMetaverse.ViewerEffectPointAtEventArgs",
"T:LibreMetaverse.VisualAlphaParam",
"T:LibreMetaverse.VisualColorOperation",
"T:LibreMetaverse.VisualColorParam",
"T:LibreMetaverse.VisualParam",
"T:LibreMetaverse.VisualParams",
"T:LibreMetaverse.VolumeMorphInfo",
"T:LibreMetaverse.binBVHJoint",
"T:LibreMetaverse.binBVHJointKey",
}
UNDERLYING = {
"System.SByte": "i8", "System.Byte": "u8", "System.Int16": "i16", "System.UInt16": "u16",
"System.Int32": "i32", "System.UInt32": "u32", "System.Int64": "i64", "System.UInt64": "u64",
}
PRIVATE_LAYOUTS = {
"T:LibreMetaverse.AvatarAppearanceEventArgs": [("stored_visual_params", "Vec<u8>")],
"T:LibreMetaverse.CacheDictionary`2": [("entries", "std::collections::HashMap<TKey, TValue>")],
"T:LibreMetaverse.DoubleDictionary`3": [
("by_first", "std::collections::HashMap<TKey1, TValue>"),
("by_second", "std::collections::HashMap<TKey2, TValue>"),
],
"T:LibreMetaverse.EmptyRemovalStrategy`1": [("keys", "Vec<TKey>")],
"T:LibreMetaverse.ExpiringCache`2": [("entries", "std::collections::HashMap<TKey, TValue>")],
"T:LibreMetaverse.InventoryBase": [
("native_uuid", "libremetaverse_types::UUID"),
("native_owner_id", "libremetaverse_types::UUID"),
("native_parent_uuid", "libremetaverse_types::UUID"),
("native_name", "String"),
],
"T:LibreMetaverse.InventoryFolder": [
("native_descendent_count", "i32"),
("native_preferred_type", "libremetaverse_types::FolderType"),
("native_version", "i32"),
],
"T:LibreMetaverse.LruRemovalStrategy`1": [("keys", "Vec<TKey>")],
"T:LibreMetaverse.MruRemovalStrategy`1": [("keys", "Vec<TKey>")],
"T:LibreMetaverse.MultiValueDictionary`2": [("entries", "std::collections::HashMap<TKey, Vec<TValue>>")],
"T:LibreMetaverse.TokenBucket": [("content", "i32"), ("max_burst", "i32"), ("drip_rate", "i32")],
"T:LibreMetaverse.UUID": [("bytes", "[u8; 16]")],
"T:LibreMetaverse.StructuredData.OSDArray": [("values", "Vec<OSD>")],
"T:LibreMetaverse.StructuredData.OSDBinary": [("value", "Vec<u8>")],
"T:LibreMetaverse.StructuredData.OSDBoolean": [("value", "bool")],
"T:LibreMetaverse.StructuredData.OSDDate": [("value", "std::time::SystemTime")],
"T:LibreMetaverse.StructuredData.OSDException": [("message", "String")],
"T:LibreMetaverse.StructuredData.OSDInteger": [("value", "i32")],
"T:LibreMetaverse.StructuredData.OSDMap": [("values", "std::collections::HashMap<String, OSD>")],
"T:LibreMetaverse.StructuredData.OSDReal": [("value", "f64")],
"T:LibreMetaverse.StructuredData.OSDString": [("value", "String")],
"T:LibreMetaverse.StructuredData.OSDUUID": [("value", "libremetaverse_types::UUID")],
"T:LibreMetaverse.StructuredData.OSDUri": [("value", "libremetaverse_types::compat::Uri")],
}
VALUE_DERIVES = {
"T:LibreMetaverse.AgentSettings": "Clone, Debug, Eq, PartialEq",
"T:LibreMetaverse.AssetCacheSettings": "Clone, Debug, Eq, PartialEq",
"T:LibreMetaverse.BuddyListEntry": "Clone, Debug, Eq, PartialEq",
"T:LibreMetaverse.ConnectionSettings": "Clone, Eq, PartialEq",
"T:LibreMetaverse.LoggingSettings": "Clone, Debug, Eq, PartialEq",
"T:LibreMetaverse.HomeInfo": "Clone, Copy, Debug, PartialEq",
"T:LibreMetaverse.InventoryBase": "Clone, Debug",
"T:LibreMetaverse.InventoryFolder": "Clone, Debug",
"T:LibreMetaverse.Matrix4": "Clone, Copy, Debug",
"T:LibreMetaverse.Quaternion": "Clone, Copy, Debug",
"T:LibreMetaverse.PacketSettings": "Clone, Debug, Eq, PartialEq",
"T:LibreMetaverse.ParcelSettings": "Clone, Debug, Eq, PartialEq",
"T:LibreMetaverse.TexturePipelineSettings": "Clone, Debug, Eq, PartialEq",
"T:LibreMetaverse.TimingSettings": "Clone, Debug, Eq, PartialEq",
"T:LibreMetaverse.UUID": "Clone, Copy, Debug, Default, Eq, Hash, PartialEq",
"T:LibreMetaverse.Vector3": "Clone, Copy, Debug",
"T:LibreMetaverse.Vector3d": "Clone, Copy, Debug",
"T:LibreMetaverse.WorldSettings": "Clone, Debug, Eq, PartialEq",
}
# Native implementations occasionally need Rust-only bounds that have no
# direct C# metadata equivalent. C#'s `where T : class` permits returning a
# reference to the stored object; the Rust inventory store returns an owned
# value, so its generic compatibility accessors clone the concrete item.
NATIVE_MEMBER_BOUNDS = {
"M:LibreMetaverse.Inventory.GetValueOrDefault``1(LibreMetaverse.UUID)": {
"T": "T: Clone + 'static",
},
"M:LibreMetaverse.Inventory.TryGetValue``1(LibreMetaverse.UUID,``0@)": {
"T": "T: Clone + 'static",
},
}
def generic_names(item: dict) -> list[str]:
return [parameter["name"] for parameter in item.get("generic_parameters", [])]
def format_rust(source: str) -> str:
result = subprocess.run(
["rustfmt", "--edition", "2024", "--emit", "stdout"],
input=source,
text=True,
capture_output=True,
check=False,
)
if result.returncode:
raise ValueError(result.stderr.strip())
return result.stdout
def type_name(type_row: dict) -> str:
return type_row["rust_path"].rsplit("::", 1)[-1]
def generic_suffix(names: list[str]) -> str:
return "<" + ", ".join(names) + ">" if names else ""
def generic_declarations(item: dict, mapper: mapping.Mapper, owner_names: list[str]) -> list[str]:
generics = set(owner_names) | set(generic_names(item))
declarations = []
for parameter in item.get("generic_parameters", []):
bounds = [mapper.constraint(constraint, generics) for constraint in parameter.get("constraints", [])]
if parameter.get("default_constructor"):
bounds.append("Default")
declarations.append(parameter["name"] + ((": " + " + ".join(bounds)) if bounds else ""))
return declarations
def function_name(signature: str) -> str:
match = re.search(r"\bfn ([A-Za-z_][A-Za-z0-9_]*)", signature)
if not match:
raise ValueError(f"invalid mapped function signature: {signature}")
return match.group(1)
def render_compile_fixture(
catalog: dict,
type_by_id: dict[str, dict[str, str]],
member_rows: dict[str, dict[str, str]],
mapper: mapping.Mapper,
) -> str:
lines = [
"// @generated by tools/generate_api_shims.py; do not edit by hand.",
"#![allow(clippy::all, clippy::pedantic, dead_code, unused_variables)]",
"#![allow(non_camel_case_types, non_snake_case)]",
"",
'fn argument<T>() -> T { panic!("compile-only API fixture") }',
"",
]
type_index = member_index = 0
for assembly in catalog["assemblies"]:
for item in assembly["types"]:
type_index += 1
type_row = type_by_id[item["doc_id"]]
owner_names = generic_names(item)
owner_path = type_row["rust_path"]
owner_type = owner_path + generic_suffix(owner_names)
owner_expression = owner_path + (("::<" + ", ".join(owner_names) + ">") if owner_names else "")
trait = item["kind"] == "interface"
type_parameters = [*owner_names]
if trait:
type_parameters.append(f"__Probe: {owner_type}")
type_argument = "&__Probe"
else:
type_argument = f"&{owner_type}"
declarations = generic_suffix(type_parameters)
lines += [
f"// C# type: `{item['doc_id']}`.",
f"fn type_{type_index:04}{declarations}(_: {type_argument}) {{}}",
"",
]
for member in item["members"]:
member_index += 1
row = member_rows[member["doc_id"]]
method_names = generic_names(member)
owner_bounds = NATIVE_OWNER_BOUNDS.get(item["doc_id"], {})
parameters = [
*(owner_bounds.get(name, name) for name in owner_names),
*generic_declarations(member, mapper, owner_names),
]
member_bounds = NATIVE_MEMBER_BOUNDS.get(member["doc_id"], {})
parameters = [
member_bounds.get(parameter.split(":", 1)[0], parameter)
for parameter in parameters
]
if member["doc_id"] == "M:LibreMetaverse.Utils.EnumTryParse``1(System.String,``0@)":
parameters = [
*owner_names,
"T: libremetaverse_types::EnumValueMetadata",
]
if trait:
parameters.append(f"__Probe: {owner_type}")
declaration = generic_suffix(parameters)
instance = not member.get("static") and member["kind"] not in {
"constructor",
"constant",
"enum_value",
}
value_parameter = (
f"value: &mut {'__Probe' if trait else owner_type}" if instance else ""
)
body = []
if member["kind"] == "field" and not member.get("static"):
field = re.fullmatch(r"pub ([^:]+): .+", row["rust_signature"])
if not field:
raise ValueError(f"invalid mapped field signature: {row['rust_signature']}")
body.append(f"let _ = &value.{field.group(1)};")
elif member["kind"] in {"constant", "enum_value"}:
pattern = r"pub const ([A-Za-z_][A-Za-z0-9_]*)" if member["kind"] == "constant" else r"([A-Za-z_][A-Za-z0-9_]*):"
name = re.match(pattern, row["rust_signature"])
if not name:
raise ValueError(f"invalid mapped value signature: {row['rust_signature']}")
body.append(f"let _ = {owner_expression}::{name.group(1)};")
else:
signatures = row["rust_signature"].split(" ; ")
property_argument_counts = []
if member["kind"] in {"property", "indexer"}:
accessors = {accessor["kind"] for accessor in member.get("accessors", [])}
if "get" in accessors:
property_argument_counts.append(len(member.get("parameters", [])))
if "set" in accessors:
property_argument_counts.append(len(member.get("parameters", [])) + 1)
for signature_index, signature in enumerate(signatures):
name = function_name(signature)
generic_call = (("::<" + ", ".join(method_names) + ">") if method_names else "")
if instance:
target = f"value.{name}{generic_call}"
elif trait:
target = f"<__Probe as {owner_type}>::{name}{generic_call}"
else:
target = f"{owner_expression}::{name}{generic_call}"
argument_count = len(member.get("parameters", []))
if member["kind"] == "event":
argument_count = 1
elif property_argument_counts:
argument_count = property_argument_counts[signature_index]
arguments = ", ".join("argument()" for _ in range(argument_count))
body.append(f"let _ = {target}({arguments});")
lines += [
f"// C# member: `{member['doc_id']}`.",
f"fn member_{member_index:05}{declaration}({value_parameter}) {{",
*[f" {line}" for line in body],
"}",
"",
]
return format_rust("\n".join(lines).rstrip() + "\n")
def flags_enum(item: dict) -> bool:
return any(attribute["type"] == "System.FlagsAttribute" for attribute in item.get("attributes", []))
def duplicate_enum_values(item: dict) -> bool:
values = [member["value"]["value"] for member in item["members"] if member["kind"] == "enum_value"]
return len(values) != len(set(values))
def render_enum(item: dict, rust_name: str) -> list[str]:
underlying = UNDERLYING[item["enum_underlying_type"]]
values = [member for member in item["members"] if member["kind"] == "enum_value"]
lines = [f"/// C# type: `{item['doc_id']}`."]
if item["doc_id"] in OPEN_ENUM_IDS:
lines += [
"#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]",
"#[repr(transparent)]",
f"pub struct {rust_name}(pub {underlying});",
"#[allow(non_upper_case_globals)]",
f"impl {rust_name} {{",
]
for member in values:
lines += [
f" /// C# member: `{member['doc_id']}`.",
f" pub const {mapping.pascal(member['name'])}: Self = Self({member['value']['value']});",
]
lines.append("}")
return lines
if flags_enum(item) or duplicate_enum_values(item):
lines += [
"#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]",
"#[repr(transparent)]",
f"pub struct {rust_name}(pub {underlying});",
f"impl {rust_name} {{",
]
for member in values:
name = mapping.snake(member["name"]).upper()
value = member["value"]["value"]
lines += [f" /// C# member: `{member['doc_id']}`.", f" pub const {name}: Self = Self({value});"]
lines.append("}")
return lines
lines += [
"#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]",
f"#[repr({underlying})]",
f"pub enum {rust_name} {{",
]
for member in values:
lines += [f" /// C# member: `{member['doc_id']}`.", f" {mapping.pascal(member['name'])} = {member['value']['value']},"]
lines.append("}")
return lines
def native_member_body(member_id: str) -> str | None:
body = NATIVE_MEMBER_BODIES.get(member_id)
if body is not None:
return body
message_owner = "T:" + member_id[2:].split(".#ctor", 1)[0] if member_id.startswith("M:") and ".#ctor" in member_id else None
if message_owner in NATIVE_MESSAGE_CODEC_TYPES:
return "Ok(<Self as crate::message_codec::GeneratedMessage>::new_generated())"
message_owner = "T:" + member_id[2:].rsplit(".Deserialize", 1)[0] if member_id.startswith("M:") and ".Deserialize(" in member_id else None
if message_owner in NATIVE_MESSAGE_CODEC_TYPES:
return "<Self as crate::message_codec::GeneratedMessage>::deserialize_generated(self, &map)"
message_owner = "T:" + member_id[2:].rsplit(".Serialize", 1)[0] if member_id.startswith("M:") and member_id.endswith(".Serialize") else None
if message_owner in NATIVE_MESSAGE_CODEC_TYPES:
return "<Self as crate::message_codec::GeneratedMessage>::serialize_generated(self)"
if re.fullmatch(r"M:LibreMetaverse\.Packets\.[^.]+Packet\.#ctor", member_id):
return "Ok(<Self as crate::packet_catalog::GeneratedPacket>::new_generated())"
if re.fullmatch(
r"M:LibreMetaverse\.Packets\.[^.]+Packet\.#ctor\(LibreMetaverse\.Packets\.Header,System\.Byte\[\],System\.Int32@\)",
member_id,
):
return "<Self as crate::packet_catalog::GeneratedPacket>::new_from_header(head, &bytes, i)"
if re.fullmatch(
r"M:LibreMetaverse\.Packets\.[^.]+Packet\.#ctor\(System\.Byte\[\],System\.Int32@\)",
member_id,
):
return "<Self as crate::packet_catalog::GeneratedPacket>::new_from_bytes(&bytes, i)"
if re.fullmatch(r"M:LibreMetaverse\.Packets\.[^.]+Packet\.[^.]+Block\.#ctor", member_id):
return "Ok(<Self as crate::packet_catalog::GeneratedBlock>::new_generated())"
if re.fullmatch(
r"M:LibreMetaverse\.Packets\.[^.]+Packet\.[^.]+Block\.#ctor\(System\.Byte\[\],System\.Int32@\)",
member_id,
):
return "<Self as crate::packet_catalog::GeneratedBlock>::new_from_bytes(&bytes, i)"
if re.fullmatch(
r"M:LibreMetaverse\.Packets\.[^.]+Packet\.[^.]+Block\.FromBytes\(System\.Byte\[\],System\.Int32@\)",
member_id,
):
return "<Self as crate::packet_catalog::GeneratedBlock>::decode_from_bytes(self, &bytes, i)"
if re.fullmatch(
r"M:LibreMetaverse\.Packets\.[^.]+Packet\.[^.]+Block\.ToBytes\(System\.Byte\[\],System\.Int32@\)",
member_id,
):
return "<Self as crate::packet_catalog::GeneratedBlock>::encode_to_slice(self, bytes, i)"
if re.fullmatch(
r"M:LibreMetaverse\.Packets\.[^.]+Packet\.[^.]+Block\.FromOSD\(LibreMetaverse\.StructuredData\.OSDMap\)",
member_id,
):
return "<Self as crate::packet_catalog::GeneratedBlock>::from_osd(self, &map)"
if re.fullmatch(
r"M:LibreMetaverse\.Packets\.[^.]+Packet\.[^.]+Block\.ToOSD",
member_id,
):
return "<Self as crate::packet_catalog::GeneratedBlock>::to_osd(self)"
if re.fullmatch(
r"M:LibreMetaverse\.Packets\.[^.]+Packet\.FromBytes\(LibreMetaverse\.Packets\.Header,System\.Byte\[\],System\.Int32@,System\.Int32@\)",
member_id,
):
return "<Self as crate::packet_catalog::GeneratedPacket>::decode_from_header(self, header, &bytes, i, packet_end)"
if re.fullmatch(
r"M:LibreMetaverse\.Packets\.[^.]+Packet\.FromBytes\(System\.Byte\[\],System\.Int32@,System\.Int32@,System\.Byte\[\]\)",
member_id,
):
return "<Self as crate::packet_catalog::GeneratedPacket>::decode_from_bytes(self, &bytes, i, packet_end, zero_buffer)"
if re.fullmatch(r"M:LibreMetaverse\.Packets\.[^.]+Packet\.ToBytes", member_id):
return "<Self as crate::packet_catalog::GeneratedPacket>::encode_packet(self)"
if re.fullmatch(
r"M:LibreMetaverse\.Packets\.[^.]+Packet\.PacketFromOSD\(LibreMetaverse\.StructuredData\.OSDMap\)",
member_id,
):
return "<Self as crate::packet_catalog::GeneratedPacket>::packet_from_osd(self, &body)"
if re.fullmatch(r"M:LibreMetaverse\.Packets\.[^.]+Packet\.PacketToOSD", member_id):
return "<Self as crate::packet_catalog::GeneratedPacket>::packet_to_osd(self)"
if re.fullmatch(
r"M:LibreMetaverse\.Packets\.[^.]+Packet\.ToBytes\(LibreMetaverse\.Interfaces\.IByteBufferPool,System\.Int32@\)",
member_id,
):
return "{ let _ = pool; let bytes = <Self as crate::packet_catalog::GeneratedPacket>::encode_packet(self)?; *size = i32::try_from(bytes.len()).map_err(|_| crate::Error::Argument)?; Ok(bytes) }"
if re.fullmatch(r"M:LibreMetaverse\.Packets\.[^.]+Packet\.ToBytesMultiple", member_id):
return "<Self as crate::packet_catalog::GeneratedPacket>::encode_multiple(self)"
if re.fullmatch(
r"M:LibreMetaverse\.Packets\.[^.]+Packet\.ToBytesMultiple\(LibreMetaverse\.Interfaces\.IByteBufferPool,System\.Int32\[\]@\)",
member_id,
):
return "{ let _ = pool; let packets = <Self as crate::packet_catalog::GeneratedPacket>::encode_multiple(self)?; *sizes = packets.iter().map(|packet| i32::try_from(packet.len()).unwrap_or(i32::MAX)).collect(); Ok(packets) }"
if re.fullmatch(r"P:LibreMetaverse\.Packets\.[^.]+Packet\.Length", member_id):
return "<Self as crate::packet_catalog::GeneratedPacket>::generated_length(self)"
if re.fullmatch(r"P:LibreMetaverse\.Packets\.[^.]+Packet\.UsesBufferPooling", member_id):
return "<Self as crate::packet_catalog::GeneratedPacket>::USES_BUFFER_POOLING"
if re.fullmatch(r"P:LibreMetaverse\.Packets\.[^.]+Packet\.[^.]+Block\.Length", member_id):
return "<Self as crate::packet_catalog::GeneratedBlock>::generated_length(self)"
if member_id == "M:LibreMetaverse.Packets.Packet.GetType(System.UInt16,LibreMetaverse.PacketFrequency)":
return "Ok(crate::packet_catalog::packet_type(id, frequency))"
if member_id == "M:LibreMetaverse.Packets.Packet.BuildPacket(LibreMetaverse.Packets.PacketType)":
return "crate::packet_catalog::build_packet(type_)"
if member_id in {
"M:LibreMetaverse.Packets.Packet.BuildPacket(System.String,LibreMetaverse.StructuredData.OSDMap)",
"M:LibreMetaverse.Packets.Packet.BuildPacketFromOSD(System.String,LibreMetaverse.StructuredData.OSDMap)",
}:
return "crate::packet_catalog::build_packet_from_osd(&caps_event_name, &body)"
if member_id == "M:LibreMetaverse.Packets.Packet.BuildPacket(System.Byte[],System.Int32@,System.Byte[])":
return "{ let mut zero_buffer = zero_buffer; crate::packet_wire::build_packet_from_bytes(&packet_buffer, packet_end, &mut zero_buffer) }"
if member_id == "M:LibreMetaverse.Packets.Header.BuildHeader(System.Byte[],System.Int32@,System.Int32@)":
return "crate::packet_wire::decode_header(&bytes, pos, packet_end)"
if member_id == "M:LibreMetaverse.Packets.Header.FromBytes(System.Byte[],System.Int32@,System.Int32@)":
return "{ *self = crate::packet_wire::decode_header(&bytes, pos, packet_end)?; Ok(()) }"
if member_id == "M:LibreMetaverse.Packets.Header.ToBytes(System.Byte[],System.Int32@)":
return "crate::packet_wire::header_to_slice(self, bytes, i)"
if member_id == "M:LibreMetaverse.Packets.Header.AcksToBytes(System.Byte[],System.Int32@)":
return "crate::packet_wire::acks_to_slice(self, bytes, i)"
if member_id == "M:LibreMetaverse.Packets.Packet.PacketFromOSD(LibreMetaverse.StructuredData.OSDMap)":
return "crate::packet_catalog::ignore_packet_osd(&osd)"
if member_id == "M:LibreMetaverse.Packets.Packet.PacketToOSD":
return "crate::packet_catalog::empty_packet_osd()"
if member_id == "M:LibreMetaverse.Helpers.ZeroDecode(System.Byte[],System.Int32,System.Byte[])":
return "crate::packet_wire::zero_decode(src, srclen, dest)"
if member_id == "M:LibreMetaverse.Helpers.ZeroEncode(System.Byte[],System.Int32,System.Byte[])":
return "crate::packet_wire::zero_encode(src, srclen, dest)"
return None
def render_body(signature: str, member_id: str, error_model: str, asyncness: str, trait: bool) -> str:
if trait:
signature = signature.removeprefix("pub ")
if body := native_member_body(member_id):
if any(f"LibreMetaverse.{owner}." in member_id for owner in CLIENT_CORE_NATIVE_OWNERS):
marker = " /* native client-core implementation */"
elif any(f"LibreMetaverse.{owner}." in member_id for owner in NETWORK_NATIVE_OWNERS):
marker = " /* native network implementation */"
else:
marker = ""
return f" {signature} {{{marker} {body} }}"
failure = (
f"libremetaverse_types::not_implemented({json.dumps(member_id)})"
if error_model.startswith("Result")
else f"libremetaverse_types::unimplemented_api!({json.dumps(member_id)})"
)
if asyncness == "boxed_future" or "std::pin::Pin<Box<dyn std::future::Future" in signature:
failure = f"Box::pin(async {{ {failure} }})"
return f" {signature} {{ {failure} }}"
def rust_constant_value(item: dict) -> str:
value = item["value"]["value"]
if item["type"] == "System.String":
return json.dumps(value)
if item["type"] == "System.Boolean":
return value.lower()
if item["type"] in {"System.Single", "System.Double"} and not any(
marker in value.lower() for marker in (".", "e")
):
return value + ".0"
return value
def render_type(item: dict, type_row: dict, member_rows: dict[str, dict[str, str]], mapper: mapping.Mapper) -> str:
rust_name = type_name(type_row)
if native_path := NATIVE_TYPES.get(item["doc_id"]):
lines = [f"/// C# type: `{item['doc_id']}`."]
lines.extend(f"/// C# member: `{member['doc_id']}`." for member in item["members"])
lines.append(f"pub use {native_path} as {rust_name};")
return "\n".join(lines)
if item["kind"] == "enum":
return "\n".join(render_enum(item, rust_name))
names = generic_names(item)
suffix = generic_suffix(names)
trait = item["kind"] == "interface"
lines = [f"/// C# type: `{item['doc_id']}`."]
if trait:
supertrait = TRAIT_SUPERTRAITS.get(item["doc_id"])
inheritance = f": {supertrait}" if supertrait else ""
lines.append(f"pub trait {rust_name}{suffix}{inheritance} {{")
else:
fields = [member for member in item["members"] if member["kind"] == "field" and not member.get("static")]
private_fields = PRIVATE_LAYOUTS.get(item["doc_id"], [])
base_type = item.get("base_type") if item["doc_id"] in COMPOSED_BASE_TYPES else None
native_declaration = NATIVE_DECLARATIONS.get(item["doc_id"])
if native_declaration:
lines.append(f"pub use {native_declaration} as {rust_name};")
lines.extend(
f"/// C# member: `{field['doc_id']}`."
for field in fields
)
elif derives := VALUE_DERIVES.get(item["doc_id"]):
lines.append(f"#[derive({derives})]")
if native_declaration:
pass
elif item["doc_id"] == "T:LibreMetaverse.StructuredData.OSD":
lines += [
"#[non_exhaustive]",
"pub enum OSD {",
" Undefined, Boolean(bool), Integer(i32), Real(f64), String(String),",
" UUID(libremetaverse_types::UUID), Date(std::time::SystemTime),",
" Uri(libremetaverse_types::compat::Uri), Binary(Vec<u8>),",
" Array(Vec<OSD>), Map(std::collections::HashMap<String, OSD>), LlsdXml(String),",
"}",
]
elif not fields and not names and not private_fields and not base_type:
lines.append(f"pub struct {rust_name};")
else:
lines.append(f"pub struct {rust_name}{suffix} {{")
if base_type:
lines += [
f" /// Rust composition for C# base type `{base_type}`.",
f" pub base: {mapper.type(base_type, None, set(names))},",
]
for field in fields:
field_signature = member_rows[field["doc_id"]]["rust_signature"]
field_name_match = re.fullmatch(r"pub ([^:]+): (.+)", field_signature)
if not field_name_match:
raise ValueError(f"invalid mapped field signature: {field_signature}")
field_name = field_name_match.group(1)
field_type = field_name_match.group(2)
lines += [f" /// C# member: `{field['doc_id']}`.", f" pub {field_name}: {field_type},"]
for field_name, field_type in private_fields:
lines.append(f" {field_name}: {field_type},")
if names:
tuple_type = "(" + ", ".join(names) + ("," if len(names) == 1 else "") + ")"
lines.append(f" _marker: std::marker::PhantomData<{tuple_type}>,")
lines.append("}")
lines += [f"impl{suffix} {rust_name}{suffix} {{"]
for member in item["members"]:
if member["kind"] in {"enum_value"} or (member["kind"] == "field" and not member.get("static")):
continue
row = member_rows[member["doc_id"]]
lines.append(f" /// C# member: `{member['doc_id']}`.")
if member["kind"] == "constant":
lines.append(f" {row['rust_signature']} = {rust_constant_value(member)};")
continue
signatures = row["rust_signature"].split(" ; ")
for index, signature in enumerate(signatures):
if index:
lines.append(f" /// Setter for C# member: `{member['doc_id']}`.")
body_member_id = member["doc_id"]
setter_id = body_member_id + "#set"
if index and setter_id in NATIVE_MEMBER_BODIES:
body_member_id = setter_id
lines.append(
render_body(
signature,
body_member_id,
row["error_model"],
row["asyncness"],
trait,
)
)
lines.append("}")
if not trait:
for interface in item.get("interfaces", []):
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
if item["doc_id"] == "T:LibreMetaverse.GridClient" and base == "LibreMetaverse.IGridClient":
continue
mapped_arguments = [mapper.type(argument, None, set(names)) for argument in arguments]
trait_path = mapper.resolved[base] + generic_suffix(mapped_arguments)
if (
base == "LibreMetaverse.Interfaces.IMessage"
and item["doc_id"] in NATIVE_MESSAGE_CODEC_TYPES
):
lines += [
f"impl{suffix} {trait_path} for {rust_name}{suffix} {{",
" fn deserialize(&mut self, map: libremetaverse_structured_data::OSDMap) -> Result<(), crate::Error> {",
" <Self as crate::message_codec::GeneratedMessage>::deserialize_generated(self, &map)",
" }",
" fn serialize(&self) -> Result<libremetaverse_structured_data::OSDMap, crate::Error> {",
" <Self as crate::message_codec::GeneratedMessage>::serialize_generated(self)",
" }",
"}",
]
else:
lines.append(f"impl{suffix} {trait_path} for {rust_name}{suffix} {{}}")
return "\n".join(lines)
def render_pending_type(item: dict, type_row: dict) -> str:
rust_name = type_name(type_row)
names = generic_names(item)
suffix = generic_suffix(names)
lines = [f"/// Pending catalog type `{item['doc_id']}`; completed by a later milestone issue."]
if item["kind"] == "interface":
lines.append(f"pub trait {rust_name}{suffix} {{}}")
elif names:
tuple_type = "(" + ", ".join(names) + ("," if len(names) == 1 else "") + ")"
lines += [f"pub struct {rust_name}{suffix} {{", f" _marker: std::marker::PhantomData<{tuple_type}>,", "}"]
else:
lines.append(f"pub struct {rust_name};")
return "\n".join(lines)
def wire_type(item: dict) -> bool:
return (
item["doc_id"] in WIRE_ROOT_TYPES
or item["doc_id"].startswith("T:LibreMetaverse.Primitive")
or item["namespace"].startswith(WIRE_NAMESPACES)
)
def core_type(item: dict) -> bool:
return item["doc_id"] in CORE_ROOT_TYPES or item["namespace"].startswith(CORE_NAMESPACES)
def avatar_type(item: dict) -> bool:
return (
item["doc_id"] in AVATAR_ROOT_TYPES
or item["doc_id"].startswith(AVATAR_TYPE_PREFIXES)
or item["namespace"].startswith(AVATAR_NAMESPACES)
)
def world_type(item: dict) -> bool:
return not wire_type(item) and not core_type(item) and not avatar_type(item)
def render_modules(items: list[tuple[dict, dict, bool]], member_rows: dict[str, dict[str, str]], mapper: mapping.Mapper) -> str:
tree: dict = {"items": [], "children": {}}
for item, type_row, complete in items:
node = tree
for segment in filter(None, type_row["rust_module"].split("::")):
node = node["children"].setdefault(segment, {"items": [], "children": {}})
node["items"].append((item, type_row, complete))
def render_node(node: dict) -> list[str]:
lines = []
for item, type_row, complete in node["items"]:
rendered = render_type(item, type_row, member_rows, mapper) if complete else render_pending_type(item, type_row)
lines += [rendered, ""]
for name, child in sorted(node["children"].items()):
body = render_node(child)
lines.append(f"pub mod {name} {{")
lines += [(" " + line) if line else "" for line in body]
lines += ["}", ""]
return lines
return "\n".join(render_node(tree))
def generate_sources(catalog: dict) -> tuple[dict[Path, str], dict[str, tuple[int, int, bool]]]:
type_rows, resolved = mapping.build_type_rows(catalog)
type_by_id = {row["csharp_type_id"]: row for row in type_rows}
member_by_id = {
member["doc_id"]: member
for assembly in catalog["assemblies"]
for item in assembly["types"]
for member in item["members"]
}
configured_main_ids = WIRE_ROOT_TYPES | CORE_ROOT_TYPES | AVATAR_ROOT_TYPES
missing_configured_ids = configured_main_ids - type_by_id.keys()
if missing_configured_ids:
raise ValueError(f"unknown configured main-slice IDs: {sorted(missing_configured_ids)}")
missing_boxed_fields = mapping.BOXED_FIELD_IDS - member_by_id.keys()
if missing_boxed_fields:
raise ValueError(f"unknown configured boxed fields: {sorted(missing_boxed_fields)}")
if invalid_boxed_fields := [
member_id
for member_id in mapping.BOXED_FIELD_IDS
if member_by_id[member_id]["kind"] != "field"
]:
raise ValueError(f"configured boxed members are not fields: {sorted(invalid_boxed_fields)}")
interfaces = {
*{mapping.type_parts(item["signature"])[0] for assembly in catalog["assemblies"] for item in assembly["types"] if item["kind"] == "interface"},
*{
mapping.type_parts(item["signature"])[0]
for item in catalog["external_types"]
if item["kind"] == "interface" and not item["assembly"]["name"].startswith("System")
},
}
mapper = mapping.Mapper(resolved, interfaces)
member_rows = {row["csharp_id"]: row for row in csv.DictReader(LEDGER.open(), delimiter="\t")}
outputs = {}
coverage = {}
for assembly in catalog["assemblies"]:
name = assembly["identity"]["name"]
if name not in TARGETS and name != "LibreMetaverse":
continue
chunks = [
"// @generated by tools/generate_api_shims.py; do not edit by hand.",
"#![allow(clippy::missing_errors_doc)]",
"#![allow(clippy::must_use_candidate)]",
"#![allow(clippy::all, clippy::pedantic, dead_code, unused_variables)]",
"#![allow(non_camel_case_types)]",
"#![allow(non_snake_case)]",
"",
]
selected = (
assembly["types"]
if name in TARGETS
else [
item
for item in assembly["types"]
if wire_type(item) or core_type(item) or avatar_type(item) or world_type(item)
]
)
selected_ids = {item["doc_id"] for item in selected}
rendered_items = [
(item, type_by_id[item["doc_id"]], item["doc_id"] in selected_ids)
for item in assembly["types"]
]
chunks.append(render_modules(rendered_items, member_rows, mapper))
source = format_rust("\n".join(chunks).rstrip() + "\n")
expected_types = selected_ids
expected_members = {member["doc_id"] for item in selected for member in item["members"]}
emitted_types = set(re.findall(r"C# type: `(.*)`\.", source))
emitted_members = set(re.findall(r"C# member: `(.*)`\.", source))
if emitted_types != expected_types or emitted_members != expected_members:
raise ValueError(
f"generated catalog ID mismatch for {name}: "
f"types missing/stale={len(expected_types - emitted_types)}/{len(emitted_types - expected_types)}, "
f"members missing/stale={len(expected_members - emitted_members)}/{len(emitted_members - expected_members)}; "
f"missing={sorted(expected_members - emitted_members)}, stale={sorted(emitted_members - expected_members)}"
)
outputs[TARGETS.get(name, MAIN_TARGET)] = source
coverage[name] = (len(selected), sum(len(item["members"]) for item in selected), len(selected) == len(assembly["types"]))
outputs[COMPILE_FIXTURE] = render_compile_fixture(catalog, type_by_id, member_rows, mapper)
return outputs, coverage
def coverage_report(catalog: dict, coverage: dict[str, tuple[int, int, bool]]) -> str:
lines = [
"# Callable shim coverage", "", "Generated by `python3 tools/generate_api_shims.py`; do not edit by hand.", "",
"| Assembly | Types | Members | Status |", "|---|---:|---:|---|",
]
total_types = total_members = 0
for assembly in catalog["assemblies"]:
name = assembly["identity"]["name"]
types = len(assembly["types"])
members = sum(len(item["members"]) for item in assembly["types"])
if name in coverage:
got_types, got_members, complete = coverage[name]
if complete and (types, members) != (got_types, got_members):
raise ValueError(f"incomplete generated slice for {name}")
native_type_ids = {
item["doc_id"]
for item in assembly["types"]
if item["doc_id"] in NATIVE_TYPES or item["doc_id"] in NATIVE_DECLARATIONS
or (name == "LibreMetaverse.Types" and item["kind"] == "enum")
}
native_member_ids = {
member["doc_id"]
for item in assembly["types"]
for member in item["members"]
if item["doc_id"] in NATIVE_TYPES
or (name == "LibreMetaverse.Types" and item["kind"] == "enum")
or (
item["doc_id"] in NATIVE_DECLARATIONS
and member["kind"] == "field"
and not member.get("static")
)
or (
item["doc_id"] in NATIVE_DECLARATIONS
and member["kind"] == "constant"
)
or native_member_body(member["doc_id"]) is not None
}
if native_type_ids or native_member_ids:
type_noun = "type" if len(native_type_ids) == 1 else "types"
if len(native_member_ids) == members:
status = (
f"native implementation: {len(native_type_ids):,} {type_noun} / "
f"{len(native_member_ids):,} members; no generated shims remain"
)
else:
status = (
f"native implementation: {len(native_type_ids):,} {type_noun} / "
f"{len(native_member_ids):,} members; remaining surface is callable failure-only shims"
)
else:
status = "callable failure-only shim" if complete else f"partial callable shim ({got_types:,} types / {got_members:,} members)"
total_types += got_types
total_members += got_members
else:
status = "pending milestone issue"
lines.append(f"| `{name}` | {types:,} | {members:,} | {status} |")
if "LibreMetaverse" in coverage:
main_types = next(
assembly["types"]
for assembly in catalog["assemblies"]
if assembly["identity"]["name"] == "LibreMetaverse"
)
wire_types = [item for item in main_types if wire_type(item)]
core_types = [item for item in main_types if core_type(item) and not wire_type(item)]
avatar_types = [
item
for item in main_types
if avatar_type(item) and not wire_type(item) and not core_type(item)
]
world_types = [item for item in main_types if world_type(item)]
complete = coverage["LibreMetaverse"][2]
lines += [
"",
(
"The `LibreMetaverse` assembly is complete across issue #7 wire/data, issue #8 core runtime/networking,"
if complete
else "The partial `LibreMetaverse` row contains the completed issue #7 wire/data, issue #8 core runtime/networking,"
),
(
"issue #9 avatar-facing manager, and issue #10 world/social/service manager slices."
if complete
else "and issue #9 avatar-facing manager slices. World/social/service manager types remain pending for issue #10."
),
"",
"| Main assembly slice | Types | Members |",
"|---|---:|---:|",
f"| Issue #7 wire/data | {len(wire_types):,} | {sum(len(item['members']) for item in wire_types):,} |",
f"| Issue #8 core runtime/networking | {len(core_types):,} | {sum(len(item['members']) for item in core_types):,} |",
f"| Issue #9 avatar-facing managers | {len(avatar_types):,} | {sum(len(item['members']) for item in avatar_types):,} |",
f"| Issue #10 world/social/service managers | {len(world_types):,} | {sum(len(item['members']) for item in world_types):,} |",
]
lines += ["", f"Current callable coverage: **{total_types:,} types / {total_members:,} members**.", ""]
return "\n".join(lines)
def generate() -> dict[Path, str]:
catalog = json.loads(CATALOG.read_text())
sources, coverage = generate_sources(catalog)
sources[COVERAGE] = coverage_report(catalog, coverage)
return sources
def main() -> None:
parser = argparse.ArgumentParser()
parser.add_argument("--check", action="store_true")
args = parser.parse_args()
outputs = generate()
if args.check:
stale = [str(path.relative_to(ROOT)) for path, text in outputs.items() if not path.exists() or path.read_text() != text]
if stale:
raise SystemExit("stale generated API shims: " + ", ".join(stale))
else:
for path, text in outputs.items():
path.write_text(text)
print("generated " + ", ".join(str(path.relative_to(ROOT)) for path in outputs))
if __name__ == "__main__":
main()