summaryrefslogtreecommitdiffstats
path: root/document
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2016-11-24 01:37:31 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2016-11-24 19:16:28 +0000
commit81620e465d7c370b6989abaf23872634f1a06ad3 (patch)
treeef436d353bc4a292f9a57ae63b2439a48db56539 /document
parent347dee4b2c6b14485af2ce8e2e6d5385fc14d605 (diff)
Break the document include chain at the attribute vector.
Diffstat (limited to 'document')
-rw-r--r--document/src/vespa/document/base/field.cpp6
-rw-r--r--document/src/vespa/document/base/field.h5
-rw-r--r--document/src/vespa/document/base/fieldpath.cpp2
-rw-r--r--document/src/vespa/document/datatype/documenttype.h3
-rw-r--r--document/src/vespa/document/datatype/structdatatype.h2
-rw-r--r--document/src/vespa/document/datatype/structureddatatype.h2
6 files changed, 15 insertions, 5 deletions
diff --git a/document/src/vespa/document/base/field.cpp b/document/src/vespa/document/base/field.cpp
index 99254141222..fd9adfe6b42 100644
--- a/document/src/vespa/document/base/field.cpp
+++ b/document/src/vespa/document/base/field.cpp
@@ -4,6 +4,7 @@
#include <vespa/document/base/field.h>
#include <vespa/document/datatype/datatype.h>
+#include <vespa/document/fieldvalue/fieldvalue.h>
#include <vespa/vespalib/util/exceptions.h>
#include <vespa/vespalib/stllike/asciistream.h>
#include <vespa/vespalib/util/bobhash.h>
@@ -40,6 +41,11 @@ Field::Field(const vespalib::stringref & name,
{
}
+FieldValue::UP
+Field::createValue() const {
+ return _dataType->createFieldValue();
+}
+
vespalib::string
Field::toString(bool verbose) const
{
diff --git a/document/src/vespa/document/base/field.h b/document/src/vespa/document/base/field.h
index b2583b0871b..c05e3ccf52f 100644
--- a/document/src/vespa/document/base/field.h
+++ b/document/src/vespa/document/base/field.h
@@ -13,12 +13,13 @@
#include <memory>
#include <vespa/document/datatype/datatype.h>
-#include <vespa/document/fieldvalue/fieldvalue.h>
#include <vespa/document/fieldset/fieldset.h>
#include <set>
namespace document {
+class FieldValue;
+
class Field : public vespalib::FieldBase,
public vespalib::Identifiable,
public FieldSet
@@ -74,7 +75,7 @@ public:
Field(const vespalib::stringref & name, const DataType &dataType, bool headerField);
FieldSet* clone() const override { return new Field(*this); }
- FieldValue::UP createValue() const { return _dataType->createFieldValue(); }
+ std::unique_ptr<FieldValue> createValue() const;
// Note that only id is checked for equality.
bool operator==(const Field & other) const { return (_fieldId == other._fieldId); }
diff --git a/document/src/vespa/document/base/fieldpath.cpp b/document/src/vespa/document/base/fieldpath.cpp
index 3647fe55f3a..7f04a0542f2 100644
--- a/document/src/vespa/document/base/fieldpath.cpp
+++ b/document/src/vespa/document/base/fieldpath.cpp
@@ -7,6 +7,8 @@
#include <vespa/document/datatype/weightedsetdatatype.h>
#include <vespa/document/datatype/primitivedatatype.h>
#include <vespa/vespalib/objects/visit.h>
+#include <vespa/vespalib/util/exceptions.h>
+#include <vespa/document/fieldvalue/fieldvalue.h>
using vespalib::IllegalArgumentException;
using vespalib::make_string;
diff --git a/document/src/vespa/document/datatype/documenttype.h b/document/src/vespa/document/datatype/documenttype.h
index 73292b339fa..e5eba5b9700 100644
--- a/document/src/vespa/document/datatype/documenttype.h
+++ b/document/src/vespa/document/datatype/documenttype.h
@@ -14,6 +14,7 @@
#include <vespa/document/datatype/structdatatype.h>
#include <vector>
+#include <map>
namespace document {
@@ -76,7 +77,7 @@ public:
{ return _inheritedTypes; };
// Implementation of StructuredDataType
- virtual FieldValue::UP createFieldValue() const;
+ virtual std::unique_ptr<FieldValue> createFieldValue() const;
virtual void print(
std::ostream&, bool verbose, const std::string& indent) const;
virtual bool operator==(const DataType& type) const;
diff --git a/document/src/vespa/document/datatype/structdatatype.h b/document/src/vespa/document/datatype/structdatatype.h
index 915dfcd19a4..d3e14db14f2 100644
--- a/document/src/vespa/document/datatype/structdatatype.h
+++ b/document/src/vespa/document/datatype/structdatatype.h
@@ -42,7 +42,7 @@ public:
void addInheritedField(const Field& field);
// Implementation of StructuredDataType
- virtual FieldValue::UP createFieldValue() const;
+ virtual std::unique_ptr<FieldValue> createFieldValue() const;
virtual void print(std::ostream&, bool verbose, const std::string& indent) const;
virtual uint32_t getFieldCount() const { return _idFieldMap.size(); }
diff --git a/document/src/vespa/document/datatype/structureddatatype.h b/document/src/vespa/document/datatype/structureddatatype.h
index 4ac0a310d2b..64dc6992eaf 100644
--- a/document/src/vespa/document/datatype/structureddatatype.h
+++ b/document/src/vespa/document/datatype/structureddatatype.h
@@ -19,7 +19,7 @@
namespace document {
class StructuredDataType : public DataType {
- virtual FieldPath::UP onBuildFieldPath(const vespalib::stringref & remainFieldName) const;
+ virtual std::unique_ptr<FieldPath> onBuildFieldPath(const vespalib::stringref & remainFieldName) const;
protected:
StructuredDataType();