LeviLamina
Loading...
Searching...
No Matches
ScriptEngine.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated forward declare list
6// clang-format off
7namespace Scripting { class IDependencyLoader; }
8namespace Scripting { class IModuleBindingFactory; }
9namespace Scripting { class IPrinter; }
10namespace Scripting { class IRuntime; }
11namespace Scripting { class RegistryManager; }
12namespace Scripting { struct ContextConfig; }
13namespace Scripting { struct ModuleDescriptor; }
14namespace Scripting { struct ScriptContextResult; }
15namespace Scripting { struct SupportedBindingModule; }
16namespace Scripting { struct Version; }
17// clang-format on
18
19namespace Scripting {
20
21class ScriptEngine {
22public:
23 // ScriptEngine inner types define
24 using RuntimeFactory = ::std::function<::std::shared_ptr<
25 ::Scripting::IRuntime>(::Scripting::ContextConfig const&, ::std::vector<::Scripting::ModuleDescriptor> const&)>;
26
27public:
28 // member variables
29 // NOLINTBEGIN
30 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::Scripting::RegistryManager>> mRegistryManagerUP;
31 ::ll::TypedStorage<8, 8, ::Scripting::RegistryManager*> mRegistryManager;
32 ::ll::TypedStorage<
33 8,
34 64,
35 ::std::function<::std::shared_ptr<::Scripting::IRuntime>(
37 ::std::vector<::Scripting::ModuleDescriptor> const&
38 )>>
39 mRuntimeFactoryFn;
40 ::ll::TypedStorage<8, 24, ::std::vector<::std::unique_ptr<::Scripting::IModuleBindingFactory>>> mModuleFactories;
41 // NOLINTEND
42
43public:
44 // prevent constructor by default
45 ScriptEngine();
46
47public:
48 // member functions
49 // NOLINTBEGIN
50 MCAPI explicit ScriptEngine(::Scripting::RegistryManager* registryManager);
51
52 MCAPI ::Scripting::IModuleBindingFactory* _getModuleBindingFactoryByName(::std::string const& name) const;
53
54 MCAPI void addModuleBindingFactory(::std::unique_ptr<::Scripting::IModuleBindingFactory> moduleBindingFactory);
55
56 MCAPI ::Scripting::ScriptContextResult createScriptingContext(
57 ::Scripting::ContextConfig const& config,
58 ::Scripting::ModuleDescriptor const& forModule,
59 ::std::vector<::Scripting::ModuleDescriptor> const& dependencies,
62 );
63
64 MCAPI ::std::optional<::Scripting::Version>
65 getLatestVersionOfModuleWithPreRelease(::std::string const& name, ::std::string_view preRelease) const;
66
67 MCAPI ::std::optional<::Scripting::ModuleDescriptor> getModuleDescriptorByName(::std::string const& name) const;
68
69 MCAPI ::std::vector<::Scripting::SupportedBindingModule> getSupportedBindingModules() const;
70
71 MCAPI ~ScriptEngine();
72 // NOLINTEND
73
74public:
75 // constructor thunks
76 // NOLINTBEGIN
77 MCAPI void* $ctor(::Scripting::RegistryManager* registryManager);
78 // NOLINTEND
79
80public:
81 // destructor thunk
82 // NOLINTBEGIN
83 MCAPI void $dtor();
84 // NOLINTEND
85};
86
87} // namespace Scripting
Definition IDependencyLoader.h:12
Definition IModuleBindingFactory.h:16
Definition IPrinter.h:13
Definition IRuntime.h:37
Definition RegistryManager.h:12
Definition ContextConfig.h:20
Definition ModuleDescriptor.h:7
Definition ScriptContextResult.h:7
Definition SupportedBindingModule.h:7
Definition Version.h:7