1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
//! A reference project for [Interoptopus](https://github.com/ralfbiedert/interoptopus).
//!
//! This project tries to use every Interoptopus feature at least once.
//! When submitting new features or making changes to existing ones the types and functions in
//! here will ensure existing backends still work as expected.
//!
//! Note, many items here are deliberately not documented as testing how and if documentation
//! is generated is part of the test.

use interoptopus::pattern_class;

pub mod constants;
pub mod functions;
pub mod types;

interoptopus::inventory_function!(
    ffi_inventory,
    [constants::C1, constants::C2, constants::C3],
    [
        functions::primitive_void,
        functions::primitive_void2,
        functions::primitive_bool,
        functions::primitive_u8,
        functions::primitive_u16,
        functions::primitive_u32,
        functions::primitive_u64,
        functions::primitive_i8,
        functions::primitive_i16,
        functions::primitive_i32,
        functions::primitive_i64,
        functions::ptr,
        functions::ptr_mut,
        functions::ptr_ptr,
        functions::ptr_simple,
        functions::ptr_simple_mut,
        functions::ptr_option,
        functions::ptr_option_mut,
        functions::complex_1,
        functions::complex_2,
        functions::callback,
        functions::generic,
        functions::documented,
        functions::pattern_ascii_pointer,
        functions::pattern_class_create,
        functions::pattern_class_method,
        functions::pattern_class_destroy,
        functions::pattern_class_method_success_enum_ok,
        functions::pattern_class_method_success_enum_fail,
        functions::pattern_ffi_slice,
        functions::pattern_ffi_slice_delegate,
        functions::ambiguous_1,
        functions::ambiguous_2,
        functions::ambiguous_3,
        functions::namespaced_type
    ],
    [my_class_pattern_context]
);

pattern_class!(
    my_class_pattern_context,
    functions::pattern_class_create,
    functions::pattern_class_destroy,
    [
        functions::pattern_class_method,
        functions::pattern_class_method_success_enum_ok,
        functions::pattern_class_method_success_enum_fail
    ]
);