2#ifndef LIBSBX_SCRIPTING_DETAIL_BACKEND_HPP_
3#define LIBSBX_SCRIPTING_DETAIL_BACKEND_HPP_
5#include <libsbx/scripting/managed/core.hpp>
6#include <libsbx/scripting/managed/string.hpp>
7#include <libsbx/scripting/managed/garbage_collection.hpp>
8#include <libsbx/scripting/managed/assembly.hpp>
10namespace sbx::scripting::managed::detail {
14 using set_internal_calls_fn = void(*)(
void*, std::int32_t);
15 using create_assembly_load_context_fn = std::int32_t(*)(
string);
16 using unload_assembly_load_context_fn = void(*)(std::int32_t);
17 using load_assembly_fn = std::int32_t(*)(std::int32_t,
string);
18 using load_assembly_from_memory_fn = std::int32_t(*)(std::int32_t,
const std::byte*, std::int64_t);
19 using get_last_load_status_fn = assembly_load_status(*)();
20 using get_assembly_name_fn =
string(*)(std::int32_t);
22 using get_assembly_types_fn = void(*)(std::int32_t, type_id*, std::int32_t*);
23 using get_type_id_fn = void(*)(
string, type_id*);
24 using get_full_type_name_fn =
string(*)(type_id);
25 using get_assembly_qualified_name_fn =
string(*)(type_id);
26 using get_base_type_fn = void(*)(type_id, type_id*);
27 using get_type_size_fn = std::int32_t(*)(type_id);
28 using is_type_subclass_of_fn = bool32(*)(type_id, type_id);
29 using is_type_assignable_to_fn = bool32(*)(type_id, type_id);
30 using is_type_assignable_from_fn = bool32(*)(type_id, type_id);
31 using is_type_sz_array_fn = bool32(*)(type_id);
32 using get_element_type_fn = void(*)(type_id, type_id*);
33 using get_type_methods_fn = void(*)(type_id, handle*, std::int32_t*);
34 using get_type_fields_fn = void(*)(type_id, handle*, std::int32_t*);
35 using get_type_properties_fn = void(*)(type_id, handle*, std::int32_t*);
36 using has_type_attribute_fn = bool32(*)(type_id, type_id);
37 using get_type_attributes_fn = void(*)(handle, type_id*, std::int32_t*);
38 using get_type_managed_type_fn = managed_type(*)(type_id);
40 using get_method_info_name_fn =
string(*)(handle);
41 using get_method_info_return_type_fn = void(*)(handle, type_id*);
42 using get_method_info_parameter_types_fn = void(*)(handle, type_id*, std::int32_t*);
43 using get_method_info_accessibility_fn = type_accessibility(*)(handle);
44 using get_method_info_attributes_fn = void(*)(handle, type_id*, std::int32_t*);
46 using get_field_info_name_fn =
string(*)(handle);
47 using get_field_info_type_fn = void(*)(handle, type_id*);
48 using get_field_info_accessibility_fn = type_accessibility(*)(handle);
49 using get_field_info_attributes_fn = void(*)(handle, type_id*, std::int32_t*);
51 using get_property_info_name_fn =
string(*)(handle);
52 using get_property_info_type_fn = void(*)(handle, type_id*);
53 using get_property_info_attributes_fn = void(*)(handle, type_id*, std::int32_t*);
55 using get_attribute_field_value_fn = void(*)(handle,
string,
void*);
56 using get_attribute_type_fn = void(*)(handle, type_id*);
58 using create_object_fn =
void*(*)(type_id, bool32,
const void**,
const managed_type*, std::int32_t);
59 using invoke_method_fn = void(*)(
void*,
string,
const void**,
const managed_type*, std::int32_t);
60 using invoke_method_return_fn = void(*)(
void*,
string,
const void**,
const managed_type*, std::int32_t,
void*);
61 using invoke_static_method_fn = void(*)(type_id,
string,
const void**,
const managed_type*, std::int32_t);
62 using invoke_static_method_return_fn = void(*)(type_id,
string,
const void**,
const managed_type*, std::int32_t,
void*);
63 using set_field_value_fn = void(*)(
void*,
string,
const void*);
64 using get_field_value_fn = void(*)(
void*,
string,
void*);
65 using set_property_value_fn = void(*)(
void*,
string,
const void*);
66 using get_property_value_fn = void(*)(
void*,
string,
void*);
67 using destroy_object_fn = void(*)(
void*);
68 using get_object_type_id_fn = void(*)(
void*, std::int32_t*);
70 using collect_garbage_fn = void(*)(std::int32_t, garbage_collection::mode, bool32, bool32);
71 using wait_for_pending_finalizers_fn = void(*)();
73 set_internal_calls_fn set_internal_calls{
nullptr};
74 load_assembly_fn load_assembly{
nullptr};
75 load_assembly_from_memory_fn load_assembly_from_memory{
nullptr};
76 unload_assembly_load_context_fn unload_assembly_load_context{
nullptr};
77 get_last_load_status_fn get_last_load_status{
nullptr};
78 get_assembly_name_fn get_assembly_name{
nullptr};
80 get_assembly_types_fn get_assembly_types{
nullptr};
81 get_type_id_fn get_type_id{
nullptr};
82 get_full_type_name_fn get_full_type_name{
nullptr};
83 get_assembly_qualified_name_fn get_assembly_qualified_name{
nullptr};
84 get_base_type_fn get_base_type{
nullptr};
85 get_type_size_fn get_type_size{
nullptr};
86 is_type_subclass_of_fn is_type_subclass_of{
nullptr};
87 is_type_assignable_to_fn is_type_assignable_to{
nullptr};
88 is_type_assignable_from_fn is_type_assignable_from{
nullptr};
89 is_type_sz_array_fn is_type_sz_array{
nullptr};
90 get_element_type_fn get_element_type{
nullptr};
91 get_type_methods_fn get_type_methods{
nullptr};
92 get_type_fields_fn get_type_fields{
nullptr};
93 get_type_properties_fn get_type_properties{
nullptr};
94 has_type_attribute_fn has_type_attribute{
nullptr};
95 get_type_attributes_fn get_type_attributes{
nullptr};
96 get_type_managed_type_fn get_type_managed_type{
nullptr};
98 get_method_info_name_fn get_method_info_name{
nullptr};
99 get_method_info_return_type_fn get_method_info_return_type{
nullptr};
100 get_method_info_parameter_types_fn get_method_info_parameter_types{
nullptr};
101 get_method_info_accessibility_fn get_method_info_accessibility{
nullptr};
102 get_method_info_attributes_fn get_method_info_attributes{
nullptr};
104 get_field_info_name_fn get_field_info_name{
nullptr};
105 get_field_info_type_fn get_field_info_type{
nullptr};
106 get_field_info_accessibility_fn get_field_info_accessibility{
nullptr};
107 get_field_info_attributes_fn get_field_info_attributes{
nullptr};
109 get_property_info_name_fn get_property_info_name{
nullptr};
110 get_property_info_type_fn get_property_info_type{
nullptr};
111 get_property_info_attributes_fn get_property_info_attributes{
nullptr};
113 get_attribute_field_value_fn get_attribute_field_value{
nullptr};
114 get_attribute_type_fn get_attribute_type{
nullptr};
116 create_object_fn create_object{
nullptr};
117 create_assembly_load_context_fn create_assembly_load_context{
nullptr};
118 invoke_method_fn invoke_method{
nullptr};
119 invoke_method_return_fn invoke_method_return{
nullptr};
120 invoke_static_method_fn invoke_static_method{
nullptr};
121 invoke_static_method_return_fn invoke_static_method_return{
nullptr};
122 set_field_value_fn set_field_value{
nullptr};
123 get_field_value_fn get_field_value{
nullptr};
124 set_property_value_fn set_property_value{
nullptr};
125 get_property_value_fn get_property_value{
nullptr};
126 destroy_object_fn destroy_object{
nullptr};
127 get_object_type_id_fn get_object_type_id{
nullptr};
129 collect_garbage_fn collect_garbage =
nullptr;
130 wait_for_pending_finalizers_fn wait_for_pending_finalizers =
nullptr;
Definition: string.hpp:11
Definition: backend.hpp:12