diff options
author | Nirbhay Choubey <nirbhay@mariadb.com> | 2014-12-05 12:33:02 -0500 |
---|---|---|
committer | Nirbhay Choubey <nirbhay@mariadb.com> | 2014-12-05 12:33:02 -0500 |
commit | 3bb02f3e6d70687b02c6902fd6478e8c328608f8 (patch) | |
tree | 7962068cae78450246a484cf95cbe5cf2e37382a /storage/mroonga/vendor/groonga/lib/dat/prefix-cursor.hpp | |
parent | a4cdd20d49a5a6ca0eb7346b7b9e898ac5e7995b (diff) | |
parent | ffc0ef63164e9a121d8a02323afe32a82299171e (diff) | |
download | mariadb-git-3bb02f3e6d70687b02c6902fd6478e8c328608f8.tar.gz |
bzr merge -rtag:mariadb-10.0.15 maria/10.0
Diffstat (limited to 'storage/mroonga/vendor/groonga/lib/dat/prefix-cursor.hpp')
-rw-r--r-- | storage/mroonga/vendor/groonga/lib/dat/prefix-cursor.hpp | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/storage/mroonga/vendor/groonga/lib/dat/prefix-cursor.hpp b/storage/mroonga/vendor/groonga/lib/dat/prefix-cursor.hpp new file mode 100644 index 00000000000..7a84228cefa --- /dev/null +++ b/storage/mroonga/vendor/groonga/lib/dat/prefix-cursor.hpp @@ -0,0 +1,80 @@ +/* -*- c-basic-offset: 2 -*- */ +/* Copyright(C) 2011 Brazil + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License version 2.1 as published by the Free Software Foundation. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef GRN_DAT_PREFIX_CURSOR_HPP_ +#define GRN_DAT_PREFIX_CURSOR_HPP_ + +#include "cursor.hpp" +#include "vector.hpp" + +namespace grn { +namespace dat { + +class Trie; + +class GRN_DAT_API PrefixCursor : public Cursor { + public: + PrefixCursor(); + ~PrefixCursor(); + + void open(const Trie &trie, + const String &str, + UInt32 min_length = 0, + UInt32 offset = 0, + UInt32 limit = MAX_UINT32, + UInt32 flags = 0); + + void close(); + + const Key &next(); + + UInt32 offset() const { + return offset_; + } + UInt32 limit() const { + return limit_; + } + UInt32 flags() const { + return flags_; + } + + private: + const Trie *trie_; + UInt32 offset_; + UInt32 limit_; + UInt32 flags_; + + Vector<UInt32> buf_; + UInt32 cur_; + UInt32 end_; + + PrefixCursor(const Trie &trie, + UInt32 offset, UInt32 limit, UInt32 flags); + + UInt32 fix_flags(UInt32 flags) const; + void init(const String &str, UInt32 min_length); + void swap(PrefixCursor *cursor); + + // Disallows copy and assignment. + PrefixCursor(const PrefixCursor &); + PrefixCursor &operator=(const PrefixCursor &); +}; + +} // namespace dat +} // namespace grn + +#endif // GRN_DAT_PREFIX_CURSOR_HPP_ |