summaryrefslogtreecommitdiffstats
path: root/searchlib/src
diff options
context:
space:
mode:
authorArne H Juul <arnej@yahoo-inc.com>2017-04-12 11:50:07 +0200
committerArne H Juul <arnej@yahoo-inc.com>2017-04-12 12:35:25 +0200
commit883ba0bd1f6fbbcc4e56a35038ac4c75e969e780 (patch)
tree82bc6cd28b4f7f45c5f4d5a9bab35325fbed9f1f /searchlib/src
parent6d056aacb6497ef0c25edf2e2dfbefff0e2423a2 (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')
-rw-r--r--searchlib/src/vespa/searchlib/attribute/floatbase.h4
-rw-r--r--searchlib/src/vespa/searchlib/attribute/floatbase.hpp10
-rw-r--r--searchlib/src/vespa/searchlib/attribute/integerbase.h4
-rw-r--r--searchlib/src/vespa/searchlib/attribute/integerbase.hpp6
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);