susumu.yata
null+****@clear*****
Thu Jun 12 16:09:01 JST 2014
susumu.yata 2014-06-12 16:09:01 +0900 (Thu, 12 Jun 2014) New Revision: d1630e1936cd05159373509a2d43a70bfae0e53a https://github.com/groonga/grnxx/commit/d1630e1936cd05159373509a2d43a70bfae0e53a Message: Add ExpressionBuilder::release() instead of create_expression(). Modified files: new-interface/expression-builder.hpp Modified: new-interface/expression-builder.hpp (+15 -5) =================================================================== --- new-interface/expression-builder.hpp 2014-06-12 11:55:42 +0900 (b689fbd) +++ new-interface/expression-builder.hpp 2014-06-12 16:09:01 +0900 (24d108b) @@ -31,6 +31,9 @@ class ExpressionBuilder { // 成功すれば true を返す. // 失敗したときは *error にその内容を格納し, false を返す. // + // column_name に "_id" を指定すれば行 ID に対応するノード, + // "_score" を指定すればスコアに対応するノードを作成する. + // // 作成されたノードはスタックに積まれる. // // 失敗する状況としては,以下のようなものが挙げられる. @@ -47,6 +50,8 @@ class ExpressionBuilder { // 被演算子を作成した後に演算子を作成しなければならない. // これは後置式(逆ポーランド記法)の考え方にもとづく. // + // 作成されたノードはスタックに積まれる. + // // 失敗する状況としては,以下のようなものが挙げられる. // - 引数がスタックに存在しない. // - 演算子と引数が対応していない. @@ -56,18 +61,23 @@ class ExpressionBuilder { Error *error, OperatorType operator_type) = 0; - // すべてのノードを破棄する. + // 保持しているノードやスタックを破棄する. virtual void clear(); - // 最後に作成したノードを根とする構文木に対応する式を作成する. + // 構築された式を取得する. // 成功すれば有効なオブジェクトへのポインタを返す. // 失敗したときは *error にその内容を格納し, nullptr を返す. // + // 保持しているノードやスタックは破棄される. + // + // TODO: 内部で作成した Expression の所有権を返すだけにしたい. + // // 失敗する状況としては,以下のようなものが挙げられる. + // - ノードがひとつもない. + // - スタックに二つ以上のノードが存在する. + // - 式が完成していないことを示す. // - リソースを確保できない. - virtual std::unique_ptr<Expression> create_expression( - Error *error, - const ExpressionOptions &options) const; + virtual std::unique_ptr<Expression> release(Error *error); }; } // namespace grnxx -------------- next part -------------- HTML����������������������������... 下载