16 #ifndef INCLUDE_NN_NLIB_SUCCINCT_TRIE_H_ 17 #define INCLUDE_NN_NLIB_SUCCINCT_TRIE_H_ 25 #include "nn/nlib/Swap.h" 27 #if defined(_MSC_VER) && defined(nx_succinct_EXPORTS) 28 #undef NLIB_VIS_PUBLIC 29 #define NLIB_VIS_PUBLIC NLIB_WINEXPORT 39 NLIB_DEFMOVE_PIMPL(
Trie);
41 TriePrivate* tmp = rhs.prv_;
42 rhs.prv_ = this->prv_;
46 typedef bool (*MatchCallback)(
const char* first,
const char* last, uint32_t nodeid,
48 void Match(
const char* cstr, MatchCallback callback,
void* user_obj) NLIB_NOEXCEPT {
49 this->Match(cstr,
nlib_strlen(cstr), callback, user_obj);
51 void Match(
const char* cstr, MatchCallback callback) NLIB_NOEXCEPT {
52 this->Match(cstr,
nlib_strlen(cstr), callback,
nullptr);
54 void Match(
const void* data,
size_t n, MatchCallback callback,
56 void Match(
const void* data,
size_t n, MatchCallback callback) NLIB_NOEXCEPT {
57 Match(data, n, callback,
nullptr);
60 void MatchBackward(
const void* data,
size_t n, MatchCallback callback,
62 void MatchBackward(
const void* data,
size_t n, MatchCallback callback) NLIB_NOEXCEPT {
63 MatchBackward(data, n, callback,
nullptr);
65 errno_t GetCommonPrefixWords(
const void* prefix,
size_t n,
73 MatchCallback callback,
void* user_obj,
bool isfwd)
NLIB_NOEXCEPT;
94 return AddWords(str, strlen(str));
98 struct TrieBuilderPrivate;
99 TrieBuilderPrivate* prv_;
106 NLIB_DEFINE_STD_SWAP(::nlib_ns::succinct::Trie)
107 NLIB_DEFINE_STD_SWAP(::nlib_ns::succinct::TrieBuilder)
109 #if defined(_MSC_VER) && defined(nx_succinct_EXPORTS) 110 #undef NLIB_VIS_PUBLIC 111 #define NLIB_VIS_PUBLIC NLIB_WINIMPORT 114 #endif // INCLUDE_NN_NLIB_SUCCINCT_TRIE_H_
rank/select操作をベースとした基本的なクラスが定義されています。
LOUDSを構築したり、LOUDSにアクセスしたりするためのクラスが定義されています。
void swap(Trie &rhs) noexcept
オブジェクトの内容をスワップします。
void Match(const char *cstr, MatchCallback callback, void *user_obj) noexcept
文字列を検査してTrieに登録されている文字列を検出します。
constexpr Trie() noexcept
コンストラクタです。
void Match(const char *cstr, MatchCallback callback) noexcept
Match(cstr, callback, NULL)を実行します。
#define NLIB_DISALLOW_COPY_AND_ASSIGN(TypeName)
TypeName で指定されたクラスのコピーコンストラクタと代入演算子を禁止します。
void Match(const void *data, size_t n, MatchCallback callback) noexcept
Match(data, n, callback, NULL)を実行します。
~TrieBuilder() noexcept
デストラクタです。
C文字列のベクタをreallocベースで実装しています。
bool AddWords(const char *str) noexcept
検出対象の文字列の集合が入った配列から文字列を追加します。文字列の区切りは改行(CRLFかLF)である必要が...
constexpr TrieBuilder() noexcept
コンストラクタです。
~Trie() noexcept
デストラクタです。
#define NLIB_NOEXCEPT
環境に合わせてnoexcept 又は同等の定義がされます。
#define NLIB_CEXPR
利用可能であればconstexprが定義されます。そうでない場合は空文字列です。
void MatchBackward(const void *data, size_t n, MatchCallback callback) noexcept
MatchBackward(data, n, callback, NULL)を実行します。
ストリーム(OutputStream)にバイナリを書き込むクラスです。
#define NLIB_FINAL
利用可能であればfinalが定義されます。そうでない場合は空文字列です。
ストリーム(InputStream)からバイナリを読み込むクラスです。
PODを要素に持つベクタをreallocベースで実装しています。