susumu.yata
null+****@clear*****
Mon Jun 9 12:39:16 JST 2014
susumu.yata 2014-06-09 12:39:16 +0900 (Mon, 09 Jun 2014) New Revision: 1b605235bace0b3ced8aae315b308af0a917dea5 https://github.com/groonga/grnxx/commit/1b605235bace0b3ced8aae315b308af0a917dea5 Message: Change the order of arguments. Modified files: new-interface/column.hpp new-interface/db.hpp new-interface/expression-builder.hpp new-interface/expression.hpp new-interface/index.hpp new-interface/sorter-builder.hpp new-interface/sorter.hpp new-interface/table.hpp Modified: new-interface/column.hpp (+16 -16) =================================================================== --- new-interface/column.hpp 2014-06-04 10:53:19 +0900 (ffffc2d) +++ new-interface/column.hpp 2014-06-09 12:39:16 +0900 (c33f701) @@ -32,10 +32,10 @@ class Column { // - オプションの内容が不正である. // - 十分なリソースを確保できない. // - 索引の数が上限に達している. - virtual Index *create_index(const char *index_name, + virtual Index *create_index(Error *error, + const char *index_name, IndexType index_type, - const IndexOptions &options, - Error *error) = 0; + const IndexOptions &options) = 0; // 索引を破棄する. // 成功すれば true を返す. // 失敗したときは *error にその内容を格納し, false を返す. @@ -45,7 +45,7 @@ class Column { // // 失敗する状況としては,以下のようなものが挙げられる. // - 指定された名前の索引が存在しない. - virtual bool drop_index(const char *index_name, Error *error) = 0; + virtual bool drop_index(Error *error, const char *index_name) = 0; // 索引の名前を変更する. // 成功すれば true を返す. @@ -56,9 +56,9 @@ class Column { // - 指定された名前(new)が索引名の条件を満たさない. // - 指定された名前(new)の索引が存在する. // - 変更前後の名前が同じときは何もせずに成功とする. - virtual bool rename_index(const char *index_name, - const char *new_index_name, - Error *error) = 0; + virtual bool rename_index(Error *error, + const char *index_name, + const char *new_index_name) = 0; // 索引の順番を変更する. // 成功すれば true を返す. @@ -70,9 +70,9 @@ class Column { // // 失敗する状況としては,以下のようなものが挙げられる. // - 指定された名前の索引が存在しない. - virtual bool reorder_index(const char *index_name, - const char *prev_index_name, - Error *error) = 0; + virtual bool reorder_index(Error *error, + const char *index_name, + const char *prev_index_name) = 0; // 索引を取得する. // 成功すれば有効なオブジェクトへのポインタを返す. @@ -84,7 +84,7 @@ class Column { // // 失敗する状況としては,以下のようなものが挙げられる. // - 指定された ID が有効な範囲にない. - virtual Index *get_index(IndexID index_id, Error *error) const = 0; + virtual Index *get_index(Error *error, IndexID index_id) const = 0; // 索引を検索する. // 成功すれば有効なオブジェクトへのポインタを返す. @@ -92,7 +92,7 @@ class Column { // // 失敗する状況としては,以下のようなものが挙げられる. // - 指定された名前の索引が存在しない. - virtual Index *find_index(const char *index_name, Error *error) const = 0; + virtual Index *find_index(Error *error, const char *index_name) const = 0; // TODO: 機能から索引を検索する API が欲しい. // たとえば,範囲検索に使える索引を探す,全文検索に使える索引を探すなど. @@ -119,7 +119,7 @@ class Column { // - 指定された値がカラムの制約にかかる. // - リソースが確保できない. // - 索引の更新に失敗する. - virtual bool set(RowID row_id, const Datum &datum, Error *error) = 0; + virtual bool set(Error *error, RowID row_id, const Datum &datum) = 0; // 値を取得する. // 成功すれば true を返す. @@ -129,7 +129,7 @@ class Column { // // 失敗する状況としては,以下のようなものが挙げられる. // - 指定された行 ID が有効でない. - virtual bool get(RowID row_id, Datum *datum, Error *error) const = 0; + virtual bool get(Error *error, RowID row_id, Datum *datum) const = 0; // 指定された条件を持たす行の ID を取得するためのカーソルを作成する. // 成功すれば有効なオブジェクトへのポインタを返す. @@ -142,8 +142,8 @@ class Column { // - オプションが不正である. // - リソースが確保できない. virtual std::unique_ptr<Cursor> create_cursor( - const CursorOptions &options, - Error *error) const = 0; + Error *error, + const CursorOptions &options) const = 0; protected: Column(); Modified: new-interface/db.hpp (+19 -21) =================================================================== --- new-interface/db.hpp 2014-06-04 10:53:19 +0900 (0a14658) +++ new-interface/db.hpp 2014-06-09 12:39:16 +0900 (3eacb10) @@ -25,9 +25,9 @@ class DB { // - オプションの内容が不正である. // - 十分なリソースを確保できない. // - テーブルの数が上限に達している. - virtual Table *create_table(const char *table_name, - const TableOptions &table_options, - Error *error) = 0; + virtual Table *create_table(Error *error, + const char *table_name, + const TableOptions &table_options) = 0; // テーブルを破棄する. // 成功すれば true を返す. @@ -39,8 +39,8 @@ class DB { // 失敗する状況としては,以下のようなものが挙げられる. // - 指定された名前のテーブルが存在しない. // - 依存関係を解決できない. - virtual bool drop_table(const char *table_name, - Error *error) = 0; + virtual bool drop_table(Error *error, + const char *table_name) = 0; // テーブルの名前を変更する. // 成功すれば true を返す. @@ -52,9 +52,9 @@ class DB { // - 指定された名前(new)のテーブルが存在する. // - 変更前後の名前が同じときは何もせずに成功とする. // - 索引の更新に失敗する. - virtual bool rename_table(const char *table_name, - const char *new_table_name, - Error *error) = 0; + virtual bool rename_table(Error *error, + const char *table_name, + const char *new_table_name) = 0; // テーブルの順番を変更する. // 成功すれば true を返す. @@ -66,9 +66,9 @@ class DB { // // 失敗する状況としては,以下のようなものが挙げられる. // - 指定された名前のテーブルが存在しない. - virtual bool reorder_table(const char *table_name, - const char *prev_table_name, - Error *error) = 0; + virtual bool reorder_table(Error *error, + const char *table_name, + const char *prev_table_name) = 0; // テーブルを取得する. // 成功すれば有効なオブジェクトへのポインタを返す. @@ -80,8 +80,7 @@ class DB { // // 失敗する状況としては,以下のようなものが挙げられる. // - 指定された ID が有効な範囲にない. - virtual Table *get_table(TableID table_id, - Error *error) const = 0; + virtual Table *get_table(Error *error, TableID table_id) const = 0; // テーブルを検索する. // 成功すれば有効なオブジェクトへのポインタを返す. @@ -89,7 +88,7 @@ class DB { // // 失敗する状況としては,以下のようなものが挙げられる. // - 指定された名前のテーブルが存在しない. - virtual Table *find_table(const char *table_name, Error *error) const = 0; + virtual Table *find_table(Error *error, const char *table_name) const = 0; // データベースの内容をファイルに出力する. // 成功すれば true を返す. @@ -114,9 +113,8 @@ class DB { // - 指定された名前のファイルに対するアクセス権限がない. // - 作業領域が確保できない. // - ディスクの空き容量が足りない. - virtual bool save(const char *path, - const DBOptions &options, - Error *error) const = 0; + virtual bool save(Error *error, const char *path, + const DBOptions &options) const = 0; }; // データベースを開く,もしくは作成する. @@ -136,9 +134,9 @@ class DB { // - 指定された名前のファイルに対するアクセス権限がない. // - 指定された名前のファイルがデータベースのファイルではない. // - データベースを構成するファイルが存在しない. -std::unique_ptr<DB> open_db(const char *path, - const DBOptions &options, - Error *error); +std::unique_ptr<DB> open_db(Error *error, + const char *path, + const DBOptions &options); // データベースを削除する. // 成功すれば true を返す. @@ -152,7 +150,7 @@ std::unique_ptr<DB> open_db(const char *path, // - 一部のファイルが欠けていても強制的に残りを削除するオプションは欲しい. // - データベースを開かずにパスのみから推論して削除したいケースもありうる. // - ファイルの削除に失敗する. -bool drop_db(const char *path, const DBOptions &options, Error *error); +bool drop_db(Error *error, const char *path, const DBOptions &options); } // namespace grnxx Modified: new-interface/expression-builder.hpp (+7 -7) =================================================================== --- new-interface/expression-builder.hpp 2014-06-04 10:53:19 +0900 (12b09bf) +++ new-interface/expression-builder.hpp 2014-06-09 12:39:16 +0900 (a816e09) @@ -22,8 +22,8 @@ class ExpressionBuilder { // 失敗する状況としては,以下のようなものが挙げられる. // - 指定された定数が異常値である. // - リソースを確保できない. - virtual ExpressionNode *create_datum_node(const Datum &datum, - Error *error) = 0; + virtual ExpressionNode *create_datum_node(Error *error, + const Datum &datum) = 0; // カラムに対応するノードを作成する. // 成功すれば有効なオブジェクトへのポインタを返す. @@ -32,8 +32,8 @@ class ExpressionBuilder { // 失敗する状況としては,以下のようなものが挙げられる. // - 指定されたカラムが存在しない. // - リソースを確保できない. - virtual ExpressionNode *create_column_node(const char *column_name, - Error *error) = 0; + virtual ExpressionNode *create_column_node(Error *error, + const char *column_name) = 0; // 演算子に対応するノードを作成する. // 成功すれば有効なオブジェクトへのポインタを返す. @@ -43,10 +43,10 @@ class ExpressionBuilder { // - 演算子と引数が対応していない. // - 演算子が求める引数の型・数と実際の引数の型・数が異なる. // - リソースを確保できない. - virtual ExpressionNode *create_operator_node(OperatorType operator_type, + virtual ExpressionNode *create_operator_node(Error *error, + OperatorType operator_type, int64_t num_args, - ExpressionNode **args, - Error *error) = 0; + ExpressionNode **args) = 0; // すべてのノードを破棄する. virtual void clear(); Modified: new-interface/expression.hpp (+9 -9) =================================================================== --- new-interface/expression.hpp 2014-06-04 10:53:19 +0900 (1a8e903) +++ new-interface/expression.hpp 2014-06-09 12:39:16 +0900 (1569681) @@ -35,10 +35,10 @@ class Expression { // - ゼロによる除算が発生する. // - NaN が発生する. // - TODO: これらの取り扱いについては検討の余地がある. - virtual int64_t filter(int64_t num_row_ids, + virtual int64_t filter(Error *error, + int64_t num_row_ids, RowID *row_ids, - double *scores, - Error *error) = 0; + double *scores) = 0; // スコアを調整する. // 成功すれば true を返す. @@ -56,10 +56,10 @@ class Expression { // - ゼロによる除算が発生する. // - NaN が発生する. // - TODO: これらの取り扱いについては検討の余地がある. - virtual bool adjust(int64_t num_row_ids, + virtual bool adjust(Error *error, + int64_t num_row_ids, RowID *row_ids, - double *scores, - Error *error) = 0; + double *scores) = 0; // 行の一覧に対する評価結果を取得する. // 成功すれば true を返す. @@ -79,11 +79,11 @@ class Expression { // - ゼロによる除算が発生する. // - NaN が発生する. // - TODO: これらの取り扱いについては検討の余地がある. - virtual bool evaluate(int64_t num_row_ids, + virtual bool evaluate(Error *error, + int64_t num_row_ids, const RowID *row_ids, const double *scores, - Datum *values, - Error *error) = 0; + Datum *values) = 0; }; } // namespace grnxx Modified: new-interface/index.hpp (+2 -2) =================================================================== --- new-interface/index.hpp 2014-06-04 10:53:19 +0900 (436750f) +++ new-interface/index.hpp 2014-06-09 12:39:16 +0900 (dcd17a9) @@ -30,8 +30,8 @@ class Index { // // TODO: 有効なオプションを取得できるようにしたい. virtual std::unique_ptr<Cursor> create_cursor( - const CursorOptions &options, - Error *error) const = 0; + Error *error, + const CursorOptions &options) const = 0; }; } // namespace grnxx Modified: new-interface/sorter-builder.hpp (+6 -6) =================================================================== --- new-interface/sorter-builder.hpp 2014-06-04 10:53:19 +0900 (94c94fc) +++ new-interface/sorter-builder.hpp 2014-06-09 12:39:16 +0900 (beb2b83) @@ -28,9 +28,9 @@ class Sorter { // 失敗する状況としては,以下のようなものが挙げられる. // - 式の評価結果が大小関係を持たない型になる. // - リソースを確保できない. - virtual bool add_precondition(const Expression *expression, - SortOrder order, - Error *error) const = 0; + virtual bool add_precondition(Error *error, + const Expression *expression, + SortOrder order) const = 0; // 整列条件を追加する. // 成功すれば true を返す. @@ -42,9 +42,9 @@ class Sorter { // 失敗する状況としては,以下のようなものが挙げられる. // - 式の評価結果が大小関係を持たない型になる. // - リソースを確保できない. - virtual bool add_condition(const Expression *expression, - SortOrder order, - Error *error) const = 0; + virtual bool add_condition(Error *error, + const Expression *expression, + SortOrder order) const = 0; // すべての条件を破棄する. virtual void clear(); Modified: new-interface/sorter.hpp (+3 -3) =================================================================== --- new-interface/sorter.hpp 2014-06-04 10:53:19 +0900 (4419c20) +++ new-interface/sorter.hpp 2014-06-09 12:39:16 +0900 (f000bef) @@ -23,9 +23,9 @@ class Sorter { // 失敗する状況としては,以下のようなものが挙げられる. // - 演算において例外が発生する. // - リソースを確保できない. - virtual bool sort(int64_t num_row_ids, RowID *row_ids, - int64_t offset, int64_t limit, - Error *error); + virtual bool sort(Error *error, + int64_t num_row_ids, RowID *row_ids, + int64_t offset, int64_t limit); }; } // namespace grnxx Modified: new-interface/table.hpp (+27 -27) =================================================================== --- new-interface/table.hpp 2014-06-04 10:53:19 +0900 (cb3204f) +++ new-interface/table.hpp 2014-06-09 12:39:16 +0900 (cc2504c) @@ -33,10 +33,10 @@ class Table { // - オプションの内容が不正である. // - 十分なリソースを確保できない. // - カラムの数が上限に達している. - virtual Column *create_column(const char *column_name, + virtual Column *create_column(Error *error, + const char *column_name, ColumnType column_type, - const ColumnOptions &column_options, - Error *error) = 0; + const ColumnOptions &column_options) = 0; // カラムを破棄する. // 成功すれば true を返す. // 失敗したときは *error にその内容を格納し, false を返す. @@ -47,7 +47,7 @@ class Table { // 失敗する状況としては,以下のようなものが挙げられる. // - 指定された名前のカラムが存在しない. // - 依存関係を解決できない. - virtual bool drop_column(const char *column_name, Error *error) = 0; + virtual bool drop_column(Error *error, const char *column_name) = 0; // カラムの名前を変更する. // 成功すれば true を返す. @@ -59,9 +59,9 @@ class Table { // - 指定された名前(new)のカラムが存在する. // - 変更前後の名前が同じときは何もせずに成功とする. // - 索引の更新に失敗する. - virtual bool rename_column(const char *column_name, - const char *new_column_name, - Error *error) = 0; + virtual bool rename_column(Error *error, + const char *column_name, + const char *new_column_name) = 0; // カラムの順番を変更する. // 成功すれば true を返す. @@ -73,9 +73,9 @@ class Table { // // 失敗する状況としては,以下のようなものが挙げられる. // - 指定された名前のカラムが存在しない. - virtual bool reorder_column(const char *column_name, - const char *prev_column_name, - Error *error) = 0; + virtual bool reorder_column(Error *error, + const char *column_name, + const char *prev_column_name) = 0; // カラムを取得する. // 成功すれば有効なオブジェクトへのポインタを返す. @@ -87,7 +87,7 @@ class Table { // // 失敗する状況としては,以下のようなものが挙げられる. // - 指定された ID が有効な範囲にない. - virtual Column *get_column(ColumnID column_id, Error *error) const = 0; + virtual Column *get_column(Error *error, ColumnID column_id) const = 0; // カラムを検索する. // 成功すれば有効なオブジェクトへのポインタを返す. @@ -95,7 +95,7 @@ class Table { // // 失敗する状況としては,以下のようなものが挙げられる. // - 指定された名前のカラムが存在しない. - virtual Column *find_column(const char *column_name, Error *error) const = 0; + virtual Column *find_column(Error *error, const char *column_name) const = 0; // キーカラムを設定する. // 成功すれば true を返す. @@ -107,7 +107,7 @@ class Table { // - 指定されたカラムの型がキーとしてサポートされていない. // - 指定されたカラムに同じ値が複数存在する. // - 一時領域を確保できない. - virtual bool set_key_column(const char *column_name, Error *error) = 0; + virtual bool set_key_column(Error *error, const char *column_name) = 0; // キーカラムを解除する. // 成功すれば true を返す. @@ -155,10 +155,10 @@ class Table { // - 行数が上限に達している. // - 索引の更新に失敗する. // - リソースを確保できない. - virtual bool insert_row(RowID request_row_id, + virtual bool insert_row(Error *error, + RowID request_row_id, const Datum &key, - RowID *result_row_id, - Error *error) = 0; + RowID *result_row_id) = 0; // 行を削除する. // 成功すれば true を返す. @@ -189,7 +189,7 @@ class Table { // 不要になった(参照されなくなった)タグを削除するような用途を考えると, // 削除可能な行をすべて削除するという操作が実現できると便利そうである. // デフラグに似た専用のインタフェースを提供すべきかもしれない. - virtual bool delete_row(RowID row_id, Error *error) = 0; + virtual bool delete_row(Error *error, RowID row_id) = 0; // 行の有効性を確認する. // 指定された行が有効であれば true を返す. @@ -200,7 +200,7 @@ class Table { // 無効と判定される条件としては,以下のようなものが挙げられる. // - 指定された行 ID が有効範囲にない. // - 指定された行は削除されてから再利用されていない. - virtual bool test_row(RowID row_id, Error *error) const = 0; + virtual bool test_row(Error *error, RowID row_id) const = 0; // キーカラムを持つテーブルから行を検索する. // 成功すれば有効な行 ID を返す. @@ -212,7 +212,7 @@ class Table { // - キーカラムが存在しない. // - 指定されたキーをキーカラムの型に変換できない. // - 指定されたキーを持つ行が存在しない. - virtual RowID find_row(const Datum &key, Error *error) const = 0; + virtual RowID find_row(Error *error, const Datum &key) const = 0; // 行 ID を昇順もしくは降順に取得するためのカーソルを作成する. // 成功すれば有効なオブジェクトへのポインタを返す. @@ -225,8 +225,8 @@ class Table { // - オプションが不正である. // - リソースが確保できない. virtual std::unique_ptr<Cursor> create_cursor( - const CursorOptions &options, - Error *error) const = 0; + Error *error, + const CursorOptions &options) const = 0; // 式を構築するためのオブジェクトを作成する. // 成功すれば有効なオブジェクトへのポインタを返す. @@ -248,8 +248,8 @@ class Table { // - オプションが不正である. // - リソースが確保できない. virtual std::unique_ptr<Expression> create_expression_builder( - const ExpressionOptions &options, - Error *error) const = 0; + Error *error, + const ExpressionOptions &options) const = 0; // 整列器を構築するためのオブジェクトを作成する. // 成功すれば有効なオブジェクトへのポインタを返す. @@ -269,8 +269,8 @@ class Table { // - オプションが不正である. // - リソースが確保できない. virtual std::unique_ptr<Sorter> create_sorter_builder( - const SorterOptions &options, - Error *error) const = 0; + Error *error, + const SorterOptions &options) const = 0; // TODO: 分類器については,条件をひとつしか受け付けないのであれば, // create_grouper() が条件を受け取るようにした方がすっきりする. @@ -311,8 +311,8 @@ class Table { // - オプションが不正である. // - リソースが確保できない. virtual std::unique_ptr<Grouper> create_grouper( - const GrouperOptions &options, - Error *error) const = 0; + Error *error, + const GrouperOptions &options) const = 0; // TODO: 検索結果の型を決める. // -------------- next part -------------- HTML����������������������������...Download