susumu.yata
null+****@clear*****
Tue Jun 17 13:19:42 JST 2014
susumu.yata 2014-06-17 13:19:42 +0900 (Tue, 17 Jun 2014) New Revision: 8254a1d107547bc47eeb64a276f7cb6412a553de https://github.com/groonga/grnxx/commit/8254a1d107547bc47eeb64a276f7cb6412a553de Message: Rename create_*_node() to push_*(). Modified files: new-interface/expression-builder.hpp Modified: new-interface/expression-builder.hpp (+20 -31) =================================================================== --- new-interface/expression-builder.hpp 2014-06-12 17:22:22 +0900 (24d108b) +++ new-interface/expression-builder.hpp 2014-06-17 13:19:42 +0900 (b081243) @@ -5,6 +5,7 @@ namespace grnxx { +// 後置記法(逆ポーランド記法)に基づいて式のオブジェクトを構築する. class ExpressionBuilder { public: ExpressionBuilder(); @@ -15,67 +16,55 @@ class ExpressionBuilder { // 評価結果の型を取得する. virtual DataType data_type() const = 0; - // 定数に対応するノードを作成する. + // 定数をスタックに積む. // 成功すれば true を返す. // 失敗したときは *error にその内容を格納し, false を返す. // - // 作成されたノードはスタックに積まれる. - // // 失敗する状況としては,以下のようなものが挙げられる. // - 指定された定数が不正である. // - リソースを確保できない. - virtual bool create_datum_node(Error *error, - const Datum &datum) = 0; + virtual bool push_datum(Error *error, const Datum &datum) = 0; - // カラムに対応するノードを作成する. + // カラムをスタックに積む. // 成功すれば true を返す. // 失敗したときは *error にその内容を格納し, false を返す. // - // column_name に "_id" を指定すれば行 ID に対応するノード, - // "_score" を指定すればスコアに対応するノードを作成する. - // - // 作成されたノードはスタックに積まれる. + // column_name に "_id" を指定すれば行 ID に対応する擬似カラム, + // "_score" を指定すればスコアに対応する擬似カラムをスタックに積む. // // 失敗する状況としては,以下のようなものが挙げられる. // - 指定されたカラムが存在しない. // - リソースを確保できない. - virtual bool create_column_node(Error *error, - const char *column_name) = 0; + virtual bool push_column(Error *error, const char *column_name) = 0; - // 演算子に対応するノードを作成する. + // 演算子に対応する被演算子をスタックから降ろし,演算子をスタックに積む. // 成功すれば true を返す. // 失敗したときは *error にその内容を格納し, false を返す. // - // スタックに積まれているノードを降ろして被演算子とするため, - // 被演算子を作成した後に演算子を作成しなければならない. - // これは後置式(逆ポーランド記法)の考え方にもとづく. - // - // 作成されたノードはスタックに積まれる. + // 被演算子はあらかじめスタックに積んでおく必要があり, + // 被演算子の型や数に問題があるときは失敗する. // // 失敗する状況としては,以下のようなものが挙げられる. - // - 引数がスタックに存在しない. - // - 演算子と引数が対応していない. - // - 演算子が求める引数の型と実際の引数の型が異なる. + // - 演算子と被演算子が対応していない. + // - 被演算子がスタックに存在しない. + // - 演算子が求める引数の型と被演算子の型が異なる. // - リソースを確保できない. - virtual bool create_operator_node( - Error *error, - OperatorType operator_type) = 0; + virtual bool push_operator(Error *error, OperatorType operator_type) = 0; // 保持しているノードやスタックを破棄する. virtual void clear(); - // 構築された式を取得する. + // 構築中の式を完成させ,その所有権を取得する. // 成功すれば有効なオブジェクトへのポインタを返す. // 失敗したときは *error にその内容を格納し, nullptr を返す. // - // 保持しているノードやスタックは破棄される. - // - // TODO: 内部で作成した Expression の所有権を返すだけにしたい. + // 所有権を返すため,保持しているノードやスタックは破棄する. // // 失敗する状況としては,以下のようなものが挙げられる. - // - ノードがひとつもない. - // - スタックに二つ以上のノードが存在する. - // - 式が完成していないことを示す. + // - スタックの要素数が一つでない. + // - 何も積まれていない. + // - 積まれたものが使われずに残っている. + // - 式が完成していないことを示す. // - リソースを確保できない. virtual std::unique_ptr<Expression> release(Error *error); }; -------------- next part -------------- HTML����������������������������...다운로드