susumu.yata
null+****@clear*****
Tue Nov 18 16:49:42 JST 2014
susumu.yata 2014-11-18 16:49:42 +0900 (Tue, 18 Nov 2014) New Revision: b9dd4cd0fe2b6bfd83e18937af59ba78589a68ed https://github.com/groonga/grnxx/commit/b9dd4cd0fe2b6bfd83e18937af59ba78589a68ed Message: Update Expression to support Vector<Text>. (#104, #106) Modified files: include/grnxx/expression.hpp lib/grnxx/impl/expression.cpp lib/grnxx/impl/expression.hpp Modified: include/grnxx/expression.hpp (+4 -6) =================================================================== --- include/grnxx/expression.hpp 2014-11-18 16:40:15 +0900 (f86b129) +++ include/grnxx/expression.hpp 2014-11-18 16:49:42 +0900 (0fef7f8) @@ -153,9 +153,8 @@ class Expression { Array<Vector<Float>> *results) = 0; virtual void evaluate(ArrayCRef<Record> records, Array<Vector<GeoPoint>> *results) = 0; - // TODO -// virtual void evaluate(ArrayCRef<Record> records, -// Array<Vector<Text>> *results) = 0; + virtual void evaluate(ArrayCRef<Record> records, + Array<Vector<Text>> *results) = 0; // Evaluate the expression. // @@ -184,9 +183,8 @@ class Expression { ArrayRef<Vector<Float>> results) = 0; virtual void evaluate(ArrayCRef<Record> records, ArrayRef<Vector<GeoPoint>> results) = 0; - // TODO -// virtual void evaluate(ArrayCRef<Record> records, -// ArrayRef<Vector<Text>> results) = 0; + virtual void evaluate(ArrayCRef<Record> records, + ArrayRef<Vector<Text>> results) = 0; }; class ExpressionBuilder { Modified: lib/grnxx/impl/expression.cpp (+25 -26) =================================================================== --- lib/grnxx/impl/expression.cpp 2014-11-18 16:40:15 +0900 (f9b1275) +++ lib/grnxx/impl/expression.cpp 2014-11-18 16:49:42 +0900 (50ec685) @@ -1582,11 +1582,10 @@ void Expression::evaluate(ArrayCRef<Record> records, _evaluate(records, results); } -// TODO -//void Expression::evaluate(ArrayCRef<Record> records, -// Array<Vector<Text>> *results) { -// _evaluate(records, results); -//} +void Expression::evaluate(ArrayCRef<Record> records, + Array<Vector<Text>> *results) { + _evaluate(records, results); +} void Expression::evaluate(ArrayCRef<Record> records, ArrayRef<Bool> results) { @@ -1633,10 +1632,10 @@ void Expression::evaluate(ArrayCRef<Record> records, _evaluate(records, results); } -//void Expression::evaluate(ArrayCRef<Record> records, -// ArrayRef<Vector<Text>> results) { -// _evaluate(records, results); -//} +void Expression::evaluate(ArrayCRef<Record> records, + ArrayRef<Vector<Text>> results) { + _evaluate(records, results); +} template <typename T> void Expression::_evaluate(ArrayCRef<Record> records, Array<T> *results) { @@ -1866,9 +1865,9 @@ Node *ExpressionBuilder::create_constant_node( case GEO_POINT_VECTOR_DATA: { return new ConstantNode<Vector<GeoPoint>>(datum.as_geo_point_vector()); } -// case TEXT_VECTOR_DATA: { -// return new ConstantNode<Vector<Text>>(datum.as_text_vector()); -// } + case TEXT_VECTOR_DATA: { + return new ConstantNode<Vector<Text>>(datum.as_text_vector()); + } default: { throw "Not supported yet"; // TODO } @@ -1911,9 +1910,9 @@ Node *ExpressionBuilder::create_column_node( case GEO_POINT_VECTOR_DATA: { return new ColumnNode<Vector<GeoPoint>>(column); } -// case TEXT_VECTOR_DATA: { -// return new ColumnNode<Vector<Text>>(column); -// } + case TEXT_VECTOR_DATA: { + return new ColumnNode<Vector<Text>>(column); + } default: { throw "Not supported yet"; // TODO } @@ -2060,10 +2059,10 @@ Node *ExpressionBuilder::create_binary_node( return create_equality_test_node<Vector<GeoPoint>>( operator_type, std::move(arg1), std::move(arg2)); } -// case TEXT_VECTOR_DATA: { -// return create_equality_test_node<Vector<Text>>( -// operator_type, std::move(arg1), std::move(arg2)); -// } + case TEXT_VECTOR_DATA: { + return create_equality_test_node<Vector<Text>>( + operator_type, std::move(arg1), std::move(arg2)); + } default: { throw "Invalid data type"; // TODO } @@ -2259,9 +2258,9 @@ Node *ExpressionBuilder::create_subscript_node(std::unique_ptr<Node> &&arg1, case GEO_POINT_VECTOR_DATA: { return new SubscriptNode<GeoPoint>(std::move(arg1), std::move(arg2)); } -// case TEXT_VECTOR_DATA: { -// return new SubscriptNode<Text>(std::move(arg1), std::move(arg2)); -// } + case TEXT_VECTOR_DATA: { + return new SubscriptNode<Text>(std::move(arg1), std::move(arg2)); + } default: { throw "Invalid data type"; // TODO } @@ -2311,10 +2310,10 @@ Node *ExpressionBuilder::create_dereference_node( return new DereferenceNode<Vector<GeoPoint>>( std::move(arg1), std::move(arg2)); } -// case TEXT_VECTOR_DATA: { -// return new DereferenceNode<Vector<Text>>( -// std::move(arg1), std::move(arg2)); -// } + case TEXT_VECTOR_DATA: { + return new DereferenceNode<Vector<Text>>( + std::move(arg1), std::move(arg2)); + } default: { throw "Invalid data type"; // TODO } Modified: lib/grnxx/impl/expression.hpp (+2 -4) =================================================================== --- lib/grnxx/impl/expression.hpp 2014-11-18 16:40:15 +0900 (f0953f1) +++ lib/grnxx/impl/expression.hpp 2014-11-18 16:49:42 +0900 (e57dba2) @@ -54,8 +54,7 @@ class Expression : public ExpressionInterface { void evaluate(ArrayCRef<Record> records, Array<Vector<Int>> *results); void evaluate(ArrayCRef<Record> records, Array<Vector<Float>> *results); void evaluate(ArrayCRef<Record> records, Array<Vector<GeoPoint>> *results); - // TODO -// void evaluate(ArrayCRef<Record> records, Array<Vector<Text>> *results); + void evaluate(ArrayCRef<Record> records, Array<Vector<Text>> *results); void evaluate(ArrayCRef<Record> records, ArrayRef<Bool> results); void evaluate(ArrayCRef<Record> records, ArrayRef<Int> results); @@ -66,8 +65,7 @@ class Expression : public ExpressionInterface { void evaluate(ArrayCRef<Record> records, ArrayRef<Vector<Int>> results); void evaluate(ArrayCRef<Record> records, ArrayRef<Vector<Float>> results); void evaluate(ArrayCRef<Record> records, ArrayRef<Vector<GeoPoint>> results); - // TODO -// void evaluate(ArrayCRef<Record> records, ArrayRef<Vector<Text>> results); + void evaluate(ArrayCRef<Record> records, ArrayRef<Vector<Text>> results); private: const Table *table_; -------------- next part -------------- HTML����������������������������... Download