mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-11-04 05:50:31 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			99 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
// Boost tokenizer.hpp  -----------------------------------------------------//
 | 
						|
 | 
						|
// (c) Copyright Jeremy Siek and John R. Bandela 2001. 
 | 
						|
 | 
						|
// Distributed under the Boost Software License, Version 1.0. (See
 | 
						|
// accompanying file LICENSE_1_0.txt or copy at
 | 
						|
// http://www.boost.org/LICENSE_1_0.txt)
 | 
						|
 | 
						|
// See http://www.boost.org/libs/tokenizer for documenation
 | 
						|
 | 
						|
// Revision History:
 | 
						|
// 03 Jul 2003   John Bandela
 | 
						|
//      Converted to new iterator adapter
 | 
						|
// 02 Feb 2002   Jeremy Siek
 | 
						|
//      Removed tabs and a little cleanup.
 | 
						|
 | 
						|
#ifndef BOOST_TOKENIZER_JRB070303_HPP_
 | 
						|
#define BOOST_TOKENIZER_JRB070303_HPP_
 | 
						|
 | 
						|
#include <boost/token_iterator.hpp>
 | 
						|
 | 
						|
namespace boost {
 | 
						|
 | 
						|
  
 | 
						|
  //===========================================================================
 | 
						|
  // A container-view of a tokenized "sequence"
 | 
						|
  template <
 | 
						|
    typename TokenizerFunc = char_delimiters_separator<char>, 
 | 
						|
    typename Iterator = std::string::const_iterator,
 | 
						|
    typename Type = std::string
 | 
						|
  >
 | 
						|
  class tokenizer {
 | 
						|
  private:
 | 
						|
    typedef token_iterator_generator<TokenizerFunc,Iterator,Type> TGen;
 | 
						|
        
 | 
						|
    // It seems that MSVC does not like the unqualified use of iterator,
 | 
						|
    // Thus we use iter internally when it is used unqualified and
 | 
						|
    // the users of this class will always qualify iterator.     
 | 
						|
    typedef typename TGen::type iter;
 | 
						|
    
 | 
						|
  public:
 | 
						|
    
 | 
						|
    typedef iter iterator;
 | 
						|
    typedef iter const_iterator;
 | 
						|
    typedef Type value_type;
 | 
						|
    typedef value_type& reference;
 | 
						|
    typedef const value_type& const_reference;
 | 
						|
    typedef value_type* pointer;
 | 
						|
    typedef const pointer const_pointer;
 | 
						|
    typedef void size_type;
 | 
						|
    typedef void difference_type;
 | 
						|
 | 
						|
    tokenizer(Iterator first, Iterator last,
 | 
						|
              const TokenizerFunc& f = TokenizerFunc()) 
 | 
						|
      : first_(first), last_(last), f_(f) { }
 | 
						|
        
 | 
						|
    template <typename Container>
 | 
						|
    tokenizer(const Container& c)
 | 
						|
      : first_(c.begin()), last_(c.end()), f_() { }
 | 
						|
    
 | 
						|
    template <typename Container>
 | 
						|
    tokenizer(const Container& c,const TokenizerFunc& f)
 | 
						|
      : first_(c.begin()), last_(c.end()), f_(f) { }
 | 
						|
    
 | 
						|
    void assign(Iterator first, Iterator last){
 | 
						|
      first_ = first;
 | 
						|
      last_ = last;
 | 
						|
    }
 | 
						|
    
 | 
						|
    void assign(Iterator first, Iterator last, const TokenizerFunc& f){
 | 
						|
      assign(first,last);
 | 
						|
      f_ = f;
 | 
						|
    }
 | 
						|
    
 | 
						|
    template <typename Container>
 | 
						|
    void assign(const Container& c){
 | 
						|
      assign(c.begin(),c.end());
 | 
						|
    }
 | 
						|
    
 | 
						|
    
 | 
						|
    template <typename Container>
 | 
						|
    void assign(const Container& c, const TokenizerFunc& f){
 | 
						|
      assign(c.begin(),c.end(),f);
 | 
						|
    }
 | 
						|
    
 | 
						|
    iter begin() const { return iter(f_,first_,last_); }
 | 
						|
    iter end() const { return iter(f_,last_,last_); }
 | 
						|
        
 | 
						|
  private:
 | 
						|
    Iterator first_;
 | 
						|
    Iterator last_;
 | 
						|
    TokenizerFunc f_;
 | 
						|
  };
 | 
						|
 | 
						|
 | 
						|
} // namespace boost
 | 
						|
 | 
						|
#endif
 |