[Groonga-commit] groonga/grnxx at 08743f3 [new_data_types] Add Text::raw_size(). (#116)

Back to archive index

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


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

  New Revision: 08743f37cdea8602350e64b0dd3518197bd00f5f
  https://github.com/groonga/grnxx/commit/08743f37cdea8602350e64b0dd3518197bd00f5f

  Message:
    Add Text::raw_size(). (#116)

  Modified files:
    include/grnxx/data_types/scalar/text.hpp
    lib/grnxx/impl/column/scalar/text.cpp
    lib/grnxx/impl/column/vector/text.cpp
    lib/grnxx/impl/expression.cpp

  Modified: include/grnxx/data_types/scalar/text.hpp (+17 -10)
===================================================================
--- include/grnxx/data_types/scalar/text.hpp    2014-11-25 15:20:33 +0900 (9259206)
+++ include/grnxx/data_types/scalar/text.hpp    2014-11-25 16:07:48 +0900 (b01e31b)
@@ -35,9 +35,12 @@ class 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();
@@ -46,14 +49,14 @@ class Text {
   Bool operator==(const Text &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;
   }
   Bool operator!=(const Text &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;
   }
@@ -63,7 +66,7 @@ class Text {
       return Bool::na();
     }
     size_t min_size = has_less_size.is_true() ?
-                      size_.raw() : rhs.size_.raw();
+                      raw_size() : rhs.raw_size();
     int data_result = std::memcmp(data_, rhs.data_, min_size);
     return (data_result < 0) ? Bool(true) :
            ((data_result == 0) ? has_less_size : Bool(false));
@@ -77,7 +80,7 @@ class Text {
       return Bool::na();
     }
     size_t min_size = has_less_or_equal_size.is_true() ?
-                      size_.raw() : rhs.size_.raw();
+                      raw_size() : rhs.raw_size();
     int data_result = std::memcmp(data_, rhs.data_, min_size);
     return (data_result < 0) ? Bool(true) :
            ((data_result == 0) ? has_less_or_equal_size : Bool(false));
@@ -89,15 +92,15 @@ class Text {
   Bool starts_with(const Text &rhs) const {
     Bool has_greater_or_equal_size = (size_ >= rhs.size_);
     if (has_greater_or_equal_size.is_true()) {
-      return Bool(std::memcmp(data_, rhs.data_, rhs.size_.raw()) == 0);
+      return Bool(std::memcmp(data_, rhs.data_, rhs.raw_size()) == 0);
     }
     return has_greater_or_equal_size;
   }
   Bool ends_with(const Text &rhs) const {
     Bool has_greater_or_equal_size = (size_ >= rhs.size_);
     if (has_greater_or_equal_size.is_true()) {
-      return Bool(std::memcmp(data_ + size_.raw() - rhs.size_.raw(),
-                              rhs.data_, rhs.size_.raw()) == 0);
+      return Bool(std::memcmp(data_ + raw_size() - rhs.raw_size(),
+                              rhs.data_, rhs.raw_size()) == 0);
     }
     return has_greater_or_equal_size;
   }
@@ -109,7 +112,7 @@ class Text {
     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 Text &rhs) const {
     if (size_.unmatch(rhs.size_)) {
@@ -118,7 +121,7 @@ class Text {
     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() {
@@ -132,6 +135,10 @@ class Text {
     return Text(NA());
   }
 
+  static constexpr size_t raw_na_size() {
+    return Int::na().raw();
+  }
+
  private:
   const char *data_;
   Int size_;

  Modified: lib/grnxx/impl/column/scalar/text.cpp (+3 -3)
===================================================================
--- lib/grnxx/impl/column/scalar/text.cpp    2014-11-25 15:20:33 +0900 (27cea84)
+++ lib/grnxx/impl/column/scalar/text.cpp    2014-11-25 16:07:48 +0900 (fd0604a)
@@ -61,7 +61,7 @@ void Column<Text>::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);
@@ -235,7 +235,7 @@ void Column<Text>::set_key_attribute() {
   for (size_t i = 0; i < valid_size; ++i) try {
     Text value = get(grnxx::Int(i));
     if (!value.is_na()) {
-      if (!set.insert(String(value.data(), value.size().raw())).second) {
+      if (!set.insert(String(value.data(), value.raw_size())).second) {
         throw "Key duplicate";  // TODO
       }
     }
@@ -315,7 +315,7 @@ void Column<Text>::set_key(Int row_id, const Datum &key) {
 //  }
   // TODO: Error handling.
   size_t offset = bodies_.size();
-  size_t size = value.size().raw();
+  size_t size = value.raw_size();
   uint64_t header;
   if (size < 0xFFFF) {
     bodies_.resize(offset + size);

  Modified: lib/grnxx/impl/column/vector/text.cpp (+3 -3)
===================================================================
--- lib/grnxx/impl/column/vector/text.cpp    2014-11-25 15:20:33 +0900 (b06b4c6)
+++ lib/grnxx/impl/column/vector/text.cpp    2014-11-25 16:07:48 +0900 (d244c67)
@@ -57,7 +57,7 @@ void Column<Vector<Text>>::set(Int row_id, const Datum &datum) {
   size_t total_size = 0;
   for (size_t i = 0; i < new_value_size; ++i) {
     if (!new_value[i].is_na()) {
-      total_size += new_value[i].size().raw();
+      total_size += new_value[i].raw_size();
     }
   }
   size_t bodies_offset = bodies_.size();
@@ -68,8 +68,8 @@ void Column<Vector<Text>>::set(Int row_id, const Datum &datum) {
     text_headers_[text_headers_offset + i].size = new_value[i].size();
     if (!new_value[i].is_na()) {
       std::memcpy(&bodies_[bodies_offset],
-                  new_value[i].data(), new_value[i].size().raw());
-      bodies_offset += new_value[i].size().raw();
+                  new_value[i].data(), new_value[i].raw_size());
+      bodies_offset += new_value[i].raw_size();
     }
   }
 }

  Modified: lib/grnxx/impl/expression.cpp (+1 -1)
===================================================================
--- lib/grnxx/impl/expression.cpp    2014-11-25 15:20:33 +0900 (265486f)
+++ lib/grnxx/impl/expression.cpp    2014-11-25 16:07:48 +0900 (05a5a8e)
@@ -244,7 +244,7 @@ class ConstantNode<Text> : public TypedNode<Text> {
   explicit ConstantNode(const Value &value)
       : TypedNode<Value>(),
         value_() {
-    value_.assign(value.data(), value.size().raw());
+    value_.assign(value.data(), value.raw_size());
   }
   ~ConstantNode() = default;
 
-------------- next part --------------
HTML����������������������������...
下載 



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