diff options
| author | Avneesh Saluja <asaluja@gmail.com> | 2013-03-28 18:28:16 -0700 | 
|---|---|---|
| committer | Avneesh Saluja <asaluja@gmail.com> | 2013-03-28 18:28:16 -0700 | 
| commit | 3d8d656fa7911524e0e6885647173474524e0784 (patch) | |
| tree | 81b1ee2fcb67980376d03f0aa48e42e53abff222 /klm/util/tokenize_piece.hh | |
| parent | be7f57fdd484e063775d7abf083b9fa4c403b610 (diff) | |
| parent | 96fedabebafe7a38a6d5928be8fff767e411d705 (diff) | |
fixed conflicts
Diffstat (limited to 'klm/util/tokenize_piece.hh')
| -rw-r--r-- | klm/util/tokenize_piece.hh | 26 | 
1 files changed, 22 insertions, 4 deletions
diff --git a/klm/util/tokenize_piece.hh b/klm/util/tokenize_piece.hh index c7e1c863..a588c3fc 100644 --- a/klm/util/tokenize_piece.hh +++ b/klm/util/tokenize_piece.hh @@ -20,6 +20,7 @@ class OutOfTokens : public Exception {  class SingleCharacter {    public: +    SingleCharacter() {}      explicit SingleCharacter(char delim) : delim_(delim) {}      StringPiece Find(const StringPiece &in) const { @@ -32,6 +33,8 @@ class SingleCharacter {  class MultiCharacter {    public: +    MultiCharacter() {} +      explicit MultiCharacter(const StringPiece &delimiter) : delimiter_(delimiter) {}      StringPiece Find(const StringPiece &in) const { @@ -44,6 +47,7 @@ class MultiCharacter {  class AnyCharacter {    public: +    AnyCharacter() {}      explicit AnyCharacter(const StringPiece &chars) : chars_(chars) {}      StringPiece Find(const StringPiece &in) const { @@ -54,6 +58,20 @@ class AnyCharacter {      StringPiece chars_;  }; +class AnyCharacterLast { +  public: +    AnyCharacterLast() {} + +    explicit AnyCharacterLast(const StringPiece &chars) : chars_(chars) {} + +    StringPiece Find(const StringPiece &in) const { +      return StringPiece(std::find_end(in.data(), in.data() + in.size(), chars_.data(), chars_.data() + chars_.size()), 1); +    } + +  private: +    StringPiece chars_; +}; +  template <class Find, bool SkipEmpty = false> class TokenIter : public boost::iterator_facade<TokenIter<Find, SkipEmpty>, const StringPiece, boost::forward_traversal_tag> {    public:      TokenIter() {} @@ -69,8 +87,8 @@ template <class Find, bool SkipEmpty = false> class TokenIter : public boost::it        return current_.data() != 0;      } -    static TokenIter<Find> end() { -      return TokenIter<Find>(); +    static TokenIter<Find, SkipEmpty> end() { +      return TokenIter<Find, SkipEmpty>();      }    private: @@ -88,8 +106,8 @@ template <class Find, bool SkipEmpty = false> class TokenIter : public boost::it        } while (SkipEmpty && current_.data() && current_.empty()); // Compiler should optimize this away if SkipEmpty is false.        } -    bool equal(const TokenIter<Find> &other) const { -      return after_.data() == other.after_.data(); +    bool equal(const TokenIter<Find, SkipEmpty> &other) const { +      return current_.data() == other.current_.data();      }      const StringPiece &dereference() const {  | 
