[Groonga-commit] groonga/grnxx at 8254a1d [master] Rename create_*_node() to push_*().

Back to archive index

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����������������������������...
다운로드 



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