nlib
WordFilter.h
[詳解]
1 
2 #pragma once
3 #ifndef INCLUDE_NN_NLIB_SUCCINCT_WORDFILTER_H_
4 #define INCLUDE_NN_NLIB_SUCCINCT_WORDFILTER_H_
5 
7 
8 #if defined(_MSC_VER) && defined(nx_succinct_EXPORTS)
9 #undef NLIB_VIS_PUBLIC
10 #define NLIB_VIS_PUBLIC NLIB_WINEXPORT
11 #endif
12 
13 NLIB_NAMESPACE_BEGIN
14 namespace succinct {
15 
17  public:
18  typedef bool (*MatchCallback)(const char* first, const char* last, uint32_t nodeid,
19  void* user_obj);
20  WordFilter() NLIB_NOEXCEPT : prv_(NULL) {}
24  WordFilter().swap(*this);
25  this->swap(rhs);
26  return *this;
27  }
28 #ifdef NLIB_CXX11_RVALUE_REFERENCES
29  NLIB_MOVE_MEMBER_HELPER_X_COMMON(WordFilter)
30  WordFilter(WordFilter&& rhs) NLIB_NOEXCEPT; // NOLINT
31 #endif
33  WordFilterPrivate* tmp = rhs.prv_;
34  rhs.prv_ = prv_;
35  this->prv_ = tmp;
36  }
37  bool Init() NLIB_NOEXCEPT;
38  void Match(const char* doc, MatchCallback callback, void* user_obj) NLIB_NOEXCEPT {
39  this->Match(doc, nlib_strlen(doc), callback, user_obj);
40  }
41  void Match(const char* doc, MatchCallback callback) NLIB_NOEXCEPT {
42  this->Match(doc, callback, NULL);
43  }
44  void Match(const char* data, size_t n, MatchCallback callback, void* user_obj) NLIB_NOEXCEPT;
45  void Match(const char* data, size_t n, MatchCallback callback) NLIB_NOEXCEPT {
46  this->Match(data, n, callback, NULL);
47  }
48  void Reset() NLIB_NOEXCEPT;
49  bool Export(BinaryWriter* w) const NLIB_NOEXCEPT;
50  bool Import(BinaryReader* r) NLIB_NOEXCEPT;
51 
52  private:
53  class WordFilterPrivate;
54  WordFilterPrivate* prv_;
55  friend class WordFilterBuilder;
57 };
58 
60  public:
61  WordFilterBuilder() NLIB_NOEXCEPT : prv_(NULL) {}
63  bool Init() NLIB_NOEXCEPT;
64  WordFilter* Build() NLIB_NOEXCEPT;
65  bool AddWord(const char* str) NLIB_NOEXCEPT;
66  bool AddWords(const char* str, size_t len) NLIB_NOEXCEPT;
67  bool AddWords(const char* str) NLIB_NOEXCEPT {
68  return AddWords(str, nlib_strlen(str));
69  }
70  bool AddExcludeWord(const char* str) NLIB_NOEXCEPT;
71  bool AddExcludeWords(const char* str, size_t len) NLIB_NOEXCEPT;
72  bool AddExcludeWords(const char* str) NLIB_NOEXCEPT {
73  return AddExcludeWords(str, nlib_strlen(str));
74  }
75 
76  private:
77  struct WordFilterBuilderPrivate;
78  WordFilterBuilderPrivate* prv_;
80 };
81 
82 } // namespace succinct
83 NLIB_NAMESPACE_END
84 
85 #if defined(_MSC_VER) && defined(nx_succinct_EXPORTS)
86 #undef NLIB_VIS_PUBLIC
87 #define NLIB_VIS_PUBLIC NLIB_WINIMPORT
88 #endif
89 
90 #endif // INCLUDE_NN_NLIB_SUCCINCT_WORDFILTER_H_
#define NLIB_DISALLOW_COPY_AND_ASSIGN(TypeName)
TypeName で指定されたクラスのコピーコンストラクタと代入演算子を禁止します。
Definition: Config.h:145
void swap(WordFilter &rhs) noexcept
オブジェクトの内容をスワップします。
Definition: WordFilter.h:32
void Match(const char *doc, MatchCallback callback, void *user_obj) noexcept
文字列を検査して登録されている文字列を検出します。
Definition: WordFilter.h:38
#define NLIB_VIS_PUBLIC
関数やクラス等のシンボルをライブラリの外部に公開します。
Definition: Platform_unix.h:61
文章内に事前に指定した語の集合が含まれていないかどうかチェックするためのクラスです。 ...
Definition: WordFilter.h:16
空の構造体で、関数の引数をムーブすべきことを示すために利用されます。
Definition: Config.h:231
Aho Corasick法を用いた文字列検索を行うためのクラスが定義されています。
WordFilter() noexcept
コンストラクタです。
Definition: WordFilter.h:20
WordFilter & assign(WordFilter &rhs, move_tag) noexcept
swapを利用したムーブにより代入します。
Definition: WordFilter.h:23
#define NLIB_NOEXCEPT
環境に合わせてnoexcept 又は同等の定義がされます。
Definition: Config.h:86
bool AddExcludeWords(const char *str) noexcept
例外語の集合が入った配列から文字列を追加します。文字列の区切りは改行(CRLFかLF)である必要があります。 ...
Definition: WordFilter.h:72
size_t nlib_strlen(const char *s)
内部でstrlen()を呼び出します。独自の実装が動作する場合もあります。
語と除外語に対応するWordFilterオブジェクトを作成するクラスです。
Definition: WordFilter.h:59
ストリーム(OutputStream)にバイナリを書き込むクラスです。
Definition: BinaryWriter.h:13
bool AddWords(const char *str) noexcept
検出対象の文字列の集合が入った配列から文字列を追加します。文字列の区切りは改行(CRLFかLF)である必要が...
Definition: WordFilter.h:67
#define NLIB_FINAL
利用可能であればfinalが定義されます。そうでない場合は空文字列です。
Definition: Config.h:211
ストリーム(InputStream)からバイナリを読み込むクラスです。
Definition: BinaryReader.h:13
WordFilterBuilder() noexcept
コンストラクタです。
Definition: WordFilter.h:61