summaryrefslogtreecommitdiff
path: root/src/model
diff options
context:
space:
mode:
Diffstat (limited to 'src/model')
-rw-r--r--src/model/GraphNode.cpp54
-rw-r--r--src/model/GraphNode.hpp68
-rw-r--r--src/model/domain/Domain.cpp20
-rw-r--r--src/model/domain/Domain.hpp40
4 files changed, 182 insertions, 0 deletions
diff --git a/src/model/GraphNode.cpp b/src/model/GraphNode.cpp
new file mode 100644
index 0000000..affc3af
--- /dev/null
+++ b/src/model/GraphNode.cpp
@@ -0,0 +1,54 @@
+/*
+ Ousía
+ Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "GraphNode.hpp"
+
+#include <iostream>
+#include <sstream>
+
+namespace ousia {
+
+GraphNode::GraphNode() :
+ parent(nullptr)
+{
+ // Do nothing here
+}
+
+GraphNode::GraphNode(std::shared_ptr<GraphNode> parent) :
+ parent(parent)
+{
+ // Do nothing here
+}
+
+GraphNode::GraphNode(const std::string &name, std::shared_ptr<GraphNode> parent) :
+ name(name), parent(parent)
+{
+ // Do nothing here
+}
+
+const std::string GraphNode::getFullyQualifiedName()
+{
+ if (parent) {
+ std::stringstream ss;
+ ss << parent->getFullyQualifiedName() << "." << name;
+ return ss.str();
+ }
+ return name;
+}
+
+}
diff --git a/src/model/GraphNode.hpp b/src/model/GraphNode.hpp
new file mode 100644
index 0000000..39770dd
--- /dev/null
+++ b/src/model/GraphNode.hpp
@@ -0,0 +1,68 @@
+/*
+ Ousía
+ Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef _GRAPH_NODE_HPP_
+#define _GRAPH_NODE_HPP_
+
+#include <string>
+#include <memory>
+
+namespace ousia {
+
+class GraphNode {
+
+private:
+ std::string name;
+ std::shared_ptr<GraphNode> parent;
+
+public:
+ GraphNode();
+
+ GraphNode(std::shared_ptr<GraphNode> parent);
+
+ GraphNode(const std::string &name, std::shared_ptr<GraphNode> parent = nullptr);
+
+ const std::string& getName()
+ {
+ return name;
+ }
+
+ const std::string getFullyQualifiedName();
+
+ void setName(const std::string &name)
+ {
+ this->name = name;
+ }
+
+ std::shared_ptr<GraphNode> getParent()
+ {
+ return std::shared_ptr<GraphNode>(parent);
+ }
+
+ void setParent(std::shared_ptr<GraphNode> parent)
+ {
+ this->parent = parent;
+ }
+
+
+};
+
+}
+
+#endif /* _GRAPH_NODE_HPP_ */
+
diff --git a/src/model/domain/Domain.cpp b/src/model/domain/Domain.cpp
new file mode 100644
index 0000000..110e367
--- /dev/null
+++ b/src/model/domain/Domain.cpp
@@ -0,0 +1,20 @@
+/*
+ BasicWriter
+ Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+
+
diff --git a/src/model/domain/Domain.hpp b/src/model/domain/Domain.hpp
new file mode 100644
index 0000000..98b440a
--- /dev/null
+++ b/src/model/domain/Domain.hpp
@@ -0,0 +1,40 @@
+/*
+ Ousía
+ Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <memory>
+#include <string>
+#include <vector>
+
+#include <model/GraphNode.hpp>
+
+namespace ousia {
+namespace domain {
+
+class Domain : public GraphNode {
+
+private:
+ std::shared_ptr<Class> root;
+ std::vector<std::shared_ptr<Structure>> structures;
+ std::vector<std::shared_ptr<Category>> categories;
+ std::vector<std::shared_ptr<Layer>> layers;
+
+};
+
+}
+}
+