diff options
5 files changed, 30 insertions, 30 deletions
diff --git a/document/src/vespa/document/base/field.h b/document/src/vespa/document/base/field.h index 613fcd9df1b..3a0c9b82136 100644 --- a/document/src/vespa/document/base/field.h +++ b/document/src/vespa/document/base/field.h @@ -97,13 +97,13 @@ public: const DataType &getDataType() const { return *_dataType; } - int getId() const { return _fieldId; } + int getId() const noexcept { return _fieldId; } vespalib::string toString(bool verbose=false) const; bool contains(const FieldSet& fields) const override; Type getType() const override { return Type::FIELD; } bool valid() const { return _fieldId != 0; } - uint32_t hash() const { return getId(); } + uint32_t hash() const noexcept { return getId(); } private: int calculateIdV7(); diff --git a/eval/src/vespa/eval/tensor/sparse/sparse_tensor_address_ref.h b/eval/src/vespa/eval/tensor/sparse/sparse_tensor_address_ref.h index 45fb7236152..e8838b1acdb 100644 --- a/eval/src/vespa/eval/tensor/sparse/sparse_tensor_address_ref.h +++ b/eval/src/vespa/eval/tensor/sparse/sparse_tensor_address_ref.h @@ -38,7 +38,7 @@ public: _hash(rhs._hash) {} - uint32_t hash() const { return _hash; } + uint32_t hash() const noexcept { return _hash; } uint32_t calcHash() const noexcept; diff --git a/searchlib/src/vespa/searchlib/docstore/visitcache.h b/searchlib/src/vespa/searchlib/docstore/visitcache.h index 25a7be5ee6c..7aa264bda02 100644 --- a/searchlib/src/vespa/searchlib/docstore/visitcache.h +++ b/searchlib/src/vespa/searchlib/docstore/visitcache.h @@ -23,7 +23,7 @@ public: KeySet() : _keys() { } KeySet(uint32_t key); explicit KeySet(const IDocumentStore::LidVector &keys); - uint32_t hash() const { return _keys.empty() ? 0 : _keys[0]; } + uint32_t hash() const noexcept { return _keys.empty() ? 0 : _keys[0]; } bool operator==(const KeySet &rhs) const { return _keys == rhs._keys; } bool operator<(const KeySet &rhs) const { return _keys < rhs._keys; } bool contains(const KeySet &rhs) const; diff --git a/vespalib/src/vespa/vespalib/stllike/hash_fun.cpp b/vespalib/src/vespa/vespalib/stllike/hash_fun.cpp index 5f4fee06c4a..f057a229098 100644 --- a/vespalib/src/vespa/vespalib/stllike/hash_fun.cpp +++ b/vespalib/src/vespa/vespalib/stllike/hash_fun.cpp @@ -6,7 +6,7 @@ namespace vespalib { size_t -hashValue(const char *str) +hashValue(const char *str) noexcept { return hashValue(str, strlen(str)); } @@ -20,7 +20,7 @@ hashValue(const char *str) * @return hash value of input **/ size_t -hashValue(const void * buf, size_t sz) +hashValue(const void * buf, size_t sz) noexcept { return XXH64(buf, sz, 0); } diff --git a/vespalib/src/vespa/vespalib/stllike/hash_fun.h b/vespalib/src/vespa/vespalib/stllike/hash_fun.h index c5f239f2b4e..089e8b14039 100644 --- a/vespalib/src/vespa/vespalib/stllike/hash_fun.h +++ b/vespalib/src/vespa/vespalib/stllike/hash_fun.h @@ -8,71 +8,71 @@ namespace vespalib { template<typename K> struct hash { // specializations operate as functor for known key types - size_t operator() (const K & v) const { + size_t operator() (const K & v) const noexcept(noexcept(v.hash())) { return v.hash(); } }; template<> struct hash<char> { - size_t operator() (char arg) const { return arg; } + size_t operator() (char arg) const noexcept { return arg; } }; template<> struct hash<signed char> { - size_t operator() (signed char arg) const { return arg; } + size_t operator() (signed char arg) const noexcept { return arg; } }; template<> struct hash<short> { - size_t operator() (short arg) const { return arg; } + size_t operator() (short arg) const noexcept { return arg; } }; template<> struct hash<int> { - size_t operator() (int arg) const { return arg; } + size_t operator() (int arg) const noexcept { return arg; } }; template<> struct hash<long> { - size_t operator() (long arg) const { return arg; } + size_t operator() (long arg) const noexcept { return arg; } }; template<> struct hash<long long> { - size_t operator() (long long arg) const { return arg; } + size_t operator() (long long arg) const noexcept { return arg; } }; template<> struct hash<unsigned char> { - size_t operator() (unsigned char arg) const { return arg; } + size_t operator() (unsigned char arg) const noexcept { return arg; } }; template<> struct hash<unsigned short> { - size_t operator() (unsigned short arg) const { return arg; } + size_t operator() (unsigned short arg) const noexcept { return arg; } }; template<> struct hash<unsigned int> { - size_t operator() (unsigned int arg) const { return arg; } + size_t operator() (unsigned int arg) const noexcept { return arg; } }; template<> struct hash<unsigned long> { - size_t operator() (unsigned long arg) const { return arg; } + size_t operator() (unsigned long arg) const noexcept { return arg; } }; template<> struct hash<unsigned long long> { - size_t operator() (unsigned long long arg) const { return arg; } + size_t operator() (unsigned long long arg) const noexcept { return arg; } }; template<> struct hash<float> { union U { float f; uint32_t i; }; - size_t operator() (float arg) const { U t; t.f = arg; return t.i; } + size_t operator() (float arg) const noexcept { U t; t.f = arg; return t.i; } }; template<> struct hash<double> { union U { double f; uint64_t i; }; - size_t operator() (double arg) const { U t; t.f = arg; return t.i; } + size_t operator() (double arg) const noexcept { U t; t.f = arg; return t.i; } }; template<typename T> struct hash<T *> { - size_t operator() (const T * arg) const { return size_t(arg); } + size_t operator() (const T * arg) const noexcept { return size_t(arg); } }; template<typename T> struct hash<const T *> { - size_t operator() (const T * arg) const { return size_t(arg); } + size_t operator() (const T * arg) const noexcept { return size_t(arg); } }; // reuse old string hash function -size_t hashValue(const char *str); -size_t hashValue(const void *str, size_t sz); +size_t hashValue(const char *str) noexcept; +size_t hashValue(const void *str, size_t sz) noexcept; struct hash_strings { - size_t operator() (const vespalib::string & arg) const { return hashValue(arg.c_str()); } - size_t operator() (vespalib::stringref arg) const { return hashValue(arg.data(), arg.size()); } - size_t operator() (const char * arg) const { return hashValue(arg); } - size_t operator() (const std::string& arg) const { return hashValue(arg.c_str()); } + size_t operator() (const vespalib::string & arg) const noexcept { return hashValue(arg.c_str()); } + size_t operator() (vespalib::stringref arg) const noexcept { return hashValue(arg.data(), arg.size()); } + size_t operator() (const char * arg) const noexcept { return hashValue(arg); } + size_t operator() (const std::string& arg) const noexcept { return hashValue(arg.c_str()); } }; template<> struct hash<const char *> : hash_strings { }; @@ -81,11 +81,11 @@ template<> struct hash<vespalib::string> : hash_strings {}; template<> struct hash<std::string> : hash_strings {}; template<typename V> struct size { - size_t operator() (const V & arg) const { return arg.size(); } + size_t operator() (const V & arg) const noexcept { return arg.size(); } }; template<typename V> struct zero { - size_t operator() (const V & ) const { return 0; } + size_t operator() (const V & ) const noexcept { return 0; } }; } // namespace vespalib |