summaryrefslogtreecommitdiff
path: root/src/core/model/Document.cpp
diff options
context:
space:
mode:
authorBenjamin Paassen <bpaassen@techfak.uni-bielefeld.de>2015-01-19 20:21:22 +0100
committerBenjamin Paassen <bpaassen@techfak.uni-bielefeld.de>2015-01-19 20:21:22 +0100
commit5f5858d503640286c9e5d23634f9f3a8de6a2091 (patch)
tree4e5167b154b8495e5d097ac309b6170aa4b84bb3 /src/core/model/Document.cpp
parent5e779c017020a8e0405ee8e43c6ea7d4a9a11ad2 (diff)
(re-)introduced setter methods to Document.
Diffstat (limited to 'src/core/model/Document.cpp')
-rw-r--r--src/core/model/Document.cpp53
1 files changed, 43 insertions, 10 deletions
diff --git a/src/core/model/Document.cpp b/src/core/model/Document.cpp
index a6bcb15..a329392 100644
--- a/src/core/model/Document.cpp
+++ b/src/core/model/Document.cpp
@@ -92,25 +92,19 @@ int DocumentEntity::getFieldDescriptorIndex(
}
}
-void DocumentEntity::addStructureNode(Handle<StructureNode> s,
- const std::string &fieldName)
+void DocumentEntity::invalidateSubInstance()
{
if (subInst->isa(RttiTypes::StructuredEntity)) {
- const StructuredEntity *s =
- static_cast<const StructuredEntity *>(subInst);
- s->invalidate();
+ subInst.cast<StructuredEntity>()->invalidate();
} else {
- const AnnotationEntity *a =
- static_cast<const AnnotationEntity *>(subInst);
- a->invalidate();
+ subInst.cast<AnnotationEntity>()->invalidate();
}
- fields[getFieldDescriptorIndex(fieldName, true)].push_back(s);
}
DocumentEntity::DocumentEntity(Handle<Node> subInst,
Handle<Descriptor> descriptor,
Variant attributes)
- : subInst(subInst.get()),
+ : subInst(subInst),
descriptor(subInst->acquire(descriptor)),
attributes(std::move(attributes))
{
@@ -296,6 +290,45 @@ bool DocumentEntity::doValidate(Logger &logger) const
return valid;
}
+void DocumentEntity::setAttributes(const Variant &a)
+{
+ invalidateSubInstance();
+ attributes = a;
+}
+
+void DocumentEntity::addStructureNode(Handle<StructureNode> s,
+ const std::string &fieldName)
+{
+ invalidateSubInstance();
+ fields[getFieldDescriptorIndex(fieldName, true)].push_back(s);
+}
+
+void DocumentEntity::addStructureNodes(
+ const std::vector<Handle<StructureNode>> &ss, const std::string &fieldName)
+{
+ invalidateSubInstance();
+ NodeVector<StructureNode> &field =
+ fields[getFieldDescriptorIndex(fieldName, true)];
+ field.insert(field.end(), ss.begin(), ss.end());
+}
+
+void DocumentEntity::addStructureNode(Handle<StructureNode> s,
+ Handle<FieldDescriptor> fieldDescriptor)
+{
+ invalidateSubInstance();
+ fields[getFieldDescriptorIndex(fieldDescriptor, true)].push_back(s);
+}
+
+void DocumentEntity::addStructureNodes(
+ const std::vector<Handle<StructureNode>> &ss,
+ Handle<FieldDescriptor> fieldDescriptor)
+{
+ invalidateSubInstance();
+ NodeVector<StructureNode> &field =
+ fields[getFieldDescriptorIndex(fieldDescriptor, true)];
+ field.insert(field.end(), ss.begin(), ss.end());
+}
+
/* Class StructureNode */
StructureNode::StructureNode(Manager &mgr, std::string name,