summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2015-01-05 13:51:46 +0100
committerAndreas Stöckel <andreas@somweyr.de>2015-01-05 13:51:46 +0100
commit4b5f49447e1583756c6f6bb15d7bc643bb7adda3 (patch)
tree474cdb12d25240e400fb2076d6076c334dea0dfb
parent99510f368a18c30b161fa89f7523bcc2b5cc5d0b (diff)
Added composition types
-rw-r--r--src/core/model/Document.cpp32
-rw-r--r--src/core/model/Document.hpp9
2 files changed, 28 insertions, 13 deletions
diff --git a/src/core/model/Document.cpp b/src/core/model/Document.cpp
index e5d0755..c09532c 100644
--- a/src/core/model/Document.cpp
+++ b/src/core/model/Document.cpp
@@ -70,7 +70,7 @@ NodeVector<StructuredEntity> &DocumentEntity::getField(
NodeVector<StructuredEntity> &DocumentEntity::getField(
Handle<FieldDescriptor> fieldDescriptor)
{
- if(fieldDescriptor.isNull()){
+ if (fieldDescriptor.isNull()) {
throw OusiaException("The given FieldDescriptor handle is null!");
}
const NodeVector<FieldDescriptor> &fds = descriptor->getFieldDescriptors();
@@ -157,7 +157,7 @@ Rooted<StructuredEntity> StructuredEntity::buildEntity(
return {nullptr};
}
// append the new entity to the right field.
- NodeVector<StructuredEntity>& field = parent->getField(fieldName);
+ NodeVector<StructuredEntity> &field = parent->getField(fieldName);
field.push_back(entity);
// and return it.
@@ -180,7 +180,7 @@ Rooted<DocumentPrimitive> DocumentPrimitive::buildEntity(
return {nullptr};
}
// append the new entity to the right field.
- NodeVector<StructuredEntity>& field = parent->getField(fieldName);
+ NodeVector<StructuredEntity> &field = parent->getField(fieldName);
field.push_back(entity);
// and return it.
@@ -188,17 +188,23 @@ Rooted<DocumentPrimitive> DocumentPrimitive::buildEntity(
}
/* Type registrations */
+}
-const Rtti<Document> Document_Rtti{"Document"};
-const Rtti<DocumentEntity> DocumentEntity_Rtti{"DocumentEntity"};
-const Rtti<AnnotationEntity> AnnotationEntity_Rtti{"AnnotationEntity",
- {&DocumentEntity_Rtti}};
-const Rtti<StructuredEntity> StructuredEntity_Rtti{"StructuredEntity",
- {&DocumentEntity_Rtti}};
-const Rtti<DocumentPrimitive> DocumentPrimitive_Rtti{"DocumentPrimitive",
- {&StructuredEntity_Rtti}};
-const Rtti<AnnotationEntity::Anchor> Anchor_Rtti{"Anchor",
- {&StructuredEntity_Rtti}};
+namespace RttiTypes {
+const Rtti<model::Document> Document{"Document",
+ std::unordered_set<const RttiBase *>{},
+ {&AnnotationEntity, &StructuredEntity}};
+const Rtti<model::DocumentEntity> DocumentEntity{"DocumentEntity"};
+const Rtti<model::AnnotationEntity> AnnotationEntity{
+ "AnnotationEntity", {&DocumentEntity}, {&StructuredEntity}};
+const Rtti<model::StructuredEntity> StructuredEntity{
+ "StructuredEntity",
+ {&DocumentEntity},
+ {&StructuredEntity, &Anchor, &DocumentPrimitive}};
+const Rtti<model::DocumentPrimitive> DocumentPrimitive{"DocumentPrimitive",
+ {&StructuredEntity}};
+const Rtti<model::AnnotationEntity::Anchor> Anchor{"Anchor",
+ {&StructuredEntity}};
}
}
diff --git a/src/core/model/Document.hpp b/src/core/model/Document.hpp
index fabdcaf..7523962 100644
--- a/src/core/model/Document.hpp
+++ b/src/core/model/Document.hpp
@@ -395,6 +395,15 @@ public:
Rooted<StructuredEntity> getRoot() const { return root; }
};
}
+
+namespace RttiTypes {
+extern const Rtti<model::Document> Document;
+extern const Rtti<model::DocumentEntity> DocumentEntity;
+extern const Rtti<model::AnnotationEntity> AnnotationEntity;
+extern const Rtti<model::StructuredEntity> StructuredEntity;
+extern const Rtti<model::DocumentPrimitive> DocumentPrimitive;
+extern const Rtti<model::AnnotationEntity::Anchor> Anchor;
+}
}
#endif /* _OUSIA_MODEL_DOCUMENT_HPP_ */