From f90a9bf51f300dd277071b1461d00411d7c21b89 Mon Sep 17 00:00:00 2001 From: Andreas Stöckel Date: Thu, 22 Jan 2015 02:45:57 +0100 Subject: Rethought task of the Project class: Only keeps track of the included documents -- does not have references to typesystems, domains etc. (this allows instances of these classes to be freed as soon as no document refers to them). Project should be a parent of Document. Project should resolve documents as composita (this allows to have between-document references). --- src/core/model/Project.cpp | 38 +++++++------------------------------- 1 file changed, 7 insertions(+), 31 deletions(-) (limited to 'src/core/model/Project.cpp') diff --git a/src/core/model/Project.cpp b/src/core/model/Project.cpp index fc08660..56a3af2 100644 --- a/src/core/model/Project.cpp +++ b/src/core/model/Project.cpp @@ -38,9 +38,7 @@ Project::Project(Manager &mgr) bool Project::doValidate(Logger &logger) const { - return continueValidation(documents, logger) & - continueValidation(domains, logger) & - continueValidation(typesystems, logger); + return continueValidation(documents, logger); } Rooted Project::getSystemTypesystem() @@ -50,58 +48,36 @@ Rooted Project::getSystemTypesystem() Rooted Project::createTypesystem(const std::string &name) { - Rooted typesystem{ + return Rooted{ new Typesystem{getManager(), systemTypesystem, name}}; - addTypesystem(typesystem); - return typesystem; -} - -void Project::addTypesystem(Handle typesystem) -{ - invalidate(); - typesystems.push_back(typesystem); } Rooted Project::createDocument(const std::string &name) { - Rooted document{new Document(getManager(), name)}; + return Rooted document{new Document(getManager(), name)}; addDocument(document); return document; } -void Project::addDocument(Handle document) -{ - invalidate(); - documents.push_back(document); -} - Rooted Project::createDomain(const std::string &name) { - Rooted domain{new Domain(getManager(), systemTypesystem, name)}; - addDomain(domain); - return domain; + return Rooted{new Domain(getManager(), systemTypesystem, name)}; } -void Project::addDomain(Handle domain) +void Project::addDocument(Handle document) { invalidate(); - domains.push_back(domain); + documents.push_back(document); } const NodeVector &Project::getDocuments() { return documents; } - -const NodeVector &Project::getDomains() { return domains; } - -const NodeVector &Project::getTypesystems() { return typesystems; } } namespace RttiTypes { const Rtti Project = RttiBuilder("Project") .parent(&Node) .composedOf(&Document) - .composedOf(&Typesystem) - .composedOf(&SystemTypesystem) - .composedOf(&Domain); + .composedOf(&SystemTypesystem); } } -- cgit v1.2.3