[Groonga-commit] groonga/grnxx at 9e6f669 [master] Use force_*() instead of explicit typecast operators.

Back to archive index

susumu.yata null+****@clear*****
Wed Jul 9 17:10:56 JST 2014


susumu.yata	2014-07-09 17:10:56 +0900 (Wed, 09 Jul 2014)

  New Revision: 9e6f669f7d9fbf49a46dc45c32fbb235ac01b1b5
  https://github.com/groonga/grnxx/commit/9e6f669f7d9fbf49a46dc45c32fbb235ac01b1b5

  Message:
    Use force_*() instead of explicit typecast operators.

  Modified files:
    include/grnxx/datum.hpp
    lib/grnxx/column.cpp
    lib/grnxx/expression.cpp
    test/test_grnxx.cpp

  Modified: include/grnxx/datum.hpp (+6 -9)
===================================================================
--- include/grnxx/datum.hpp    2014-07-09 16:27:15 +0900 (d4eefbd)
+++ include/grnxx/datum.hpp    2014-07-09 17:10:56 +0900 (8defb80)
@@ -34,26 +34,23 @@ class Datum {
     return type_;
   }
 
-  // TODO: Typecast operators are dangerous.
-  //       These should not be used.
-  //
   // Force the specified interpretation.
-  explicit operator Bool() const {
+  Bool force_bool() const {
     return bool_;
   }
-  explicit operator Int() const {
+  Int force_int() const {
     return int_;
   }
-  explicit operator Float() const {
+  Float force_float() const {
     return float_;
   }
-  explicit operator Time() const {
+  Time force_time() const {
     return time_;
   }
-  explicit operator GeoPoint() const {
+  GeoPoint force_geo_point() const {
     return geo_point_;
   }
-  explicit operator Text() const {
+  Text force_text() const {
     return text_;
   }
 

  Modified: lib/grnxx/column.cpp (+2 -2)
===================================================================
--- lib/grnxx/column.cpp    2014-07-09 16:27:15 +0900 (ae83f49)
+++ lib/grnxx/column.cpp    2014-07-09 17:10:56 +0900 (a32f687)
@@ -153,7 +153,7 @@ bool BoolColumn::set(Error *error, Int row_id, const Datum &datum) {
   if (!table_->test_row(error, row_id)) {
     return false;
   }
-  values_[row_id] = static_cast<Bool>(datum);
+  values_[row_id] = datum.force_bool();
   return true;
 }
 
@@ -218,7 +218,7 @@ bool IntColumn::set(Error *error, Int row_id, const Datum &datum) {
   if (!table_->test_row(error, row_id)) {
     return false;
   }
-  values_[row_id] = static_cast<Int>(datum);
+  values_[row_id] = datum.force_int();
   return true;
 }
 

  Modified: lib/grnxx/expression.cpp (+2 -4)
===================================================================
--- lib/grnxx/expression.cpp    2014-07-09 16:27:15 +0900 (88830bc)
+++ lib/grnxx/expression.cpp    2014-07-09 17:10:56 +0900 (dbac606)
@@ -326,13 +326,11 @@ bool ExpressionBuilder::push_datum(Error *error, const Datum &datum) {
   unique_ptr<ExpressionDatumNode> node;
   switch (datum.type()) {
     case BOOL_DATA: {
-      node.reset(new (nothrow) ExpressionBoolDatumNode(
-          static_cast<Bool>(datum)));
+      node.reset(new (nothrow) ExpressionBoolDatumNode(datum.force_bool()));
       break;
     }
     case INT_DATA: {
-      node.reset(new (nothrow) ExpressionIntDatumNode(
-          static_cast<Int>(datum)));
+      node.reset(new (nothrow) ExpressionIntDatumNode(datum.force_int()));
       break;
     }
     default: {

  Modified: test/test_grnxx.cpp (+4 -4)
===================================================================
--- test/test_grnxx.cpp    2014-07-09 16:27:15 +0900 (001d90c)
+++ test/test_grnxx.cpp    2014-07-09 17:10:56 +0900 (646a877)
@@ -226,22 +226,22 @@ void test_column() {
 
   assert(bool_column->get(&error, 1, &datum));
   assert(datum.type() == grnxx::BOOL_DATA);
-  assert(!static_cast<grnxx::Bool>(datum));
+  assert(!datum.force_bool());
 
   assert(int_column->get(&error, 1, &datum));
   assert(datum.type() == grnxx::INT_DATA);
-  assert(static_cast<grnxx::Int>(datum) == 0);
+  assert(datum.force_int() == 0);
 
   assert(bool_column->set(&error, 1, grnxx::Bool(true)));
   assert(int_column->set(&error, 1, grnxx::Int(123)));
 
   assert(bool_column->get(&error, 1, &datum));
   assert(datum.type() == grnxx::BOOL_DATA);
-  assert(static_cast<grnxx::Bool>(datum));
+  assert(datum.force_bool());
 
   assert(int_column->get(&error, 1, &datum));
   assert(datum.type() == grnxx::INT_DATA);
-  assert(static_cast<grnxx::Int>(datum) == 123);
+  assert(datum.force_int() == 123);
 }
 
 }  // namespace
-------------- next part --------------
HTML����������������������������...
Download 



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