diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2016-11-24 01:37:31 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2016-11-24 19:16:28 +0000 |
commit | 81620e465d7c370b6989abaf23872634f1a06ad3 (patch) | |
tree | ef436d353bc4a292f9a57ae63b2439a48db56539 /document | |
parent | 347dee4b2c6b14485af2ce8e2e6d5385fc14d605 (diff) |
Break the document include chain at the attribute vector.
Diffstat (limited to 'document')
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(); |