Translate inventory parity tests

This commit is contained in:
2026-08-08 20:54:02 +02:00
parent a78f9fba76
commit d7d12957e6
16 changed files with 2895 additions and 1194 deletions

View File

@@ -14199,14 +14199,16 @@ impl Inventory {
)
}
/// C# member: `M:LibreMetaverse.Inventory.#ctor(LibreMetaverse.GridClient)`.
pub fn new_with_grid_client(client: libremetaverse::GridClient) -> Result<Self, crate::Error> {
pub fn new_with_grid_client(
client: std::sync::Arc<libremetaverse::GridClient>,
) -> Result<Self, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Inventory.#ctor(LibreMetaverse.GridClient)",
)
}
/// C# member: `M:LibreMetaverse.Inventory.#ctor(LibreMetaverse.GridClient,LibreMetaverse.UUID)`.
pub fn new_with_grid_client_uuid(
client: libremetaverse::GridClient,
client: std::sync::Arc<libremetaverse::GridClient>,
owner: libremetaverse_types::UUID,
) -> Result<Self, crate::Error> {
libremetaverse_types::not_implemented(
@@ -14220,7 +14222,7 @@ impl Inventory {
/// C# member: `M:LibreMetaverse.Inventory.Contains(LibreMetaverse.InventoryBase)`.
pub fn contains_with_inventory_base(
&self,
obj: libremetaverse::InventoryBase,
obj: &dyn libremetaverse::InventoryObjectClass,
) -> Result<bool, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Inventory.Contains(LibreMetaverse.InventoryBase)",
@@ -14247,8 +14249,8 @@ impl Inventory {
/// C# member: `M:LibreMetaverse.Inventory.GetContents(LibreMetaverse.InventoryFolder)`.
pub fn get_contents_with_inventory_folder(
&self,
folder: libremetaverse::InventoryFolder,
) -> Result<Vec<libremetaverse::InventoryBase>, crate::Error> {
folder: &libremetaverse::InventoryFolder,
) -> Result<Vec<Box<dyn libremetaverse::InventoryObjectClass>>, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Inventory.GetContents(LibreMetaverse.InventoryFolder)",
)
@@ -14257,7 +14259,7 @@ impl Inventory {
pub fn get_contents_with_uuid(
&self,
folder: libremetaverse_types::UUID,
) -> Result<Vec<libremetaverse::InventoryBase>, crate::Error> {
) -> Result<Vec<Box<dyn libremetaverse::InventoryObjectClass>>, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Inventory.GetContents(LibreMetaverse.UUID)",
)
@@ -14299,7 +14301,10 @@ impl Inventory {
)
}
/// C# member: `M:LibreMetaverse.Inventory.RemoveNodeFor(LibreMetaverse.InventoryBase)`.
pub fn remove_node_for(&self, item: libremetaverse::InventoryBase) -> Result<(), crate::Error> {
pub fn remove_node_for(
&self,
item: &dyn libremetaverse::InventoryObjectClass,
) -> Result<(), crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Inventory.RemoveNodeFor(LibreMetaverse.InventoryBase)",
)
@@ -14350,10 +14355,10 @@ impl Inventory {
pub fn try_get_value_with_uuid_inventory_base(
&self,
uuid: libremetaverse_types::UUID,
item: &mut Option<libremetaverse::InventoryBase>,
) -> bool {
libremetaverse_types::unimplemented_api!(
"M:LibreMetaverse.Inventory.TryGetValue(LibreMetaverse.UUID,LibreMetaverse.InventoryBase@)"
item: &mut Option<Box<dyn libremetaverse::InventoryObjectClass>>,
) -> Result<bool, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Inventory.TryGetValue(LibreMetaverse.UUID,LibreMetaverse.InventoryBase@)",
)
}
/// C# member: `M:LibreMetaverse.Inventory.TryGetValue``1(LibreMetaverse.UUID,``0@)`.
@@ -14367,7 +14372,10 @@ impl Inventory {
)
}
/// C# member: `M:LibreMetaverse.Inventory.UpdateNodeFor(LibreMetaverse.InventoryBase)`.
pub fn update_node_for(&self, item: libremetaverse::InventoryBase) -> Result<(), crate::Error> {
pub fn update_node_for(
&self,
item: &dyn libremetaverse::InventoryObjectClass,
) -> Result<(), crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Inventory.UpdateNodeFor(LibreMetaverse.InventoryBase)",
)
@@ -14438,7 +14446,9 @@ impl InventoryAISClient {
/// C# member: `F:LibreMetaverse.InventoryAISClient.LIBRARY_CAP_NAME`.
pub const LIBRARY_CAP_NAME: &'static str = "LibraryAPIv3";
/// C# member: `M:LibreMetaverse.InventoryAISClient.#ctor(LibreMetaverse.GridClient)`.
pub fn new(client: libremetaverse::GridClient) -> Result<Self, crate::Error> {
pub fn new(
client: Option<std::sync::Arc<libremetaverse::GridClient>>,
) -> Result<Self, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.InventoryAISClient.#ctor(LibreMetaverse.GridClient)",
)
@@ -14731,10 +14741,10 @@ impl InventoryAISClient {
/// C# member: `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}@)`.
pub fn parse_embedded(
&self,
response: libremetaverse_structured_data::OSDMap,
folders: &mut Vec<libremetaverse::InventoryFolder>,
items: &mut Vec<libremetaverse::InventoryItem>,
links: &mut Vec<libremetaverse::InventoryItem>,
response: libremetaverse_structured_data::OSD,
folders: &mut Option<Vec<libremetaverse::InventoryFolder>>,
items: &mut Option<Vec<libremetaverse::InventoryItem>>,
links: &mut Option<Vec<libremetaverse::InventoryItem>>,
) -> Result<(), crate::Error> {
libremetaverse_types::not_implemented(
"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}@)",
@@ -14752,7 +14762,7 @@ impl InventoryAISClient {
/// C# member: `M:LibreMetaverse.InventoryAISClient.ParseItemsFromEmbedded(LibreMetaverse.StructuredData.OSDMap)`.
pub fn parse_items_from_embedded(
&self,
response: libremetaverse_structured_data::OSDMap,
response: Option<libremetaverse_structured_data::OSD>,
) -> Result<Vec<libremetaverse::InventoryItem>, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.InventoryAISClient.ParseItemsFromEmbedded(LibreMetaverse.StructuredData.OSDMap)",
@@ -14761,7 +14771,7 @@ impl InventoryAISClient {
/// C# member: `M:LibreMetaverse.InventoryAISClient.ParseLinksFromEmbedded(LibreMetaverse.StructuredData.OSDMap)`.
pub fn parse_links_from_embedded(
&self,
response: libremetaverse_structured_data::OSDMap,
response: Option<libremetaverse_structured_data::OSD>,
) -> Result<Vec<libremetaverse::InventoryItem>, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.InventoryAISClient.ParseLinksFromEmbedded(LibreMetaverse.StructuredData.OSDMap)",
@@ -14859,7 +14869,10 @@ impl InventoryAISClient {
}
/// C# type: `T:LibreMetaverse.InventoryAnimation`.
pub struct InventoryAnimation;
pub struct InventoryAnimation {
/// Rust composition for C# base type `LibreMetaverse.InventoryItem`.
pub base: libremetaverse::InventoryItem,
}
impl InventoryAnimation {
/// C# member: `M:LibreMetaverse.InventoryAnimation.#ctor(LibreMetaverse.UUID)`.
pub fn new(uuid: libremetaverse_types::UUID) -> Result<Self, crate::Error> {
@@ -14953,7 +14966,10 @@ impl InventoryBase {
}
/// C# type: `T:LibreMetaverse.InventoryCallingCard`.
pub struct InventoryCallingCard;
pub struct InventoryCallingCard {
/// Rust composition for C# base type `LibreMetaverse.InventoryItem`.
pub base: libremetaverse::InventoryItem,
}
impl InventoryCallingCard {
/// C# member: `M:LibreMetaverse.InventoryCallingCard.#ctor(LibreMetaverse.UUID)`.
pub fn new(uuid: libremetaverse_types::UUID) -> Result<Self, crate::Error> {
@@ -14964,7 +14980,10 @@ impl InventoryCallingCard {
}
/// C# type: `T:LibreMetaverse.InventoryCategory`.
pub struct InventoryCategory;
pub struct InventoryCategory {
/// Rust composition for C# base type `LibreMetaverse.InventoryItem`.
pub base: libremetaverse::InventoryItem,
}
impl InventoryCategory {
/// C# member: `M:LibreMetaverse.InventoryCategory.#ctor(LibreMetaverse.UUID)`.
pub fn new(uuid: libremetaverse_types::UUID) -> Result<Self, crate::Error> {
@@ -15083,7 +15102,10 @@ impl InventoryFolder {
}
/// C# type: `T:LibreMetaverse.InventoryGesture`.
pub struct InventoryGesture;
pub struct InventoryGesture {
/// Rust composition for C# base type `LibreMetaverse.InventoryItem`.
pub base: libremetaverse::InventoryItem,
}
impl InventoryGesture {
/// C# member: `M:LibreMetaverse.InventoryGesture.#ctor(LibreMetaverse.UUID)`.
pub fn new(uuid: libremetaverse_types::UUID) -> Result<Self, crate::Error> {
@@ -15312,7 +15334,10 @@ impl InventoryItemFlags {
}
/// C# type: `T:LibreMetaverse.InventoryLSL`.
pub struct InventoryLSL;
pub struct InventoryLSL {
/// Rust composition for C# base type `LibreMetaverse.InventoryItem`.
pub base: libremetaverse::InventoryItem,
}
impl InventoryLSL {
/// C# member: `M:LibreMetaverse.InventoryLSL.#ctor(LibreMetaverse.UUID)`.
pub fn new(uuid: libremetaverse_types::UUID) -> Result<Self, crate::Error> {
@@ -15323,7 +15348,10 @@ impl InventoryLSL {
}
/// C# type: `T:LibreMetaverse.InventoryLandmark`.
pub struct InventoryLandmark;
pub struct InventoryLandmark {
/// Rust composition for C# base type `LibreMetaverse.InventoryItem`.
pub base: libremetaverse::InventoryItem,
}
impl InventoryLandmark {
/// C# member: `M:LibreMetaverse.InventoryLandmark.#ctor(LibreMetaverse.UUID)`.
pub fn new(uuid: libremetaverse_types::UUID) -> Result<Self, crate::Error> {
@@ -15435,7 +15463,9 @@ impl InventoryManager {
/// C# member: `F:LibreMetaverse.InventoryManager.MAX_GIVE_ITEMS`.
pub const MAX_GIVE_ITEMS: i32 = 66;
/// C# member: `M:LibreMetaverse.InventoryManager.#ctor(LibreMetaverse.GridClient)`.
pub fn new(client: libremetaverse::GridClient) -> Result<Self, crate::Error> {
pub fn new(
client: Option<std::sync::Arc<libremetaverse::GridClient>>,
) -> Result<Self, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.InventoryManager.#ctor(LibreMetaverse.GridClient)",
)
@@ -15502,7 +15532,7 @@ impl InventoryManager {
pub fn create_inventory_item(
type_: libremetaverse_types::InventoryType,
id: libremetaverse_types::UUID,
) -> Result<libremetaverse::InventoryItem, crate::Error> {
) -> Result<Box<dyn libremetaverse::InventoryItemClass>, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.InventoryManager.CreateInventoryItem(LibreMetaverse.InventoryType,LibreMetaverse.UUID)",
)
@@ -15730,7 +15760,7 @@ impl InventoryManager {
order: libremetaverse::InventorySortOrder,
cancellation_token: Option<libremetaverse_types::compat::CancellationToken>,
follow_links: Option<bool>,
) -> Result<Vec<libremetaverse::InventoryBase>, crate::Error> {
) -> Result<Vec<Box<dyn libremetaverse::InventoryObjectClass>>, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.InventoryManager.FolderContentsAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.Boolean,System.Boolean,LibreMetaverse.InventorySortOrder,System.Threading.CancellationToken,System.Boolean)",
)
@@ -15755,7 +15785,7 @@ impl InventoryManager {
object_local_id: u32,
simulator: Option<libremetaverse::Simulator>,
cancellation_token: Option<libremetaverse_types::compat::CancellationToken>,
) -> Result<Vec<libremetaverse::InventoryBase>, crate::Error> {
) -> Result<Vec<Box<dyn libremetaverse::InventoryObjectClass>>, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.InventoryManager.GetTaskInventoryAsync(LibreMetaverse.UUID,System.UInt32,LibreMetaverse.Simulator,System.Threading.CancellationToken)",
)
@@ -15787,7 +15817,7 @@ impl InventoryManager {
)
}
/// C# member: `M:LibreMetaverse.InventoryManager.ItemCRC(LibreMetaverse.InventoryItem)`.
pub fn item_crc(iitem: libremetaverse::InventoryItem) -> Result<u32, crate::Error> {
pub fn item_crc(iitem: &libremetaverse::InventoryItem) -> Result<u32, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.InventoryManager.ItemCRC(LibreMetaverse.InventoryItem)",
)
@@ -16783,7 +16813,10 @@ impl InventoryManagerFolderUpdateResult {
}
/// C# type: `T:LibreMetaverse.InventoryMaterial`.
pub struct InventoryMaterial;
pub struct InventoryMaterial {
/// Rust composition for C# base type `LibreMetaverse.InventoryItem`.
pub base: libremetaverse::InventoryItem,
}
impl InventoryMaterial {
/// C# member: `M:LibreMetaverse.InventoryMaterial.#ctor(LibreMetaverse.UUID)`.
pub fn new(uuid: libremetaverse_types::UUID) -> Result<Self, crate::Error> {
@@ -16802,7 +16835,7 @@ impl InventoryNode {
}
/// C# member: `M:LibreMetaverse.InventoryNode.#ctor(LibreMetaverse.InventoryBase)`.
pub fn new_with_inventory_base(
data: libremetaverse::InventoryBase,
data: &dyn libremetaverse::InventoryObjectClass,
) -> Result<Self, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.InventoryNode.#ctor(LibreMetaverse.InventoryBase)",
@@ -16822,11 +16855,11 @@ impl InventoryNode {
libremetaverse_types::unimplemented_api!("M:LibreMetaverse.InventoryNode.ToString")
}
/// C# member: `P:LibreMetaverse.InventoryNode.Data`.
pub fn data(&self) -> Option<libremetaverse::InventoryBase> {
pub fn data(&self) -> Option<Box<dyn libremetaverse::InventoryObjectClass>> {
libremetaverse_types::unimplemented_api!("P:LibreMetaverse.InventoryNode.Data")
}
/// Setter for C# member: `P:LibreMetaverse.InventoryNode.Data`.
pub fn set_data(&mut self, value: Option<libremetaverse::InventoryBase>) {
pub fn set_data(&mut self, value: Option<Box<dyn libremetaverse::InventoryObjectClass>>) {
libremetaverse_types::unimplemented_api!("P:LibreMetaverse.InventoryNode.Data")
}
/// C# member: `P:LibreMetaverse.InventoryNode.ModifyTime`.
@@ -16935,7 +16968,10 @@ impl InventoryNodeDictionary {
}
/// C# type: `T:LibreMetaverse.InventoryNotecard`.
pub struct InventoryNotecard;
pub struct InventoryNotecard {
/// Rust composition for C# base type `LibreMetaverse.InventoryItem`.
pub base: libremetaverse::InventoryItem,
}
impl InventoryNotecard {
/// C# member: `M:LibreMetaverse.InventoryNotecard.#ctor(LibreMetaverse.UUID)`.
pub fn new(uuid: libremetaverse_types::UUID) -> Result<Self, crate::Error> {
@@ -17101,7 +17137,10 @@ impl InventoryObjectUpdatedEventArgs {
}
/// C# type: `T:LibreMetaverse.InventorySettings`.
pub struct InventorySettings;
pub struct InventorySettings {
/// Rust composition for C# base type `LibreMetaverse.InventoryItem`.
pub base: libremetaverse::InventoryItem,
}
impl InventorySettings {
/// C# member: `M:LibreMetaverse.InventorySettings.#ctor(LibreMetaverse.UUID)`.
pub fn new(uuid: libremetaverse_types::UUID) -> Result<Self, crate::Error> {
@@ -17112,7 +17151,10 @@ impl InventorySettings {
}
/// C# type: `T:LibreMetaverse.InventorySnapshot`.
pub struct InventorySnapshot;
pub struct InventorySnapshot {
/// Rust composition for C# base type `LibreMetaverse.InventoryItem`.
pub base: libremetaverse::InventoryItem,
}
impl InventorySnapshot {
/// C# member: `M:LibreMetaverse.InventorySnapshot.#ctor(LibreMetaverse.UUID)`.
pub fn new(uuid: libremetaverse_types::UUID) -> Result<Self, crate::Error> {
@@ -17138,7 +17180,10 @@ impl InventorySortOrder {
}
/// C# type: `T:LibreMetaverse.InventorySound`.
pub struct InventorySound;
pub struct InventorySound {
/// Rust composition for C# base type `LibreMetaverse.InventoryItem`.
pub base: libremetaverse::InventoryItem,
}
impl InventorySound {
/// C# member: `M:LibreMetaverse.InventorySound.#ctor(LibreMetaverse.UUID)`.
pub fn new(uuid: libremetaverse_types::UUID) -> Result<Self, crate::Error> {

View File

@@ -143,6 +143,77 @@ pub use libremetaverse_structured_data as structured_data;
pub use libremetaverse_types as types;
pub use libremetaverse_types::Error;
/// Rust object-safe view of the C# `InventoryBase` inheritance hierarchy.
pub trait InventoryObjectClass: std::any::Any {
/// Returns the concrete value for exact C# runtime-type checks.
fn as_any(&self) -> &dyn std::any::Any;
/// Returns the shared `InventoryBase` portion of the concrete object.
fn inventory_base(&self) -> &InventoryBase;
}
/// Rust object-safe view of concrete classes derived from C# `InventoryItem`.
pub trait InventoryItemClass: InventoryObjectClass {}
macro_rules! inventory_object_class {
($type:ty, $base:ident $(.$nested:ident)*) => {
impl InventoryObjectClass for $type {
fn as_any(&self) -> &dyn std::any::Any {
self
}
fn inventory_base(&self) -> &InventoryBase {
&self.$base$(.$nested)*
}
}
};
}
impl InventoryObjectClass for InventoryBase {
fn as_any(&self) -> &dyn std::any::Any {
self
}
fn inventory_base(&self) -> &InventoryBase {
self
}
}
inventory_object_class!(InventoryFolder, base);
inventory_object_class!(InventoryItem, base);
inventory_object_class!(InventoryAnimation, base.base);
inventory_object_class!(InventoryAttachment, base.base);
inventory_object_class!(InventoryCallingCard, base.base);
inventory_object_class!(InventoryCategory, base.base);
inventory_object_class!(InventoryGesture, base.base);
inventory_object_class!(InventoryLSL, base.base);
inventory_object_class!(InventoryLandmark, base.base);
inventory_object_class!(InventoryMaterial, base.base);
inventory_object_class!(InventoryNotecard, base.base);
inventory_object_class!(InventoryObject, base.base);
inventory_object_class!(InventorySettings, base.base);
inventory_object_class!(InventorySnapshot, base.base);
inventory_object_class!(InventorySound, base.base);
inventory_object_class!(InventoryTexture, base.base);
inventory_object_class!(InventoryWearable, base.base);
impl InventoryItemClass for InventoryItem {}
impl InventoryItemClass for InventoryAnimation {}
impl InventoryItemClass for InventoryAttachment {}
impl InventoryItemClass for InventoryCallingCard {}
impl InventoryItemClass for InventoryCategory {}
impl InventoryItemClass for InventoryGesture {}
impl InventoryItemClass for InventoryLSL {}
impl InventoryItemClass for InventoryLandmark {}
impl InventoryItemClass for InventoryMaterial {}
impl InventoryItemClass for InventoryNotecard {}
impl InventoryItemClass for InventoryObject {}
impl InventoryItemClass for InventorySettings {}
impl InventoryItemClass for InventorySnapshot {}
impl InventoryItemClass for InventorySound {}
impl InventoryItemClass for InventoryTexture {}
impl InventoryItemClass for InventoryWearable {}
/// Project-owned boundary types for external `MessagePack` signatures.
pub mod message_pack {
pub trait IMessagePackFormatter<T = ()> {}