载入中...
搜索中...
未找到
ConversationPersistence.cpp
浏览该文件的文档.
64 const auto first = std::find_if_not(text.begin(), text.end(), [](unsigned char c) { return std::isspace(c); });
65 const auto last = std::find_if_not(text.rbegin(), text.rend(), [](unsigned char c) { return std::isspace(c); });
78 eve::Diagnostic::error(eve::DiagnosticCode::SerializationError, e.displayText(), "save", {}, "dialogue.persistence"));
81 eve::Diagnostic::error(eve::DiagnosticCode::SerializationError, e.what(), "save", {}, "dialogue.persistence"));
90 eve::Diagnostic::error(eve::DiagnosticCode::ParseError, "conversation: save JSON root must be an object", "save", {}, "dialogue.persistence"));
94 eve::Diagnostic::error(eve::DiagnosticCode::ParseError, e.displayText(), "save", {}, "dialogue.persistence"));
97 eve::Diagnostic::error(eve::DiagnosticCode::ParseError, e.what(), "save", {}, "dialogue.persistence"));
101eve::Result<void> ConversationSaveMigrations::registerMigration(const std::string& assetId, int fromVersion,
106 eve::Diagnostic::error(eve::DiagnosticCode::InvalidArgument, "conversation: migration requires asset IDs and a non-negative version", "migration", {}, "dialogue.persistence"));
113 if (pos == std::string::npos || trim(item.substr(0, pos)).empty() || trim(item.substr(pos + 1)).empty())
115 eve::Diagnostic::error(eve::DiagnosticCode::InvalidArgument, "conversation: node migration must use old:new pairs", "migration.nodeMap", {}, "dialogue.persistence"));
128eve::Result<StateValue> ConversationSaveMigrations::migrate(const StateValue& state, const Resolver& resolve) const {
139 if (!asset || !asset->isString() || !version || !version->isInt() || !node || !node->isString())
168 eve::Diagnostic::error(eve::DiagnosticCode::SerializationError, "conversation: state is missing active", "save.active", {}, "dialogue.persistence"));
174 eve::Diagnostic::error(eve::DiagnosticCode::SerializationError, "conversation: state frames are malformed", "save.frames", {}, "dialogue.persistence"));
177 eve::Diagnostic::error(eve::DiagnosticCode::UnknownVersion, error, "save.current", {}, "dialogue.persistence"));
181 eve::Diagnostic::error(eve::DiagnosticCode::UnknownVersion, error, "save.stack", {}, "dialogue.persistence"));
static Diagnostic error(DiagnosticCode code, std::string message, std::string path={}, DiagnosticDetails details={}, std::string source={})
Construct an error diagnostic with the standard error severity.
Definition Diagnostic.h:125
static Result failure(Status status)
Construct a failed result from a structured status.
Definition Result.h:175
int64_t asInt() const
Integer payload; only valid when kind() == Kind::Int.
Definition StateValue.h:54
const std::string & asString() const
String payload; only valid when kind() == Kind::String.
Definition StateValue.h:60
@ Float
@ String
@ Array
@ Object
const StateValue * find(const std::string &key) const
Look up key; nullptr when absent.
Definition StateValue.cpp:74
StateValue & at(size_t index)
Indexed element (bounds-checked); only valid on arrays.
Definition StateValue.h:67
std::function< const eve::dnut::SequenceAsset *(const std::string &)> Resolver
Definition ConversationPersistence.h:23
eve::Result< void > registerMigration(const std::string &assetId, int fromVersion, const std::string ¤tAssetId, const std::string &nodeMap)
Register a direct migration from one saved asset version to the currently loaded asset.
Definition ConversationPersistence.cpp:101
eve::Result< StateValue > migrate(const StateValue &state, const Resolver &resolve) const
Migrate the current frame and every saved call frame transactionally.
Definition ConversationPersistence.cpp:128
Definition ConversationAuthoring.cpp:12
eve::Result< std::string > conversationStateToJson(const StateValue &state)
Serialize a dialogue state tree as JSON.
Definition ConversationPersistence.cpp:71
eve::Result< StateValue > conversationStateFromJson(const std::string &json)
Parse a JSON dialogue state tree.
Definition ConversationPersistence.cpp:85
@ InvalidArgument
@ UnknownVersion
@ SerializationError
@ ParseError
Immutable, parameterized and versioned compiled sequence.
Definition SequenceAsset.h:77