susumu.yata
null+****@clear*****
Thu Jun 12 17:22:22 JST 2014
susumu.yata 2014-06-12 17:22:22 +0900 (Thu, 12 Jun 2014) New Revision: d283fc77b9359cf73e749f356ab0c22efa74b4c4 https://github.com/groonga/grnxx/commit/d283fc77b9359cf73e749f356ab0c22efa74b4c4 Message: Add RecordSet::subset(). Modified files: new-interface/expression.hpp new-interface/record-set.hpp new-interface/types.hpp Modified: new-interface/expression.hpp (+2 -6) =================================================================== --- new-interface/expression.hpp 2014-06-12 16:26:58 +0900 (c5e7b59) +++ new-interface/expression.hpp 2014-06-12 17:22:22 +0900 (183b19a) @@ -37,8 +37,7 @@ class Expression { // - NaN が発生する. // - TODO: これらの取り扱いについては検討の余地がある. virtual int64_t filter(Error *error, - RecordSet *record_set, - int64_t offset) = 0; + RecordSet *record_set) = 0; // スコアを調整する. // 成功すれば true を返す. @@ -60,8 +59,7 @@ class Expression { // - NaN が発生する. // - TODO: これらの取り扱いについては検討の余地がある. virtual bool adjust(Error *error, - RecordSet *record_set, - int64_t offset) = 0; + RecordSet *record_set) = 0; // 行の一覧に対する評価結果を取得する. // 成功すれば true を返す. @@ -76,8 +74,6 @@ class Expression { // - リソースが確保できない. virtual bool evaluate(Error *error, const RecordSet &record_set, - int64_t offset, - int64_t limit, Data *values) = 0; }; Modified: new-interface/record-set.hpp (+20 -6) =================================================================== --- new-interface/record-set.hpp 2014-06-12 16:26:58 +0900 (1eb4eba) +++ new-interface/record-set.hpp 2014-06-12 17:22:22 +0900 (2e8ec07) @@ -5,6 +5,11 @@ namespace grnxx { +struct Record { + RowID row_id; + double score; +}; + class RecordSet { public: RecordSet(); @@ -12,15 +17,24 @@ class RecordSet { // 所属するテーブルを取得する. Table *table() const; - // レコード ID の最小値を取得する. - RecordID min_record_id() const; - // レコード ID の最大値を取得する. - RecordID max_record_id() const; + // レコード数を取得する. + int64_t num_records() const; + + // レコードを取得する. + // 不正なレコード ID を指定したときの動作は未定義である. + Record get(int64_t i) const; // 行 ID を取得する. - RowID get_row_id(RecordID record_id) const; + // 不正なレコード ID を指定したときの動作は未定義である. + RowID get_row_id(int64_t i) const; + // スコアを取得する. - double get_score(RecordID record_id) const; + // 不正なレコード ID を指定したときの動作は未定義である. + double get_score(int64_t i) const; + + // 一部を取得する. + // 不正な範囲を指定したときの動作は未定義である. + RecordSet subset(int64_t offset, int64_t count) const; // スコアを正規化する. // 成功すれば true を返す. Modified: new-interface/types.hpp (+0 -1) =================================================================== --- new-interface/types.hpp 2014-06-12 16:26:58 +0900 (438a81a) +++ new-interface/types.hpp 2014-06-12 17:22:22 +0900 (9ff7ce1) @@ -31,7 +31,6 @@ using TableID = int64_t; using ColumnID = int64_t; using IndexID = int64_t; using RowID = int64_t; -using RecordID = int64_t; constexpr RowID NULL_ROW_ID = RowID(0); constexpr RowID MIN_ROW_ID = RowID(1); -------------- next part -------------- HTML����������������������������... Télécharger