summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Paassen <bpaassen@techfak.uni-bielefeld.de>2014-03-04 17:16:59 +0000
committerbenjamin <benjamin@daaaf23c-2e50-4459-9457-1e69db5a47bf>2014-03-04 17:16:59 +0000
commit3ac3d683228cf0b0effe284bf07e18a9b07f92a2 (patch)
tree41f737a70e792f52ed93806c5bf62b030b15f277
parentc736f9219673d049a1b21a0b9b2d01684a5b80dd (diff)
added anchor, annotation, field, layer and structure at least as raw concepts. Type and Value are dummy implementations.
git-svn-id: file:///var/local/svn/basicwriter@18 daaaf23c-2e50-4459-9457-1e69db5a47bf
-rw-r--r--CMakeLists.txt9
-rw-r--r--src/model/domain/Anchor.cpp28
-rw-r--r--src/model/domain/Anchor.hpp36
-rw-r--r--src/model/domain/Annotation.cpp28
-rw-r--r--src/model/domain/Annotation.hpp81
-rw-r--r--src/model/domain/Field.cpp27
-rw-r--r--src/model/domain/Field.hpp80
-rw-r--r--src/model/domain/Layer.cpp27
-rw-r--r--src/model/domain/Layer.hpp47
-rw-r--r--src/model/domain/Structure.cpp29
-rw-r--r--src/model/domain/Structure.hpp33
-rw-r--r--src/model/types/Type.cpp29
-rw-r--r--src/model/types/Type.hpp33
-rw-r--r--src/model/types/Value.cpp29
-rw-r--r--src/model/types/Value.hpp31
-rw-r--r--test/model/domain/Layer.cpp48
16 files changed, 594 insertions, 1 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 329b17d..e6a6ae4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -25,7 +25,13 @@ INCLUDE_DIRECTORIES(src/)
ADD_LIBRARY(ousia_core
src/model/GraphNode
- src/model/domain/Domain
+ src/model/domain/Structure
+ src/model/domain/Layer
+ src/model/domain/Annotation
+ src/model/domain/Anchor
+ src/model/domain/Field
+ src/model/types/Type
+ src/model/types/Value
)
ADD_EXECUTABLE(ousia
@@ -48,6 +54,7 @@ if(test)
# Add all unit test files
ADD_EXECUTABLE(ousia_test
test/model/GraphNode
+ test/model/domain/Layer
)
TARGET_LINK_LIBRARIES(ousia_test
diff --git a/src/model/domain/Anchor.cpp b/src/model/domain/Anchor.cpp
new file mode 100644
index 0000000..e153161
--- /dev/null
+++ b/src/model/domain/Anchor.cpp
@@ -0,0 +1,28 @@
+/*
+ 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 <model/domain/Anchor.hpp>
+
+namespace ousia {
+namespace domain {
+
+//This class is fully specified by its header.
+
+}
+}
+
diff --git a/src/model/domain/Anchor.hpp b/src/model/domain/Anchor.hpp
new file mode 100644
index 0000000..66ff8eb
--- /dev/null
+++ b/src/model/domain/Anchor.hpp
@@ -0,0 +1,36 @@
+/*
+ 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 _ANCHOR_HPP_
+#define _ANCHOR_HPP_
+
+#include <model/GraphNode.hpp>
+
+namespace ousia {
+namespace domain {
+
+class Anchor : public GraphNode {
+
+public:
+ using GraphNode::GraphNode;
+
+};
+}
+}
+
+#endif /* _ANCHOR_HPP_ */
diff --git a/src/model/domain/Annotation.cpp b/src/model/domain/Annotation.cpp
new file mode 100644
index 0000000..8dabf5e
--- /dev/null
+++ b/src/model/domain/Annotation.cpp
@@ -0,0 +1,28 @@
+/*
+ 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 <model/domain/Annotation.hpp>
+
+namespace ousia {
+namespace domain {
+
+//This class is fully defined by its header.
+
+}
+}
+
diff --git a/src/model/domain/Annotation.hpp b/src/model/domain/Annotation.hpp
new file mode 100644
index 0000000..233b421
--- /dev/null
+++ b/src/model/domain/Annotation.hpp
@@ -0,0 +1,81 @@
+/*
+ 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 _ANNOTATION_HPP_
+#define _ANNOTATION_HPP_
+
+#include <memory>
+#include <vector>
+
+#include <model/GraphNode.hpp>
+#include <model/domain/Anchor.hpp>
+#include <model/domain/Structure.hpp>
+#include <model/domain/Field.hpp>
+
+namespace ousia {
+namespace domain {
+
+//class Structure;
+//class Anchor;
+//class Field;
+
+class Annotation : public GraphNode {
+
+private:
+ std::vector<std::shared_ptr<Structure>> structures;
+ std::vector<std::shared_ptr<Field>> fields;
+ std::shared_ptr<Anchor> start;
+ std::shared_ptr<Anchor> end;
+
+public:
+ using GraphNode::GraphNode;
+
+ std::vector<std::shared_ptr<Structure>>& getStructures()
+ {
+ return structures;
+ }
+
+ std::vector<std::shared_ptr<Field>>& getFields()
+ {
+ return fields;
+ }
+
+ std::shared_ptr<Anchor> getStart()
+ {
+ return start;
+ }
+
+ void setStart(std::shared_ptr<Anchor> start)
+ {
+ this->start = start;
+ }
+
+ std::shared_ptr<Anchor> getEnd()
+ {
+ return end;
+ }
+
+ void setEnd(std::shared_ptr<Anchor> end)
+ {
+ this->end = end;
+ }
+};
+}
+}
+
+#endif /* _ANNOTATION_HPP_ */
diff --git a/src/model/domain/Field.cpp b/src/model/domain/Field.cpp
new file mode 100644
index 0000000..4fd06a3
--- /dev/null
+++ b/src/model/domain/Field.cpp
@@ -0,0 +1,27 @@
+/*
+ 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 <model/domain/Field.hpp>
+
+namespace ousia {
+namespace domain {
+
+ //This class is fully specified by its header.
+
+}
+}
diff --git a/src/model/domain/Field.hpp b/src/model/domain/Field.hpp
new file mode 100644
index 0000000..d1944ee
--- /dev/null
+++ b/src/model/domain/Field.hpp
@@ -0,0 +1,80 @@
+/*
+ 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 _FIELD_HPP_
+#define _FIELD_HPP_
+
+#include <memory>
+
+#include <model/GraphNode.hpp>
+#include <model/types/Type.hpp>
+#include <model/types/Value.hpp>
+
+namespace ousia {
+
+//namespace types {
+// class Type;
+// class Value;
+//}
+
+namespace domain {
+
+class Field : public GraphNode {
+
+private:
+ std::shared_ptr<types::Type> type;
+ std::shared_ptr<types::Value> value;
+ bool optional;
+
+public:
+ using GraphNode::GraphNode;
+
+ std::shared_ptr<types::Type> getType()
+ {
+ return type;
+ }
+
+ void setType(std::shared_ptr<types::Type> type)
+ {
+ this->type = type;
+ }
+
+ std::shared_ptr<types::Value> getValue()
+ {
+ return value;
+ }
+
+ void setValue(std::shared_ptr<types::Value> value)
+ {
+ this->value = value;
+ }
+
+ bool getOptional()
+ {
+ return optional;
+ }
+
+ void setOptional(bool optional)
+ {
+ this->optional = optional;
+ }
+};
+}
+}
+
+#endif /* _FIELD_HPP_ */
diff --git a/src/model/domain/Layer.cpp b/src/model/domain/Layer.cpp
new file mode 100644
index 0000000..fb22b4c
--- /dev/null
+++ b/src/model/domain/Layer.cpp
@@ -0,0 +1,27 @@
+/*
+ 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 <model/domain/Layer.hpp>
+
+namespace ousia {
+namespace domain {
+
+ //This class is fully specified by its header.
+
+}
+}
diff --git a/src/model/domain/Layer.hpp b/src/model/domain/Layer.hpp
new file mode 100644
index 0000000..5d609ca
--- /dev/null
+++ b/src/model/domain/Layer.hpp
@@ -0,0 +1,47 @@
+/*
+ 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 _LAYER_HPP_
+#define _LAYER_HPP_
+
+#include <memory>
+#include <vector>
+
+#include <model/GraphNode.hpp>
+#include <model/domain/Annotation.hpp>
+
+namespace ousia {
+namespace domain {
+
+class Layer : public GraphNode {
+
+private:
+ std::vector<std::shared_ptr<Annotation>> annotations;
+
+public:
+ using GraphNode::GraphNode;
+
+ std::vector<std::shared_ptr<Annotation>>& getAnnotations()
+ {
+ return annotations;
+ }
+};
+}
+}
+
+#endif /* _LAYER_HPP_ */
diff --git a/src/model/domain/Structure.cpp b/src/model/domain/Structure.cpp
new file mode 100644
index 0000000..fd9f3ce
--- /dev/null
+++ b/src/model/domain/Structure.cpp
@@ -0,0 +1,29 @@
+/*
+ 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 <model/domain/Structure.hpp>
+
+namespace ousia {
+namespace domain {
+
+ //This class for now has no special features that would distinguish it
+ //from an abstract GraphNode.
+
+}
+}
diff --git a/src/model/domain/Structure.hpp b/src/model/domain/Structure.hpp
new file mode 100644
index 0000000..897b265
--- /dev/null
+++ b/src/model/domain/Structure.hpp
@@ -0,0 +1,33 @@
+/*
+ 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 _STRUCTURE_HPP_
+#define _STRUCTURE_HPP_
+
+#include <model/GraphNode.hpp>
+
+namespace ousia {
+namespace domain {
+
+class Structure : public GraphNode {
+ using GraphNode::GraphNode;
+};
+}
+}
+
+#endif /* _STRUCTURE_HPP_ */
diff --git a/src/model/types/Type.cpp b/src/model/types/Type.cpp
new file mode 100644
index 0000000..d219b61
--- /dev/null
+++ b/src/model/types/Type.cpp
@@ -0,0 +1,29 @@
+/*
+ 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 <model/GraphNode.hpp>
+#include <model/types/Type.hpp>
+
+namespace ousia {
+namespace types {
+
+
+//TODO: THIS IS A DUMMY CLASS DECLARATION
+
+}
+}
diff --git a/src/model/types/Type.hpp b/src/model/types/Type.hpp
new file mode 100644
index 0000000..155f898
--- /dev/null
+++ b/src/model/types/Type.hpp
@@ -0,0 +1,33 @@
+/*
+ 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 _TYPE_HPP_
+#define _TYPE_HPP_
+
+#include <model/GraphNode.hpp>
+
+namespace ousia {
+namespace types {
+
+class Type : public GraphNode {
+
+//TODO: THIS IS A DUMMY CLASS DECLARATION
+};
+}
+}
+#endif /* _TYPE_HPP_ */
diff --git a/src/model/types/Value.cpp b/src/model/types/Value.cpp
new file mode 100644
index 0000000..73d233a
--- /dev/null
+++ b/src/model/types/Value.cpp
@@ -0,0 +1,29 @@
+/*
+ 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 <model/GraphNode.hpp>
+#include <model/types/Value.hpp>
+
+namespace ousia {
+namespace types {
+
+
+//TODO: THIS IS A DUMMY CLASS DECLARATION
+
+}
+}
diff --git a/src/model/types/Value.hpp b/src/model/types/Value.hpp
new file mode 100644
index 0000000..3076dd2
--- /dev/null
+++ b/src/model/types/Value.hpp
@@ -0,0 +1,31 @@
+/*
+ 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 _VALUE_HPP_
+#define _VALUE_HPP_
+
+namespace ousia {
+namespace types {
+
+class Value {
+
+//TODO: THIS IS A DUMMY CLASS DECLARATION
+};
+}
+}
+#endif /* _VALUE_HPP_ */
diff --git a/test/model/domain/Layer.cpp b/test/model/domain/Layer.cpp
new file mode 100644
index 0000000..89aeaa4
--- /dev/null
+++ b/test/model/domain/Layer.cpp
@@ -0,0 +1,48 @@
+/*
+ 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 <gtest/gtest.h>
+#include <iostream>
+
+#include <model/domain/Layer.hpp>
+#include <model/domain/Annotation.hpp>
+
+namespace ousia {
+namespace domain{
+
+TEST(LayerTest, AnnotationManagementTest)
+{
+ std::shared_ptr<Annotation> anno1{new Annotation("em1")};
+ std::shared_ptr<Annotation> anno2{new Annotation("em2", anno1)};
+
+ Layer layer {"layer"};
+
+ std::vector<std::shared_ptr<Annotation>>& annos = layer.getAnnotations();
+
+ annos.push_back(anno1);
+ annos.push_back(anno2);
+
+ std::vector<std::shared_ptr<Annotation>>& test_annos = layer.getAnnotations();
+
+ ASSERT_EQ(2, test_annos.size());
+ ASSERT_EQ(anno1, test_annos[0]);
+ ASSERT_EQ(anno2, test_annos[1]);
+}
+
+}
+}