xref: /MusicPlayer2/scintilla/lexlib/WordList.h (revision 8af74909132ed5e696cb05b6689ae4baf14c1c96)
1*8af74909SZhong Yang // Scintilla source code edit control
2*8af74909SZhong Yang /** @file WordList.h
3*8af74909SZhong Yang  ** Hold a list of words.
4*8af74909SZhong Yang  **/
5*8af74909SZhong Yang // Copyright 1998-2010 by Neil Hodgson <[email protected]>
6*8af74909SZhong Yang // The License.txt file describes the conditions under which this software may be distributed.
7*8af74909SZhong Yang 
8*8af74909SZhong Yang #ifndef WORDLIST_H
9*8af74909SZhong Yang #define WORDLIST_H
10*8af74909SZhong Yang 
11*8af74909SZhong Yang namespace Scintilla {
12*8af74909SZhong Yang 
13*8af74909SZhong Yang /**
14*8af74909SZhong Yang  */
15*8af74909SZhong Yang class WordList {
16*8af74909SZhong Yang 	// Each word contains at least one character - a empty word acts as sentinel at the end.
17*8af74909SZhong Yang 	char **words;
18*8af74909SZhong Yang 	char *list;
19*8af74909SZhong Yang 	int len;
20*8af74909SZhong Yang 	bool onlyLineEnds;	///< Delimited by any white space or only line ends
21*8af74909SZhong Yang 	int starts[256];
22*8af74909SZhong Yang public:
23*8af74909SZhong Yang 	explicit WordList(bool onlyLineEnds_ = false);
24*8af74909SZhong Yang 	~WordList();
25*8af74909SZhong Yang 	operator bool() const noexcept;
26*8af74909SZhong Yang 	bool operator!=(const WordList &other) const noexcept;
27*8af74909SZhong Yang 	int Length() const noexcept;
28*8af74909SZhong Yang 	void Clear() noexcept;
29*8af74909SZhong Yang 	bool Set(const char *s);
30*8af74909SZhong Yang 	bool InList(const char *s) const noexcept;
31*8af74909SZhong Yang 	bool InListAbbreviated(const char *s, const char marker) const noexcept;
32*8af74909SZhong Yang 	bool InListAbridged(const char *s, const char marker) const noexcept;
33*8af74909SZhong Yang 	const char *WordAt(int n) const noexcept;
34*8af74909SZhong Yang };
35*8af74909SZhong Yang 
36*8af74909SZhong Yang }
37*8af74909SZhong Yang 
38*8af74909SZhong Yang #endif
39