载入中...
搜索中...
未找到
Snapshot.hpp
浏览该文件的文档.
1#pragma once
2
3#include "common/Export.h"
4#include "common/StateValue.h"
5
6#include <string>
7#include <unordered_set>
8#include <vector>
9
10struct SQVM;
11typedef struct SQVM* HSQUIRRELVM;
12
13namespace eve::dev {
14
30public:
31 static Snapshot& instance();
32
33 Snapshot(const Snapshot&) = delete;
34 Snapshot& operator=(const Snapshot&) = delete;
35
37 void markRoot(std::string name);
39 void unmarkRoot(const std::string& name);
41 void markTransientRoot(std::string name);
43 void unmarkTransientRoot(const std::string& name);
45 void clearRoots();
47 std::vector<std::string> roots() const;
49 std::vector<std::string> transientRoots() const;
50
52 void setRootPolicies(std::vector<std::string> persistent, std::vector<std::string> transient);
53
55 std::string capture(HSQUIRRELVM vm, std::string* error = nullptr) const;
56 bool restore(HSQUIRRELVM vm, const std::string& json, std::string* error = nullptr) const;
57
58 bool saveFile(HSQUIRRELVM vm, const std::string& path, std::string* error = nullptr) const;
59 bool loadFile(HSQUIRRELVM vm, const std::string& path, std::string* error = nullptr) const;
60
62 std::vector<std::string> rootsFor(HSQUIRRELVM vm) const { return resolveRoots(vm); }
63
69 bool captureState(HSQUIRRELVM vm, StateValue& out, std::string* error = nullptr) const;
70
76 bool restoreState(HSQUIRRELVM vm, const StateValue& state, std::string* error = nullptr) const;
77
79 static bool isEngineBinding(const std::string& name);
80
81private:
82 Snapshot() = default;
83
84 std::vector<std::string> resolveRoots(HSQUIRRELVM vm) const;
85
86 mutable std::vector<std::string> marked_;
87 mutable std::vector<std::string> transient_;
88};
89
90} // namespace eve::dev
struct SQVM * HSQUIRRELVM
HSQUIRRELVM vm
Definition ECS.cpp:20
#define EVENGINE_API_FOUNDATION
每个链接组(link group)各自的导出宏。
Definition Export.h:106
std::string name
std::string error
Definition Package.cpp:60
std::string path
Definition PlayHost.cpp:110
struct SQVM * HSQUIRRELVM
Definition Snapshot.hpp:11
JSON-compatible state value tree used by state hot reload.
Definition StateValue.h:20
Script + native state snapshot for state hot reload.
Definition Snapshot.hpp:29
std::vector< std::string > rootsFor(HSQUIRRELVM vm) const
Marked roots, or heuristic roots when none marked (script-facing).
Definition Snapshot.hpp:62
Snapshot(const Snapshot &)=delete
Snapshot & operator=(const Snapshot &)=delete