Crate interoptopus_backend_csharp[][src]

Expand description

Generates C# bindings for Interoptopus.

Usage

In your library or a support project add this:

use my_crate::ffi_inventory;

#[test]
fn generate_csharp_bindings() {
    use interoptopus::Interop;
    use interoptopus_backend_csharp::{Generator, CSharpWriter, Config};

    // Converts an `ffi_inventory()` into C# interop definitions.
    Generator::new(Config::default(), ffi_inventory()).write_to("Interop.cs")
}

And we might produce something like this:

using System;
using System.Runtime.InteropServices;

namespace My.Company
{
    public static class InteropClass
    {
        public const string NativeLib = "hello_world";

        /// A function which does something with the vector.
        [DllImport(NativeLib, CallingConvention = CallingConvention.Cdecl, EntryPoint = "my_game_function")]
        public static extern Vec3f32 my_game_function(ref Vec3f32 input);
    }

    [Serializable]
    [StructLayout(LayoutKind.Sequential)]
    public partial struct Vec3f32
    {
        public float x;
        public float y;
        public float z;
    }
}

Structs

Configures C# code generation.

Implements CSharpTypeConverter.

Start here, main converter implementing Interop.

Traits

Converts Interoptopus types to C# types.

Writes the C# file format, impl this trait to customize output.