X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=folly%2FRange.h;h=97a7f1d082ba213f6c2025a855199bb171bdd00d;hb=c495dd260d76ece28f44033a5c151d3c1ce747bd;hp=59e14bd5df84bb00b94ee975a347f879b079304f;hpb=998f63317f40d92d9e430a1c27ecd687b03c53e3;p=folly.git diff --git a/folly/Range.h b/folly/Range.h index 59e14bd5..97a7f1d0 100644 --- a/folly/Range.h +++ b/folly/Range.h @@ -22,6 +22,7 @@ #include #include #include +#include #include #include @@ -217,7 +218,7 @@ public: template ::const_type = 0> Range(const std::string& str, std::string::size_type startFrom) { if (UNLIKELY(startFrom > str.size())) { - throw std::out_of_range("index out of range"); + std::__throw_out_of_range("index out of range"); } b_ = str.data() + startFrom; e_ = str.data() + str.size(); @@ -228,7 +229,7 @@ public: std::string::size_type startFrom, std::string::size_type size) { if (UNLIKELY(startFrom > str.size())) { - throw std::out_of_range("index out of range"); + std::__throw_out_of_range("index out of range"); } b_ = str.data() + startFrom; if (str.size() - startFrom < size) { @@ -251,7 +252,7 @@ public: template ::const_type = 0> Range(const fbstring& str, fbstring::size_type startFrom) { if (UNLIKELY(startFrom > str.size())) { - throw std::out_of_range("index out of range"); + std::__throw_out_of_range("index out of range"); } b_ = str.data() + startFrom; e_ = str.data() + str.size(); @@ -261,7 +262,7 @@ public: Range(const fbstring& str, fbstring::size_type startFrom, fbstring::size_type size) { if (UNLIKELY(startFrom > str.size())) { - throw std::out_of_range("index out of range"); + std::__throw_out_of_range("index out of range"); } b_ = str.data() + startFrom; if (str.size() - startFrom < size) { @@ -426,12 +427,12 @@ public: } value_type& at(size_t i) { - if (i >= size()) throw std::out_of_range("index out of range"); + if (i >= size()) std::__throw_out_of_range("index out of range"); return b_[i]; } const value_type& at(size_t i) const { - if (i >= size()) throw std::out_of_range("index out of range"); + if (i >= size()) std::__throw_out_of_range("index out of range"); return b_[i]; } @@ -441,6 +442,19 @@ public: // (The above advice does not apply if you are targeting a 32-bit system.) // // Works only for Range and Range + // + // + // ** WANT TO GET RID OF THIS LINT? ** + // + // A) Use a better hash function (*cough*folly::Hash*cough*), but + // only if you don't serialize data in a format that depends on + // this formula (ie the writer and reader assume this exact hash + // function is used). + // + // B) If you have to use this exact function then make your own hasher + // object and copy the body over (see thrift example: D3972362). + // https://github.com/facebook/fbthrift/commit/f8ed502e24ab4a32a9d5f266580 + FOLLY_DEPRECATED("Replace with folly::Hash if the hash is not serialized") uint32_t hash() const { // Taken from fbi/nstring.h: // Quick and dirty bernstein hash...fine for short ascii strings @@ -453,21 +467,21 @@ public: void advance(size_type n) { if (UNLIKELY(n > size())) { - throw std::out_of_range("index out of range"); + std::__throw_out_of_range("index out of range"); } b_ += n; } void subtract(size_type n) { if (UNLIKELY(n > size())) { - throw std::out_of_range("index out of range"); + std::__throw_out_of_range("index out of range"); } e_ -= n; } Range subpiece(size_type first, size_type length = npos) const { if (UNLIKELY(first > size())) { - throw std::out_of_range("index out of range"); + std::__throw_out_of_range("index out of range"); } return Range(b_ + first, std::min(length, size() - first)); @@ -628,7 +642,7 @@ public: } else if (e == e_) { e_ = b; } else { - throw std::out_of_range("index out of range"); + std::__throw_out_of_range("index out of range"); } } @@ -971,13 +985,6 @@ operator>=(const T& lhs, const U& rhs) { return StringPiece(lhs) >= StringPiece(rhs); } -// Do NOT use this, use SpookyHashV2 instead, see commment on hash() above. -struct StringPieceHash { - std::size_t operator()(const StringPiece str) const { - return static_cast(str.hash()); - } -}; - /** * Finds substrings faster than brute force by borrowing from Boyer-Moore */