载入中...
搜索中...
未找到
DefinitionTarget.cpp
浏览该文件的文档.
21 const auto first = std::find_if_not(json.begin(), json.end(), [](unsigned char c) { return std::isspace(c); });
23 const auto last = std::find_if_not(json.rbegin(), json.rend(), [](unsigned char c) { return std::isspace(c); });
41 return eve::editing::failed<void>(EditorStatus::Rejected, RuleId("editor.definition.operation-mismatch"),
51 return eve::editing::failed<void>(EditorStatus::Rejected, RuleId("editor.definition.invalid-field-operation"),
63 return eve::editing::failed<void>(EditorStatus::Rejected, RuleId("editor.definition.invalid-json-shape"),
73 return eve::editing::failed<void>(EditorStatus::Rejected, RuleId("editor.definition.invalid-version"),
81Result<void> DefinitionDocument::setReferences(std::vector<DefinitionReferenceField> references) {
97 return eve::editing::failed<DomainOperation>(EditorStatus::Rejected, RuleId("editor.definition.empty-field"),
111 operation.payload = EditorValue::Object{{"field", fieldName}, {"value", value}, {"present", true}};
179 const auto* references = referencesValue ? referencesValue->getIf<EditorValue::Array>() : nullptr;
180 if (!schema || *schema != 1 || !type || type->empty() || !id || id->empty() || !version || *version <= 0 ||
182 return eve::editing::failed<void>(EditorStatus::Rejected, RuleId("editor.definition.invalid-snapshot"),
195 return eve::editing::failed<void>(EditorStatus::Rejected, RuleId("editor.definition.invalid-reference"),
201 return eve::editing::failed<void>(EditorStatus::Rejected, RuleId("editor.definition.invalid-snapshot"),
bool ok() const noexcept
Whether this result represents a non-failure outcome.
Definition Result.h:480
UUID-backed identifier adapter for legacy textual boundaries.
Definition Identity.h:314
UI-neutral versioned definition asset and cross-reference model.
Definition DefinitionTarget.h:35
std::vector< EditorDiagnostic > validate(const SchemaValidator &schema, const ReferenceResolver &references) const
Run schema and cross-reference diagnostics without mutating content.
Definition DefinitionTarget.cpp:121
EditorValue snapshotValue() const
Capture deterministic content for DocumentService persistence.
Definition DefinitionTarget.cpp:157
Result< void > setReferences(std::vector< DefinitionReferenceField > references)
Replace editor-extracted cross-reference fields.
Definition DefinitionTarget.cpp:81
Result< void > setVersion(int version)
Replace the schema version with a positive value.
Definition DefinitionTarget.cpp:71
DefinitionDocument(std::string type, std::string id, int version=1)
Construct an empty JSON-object definition with stable identity.
Definition DefinitionTarget.cpp:31
std::function< std::vector< EditorDiagnostic >(const std::string &type, int version, const std::string &json)> SchemaValidator
Definition DefinitionTarget.h:40
Result< DomainOperation > makeSetField(const std::string &field, const EditorValue &value) const
Plan a reversible top-level field assignment from a schema form.
Definition DefinitionTarget.cpp:94
Result< void > applyDomainOperation(const DomainOperation &operation) override
Applies domain operation.
Definition DefinitionTarget.cpp:39
Result< void > setJson(std::string json)
Atomically replace canonical payload text after basic JSON-shape validation.
Definition DefinitionTarget.cpp:61
std::function< bool(const std::string &type, const std::string &id)> ReferenceResolver
Definition DefinitionTarget.h:37
void bumpRevision()
Advance the revision without touching the dirty region.
Definition EditableTarget.h:179
Revision revisionValue() const noexcept
Return the revision as the shared protocol revision type.
Definition EditableTarget.h:169
void widenDirty()
Mark an unknown area dirty without advancing the revision.
Definition EditableTarget.h:177
Deterministic owning value tree shared by authoring hosts.
Definition EditingValue.h:19
Definition DefinitionForm.h:12
std::string editorValueToJson(const EditorValue &value)
Serialize an EditorValue to deterministic compact JSON.
Definition EditingValueJson.cpp:346
Result< EditorValue > editorValueFromJson(const std::string &json)
Parse JSON into the pointer-free EditorValue protocol tree.
Definition EditingValueJson.cpp:352
Diagnostic ruleDiagnostic(eve::DiagnosticCode code, RuleId rule, DiagnosticSeverity severity, std::string message)
Build a common diagnostic carrying an open editing rule identity.
Definition EditingResult.h:25
const EditorValue * field(const EditorValue &value, const char *name)
Definition RoadNetworkEditTarget.cpp:15
@ InvalidArgument
@ NotFound
@ PreconditionViolation
Definition Container.h:602
Stable cross-definition reference exposed to picker and validation hosts.
Definition DefinitionTarget.h:25
Stable discovery metadata exposed by every editable target.
Definition EditableTarget.h:39