16 #ifndef INCLUDE_NN_NLIB_SUCCINCT_TRIE_H_ 17 #define INCLUDE_NN_NLIB_SUCCINCT_TRIE_H_ 25 #include "nn/nlib/Swap.h" 28 #if defined(_MSC_VER) && defined(nx_succinct_EXPORTS) 29 #undef NLIB_VIS_PUBLIC 30 #define NLIB_VIS_PUBLIC NLIB_WINEXPORT 40 NLIB_DEFMOVE_PIMPL(
Trie);
42 typedef
bool (*MatchCallback)(const
char* first, const
char* last, uint32_t nodeid,
44 void Match(const
char* cstr, MatchCallback callback,
void* user_obj)
NLIB_NOEXCEPT {
45 this->Match(cstr,
nlib_strlen(cstr), callback, user_obj);
48 this->Match(cstr,
nlib_strlen(cstr), callback,
nullptr);
50 void Match(
const void* data,
size_t n, MatchCallback callback,
void* user_obj)
NLIB_NOEXCEPT;
52 Match(data, n, callback,
nullptr);
56 MatchBackward(
const void* data,
size_t n, MatchCallback callback,
void* user_obj)
NLIB_NOEXCEPT;
58 MatchBackward(data, n, callback,
nullptr);
62 #ifdef __cpp_rvalue_references 63 std::pair<errno_t, Nlist<uint32_t> >
64 GetCommonPrefixWords(
const void* prefix,
size_t n)
NLIB_NOEXCEPT;
74 MatchCallback callback,
void* user_obj,
bool isfwd)
NLIB_NOEXCEPT;
91 #ifdef __cpp_rvalue_references 100 struct TrieBuilderPrivate;
101 TrieBuilderPrivate* prv_;
108 NLIB_DEFINE_STD_SWAP(::nlib_ns::succinct::Trie)
109 NLIB_DEFINE_STD_SWAP(::nlib_ns::succinct::TrieBuilder)
111 #if defined(_MSC_VER) && defined(nx_succinct_EXPORTS) 112 #undef NLIB_VIS_PUBLIC 113 #define NLIB_VIS_PUBLIC NLIB_WINIMPORT 116 #endif // INCLUDE_NN_NLIB_SUCCINCT_TRIE_H_
rank/select操作をベースとした基本的なクラスが定義されています。
LOUDSを構築したり、LOUDSにアクセスしたりするためのクラスが定義されています。
constexpr Trie() noexcept
デフォルトコンストラクタです。実行後Init()による初期化を必要とします。
void Match(const char *cstr, MatchCallback callback) noexcept
上記関数の引数省略版で、nullptrを引数として渡します。
#define NLIB_DISALLOW_COPY_AND_ASSIGN(TypeName)
TypeName で指定されたクラスのコピーコンストラクタと代入演算子を禁止します。
void Match(const void *data, size_t n, MatchCallback callback) noexcept
上記関数の引数省略版で、nullptrを引数として渡します。
std::unique_ptr< Trie > Build2() noexcept
Trieオブジェクトを作成してunique_ptrで返します。
~TrieBuilder() noexcept
デストラクタです。
C文字列のベクタをreallocベースで実装しています。
bool AddWords(const char *str) noexcept
検出対象の文字列の集合が入った配列から文字列を追加します。文字列の区切りは改行(CRLFかLF)である必要が...
std::vectorに似ていますが、コピーできないオブジェクトを格納可能なクラスが定義されています。 ...
constexpr TrieBuilder() noexcept
デフォルトコンストラクタです。実行後Init()による初期化を必要とします。
~Trie() noexcept
デストラクタです。
#define NLIB_NOEXCEPT
環境に合わせてnoexcept 又は同等の定義がされます。
#define NLIB_CEXPR
利用可能であればconstexprが定義されます。そうでない場合は空文字列です。
void MatchBackward(const void *data, size_t n, MatchCallback callback) noexcept
上記関数の引数省略版で、nullptrを引数として渡します。
ストリーム(OutputStream)にバイナリを書き込むクラスです。
#define NLIB_FINAL
利用可能であればfinalが定義されます。そうでない場合は空文字列です。
ストリーム(InputStream)からバイナリを読み込むクラスです。
PODを要素に持つベクタをreallocベースで実装しています。