diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2019-01-09 10:20:42 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2019-01-09 13:05:01 +0000 |
commit | 5f321f1d1df8da72187a711f9cdc36481dc25cae (patch) | |
tree | 5378915b89a25ead8cea4c7678357ec66916b38d /searchsummary/src | |
parent | a9c77576da201d3da009e8f86800d23070284a41 (diff) |
Brief implementation skeleton for bool field type.
Diffstat (limited to 'searchsummary/src')
-rw-r--r-- | searchsummary/src/vespa/searchsummary/docsummary/summaryfieldconverter.cpp | 89 |
1 files changed, 44 insertions, 45 deletions
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/summaryfieldconverter.cpp b/searchsummary/src/vespa/searchsummary/docsummary/summaryfieldconverter.cpp index 290cc45648a..91a7fd45061 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/summaryfieldconverter.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/summaryfieldconverter.cpp @@ -9,6 +9,7 @@ #include <vespa/document/annotation/spantreevisitor.h> #include <vespa/document/datatype/documenttype.h> #include <vespa/document/fieldvalue/arrayfieldvalue.h> +#include <vespa/document/fieldvalue/boolfieldvalue.h> #include <vespa/document/fieldvalue/bytefieldvalue.h> #include <vespa/document/fieldvalue/document.h> #include <vespa/document/fieldvalue/doublefieldvalue.h> @@ -42,6 +43,7 @@ using document::Annotation; using document::AnnotationReferenceFieldValue; using document::ArrayDataType; using document::ArrayFieldValue; +using document::BoolFieldValue; using document::ByteFieldValue; using document::DataType; using document::Document; @@ -229,7 +231,7 @@ class SummaryFieldValueConverter : protected ConstFieldValueVisitor FieldValue::UP _field_value; FieldValueConverter &_structuredFieldConverter; - virtual void visit(const ArrayFieldValue &value) override { + void visit(const ArrayFieldValue &value) override { _field_value = _structuredFieldConverter.convert(value); } @@ -237,17 +239,18 @@ class SummaryFieldValueConverter : protected ConstFieldValueVisitor void visitPrimitive(const T &t) { _field_value.reset(t.clone()); } - virtual void visit(const IntFieldValue &value) override { visitPrimitive(value); } - virtual void visit(const LongFieldValue &value) override { visitPrimitive(value); } - virtual void visit(const ShortFieldValue &value) override { visitPrimitive(value); } - virtual void visit(const ByteFieldValue &value) override { + void visit(const IntFieldValue &value) override { visitPrimitive(value); } + void visit(const LongFieldValue &value) override { visitPrimitive(value); } + void visit(const ShortFieldValue &value) override { visitPrimitive(value); } + void visit(const BoolFieldValue &value) override { visitPrimitive(value); } + void visit(const ByteFieldValue &value) override { int8_t signedValue = value.getAsByte(); _field_value.reset(new ShortFieldValue(signedValue)); } - virtual void visit(const DoubleFieldValue &value) override { visitPrimitive(value); } - virtual void visit(const FloatFieldValue &value) override { visitPrimitive(value); } + void visit(const DoubleFieldValue &value) override { visitPrimitive(value); } + void visit(const FloatFieldValue &value) override { visitPrimitive(value); } - virtual void visit(const StringFieldValue &value) override { + void visit(const StringFieldValue &value) override { if (_tokenize) { SummaryHandler handler(value.getValue(), _str); handleIndexingTerms(handler, value); @@ -256,33 +259,29 @@ class SummaryFieldValueConverter : protected ConstFieldValueVisitor } } - virtual void visit(const AnnotationReferenceFieldValue & v ) override { + void visit(const AnnotationReferenceFieldValue & v ) override { _field_value = _structuredFieldConverter.convert(v); } - virtual void visit(const Document & v) override { + void visit(const Document & v) override { _field_value = _structuredFieldConverter.convert(v); } - virtual void - visit(const PredicateFieldValue &value) override - { + void visit(const PredicateFieldValue &value) override { _str << value.toString(); } - virtual void - visit(const RawFieldValue &value) override - { + void visit(const RawFieldValue &value) override { visitPrimitive(value); } - virtual void visit(const MapFieldValue & v) override { + void visit(const MapFieldValue & v) override { _field_value = _structuredFieldConverter.convert(v); } - virtual void visit(const StructFieldValue &value) override { + void visit(const StructFieldValue &value) override { if (*value.getDataType() == *SearchDataType::URI) { FieldValue::UP uriAllValue = value.getValue("all"); - if (uriAllValue.get() != NULL && + if (uriAllValue && uriAllValue->inherits(IDENTIFIABLE_CLASSID(StringFieldValue))) { uriAllValue->accept(*this); @@ -292,11 +291,11 @@ class SummaryFieldValueConverter : protected ConstFieldValueVisitor _field_value = _structuredFieldConverter.convert(value); } - virtual void visit(const WeightedSetFieldValue &value) override { + void visit(const WeightedSetFieldValue &value) override { _field_value = _structuredFieldConverter.convert(value); } - virtual void visit(const TensorFieldValue &value) override { + void visit(const TensorFieldValue &value) override { visitPrimitive(value); } @@ -315,7 +314,7 @@ public: if (_field_value.get()) { return std::move(_field_value); } - return FieldValue::UP(new StringFieldValue(_str.str())); + return std::make_unique<StringFieldValue>(_str.str()); } }; @@ -323,7 +322,7 @@ SummaryFieldValueConverter::SummaryFieldValueConverter(bool tokenize, FieldValue : _str(), _tokenize(tokenize), _structuredFieldConverter(subConverter) {} -SummaryFieldValueConverter::~SummaryFieldValueConverter() {} +SummaryFieldValueConverter::~SummaryFieldValueConverter() = default; using namespace vespalib::slime::convenience; @@ -331,14 +330,14 @@ class SlimeFiller : public ConstFieldValueVisitor { Inserter &_inserter; bool _tokenize; - virtual void visit(const AnnotationReferenceFieldValue & v ) override { + void visit(const AnnotationReferenceFieldValue & v ) override { (void)v; Cursor &c = _inserter.insertObject(); Memory key("error"); Memory val("cannot convert from annotation reference field"); c.setString(key, val); } - virtual void visit(const Document & v) override { + void visit(const Document & v) override { (void)v; Cursor &c = _inserter.insertObject(); Memory key("error"); @@ -346,7 +345,7 @@ class SlimeFiller : public ConstFieldValueVisitor { c.setString(key, val); } - virtual void visit(const MapFieldValue & v) override { + void visit(const MapFieldValue & v) override { Cursor &a = _inserter.insertArray(); Symbol keysym = a.resolve("key"); Symbol valsym = a.resolve("value"); @@ -364,7 +363,7 @@ class SlimeFiller : public ConstFieldValueVisitor { } } - virtual void visit(const ArrayFieldValue &value) override { + void visit(const ArrayFieldValue &value) override { Cursor &a = _inserter.insertArray(); if (value.size() > 0) { ArrayInserter ai(a); @@ -375,7 +374,7 @@ class SlimeFiller : public ConstFieldValueVisitor { } } - virtual void visit(const StringFieldValue &value) override { + void visit(const StringFieldValue &value) override { if (_tokenize) { asciistream tmp; SummaryHandler handler(value.getValue(), tmp); @@ -386,48 +385,48 @@ class SlimeFiller : public ConstFieldValueVisitor { } } - virtual void visit(const IntFieldValue &value) override { + void visit(const IntFieldValue &value) override { int32_t v = value.getValue(); _inserter.insertLong(v); } - virtual void visit(const LongFieldValue &value) override { + void visit(const LongFieldValue &value) override { int64_t v = value.getValue(); _inserter.insertLong(v); } - virtual void visit(const ShortFieldValue &value) override { + void visit(const ShortFieldValue &value) override { int16_t v = value.getValue(); _inserter.insertLong(v); } - virtual void visit(const ByteFieldValue &value) override { + void visit(const ByteFieldValue &value) override { int8_t v = value.getAsByte(); _inserter.insertLong(v); } - virtual void visit(const DoubleFieldValue &value) override { + void visit(const BoolFieldValue &value) override { + bool v = value.getValue(); + _inserter.insertBool(v); + } + void visit(const DoubleFieldValue &value) override { double v = value.getValue(); _inserter.insertDouble(v); } - virtual void visit(const FloatFieldValue &value) override { + void visit(const FloatFieldValue &value) override { float v = value.getValue(); _inserter.insertDouble(v); } - virtual void - visit(const PredicateFieldValue &value) override - { + void visit(const PredicateFieldValue &value) override { vespalib::slime::inject(value.getSlime().get(), _inserter); } - virtual void - visit(const RawFieldValue &value) override - { + void visit(const RawFieldValue &value) override { std::pair<const char *, size_t> buf = value.getAsRaw(); _inserter.insertData(Memory(buf.first, buf.second)); } - virtual void visit(const StructFieldValue &value) override { + void visit(const StructFieldValue &value) override { if (*value.getDataType() == *SearchDataType::URI) { FieldValue::UP uriAllValue = value.getValue("all"); - if (uriAllValue.get() != NULL && + if (uriAllValue && uriAllValue->inherits(IDENTIFIABLE_CLASSID(StringFieldValue))) { uriAllValue->accept(*this); @@ -444,7 +443,7 @@ class SlimeFiller : public ConstFieldValueVisitor { } } - virtual void visit(const WeightedSetFieldValue &value) override { + void visit(const WeightedSetFieldValue &value) override { Cursor &a = _inserter.insertArray(); if (value.size() > 0) { Symbol isym = a.resolve("item"); @@ -460,7 +459,7 @@ class SlimeFiller : public ConstFieldValueVisitor { } } - virtual void visit(const TensorFieldValue &value) override { + void visit(const TensorFieldValue &value) override { const auto &tensor = value.getAsTensorPtr(); vespalib::nbostream s; if (tensor) { @@ -495,7 +494,7 @@ public: search::RawBuf rbuf(4096); search::SlimeOutputRawBufAdapter adapter(rbuf); vespalib::slime::BinaryFormat::encode(slime, adapter); - return FieldValue::UP(new RawFieldValue(rbuf.GetDrainPos(), rbuf.GetUsedLen())); + return std::make_unique<RawFieldValue>(rbuf.GetDrainPos(), rbuf.GetUsedLen()); } }; |