nlib
AhoCorasickBuilder.h
[詳解]
1 
2 #pragma once
3 #ifndef INCLUDE_NN_NLIB_SUCCINCT_AHOCORASICKBUILDER_H_
4 #define INCLUDE_NN_NLIB_SUCCINCT_AHOCORASICKBUILDER_H_
5 
6 #include <string.h>
7 #include <utility>
8 
10 
11 #if defined(_MSC_VER) && defined(nx_succinct_EXPORTS)
12 #undef NLIB_VIS_PUBLIC
13 #define NLIB_VIS_PUBLIC NLIB_WINEXPORT
14 #endif
15 
16 NLIB_NAMESPACE_BEGIN
17 namespace succinct {
18 
20  public:
23  bool Init() NLIB_NOEXCEPT;
24  bool AddWord(const char* str) NLIB_NOEXCEPT;
25  bool AddPattern(const void* p, size_t n) NLIB_NOEXCEPT;
26  bool AddWords(const char* str, size_t len) NLIB_NOEXCEPT;
27  bool AddWords(const char* str) NLIB_NOEXCEPT {
28  return AddWords(str, nlib_strlen(str));
29  }
30  AhoCorasick* Build() NLIB_NOEXCEPT;
31  typedef bool (*MatchCallback)(const char* first, const char* last, uint32_t nodeid,
32  void* user_obj);
33  void MatchByBuilder(const char* doc, MatchCallback callback, void* user_obj) NLIB_NOEXCEPT;
34  void MatchByBuilder(const char* doc, MatchCallback callback) NLIB_NOEXCEPT {
35  MatchByBuilder(doc, callback, NULL);
36  }
37  void print() NLIB_NOEXCEPT;
38  size_t GetNumWords() const NLIB_NOEXCEPT;
39  size_t GetNumBytes() const NLIB_NOEXCEPT;
40  size_t GetNumNodes() const NLIB_NOEXCEPT;
41 
42  private:
43  NLIB_VIS_HIDDEN bool SortNodes() NLIB_NOEXCEPT;
44  struct BuildFailureArcTh;
45  struct BuildReportTreeHolderTh;
46  struct BuildFailureTreeHolderTh;
47  struct BuildGotoArcHolderTh;
48  struct BuildLenHolderTh;
49  struct SortNodesTh;
50 
51  private:
52  struct AhoCorasickBuilderPrivate;
53  AhoCorasickBuilderPrivate* prv_;
55 };
56 
57 } // namespace succinct
58 NLIB_NAMESPACE_END
59 
60 #if defined(_MSC_VER) && defined(nx_succinct_EXPORTS)
61 #undef NLIB_VIS_PUBLIC
62 #define NLIB_VIS_PUBLIC NLIB_WINIMPORT
63 #endif
64 
65 #endif // INCLUDE_NN_NLIB_SUCCINCT_AHOCORASICKBUILDER_H_
#define NLIB_DISALLOW_COPY_AND_ASSIGN(TypeName)
TypeName で指定されたクラスのコピーコンストラクタと代入演算子を禁止します。
Definition: Config.h:145
#define NLIB_VIS_HIDDEN
関数やクラス等のシンボルをライブラリの外部に公開しません。
Definition: Platform_unix.h:60
#define NLIB_VIS_PUBLIC
関数やクラス等のシンボルをライブラリの外部に公開します。
Definition: Platform_unix.h:61
AC法を用いて語やパターンの検出を行います。
Definition: AhoCorasick.h:18
AhoCorasickBuilder() noexcept
デフォルトコンストラクタです。
Aho Corasick法を用いた文字列検索を行うためのクラスが定義されています。
#define NLIB_NOEXCEPT
環境に合わせてnoexcept 又は同等の定義がされます。
Definition: Config.h:86
size_t nlib_strlen(const char *s)
内部でstrlen()を呼び出します。独自の実装が動作する場合もあります。
bool AddWords(const char *str) noexcept
検出対象の文字列の集合が入った配列から文字列を追加します。文字列の区切りは改行(CRLFかLF)である必要が...
#define NLIB_FINAL
利用可能であればfinalが定義されます。そうでない場合は空文字列です。
Definition: Config.h:211
AC法で用いるインデックス(オートマトン)を作成します。