载入中...
搜索中...
未找到
ScriptModule.h
浏览该文件的文档.
1#pragma once
2
3#include "common/Export.h"
4
5#include <cstdint>
6#include <memory>
7#include <optional>
8#include <string>
9#include <string_view>
10#include <vector>
11
12struct SQVM;
13
14namespace eve::script {
15
18
24
27 std::string canonicalUri;
28 std::string utf8Source;
29 std::string contentHash;
30 std::string debugOrigin;
31};
32
35public:
37 virtual ~IScriptModuleProvider() = default;
38
40 virtual ScriptModuleStatus resolve(const ScriptModuleRequest& request, std::string& canonicalUri,
41 std::string& error) = 0;
43 virtual ScriptModuleStatus load(std::string_view canonicalUri, ScriptModuleSource& source, std::string& error) = 0;
44};
45
53public:
54 using ProviderId = uint64_t;
55
57 explicit ScriptModuleResolver(SQVM* vm);
62
64 ProviderId registerProvider(std::shared_ptr<IScriptModuleProvider> provider, int priority = 0);
66 bool unregisterProvider(ProviderId id);
68 void registerDefaultProviders();
69
71 void beginCompilation(std::string_view importerUri);
80 [[nodiscard]] std::optional<std::string> takeCompilationFailure();
82 void prepareDependencies(std::string_view importerUri);
84 void instantiateDependencies(std::string_view importerUri);
86 void invalidate(std::string_view canonicalUri);
88 void reload(std::string_view canonicalUri);
90 std::vector<std::string> reloadAffected(std::string_view canonicalUri);
92 std::vector<std::string> dependencies(std::string_view importerUri) const;
94 std::vector<std::string> reverseDependencies(std::string_view canonicalUri) const;
95
97 static bool canonicalize(const ScriptModuleRequest& request, std::string& output, std::string& error);
98
99private:
100 struct Impl;
101 std::unique_ptr<Impl> impl_;
102};
103
104} // namespace eve::script
std::string output
int priority
HSQUIRRELVM vm
Definition ECS.cpp:20
#define EVENGINE_API_FOUNDATION_INLINE
仅供"只有内联成员"的类型使用的组宏:拥有者 dllexport,消费方不导入。
Definition Export.h:170
#define EVENGINE_API_FOUNDATION
每个链接组(link group)各自的导出宏。
Definition Export.h:106
const GltfImportRequest & request
std::string error
Definition Package.cpp:60
const UnitySourceAsset & source
Pluggable script source backend for directories, archives, plugins, or memory.
virtual ~IScriptModuleProvider()=default
I script module provider.
virtual ScriptModuleStatus load(std::string_view canonicalUri, ScriptModuleSource &source, std::string &error)=0
Loads UTF-8 source for a canonical URI.
virtual ScriptModuleStatus resolve(const ScriptModuleRequest &request, std::string &canonicalUri, std::string &error)=0
Resolves a specifier to a canonical URI.
Owns providers, the static dependency graph, compiled closures, and module instances.
ScriptModuleResolver & operator=(const ScriptModuleResolver &)=delete
~ScriptModuleResolver()
Script module resolver.
ScriptModuleResolver(const ScriptModuleResolver &)=delete
ScriptModuleStatus
Result of asking a provider to resolve or load a script module.
Logical module request emitted by an EveScript import declaration.
UTF-8 source and stable identity returned by a module provider.