Standardize unimplemented API failures
This commit is contained in:
12
Cargo.lock
generated
12
Cargo.lock
generated
@@ -33,23 +33,31 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "libremetaverse-imaging"
|
||||
version = "0.0.1"
|
||||
dependencies = [
|
||||
"libremetaverse-types",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "libremetaverse-imaging-skia"
|
||||
version = "0.0.1"
|
||||
dependencies = [
|
||||
"libremetaverse-imaging",
|
||||
"libremetaverse-types",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "libremetaverse-lsl-tools"
|
||||
version = "0.0.1"
|
||||
dependencies = [
|
||||
"libremetaverse-types",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "libremetaverse-prim-mesher"
|
||||
version = "0.0.1"
|
||||
dependencies = [
|
||||
"libremetaverse-imaging",
|
||||
"libremetaverse-types",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -84,6 +92,9 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "libremetaverse-rlv"
|
||||
version = "0.0.1"
|
||||
dependencies = [
|
||||
"libremetaverse-types",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "libremetaverse-structured-data"
|
||||
@@ -120,4 +131,5 @@ version = "0.0.1"
|
||||
dependencies = [
|
||||
"libremetaverse",
|
||||
"libremetaverse-structured-data",
|
||||
"libremetaverse-types",
|
||||
]
|
||||
|
||||
@@ -19,6 +19,9 @@ The authoritative compiled .NET surface is checked in as
|
||||
reviewed Rust destination in [`api/RUST-TYPES.tsv`](api/RUST-TYPES.tsv) and
|
||||
[`api/RUST-MAPPING.tsv`](api/RUST-MAPPING.tsv); [`api/README.md`](api/README.md)
|
||||
documents deterministic regeneration and validation.
|
||||
All API crates expose the same typed `Error` for fallible unimplemented members;
|
||||
infallible shims use `libremetaverse_types::unimplemented_api!` so placeholders
|
||||
cannot look like successful behavior.
|
||||
|
||||
```sh
|
||||
cargo build --workspace
|
||||
|
||||
@@ -254,6 +254,27 @@ must have their real values. Never return plausible defaults such as `false`,
|
||||
zero, an empty collection, or a nil UUID: those could make translated tests pass
|
||||
for the wrong reason.
|
||||
|
||||
The failure contract lives in `libremetaverse-types` and every API crate exposes
|
||||
it as `crate::Error`:
|
||||
|
||||
- synchronous fallible members return `Err(NotImplemented::new(CSHARP_ID))`;
|
||||
async members do the same when first polled and start no work first;
|
||||
- a stream-producing operation returns the typed error before exposing a
|
||||
stream; an intrinsically infallible stream factory uses `unimplemented_api!`
|
||||
instead of returning an empty stream;
|
||||
- callback registration and stored-trait construction fail before retaining the
|
||||
callback/object; generated callbacks are never silent no-ops;
|
||||
- infallible constructors, accessors, operators, and trait methods call
|
||||
`unimplemented_api!(CSHARP_ID)`, whose panic marker is distinct from every
|
||||
typed domain error;
|
||||
- constants, enum discriminants, flags, and inert public fields use their real
|
||||
catalog values/layout. Generated shims do not derive `Default` unless the
|
||||
reviewed API explicitly defines that behavior.
|
||||
|
||||
`python3 tools/generate_rust_mapping.py --check` scans every generated shim and
|
||||
rejects `Default` derives, plausible false/zero/empty/nil returns, and any
|
||||
function body that lacks the standardized typed error or panic mechanism.
|
||||
|
||||
The signature gate is complete only when:
|
||||
|
||||
- the metadata catalog reports 100% public type/member mapping coverage for all
|
||||
|
||||
@@ -12,6 +12,7 @@ Generated by `python3 tools/generate_rust_mapping.py`; do not edit by hand.
|
||||
- Stale or missing catalog IDs: **0**
|
||||
- Unresolved referenced types: **0**
|
||||
- Platform-specific mappings: **0**
|
||||
- Plausible generated fallback bodies/default derives: **0**
|
||||
|
||||
## Assembly representatives
|
||||
|
||||
|
||||
@@ -42,6 +42,9 @@ python3 tools/generate_rust_mapping.py --check
|
||||
The checker rejects duplicate C# IDs, duplicate Rust destinations, invalid
|
||||
statuses, stale or missing catalog entries, unresolved signature types,
|
||||
assemblies without representative mappings, and platform-specific API targets.
|
||||
It also rejects generated `Default` shims, plausible false/zero/empty/nil
|
||||
fallbacks, and generated function bodies that do not use the standardized
|
||||
`NotImplemented` error or `unimplemented_api!` panic.
|
||||
The two support traits in `RUST-TYPES.tsv` are included because compiled public
|
||||
inheritance records reference them even though they are absent from the public
|
||||
type table.
|
||||
|
||||
@@ -9,6 +9,7 @@ description = "Skia codec shims for the MetaCrate LibreMetaverse rewrite"
|
||||
|
||||
[dependencies]
|
||||
libremetaverse-imaging = { path = "../libremetaverse-imaging" }
|
||||
libremetaverse-types = { path = "../libremetaverse-types" }
|
||||
|
||||
[lints]
|
||||
workspace = true
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
#![allow(non_camel_case_types)]
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Imaging.Skia.SkiaTextureCodec`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct SkiaTextureCodec;
|
||||
impl SkiaTextureCodec {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Imaging.Skia.SkiaTextureCodec";
|
||||
|
||||
@@ -4,3 +4,4 @@ mod generated;
|
||||
|
||||
pub use generated::*;
|
||||
pub use libremetaverse_imaging as imaging;
|
||||
pub use libremetaverse_types::NotImplemented as Error;
|
||||
|
||||
@@ -7,5 +7,8 @@ license.workspace = true
|
||||
repository.workspace = true
|
||||
description = "Texture codec abstractions for the MetaCrate LibreMetaverse rewrite"
|
||||
|
||||
[dependencies]
|
||||
libremetaverse-types = { path = "../libremetaverse-types" }
|
||||
|
||||
[lints]
|
||||
workspace = true
|
||||
|
||||
@@ -8,7 +8,7 @@ pub trait ITextureCodec {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.Imaging.ImageChannels`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct ImageChannels;
|
||||
impl ImageChannels {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Imaging.ImageChannels";
|
||||
@@ -16,7 +16,7 @@ impl ImageChannels {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Imaging.ManagedImage`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct ManagedImage;
|
||||
impl ManagedImage {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Imaging.ManagedImage";
|
||||
|
||||
@@ -3,3 +3,4 @@
|
||||
mod generated;
|
||||
|
||||
pub use generated::*;
|
||||
pub use libremetaverse_types::NotImplemented as Error;
|
||||
|
||||
@@ -7,5 +7,8 @@ license.workspace = true
|
||||
repository.workspace = true
|
||||
description = "LSL parser-tool shims for the MetaCrate LibreMetaverse rewrite"
|
||||
|
||||
[dependencies]
|
||||
libremetaverse-types = { path = "../libremetaverse-types" }
|
||||
|
||||
[lints]
|
||||
workspace = true
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -3,3 +3,4 @@
|
||||
mod generated;
|
||||
|
||||
pub use generated::*;
|
||||
pub use libremetaverse_types::NotImplemented as Error;
|
||||
|
||||
@@ -9,6 +9,7 @@ description = "Primitive meshing shims for the MetaCrate LibreMetaverse rewrite"
|
||||
|
||||
[dependencies]
|
||||
libremetaverse-imaging = { path = "../libremetaverse-imaging" }
|
||||
libremetaverse-types = { path = "../libremetaverse-types" }
|
||||
|
||||
[lints]
|
||||
workspace = true
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
#![allow(non_camel_case_types)]
|
||||
|
||||
/// `struct` shim for C# `LibreMetaverse.PrimMesher.Coord`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct Coord;
|
||||
impl Coord {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.PrimMesher.Coord";
|
||||
@@ -11,7 +11,7 @@ impl Coord {
|
||||
}
|
||||
|
||||
/// `struct` shim for C# `LibreMetaverse.PrimMesher.Face`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct Face;
|
||||
impl Face {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.PrimMesher.Face";
|
||||
@@ -19,7 +19,7 @@ impl Face {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.PrimMesher.ObjMesh`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct ObjMesh;
|
||||
impl ObjMesh {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.PrimMesher.ObjMesh";
|
||||
@@ -27,7 +27,7 @@ impl ObjMesh {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.PrimMesher.Path`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct Path;
|
||||
impl Path {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.PrimMesher.Path";
|
||||
@@ -35,7 +35,7 @@ impl Path {
|
||||
}
|
||||
|
||||
/// `struct` shim for C# `LibreMetaverse.PrimMesher.PathNode`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct PathNode;
|
||||
impl PathNode {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.PrimMesher.PathNode";
|
||||
@@ -43,7 +43,7 @@ impl PathNode {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.PrimMesher.PathType`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct PathType;
|
||||
impl PathType {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.PrimMesher.PathType";
|
||||
@@ -51,7 +51,7 @@ impl PathType {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.PrimMesher.PrimMesh`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct PrimMesh;
|
||||
impl PrimMesh {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.PrimMesher.PrimMesh";
|
||||
@@ -59,7 +59,7 @@ impl PrimMesh {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.PrimMesher.Profile`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct Profile;
|
||||
impl Profile {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.PrimMesher.Profile";
|
||||
@@ -67,7 +67,7 @@ impl Profile {
|
||||
}
|
||||
|
||||
/// `struct` shim for C# `LibreMetaverse.PrimMesher.Quat`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct Quat;
|
||||
impl Quat {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.PrimMesher.Quat";
|
||||
@@ -75,7 +75,7 @@ impl Quat {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.PrimMesher.SculptMap`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct SculptMap;
|
||||
impl SculptMap {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.PrimMesher.SculptMap";
|
||||
@@ -83,7 +83,7 @@ impl SculptMap {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.PrimMesher.SculptMesh`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct SculptMesh;
|
||||
impl SculptMesh {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.PrimMesher.SculptMesh";
|
||||
@@ -91,7 +91,7 @@ impl SculptMesh {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.PrimMesher.SculptType`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct SculptType;
|
||||
impl SculptType {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.PrimMesher.SculptType";
|
||||
@@ -99,7 +99,7 @@ impl SculptType {
|
||||
}
|
||||
|
||||
/// `struct` shim for C# `LibreMetaverse.PrimMesher.UVCoord`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct UVCoord;
|
||||
impl UVCoord {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.PrimMesher.UVCoord";
|
||||
@@ -107,7 +107,7 @@ impl UVCoord {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.PrimMesher.VertexIndexer`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct VertexIndexer;
|
||||
impl VertexIndexer {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.PrimMesher.VertexIndexer";
|
||||
@@ -115,7 +115,7 @@ impl VertexIndexer {
|
||||
}
|
||||
|
||||
/// `struct` shim for C# `LibreMetaverse.PrimMesher.ViewerFace`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct ViewerFace;
|
||||
impl ViewerFace {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.PrimMesher.ViewerFace";
|
||||
@@ -123,7 +123,7 @@ impl ViewerFace {
|
||||
}
|
||||
|
||||
/// `struct` shim for C# `LibreMetaverse.PrimMesher.ViewerPolygon`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct ViewerPolygon;
|
||||
impl ViewerPolygon {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.PrimMesher.ViewerPolygon";
|
||||
@@ -131,7 +131,7 @@ impl ViewerPolygon {
|
||||
}
|
||||
|
||||
/// `struct` shim for C# `LibreMetaverse.PrimMesher.ViewerVertex`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct ViewerVertex;
|
||||
impl ViewerVertex {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.PrimMesher.ViewerVertex";
|
||||
|
||||
@@ -4,3 +4,4 @@ mod generated;
|
||||
|
||||
pub use generated::*;
|
||||
pub use libremetaverse_imaging as imaging;
|
||||
pub use libremetaverse_types::NotImplemented as Error;
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
#![allow(non_camel_case_types)]
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Rendering.MeshFoundry`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct MeshFoundry;
|
||||
impl MeshFoundry {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Rendering.MeshFoundry";
|
||||
|
||||
@@ -8,3 +8,4 @@ pub use libremetaverse_imaging as imaging;
|
||||
pub use libremetaverse_prim_mesher as prim_mesher;
|
||||
pub use libremetaverse_structured_data as structured_data;
|
||||
pub use libremetaverse_types as types;
|
||||
pub use libremetaverse_types::NotImplemented as Error;
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
#![allow(non_camel_case_types)]
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Rendering.SimpleRenderer`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct SimpleRenderer;
|
||||
impl SimpleRenderer {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Rendering.SimpleRenderer";
|
||||
|
||||
@@ -5,3 +5,4 @@ mod generated;
|
||||
pub use generated::*;
|
||||
pub use libremetaverse as core;
|
||||
pub use libremetaverse_types as types;
|
||||
pub use libremetaverse_types::NotImplemented as Error;
|
||||
|
||||
@@ -7,5 +7,8 @@ license.workspace = true
|
||||
repository.workspace = true
|
||||
description = "RLV protocol shims for the MetaCrate LibreMetaverse rewrite"
|
||||
|
||||
[dependencies]
|
||||
libremetaverse-types = { path = "../libremetaverse-types" }
|
||||
|
||||
[lints]
|
||||
workspace = true
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
#![allow(non_camel_case_types)]
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.RLV.AttachmentRequest`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct AttachmentRequest;
|
||||
impl AttachmentRequest {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.RLV.AttachmentRequest";
|
||||
@@ -11,7 +11,7 @@ impl AttachmentRequest {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.RLV.CameraRestrictions`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct CameraRestrictions;
|
||||
impl CameraRestrictions {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.RLV.CameraRestrictions";
|
||||
@@ -19,7 +19,7 @@ impl CameraRestrictions {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.RLV.CameraSettings`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct CameraSettings;
|
||||
impl CameraSettings {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.RLV.CameraSettings";
|
||||
@@ -27,7 +27,7 @@ impl CameraSettings {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.RLV.HoverTextLocation`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct HoverTextLocation;
|
||||
impl HoverTextLocation {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.RLV.HoverTextLocation";
|
||||
@@ -45,7 +45,7 @@ pub trait IRlvQueryCallbacks {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.RLV.InventoryMap`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct InventoryMap;
|
||||
impl InventoryMap {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.RLV.InventoryMap";
|
||||
@@ -53,7 +53,7 @@ impl InventoryMap {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.RLV.LockedFolderPublic`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct LockedFolderPublic;
|
||||
impl LockedFolderPublic {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.RLV.LockedFolderPublic";
|
||||
@@ -61,7 +61,7 @@ impl LockedFolderPublic {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.RLV.ObjectLocation`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct ObjectLocation;
|
||||
impl ObjectLocation {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.RLV.ObjectLocation";
|
||||
@@ -69,7 +69,7 @@ impl ObjectLocation {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.RLV.RlvActionCallbacksDefault`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct RlvActionCallbacksDefault;
|
||||
impl RlvActionCallbacksDefault {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.RLV.RlvActionCallbacksDefault";
|
||||
@@ -77,7 +77,7 @@ impl RlvActionCallbacksDefault {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.RLV.RlvAttachmentPoint`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct RlvAttachmentPoint;
|
||||
impl RlvAttachmentPoint {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.RLV.RlvAttachmentPoint";
|
||||
@@ -85,7 +85,7 @@ impl RlvAttachmentPoint {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.RLV.RlvBlacklist`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct RlvBlacklist;
|
||||
impl RlvBlacklist {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.RLV.RlvBlacklist";
|
||||
@@ -93,7 +93,7 @@ impl RlvBlacklist {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.RLV.RlvCallbacksDefault`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct RlvCallbacksDefault;
|
||||
impl RlvCallbacksDefault {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.RLV.RlvCallbacksDefault";
|
||||
@@ -101,7 +101,7 @@ impl RlvCallbacksDefault {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.RLV.RlvCommandProcessor`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct RlvCommandProcessor;
|
||||
impl RlvCommandProcessor {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.RLV.RlvCommandProcessor";
|
||||
@@ -109,7 +109,7 @@ impl RlvCommandProcessor {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.RLV.RlvCommon`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct RlvCommon;
|
||||
impl RlvCommon {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.RLV.RlvCommon";
|
||||
@@ -117,7 +117,7 @@ impl RlvCommon {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.RLV.RlvGestureState`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct RlvGestureState;
|
||||
impl RlvGestureState {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.RLV.RlvGestureState";
|
||||
@@ -125,7 +125,7 @@ impl RlvGestureState {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.RLV.RlvGetDebugType`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct RlvGetDebugType;
|
||||
impl RlvGetDebugType {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.RLV.RlvGetDebugType";
|
||||
@@ -133,7 +133,7 @@ impl RlvGetDebugType {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.RLV.RlvGetEnvType`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct RlvGetEnvType;
|
||||
impl RlvGetEnvType {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.RLV.RlvGetEnvType";
|
||||
@@ -141,7 +141,7 @@ impl RlvGetEnvType {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.RLV.RlvInventoryItem`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct RlvInventoryItem;
|
||||
impl RlvInventoryItem {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.RLV.RlvInventoryItem";
|
||||
@@ -149,7 +149,7 @@ impl RlvInventoryItem {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.RLV.RlvPermissionsService`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct RlvPermissionsService;
|
||||
impl RlvPermissionsService {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.RLV.RlvPermissionsService";
|
||||
@@ -157,7 +157,7 @@ impl RlvPermissionsService {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.RLV.RlvRestriction`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct RlvRestriction;
|
||||
impl RlvRestriction {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.RLV.RlvRestriction";
|
||||
@@ -165,7 +165,7 @@ impl RlvRestriction {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.RLV.RlvRestrictionManager`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct RlvRestrictionManager;
|
||||
impl RlvRestrictionManager {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.RLV.RlvRestrictionManager";
|
||||
@@ -173,7 +173,7 @@ impl RlvRestrictionManager {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.RLV.RlvRestrictionType`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct RlvRestrictionType;
|
||||
impl RlvRestrictionType {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.RLV.RlvRestrictionType";
|
||||
@@ -181,7 +181,7 @@ impl RlvRestrictionType {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.RLV.RlvService`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct RlvService;
|
||||
impl RlvService {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.RLV.RlvService";
|
||||
@@ -189,7 +189,7 @@ impl RlvService {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.RLV.RlvSharedFolder`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct RlvSharedFolder;
|
||||
impl RlvSharedFolder {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.RLV.RlvSharedFolder";
|
||||
@@ -197,7 +197,7 @@ impl RlvSharedFolder {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.RLV.RlvWearableType`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct RlvWearableType;
|
||||
impl RlvWearableType {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.RLV.RlvWearableType";
|
||||
@@ -205,7 +205,7 @@ impl RlvWearableType {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.RLV.TouchLocation`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct TouchLocation;
|
||||
impl TouchLocation {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.RLV.TouchLocation";
|
||||
@@ -214,7 +214,7 @@ impl TouchLocation {
|
||||
|
||||
pub mod event_arguments {
|
||||
/// `class` shim for C# `LibreMetaverse.RLV.EventArguments.RestrictionUpdatedEventArgs`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct RestrictionUpdatedEventArgs;
|
||||
impl RestrictionUpdatedEventArgs {
|
||||
pub const CSHARP_NAME: &'static str =
|
||||
|
||||
@@ -3,3 +3,4 @@
|
||||
mod generated;
|
||||
|
||||
pub use generated::*;
|
||||
pub use libremetaverse_types::NotImplemented as Error;
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
#![allow(non_camel_case_types)]
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.StructuredData.OSD`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct OSD;
|
||||
impl OSD {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.StructuredData.OSD";
|
||||
@@ -11,7 +11,7 @@ impl OSD {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.StructuredData.OSDArray`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct OSDArray;
|
||||
impl OSDArray {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.StructuredData.OSDArray";
|
||||
@@ -19,7 +19,7 @@ impl OSDArray {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.StructuredData.OSDBinary`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct OSDBinary;
|
||||
impl OSDBinary {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.StructuredData.OSDBinary";
|
||||
@@ -27,7 +27,7 @@ impl OSDBinary {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.StructuredData.OSDBoolean`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct OSDBoolean;
|
||||
impl OSDBoolean {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.StructuredData.OSDBoolean";
|
||||
@@ -35,7 +35,7 @@ impl OSDBoolean {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.StructuredData.OSDDate`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct OSDDate;
|
||||
impl OSDDate {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.StructuredData.OSDDate";
|
||||
@@ -43,7 +43,7 @@ impl OSDDate {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.StructuredData.OSDException`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct OSDException;
|
||||
impl OSDException {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.StructuredData.OSDException";
|
||||
@@ -51,7 +51,7 @@ impl OSDException {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.StructuredData.OSDFormat`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct OSDFormat;
|
||||
impl OSDFormat {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.StructuredData.OSDFormat";
|
||||
@@ -59,7 +59,7 @@ impl OSDFormat {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.StructuredData.OSDInteger`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct OSDInteger;
|
||||
impl OSDInteger {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.StructuredData.OSDInteger";
|
||||
@@ -67,7 +67,7 @@ impl OSDInteger {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.StructuredData.OSDLlsdXml`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct OSDLlsdXml;
|
||||
impl OSDLlsdXml {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.StructuredData.OSDLlsdXml";
|
||||
@@ -75,7 +75,7 @@ impl OSDLlsdXml {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.StructuredData.OSDMap`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct OSDMap;
|
||||
impl OSDMap {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.StructuredData.OSDMap";
|
||||
@@ -83,7 +83,7 @@ impl OSDMap {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.StructuredData.OSDParser`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct OSDParser;
|
||||
impl OSDParser {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.StructuredData.OSDParser";
|
||||
@@ -91,7 +91,7 @@ impl OSDParser {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.StructuredData.OSDReal`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct OSDReal;
|
||||
impl OSDReal {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.StructuredData.OSDReal";
|
||||
@@ -99,7 +99,7 @@ impl OSDReal {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.StructuredData.OSDString`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct OSDString;
|
||||
impl OSDString {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.StructuredData.OSDString";
|
||||
@@ -107,7 +107,7 @@ impl OSDString {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.StructuredData.OSDType`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct OSDType;
|
||||
impl OSDType {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.StructuredData.OSDType";
|
||||
@@ -115,7 +115,7 @@ impl OSDType {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.StructuredData.OSDUUID`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct OSDUUID;
|
||||
impl OSDUUID {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.StructuredData.OSDUUID";
|
||||
@@ -123,7 +123,7 @@ impl OSDUUID {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.StructuredData.OSDUri`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct OSDUri;
|
||||
impl OSDUri {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.StructuredData.OSDUri";
|
||||
|
||||
@@ -4,3 +4,4 @@ mod generated;
|
||||
|
||||
pub use generated::*;
|
||||
pub use libremetaverse_types as types;
|
||||
pub use libremetaverse_types::NotImplemented as Error;
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
#![allow(non_camel_case_types)]
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.AssetType`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct AssetType;
|
||||
impl AssetType {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.AssetType";
|
||||
@@ -11,7 +11,7 @@ impl AssetType {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.AttachmentPoint`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct AttachmentPoint;
|
||||
impl AttachmentPoint {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.AttachmentPoint";
|
||||
@@ -19,7 +19,7 @@ impl AttachmentPoint {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.CRC32`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct CRC32;
|
||||
impl CRC32 {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.CRC32";
|
||||
@@ -27,7 +27,7 @@ impl CRC32 {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.CacheDictionary`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct CacheDictionary<T0 = (), T1 = ()>(std::marker::PhantomData<(T0, T1)>);
|
||||
impl<T0, T1> CacheDictionary<T0, T1> {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.CacheDictionary";
|
||||
@@ -35,7 +35,7 @@ impl<T0, T1> CacheDictionary<T0, T1> {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.CacheDictionaryEnumerator`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct CacheDictionaryEnumerator;
|
||||
impl CacheDictionaryEnumerator {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.CacheDictionaryEnumerator";
|
||||
@@ -43,7 +43,7 @@ impl CacheDictionaryEnumerator {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.ClickAction`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct ClickAction;
|
||||
impl ClickAction {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.ClickAction";
|
||||
@@ -51,7 +51,7 @@ impl ClickAction {
|
||||
}
|
||||
|
||||
/// `struct` shim for C# `LibreMetaverse.Color4`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct Color4;
|
||||
impl Color4 {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Color4";
|
||||
@@ -59,7 +59,7 @@ impl Color4 {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.DoubleDictionary`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct DoubleDictionary<T0 = (), T1 = (), T2 = ()>(std::marker::PhantomData<(T0, T1, T2)>);
|
||||
impl<T0, T1, T2> DoubleDictionary<T0, T1, T2> {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.DoubleDictionary";
|
||||
@@ -67,7 +67,7 @@ impl<T0, T1, T2> DoubleDictionary<T0, T1, T2> {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.EmptyRemovalStrategy`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct EmptyRemovalStrategy<T0 = ()>(std::marker::PhantomData<(T0,)>);
|
||||
impl<T0> EmptyRemovalStrategy<T0> {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.EmptyRemovalStrategy";
|
||||
@@ -75,7 +75,7 @@ impl<T0> EmptyRemovalStrategy<T0> {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.EnumInfoAttribute`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct EnumInfoAttribute;
|
||||
impl EnumInfoAttribute {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.EnumInfoAttribute";
|
||||
@@ -83,7 +83,7 @@ impl EnumInfoAttribute {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.EnumInfoExtensions`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct EnumInfoExtensions;
|
||||
impl EnumInfoExtensions {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.EnumInfoExtensions";
|
||||
@@ -91,7 +91,7 @@ impl EnumInfoExtensions {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.ExpiringCache`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct ExpiringCache<T0 = (), T1 = ()>(std::marker::PhantomData<(T0, T1)>);
|
||||
impl<T0, T1> ExpiringCache<T0, T1> {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.ExpiringCache";
|
||||
@@ -99,7 +99,7 @@ impl<T0, T1> ExpiringCache<T0, T1> {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.ExtraParamType`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct ExtraParamType;
|
||||
impl ExtraParamType {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.ExtraParamType";
|
||||
@@ -107,7 +107,7 @@ impl ExtraParamType {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.FaceType`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct FaceType;
|
||||
impl FaceType {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.FaceType";
|
||||
@@ -115,7 +115,7 @@ impl FaceType {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.FolderType`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct FolderType;
|
||||
impl FolderType {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.FolderType";
|
||||
@@ -123,7 +123,7 @@ impl FolderType {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.HoleType`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct HoleType;
|
||||
impl HoleType {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.HoleType";
|
||||
@@ -136,7 +136,7 @@ pub trait ICacheDictionaryRemovalStrategy<T0 = ()> {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.InventoryType`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct InventoryType;
|
||||
impl InventoryType {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.InventoryType";
|
||||
@@ -144,7 +144,7 @@ impl InventoryType {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.JointType`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct JointType;
|
||||
impl JointType {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.JointType";
|
||||
@@ -152,7 +152,7 @@ impl JointType {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.LruRemovalStrategy`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct LruRemovalStrategy<T0 = ()>(std::marker::PhantomData<(T0,)>);
|
||||
impl<T0> LruRemovalStrategy<T0> {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.LruRemovalStrategy";
|
||||
@@ -160,7 +160,7 @@ impl<T0> LruRemovalStrategy<T0> {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.Material`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct Material;
|
||||
impl Material {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Material";
|
||||
@@ -168,7 +168,7 @@ impl Material {
|
||||
}
|
||||
|
||||
/// `struct` shim for C# `LibreMetaverse.Matrix4`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct Matrix4;
|
||||
impl Matrix4 {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Matrix4";
|
||||
@@ -176,7 +176,7 @@ impl Matrix4 {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.MruRemovalStrategy`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct MruRemovalStrategy<T0 = ()>(std::marker::PhantomData<(T0,)>);
|
||||
impl<T0> MruRemovalStrategy<T0> {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.MruRemovalStrategy";
|
||||
@@ -184,7 +184,7 @@ impl<T0> MruRemovalStrategy<T0> {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.MultiValueDictionary`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct MultiValueDictionary<T0 = (), T1 = ()>(std::marker::PhantomData<(T0, T1)>);
|
||||
impl<T0, T1> MultiValueDictionary<T0, T1> {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.MultiValueDictionary";
|
||||
@@ -192,7 +192,7 @@ impl<T0, T1> MultiValueDictionary<T0, T1> {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.ObjectCategory`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct ObjectCategory;
|
||||
impl ObjectCategory {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.ObjectCategory";
|
||||
@@ -200,7 +200,7 @@ impl ObjectCategory {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.PCode`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct PCode;
|
||||
impl PCode {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.PCode";
|
||||
@@ -208,7 +208,7 @@ impl PCode {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.PathCurve`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct PathCurve;
|
||||
impl PathCurve {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.PathCurve";
|
||||
@@ -216,7 +216,7 @@ impl PathCurve {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.PhysicsShapeType`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct PhysicsShapeType;
|
||||
impl PhysicsShapeType {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.PhysicsShapeType";
|
||||
@@ -224,7 +224,7 @@ impl PhysicsShapeType {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.Platform`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct Platform;
|
||||
impl Platform {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Platform";
|
||||
@@ -232,7 +232,7 @@ impl Platform {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.PrimFlags`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct PrimFlags;
|
||||
impl PrimFlags {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.PrimFlags";
|
||||
@@ -240,7 +240,7 @@ impl PrimFlags {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.PrimType`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct PrimType;
|
||||
impl PrimType {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.PrimType";
|
||||
@@ -248,7 +248,7 @@ impl PrimType {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.ProfileCurve`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct ProfileCurve;
|
||||
impl ProfileCurve {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.ProfileCurve";
|
||||
@@ -256,7 +256,7 @@ impl ProfileCurve {
|
||||
}
|
||||
|
||||
/// `struct` shim for C# `LibreMetaverse.Quaternion`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct Quaternion;
|
||||
impl Quaternion {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Quaternion";
|
||||
@@ -264,7 +264,7 @@ impl Quaternion {
|
||||
}
|
||||
|
||||
/// `struct` shim for C# `LibreMetaverse.Ray`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct Ray;
|
||||
impl Ray {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Ray";
|
||||
@@ -272,7 +272,7 @@ impl Ray {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.SaleType`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct SaleType;
|
||||
impl SaleType {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.SaleType";
|
||||
@@ -280,7 +280,7 @@ impl SaleType {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.SculptType`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct SculptType;
|
||||
impl SculptType {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.SculptType";
|
||||
@@ -288,7 +288,7 @@ impl SculptType {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.SoundFlags`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct SoundFlags;
|
||||
impl SoundFlags {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.SoundFlags";
|
||||
@@ -296,7 +296,7 @@ impl SoundFlags {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.TokenBucket`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct TokenBucket;
|
||||
impl TokenBucket {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.TokenBucket";
|
||||
@@ -304,7 +304,7 @@ impl TokenBucket {
|
||||
}
|
||||
|
||||
/// `record struct` shim for C# `LibreMetaverse.UUID`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct UUID;
|
||||
impl UUID {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.UUID";
|
||||
@@ -312,7 +312,7 @@ impl UUID {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Utils`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct Utils;
|
||||
impl Utils {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Utils";
|
||||
@@ -320,7 +320,7 @@ impl Utils {
|
||||
}
|
||||
|
||||
/// `struct` shim for C# `LibreMetaverse.Vector2`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct Vector2;
|
||||
impl Vector2 {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Vector2";
|
||||
@@ -328,7 +328,7 @@ impl Vector2 {
|
||||
}
|
||||
|
||||
/// `struct` shim for C# `LibreMetaverse.Vector3`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct Vector3;
|
||||
impl Vector3 {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Vector3";
|
||||
@@ -336,7 +336,7 @@ impl Vector3 {
|
||||
}
|
||||
|
||||
/// `struct` shim for C# `LibreMetaverse.Vector3d`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct Vector3d;
|
||||
impl Vector3d {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Vector3d";
|
||||
@@ -344,7 +344,7 @@ impl Vector3d {
|
||||
}
|
||||
|
||||
/// `struct` shim for C# `LibreMetaverse.Vector4`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct Vector4;
|
||||
impl Vector4 {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Vector4";
|
||||
@@ -352,7 +352,7 @@ impl Vector4 {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.WearableType`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct WearableType;
|
||||
impl WearableType {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.WearableType";
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
//! Core value types corresponding to `LibreMetaverse.Types`.
|
||||
|
||||
mod generated;
|
||||
pub mod shim;
|
||||
|
||||
pub use generated::*;
|
||||
pub use shim::NotImplemented as Error;
|
||||
pub use shim::{NotImplemented, not_implemented};
|
||||
|
||||
107
crates/libremetaverse-types/src/shim.rs
Normal file
107
crates/libremetaverse-types/src/shim.rs
Normal file
@@ -0,0 +1,107 @@
|
||||
//! Failure-only infrastructure for callable API shims.
|
||||
//!
|
||||
//! Fallible synchronous and asynchronous members return [`NotImplemented`].
|
||||
//! Infallible members, trait methods, and constructors use
|
||||
//! [`unimplemented_api!`](crate::unimplemented_api). Stream and callback
|
||||
//! factories fail before returning a stream, registering a callback, or storing
|
||||
//! a trait object; an empty stream or no-op callback would be plausible behavior.
|
||||
|
||||
use std::fmt;
|
||||
|
||||
const PANIC_PREFIX: &str = "unimplemented C# API member: ";
|
||||
|
||||
/// Typed failure returned by a fallible API shim.
|
||||
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
||||
pub struct NotImplemented {
|
||||
csharp_member: &'static str,
|
||||
}
|
||||
|
||||
impl NotImplemented {
|
||||
/// Creates a failure for one stable C# documentation ID.
|
||||
#[must_use]
|
||||
pub const fn new(csharp_member: &'static str) -> Self {
|
||||
Self { csharp_member }
|
||||
}
|
||||
|
||||
/// Returns the stable C# documentation ID of the unimplemented member.
|
||||
#[must_use]
|
||||
pub const fn csharp_member(self) -> &'static str {
|
||||
self.csharp_member
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Display for NotImplemented {
|
||||
fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
write!(
|
||||
formatter,
|
||||
"C# API member {} is not implemented",
|
||||
self.csharp_member
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
impl std::error::Error for NotImplemented {}
|
||||
|
||||
/// Returns the standardized typed failure without constructing a fake value.
|
||||
///
|
||||
/// # Errors
|
||||
///
|
||||
/// Always returns [`NotImplemented`] with the supplied stable C# member ID.
|
||||
pub const fn not_implemented<T>(csharp_member: &'static str) -> Result<T, NotImplemented> {
|
||||
Err(NotImplemented::new(csharp_member))
|
||||
}
|
||||
|
||||
/// Panics for an infallible API whose signature cannot return [`NotImplemented`].
|
||||
///
|
||||
/// # Panics
|
||||
///
|
||||
/// Always, with a marker and the stable C# member ID.
|
||||
#[doc(hidden)]
|
||||
#[cold]
|
||||
#[track_caller]
|
||||
pub fn panic_unimplemented(csharp_member: &'static str) -> ! {
|
||||
panic!("{PANIC_PREFIX}{csharp_member}")
|
||||
}
|
||||
|
||||
/// Fails an infallible API shim with its stable C# documentation ID.
|
||||
///
|
||||
/// This is deliberately a panic rather than a default value. Translated tests
|
||||
/// expecting a domain error therefore cannot mistake an unimplemented API for
|
||||
/// the expected `Err` variant.
|
||||
///
|
||||
/// # Panics
|
||||
///
|
||||
/// Always, with the supplied stable C# member ID.
|
||||
#[macro_export]
|
||||
macro_rules! unimplemented_api {
|
||||
($csharp_member:expr $(,)?) => {{ $crate::shim::panic_unimplemented($csharp_member) }};
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::{NotImplemented, PANIC_PREFIX, not_implemented};
|
||||
|
||||
const MEMBER: &str = "M:LibreMetaverse.GridClient.Login(System.String)";
|
||||
|
||||
#[test]
|
||||
fn error_formats_and_preserves_member_id() {
|
||||
let error = NotImplemented::new(MEMBER);
|
||||
assert_eq!(error.csharp_member(), MEMBER);
|
||||
assert_eq!(
|
||||
error.to_string(),
|
||||
format!("C# API member {MEMBER} is not implemented")
|
||||
);
|
||||
assert_eq!(not_implemented::<bool>(MEMBER), Err(error));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn panic_placeholder_is_not_an_expected_error_result() {
|
||||
let panic = std::panic::catch_unwind(|| crate::unimplemented_api!(MEMBER))
|
||||
.expect_err("the infallible placeholder must panic");
|
||||
let message = panic
|
||||
.downcast_ref::<String>()
|
||||
.expect("placeholder panic must retain its visible marker");
|
||||
assert_eq!(message, &format!("{PANIC_PREFIX}{MEMBER}"));
|
||||
assert!(not_implemented::<()>(MEMBER).is_err());
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,7 @@
|
||||
#![allow(non_camel_case_types)]
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Utilities.ConnectionManager`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct ConnectionManager;
|
||||
impl ConnectionManager {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Utilities.ConnectionManager";
|
||||
@@ -11,7 +11,7 @@ impl ConnectionManager {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Utilities.Realism`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct Realism;
|
||||
impl Realism {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Utilities.Realism";
|
||||
@@ -19,7 +19,7 @@ impl Realism {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.Utilities.WaterType`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct WaterType;
|
||||
impl WaterType {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Utilities.WaterType";
|
||||
|
||||
@@ -6,3 +6,4 @@ pub use generated::*;
|
||||
pub use libremetaverse as core;
|
||||
pub use libremetaverse_structured_data as structured_data;
|
||||
pub use libremetaverse_types as types;
|
||||
pub use libremetaverse_types::NotImplemented as Error;
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
#![allow(non_camel_case_types)]
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.Vivox.AccountLoginStateChangeEventArgs`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct AccountLoginStateChangeEventArgs;
|
||||
impl AccountLoginStateChangeEventArgs {
|
||||
pub const CSHARP_NAME: &'static str =
|
||||
@@ -12,7 +12,7 @@ impl AccountLoginStateChangeEventArgs {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.Vivox.AudioPropertiesEventArgs`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct AudioPropertiesEventArgs;
|
||||
impl AudioPropertiesEventArgs {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.Vivox.AudioPropertiesEventArgs";
|
||||
@@ -20,7 +20,7 @@ impl AudioPropertiesEventArgs {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.Vivox.CaptureDevice`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct CaptureDevice;
|
||||
impl CaptureDevice {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.Vivox.CaptureDevice";
|
||||
@@ -28,7 +28,7 @@ impl CaptureDevice {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.Voice.Vivox.ConnectionState`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct ConnectionState;
|
||||
impl ConnectionState {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.Vivox.ConnectionState";
|
||||
@@ -36,7 +36,7 @@ impl ConnectionState {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.Voice.Vivox.LoginState`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct LoginState;
|
||||
impl LoginState {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.Vivox.LoginState";
|
||||
@@ -44,7 +44,7 @@ impl LoginState {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.Vivox.NewSessionEventArgs`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct NewSessionEventArgs;
|
||||
impl NewSessionEventArgs {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.Vivox.NewSessionEventArgs";
|
||||
@@ -52,7 +52,7 @@ impl NewSessionEventArgs {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.Vivox.ParticipantAddedEventArgs`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct ParticipantAddedEventArgs;
|
||||
impl ParticipantAddedEventArgs {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.Vivox.ParticipantAddedEventArgs";
|
||||
@@ -60,7 +60,7 @@ impl ParticipantAddedEventArgs {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.Vivox.ParticipantPropertiesEventArgs`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct ParticipantPropertiesEventArgs;
|
||||
impl ParticipantPropertiesEventArgs {
|
||||
pub const CSHARP_NAME: &'static str =
|
||||
@@ -69,7 +69,7 @@ impl ParticipantPropertiesEventArgs {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.Vivox.ParticipantRemovedEventArgs`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct ParticipantRemovedEventArgs;
|
||||
impl ParticipantRemovedEventArgs {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.Vivox.ParticipantRemovedEventArgs";
|
||||
@@ -77,7 +77,7 @@ impl ParticipantRemovedEventArgs {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.Voice.Vivox.ParticipantState`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct ParticipantState;
|
||||
impl ParticipantState {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.Vivox.ParticipantState";
|
||||
@@ -85,7 +85,7 @@ impl ParticipantState {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.Vivox.ParticipantStateChangeEventArgs`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct ParticipantStateChangeEventArgs;
|
||||
impl ParticipantStateChangeEventArgs {
|
||||
pub const CSHARP_NAME: &'static str =
|
||||
@@ -94,7 +94,7 @@ impl ParticipantStateChangeEventArgs {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.Voice.Vivox.ParticipantType`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct ParticipantType;
|
||||
impl ParticipantType {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.Vivox.ParticipantType";
|
||||
@@ -102,7 +102,7 @@ impl ParticipantType {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.Vivox.ParticipantUpdatedEventArgs`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct ParticipantUpdatedEventArgs;
|
||||
impl ParticipantUpdatedEventArgs {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.Vivox.ParticipantUpdatedEventArgs";
|
||||
@@ -110,7 +110,7 @@ impl ParticipantUpdatedEventArgs {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.Vivox.RenderDevice`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct RenderDevice;
|
||||
impl RenderDevice {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.Vivox.RenderDevice";
|
||||
@@ -118,7 +118,7 @@ impl RenderDevice {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.Voice.Vivox.ResponseType`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct ResponseType;
|
||||
impl ResponseType {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.Vivox.ResponseType";
|
||||
@@ -126,7 +126,7 @@ impl ResponseType {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.Vivox.SessionAddedEventArgs`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct SessionAddedEventArgs;
|
||||
impl SessionAddedEventArgs {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.Vivox.SessionAddedEventArgs";
|
||||
@@ -134,7 +134,7 @@ impl SessionAddedEventArgs {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.Vivox.SessionGroupAddedEventArgs`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct SessionGroupAddedEventArgs;
|
||||
impl SessionGroupAddedEventArgs {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.Vivox.SessionGroupAddedEventArgs";
|
||||
@@ -142,7 +142,7 @@ impl SessionGroupAddedEventArgs {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.Vivox.SessionMediaEventArgs`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct SessionMediaEventArgs;
|
||||
impl SessionMediaEventArgs {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.Vivox.SessionMediaEventArgs";
|
||||
@@ -150,7 +150,7 @@ impl SessionMediaEventArgs {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.Vivox.SessionRemovedEventArgs`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct SessionRemovedEventArgs;
|
||||
impl SessionRemovedEventArgs {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.Vivox.SessionRemovedEventArgs";
|
||||
@@ -158,7 +158,7 @@ impl SessionRemovedEventArgs {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.Voice.Vivox.SessionState`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct SessionState;
|
||||
impl SessionState {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.Vivox.SessionState";
|
||||
@@ -166,7 +166,7 @@ impl SessionState {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.Vivox.SessionStateChangeEventArgs`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct SessionStateChangeEventArgs;
|
||||
impl SessionStateChangeEventArgs {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.Vivox.SessionStateChangeEventArgs";
|
||||
@@ -174,7 +174,7 @@ impl SessionStateChangeEventArgs {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.Vivox.SessionUpdatedEventArgs`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct SessionUpdatedEventArgs;
|
||||
impl SessionUpdatedEventArgs {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.Vivox.SessionUpdatedEventArgs";
|
||||
@@ -182,7 +182,7 @@ impl SessionUpdatedEventArgs {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.Vivox.TCPPipe`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct TCPPipe;
|
||||
impl TCPPipe {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.Vivox.TCPPipe";
|
||||
@@ -190,7 +190,7 @@ impl TCPPipe {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.Vivox.VoiceAccountEventArgs`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct VoiceAccountEventArgs;
|
||||
impl VoiceAccountEventArgs {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.Vivox.VoiceAccountEventArgs";
|
||||
@@ -198,7 +198,7 @@ impl VoiceAccountEventArgs {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.Vivox.VoiceConnectorEventArgs`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct VoiceConnectorEventArgs;
|
||||
impl VoiceConnectorEventArgs {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.Vivox.VoiceConnectorEventArgs";
|
||||
@@ -206,7 +206,7 @@ impl VoiceConnectorEventArgs {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.Vivox.VoiceDevicesEventArgs`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct VoiceDevicesEventArgs;
|
||||
impl VoiceDevicesEventArgs {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.Vivox.VoiceDevicesEventArgs";
|
||||
@@ -214,7 +214,7 @@ impl VoiceDevicesEventArgs {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.Vivox.VoiceEvent`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct VoiceEvent;
|
||||
impl VoiceEvent {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.Vivox.VoiceEvent";
|
||||
@@ -222,7 +222,7 @@ impl VoiceEvent {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.Vivox.VoiceGateway`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct VoiceGateway;
|
||||
impl VoiceGateway {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.Vivox.VoiceGateway";
|
||||
@@ -230,7 +230,7 @@ impl VoiceGateway {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.Vivox.VoiceInputXml`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct VoiceInputXml;
|
||||
impl VoiceInputXml {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.Vivox.VoiceInputXml";
|
||||
@@ -238,7 +238,7 @@ impl VoiceInputXml {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.Vivox.VoiceLoggingSettings`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct VoiceLoggingSettings;
|
||||
impl VoiceLoggingSettings {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.Vivox.VoiceLoggingSettings";
|
||||
@@ -246,7 +246,7 @@ impl VoiceLoggingSettings {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.Vivox.VoiceManager`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct VoiceManager;
|
||||
impl VoiceManager {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.Vivox.VoiceManager";
|
||||
@@ -254,7 +254,7 @@ impl VoiceManager {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.Vivox.VoiceParticipant`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct VoiceParticipant;
|
||||
impl VoiceParticipant {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.Vivox.VoiceParticipant";
|
||||
@@ -262,7 +262,7 @@ impl VoiceParticipant {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.Vivox.VoicePosition`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct VoicePosition;
|
||||
impl VoicePosition {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.Vivox.VoicePosition";
|
||||
@@ -270,7 +270,7 @@ impl VoicePosition {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.Vivox.VoiceRequest`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct VoiceRequest;
|
||||
impl VoiceRequest {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.Vivox.VoiceRequest";
|
||||
@@ -278,7 +278,7 @@ impl VoiceRequest {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.Vivox.VoiceResponse`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct VoiceResponse;
|
||||
impl VoiceResponse {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.Vivox.VoiceResponse";
|
||||
@@ -286,7 +286,7 @@ impl VoiceResponse {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.Vivox.VoiceResponseEventArgs`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct VoiceResponseEventArgs;
|
||||
impl VoiceResponseEventArgs {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.Vivox.VoiceResponseEventArgs";
|
||||
@@ -294,7 +294,7 @@ impl VoiceResponseEventArgs {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.Vivox.VoiceResponseResults`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct VoiceResponseResults;
|
||||
impl VoiceResponseResults {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.Vivox.VoiceResponseResults";
|
||||
@@ -302,7 +302,7 @@ impl VoiceResponseResults {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.Voice.Vivox.VoiceServiceType`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct VoiceServiceType;
|
||||
impl VoiceServiceType {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.Vivox.VoiceServiceType";
|
||||
@@ -310,7 +310,7 @@ impl VoiceServiceType {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.Vivox.VoiceSession`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct VoiceSession;
|
||||
impl VoiceSession {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.Vivox.VoiceSession";
|
||||
@@ -318,7 +318,7 @@ impl VoiceSession {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.Vivox.VoiceSessionEventArgs`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct VoiceSessionEventArgs;
|
||||
impl VoiceSessionEventArgs {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.Vivox.VoiceSessionEventArgs";
|
||||
@@ -326,7 +326,7 @@ impl VoiceSessionEventArgs {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.Voice.Vivox.VoiceStatus`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct VoiceStatus;
|
||||
impl VoiceStatus {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.Vivox.VoiceStatus";
|
||||
@@ -334,7 +334,7 @@ impl VoiceStatus {
|
||||
}
|
||||
|
||||
/// `delegate` shim for C# `LibreMetaverse.Voice.Vivox.void`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct void;
|
||||
impl void {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.Vivox.void";
|
||||
|
||||
@@ -6,3 +6,4 @@ pub use generated::*;
|
||||
pub use libremetaverse as core;
|
||||
pub use libremetaverse_structured_data as structured_data;
|
||||
pub use libremetaverse_types as types;
|
||||
pub use libremetaverse_types::NotImplemented as Error;
|
||||
|
||||
@@ -10,6 +10,7 @@ description = "WebRTC voice shims for the MetaCrate LibreMetaverse rewrite"
|
||||
[dependencies]
|
||||
libremetaverse = { path = "../libremetaverse" }
|
||||
libremetaverse-structured-data = { path = "../libremetaverse-structured-data" }
|
||||
libremetaverse-types = { path = "../libremetaverse-types" }
|
||||
|
||||
[lints]
|
||||
workspace = true
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
#![allow(non_camel_case_types)]
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.WebRTC.AvatarPosition`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct AvatarPosition;
|
||||
impl AvatarPosition {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.WebRTC.AvatarPosition";
|
||||
@@ -11,7 +11,7 @@ impl AvatarPosition {
|
||||
}
|
||||
|
||||
/// `enum` shim for C# `LibreMetaverse.Voice.WebRTC.ESessionType`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct ESessionType;
|
||||
impl ESessionType {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.WebRTC.ESessionType";
|
||||
@@ -24,7 +24,7 @@ pub trait IVoiceLogger {
|
||||
}
|
||||
|
||||
/// `struct` shim for C# `LibreMetaverse.Voice.WebRTC.Int3`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct Int3;
|
||||
impl Int3 {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.WebRTC.Int3";
|
||||
@@ -32,7 +32,7 @@ impl Int3 {
|
||||
}
|
||||
|
||||
/// `struct` shim for C# `LibreMetaverse.Voice.WebRTC.Int4`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct Int4;
|
||||
impl Int4 {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.WebRTC.Int4";
|
||||
@@ -40,7 +40,7 @@ impl Int4 {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.WebRTC.LibreMetaverseVoiceLogger`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct LibreMetaverseVoiceLogger;
|
||||
impl LibreMetaverseVoiceLogger {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.WebRTC.LibreMetaverseVoiceLogger";
|
||||
@@ -48,7 +48,7 @@ impl LibreMetaverseVoiceLogger {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.WebRTC.OpusDecoderContext`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct OpusDecoderContext;
|
||||
impl OpusDecoderContext {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.WebRTC.OpusDecoderContext";
|
||||
@@ -56,7 +56,7 @@ impl OpusDecoderContext {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.WebRTC.PeerAudioState`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct PeerAudioState;
|
||||
impl PeerAudioState {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.WebRTC.PeerAudioState";
|
||||
@@ -64,7 +64,7 @@ impl PeerAudioState {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.WebRTC.PeerManager`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct PeerManager;
|
||||
impl PeerManager {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.WebRTC.PeerManager";
|
||||
@@ -72,7 +72,7 @@ impl PeerManager {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.WebRTC.VoiceException`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct VoiceException;
|
||||
impl VoiceException {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.WebRTC.VoiceException";
|
||||
@@ -80,7 +80,7 @@ impl VoiceException {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.WebRTC.VoiceManager`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct VoiceManager;
|
||||
impl VoiceManager {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.WebRTC.VoiceManager";
|
||||
@@ -88,7 +88,7 @@ impl VoiceManager {
|
||||
}
|
||||
|
||||
/// `class` shim for C# `LibreMetaverse.Voice.WebRTC.VoiceSession`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct VoiceSession;
|
||||
impl VoiceSession {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.Voice.WebRTC.VoiceSession";
|
||||
@@ -97,7 +97,7 @@ impl VoiceSession {
|
||||
|
||||
pub mod libre_metaverse {
|
||||
/// `class` shim for C# `LibreMetaverse.AudioDevice`; members remain intentionally unimplemented.
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct AudioDevice;
|
||||
impl AudioDevice {
|
||||
pub const CSHARP_NAME: &'static str = "LibreMetaverse.AudioDevice";
|
||||
|
||||
@@ -5,3 +5,4 @@ mod generated;
|
||||
pub use generated::*;
|
||||
pub use libremetaverse as core;
|
||||
pub use libremetaverse_structured_data as structured_data;
|
||||
pub use libremetaverse_types::NotImplemented as Error;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -6,6 +6,7 @@ pub use generated::*;
|
||||
pub use libremetaverse_imaging as imaging_abstractions;
|
||||
pub use libremetaverse_structured_data as structured_data;
|
||||
pub use libremetaverse_types as types;
|
||||
pub use libremetaverse_types::NotImplemented as Error;
|
||||
|
||||
/// Common behavior for program shims while the network stack is unimplemented.
|
||||
pub mod shim {
|
||||
|
||||
28
tests/compat/tests/shim_failure.rs
Normal file
28
tests/compat/tests/shim_failure.rs
Normal file
@@ -0,0 +1,28 @@
|
||||
use libremetaverse_types::NotImplemented;
|
||||
|
||||
const MEMBER: &str = "M:LibreMetaverse.GridClient.Login(System.String)";
|
||||
|
||||
#[test]
|
||||
fn every_api_crate_exposes_the_shared_error() {
|
||||
macro_rules! assert_aliases {
|
||||
($($error:path),+ $(,)?) => {$({
|
||||
let _: $error = NotImplemented::new(MEMBER);
|
||||
})+};
|
||||
}
|
||||
|
||||
assert_aliases!(
|
||||
libremetaverse::Error,
|
||||
libremetaverse_imaging::Error,
|
||||
libremetaverse_imaging_skia::Error,
|
||||
libremetaverse_lsl_tools::Error,
|
||||
libremetaverse_prim_mesher::Error,
|
||||
libremetaverse_rendering_mesh_foundry::Error,
|
||||
libremetaverse_rendering_simple::Error,
|
||||
libremetaverse_rlv::Error,
|
||||
libremetaverse_structured_data::Error,
|
||||
libremetaverse_types::Error,
|
||||
libremetaverse_utilities::Error,
|
||||
libremetaverse_voice_vivox::Error,
|
||||
libremetaverse_voice_webrtc::Error,
|
||||
);
|
||||
}
|
||||
@@ -175,6 +175,12 @@ RUST_KEYWORDS = {
|
||||
"macro", "override", "priv", "typeof", "unsized", "virtual", "yield", "try",
|
||||
}
|
||||
|
||||
FAKE_BODY = re.compile(
|
||||
r"\b(?:Default::default|unwrap_or_default|Vec::new|String::new|UUID::nil|Uuid::nil|"
|
||||
r"(?:std::iter|stream)::empty)\s*\(|\b(?:return\s+)?(?:false|true|0)\s*;|"
|
||||
r"\b(?:Ok|Some)\(\s*(?:false|true|0|None|Vec::new\(\)|String::new\(\))\s*\)"
|
||||
)
|
||||
|
||||
|
||||
def snake(name: str) -> str:
|
||||
name = name.lstrip("@").replace("#", "_")
|
||||
@@ -345,6 +351,60 @@ def render_tsv(fieldnames: list[str], rows: list[dict[str, str]]) -> str:
|
||||
return output.getvalue()
|
||||
|
||||
|
||||
def function_bodies(text: str) -> list[str]:
|
||||
bodies = []
|
||||
function = re.compile(r"(?m)^[ \t]*(?:pub(?:\([^)]*\))?\s+)?(?:async\s+)?fn\s+[A-Za-z_][A-Za-z0-9_]*")
|
||||
for match in function.finditer(text):
|
||||
brace = text.find("{", match.end())
|
||||
semicolon = text.find(";", match.end())
|
||||
if brace < 0 or (semicolon >= 0 and semicolon < brace):
|
||||
continue
|
||||
depth = 0
|
||||
quote = None
|
||||
escaped = False
|
||||
index = brace
|
||||
while index < len(text):
|
||||
char = text[index]
|
||||
if quote:
|
||||
if escaped:
|
||||
escaped = False
|
||||
elif char == "\\":
|
||||
escaped = True
|
||||
elif char == quote:
|
||||
quote = None
|
||||
elif char == '"':
|
||||
quote = char
|
||||
elif text.startswith("//", index):
|
||||
newline = text.find("\n", index)
|
||||
index = len(text) if newline < 0 else newline
|
||||
elif text.startswith("/*", index):
|
||||
end = text.find("*/", index + 2)
|
||||
index = len(text) if end < 0 else end + 1
|
||||
elif char == "{":
|
||||
depth += 1
|
||||
elif char == "}":
|
||||
depth -= 1
|
||||
if depth == 0:
|
||||
bodies.append(text[brace + 1 : index])
|
||||
break
|
||||
index += 1
|
||||
else:
|
||||
raise ValueError("unbalanced generated Rust function body")
|
||||
return bodies
|
||||
|
||||
|
||||
def validate_generated_shims() -> None:
|
||||
for path in sorted((ROOT / "crates").glob("*/src/generated*.rs")):
|
||||
text = path.read_text()
|
||||
if re.search(r"#\[derive\([^]]*\bDefault\b", text):
|
||||
raise ValueError(f"generated shim derives a plausible Default: {path.relative_to(ROOT)}")
|
||||
for body in function_bodies(text):
|
||||
if FAKE_BODY.search(body):
|
||||
raise ValueError(f"generated shim returns a plausible fallback: {path.relative_to(ROOT)}")
|
||||
if not any(marker in body for marker in ("unimplemented_api!", "not_implemented(", "NotImplemented::new(")):
|
||||
raise ValueError(f"generated shim function does not use the standardized failure: {path.relative_to(ROOT)}")
|
||||
|
||||
|
||||
def build_type_rows(catalog: dict) -> tuple[list[dict[str, str]], dict[str, str]]:
|
||||
rows = []
|
||||
resolved: dict[str, str] = {}
|
||||
@@ -629,6 +689,8 @@ def build_member_rows(catalog: dict, mapper: Mapper) -> list[dict[str, str]]:
|
||||
|
||||
|
||||
def validate(catalog: dict, type_rows: list[dict[str, str]], member_rows: list[dict[str, str]], mapper: Mapper) -> None:
|
||||
validate_generated_shims()
|
||||
|
||||
def unique(rows: list[dict[str, str]], field: str) -> None:
|
||||
duplicates = [value for value, count in Counter(row[field] for row in rows).items() if count > 1]
|
||||
if duplicates:
|
||||
@@ -711,7 +773,8 @@ def coverage_report(catalog: dict, type_rows: list[dict[str, str]], member_rows:
|
||||
f"- C# public members mapped: **{len(member_rows):,} / {catalog['summary']['public_member_count']:,} (100%)**",
|
||||
f"- External signature types resolved: **{len(external):,} / {len(catalog['external_types']):,} (100%)**",
|
||||
"- Duplicate C# IDs: **0**", "- Duplicate Rust destinations: **0**", "- Stale or missing catalog IDs: **0**",
|
||||
"- Unresolved referenced types: **0**", "- Platform-specific mappings: **0**", "",
|
||||
"- Unresolved referenced types: **0**", "- Platform-specific mappings: **0**",
|
||||
"- Plausible generated fallback bodies/default derives: **0**", "",
|
||||
"## Assembly representatives", "", "| Assembly | Rust crate | Members | Representative mapping |", "|---|---|---:|---|",
|
||||
]
|
||||
for assembly in catalog["assemblies"]:
|
||||
@@ -761,6 +824,8 @@ def self_check() -> None:
|
||||
assert split_top_level("A<B, C<D, E>>, F") == ["A<B, C<D, E>>", "F"]
|
||||
assert type_parts("A<B<C>, D>.Nested[]") == ("A.Nested", ["B<C>", "D"], "[]")
|
||||
assert snake("HTTPRequest2") == "http_request2"
|
||||
assert function_bodies("pub fn value() -> bool { false }") == [" false "]
|
||||
assert FAKE_BODY.search(function_bodies("pub fn value() -> bool { false; }")[0])
|
||||
|
||||
|
||||
def main() -> None:
|
||||
|
||||
@@ -128,7 +128,7 @@ def render_type(name: str, kind: str, arity: int, csharp_name: str, indent: str)
|
||||
declaration = f"pub struct {rust_name}{params}" + (";" if not marker else f"{marker};")
|
||||
return [
|
||||
f"{indent}/// `{kind}` shim for C# `{csharp_name}`; members remain intentionally unimplemented.",
|
||||
f"{indent}#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]",
|
||||
f"{indent}#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]",
|
||||
f"{indent}{declaration}",
|
||||
f"{indent}impl{('<' + ', '.join(f'T{i}' for i in range(arity)) + '>') if arity else ''} {rust_name}{('<' + ', '.join(f'T{i}' for i in range(arity)) + '>') if arity else ''} {{",
|
||||
f"{indent} pub const CSHARP_NAME: &'static str = \"{csharp_name}\";",
|
||||
|
||||
Reference in New Issue
Block a user