[Groonga-commit] groonga/grnxx at b0419d1 [new_data_types] Add Vector<T>::raw_size(). (#116)

Back to archive index

susumu.yata null+****@clear*****
Tue Nov 25 16:48:21 JST 2014


susumu.yata	2014-11-25 16:48:21 +0900 (Tue, 25 Nov 2014)

  New Revision: b0419d15a600c13a052c646d5cbf2f6cac8a29ae
  https://github.com/groonga/grnxx/commit/b0419d15a600c13a052c646d5cbf2f6cac8a29ae

  Message:
    Add Vector<T>::raw_size(). (#116)

  Modified files:
    include/grnxx/data_types/vector/bool.hpp
    include/grnxx/data_types/vector/float.hpp
    include/grnxx/data_types/vector/geo_point.hpp
    include/grnxx/data_types/vector/int.hpp
    include/grnxx/data_types/vector/text.hpp
    lib/grnxx/impl/column/vector/bool.cpp
    lib/grnxx/impl/column/vector/float.cpp
    lib/grnxx/impl/column/vector/geo_point.cpp
    lib/grnxx/impl/column/vector/int.cpp
    lib/grnxx/impl/column/vector/text.cpp
    lib/grnxx/impl/expression.cpp

  Modified: include/grnxx/data_types/vector/bool.hpp (+13 -7)
===================================================================
--- include/grnxx/data_types/vector/bool.hpp    2014-11-25 16:08:18 +0900 (c9a4409)
+++ include/grnxx/data_types/vector/bool.hpp    2014-11-25 16:48:21 +0900 (e7ce613)
@@ -22,8 +22,7 @@ class Vector<Bool> {
   explicit constexpr Vector(NA) : data_(nullptr), size_(NA()) {}
 
   Bool operator[](Int i) const {
-    if (is_na() || (static_cast<uint64_t>(i.raw()) >=
-                    static_cast<uint64_t>(size_.raw()))) {
+    if (is_na() || (static_cast<size_t>(i.raw()) >= raw_size())) {
       return Bool::na();
     }
     return data_[i.raw()];
@@ -38,9 +37,12 @@ class Vector<Bool> {
   constexpr Int size() const {
     return size_;
   }
+  constexpr size_t raw_size() const {
+    return size_.raw();
+  }
 
   constexpr bool is_empty() const {
-    return size_.raw() == 0;
+    return raw_size() == 0;
   }
   constexpr bool is_na() const {
     return size_.is_na();
@@ -50,7 +52,7 @@ class Vector<Bool> {
   Bool operator==(const Vector &rhs) const {
     Bool has_equal_size = (size_ == rhs.size_);
     if (has_equal_size.is_true()) {
-      return Bool(std::memcmp(data_, rhs.data_, size_.raw()) == 0);
+      return Bool(std::memcmp(data_, rhs.data_, raw_size()) == 0);
     }
     return has_equal_size;
   }
@@ -58,7 +60,7 @@ class Vector<Bool> {
   Bool operator!=(const Vector &rhs) const {
     Bool has_not_equal_size = (size_ != rhs.size_);
     if (has_not_equal_size.is_false()) {
-      return Bool(std::memcmp(data_, rhs.data_, size_.raw()) != 0);
+      return Bool(std::memcmp(data_, rhs.data_, raw_size()) != 0);
     }
     return has_not_equal_size;
   }
@@ -70,7 +72,7 @@ class Vector<Bool> {
     if (is_na()) {
       return true;
     }
-    return std::memcmp(data_, rhs.data_, size_.raw()) == 0;
+    return std::memcmp(data_, rhs.data_, raw_size()) == 0;
   }
   bool unmatch(const Vector &rhs) const {
     if (size_.unmatch(rhs.size_)) {
@@ -79,7 +81,7 @@ class Vector<Bool> {
     if (is_na()) {
       return false;
     }
-    return std::memcmp(data_, rhs.data_, size_.raw()) != 0;
+    return std::memcmp(data_, rhs.data_, raw_size()) != 0;
   }
 
   static constexpr DataType type() {
@@ -93,6 +95,10 @@ class Vector<Bool> {
     return Vector(NA());
   }
 
+  static constexpr size_t raw_na_size() {
+    return Int::na().raw();
+  }
+
  private:
   const Bool *data_;
   Int size_;

  Modified: include/grnxx/data_types/vector/float.hpp (+13 -7)
===================================================================
--- include/grnxx/data_types/vector/float.hpp    2014-11-25 16:08:18 +0900 (8e7edb8)
+++ include/grnxx/data_types/vector/float.hpp    2014-11-25 16:48:21 +0900 (2821b7a)
@@ -24,8 +24,7 @@ class Vector<Float> {
   explicit constexpr Vector(NA) : data_(nullptr), size_(NA()) {}
 
   Float operator[](Int i) const {
-    if (is_na() || (static_cast<uint64_t>(i.raw()) >=
-                    static_cast<uint64_t>(size_.raw()))) {
+    if (is_na() || (static_cast<size_t>(i.raw()) >= raw_size())) {
       return Float::na();
     }
     return data_[i.raw()];
@@ -40,9 +39,12 @@ class Vector<Float> {
   constexpr Int size() const {
     return size_;
   }
+  constexpr size_t raw_size() const {
+    return size_.raw();
+  }
 
   constexpr bool is_empty() const {
-    return size_.raw() == 0;
+    return raw_size() == 0;
   }
   constexpr bool is_na() const {
     return size_.is_na();
@@ -52,7 +54,7 @@ class Vector<Float> {
   Bool operator==(const Vector &rhs) const {
     Bool has_equal_size = (size_ == rhs.size_);
     if (has_equal_size.is_true()) {
-      size_t size = size_.raw();
+      size_t size = raw_size();
       for (size_t i = 0; i < size; ++i) {
         if ((data_[i].raw() != rhs.data_[i].raw()) &&
             (!data_[i].is_na() || !rhs.data_[i].is_na())) {
@@ -66,7 +68,7 @@ class Vector<Float> {
   Bool operator!=(const Vector &rhs) const {
     Bool has_not_equal_size = (size_ != rhs.size_);
     if (has_not_equal_size.is_false()) {
-      size_t size = size_.raw();
+      size_t size = raw_size();
       for (size_t i = 0; i < size; ++i) {
         if ((data_[i].raw() != rhs.data_[i].raw()) &&
             (!data_[i].is_na() || !rhs.data_[i].is_na())) {
@@ -85,7 +87,7 @@ class Vector<Float> {
       return true;
     }
     // TODO: This is because raw values are not normalized.
-    size_t size = size_.raw();
+    size_t size = raw_size();
     for (size_t i = 0; i < size; ++i) {
       if (data_[i].unmatch(rhs.data_[i])) {
         return false;
@@ -101,7 +103,7 @@ class Vector<Float> {
       return false;
     }
     // TODO: This is because raw values are not normalized.
-    size_t size = size_.raw();
+    size_t size = raw_size();
     for (size_t i = 0; i < size; ++i) {
       if (data_[i].unmatch(rhs.data_[i])) {
         return true;
@@ -121,6 +123,10 @@ class Vector<Float> {
     return Vector(NA());
   }
 
+  static constexpr size_t raw_na_size() {
+    return Int::na().raw();
+  }
+
  private:
   const Float *data_;
   Int size_;

  Modified: include/grnxx/data_types/vector/geo_point.hpp (+13 -9)
===================================================================
--- include/grnxx/data_types/vector/geo_point.hpp    2014-11-25 16:08:18 +0900 (5bdbcba)
+++ include/grnxx/data_types/vector/geo_point.hpp    2014-11-25 16:48:21 +0900 (a738115)
@@ -24,8 +24,7 @@ class Vector<GeoPoint> {
   explicit constexpr Vector(NA) : data_(nullptr), size_(NA()) {}
 
   GeoPoint operator[](Int i) const {
-    if (is_na() || (static_cast<uint64_t>(i.raw()) >=
-                    static_cast<uint64_t>(size_.raw()))) {
+    if (is_na() || (static_cast<size_t>(i.raw()) >= raw_size())) {
       return GeoPoint::na();
     }
     return data_[i.raw()];
@@ -40,9 +39,12 @@ class Vector<GeoPoint> {
   constexpr Int size() const {
     return size_;
   }
+  constexpr size_t raw_size() const {
+    return size_.raw();
+  }
 
   constexpr bool is_empty() const {
-    return size_.raw() == 0;
+    return raw_size() == 0;
   }
   constexpr bool is_na() const {
     return size_.is_na();
@@ -53,7 +55,7 @@ class Vector<GeoPoint> {
     Bool has_equal_size = (size_ == rhs.size_);
     if (has_equal_size.is_true()) {
       return Bool(std::memcmp(data_, rhs.data_,
-                              sizeof(GeoPoint) * size_.raw()) == 0);
+                              sizeof(GeoPoint) * raw_size()) == 0);
     }
     return has_equal_size;
   }
@@ -62,7 +64,7 @@ class Vector<GeoPoint> {
     Bool has_not_equal_size = (size_ != rhs.size_);
     if (has_not_equal_size.is_false()) {
       return Bool(std::memcmp(data_, rhs.data_,
-                              sizeof(GeoPoint) * size_.raw()) != 0);
+                              sizeof(GeoPoint) * raw_size()) != 0);
     }
     return has_not_equal_size;
   }
@@ -74,8 +76,7 @@ class Vector<GeoPoint> {
     if (is_na()) {
       return true;
     }
-    return std::memcmp(data_, rhs.data_,
-                       sizeof(GeoPoint) * size_.raw()) == 0;
+    return std::memcmp(data_, rhs.data_, sizeof(GeoPoint) * raw_size()) == 0;
   }
   bool unmatch(const Vector &rhs) const {
     if (size_.unmatch(rhs.size_)) {
@@ -84,8 +85,7 @@ class Vector<GeoPoint> {
     if (is_na()) {
       return false;
     }
-    return std::memcmp(data_, rhs.data_,
-                       sizeof(GeoPoint) * size_.raw()) != 0;
+    return std::memcmp(data_, rhs.data_, sizeof(GeoPoint) * raw_size()) != 0;
   }
 
   static constexpr DataType type() {
@@ -99,6 +99,10 @@ class Vector<GeoPoint> {
     return Vector(NA());
   }
 
+  static constexpr size_t raw_na_size() {
+    return Int::na().raw();
+  }
+
  private:
   const GeoPoint *data_;
   Int size_;

  Modified: include/grnxx/data_types/vector/int.hpp (+13 -7)
===================================================================
--- include/grnxx/data_types/vector/int.hpp    2014-11-25 16:08:18 +0900 (4857a1b)
+++ include/grnxx/data_types/vector/int.hpp    2014-11-25 16:48:21 +0900 (4570c1c)
@@ -22,8 +22,7 @@ class Vector<Int> {
   explicit constexpr Vector(NA) : data_(nullptr), size_(NA()) {}
 
   Int operator[](Int i) const {
-    if (is_na() || (static_cast<uint64_t>(i.raw()) >=
-                    static_cast<uint64_t>(size_.raw()))) {
+    if (is_na() || (static_cast<size_t>(i.raw()) >= raw_size())) {
       return Int::na();
     }
     return data_[i.raw()];
@@ -38,9 +37,12 @@ class Vector<Int> {
   constexpr Int size() const {
     return size_;
   }
+  constexpr size_t raw_size() const {
+    return size_.raw();
+  }
 
   constexpr bool is_empty() const {
-    return size_.raw() == 0;
+    return raw_size() == 0;
   }
   constexpr bool is_na() const {
     return size_.is_na();
@@ -51,7 +53,7 @@ class Vector<Int> {
     Bool has_equal_size = (size_ == rhs.size_);
     if (has_equal_size.is_true()) {
       return Bool(std::memcmp(data_, rhs.data_,
-                              sizeof(Int) * size_.raw()) == 0);
+                              sizeof(Int) * raw_size()) == 0);
     }
     return has_equal_size;
   }
@@ -60,7 +62,7 @@ class Vector<Int> {
     Bool has_not_equal_size = (size_ != rhs.size_);
     if (has_not_equal_size.is_false()) {
       return Bool(std::memcmp(data_, rhs.data_,
-                              sizeof(Int) * size_.raw()) != 0);
+                              sizeof(Int) * raw_size()) != 0);
     }
     return has_not_equal_size;
   }
@@ -72,7 +74,7 @@ class Vector<Int> {
     if (is_na()) {
       return true;
     }
-    return std::memcmp(data_, rhs.data_, sizeof(Int) * size_.raw()) == 0;
+    return std::memcmp(data_, rhs.data_, sizeof(Int) * raw_size()) == 0;
   }
   bool unmatch(const Vector &rhs) const {
     if (size_.unmatch(rhs.size_)) {
@@ -81,7 +83,7 @@ class Vector<Int> {
     if (is_na()) {
       return false;
     }
-    return std::memcmp(data_, rhs.data_, sizeof(Int) * size_.raw()) != 0;
+    return std::memcmp(data_, rhs.data_, sizeof(Int) * raw_size()) != 0;
   }
 
   static constexpr DataType type() {
@@ -95,6 +97,10 @@ class Vector<Int> {
     return Vector(NA());
   }
 
+  static constexpr size_t raw_na_size() {
+    return Int::na().raw();
+  }
+
  private:
   const Int *data_;
   Int size_;

  Modified: include/grnxx/data_types/vector/text.hpp (+13 -7)
===================================================================
--- include/grnxx/data_types/vector/text.hpp    2014-11-25 16:08:18 +0900 (ee8fc89)
+++ include/grnxx/data_types/vector/text.hpp    2014-11-25 16:48:21 +0900 (6a08857)
@@ -33,8 +33,7 @@ class Vector<Text> {
         data_(nullptr) {}
 
   Text operator[](Int i) const {
-    if (is_na() || (static_cast<uint64_t>(i.raw()) >=
-                    static_cast<uint64_t>(size_.raw()))) {
+    if (is_na() || (static_cast<size_t>(i.raw()) >= raw_size())) {
       return Text::na();
     }
     if (is_direct_) {
@@ -51,9 +50,12 @@ class Vector<Text> {
   constexpr Int size() const {
     return size_;
   }
+  constexpr size_t raw_size() const {
+    return size_.raw();
+  }
 
   constexpr bool is_empty() const {
-    return size_.raw() == 0;
+    return raw_size() == 0;
   }
   constexpr bool is_na() const {
     return size_.is_na();
@@ -63,7 +65,7 @@ class Vector<Text> {
   Bool operator==(const Vector &rhs) const {
     Bool has_equal_size = (size_ == rhs.size_);
     if (has_equal_size.is_true()) {
-      size_t size = size_.raw();
+      size_t size = raw_size();
       for (size_t i = 0; i < size; ++i) {
         Text lhs_text = (*this)[grnxx::Int(i)];
         Text rhs_text = rhs[grnxx::Int(i)];
@@ -80,7 +82,7 @@ class Vector<Text> {
   Bool operator!=(const Vector &rhs) const {
     Bool has_not_equal_size = (size_ != rhs.size_);
     if (has_not_equal_size.is_false()) {
-      size_t size = size_.raw();
+      size_t size = raw_size();
       for (size_t i = 0; i < size; ++i) {
         Text lhs_text = (*this)[grnxx::Int(i)];
         Text rhs_text = rhs[grnxx::Int(i)];
@@ -102,7 +104,7 @@ class Vector<Text> {
       return true;
     }
     // TODO: This is because raw values are not normalized.
-    size_t size = size_.raw();
+    size_t size = raw_size();
     for (size_t i = 0; i < size; ++i) {
       // TODO: This can be improved.
       if (operator[](grnxx::Int(i)).unmatch(rhs[grnxx::Int(i)])) {
@@ -119,7 +121,7 @@ class Vector<Text> {
       return false;
     }
     // TODO: This is because raw values are not normalized.
-    size_t size = size_.raw();
+    size_t size = raw_size();
     for (size_t i = 0; i < size; ++i) {
       // TODO: This can be improved.
       if (operator[](grnxx::Int(i)).unmatch(rhs[grnxx::Int(i)])) {
@@ -140,6 +142,10 @@ class Vector<Text> {
     return Vector(NA());
   }
 
+  static constexpr size_t raw_na_size() {
+    return Int::na().raw();
+  }
+
  private:
   struct Header {
     size_t offset;

  Modified: lib/grnxx/impl/column/vector/bool.cpp (+1 -1)
===================================================================
--- lib/grnxx/impl/column/vector/bool.cpp    2014-11-25 16:08:18 +0900 (a27d78f)
+++ lib/grnxx/impl/column/vector/bool.cpp    2014-11-25 16:48:21 +0900 (dd9f156)
@@ -52,7 +52,7 @@ void Column<Vector<Bool>>::set(Int row_id, const Datum &datum) {
 //  }
   // TODO: Error handling.
   size_t offset = bodies_.size();
-  size_t size = new_value.size().raw();
+  size_t size = new_value.raw_size();
   uint64_t header;
   if (size < 0xFFFF) {
     bodies_.resize(offset + size);

  Modified: lib/grnxx/impl/column/vector/float.cpp (+1 -1)
===================================================================
--- lib/grnxx/impl/column/vector/float.cpp    2014-11-25 16:08:18 +0900 (d721669)
+++ lib/grnxx/impl/column/vector/float.cpp    2014-11-25 16:48:21 +0900 (1dbc067)
@@ -52,7 +52,7 @@ void Column<Vector<Float>>::set(Int row_id, const Datum &datum) {
 //  }
   // TODO: Error handling.
   size_t offset = bodies_.size();
-  size_t size = new_value.size().raw();
+  size_t size = new_value.raw_size();
   uint64_t header;
   if (size < 0xFFFF) {
     bodies_.resize(offset + size);

  Modified: lib/grnxx/impl/column/vector/geo_point.cpp (+1 -1)
===================================================================
--- lib/grnxx/impl/column/vector/geo_point.cpp    2014-11-25 16:08:18 +0900 (236b1da)
+++ lib/grnxx/impl/column/vector/geo_point.cpp    2014-11-25 16:48:21 +0900 (dc5d9cb)
@@ -52,7 +52,7 @@ void Column<Vector<GeoPoint>>::set(Int row_id, const Datum &datum) {
 //  }
   // TODO: Error handling.
   size_t offset = bodies_.size();
-  size_t size = new_value.size().raw();
+  size_t size = new_value.raw_size();
   uint64_t header;
   if (size < 0xFFFF) {
     bodies_.resize(offset + size);

  Modified: lib/grnxx/impl/column/vector/int.cpp (+2 -2)
===================================================================
--- lib/grnxx/impl/column/vector/int.cpp    2014-11-25 16:08:18 +0900 (90a1156)
+++ lib/grnxx/impl/column/vector/int.cpp    2014-11-25 16:48:21 +0900 (b5f810a)
@@ -35,7 +35,7 @@ void Column<Vector<Int>>::set(Int row_id, const Datum &datum) {
     return;
   }
   if (reference_table_) {
-    size_t new_value_size = new_value.size().raw();
+    size_t new_value_size = new_value.raw_size();
     for (size_t i = 0; i < new_value_size; ++i) {
       if (!reference_table_->test_row(new_value[i])) {
         throw "Invalid reference";  // TODO
@@ -67,7 +67,7 @@ void Column<Vector<Int>>::set(Int row_id, const Datum &datum) {
 //  }
   // TODO: Error handling.
   size_t offset = bodies_.size();
-  size_t size = new_value.size().raw();
+  size_t size = new_value.raw_size();
   uint64_t header;
   if (size < 0xFFFF) {
     bodies_.resize(offset + size);

  Modified: lib/grnxx/impl/column/vector/text.cpp (+1 -1)
===================================================================
--- lib/grnxx/impl/column/vector/text.cpp    2014-11-25 16:08:18 +0900 (d244c67)
+++ lib/grnxx/impl/column/vector/text.cpp    2014-11-25 16:48:21 +0900 (89114cc)
@@ -51,7 +51,7 @@ void Column<Vector<Text>>::set(Int row_id, const Datum &datum) {
 //    throw;
 //  }
   // TODO: Error handling.
-  size_t new_value_size = new_value.size().raw();
+  size_t new_value_size = new_value.raw_size();
   size_t text_headers_offset = text_headers_.size();
   text_headers_.resize(text_headers_offset + new_value_size);
   size_t total_size = 0;

  Modified: lib/grnxx/impl/expression.cpp (+4 -4)
===================================================================
--- lib/grnxx/impl/expression.cpp    2014-11-25 16:08:18 +0900 (05a5a8e)
+++ lib/grnxx/impl/expression.cpp    2014-11-25 16:48:21 +0900 (4784f53)
@@ -271,7 +271,7 @@ class ConstantNode<Vector<T>> : public TypedNode<Vector<T>> {
   explicit ConstantNode(const Value &value)
       : TypedNode<Value>(),
         value_() {
-    size_t value_size = value.size().raw();
+    size_t value_size = value.raw_size();
     value_.resize(value_size);
     for (size_t i = 0; i < value_size; ++i) {
       value_[i] = value[i];
@@ -1409,7 +1409,7 @@ void VectorDereferenceNode<T>::evaluate(ArrayCRef<Record> records,
   size_t total_size = 0;
   for (size_t i = 0; i < records.size(); ++i) {
     if (!this->arg1_values_[i].is_na()) {
-      total_size += this->arg1_values_[i].size().raw();
+      total_size += this->arg1_values_[i].raw_size();
     }
   }
   temp_records_.resize(block_size_);
@@ -1422,7 +1422,7 @@ void VectorDereferenceNode<T>::evaluate(ArrayCRef<Record> records,
       continue;
     }
     Float score = records[i].score;
-    size_t value_size = this->arg1_values_[i].size().raw();
+    size_t value_size = this->arg1_values_[i].raw_size();
     for (size_t j = 0; j < value_size; ++j) {
       temp_records_[count] = Record(this->arg1_values_[i][j], score);
       ++count;
@@ -1442,7 +1442,7 @@ void VectorDereferenceNode<T>::evaluate(ArrayCRef<Record> records,
     if (this->arg1_values_[i].is_na()) {
       results[i] = Value::na();
     } else {
-      size_t size = this->arg1_values_[i].size().raw();
+      size_t size = this->arg1_values_[i].raw_size();
       results[i] = Value(&result_pool[offset], size);
       offset += size;
     }
-------------- next part --------------
HTML����������������������������...
下載 



More information about the Groonga-commit mailing list
Back to archive index