Implement Types collections and token bucket

This commit is contained in:
2026-08-08 23:45:26 +00:00
parent 28bd5a0296
commit ae0b7966e2
10 changed files with 1881 additions and 1023 deletions

View File

@@ -51,7 +51,7 @@ Running `cargo test --workspace` is intentionally red during the shim stage.
## Native implementation progress ## Native implementation progress
Milestone 04 implementation has begun. `libremetaverse-types` now provides Milestone 04 is complete. `libremetaverse-types` now provides
native UUID, incremental CRC-32, little-endian floating-point byte helpers, native UUID, incremental CRC-32, little-endian floating-point byte helpers,
Vector2/Vector3/Vector3d/Vector4 arithmetic and serialization, Color4 color Vector2/Vector3/Vector3d/Vector4 arithmetic and serialization, Color4 color
conversion, Ray storage, Quaternion rotation/interpolation/serialization, and conversion, Ray storage, Quaternion rotation/interpolation/serialization, and
@@ -66,8 +66,12 @@ direction. All Types enum discriminants retain their C# widths, extensible
protocol flags preserve unknown bits, and the native conversion layer covers protocol flags preserve unknown bits, and the native conversion layer covers
numeric and floating-point byte order, UTF-8 numeric and floating-point byte order, UTF-8
and hex text, hashes and PBKDF2, timestamps, IP addresses, region handles, enum and hex text, hashes and PBKDF2, timestamps, IP addresses, region handles, enum
metadata, and cross-platform OS detection. The remaining Types collections, metadata, and cross-platform OS detection. The Types collections,
caches, and token bucket stay visibly failure-only until their owning milestone including duplicate-preserving multi-value and synchronized double-key maps,
issue is completed. bounded LRU/MRU caches, deterministic absolute and sliding expiration, and
hierarchical token-bucket throttling are native Rust as well. Cache and bucket
tests use injected monotonic clocks, and concurrency invariants run without
sleep-based timing. All 45 Types and all 942 mapped members now resolve to
native implementations; no generated Types shims remain.
The controlled audit aggregates every expected failure by standardized C# The controlled audit aggregates every expected failure by standardized C#
member ID and rejects unrelated fixture, assertion, compile, or symbol errors. member ID and rejects unrelated fixture, assertion, compile, or symbol errors.

View File

@@ -10827,7 +10827,7 @@ M:LibreMetaverse.CacheDictionary`2.CacheDictionaryEnumerator.Reset method System
M:LibreMetaverse.CacheDictionary`2.Clear method System.Void LibreMetaverse.CacheDictionary<TKey, TValue>.Clear() libremetaverse-types libremetaverse_types::CacheDictionary::clear pub fn clear(&self) -> Result<(), crate::Error> shared_self sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.CacheDictionary`2.Clear method System.Void LibreMetaverse.CacheDictionary<TKey, TValue>.Clear() libremetaverse-types libremetaverse_types::CacheDictionary::clear pub fn clear(&self) -> Result<(), crate::Error> shared_self sync Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.CacheDictionary`2.Contains(System.Collections.Generic.KeyValuePair{`0,`1}) method System.Boolean LibreMetaverse.CacheDictionary<TKey, TValue>.Contains(System.Collections.Generic.KeyValuePair<TKey, TValue> item) libremetaverse-types libremetaverse_types::CacheDictionary::contains pub fn contains(&self, item: (TKey, Option<TValue>)) -> Result<bool, crate::Error> shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.CacheDictionary`2.Contains(System.Collections.Generic.KeyValuePair{`0,`1}) method System.Boolean LibreMetaverse.CacheDictionary<TKey, TValue>.Contains(System.Collections.Generic.KeyValuePair<TKey, TValue> item) libremetaverse-types libremetaverse_types::CacheDictionary::contains pub fn contains(&self, item: (TKey, Option<TValue>)) -> Result<bool, crate::Error> shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.CacheDictionary`2.ContainsKey(`0) method System.Boolean LibreMetaverse.CacheDictionary<TKey, TValue>.ContainsKey(TKey key) libremetaverse-types libremetaverse_types::CacheDictionary::contains_key pub fn contains_key(&self, key: TKey) -> Result<bool, crate::Error> shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.CacheDictionary`2.ContainsKey(`0) method System.Boolean LibreMetaverse.CacheDictionary<TKey, TValue>.ContainsKey(TKey key) libremetaverse-types libremetaverse_types::CacheDictionary::contains_key pub fn contains_key(&self, key: TKey) -> Result<bool, crate::Error> shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.CacheDictionary`2.CopyTo(System.Collections.Generic.KeyValuePair{`0,`1}[],System.Int32) method System.Void LibreMetaverse.CacheDictionary<TKey, TValue>.CopyTo(System.Collections.Generic.KeyValuePair<TKey, TValue>[] array, System.Int32 arrayIndex) libremetaverse-types libremetaverse_types::CacheDictionary::copy_to pub fn copy_to(&self, array: Vec<(TKey, TValue)>, array_index: i32) -> Result<(), crate::Error> shared_self,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.CacheDictionary`2.CopyTo(System.Collections.Generic.KeyValuePair{`0,`1}[],System.Int32) method System.Void LibreMetaverse.CacheDictionary<TKey, TValue>.CopyTo(System.Collections.Generic.KeyValuePair<TKey, TValue>[] array, System.Int32 arrayIndex) libremetaverse-types libremetaverse_types::CacheDictionary::copy_to pub fn copy_to(&self, array: &mut [(TKey, Option<TValue>)], array_index: i32) -> Result<(), crate::Error> shared_self,mutable_borrow,owned sync Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.CacheDictionary`2.GetEnumerator method System.Collections.Generic.IEnumerator<System.Collections.Generic.KeyValuePair<TKey, TValue>> LibreMetaverse.CacheDictionary<TKey, TValue>.GetEnumerator() libremetaverse-types libremetaverse_types::CacheDictionary::get_enumerator pub fn get_enumerator(&self) -> Result<Box<dyn Iterator<Item = (TKey, Option<TValue>)>>, crate::Error> shared_self sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.CacheDictionary`2.GetEnumerator method System.Collections.Generic.IEnumerator<System.Collections.Generic.KeyValuePair<TKey, TValue>> LibreMetaverse.CacheDictionary<TKey, TValue>.GetEnumerator() libremetaverse-types libremetaverse_types::CacheDictionary::get_enumerator pub fn get_enumerator(&self) -> Result<Box<dyn Iterator<Item = (TKey, Option<TValue>)>>, crate::Error> shared_self sync Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.CacheDictionary`2.Remove(System.Collections.Generic.KeyValuePair{`0,`1}) method System.Boolean LibreMetaverse.CacheDictionary<TKey, TValue>.Remove(System.Collections.Generic.KeyValuePair<TKey, TValue> item) libremetaverse-types libremetaverse_types::CacheDictionary::remove_with_key_value_pair pub fn remove_with_key_value_pair(&self, item: (TKey, Option<TValue>)) -> Result<bool, crate::Error> shared_self,owned sync Result<_, crate::Error> descriptive_overload_name method mapped M:LibreMetaverse.CacheDictionary`2.Remove(System.Collections.Generic.KeyValuePair{`0,`1}) method System.Boolean LibreMetaverse.CacheDictionary<TKey, TValue>.Remove(System.Collections.Generic.KeyValuePair<TKey, TValue> item) libremetaverse-types libremetaverse_types::CacheDictionary::remove_with_key_value_pair pub fn remove_with_key_value_pair(&self, item: (TKey, Option<TValue>)) -> Result<bool, crate::Error> shared_self,owned sync Result<_, crate::Error> descriptive_overload_name method mapped
M:LibreMetaverse.CacheDictionary`2.Remove(`0) method System.Boolean LibreMetaverse.CacheDictionary<TKey, TValue>.Remove(TKey key) libremetaverse-types libremetaverse_types::CacheDictionary::remove_with_t_key pub fn remove_with_t_key(&self, key: TKey) -> Result<bool, crate::Error> shared_self,owned sync Result<_, crate::Error> descriptive_overload_name method mapped M:LibreMetaverse.CacheDictionary`2.Remove(`0) method System.Boolean LibreMetaverse.CacheDictionary<TKey, TValue>.Remove(TKey key) libremetaverse-types libremetaverse_types::CacheDictionary::remove_with_t_key pub fn remove_with_t_key(&self, key: TKey) -> Result<bool, crate::Error> shared_self,owned sync Result<_, crate::Error> descriptive_overload_name method mapped
@@ -11071,7 +11071,7 @@ M:LibreMetaverse.ExpiringCache`2.AddOrUpdate(`0,`1,System.Double) method System.
M:LibreMetaverse.ExpiringCache`2.AddOrUpdate(`0,`1,System.TimeSpan) method System.Boolean LibreMetaverse.ExpiringCache<TKey, TValue>.AddOrUpdate(TKey key, TValue value, System.TimeSpan slidingExpiration) libremetaverse-types libremetaverse_types::ExpiringCache::add_or_update_with_t_key_t_value_time_span pub fn add_or_update_with_t_key_t_value_time_span(&self, key: TKey, value: Option<TValue>, sliding_expiration: std::time::Duration) -> Result<bool, crate::Error> shared_self,owned,owned,owned sync Result<_, crate::Error> descriptive_overload_name method mapped M:LibreMetaverse.ExpiringCache`2.AddOrUpdate(`0,`1,System.TimeSpan) method System.Boolean LibreMetaverse.ExpiringCache<TKey, TValue>.AddOrUpdate(TKey key, TValue value, System.TimeSpan slidingExpiration) libremetaverse-types libremetaverse_types::ExpiringCache::add_or_update_with_t_key_t_value_time_span pub fn add_or_update_with_t_key_t_value_time_span(&self, key: TKey, value: Option<TValue>, sliding_expiration: std::time::Duration) -> Result<bool, crate::Error> shared_self,owned,owned,owned sync Result<_, crate::Error> descriptive_overload_name method mapped
M:LibreMetaverse.ExpiringCache`2.Clear method System.Void LibreMetaverse.ExpiringCache<TKey, TValue>.Clear() libremetaverse-types libremetaverse_types::ExpiringCache::clear pub fn clear(&self) -> Result<(), crate::Error> shared_self sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.ExpiringCache`2.Clear method System.Void LibreMetaverse.ExpiringCache<TKey, TValue>.Clear() libremetaverse-types libremetaverse_types::ExpiringCache::clear pub fn clear(&self) -> Result<(), crate::Error> shared_self sync Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.ExpiringCache`2.Contains(`0) method System.Boolean LibreMetaverse.ExpiringCache<TKey, TValue>.Contains(TKey key) libremetaverse-types libremetaverse_types::ExpiringCache::contains pub fn contains(&self, key: TKey) -> Result<bool, crate::Error> shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.ExpiringCache`2.Contains(`0) method System.Boolean LibreMetaverse.ExpiringCache<TKey, TValue>.Contains(TKey key) libremetaverse-types libremetaverse_types::ExpiringCache::contains pub fn contains(&self, key: TKey) -> Result<bool, crate::Error> shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.ExpiringCache`2.CopyTo(System.Array,System.Int32) method System.Void LibreMetaverse.ExpiringCache<TKey, TValue>.CopyTo(System.Array array, System.Int32 startIndex) libremetaverse-types libremetaverse_types::ExpiringCache::copy_to pub fn copy_to(&self, array: libremetaverse_types::compat::Array, start_index: i32) -> Result<(), crate::Error> shared_self,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.ExpiringCache`2.CopyTo(System.Array,System.Int32) method System.Void LibreMetaverse.ExpiringCache<TKey, TValue>.CopyTo(System.Array array, System.Int32 startIndex) libremetaverse-types libremetaverse_types::ExpiringCache::copy_to pub fn copy_to(&self, array: &mut [(TKey, Option<TValue>)], start_index: i32) -> Result<(), crate::Error> shared_self,mutable_borrow,owned sync Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.ExpiringCache`2.Dispose method System.Void LibreMetaverse.ExpiringCache<TKey, TValue>.Dispose() libremetaverse-types libremetaverse_types::ExpiringCache::dispose pub fn dispose(&self) -> Result<(), crate::Error> shared_self sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.ExpiringCache`2.Dispose method System.Void LibreMetaverse.ExpiringCache<TKey, TValue>.Dispose() libremetaverse-types libremetaverse_types::ExpiringCache::dispose pub fn dispose(&self) -> Result<(), crate::Error> shared_self sync Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.ExpiringCache`2.Remove(`0) method System.Boolean LibreMetaverse.ExpiringCache<TKey, TValue>.Remove(TKey key) libremetaverse-types libremetaverse_types::ExpiringCache::remove pub fn remove(&self, key: TKey) -> Result<bool, crate::Error> shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.ExpiringCache`2.Remove(`0) method System.Boolean LibreMetaverse.ExpiringCache<TKey, TValue>.Remove(TKey key) libremetaverse-types libremetaverse_types::ExpiringCache::remove pub fn remove(&self, key: TKey) -> Result<bool, crate::Error> shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.ExpiringCache`2.TryGetValue(`0,`1@) method System.Boolean LibreMetaverse.ExpiringCache<TKey, TValue>.TryGetValue(TKey key, out TValue& value) libremetaverse-types libremetaverse_types::ExpiringCache::try_get_value pub fn try_get_value(&self, key: TKey, value: &mut Option<TValue>) -> bool shared_self,owned,mutable_output sync infallible_placeholder direct_snake_case method mapped M:LibreMetaverse.ExpiringCache`2.TryGetValue(`0,`1@) method System.Boolean LibreMetaverse.ExpiringCache<TKey, TValue>.TryGetValue(TKey key, out TValue& value) libremetaverse-types libremetaverse_types::ExpiringCache::try_get_value pub fn try_get_value(&self, key: TKey, value: &mut Option<TValue>) -> bool shared_self,owned,mutable_output sync infallible_placeholder direct_snake_case method mapped
@@ -26181,7 +26181,7 @@ P:LibreMetaverse.EventQueueRunningEventArgs.Simulator property LibreMetaverse.Si
P:LibreMetaverse.ExperienceInfoEventArgs.ExperienceInfo property LibreMetaverse.Messages.Linden.ExperienceInfoMessage LibreMetaverse.ExperienceInfoEventArgs.ExperienceInfo libremetaverse libremetaverse::ExperienceInfoEventArgs::experience_info pub fn experience_info(&self) -> libremetaverse::messages::linden::ExperienceInfoMessage shared_self sync infallible_placeholder direct_snake_case accessor_methods mapped P:LibreMetaverse.ExperienceInfoEventArgs.ExperienceInfo property LibreMetaverse.Messages.Linden.ExperienceInfoMessage LibreMetaverse.ExperienceInfoEventArgs.ExperienceInfo libremetaverse libremetaverse::ExperienceInfoEventArgs::experience_info pub fn experience_info(&self) -> libremetaverse::messages::linden::ExperienceInfoMessage shared_self sync infallible_placeholder direct_snake_case accessor_methods mapped
P:LibreMetaverse.ExperiencePreferencesEventArgs.Preferences property LibreMetaverse.Messages.Linden.ExperiencePreferencesMessage LibreMetaverse.ExperiencePreferencesEventArgs.Preferences libremetaverse libremetaverse::ExperiencePreferencesEventArgs::preferences pub fn preferences(&self) -> libremetaverse::messages::linden::ExperiencePreferencesMessage shared_self sync infallible_placeholder direct_snake_case accessor_methods mapped P:LibreMetaverse.ExperiencePreferencesEventArgs.Preferences property LibreMetaverse.Messages.Linden.ExperiencePreferencesMessage LibreMetaverse.ExperiencePreferencesEventArgs.Preferences libremetaverse libremetaverse::ExperiencePreferencesEventArgs::preferences pub fn preferences(&self) -> libremetaverse::messages::linden::ExperiencePreferencesMessage shared_self sync infallible_placeholder direct_snake_case accessor_methods mapped
P:LibreMetaverse.ExpiringCache`2.Count property System.Int32 LibreMetaverse.ExpiringCache<TKey, TValue>.Count libremetaverse-types libremetaverse_types::ExpiringCache::count pub fn count(&self) -> i32 shared_self sync infallible_placeholder direct_snake_case accessor_methods mapped P:LibreMetaverse.ExpiringCache`2.Count property System.Int32 LibreMetaverse.ExpiringCache<TKey, TValue>.Count libremetaverse-types libremetaverse_types::ExpiringCache::count pub fn count(&self) -> i32 shared_self sync infallible_placeholder direct_snake_case accessor_methods mapped
P:LibreMetaverse.ExpiringCache`2.Item(`0) indexer System.Object LibreMetaverse.ExpiringCache<TKey, TValue>.Item libremetaverse-types libremetaverse_types::ExpiringCache::item pub fn item(&self, key: TKey) -> Option<libremetaverse_types::compat::Object> shared_self,owned sync infallible_placeholder direct_snake_case accessor_methods mapped P:LibreMetaverse.ExpiringCache`2.Item(`0) indexer System.Object LibreMetaverse.ExpiringCache<TKey, TValue>.Item libremetaverse-types libremetaverse_types::ExpiringCache::item pub fn item(&self, key: TKey) -> Option<TValue> shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped
P:LibreMetaverse.FindObjectByPathReplyEventArgs.InventoryObjectID property LibreMetaverse.UUID LibreMetaverse.FindObjectByPathReplyEventArgs.InventoryObjectID libremetaverse libremetaverse::FindObjectByPathReplyEventArgs::inventory_object_id pub fn inventory_object_id(&self) -> libremetaverse_types::UUID shared_self sync infallible_placeholder direct_snake_case accessor_methods mapped P:LibreMetaverse.FindObjectByPathReplyEventArgs.InventoryObjectID property LibreMetaverse.UUID LibreMetaverse.FindObjectByPathReplyEventArgs.InventoryObjectID libremetaverse libremetaverse::FindObjectByPathReplyEventArgs::inventory_object_id pub fn inventory_object_id(&self) -> libremetaverse_types::UUID shared_self sync infallible_placeholder direct_snake_case accessor_methods mapped
P:LibreMetaverse.FindObjectByPathReplyEventArgs.Path property System.String LibreMetaverse.FindObjectByPathReplyEventArgs.Path libremetaverse libremetaverse::FindObjectByPathReplyEventArgs::path pub fn path(&self) -> String shared_self sync infallible_placeholder direct_snake_case accessor_methods mapped P:LibreMetaverse.FindObjectByPathReplyEventArgs.Path property System.String LibreMetaverse.FindObjectByPathReplyEventArgs.Path libremetaverse libremetaverse::FindObjectByPathReplyEventArgs::path pub fn path(&self) -> String shared_self sync infallible_placeholder direct_snake_case accessor_methods mapped
P:LibreMetaverse.FolderUpdatedEventArgs.FolderID property LibreMetaverse.UUID LibreMetaverse.FolderUpdatedEventArgs.FolderID libremetaverse libremetaverse::FolderUpdatedEventArgs::folder_id pub fn folder_id(&self) -> libremetaverse_types::UUID shared_self sync infallible_placeholder direct_snake_case accessor_methods mapped P:LibreMetaverse.FolderUpdatedEventArgs.FolderID property LibreMetaverse.UUID LibreMetaverse.FolderUpdatedEventArgs.FolderID libremetaverse libremetaverse::FolderUpdatedEventArgs::folder_id pub fn folder_id(&self) -> libremetaverse_types::UUID shared_self sync infallible_placeholder direct_snake_case accessor_methods mapped
Can't render this file because it is too large.

View File

@@ -13,7 +13,7 @@ Generated by `python3 tools/generate_api_shims.py`; do not edit by hand.
| `LibreMetaverse.Rendering.MeshFoundry` | 1 | 14 | callable failure-only shim | | `LibreMetaverse.Rendering.MeshFoundry` | 1 | 14 | callable failure-only shim |
| `LibreMetaverse.Rendering.Simple` | 1 | 6 | callable failure-only shim | | `LibreMetaverse.Rendering.Simple` | 1 | 6 | callable failure-only shim |
| `LibreMetaverse.StructuredData` | 16 | 295 | callable failure-only shim | | `LibreMetaverse.StructuredData` | 16 | 295 | callable failure-only shim |
| `LibreMetaverse.Types` | 45 | 942 | native implementation: 35 types / 821 members; remaining surface is callable failure-only shims | | `LibreMetaverse.Types` | 45 | 942 | native implementation: 45 types / 942 members; no generated shims remain |
| `LibreMetaverse.Utilities` | 3 | 13 | callable failure-only shim | | `LibreMetaverse.Utilities` | 3 | 13 | callable failure-only shim |
| `LibreMetaverse.Voice.Vivox` | 64 | 531 | callable failure-only shim | | `LibreMetaverse.Voice.Vivox` | 64 | 531 | callable failure-only shim |
| `LibreMetaverse.Voice.WebRTC` | 12 | 210 | callable failure-only shim | | `LibreMetaverse.Voice.WebRTC` | 12 | 210 | callable failure-only shim |

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -3,6 +3,7 @@
extern crate self as libremetaverse_types; extern crate self as libremetaverse_types;
mod byte_order; mod byte_order;
mod collections;
mod color4; mod color4;
pub mod compat; pub mod compat;
mod crc32; mod crc32;

View File

@@ -173737,83 +173737,113 @@ fn member_29180(value: &mut libremetaverse_types::CRC32) {
fn type_2946<TKey, TValue>(_: &libremetaverse_types::CacheDictionary<TKey, TValue>) {} fn type_2946<TKey, TValue>(_: &libremetaverse_types::CacheDictionary<TKey, TValue>) {}
// C# member: `M:LibreMetaverse.CacheDictionary`2.#ctor(System.Int32,LibreMetaverse.ICacheDictionaryRemovalStrategy{`0})`. // C# member: `M:LibreMetaverse.CacheDictionary`2.#ctor(System.Int32,LibreMetaverse.ICacheDictionaryRemovalStrategy{`0})`.
fn member_29181<TKey, TValue>() { fn member_29181<TKey: Clone + PartialEq, TValue: Clone + PartialEq>() {
let _ = libremetaverse_types::CacheDictionary::<TKey, TValue>::new(argument(), argument()); let _ = libremetaverse_types::CacheDictionary::<TKey, TValue>::new(argument(), argument());
} }
// C# member: `M:LibreMetaverse.CacheDictionary`2.Add(System.Collections.Generic.KeyValuePair{`0,`1})`. // C# member: `M:LibreMetaverse.CacheDictionary`2.Add(System.Collections.Generic.KeyValuePair{`0,`1})`.
fn member_29182<TKey, TValue>(value: &mut libremetaverse_types::CacheDictionary<TKey, TValue>) { fn member_29182<TKey: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::CacheDictionary<TKey, TValue>,
) {
let _ = value.add_with_key_value_pair(argument()); let _ = value.add_with_key_value_pair(argument());
} }
// C# member: `M:LibreMetaverse.CacheDictionary`2.Add(`0,`1)`. // C# member: `M:LibreMetaverse.CacheDictionary`2.Add(`0,`1)`.
fn member_29183<TKey, TValue>(value: &mut libremetaverse_types::CacheDictionary<TKey, TValue>) { fn member_29183<TKey: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::CacheDictionary<TKey, TValue>,
) {
let _ = value.add_with_t_key_t_value(argument(), argument()); let _ = value.add_with_t_key_t_value(argument(), argument());
} }
// C# member: `M:LibreMetaverse.CacheDictionary`2.Clear`. // C# member: `M:LibreMetaverse.CacheDictionary`2.Clear`.
fn member_29184<TKey, TValue>(value: &mut libremetaverse_types::CacheDictionary<TKey, TValue>) { fn member_29184<TKey: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::CacheDictionary<TKey, TValue>,
) {
let _ = value.clear(); let _ = value.clear();
} }
// C# member: `M:LibreMetaverse.CacheDictionary`2.Contains(System.Collections.Generic.KeyValuePair{`0,`1})`. // C# member: `M:LibreMetaverse.CacheDictionary`2.Contains(System.Collections.Generic.KeyValuePair{`0,`1})`.
fn member_29185<TKey, TValue>(value: &mut libremetaverse_types::CacheDictionary<TKey, TValue>) { fn member_29185<TKey: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::CacheDictionary<TKey, TValue>,
) {
let _ = value.contains(argument()); let _ = value.contains(argument());
} }
// C# member: `M:LibreMetaverse.CacheDictionary`2.ContainsKey(`0)`. // C# member: `M:LibreMetaverse.CacheDictionary`2.ContainsKey(`0)`.
fn member_29186<TKey, TValue>(value: &mut libremetaverse_types::CacheDictionary<TKey, TValue>) { fn member_29186<TKey: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::CacheDictionary<TKey, TValue>,
) {
let _ = value.contains_key(argument()); let _ = value.contains_key(argument());
} }
// C# member: `M:LibreMetaverse.CacheDictionary`2.CopyTo(System.Collections.Generic.KeyValuePair{`0,`1}[],System.Int32)`. // C# member: `M:LibreMetaverse.CacheDictionary`2.CopyTo(System.Collections.Generic.KeyValuePair{`0,`1}[],System.Int32)`.
fn member_29187<TKey, TValue>(value: &mut libremetaverse_types::CacheDictionary<TKey, TValue>) { fn member_29187<TKey: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::CacheDictionary<TKey, TValue>,
) {
let _ = value.copy_to(argument(), argument()); let _ = value.copy_to(argument(), argument());
} }
// C# member: `M:LibreMetaverse.CacheDictionary`2.GetEnumerator`. // C# member: `M:LibreMetaverse.CacheDictionary`2.GetEnumerator`.
fn member_29188<TKey, TValue>(value: &mut libremetaverse_types::CacheDictionary<TKey, TValue>) { fn member_29188<TKey: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::CacheDictionary<TKey, TValue>,
) {
let _ = value.get_enumerator(); let _ = value.get_enumerator();
} }
// C# member: `M:LibreMetaverse.CacheDictionary`2.Remove(System.Collections.Generic.KeyValuePair{`0,`1})`. // C# member: `M:LibreMetaverse.CacheDictionary`2.Remove(System.Collections.Generic.KeyValuePair{`0,`1})`.
fn member_29189<TKey, TValue>(value: &mut libremetaverse_types::CacheDictionary<TKey, TValue>) { fn member_29189<TKey: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::CacheDictionary<TKey, TValue>,
) {
let _ = value.remove_with_key_value_pair(argument()); let _ = value.remove_with_key_value_pair(argument());
} }
// C# member: `M:LibreMetaverse.CacheDictionary`2.Remove(`0)`. // C# member: `M:LibreMetaverse.CacheDictionary`2.Remove(`0)`.
fn member_29190<TKey, TValue>(value: &mut libremetaverse_types::CacheDictionary<TKey, TValue>) { fn member_29190<TKey: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::CacheDictionary<TKey, TValue>,
) {
let _ = value.remove_with_t_key(argument()); let _ = value.remove_with_t_key(argument());
} }
// C# member: `M:LibreMetaverse.CacheDictionary`2.TryGetValue(`0,`1@)`. // C# member: `M:LibreMetaverse.CacheDictionary`2.TryGetValue(`0,`1@)`.
fn member_29191<TKey, TValue>(value: &mut libremetaverse_types::CacheDictionary<TKey, TValue>) { fn member_29191<TKey: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::CacheDictionary<TKey, TValue>,
) {
let _ = value.try_get_value(argument(), argument()); let _ = value.try_get_value(argument(), argument());
} }
// C# member: `P:LibreMetaverse.CacheDictionary`2.Count`. // C# member: `P:LibreMetaverse.CacheDictionary`2.Count`.
fn member_29192<TKey, TValue>(value: &mut libremetaverse_types::CacheDictionary<TKey, TValue>) { fn member_29192<TKey: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::CacheDictionary<TKey, TValue>,
) {
let _ = value.count(); let _ = value.count();
} }
// C# member: `P:LibreMetaverse.CacheDictionary`2.IsReadOnly`. // C# member: `P:LibreMetaverse.CacheDictionary`2.IsReadOnly`.
fn member_29193<TKey, TValue>(value: &mut libremetaverse_types::CacheDictionary<TKey, TValue>) { fn member_29193<TKey: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::CacheDictionary<TKey, TValue>,
) {
let _ = value.is_read_only(); let _ = value.is_read_only();
} }
// C# member: `P:LibreMetaverse.CacheDictionary`2.Item(`0)`. // C# member: `P:LibreMetaverse.CacheDictionary`2.Item(`0)`.
fn member_29194<TKey, TValue>(value: &mut libremetaverse_types::CacheDictionary<TKey, TValue>) { fn member_29194<TKey: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::CacheDictionary<TKey, TValue>,
) {
let _ = value.item(argument()); let _ = value.item(argument());
let _ = value.set_item(argument(), argument()); let _ = value.set_item(argument(), argument());
} }
// C# member: `P:LibreMetaverse.CacheDictionary`2.Keys`. // C# member: `P:LibreMetaverse.CacheDictionary`2.Keys`.
fn member_29195<TKey, TValue>(value: &mut libremetaverse_types::CacheDictionary<TKey, TValue>) { fn member_29195<TKey: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::CacheDictionary<TKey, TValue>,
) {
let _ = value.keys(); let _ = value.keys();
} }
// C# member: `P:LibreMetaverse.CacheDictionary`2.Values`. // C# member: `P:LibreMetaverse.CacheDictionary`2.Values`.
fn member_29196<TKey, TValue>(value: &mut libremetaverse_types::CacheDictionary<TKey, TValue>) { fn member_29196<TKey: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::CacheDictionary<TKey, TValue>,
) {
let _ = value.values(); let _ = value.values();
} }
@@ -173824,28 +173854,28 @@ fn type_2947<TKey, TValue>(
} }
// C# member: `M:LibreMetaverse.CacheDictionary`2.CacheDictionaryEnumerator.Dispose`. // C# member: `M:LibreMetaverse.CacheDictionary`2.CacheDictionaryEnumerator.Dispose`.
fn member_29197<TKey, TValue>( fn member_29197<TKey: Clone, TValue: Clone>(
value: &mut libremetaverse_types::CacheDictionaryCacheDictionaryEnumerator<TKey, TValue>, value: &mut libremetaverse_types::CacheDictionaryCacheDictionaryEnumerator<TKey, TValue>,
) { ) {
let _ = value.dispose(); let _ = value.dispose();
} }
// C# member: `M:LibreMetaverse.CacheDictionary`2.CacheDictionaryEnumerator.MoveNext`. // C# member: `M:LibreMetaverse.CacheDictionary`2.CacheDictionaryEnumerator.MoveNext`.
fn member_29198<TKey, TValue>( fn member_29198<TKey: Clone, TValue: Clone>(
value: &mut libremetaverse_types::CacheDictionaryCacheDictionaryEnumerator<TKey, TValue>, value: &mut libremetaverse_types::CacheDictionaryCacheDictionaryEnumerator<TKey, TValue>,
) { ) {
let _ = value.move_next(); let _ = value.move_next();
} }
// C# member: `M:LibreMetaverse.CacheDictionary`2.CacheDictionaryEnumerator.Reset`. // C# member: `M:LibreMetaverse.CacheDictionary`2.CacheDictionaryEnumerator.Reset`.
fn member_29199<TKey, TValue>( fn member_29199<TKey: Clone, TValue: Clone>(
value: &mut libremetaverse_types::CacheDictionaryCacheDictionaryEnumerator<TKey, TValue>, value: &mut libremetaverse_types::CacheDictionaryCacheDictionaryEnumerator<TKey, TValue>,
) { ) {
let _ = value.reset(); let _ = value.reset();
} }
// C# member: `P:LibreMetaverse.CacheDictionary`2.CacheDictionaryEnumerator.Current`. // C# member: `P:LibreMetaverse.CacheDictionary`2.CacheDictionaryEnumerator.Current`.
fn member_29200<TKey, TValue>( fn member_29200<TKey: Clone, TValue: Clone>(
value: &mut libremetaverse_types::CacheDictionaryCacheDictionaryEnumerator<TKey, TValue>, value: &mut libremetaverse_types::CacheDictionaryCacheDictionaryEnumerator<TKey, TValue>,
) { ) {
let _ = value.current(); let _ = value.current();
@@ -174087,130 +174117,130 @@ fn type_2950<TKey1, TKey2, TValue>(
} }
// C# member: `M:LibreMetaverse.DoubleDictionary`3.#ctor`. // C# member: `M:LibreMetaverse.DoubleDictionary`3.#ctor`.
fn member_29240<TKey1, TKey2, TValue>() { fn member_29240<TKey1: Clone + PartialEq, TKey2: Clone + PartialEq, TValue: Clone + PartialEq>() {
let _ = libremetaverse_types::DoubleDictionary::<TKey1, TKey2, TValue>::new_with_constructor(); let _ = libremetaverse_types::DoubleDictionary::<TKey1, TKey2, TValue>::new_with_constructor();
} }
// C# member: `M:LibreMetaverse.DoubleDictionary`3.#ctor(System.Int32)`. // C# member: `M:LibreMetaverse.DoubleDictionary`3.#ctor(System.Int32)`.
fn member_29241<TKey1, TKey2, TValue>() { fn member_29241<TKey1: Clone + PartialEq, TKey2: Clone + PartialEq, TValue: Clone + PartialEq>() {
let _ = let _ =
libremetaverse_types::DoubleDictionary::<TKey1, TKey2, TValue>::new_with_int32(argument()); libremetaverse_types::DoubleDictionary::<TKey1, TKey2, TValue>::new_with_int32(argument());
} }
// C# member: `M:LibreMetaverse.DoubleDictionary`3.Add(`0,`1,`2)`. // C# member: `M:LibreMetaverse.DoubleDictionary`3.Add(`0,`1,`2)`.
fn member_29242<TKey1, TKey2, TValue>( fn member_29242<TKey1: Clone + PartialEq, TKey2: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::DoubleDictionary<TKey1, TKey2, TValue>, value: &mut libremetaverse_types::DoubleDictionary<TKey1, TKey2, TValue>,
) { ) {
let _ = value.add(argument(), argument(), argument()); let _ = value.add(argument(), argument(), argument());
} }
// C# member: `M:LibreMetaverse.DoubleDictionary`3.Clear`. // C# member: `M:LibreMetaverse.DoubleDictionary`3.Clear`.
fn member_29243<TKey1, TKey2, TValue>( fn member_29243<TKey1: Clone + PartialEq, TKey2: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::DoubleDictionary<TKey1, TKey2, TValue>, value: &mut libremetaverse_types::DoubleDictionary<TKey1, TKey2, TValue>,
) { ) {
let _ = value.clear(); let _ = value.clear();
} }
// C# member: `M:LibreMetaverse.DoubleDictionary`3.ContainsKey(`0)`. // C# member: `M:LibreMetaverse.DoubleDictionary`3.ContainsKey(`0)`.
fn member_29244<TKey1, TKey2, TValue>( fn member_29244<TKey1: Clone + PartialEq, TKey2: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::DoubleDictionary<TKey1, TKey2, TValue>, value: &mut libremetaverse_types::DoubleDictionary<TKey1, TKey2, TValue>,
) { ) {
let _ = value.contains_key_with_t_key1(argument()); let _ = value.contains_key_with_t_key1(argument());
} }
// C# member: `M:LibreMetaverse.DoubleDictionary`3.ContainsKey(`1)`. // C# member: `M:LibreMetaverse.DoubleDictionary`3.ContainsKey(`1)`.
fn member_29245<TKey1, TKey2, TValue>( fn member_29245<TKey1: Clone + PartialEq, TKey2: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::DoubleDictionary<TKey1, TKey2, TValue>, value: &mut libremetaverse_types::DoubleDictionary<TKey1, TKey2, TValue>,
) { ) {
let _ = value.contains_key_with_t_key2(argument()); let _ = value.contains_key_with_t_key2(argument());
} }
// C# member: `M:LibreMetaverse.DoubleDictionary`3.Dispose`. // C# member: `M:LibreMetaverse.DoubleDictionary`3.Dispose`.
fn member_29246<TKey1, TKey2, TValue>( fn member_29246<TKey1: Clone + PartialEq, TKey2: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::DoubleDictionary<TKey1, TKey2, TValue>, value: &mut libremetaverse_types::DoubleDictionary<TKey1, TKey2, TValue>,
) { ) {
let _ = value.dispose(); let _ = value.dispose();
} }
// C# member: `M:LibreMetaverse.DoubleDictionary`3.FindAll(System.Predicate{`2})`. // C# member: `M:LibreMetaverse.DoubleDictionary`3.FindAll(System.Predicate{`2})`.
fn member_29247<TKey1, TKey2, TValue>( fn member_29247<TKey1: Clone + PartialEq, TKey2: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::DoubleDictionary<TKey1, TKey2, TValue>, value: &mut libremetaverse_types::DoubleDictionary<TKey1, TKey2, TValue>,
) { ) {
let _ = value.find_all(argument()); let _ = value.find_all(argument());
} }
// C# member: `M:LibreMetaverse.DoubleDictionary`3.FindValue(System.Predicate{`2})`. // C# member: `M:LibreMetaverse.DoubleDictionary`3.FindValue(System.Predicate{`2})`.
fn member_29248<TKey1, TKey2, TValue>( fn member_29248<TKey1: Clone + PartialEq, TKey2: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::DoubleDictionary<TKey1, TKey2, TValue>, value: &mut libremetaverse_types::DoubleDictionary<TKey1, TKey2, TValue>,
) { ) {
let _ = value.find_value(argument()); let _ = value.find_value(argument());
} }
// C# member: `M:LibreMetaverse.DoubleDictionary`3.ForEach(System.Action{System.Collections.Generic.KeyValuePair{`0,`2}})`. // C# member: `M:LibreMetaverse.DoubleDictionary`3.ForEach(System.Action{System.Collections.Generic.KeyValuePair{`0,`2}})`.
fn member_29249<TKey1, TKey2, TValue>( fn member_29249<TKey1: Clone + PartialEq, TKey2: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::DoubleDictionary<TKey1, TKey2, TValue>, value: &mut libremetaverse_types::DoubleDictionary<TKey1, TKey2, TValue>,
) { ) {
let _ = value.for_each_with_action(argument()); let _ = value.for_each_with_action(argument());
} }
// C# member: `M:LibreMetaverse.DoubleDictionary`3.ForEach(System.Action{System.Collections.Generic.KeyValuePair{`1,`2}})`. // C# member: `M:LibreMetaverse.DoubleDictionary`3.ForEach(System.Action{System.Collections.Generic.KeyValuePair{`1,`2}})`.
fn member_29250<TKey1, TKey2, TValue>( fn member_29250<TKey1: Clone + PartialEq, TKey2: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::DoubleDictionary<TKey1, TKey2, TValue>, value: &mut libremetaverse_types::DoubleDictionary<TKey1, TKey2, TValue>,
) { ) {
let _ = value.for_each_with_action_4dc2e201(argument()); let _ = value.for_each_with_action_4dc2e201(argument());
} }
// C# member: `M:LibreMetaverse.DoubleDictionary`3.ForEach(System.Action{`2})`. // C# member: `M:LibreMetaverse.DoubleDictionary`3.ForEach(System.Action{`2})`.
fn member_29251<TKey1, TKey2, TValue>( fn member_29251<TKey1: Clone + PartialEq, TKey2: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::DoubleDictionary<TKey1, TKey2, TValue>, value: &mut libremetaverse_types::DoubleDictionary<TKey1, TKey2, TValue>,
) { ) {
let _ = value.for_each_with_action_b56adc7f(argument()); let _ = value.for_each_with_action_b56adc7f(argument());
} }
// C# member: `M:LibreMetaverse.DoubleDictionary`3.Remove(`0)`. // C# member: `M:LibreMetaverse.DoubleDictionary`3.Remove(`0)`.
fn member_29252<TKey1, TKey2, TValue>( fn member_29252<TKey1: Clone + PartialEq, TKey2: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::DoubleDictionary<TKey1, TKey2, TValue>, value: &mut libremetaverse_types::DoubleDictionary<TKey1, TKey2, TValue>,
) { ) {
let _ = value.remove_with_t_key1(argument()); let _ = value.remove_with_t_key1(argument());
} }
// C# member: `M:LibreMetaverse.DoubleDictionary`3.Remove(`0,`1)`. // C# member: `M:LibreMetaverse.DoubleDictionary`3.Remove(`0,`1)`.
fn member_29253<TKey1, TKey2, TValue>( fn member_29253<TKey1: Clone + PartialEq, TKey2: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::DoubleDictionary<TKey1, TKey2, TValue>, value: &mut libremetaverse_types::DoubleDictionary<TKey1, TKey2, TValue>,
) { ) {
let _ = value.remove_with_t_key1_t_key2(argument(), argument()); let _ = value.remove_with_t_key1_t_key2(argument(), argument());
} }
// C# member: `M:LibreMetaverse.DoubleDictionary`3.Remove(`1)`. // C# member: `M:LibreMetaverse.DoubleDictionary`3.Remove(`1)`.
fn member_29254<TKey1, TKey2, TValue>( fn member_29254<TKey1: Clone + PartialEq, TKey2: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::DoubleDictionary<TKey1, TKey2, TValue>, value: &mut libremetaverse_types::DoubleDictionary<TKey1, TKey2, TValue>,
) { ) {
let _ = value.remove_with_t_key2(argument()); let _ = value.remove_with_t_key2(argument());
} }
// C# member: `M:LibreMetaverse.DoubleDictionary`3.RemoveAll(System.Predicate{`2})`. // C# member: `M:LibreMetaverse.DoubleDictionary`3.RemoveAll(System.Predicate{`2})`.
fn member_29255<TKey1, TKey2, TValue>( fn member_29255<TKey1: Clone + PartialEq, TKey2: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::DoubleDictionary<TKey1, TKey2, TValue>, value: &mut libremetaverse_types::DoubleDictionary<TKey1, TKey2, TValue>,
) { ) {
let _ = value.remove_all(argument()); let _ = value.remove_all(argument());
} }
// C# member: `M:LibreMetaverse.DoubleDictionary`3.TryGetValue(`0,`2@)`. // C# member: `M:LibreMetaverse.DoubleDictionary`3.TryGetValue(`0,`2@)`.
fn member_29256<TKey1, TKey2, TValue>( fn member_29256<TKey1: Clone + PartialEq, TKey2: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::DoubleDictionary<TKey1, TKey2, TValue>, value: &mut libremetaverse_types::DoubleDictionary<TKey1, TKey2, TValue>,
) { ) {
let _ = value.try_get_value_with_t_key1_t_value(argument(), argument()); let _ = value.try_get_value_with_t_key1_t_value(argument(), argument());
} }
// C# member: `M:LibreMetaverse.DoubleDictionary`3.TryGetValue(`1,`2@)`. // C# member: `M:LibreMetaverse.DoubleDictionary`3.TryGetValue(`1,`2@)`.
fn member_29257<TKey1, TKey2, TValue>( fn member_29257<TKey1: Clone + PartialEq, TKey2: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::DoubleDictionary<TKey1, TKey2, TValue>, value: &mut libremetaverse_types::DoubleDictionary<TKey1, TKey2, TValue>,
) { ) {
let _ = value.try_get_value_with_t_key2_t_value(argument(), argument()); let _ = value.try_get_value_with_t_key2_t_value(argument(), argument());
} }
// C# member: `P:LibreMetaverse.DoubleDictionary`3.Count`. // C# member: `P:LibreMetaverse.DoubleDictionary`3.Count`.
fn member_29258<TKey1, TKey2, TValue>( fn member_29258<TKey1: Clone + PartialEq, TKey2: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::DoubleDictionary<TKey1, TKey2, TValue>, value: &mut libremetaverse_types::DoubleDictionary<TKey1, TKey2, TValue>,
) { ) {
let _ = value.count(); let _ = value.count();
@@ -174220,37 +174250,49 @@ fn member_29258<TKey1, TKey2, TValue>(
fn type_2951<TKey>(_: &libremetaverse_types::EmptyRemovalStrategy<TKey>) {} fn type_2951<TKey>(_: &libremetaverse_types::EmptyRemovalStrategy<TKey>) {}
// C# member: `M:LibreMetaverse.EmptyRemovalStrategy`1.#ctor`. // C# member: `M:LibreMetaverse.EmptyRemovalStrategy`1.#ctor`.
fn member_29259<TKey>() { fn member_29259<TKey: Clone + PartialEq + Send>() {
let _ = libremetaverse_types::EmptyRemovalStrategy::<TKey>::new(); let _ = libremetaverse_types::EmptyRemovalStrategy::<TKey>::new();
} }
// C# member: `M:LibreMetaverse.EmptyRemovalStrategy`1.Clear`. // C# member: `M:LibreMetaverse.EmptyRemovalStrategy`1.Clear`.
fn member_29260<TKey>(value: &mut libremetaverse_types::EmptyRemovalStrategy<TKey>) { fn member_29260<TKey: Clone + PartialEq + Send>(
value: &mut libremetaverse_types::EmptyRemovalStrategy<TKey>,
) {
let _ = value.clear(); let _ = value.clear();
} }
// C# member: `M:LibreMetaverse.EmptyRemovalStrategy`1.GetKeyToRemove`. // C# member: `M:LibreMetaverse.EmptyRemovalStrategy`1.GetKeyToRemove`.
fn member_29261<TKey>(value: &mut libremetaverse_types::EmptyRemovalStrategy<TKey>) { fn member_29261<TKey: Clone + PartialEq + Send>(
value: &mut libremetaverse_types::EmptyRemovalStrategy<TKey>,
) {
let _ = value.get_key_to_remove(); let _ = value.get_key_to_remove();
} }
// C# member: `M:LibreMetaverse.EmptyRemovalStrategy`1.Initialize(System.Int32)`. // C# member: `M:LibreMetaverse.EmptyRemovalStrategy`1.Initialize(System.Int32)`.
fn member_29262<TKey>(value: &mut libremetaverse_types::EmptyRemovalStrategy<TKey>) { fn member_29262<TKey: Clone + PartialEq + Send>(
value: &mut libremetaverse_types::EmptyRemovalStrategy<TKey>,
) {
let _ = value.initialize(argument()); let _ = value.initialize(argument());
} }
// C# member: `M:LibreMetaverse.EmptyRemovalStrategy`1.KeyAccessed(`0)`. // C# member: `M:LibreMetaverse.EmptyRemovalStrategy`1.KeyAccessed(`0)`.
fn member_29263<TKey>(value: &mut libremetaverse_types::EmptyRemovalStrategy<TKey>) { fn member_29263<TKey: Clone + PartialEq + Send>(
value: &mut libremetaverse_types::EmptyRemovalStrategy<TKey>,
) {
let _ = value.key_accessed(argument()); let _ = value.key_accessed(argument());
} }
// C# member: `M:LibreMetaverse.EmptyRemovalStrategy`1.KeyAdded(`0)`. // C# member: `M:LibreMetaverse.EmptyRemovalStrategy`1.KeyAdded(`0)`.
fn member_29264<TKey>(value: &mut libremetaverse_types::EmptyRemovalStrategy<TKey>) { fn member_29264<TKey: Clone + PartialEq + Send>(
value: &mut libremetaverse_types::EmptyRemovalStrategy<TKey>,
) {
let _ = value.key_added(argument()); let _ = value.key_added(argument());
} }
// C# member: `M:LibreMetaverse.EmptyRemovalStrategy`1.KeyRemoved(`0)`. // C# member: `M:LibreMetaverse.EmptyRemovalStrategy`1.KeyRemoved(`0)`.
fn member_29265<TKey>(value: &mut libremetaverse_types::EmptyRemovalStrategy<TKey>) { fn member_29265<TKey: Clone + PartialEq + Send>(
value: &mut libremetaverse_types::EmptyRemovalStrategy<TKey>,
) {
let _ = value.key_removed(argument()); let _ = value.key_removed(argument());
} }
@@ -174284,82 +174326,112 @@ fn member_29269() {
fn type_2954<TKey, TValue>(_: &libremetaverse_types::ExpiringCache<TKey, TValue>) {} fn type_2954<TKey, TValue>(_: &libremetaverse_types::ExpiringCache<TKey, TValue>) {}
// C# member: `M:LibreMetaverse.ExpiringCache`2.#ctor`. // C# member: `M:LibreMetaverse.ExpiringCache`2.#ctor`.
fn member_29270<TKey, TValue>() { fn member_29270<TKey: Clone + PartialEq, TValue: Clone>() {
let _ = libremetaverse_types::ExpiringCache::<TKey, TValue>::new(); let _ = libremetaverse_types::ExpiringCache::<TKey, TValue>::new();
} }
// C# member: `M:LibreMetaverse.ExpiringCache`2.Add(`0,`1,System.Double)`. // C# member: `M:LibreMetaverse.ExpiringCache`2.Add(`0,`1,System.Double)`.
fn member_29271<TKey, TValue>(value: &mut libremetaverse_types::ExpiringCache<TKey, TValue>) { fn member_29271<TKey: Clone + PartialEq, TValue: Clone>(
value: &mut libremetaverse_types::ExpiringCache<TKey, TValue>,
) {
let _ = value.add_with_t_key_t_value_double(argument(), argument(), argument()); let _ = value.add_with_t_key_t_value_double(argument(), argument(), argument());
} }
// C# member: `M:LibreMetaverse.ExpiringCache`2.Add(`0,`1,System.TimeSpan)`. // C# member: `M:LibreMetaverse.ExpiringCache`2.Add(`0,`1,System.TimeSpan)`.
fn member_29272<TKey, TValue>(value: &mut libremetaverse_types::ExpiringCache<TKey, TValue>) { fn member_29272<TKey: Clone + PartialEq, TValue: Clone>(
value: &mut libremetaverse_types::ExpiringCache<TKey, TValue>,
) {
let _ = value.add_with_t_key_t_value_time_span(argument(), argument(), argument()); let _ = value.add_with_t_key_t_value_time_span(argument(), argument(), argument());
} }
// C# member: `M:LibreMetaverse.ExpiringCache`2.AddOrUpdate(`0,`1,System.Double)`. // C# member: `M:LibreMetaverse.ExpiringCache`2.AddOrUpdate(`0,`1,System.Double)`.
fn member_29273<TKey, TValue>(value: &mut libremetaverse_types::ExpiringCache<TKey, TValue>) { fn member_29273<TKey: Clone + PartialEq, TValue: Clone>(
value: &mut libremetaverse_types::ExpiringCache<TKey, TValue>,
) {
let _ = value.add_or_update_with_t_key_t_value_double(argument(), argument(), argument()); let _ = value.add_or_update_with_t_key_t_value_double(argument(), argument(), argument());
} }
// C# member: `M:LibreMetaverse.ExpiringCache`2.AddOrUpdate(`0,`1,System.TimeSpan)`. // C# member: `M:LibreMetaverse.ExpiringCache`2.AddOrUpdate(`0,`1,System.TimeSpan)`.
fn member_29274<TKey, TValue>(value: &mut libremetaverse_types::ExpiringCache<TKey, TValue>) { fn member_29274<TKey: Clone + PartialEq, TValue: Clone>(
value: &mut libremetaverse_types::ExpiringCache<TKey, TValue>,
) {
let _ = value.add_or_update_with_t_key_t_value_time_span(argument(), argument(), argument()); let _ = value.add_or_update_with_t_key_t_value_time_span(argument(), argument(), argument());
} }
// C# member: `M:LibreMetaverse.ExpiringCache`2.Clear`. // C# member: `M:LibreMetaverse.ExpiringCache`2.Clear`.
fn member_29275<TKey, TValue>(value: &mut libremetaverse_types::ExpiringCache<TKey, TValue>) { fn member_29275<TKey: Clone + PartialEq, TValue: Clone>(
value: &mut libremetaverse_types::ExpiringCache<TKey, TValue>,
) {
let _ = value.clear(); let _ = value.clear();
} }
// C# member: `M:LibreMetaverse.ExpiringCache`2.Contains(`0)`. // C# member: `M:LibreMetaverse.ExpiringCache`2.Contains(`0)`.
fn member_29276<TKey, TValue>(value: &mut libremetaverse_types::ExpiringCache<TKey, TValue>) { fn member_29276<TKey: Clone + PartialEq, TValue: Clone>(
value: &mut libremetaverse_types::ExpiringCache<TKey, TValue>,
) {
let _ = value.contains(argument()); let _ = value.contains(argument());
} }
// C# member: `M:LibreMetaverse.ExpiringCache`2.CopyTo(System.Array,System.Int32)`. // C# member: `M:LibreMetaverse.ExpiringCache`2.CopyTo(System.Array,System.Int32)`.
fn member_29277<TKey, TValue>(value: &mut libremetaverse_types::ExpiringCache<TKey, TValue>) { fn member_29277<TKey: Clone + PartialEq, TValue: Clone>(
value: &mut libremetaverse_types::ExpiringCache<TKey, TValue>,
) {
let _ = value.copy_to(argument(), argument()); let _ = value.copy_to(argument(), argument());
} }
// C# member: `M:LibreMetaverse.ExpiringCache`2.Dispose`. // C# member: `M:LibreMetaverse.ExpiringCache`2.Dispose`.
fn member_29278<TKey, TValue>(value: &mut libremetaverse_types::ExpiringCache<TKey, TValue>) { fn member_29278<TKey: Clone + PartialEq, TValue: Clone>(
value: &mut libremetaverse_types::ExpiringCache<TKey, TValue>,
) {
let _ = value.dispose(); let _ = value.dispose();
} }
// C# member: `M:LibreMetaverse.ExpiringCache`2.Remove(`0)`. // C# member: `M:LibreMetaverse.ExpiringCache`2.Remove(`0)`.
fn member_29279<TKey, TValue>(value: &mut libremetaverse_types::ExpiringCache<TKey, TValue>) { fn member_29279<TKey: Clone + PartialEq, TValue: Clone>(
value: &mut libremetaverse_types::ExpiringCache<TKey, TValue>,
) {
let _ = value.remove(argument()); let _ = value.remove(argument());
} }
// C# member: `M:LibreMetaverse.ExpiringCache`2.TryGetValue(`0,`1@)`. // C# member: `M:LibreMetaverse.ExpiringCache`2.TryGetValue(`0,`1@)`.
fn member_29280<TKey, TValue>(value: &mut libremetaverse_types::ExpiringCache<TKey, TValue>) { fn member_29280<TKey: Clone + PartialEq, TValue: Clone>(
value: &mut libremetaverse_types::ExpiringCache<TKey, TValue>,
) {
let _ = value.try_get_value(argument(), argument()); let _ = value.try_get_value(argument(), argument());
} }
// C# member: `M:LibreMetaverse.ExpiringCache`2.Update(`0,`1)`. // C# member: `M:LibreMetaverse.ExpiringCache`2.Update(`0,`1)`.
fn member_29281<TKey, TValue>(value: &mut libremetaverse_types::ExpiringCache<TKey, TValue>) { fn member_29281<TKey: Clone + PartialEq, TValue: Clone>(
value: &mut libremetaverse_types::ExpiringCache<TKey, TValue>,
) {
let _ = value.update_with_t_key_t_value(argument(), argument()); let _ = value.update_with_t_key_t_value(argument(), argument());
} }
// C# member: `M:LibreMetaverse.ExpiringCache`2.Update(`0,`1,System.Double)`. // C# member: `M:LibreMetaverse.ExpiringCache`2.Update(`0,`1,System.Double)`.
fn member_29282<TKey, TValue>(value: &mut libremetaverse_types::ExpiringCache<TKey, TValue>) { fn member_29282<TKey: Clone + PartialEq, TValue: Clone>(
value: &mut libremetaverse_types::ExpiringCache<TKey, TValue>,
) {
let _ = value.update_with_t_key_t_value_double(argument(), argument(), argument()); let _ = value.update_with_t_key_t_value_double(argument(), argument(), argument());
} }
// C# member: `M:LibreMetaverse.ExpiringCache`2.Update(`0,`1,System.TimeSpan)`. // C# member: `M:LibreMetaverse.ExpiringCache`2.Update(`0,`1,System.TimeSpan)`.
fn member_29283<TKey, TValue>(value: &mut libremetaverse_types::ExpiringCache<TKey, TValue>) { fn member_29283<TKey: Clone + PartialEq, TValue: Clone>(
value: &mut libremetaverse_types::ExpiringCache<TKey, TValue>,
) {
let _ = value.update_with_t_key_t_value_time_span(argument(), argument(), argument()); let _ = value.update_with_t_key_t_value_time_span(argument(), argument(), argument());
} }
// C# member: `P:LibreMetaverse.ExpiringCache`2.Count`. // C# member: `P:LibreMetaverse.ExpiringCache`2.Count`.
fn member_29284<TKey, TValue>(value: &mut libremetaverse_types::ExpiringCache<TKey, TValue>) { fn member_29284<TKey: Clone + PartialEq, TValue: Clone>(
value: &mut libremetaverse_types::ExpiringCache<TKey, TValue>,
) {
let _ = value.count(); let _ = value.count();
} }
// C# member: `P:LibreMetaverse.ExpiringCache`2.Item(`0)`. // C# member: `P:LibreMetaverse.ExpiringCache`2.Item(`0)`.
fn member_29285<TKey, TValue>(value: &mut libremetaverse_types::ExpiringCache<TKey, TValue>) { fn member_29285<TKey: Clone + PartialEq, TValue: Clone>(
value: &mut libremetaverse_types::ExpiringCache<TKey, TValue>,
) {
let _ = value.item(argument()); let _ = value.item(argument());
} }
@@ -174813,37 +174885,49 @@ fn member_29367() {
fn type_2962<TKey>(_: &libremetaverse_types::LruRemovalStrategy<TKey>) {} fn type_2962<TKey>(_: &libremetaverse_types::LruRemovalStrategy<TKey>) {}
// C# member: `M:LibreMetaverse.LruRemovalStrategy`1.#ctor`. // C# member: `M:LibreMetaverse.LruRemovalStrategy`1.#ctor`.
fn member_29368<TKey>() { fn member_29368<TKey: Clone + PartialEq + Send>() {
let _ = libremetaverse_types::LruRemovalStrategy::<TKey>::new(); let _ = libremetaverse_types::LruRemovalStrategy::<TKey>::new();
} }
// C# member: `M:LibreMetaverse.LruRemovalStrategy`1.Clear`. // C# member: `M:LibreMetaverse.LruRemovalStrategy`1.Clear`.
fn member_29369<TKey>(value: &mut libremetaverse_types::LruRemovalStrategy<TKey>) { fn member_29369<TKey: Clone + PartialEq + Send>(
value: &mut libremetaverse_types::LruRemovalStrategy<TKey>,
) {
let _ = value.clear(); let _ = value.clear();
} }
// C# member: `M:LibreMetaverse.LruRemovalStrategy`1.GetKeyToRemove`. // C# member: `M:LibreMetaverse.LruRemovalStrategy`1.GetKeyToRemove`.
fn member_29370<TKey>(value: &mut libremetaverse_types::LruRemovalStrategy<TKey>) { fn member_29370<TKey: Clone + PartialEq + Send>(
value: &mut libremetaverse_types::LruRemovalStrategy<TKey>,
) {
let _ = value.get_key_to_remove(); let _ = value.get_key_to_remove();
} }
// C# member: `M:LibreMetaverse.LruRemovalStrategy`1.Initialize(System.Int32)`. // C# member: `M:LibreMetaverse.LruRemovalStrategy`1.Initialize(System.Int32)`.
fn member_29371<TKey>(value: &mut libremetaverse_types::LruRemovalStrategy<TKey>) { fn member_29371<TKey: Clone + PartialEq + Send>(
value: &mut libremetaverse_types::LruRemovalStrategy<TKey>,
) {
let _ = value.initialize(argument()); let _ = value.initialize(argument());
} }
// C# member: `M:LibreMetaverse.LruRemovalStrategy`1.KeyAccessed(`0)`. // C# member: `M:LibreMetaverse.LruRemovalStrategy`1.KeyAccessed(`0)`.
fn member_29372<TKey>(value: &mut libremetaverse_types::LruRemovalStrategy<TKey>) { fn member_29372<TKey: Clone + PartialEq + Send>(
value: &mut libremetaverse_types::LruRemovalStrategy<TKey>,
) {
let _ = value.key_accessed(argument()); let _ = value.key_accessed(argument());
} }
// C# member: `M:LibreMetaverse.LruRemovalStrategy`1.KeyAdded(`0)`. // C# member: `M:LibreMetaverse.LruRemovalStrategy`1.KeyAdded(`0)`.
fn member_29373<TKey>(value: &mut libremetaverse_types::LruRemovalStrategy<TKey>) { fn member_29373<TKey: Clone + PartialEq + Send>(
value: &mut libremetaverse_types::LruRemovalStrategy<TKey>,
) {
let _ = value.key_added(argument()); let _ = value.key_added(argument());
} }
// C# member: `M:LibreMetaverse.LruRemovalStrategy`1.KeyRemoved(`0)`. // C# member: `M:LibreMetaverse.LruRemovalStrategy`1.KeyRemoved(`0)`.
fn member_29374<TKey>(value: &mut libremetaverse_types::LruRemovalStrategy<TKey>) { fn member_29374<TKey: Clone + PartialEq + Send>(
value: &mut libremetaverse_types::LruRemovalStrategy<TKey>,
) {
let _ = value.key_removed(argument()); let _ = value.key_removed(argument());
} }
@@ -175252,37 +175336,49 @@ fn member_29452(value: &mut libremetaverse_types::Matrix4) {
fn type_2965<TKey>(_: &libremetaverse_types::MruRemovalStrategy<TKey>) {} fn type_2965<TKey>(_: &libremetaverse_types::MruRemovalStrategy<TKey>) {}
// C# member: `M:LibreMetaverse.MruRemovalStrategy`1.#ctor`. // C# member: `M:LibreMetaverse.MruRemovalStrategy`1.#ctor`.
fn member_29453<TKey>() { fn member_29453<TKey: Clone + PartialEq + Send>() {
let _ = libremetaverse_types::MruRemovalStrategy::<TKey>::new(); let _ = libremetaverse_types::MruRemovalStrategy::<TKey>::new();
} }
// C# member: `M:LibreMetaverse.MruRemovalStrategy`1.Clear`. // C# member: `M:LibreMetaverse.MruRemovalStrategy`1.Clear`.
fn member_29454<TKey>(value: &mut libremetaverse_types::MruRemovalStrategy<TKey>) { fn member_29454<TKey: Clone + PartialEq + Send>(
value: &mut libremetaverse_types::MruRemovalStrategy<TKey>,
) {
let _ = value.clear(); let _ = value.clear();
} }
// C# member: `M:LibreMetaverse.MruRemovalStrategy`1.GetKeyToRemove`. // C# member: `M:LibreMetaverse.MruRemovalStrategy`1.GetKeyToRemove`.
fn member_29455<TKey>(value: &mut libremetaverse_types::MruRemovalStrategy<TKey>) { fn member_29455<TKey: Clone + PartialEq + Send>(
value: &mut libremetaverse_types::MruRemovalStrategy<TKey>,
) {
let _ = value.get_key_to_remove(); let _ = value.get_key_to_remove();
} }
// C# member: `M:LibreMetaverse.MruRemovalStrategy`1.Initialize(System.Int32)`. // C# member: `M:LibreMetaverse.MruRemovalStrategy`1.Initialize(System.Int32)`.
fn member_29456<TKey>(value: &mut libremetaverse_types::MruRemovalStrategy<TKey>) { fn member_29456<TKey: Clone + PartialEq + Send>(
value: &mut libremetaverse_types::MruRemovalStrategy<TKey>,
) {
let _ = value.initialize(argument()); let _ = value.initialize(argument());
} }
// C# member: `M:LibreMetaverse.MruRemovalStrategy`1.KeyAccessed(`0)`. // C# member: `M:LibreMetaverse.MruRemovalStrategy`1.KeyAccessed(`0)`.
fn member_29457<TKey>(value: &mut libremetaverse_types::MruRemovalStrategy<TKey>) { fn member_29457<TKey: Clone + PartialEq + Send>(
value: &mut libremetaverse_types::MruRemovalStrategy<TKey>,
) {
let _ = value.key_accessed(argument()); let _ = value.key_accessed(argument());
} }
// C# member: `M:LibreMetaverse.MruRemovalStrategy`1.KeyAdded(`0)`. // C# member: `M:LibreMetaverse.MruRemovalStrategy`1.KeyAdded(`0)`.
fn member_29458<TKey>(value: &mut libremetaverse_types::MruRemovalStrategy<TKey>) { fn member_29458<TKey: Clone + PartialEq + Send>(
value: &mut libremetaverse_types::MruRemovalStrategy<TKey>,
) {
let _ = value.key_added(argument()); let _ = value.key_added(argument());
} }
// C# member: `M:LibreMetaverse.MruRemovalStrategy`1.KeyRemoved(`0)`. // C# member: `M:LibreMetaverse.MruRemovalStrategy`1.KeyRemoved(`0)`.
fn member_29459<TKey>(value: &mut libremetaverse_types::MruRemovalStrategy<TKey>) { fn member_29459<TKey: Clone + PartialEq + Send>(
value: &mut libremetaverse_types::MruRemovalStrategy<TKey>,
) {
let _ = value.key_removed(argument()); let _ = value.key_removed(argument());
} }
@@ -175290,24 +175386,24 @@ fn member_29459<TKey>(value: &mut libremetaverse_types::MruRemovalStrategy<TKey>
fn type_2966<TKey, TValue>(_: &libremetaverse_types::MultiValueDictionary<TKey, TValue>) {} fn type_2966<TKey, TValue>(_: &libremetaverse_types::MultiValueDictionary<TKey, TValue>) {}
// C# member: `M:LibreMetaverse.MultiValueDictionary`2.#ctor`. // C# member: `M:LibreMetaverse.MultiValueDictionary`2.#ctor`.
fn member_29460<TKey, TValue>() { fn member_29460<TKey: Clone + PartialEq, TValue: Clone + PartialEq>() {
let _ = libremetaverse_types::MultiValueDictionary::<TKey, TValue>::new_with_constructor(); let _ = libremetaverse_types::MultiValueDictionary::<TKey, TValue>::new_with_constructor();
} }
// C# member: `M:LibreMetaverse.MultiValueDictionary`2.#ctor(System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{`0,System.Collections.Generic.IReadOnlyCollection{`1}}})`. // C# member: `M:LibreMetaverse.MultiValueDictionary`2.#ctor(System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{`0,System.Collections.Generic.IReadOnlyCollection{`1}}})`.
fn member_29461<TKey, TValue>() { fn member_29461<TKey: Clone + PartialEq, TValue: Clone + PartialEq>() {
let _ = libremetaverse_types::MultiValueDictionary::<TKey, TValue>::new_with_i_enumerable( let _ = libremetaverse_types::MultiValueDictionary::<TKey, TValue>::new_with_i_enumerable(
argument(), argument(),
); );
} }
// C# member: `M:LibreMetaverse.MultiValueDictionary`2.#ctor(System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{`0,System.Collections.Generic.IReadOnlyCollection{`1}}},System.Collections.Generic.IEqualityComparer{`0})`. // C# member: `M:LibreMetaverse.MultiValueDictionary`2.#ctor(System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{`0,System.Collections.Generic.IReadOnlyCollection{`1}}},System.Collections.Generic.IEqualityComparer{`0})`.
fn member_29462<TKey, TValue>() { fn member_29462<TKey: Clone + PartialEq, TValue: Clone + PartialEq>() {
let _ = libremetaverse_types::MultiValueDictionary::<TKey, TValue>::new_with_i_enumerable_i_equality_comparer(argument(), argument()); let _ = libremetaverse_types::MultiValueDictionary::<TKey, TValue>::new_with_i_enumerable_i_equality_comparer(argument(), argument());
} }
// C# member: `M:LibreMetaverse.MultiValueDictionary`2.#ctor(System.Collections.Generic.IEqualityComparer{`0})`. // C# member: `M:LibreMetaverse.MultiValueDictionary`2.#ctor(System.Collections.Generic.IEqualityComparer{`0})`.
fn member_29463<TKey, TValue>() { fn member_29463<TKey: Clone + PartialEq, TValue: Clone + PartialEq>() {
let _ = let _ =
libremetaverse_types::MultiValueDictionary::<TKey, TValue>::new_with_i_equality_comparer( libremetaverse_types::MultiValueDictionary::<TKey, TValue>::new_with_i_equality_comparer(
argument(), argument(),
@@ -175315,52 +175411,52 @@ fn member_29463<TKey, TValue>() {
} }
// C# member: `M:LibreMetaverse.MultiValueDictionary`2.#ctor(System.Int32)`. // C# member: `M:LibreMetaverse.MultiValueDictionary`2.#ctor(System.Int32)`.
fn member_29464<TKey, TValue>() { fn member_29464<TKey: Clone + PartialEq, TValue: Clone + PartialEq>() {
let _ = libremetaverse_types::MultiValueDictionary::<TKey, TValue>::new_with_int32(argument()); let _ = libremetaverse_types::MultiValueDictionary::<TKey, TValue>::new_with_int32(argument());
} }
// C# member: `M:LibreMetaverse.MultiValueDictionary`2.#ctor(System.Int32,System.Collections.Generic.IEqualityComparer{`0})`. // C# member: `M:LibreMetaverse.MultiValueDictionary`2.#ctor(System.Int32,System.Collections.Generic.IEqualityComparer{`0})`.
fn member_29465<TKey, TValue>() { fn member_29465<TKey: Clone + PartialEq, TValue: Clone + PartialEq>() {
let _ = libremetaverse_types::MultiValueDictionary::<TKey, TValue>::new_with_int32_i_equality_comparer(argument(), argument()); let _ = libremetaverse_types::MultiValueDictionary::<TKey, TValue>::new_with_int32_i_equality_comparer(argument(), argument());
} }
// C# member: `M:LibreMetaverse.MultiValueDictionary`2.Add(`0,`1)`. // C# member: `M:LibreMetaverse.MultiValueDictionary`2.Add(`0,`1)`.
fn member_29466<TKey, TValue>( fn member_29466<TKey: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::MultiValueDictionary<TKey, TValue>, value: &mut libremetaverse_types::MultiValueDictionary<TKey, TValue>,
) { ) {
let _ = value.add(argument(), argument()); let _ = value.add(argument(), argument());
} }
// C# member: `M:LibreMetaverse.MultiValueDictionary`2.AddRange(`0,System.Collections.Generic.IEnumerable{`1})`. // C# member: `M:LibreMetaverse.MultiValueDictionary`2.AddRange(`0,System.Collections.Generic.IEnumerable{`1})`.
fn member_29467<TKey, TValue>( fn member_29467<TKey: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::MultiValueDictionary<TKey, TValue>, value: &mut libremetaverse_types::MultiValueDictionary<TKey, TValue>,
) { ) {
let _ = value.add_range(argument(), argument()); let _ = value.add_range(argument(), argument());
} }
// C# member: `M:LibreMetaverse.MultiValueDictionary`2.Clear`. // C# member: `M:LibreMetaverse.MultiValueDictionary`2.Clear`.
fn member_29468<TKey, TValue>( fn member_29468<TKey: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::MultiValueDictionary<TKey, TValue>, value: &mut libremetaverse_types::MultiValueDictionary<TKey, TValue>,
) { ) {
let _ = value.clear(); let _ = value.clear();
} }
// C# member: `M:LibreMetaverse.MultiValueDictionary`2.Contains(`0,`1)`. // C# member: `M:LibreMetaverse.MultiValueDictionary`2.Contains(`0,`1)`.
fn member_29469<TKey, TValue>( fn member_29469<TKey: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::MultiValueDictionary<TKey, TValue>, value: &mut libremetaverse_types::MultiValueDictionary<TKey, TValue>,
) { ) {
let _ = value.contains(argument(), argument()); let _ = value.contains(argument(), argument());
} }
// C# member: `M:LibreMetaverse.MultiValueDictionary`2.ContainsKey(`0)`. // C# member: `M:LibreMetaverse.MultiValueDictionary`2.ContainsKey(`0)`.
fn member_29470<TKey, TValue>( fn member_29470<TKey: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::MultiValueDictionary<TKey, TValue>, value: &mut libremetaverse_types::MultiValueDictionary<TKey, TValue>,
) { ) {
let _ = value.contains_key(argument()); let _ = value.contains_key(argument());
} }
// C# member: `M:LibreMetaverse.MultiValueDictionary`2.ContainsValue(`1)`. // C# member: `M:LibreMetaverse.MultiValueDictionary`2.ContainsValue(`1)`.
fn member_29471<TKey, TValue>( fn member_29471<TKey: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::MultiValueDictionary<TKey, TValue>, value: &mut libremetaverse_types::MultiValueDictionary<TKey, TValue>,
) { ) {
let _ = value.contains_value(argument()); let _ = value.contains_value(argument());
@@ -175368,8 +175464,8 @@ fn member_29471<TKey, TValue>(
// C# member: `M:LibreMetaverse.MultiValueDictionary`2.Create``1`. // C# member: `M:LibreMetaverse.MultiValueDictionary`2.Create``1`.
fn member_29472< fn member_29472<
TKey, TKey: Clone + PartialEq,
TValue, TValue: Clone + PartialEq,
TValueCollection: libremetaverse_types::compat::Collection<TValue> + Default, TValueCollection: libremetaverse_types::compat::Collection<TValue> + Default,
>() { >() {
let _ = libremetaverse_types::MultiValueDictionary::<TKey, TValue>::create_with_method::< let _ = libremetaverse_types::MultiValueDictionary::<TKey, TValue>::create_with_method::<
@@ -175379,8 +175475,8 @@ fn member_29472<
// C# member: `M:LibreMetaverse.MultiValueDictionary`2.Create``1(System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{`0,System.Collections.Generic.IReadOnlyCollection{`1}}})`. // C# member: `M:LibreMetaverse.MultiValueDictionary`2.Create``1(System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{`0,System.Collections.Generic.IReadOnlyCollection{`1}}})`.
fn member_29473< fn member_29473<
TKey, TKey: Clone + PartialEq,
TValue, TValue: Clone + PartialEq,
TValueCollection: libremetaverse_types::compat::Collection<TValue> + Default, TValueCollection: libremetaverse_types::compat::Collection<TValue> + Default,
>() { >() {
let _ = libremetaverse_types::MultiValueDictionary::<TKey, TValue>::create_with_i_enumerable::< let _ = libremetaverse_types::MultiValueDictionary::<TKey, TValue>::create_with_i_enumerable::<
@@ -175390,8 +175486,8 @@ fn member_29473<
// C# member: `M:LibreMetaverse.MultiValueDictionary`2.Create``1(System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{`0,System.Collections.Generic.IReadOnlyCollection{`1}}},System.Collections.Generic.IEqualityComparer{`0})`. // C# member: `M:LibreMetaverse.MultiValueDictionary`2.Create``1(System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{`0,System.Collections.Generic.IReadOnlyCollection{`1}}},System.Collections.Generic.IEqualityComparer{`0})`.
fn member_29474< fn member_29474<
TKey, TKey: Clone + PartialEq,
TValue, TValue: Clone + PartialEq,
TValueCollection: libremetaverse_types::compat::Collection<TValue> + Default, TValueCollection: libremetaverse_types::compat::Collection<TValue> + Default,
>() { >() {
let _ = libremetaverse_types::MultiValueDictionary::<TKey, TValue>::create_with_i_enumerable_i_equality_comparer::<TValueCollection>(argument(), argument()); let _ = libremetaverse_types::MultiValueDictionary::<TKey, TValue>::create_with_i_enumerable_i_equality_comparer::<TValueCollection>(argument(), argument());
@@ -175399,8 +175495,8 @@ fn member_29474<
// C# member: `M:LibreMetaverse.MultiValueDictionary`2.Create``1(System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{`0,System.Collections.Generic.IReadOnlyCollection{`1}}},System.Collections.Generic.IEqualityComparer{`0},System.Func{``0})`. // C# member: `M:LibreMetaverse.MultiValueDictionary`2.Create``1(System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{`0,System.Collections.Generic.IReadOnlyCollection{`1}}},System.Collections.Generic.IEqualityComparer{`0},System.Func{``0})`.
fn member_29475< fn member_29475<
TKey, TKey: Clone + PartialEq,
TValue, TValue: Clone + PartialEq,
TValueCollection: libremetaverse_types::compat::Collection<TValue>, TValueCollection: libremetaverse_types::compat::Collection<TValue>,
>() { >() {
let _ = libremetaverse_types::MultiValueDictionary::<TKey, TValue>::create_with_i_enumerable_i_equality_comparer_func::<TValueCollection>(argument(), argument(), argument()); let _ = libremetaverse_types::MultiValueDictionary::<TKey, TValue>::create_with_i_enumerable_i_equality_comparer_func::<TValueCollection>(argument(), argument(), argument());
@@ -175408,8 +175504,8 @@ fn member_29475<
// C# member: `M:LibreMetaverse.MultiValueDictionary`2.Create``1(System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{`0,System.Collections.Generic.IReadOnlyCollection{`1}}},System.Func{``0})`. // C# member: `M:LibreMetaverse.MultiValueDictionary`2.Create``1(System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{`0,System.Collections.Generic.IReadOnlyCollection{`1}}},System.Func{``0})`.
fn member_29476< fn member_29476<
TKey, TKey: Clone + PartialEq,
TValue, TValue: Clone + PartialEq,
TValueCollection: libremetaverse_types::compat::Collection<TValue>, TValueCollection: libremetaverse_types::compat::Collection<TValue>,
>() { >() {
let _ = let _ =
@@ -175420,8 +175516,8 @@ fn member_29476<
// C# member: `M:LibreMetaverse.MultiValueDictionary`2.Create``1(System.Collections.Generic.IEqualityComparer{`0})`. // C# member: `M:LibreMetaverse.MultiValueDictionary`2.Create``1(System.Collections.Generic.IEqualityComparer{`0})`.
fn member_29477< fn member_29477<
TKey, TKey: Clone + PartialEq,
TValue, TValue: Clone + PartialEq,
TValueCollection: libremetaverse_types::compat::Collection<TValue> + Default, TValueCollection: libremetaverse_types::compat::Collection<TValue> + Default,
>() { >() {
let _ = let _ =
@@ -175432,8 +175528,8 @@ fn member_29477<
// C# member: `M:LibreMetaverse.MultiValueDictionary`2.Create``1(System.Collections.Generic.IEqualityComparer{`0},System.Func{``0})`. // C# member: `M:LibreMetaverse.MultiValueDictionary`2.Create``1(System.Collections.Generic.IEqualityComparer{`0},System.Func{``0})`.
fn member_29478< fn member_29478<
TKey, TKey: Clone + PartialEq,
TValue, TValue: Clone + PartialEq,
TValueCollection: libremetaverse_types::compat::Collection<TValue>, TValueCollection: libremetaverse_types::compat::Collection<TValue>,
>() { >() {
let _ = libremetaverse_types::MultiValueDictionary::<TKey, TValue>::create_with_i_equality_comparer_func::<TValueCollection>(argument(), argument()); let _ = libremetaverse_types::MultiValueDictionary::<TKey, TValue>::create_with_i_equality_comparer_func::<TValueCollection>(argument(), argument());
@@ -175441,8 +175537,8 @@ fn member_29478<
// C# member: `M:LibreMetaverse.MultiValueDictionary`2.Create``1(System.Func{``0})`. // C# member: `M:LibreMetaverse.MultiValueDictionary`2.Create``1(System.Func{``0})`.
fn member_29479< fn member_29479<
TKey, TKey: Clone + PartialEq,
TValue, TValue: Clone + PartialEq,
TValueCollection: libremetaverse_types::compat::Collection<TValue>, TValueCollection: libremetaverse_types::compat::Collection<TValue>,
>() { >() {
let _ = libremetaverse_types::MultiValueDictionary::<TKey, TValue>::create_with_func::< let _ = libremetaverse_types::MultiValueDictionary::<TKey, TValue>::create_with_func::<
@@ -175452,8 +175548,8 @@ fn member_29479<
// C# member: `M:LibreMetaverse.MultiValueDictionary`2.Create``1(System.Int32)`. // C# member: `M:LibreMetaverse.MultiValueDictionary`2.Create``1(System.Int32)`.
fn member_29480< fn member_29480<
TKey, TKey: Clone + PartialEq,
TValue, TValue: Clone + PartialEq,
TValueCollection: libremetaverse_types::compat::Collection<TValue> + Default, TValueCollection: libremetaverse_types::compat::Collection<TValue> + Default,
>() { >() {
let _ = libremetaverse_types::MultiValueDictionary::<TKey, TValue>::create_with_int32::< let _ = libremetaverse_types::MultiValueDictionary::<TKey, TValue>::create_with_int32::<
@@ -175463,8 +175559,8 @@ fn member_29480<
// C# member: `M:LibreMetaverse.MultiValueDictionary`2.Create``1(System.Int32,System.Collections.Generic.IEqualityComparer{`0})`. // C# member: `M:LibreMetaverse.MultiValueDictionary`2.Create``1(System.Int32,System.Collections.Generic.IEqualityComparer{`0})`.
fn member_29481< fn member_29481<
TKey, TKey: Clone + PartialEq,
TValue, TValue: Clone + PartialEq,
TValueCollection: libremetaverse_types::compat::Collection<TValue> + Default, TValueCollection: libremetaverse_types::compat::Collection<TValue> + Default,
>() { >() {
let _ = libremetaverse_types::MultiValueDictionary::<TKey, TValue>::create_with_int32_i_equality_comparer::<TValueCollection>(argument(), argument()); let _ = libremetaverse_types::MultiValueDictionary::<TKey, TValue>::create_with_int32_i_equality_comparer::<TValueCollection>(argument(), argument());
@@ -175472,8 +175568,8 @@ fn member_29481<
// C# member: `M:LibreMetaverse.MultiValueDictionary`2.Create``1(System.Int32,System.Collections.Generic.IEqualityComparer{`0},System.Func{``0})`. // C# member: `M:LibreMetaverse.MultiValueDictionary`2.Create``1(System.Int32,System.Collections.Generic.IEqualityComparer{`0},System.Func{``0})`.
fn member_29482< fn member_29482<
TKey, TKey: Clone + PartialEq,
TValue, TValue: Clone + PartialEq,
TValueCollection: libremetaverse_types::compat::Collection<TValue>, TValueCollection: libremetaverse_types::compat::Collection<TValue>,
>() { >() {
let _ = libremetaverse_types::MultiValueDictionary::<TKey, TValue>::create_with_int32_i_equality_comparer_func::<TValueCollection>(argument(), argument(), argument()); let _ = libremetaverse_types::MultiValueDictionary::<TKey, TValue>::create_with_int32_i_equality_comparer_func::<TValueCollection>(argument(), argument(), argument());
@@ -175481,8 +175577,8 @@ fn member_29482<
// C# member: `M:LibreMetaverse.MultiValueDictionary`2.Create``1(System.Int32,System.Func{``0})`. // C# member: `M:LibreMetaverse.MultiValueDictionary`2.Create``1(System.Int32,System.Func{``0})`.
fn member_29483< fn member_29483<
TKey, TKey: Clone + PartialEq,
TValue, TValue: Clone + PartialEq,
TValueCollection: libremetaverse_types::compat::Collection<TValue>, TValueCollection: libremetaverse_types::compat::Collection<TValue>,
>() { >() {
let _ = libremetaverse_types::MultiValueDictionary::<TKey, TValue>::create_with_int32_func::< let _ = libremetaverse_types::MultiValueDictionary::<TKey, TValue>::create_with_int32_func::<
@@ -175491,56 +175587,56 @@ fn member_29483<
} }
// C# member: `M:LibreMetaverse.MultiValueDictionary`2.GetEnumerator`. // C# member: `M:LibreMetaverse.MultiValueDictionary`2.GetEnumerator`.
fn member_29484<TKey, TValue>( fn member_29484<TKey: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::MultiValueDictionary<TKey, TValue>, value: &mut libremetaverse_types::MultiValueDictionary<TKey, TValue>,
) { ) {
let _ = value.get_enumerator(); let _ = value.get_enumerator();
} }
// C# member: `M:LibreMetaverse.MultiValueDictionary`2.Remove(`0)`. // C# member: `M:LibreMetaverse.MultiValueDictionary`2.Remove(`0)`.
fn member_29485<TKey, TValue>( fn member_29485<TKey: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::MultiValueDictionary<TKey, TValue>, value: &mut libremetaverse_types::MultiValueDictionary<TKey, TValue>,
) { ) {
let _ = value.remove_with_t_key(argument()); let _ = value.remove_with_t_key(argument());
} }
// C# member: `M:LibreMetaverse.MultiValueDictionary`2.Remove(`0,`1)`. // C# member: `M:LibreMetaverse.MultiValueDictionary`2.Remove(`0,`1)`.
fn member_29486<TKey, TValue>( fn member_29486<TKey: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::MultiValueDictionary<TKey, TValue>, value: &mut libremetaverse_types::MultiValueDictionary<TKey, TValue>,
) { ) {
let _ = value.remove_with_t_key_t_value(argument(), argument()); let _ = value.remove_with_t_key_t_value(argument(), argument());
} }
// C# member: `M:LibreMetaverse.MultiValueDictionary`2.TryGetValue(`0,System.Collections.Generic.IReadOnlyCollection{`1}@)`. // C# member: `M:LibreMetaverse.MultiValueDictionary`2.TryGetValue(`0,System.Collections.Generic.IReadOnlyCollection{`1}@)`.
fn member_29487<TKey, TValue>( fn member_29487<TKey: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::MultiValueDictionary<TKey, TValue>, value: &mut libremetaverse_types::MultiValueDictionary<TKey, TValue>,
) { ) {
let _ = value.try_get_value(argument(), argument()); let _ = value.try_get_value(argument(), argument());
} }
// C# member: `P:LibreMetaverse.MultiValueDictionary`2.Count`. // C# member: `P:LibreMetaverse.MultiValueDictionary`2.Count`.
fn member_29488<TKey, TValue>( fn member_29488<TKey: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::MultiValueDictionary<TKey, TValue>, value: &mut libremetaverse_types::MultiValueDictionary<TKey, TValue>,
) { ) {
let _ = value.count(); let _ = value.count();
} }
// C# member: `P:LibreMetaverse.MultiValueDictionary`2.Item(`0)`. // C# member: `P:LibreMetaverse.MultiValueDictionary`2.Item(`0)`.
fn member_29489<TKey, TValue>( fn member_29489<TKey: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::MultiValueDictionary<TKey, TValue>, value: &mut libremetaverse_types::MultiValueDictionary<TKey, TValue>,
) { ) {
let _ = value.item(argument()); let _ = value.item(argument());
} }
// C# member: `P:LibreMetaverse.MultiValueDictionary`2.Keys`. // C# member: `P:LibreMetaverse.MultiValueDictionary`2.Keys`.
fn member_29490<TKey, TValue>( fn member_29490<TKey: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::MultiValueDictionary<TKey, TValue>, value: &mut libremetaverse_types::MultiValueDictionary<TKey, TValue>,
) { ) {
let _ = value.keys(); let _ = value.keys();
} }
// C# member: `P:LibreMetaverse.MultiValueDictionary`2.Values`. // C# member: `P:LibreMetaverse.MultiValueDictionary`2.Values`.
fn member_29491<TKey, TValue>( fn member_29491<TKey: Clone + PartialEq, TValue: Clone + PartialEq>(
value: &mut libremetaverse_types::MultiValueDictionary<TKey, TValue>, value: &mut libremetaverse_types::MultiValueDictionary<TKey, TValue>,
) { ) {
let _ = value.values(); let _ = value.values();

View File

@@ -20,5 +20,5 @@
"LibreMetaverse.Tests/TypeTests.cs::TypeTests.VectorCasting::test", "LibreMetaverse.Tests/TypeTests.cs::TypeTests.VectorCasting::test",
"LibreMetaverse.Tests/UtilsConversionsTests.cs::UtilsConversionsTests.StringToBytes::test" "LibreMetaverse.Tests/UtilsConversionsTests.cs::UtilsConversionsTests.StringToBytes::test"
], ],
"support_passes": 56 "support_passes": 62
} }

View File

@@ -38,13 +38,23 @@ TARGETS = {
# implementations. The generated module keeps catalog markers and re-exports # implementations. The generated module keeps catalog markers and re-exports
# the hand-written type so coverage remains deterministic. # the hand-written type so coverage remains deterministic.
NATIVE_TYPES = { NATIVE_TYPES = {
"T:LibreMetaverse.CacheDictionary`2": "crate::collections::CacheDictionary",
"T:LibreMetaverse.CacheDictionary`2.CacheDictionaryEnumerator": "crate::collections::CacheDictionaryCacheDictionaryEnumerator",
"T:LibreMetaverse.Color4": "crate::color4::Color4", "T:LibreMetaverse.Color4": "crate::color4::Color4",
"T:LibreMetaverse.CRC32": "crate::crc32::CRC32", "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.EnumInfoAttribute": "crate::enum_compat::EnumInfoAttribute",
"T:LibreMetaverse.EnumInfoExtensions": "crate::enum_compat::EnumInfoExtensions", "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.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.Quaternion": "crate::geometry::Quaternion",
"T:LibreMetaverse.Ray": "crate::vectors::Ray", "T:LibreMetaverse.Ray": "crate::vectors::Ray",
"T:LibreMetaverse.TokenBucket": "crate::collections::TokenBucket",
"T:LibreMetaverse.UUID": "crate::uuid::UUID", "T:LibreMetaverse.UUID": "crate::uuid::UUID",
"T:LibreMetaverse.Vector2": "crate::vectors::Vector2", "T:LibreMetaverse.Vector2": "crate::vectors::Vector2",
"T:LibreMetaverse.Vector3": "crate::vectors::Vector3", "T:LibreMetaverse.Vector3": "crate::vectors::Vector3",
@@ -64,6 +74,33 @@ NATIVE_MEMBER_BODIES = {
"crate::byte_order::write_double_little_endian(dest, pos, value)", "crate::byte_order::write_double_little_endian(dest, pos, value)",
} }
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" MAIN_TARGET = ROOT / "crates/libremetaverse/src/generated.rs"
WIRE_NAMESPACES = ( WIRE_NAMESPACES = (
"LibreMetaverse.Assets", "LibreMetaverse.Assets",
@@ -455,7 +492,11 @@ def render_compile_fixture(
member_index += 1 member_index += 1
row = member_rows[member["doc_id"]] row = member_rows[member["doc_id"]]
method_names = generic_names(member) method_names = generic_names(member)
parameters = [*owner_names, *generic_declarations(member, mapper, owner_names)] 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),
]
if member["doc_id"] == "M:LibreMetaverse.Utils.EnumTryParse``1(System.String,``0@)": if member["doc_id"] == "M:LibreMetaverse.Utils.EnumTryParse``1(System.String,``0@)":
parameters = [ parameters = [
*owner_names, *owner_names,
@@ -858,6 +899,12 @@ def coverage_report(catalog: dict, coverage: dict[str, tuple[int, int, bool]]) -
if item["doc_id"] in native_type_ids or member["doc_id"] in NATIVE_MEMBER_BODIES if item["doc_id"] in native_type_ids or member["doc_id"] in NATIVE_MEMBER_BODIES
} }
if native_type_ids or native_member_ids: if native_type_ids or native_member_ids:
if (len(native_type_ids), len(native_member_ids)) == (types, members):
status = (
f"native implementation: {len(native_type_ids):,} types / "
f"{len(native_member_ids):,} members; no generated shims remain"
)
else:
status = ( status = (
f"native implementation: {len(native_type_ids):,} types / " f"native implementation: {len(native_type_ids):,} types / "
f"{len(native_member_ids):,} members; remaining surface is callable failure-only shims" f"{len(native_member_ids):,} members; remaining surface is callable failure-only shims"

View File

@@ -189,10 +189,22 @@ MEMBER_TYPE_OVERRIDES = {
), ),
} }
MEMBER_SIGNATURE_OVERRIDES = { MEMBER_SIGNATURE_OVERRIDES = {
"M:LibreMetaverse.CacheDictionary`2.CopyTo(System.Collections.Generic.KeyValuePair{`0,`1}[],System.Int32)": (
"pub fn copy_to(&self, array: &mut [(TKey, Option<TValue>)], array_index: i32) -> Result<(), crate::Error>",
"shared_self,mutable_borrow,owned",
),
"M:LibreMetaverse.Utils.DoubleToBytes(System.Double,System.Byte[],System.Int32)": ( "M:LibreMetaverse.Utils.DoubleToBytes(System.Double,System.Byte[],System.Int32)": (
"pub fn double_to_bytes_with_double_bytes_int32(value: f64, dest: &mut [u8], pos: i32) -> Result<(), crate::Error>", "pub fn double_to_bytes_with_double_bytes_int32(value: f64, dest: &mut [u8], pos: i32) -> Result<(), crate::Error>",
"owned,mutable_borrow,owned", "owned,mutable_borrow,owned",
), ),
"M:LibreMetaverse.ExpiringCache`2.CopyTo(System.Array,System.Int32)": (
"pub fn copy_to(&self, array: &mut [(TKey, Option<TValue>)], start_index: i32) -> Result<(), crate::Error>",
"shared_self,mutable_borrow,owned",
),
"P:LibreMetaverse.ExpiringCache`2.Item(`0)": (
"pub fn item(&self, key: TKey) -> Option<TValue>",
"shared_self,owned",
),
"M:LibreMetaverse.Utils.EnumTryParse``1(System.String,``0@)": ( "M:LibreMetaverse.Utils.EnumTryParse``1(System.String,``0@)": (
"pub fn enum_try_parse<T: crate::EnumValueMetadata>(str_type: String, result: &mut Option<T>) -> Result<bool, crate::Error>", "pub fn enum_try_parse<T: crate::EnumValueMetadata>(str_type: String, result: &mut Option<T>) -> Result<bool, crate::Error>",
"owned,mutable_borrow", "owned,mutable_borrow",