interoptopus_backend_c 0.7.1

Generates C bindings.
Documentation
// Automatically generated by Interoptopus.

#ifndef interoptopus_generated
#define interoptopus_generated

#ifdef __cplusplus
extern "C" {
#endif

#include <stdint.h>
#include <stdbool.h>



const uint8_t MY_LIBRARY_U8 = 255;
const float MY_LIBRARY_F32_MIN_POSITIVE = 0.000000000000000000000000000000000000011754944;
const int32_t MY_LIBRARY_COMPUTED_I32 = -2147483647;

typedef enum my_library_enumdocumented
    {
    MY_LIBRARY_ENUMDOCUMENTED_A = 0,
    MY_LIBRARY_ENUMDOCUMENTED_B = 1,
    MY_LIBRARY_ENUMDOCUMENTED_C = 2,
    } my_library_enumdocumented;

typedef enum my_library_enumrenamed
    {
    MY_LIBRARY_ENUMRENAMED_X = 0,
    } my_library_enumrenamed;

typedef struct my_library_generic2u8 my_library_generic2u8;
typedef struct my_library_generic3 my_library_generic3;
typedef struct my_library_generic4 my_library_generic4;
typedef struct my_library_opaque my_library_opaque;
typedef struct my_library_simpleservice my_library_simpleservice;
typedef struct my_library_empty my_library_empty;

typedef enum my_library_ffierror
    {
    MY_LIBRARY_FFIERROR_OK = 0,
    MY_LIBRARY_FFIERROR_NULL = 100,
    MY_LIBRARY_FFIERROR_PANIC = 200,
    MY_LIBRARY_FFIERROR_FAIL = 300,
    } my_library_ffierror;

typedef struct my_library_extratypef32
    {
    float x;
    } my_library_extratypef32;

typedef struct my_library_inner
    {
    float x;
    } my_library_inner;

typedef struct my_library_phantomu8
    {
    uint32_t x;
    } my_library_phantomu8;

typedef struct my_library_someforeigntype
    {
    uint32_t x;
    } my_library_someforeigntype;

typedef struct my_library_structdocumented
    {
    float x;
    } my_library_structdocumented;

typedef struct my_library_structrenamed
    {
    my_library_enumrenamed e;
    } my_library_structrenamed;

typedef struct my_library_tupled
    {
    uint8_t x0;
    } my_library_tupled;

typedef struct my_library_useasciistringpattern
    {
    uint8_t* ascii_string;
    } my_library_useasciistringpattern;

typedef struct my_library_vec
    {
    double x;
    double z;
    } my_library_vec;

typedef struct my_library_vec1
    {
    float x;
    float y;
    } my_library_vec1;

typedef struct my_library_vec2
    {
    double x;
    double z;
    } my_library_vec2;

typedef struct my_library_vec3f32
    {
    float x;
    float y;
    float z;
    } my_library_vec3f32;

typedef struct my_library_visibility1
    {
    uint8_t pblc;
    uint8_t prvt;
    } my_library_visibility1;

typedef struct my_library_visibility2
    {
    uint8_t pblc1;
    uint8_t pblc2;
    } my_library_visibility2;

typedef struct my_library_weird1u32
    {
    uint32_t x;
    } my_library_weird1u32;

typedef uint8_t (*my_library_fptr_fn_u8_rval_u8)(uint8_t x0);

typedef uint32_t (*my_library_fptr_fn_u32_rval_u32)(uint32_t x0);

typedef struct my_library_array
    {
    uint8_t data[16];
    } my_library_array;

typedef struct my_library_genericu32
    {
    uint32_t* x;
    } my_library_genericu32;

typedef struct my_library_genericu8
    {
    uint8_t* x;
    } my_library_genericu8;

typedef struct my_library_weird2u8
    {
    uint8_t t;
    uint8_t a[5];
    uint8_t* r;
    } my_library_weird2u8;

typedef my_library_tupled (*my_library_fptr_fn_Tupled_rval_Tupled)(my_library_tupled x0);

typedef bool (*my_library_fptr_fn_pmut_i64_rval_bool)(int64_t* x0);

typedef struct my_library_slicebool
    {
    uint8_t* data;
    uint64_t len;
    } my_library_slicebool;

typedef struct my_library_sliceu32
    {
    uint32_t* data;
    uint64_t len;
    } my_library_sliceu32;

typedef struct my_library_sliceu8
    {
    uint8_t* data;
    uint64_t len;
    } my_library_sliceu8;

typedef struct my_library_slicemutu8
    {
    uint8_t* data;
    uint64_t len;
    } my_library_slicemutu8;

typedef struct my_library_optioninner
    {
    my_library_inner t;
    uint8_t is_some;
    } my_library_optioninner;

typedef struct my_library_myapiv1
    {
    my_library_fptr_fn_pmut_i64_rval_bool ref_mut_option;
    my_library_fptr_fn_Tupled_rval_Tupled tupled;
    } my_library_myapiv1;

typedef struct my_library_slicevec3f32
    {
    my_library_vec3f32* data;
    uint64_t len;
    } my_library_slicevec3f32;

typedef uint8_t (*my_library_fptr_fn_Sliceu8_rval_u8)(my_library_sliceu8 x0);

typedef void (*my_library_fptr_fn_SliceMutu8)(my_library_slicemutu8 x0);

typedef my_library_vec3f32 (*my_library_fptr_fn_SliceVec3f32_rval_Vec3f32)(my_library_slicevec3f32 x0);


void primitive_void();
void primitive_void2();
bool primitive_bool(bool x);
uint8_t primitive_u8(uint8_t x);
uint16_t primitive_u16(uint16_t x);
uint32_t primitive_u32(uint32_t x);
uint64_t primitive_u64(uint64_t x);
int8_t primitive_i8(int8_t x);
int16_t primitive_i16(int16_t x);
int32_t primitive_i32(int32_t x);
int64_t primitive_i64(int64_t x);
int64_t many_args_5(int64_t x0, int64_t x1, int64_t x2, int64_t x3, int64_t x4);
int64_t many_args_10(int64_t x0, int64_t x1, int64_t x2, int64_t x3, int64_t x4, int64_t x5, int64_t x6, int64_t x7, int64_t x8, int64_t x9);
int64_t* ptr(int64_t* x);
int64_t* ptr_mut(int64_t* x);
int64_t** ptr_ptr(int64_t** x);
int64_t* ref_simple(int64_t* x);
int64_t* ref_mut_simple(int64_t* x);
bool ref_option(int64_t* x);
bool ref_mut_option(int64_t* x);
my_library_tupled tupled(my_library_tupled x);
my_library_ffierror complex_args_1(my_library_vec3f32 _a, my_library_empty* _b);
my_library_opaque* complex_args_2(my_library_someforeigntype _cmplx);
uint8_t callback(my_library_fptr_fn_u8_rval_u8 callback, uint8_t value);
uint32_t generic_1a(my_library_genericu32 x, my_library_phantomu8 _y);
uint8_t generic_1b(my_library_genericu8 x, my_library_phantomu8 _y);
uint8_t generic_1c(my_library_genericu8* _x, my_library_genericu8* y);
uint8_t generic_2(my_library_generic2u8* x);
uint8_t generic_3(my_library_generic3* x);
uint8_t generic_4(my_library_generic4* x);
uint8_t array_1(my_library_array x);
my_library_enumdocumented documented(my_library_structdocumented _x);
my_library_vec1 ambiguous_1(my_library_vec1 x);
my_library_vec2 ambiguous_2(my_library_vec2 x);
bool ambiguous_3(my_library_vec1 x, my_library_vec2 y);
my_library_vec namespaced_type(my_library_vec x);
my_library_ffierror panics();
my_library_enumrenamed renamed(my_library_structrenamed x);
void sleep(uint64_t millis);
bool weird_1(my_library_weird1u32 _x, my_library_weird2u8 _y);
void visibility(my_library_visibility1 _x, my_library_visibility2 _y);
uint32_t pattern_ascii_pointer_1(uint8_t* x);
uint32_t pattern_ascii_pointer_len(uint8_t* x, my_library_useasciistringpattern y);
uint32_t pattern_ffi_slice_1(my_library_sliceu32 ffi_slice);
my_library_vec3f32 pattern_ffi_slice_2(my_library_slicevec3f32 ffi_slice, int32_t i);
void pattern_ffi_slice_3(my_library_slicemutu8 slice, my_library_fptr_fn_SliceMutu8 callback);
uint8_t pattern_ffi_slice_delegate(my_library_fptr_fn_Sliceu8_rval_u8 callback);
my_library_vec3f32 pattern_ffi_slice_delegate_huge(my_library_fptr_fn_SliceVec3f32_rval_Vec3f32 callback);
my_library_optioninner pattern_ffi_option_1(my_library_optioninner ffi_slice);
my_library_inner pattern_ffi_option_2(my_library_optioninner ffi_slice);
uint8_t pattern_ffi_bool(uint8_t ffi_bool);
void pattern_my_api_init_v1(my_library_myapiv1* api);
uint64_t pattern_api_guard();
uint32_t pattern_callback_1(my_library_fptr_fn_u32_rval_u32 callback, uint32_t x);
my_library_ffierror simple_service_new_with(my_library_simpleservice** context, uint32_t some_value);
my_library_ffierror simple_service_simple_service_destroy(my_library_simpleservice** context);
my_library_ffierror simple_service_method_result(my_library_simpleservice* context, uint32_t _anon1);
uint32_t simple_service_method_value(my_library_simpleservice* context, uint32_t x);
void simple_service_method_void(my_library_simpleservice* context);
uint8_t simple_service_method_mut_self(my_library_simpleservice* context, my_library_sliceu8 slice);
void simple_service_method_mut_self_void(my_library_simpleservice* context, my_library_slicebool _slice);
uint8_t simple_service_method_mut_self_ref(my_library_simpleservice* context, uint8_t* x, uint8_t* _y);
uint8_t simple_service_method_mut_self_ref_slice(my_library_simpleservice* context, uint8_t* x, uint8_t* _y, my_library_sliceu8 _slice);
uint8_t simple_service_method_mut_self_ref_slice_limited(my_library_simpleservice* context, uint8_t* x, uint8_t* _y, my_library_sliceu8 _slice, my_library_sliceu8 _slice2);
my_library_ffierror simple_service_method_mut_self_ffi_error(my_library_simpleservice* context, my_library_slicemutu8 _slice);

#ifdef __cplusplus
}
#endif

#endif /* interoptopus_generated */