123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- #ifndef BASE_I18N_BREAK_ITERATOR_H_
- #define BASE_I18N_BREAK_ITERATOR_H_
- #include <stddef.h>
- #include "base/i18n/base_i18n_export.h"
- #include "base/macros.h"
- #include "base/strings/string16.h"
- #include "base/strings/string_piece.h"
- namespace base {
- namespace i18n {
- class BASE_I18N_EXPORT BreakIterator {
- public:
- enum BreakType {
- BREAK_WORD,
- BREAK_LINE,
-
-
-
- BREAK_SPACE = BREAK_LINE,
- BREAK_NEWLINE,
- BREAK_CHARACTER,
-
- RULE_BASED,
- BREAK_SENTENCE,
- };
- enum WordBreakStatus {
-
-
- IS_WORD_BREAK,
-
-
-
- IS_SKIPPABLE_WORD,
-
-
- IS_LINE_OR_CHAR_BREAK
- };
-
- BreakIterator(const StringPiece16& str, BreakType break_type);
-
-
-
-
- BreakIterator(const StringPiece16& str, const string16& rules);
- ~BreakIterator();
-
-
- bool Init();
-
-
-
-
- bool Advance();
-
-
-
- bool SetText(const base::char16* text, const size_t length);
-
-
-
-
- bool IsWord() const;
-
-
-
-
-
-
-
-
-
-
-
-
- BreakIterator::WordBreakStatus GetWordBreakStatus() const;
-
-
-
- bool IsEndOfWord(size_t position) const;
- bool IsStartOfWord(size_t position) const;
-
-
-
- bool IsSentenceBoundary(size_t position) const;
-
-
- bool IsGraphemeBoundary(size_t position) const;
-
-
-
- string16 GetString() const;
- StringPiece16 GetStringPiece() const;
-
- size_t prev() const { return prev_; }
-
-
- size_t pos() const { return pos_; }
- private:
-
-
-
-
- void* iter_;
-
- StringPiece16 string_;
-
- const string16 rules_;
-
- BreakType break_type_;
-
- size_t prev_, pos_;
- DISALLOW_COPY_AND_ASSIGN(BreakIterator);
- };
- }
- }
- #endif
|