diff options
author | Benjamin Paassen <bpaassen@techfak.uni-bielefeld.de> | 2015-01-19 20:21:22 +0100 |
---|---|---|
committer | Benjamin Paassen <bpaassen@techfak.uni-bielefeld.de> | 2015-01-19 20:21:22 +0100 |
commit | 5f5858d503640286c9e5d23634f9f3a8de6a2091 (patch) | |
tree | 4e5167b154b8495e5d097ac309b6170aa4b84bb3 /src/core/model/Document.cpp | |
parent | 5e779c017020a8e0405ee8e43c6ea7d4a9a11ad2 (diff) |
(re-)introduced setter methods to Document.
Diffstat (limited to 'src/core/model/Document.cpp')
-rw-r--r-- | src/core/model/Document.cpp | 53 |
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, |