2#ifndef LIBSBX_SCRIPTING_MANAGED_ASSEMBLY_HPP_
3#define LIBSBX_SCRIPTING_MANAGED_ASSEMBLY_HPP_
7#include <libsbx/utility/hashed_string.hpp>
9#include <libsbx/containers/stable_vector.hpp>
11#include <libsbx/scripting/managed/fwd.hpp>
12#include <libsbx/scripting/managed/core.hpp>
13#include <libsbx/scripting/managed/platform.hpp>
14#include <libsbx/scripting/managed/type.hpp>
16namespace sbx::scripting::managed {
18enum class assembly_load_status : std::uint8_t {
29 friend class host_instance;
34 auto get_assembly_id()
const -> std::int32_t;
36 auto get_load_status()
const -> assembly_load_status;
38 auto get_name()
const -> std::string_view;
40 auto add_internal_call(std::string_view class_name, std::string_view variable_name,
void* function_pointer) -> void;
42 auto upload_internal_calls() -> void;
44 auto get_type(std::string_view class_name)
const ->
type&;
46 auto get_types()
const ->
const std::vector<type*>&;
51 std::int32_t _assembly_id = -1;
52 assembly_load_status _load_status = assembly_load_status::unknown_error;
55 std::vector<string_type> _internal_call_name_storage;
57 std::vector<internal_call> _internal_calls;
59 std::vector<type*> _types;
69 auto load_assembly(std::string_view file_path) ->
assembly&;
71 auto load_assembly_from_memory(
const std::byte* data, std::int64_t data_length) ->
assembly&;
73 auto get_or_load_assembly(std::string_view file_path) ->
assembly&;
79 std::int32_t _context_id;
81 std::unordered_map<utility::hashed_string, std::uint32_t> _assembly_indices;
Definition: stable_vector.hpp:21
Definition: assembly.hpp:63
Definition: assembly.hpp:27
Definition: runtime.hpp:35