载入中...
搜索中...
未找到
DefinitionTarget.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
7
8#include <functional>
9#include <string>
10#include <vector>
11
12namespace eve::definitions {
13class DefinitionRegistry;
14}
15
17
18using namespace eve::editing;
22using editing::Result;
23
26 std::string path;
27 std::string type;
28 std::string id;
29 bool required = true;
30};
31
34 public virtual IEditableTarget,
36public:
37 using ReferenceResolver = std::function<bool(const std::string& type, const std::string& id)>;
38 using SchemaValidator = std::function<std::vector<EditorDiagnostic>(const std::string& type,
39 int version,
40 const std::string& json)>;
41
43 DefinitionDocument(std::string type, std::string id, int version = 1);
45 TargetId targetId() const override { return TargetId(targetId_); }
47 TargetDescriptor describe() const override;
49 void* queryCapability(const CapabilityId&) override { return nullptr; }
51 Result<void> applyDomainOperation(const DomainOperation& operation) override;
53 Result<void> setJson(std::string json);
55 Result<void> setVersion(int version);
57 Result<void> setReferences(std::vector<DefinitionReferenceField> references);
59 Result<DomainOperation> makeSetField(const std::string& field,
60 const EditorValue& value) const;
62 std::vector<EditorDiagnostic> validate(const SchemaValidator& schema,
63 const ReferenceResolver& references) const;
65 EditorValue snapshotValue() const;
67 Result<void> loadSnapshot(const EditorValue& snapshot);
68
70 const std::string& type() const { return type_; }
72 const std::string& id() const { return id_; }
74 int version() const { return version_; }
76 const std::string& json() const { return json_; }
78 editing::Revision documentRevision() const { return revisionValue(); }
79
80private:
81 std::string type_;
82 std::string id_;
83 std::string targetId_;
84 int version_ = 1;
85 std::string json_ = "{}";
86 std::vector<DefinitionReferenceField> references_;
87};
88
91public:
93 Result<void> publish(const DefinitionDocument& document,
95 bool replaceExisting = false) const;
96};
97
98} // namespace eve::definitions_editing
ActionParameterOperation operation
double value
#define EVENGINE_API_BACKENDS
Definition Export.h:108
Move-only operation result carrying either a value or Status.
Definition Result.h:155
UUID-backed identifier adapter for legacy textual boundaries.
Definition Identity.h:314
Deterministic registry of topic-neutral, versioned JSON definitions.
Definition Definitions.h:58
UI-neutral versioned definition asset and cross-reference model.
const std::string & json() const
Return JSON payload text.
int version() const
Return schema version.
void * queryCapability(const CapabilityId &) override
Query an optional target capability.
const std::string & type() const
Return definition type/schema id.
const std::string & id() const
Return stable definition id.
editing::Revision documentRevision() const
Return current editor revision.
std::function< std::vector< EditorDiagnostic >(const std::string &type, int version, const std::string &json)> SchemaValidator
TargetId targetId() const override
Target id.
std::function< bool(const std::string &type, const std::string &id)> ReferenceResolver
Optional bridge publishing a validated definition to DefinitionRegistry.
Dirty region and revision shared by every editable document target.
Editable-target capability that applies owning domain operations.
IEditableTarget public API.
Deterministic owning value tree shared by authoring hosts.
eve::editing::Diagnostic EditorDiagnostic
std::uint64_t Revision
eve::Diagnostic Diagnostic
eve::StatusCode Status
StatusCode
Stable outcome category for an operation.
Definition Status.h:27
Stable cross-definition reference exposed to picker and validation hosts.
DomainOperation public API.
Stable discovery metadata exposed by every editable target.