Horizon Official Technical Documentation
Tokenizer Class Reference

#include <Tokenizer.hpp>

Public Types

typedef std::vector< char const * > StorageType
 
typedef StorageType::size_type size_type
 
typedef StorageType::const_iterator const_iterator
 
typedef StorageType::reference reference
 
typedef StorageType::const_reference const_reference
 

Public Member Functions

 Tokenizer (const std::string &src, char const sep, uint32_t vectorReserve=0, bool keepEmptyStrings=true)
 
 ~Tokenizer ()
 
const_iterator begin () const
 
const_iterator end () const
 
size_type size () const
 
reference operator[] (size_type i)
 
const_reference operator[] (size_type i) const
 

Private Attributes

char * m_str
 
StorageType m_storage
 

Member Typedef Documentation

◆ const_iterator

typedef StorageType::const_iterator Tokenizer::const_iterator

◆ const_reference

typedef StorageType::const_reference Tokenizer::const_reference

◆ reference

typedef StorageType::reference Tokenizer::reference

◆ size_type

typedef StorageType::size_type Tokenizer::size_type

◆ StorageType

typedef std::vector<char const *> Tokenizer::StorageType

Constructor & Destructor Documentation

◆ Tokenizer()

Tokenizer::Tokenizer ( const std::string &  src,
char const  sep,
uint32_t  vectorReserve = 0,
bool  keepEmptyStrings = true 
)
33{
34 m_str = new char[src.length() + 1];
35 memcpy(m_str, src.c_str(), src.length() + 1);
36
37 if (vectorReserve)
38 m_storage.reserve(vectorReserve);
39
40 char *posold = m_str;
41 char *posnew = m_str;
42
43 for (;;) {
44 if (*posnew == sep) {
45 if (keepEmptyStrings || posold != posnew)
46 m_storage.push_back(posold);
47
48 posold = posnew + 1;
49 *posnew = '\0';
50 } else if (*posnew == '\0') {
51 // Hack like, but the old code accepted these kind of broken strings,
52 // so changing it would break other things
53 if (posold != posnew)
54 m_storage.push_back(posold);
55
56 break;
57 }
58
59 ++posnew;
60 }
61}
StorageType m_storage
Definition: Tokenizer.hpp:58
char * m_str
Definition: Tokenizer.hpp:57

References m_storage, and m_str.

◆ ~Tokenizer()

Tokenizer::~Tokenizer ( )
inline
46{ delete[] m_str; }

References m_str.

Member Function Documentation

◆ begin()

const_iterator Tokenizer::begin ( ) const
inline
48{ return m_storage.begin(); }

References m_storage.

◆ end()

const_iterator Tokenizer::end ( ) const
inline
49{ return m_storage.end(); }

References m_storage.

◆ operator[]() [1/2]

reference Tokenizer::operator[] ( size_type  i)
inline
53{ return m_storage[i]; }

References m_storage.

◆ operator[]() [2/2]

const_reference Tokenizer::operator[] ( size_type  i) const
inline
54{ return m_storage[i]; }

References m_storage.

◆ size()

size_type Tokenizer::size ( ) const
inline
51{ return m_storage.size(); }

References m_storage.

Member Data Documentation

◆ m_storage

StorageType Tokenizer::m_storage
private

Referenced by begin(), end(), operator[](), size(), and Tokenizer().

◆ m_str

char* Tokenizer::m_str
private

Referenced by Tokenizer(), and ~Tokenizer().


The documentation for this class was generated from the following files: