Exteor/include/xtr/doc/RSFacade.h
2024-06-07 20:30:06 +03:00

63 lines
2.4 KiB
C++

#pragma once
#include "xtr/doc/RSFormDoc.h"
#include "xtr/doc/RSModelDoc.h"
namespace xtr::doc {
//! RS editing Facade
class RSFacade {
private:
bool isModel{ false };
RSFormDoc* schemaDoc{};
RSModelDoc* modelDoc{};
public:
explicit RSFacade(RSFormDoc& doc) noexcept
: isModel{ false }, schemaDoc{ &doc } {} // NOLINT(modernize-use-default-member-init)
explicit RSFacade(RSModelDoc& doc) noexcept
: isModel{ true }, modelDoc{ &doc } {}
RSFacade() noexcept = default;
RSFacade(const RSFacade&) noexcept = default;
RSFacade& operator=(const RSFacade&) noexcept = default;
RSFacade(RSFacade&&) noexcept = default;
RSFacade& operator=(RSFacade&&) noexcept = default;
public:
[[nodiscard]] bool IsModel() const noexcept { return isModel; }
[[nodiscard]] SelectableDoc& Document() noexcept;
[[nodiscard]] const ccl::semantic::RSCore& Core() const noexcept;
[[nodiscard]] ccl::semantic::RSForm& EditSchema() noexcept;
[[nodiscard]] const ccl::semantic::RSForm& Schema() const noexcept;
[[nodiscard]] ccl::semantic::RSModel& EditModel() noexcept;
[[nodiscard]] const ccl::semantic::RSModel& Model() const noexcept;
[[nodiscard]] const ccl::semantic::Thesaurus& Texts() const noexcept;
[[nodiscard]] const ccl::semantic::Schema& RSLang() const noexcept;
[[nodiscard]] const ccl::semantic::CstList& List() const noexcept;
[[nodiscard]] bool Contains(EntityUID entity) const;
[[nodiscard]] const ccl::semantic::RSConcept& GetRS(EntityUID entity) const;
[[nodiscard]] const ccl::semantic::TextConcept& GetText(EntityUID entity) const;
[[nodiscard]] const ccl::semantic::ParsingInfo& GetParse(EntityUID entity) const;
void SetComment(const std::string& newComment);
ccl::EntityUID Emplace(ccl::semantic::CstType type, const std::string& definition = {});
ccl::VectorOfEntities InsertCopy(const std::vector<ccl::semantic::ConceptRecord>& input);
bool MoveBefore(EntityUID what, ccl::semantic::ListIterator iWhere);
bool SetAliasFor(EntityUID target, const std::string& newName, bool substitue = true);
bool SetExpressionFor(EntityUID target, const std::string& expression);
bool SetTermFor(EntityUID target, const std::string& termRef);
bool SetTermFormFor(EntityUID target, const std::string& termRef, const ccl::lang::Morphology& form);
bool SetDefinitionFor(EntityUID target, const std::string& textDef);
bool SetConventionFor(EntityUID target, const std::string& convention);
void ResetAliases();
};
} // namespace xtr::doc