summaryrefslogtreecommitdiffstats
path: root/document
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2017-07-25 20:09:18 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2017-07-31 17:04:17 +0200
commit5d556da6996ba3fd81d6bfb8a48ef25428978eee (patch)
tree6cd8d12001582d51b03f624cf86bc9c76cd0386f /document
parented86958cf65226a246cf4b8532e5f5e904a4b05d (diff)
We have already made the desicion to keep the datatypes alive with the DocumentTypeRepo. So let us stick to that.
Diffstat (limited to 'document')
-rw-r--r--document/src/vespa/document/fieldvalue/arrayfieldvalue.cpp13
-rw-r--r--document/src/vespa/document/fieldvalue/fieldvalue.cpp6
2 files changed, 3 insertions, 16 deletions
diff --git a/document/src/vespa/document/fieldvalue/arrayfieldvalue.cpp b/document/src/vespa/document/fieldvalue/arrayfieldvalue.cpp
index 85fd031ac10..194c9b422da 100644
--- a/document/src/vespa/document/fieldvalue/arrayfieldvalue.cpp
+++ b/document/src/vespa/document/fieldvalue/arrayfieldvalue.cpp
@@ -282,17 +282,4 @@ ArrayFieldValue::onIterateNested(PathRange nested, IteratorHandler & handler) co
using vespalib::ComplexArrayT;
using vespalib::PrimitiveArrayT;
-namespace {
-class FieldValueFactory : public ComplexArrayT<FieldValue>::Factory
-{
-public:
- FieldValueFactory(DataType::UP dataType) : _dataType(dataType.release()) { }
- FieldValue * create() override { return _dataType->createFieldValue().release(); }
- FieldValueFactory * clone() const override { return new FieldValueFactory(*this); }
-private:
- DataType::CP _dataType;
-};
-
-}
-
} // document
diff --git a/document/src/vespa/document/fieldvalue/fieldvalue.cpp b/document/src/vespa/document/fieldvalue/fieldvalue.cpp
index 979a6316e45..1d6f39318c3 100644
--- a/document/src/vespa/document/fieldvalue/fieldvalue.cpp
+++ b/document/src/vespa/document/fieldvalue/fieldvalue.cpp
@@ -221,11 +221,11 @@ namespace {
class FieldValueFactory : public ComplexArrayT<FieldValue>::Factory
{
public:
- FieldValueFactory(DataType::UP dataType) : _dataType(dataType.release()) { }
+ FieldValueFactory(const DataType & dataType) : _dataType(&dataType) { }
FieldValue * create() override { return _dataType->createFieldValue().release(); }
FieldValueFactory * clone() const override { return new FieldValueFactory(*this); }
private:
- DataType::CP _dataType;
+ const DataType * _dataType;
};
}
@@ -249,7 +249,7 @@ FieldValue::createArray(const DataType & baseType)
case DataType::T_BYTE:
return std::make_unique<PrimitiveArrayT<ByteFieldValue, FieldValue>>();
default:
- return std::make_unique<ComplexArrayT<FieldValue>>(std::make_unique<FieldValueFactory>(DataType::UP(baseType.clone())));
+ return std::make_unique<ComplexArrayT<FieldValue>>(std::make_unique<FieldValueFactory>(baseType));
}
}