载入中...
搜索中...
未找到
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
29public:
30 static Snapshot& instance();
31
32 Snapshot(const Snapshot&) = delete;
33 Snapshot& operator=(const Snapshot&) = delete;
34
35 void markRoot(std::string name);
36 void unmarkRoot(const std::string& name);
37 void clearRoots();
38 std::vector<std::string> roots() const;
39
41 std::string capture(HSQUIRRELVM vm, std::string* error = nullptr) const;
42 bool restore(HSQUIRRELVM vm, const std::string& json, std::string* error = nullptr) const;
43
44 bool saveFile(HSQUIRRELVM vm, const std::string& path, std::string* error = nullptr) const;
45 bool loadFile(HSQUIRRELVM vm, const std::string& path, std::string* error = nullptr) const;
46
48 std::vector<std::string> rootsFor(HSQUIRRELVM vm) const { return resolveRoots(vm); }
49
55 bool captureState(HSQUIRRELVM vm, StateValue& out, std::string* error = nullptr) const;
56
62 bool restoreState(HSQUIRRELVM vm, const StateValue& state, std::string* error = nullptr) const;
63
65 static bool isEngineBinding(const std::string& name);
66
67private:
68 Snapshot() = default;
69
70 std::vector<std::string> resolveRoots(HSQUIRRELVM vm) const;
71
72 mutable std::vector<std::string> marked_;
73};
74
75} // namespace eve::dev
struct SQVM * HSQUIRRELVM
HSQUIRRELVM vm
Definition ECS.cpp:20
#define EVENGINE_API
宿主(eve / libmain)导出宏;插件从进程导入同一批符号。
Definition Export.h:16
std::string error
JobSystemThreadPool::State * state
const char * name
Definition RockMesh.cpp:21
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:28
std::vector< std::string > rootsFor(HSQUIRRELVM vm) const
Marked roots, or heuristic roots when none marked (script-facing).
Definition Snapshot.hpp:48
Snapshot(const Snapshot &)=delete
Snapshot & operator=(const Snapshot &)=delete