diff options
author | Arne H Juul <arnej@yahoo-inc.com> | 2017-04-12 11:50:07 +0200 |
---|---|---|
committer | Arne H Juul <arnej@yahoo-inc.com> | 2017-04-12 12:35:25 +0200 |
commit | 883ba0bd1f6fbbcc4e56a35038ac4c75e969e780 (patch) | |
tree | 82bc6cd28b4f7f45c5f4d5a9bab35325fbed9f1f /searchlib/src | |
parent | 6d056aacb6497ef0c25edf2e2dfbefff0e2423a2 (diff) |
more regular APIs
* add getRawValues for weighted-set multivalue also, for completeness
(and allow override in template subclass to work)
* add empty fillEnum and fillValues to be overridden when used as
as a base class for enumerated attrbibutes
Diffstat (limited to 'searchlib/src')
4 files changed, 21 insertions, 3 deletions
diff --git a/searchlib/src/vespa/searchlib/attribute/floatbase.h b/searchlib/src/vespa/searchlib/attribute/floatbase.h index 66b4125f832..648d9459442 100644 --- a/searchlib/src/vespa/searchlib/attribute/floatbase.h +++ b/searchlib/src/vespa/searchlib/attribute/floatbase.h @@ -65,6 +65,7 @@ public: typedef T LoadedValueType; typedef SequentialReadModifyWriteInterface<LoadedNumericValueT> LoadedVector; virtual uint32_t getRawValues(DocId doc, const multivalue::Value<T> * & values) const; + virtual uint32_t getRawValues(DocId doc, const multivalue::WeightedValue<T> * & values) const; protected: FloatingPointAttributeTemplate(const vespalib::string & name); @@ -72,6 +73,9 @@ protected: ~FloatingPointAttributeTemplate(); static T defaultValue() { return attribute::getUndefined<T>(); } virtual bool findEnum(T v, EnumHandle & e) const = 0; + virtual void fillEnum(LoadedVector&) {} + virtual void fillValues(LoadedVector &) {} + largeint_t getDefaultValue() const override { return static_cast<largeint_t>(-std::numeric_limits<T>::max()); } Change _defaultValue; private: diff --git a/searchlib/src/vespa/searchlib/attribute/floatbase.hpp b/searchlib/src/vespa/searchlib/attribute/floatbase.hpp index 316967a425c..caf6f60b902 100644 --- a/searchlib/src/vespa/searchlib/attribute/floatbase.hpp +++ b/searchlib/src/vespa/searchlib/attribute/floatbase.hpp @@ -8,9 +8,13 @@ namespace search { template<typename T> uint32_t -FloatingPointAttributeTemplate<T>::getRawValues(DocId doc, const multivalue::Value<T> * & values) const { - (void) doc; - (void) values; +FloatingPointAttributeTemplate<T>::getRawValues(DocId, const multivalue::Value<T> * &) const { + throw std::runtime_error(getNativeClassName() + "::getRawValues() not implemented."); +} + +template<typename T> +uint32_t +FloatingPointAttributeTemplate<T>::getRawValues(DocId, const multivalue::WeightedValue<T> * &) const { throw std::runtime_error(getNativeClassName() + "::getRawValues() not implemented."); } diff --git a/searchlib/src/vespa/searchlib/attribute/integerbase.h b/searchlib/src/vespa/searchlib/attribute/integerbase.h index 401a6d7293c..238b3dd8efd 100644 --- a/searchlib/src/vespa/searchlib/attribute/integerbase.h +++ b/searchlib/src/vespa/searchlib/attribute/integerbase.h @@ -64,6 +64,7 @@ public: typedef T LoadedValueType; typedef SequentialReadModifyWriteInterface<LoadedNumericValueT> LoadedVector; virtual uint32_t getRawValues(DocId doc, const multivalue::Value<T> * & values) const; + virtual uint32_t getRawValues(DocId doc, const multivalue::WeightedValue<T> * & values) const; protected: IntegerAttributeTemplate(const vespalib::string & name) : @@ -88,6 +89,9 @@ protected: } static T defaultValue() { return attribute::getUndefined<T>(); } virtual bool findEnum(T v, EnumHandle & e) const = 0; + virtual void fillEnum(LoadedVector&) {} + virtual void fillValues(LoadedVector &) {} + largeint_t getDefaultValue() const override { return defaultValue(); } bool isUndefined(DocId doc) const override { return get(doc) == defaultValue(); } Change _defaultValue; diff --git a/searchlib/src/vespa/searchlib/attribute/integerbase.hpp b/searchlib/src/vespa/searchlib/attribute/integerbase.hpp index dc6df880f49..59d54b2dbcf 100644 --- a/searchlib/src/vespa/searchlib/attribute/integerbase.hpp +++ b/searchlib/src/vespa/searchlib/attribute/integerbase.hpp @@ -15,6 +15,12 @@ IntegerAttributeTemplate<T>::getRawValues(DocId, const multivalue::Value<T> * &) } template<typename T> +uint32_t +IntegerAttributeTemplate<T>::getRawValues(DocId, const multivalue::WeightedValue<T> * &) const { + throw std::runtime_error(getNativeClassName() + "::getRawValues() not implemented."); +} + +template<typename T> bool IntegerAttributeTemplate<T>::findEnum(const char *value, EnumHandle &e) const { vespalib::asciistream iss(value); |