annotate DEPENDENCIES/generic/include/boost/tokenizer.hpp @ 125:34e428693f5d vext

Vext -> Repoint
author Chris Cannam
date Thu, 14 Jun 2018 11:15:39 +0100
parents 2665513ce2d3
children
rev   line source
Chris@16 1 // Boost tokenizer.hpp -----------------------------------------------------//
Chris@16 2
Chris@16 3 // (c) Copyright Jeremy Siek and John R. Bandela 2001.
Chris@16 4
Chris@16 5 // Distributed under the Boost Software License, Version 1.0. (See
Chris@16 6 // accompanying file LICENSE_1_0.txt or copy at
Chris@16 7 // http://www.boost.org/LICENSE_1_0.txt)
Chris@16 8
Chris@16 9 // See http://www.boost.org/libs/tokenizer for documenation
Chris@16 10
Chris@16 11 // Revision History:
Chris@16 12 // 03 Jul 2003 John Bandela
Chris@16 13 // Converted to new iterator adapter
Chris@16 14 // 02 Feb 2002 Jeremy Siek
Chris@16 15 // Removed tabs and a little cleanup.
Chris@16 16
Chris@16 17 #ifndef BOOST_TOKENIZER_JRB070303_HPP_
Chris@16 18 #define BOOST_TOKENIZER_JRB070303_HPP_
Chris@16 19
Chris@16 20 #include <boost/token_iterator.hpp>
Chris@16 21
Chris@16 22 namespace boost {
Chris@16 23
Chris@16 24
Chris@16 25 //===========================================================================
Chris@16 26 // A container-view of a tokenized "sequence"
Chris@16 27 template <
Chris@16 28 typename TokenizerFunc = char_delimiters_separator<char>,
Chris@16 29 typename Iterator = std::string::const_iterator,
Chris@16 30 typename Type = std::string
Chris@16 31 >
Chris@16 32 class tokenizer {
Chris@16 33 private:
Chris@16 34 typedef token_iterator_generator<TokenizerFunc,Iterator,Type> TGen;
Chris@16 35
Chris@16 36 // It seems that MSVC does not like the unqualified use of iterator,
Chris@16 37 // Thus we use iter internally when it is used unqualified and
Chris@16 38 // the users of this class will always qualify iterator.
Chris@16 39 typedef typename TGen::type iter;
Chris@16 40
Chris@16 41 public:
Chris@16 42
Chris@16 43 typedef iter iterator;
Chris@16 44 typedef iter const_iterator;
Chris@16 45 typedef Type value_type;
Chris@16 46 typedef value_type& reference;
Chris@16 47 typedef const value_type& const_reference;
Chris@16 48 typedef value_type* pointer;
Chris@16 49 typedef const pointer const_pointer;
Chris@16 50 typedef void size_type;
Chris@16 51 typedef void difference_type;
Chris@16 52
Chris@16 53 tokenizer(Iterator first, Iterator last,
Chris@16 54 const TokenizerFunc& f = TokenizerFunc())
Chris@16 55 : first_(first), last_(last), f_(f) { }
Chris@16 56
Chris@16 57 template <typename Container>
Chris@16 58 tokenizer(const Container& c)
Chris@16 59 : first_(c.begin()), last_(c.end()), f_() { }
Chris@16 60
Chris@16 61 template <typename Container>
Chris@16 62 tokenizer(const Container& c,const TokenizerFunc& f)
Chris@16 63 : first_(c.begin()), last_(c.end()), f_(f) { }
Chris@16 64
Chris@16 65 void assign(Iterator first, Iterator last){
Chris@16 66 first_ = first;
Chris@16 67 last_ = last;
Chris@16 68 }
Chris@16 69
Chris@16 70 void assign(Iterator first, Iterator last, const TokenizerFunc& f){
Chris@16 71 assign(first,last);
Chris@16 72 f_ = f;
Chris@16 73 }
Chris@16 74
Chris@16 75 template <typename Container>
Chris@16 76 void assign(const Container& c){
Chris@16 77 assign(c.begin(),c.end());
Chris@16 78 }
Chris@16 79
Chris@16 80
Chris@16 81 template <typename Container>
Chris@16 82 void assign(const Container& c, const TokenizerFunc& f){
Chris@16 83 assign(c.begin(),c.end(),f);
Chris@16 84 }
Chris@16 85
Chris@16 86 iter begin() const { return iter(f_,first_,last_); }
Chris@16 87 iter end() const { return iter(f_,last_,last_); }
Chris@16 88
Chris@16 89 private:
Chris@16 90 Iterator first_;
Chris@16 91 Iterator last_;
Chris@16 92 TokenizerFunc f_;
Chris@16 93 };
Chris@16 94
Chris@16 95
Chris@16 96 } // namespace boost
Chris@16 97
Chris@16 98 #endif