ANNA Suite  2020b
Multipurpose development suite for Telco applications
Tokenizer.hpp
Go to the documentation of this file.
1 // ANNA - Anna is Not Nothingness Anymore //
2 // //
3 // (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo //
4 // //
5 // See project site at http://redmine.teslayout.com/projects/anna-suite //
6 // See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE //
7 
8 
9 #ifndef anna_core_util_Tokenizer_hpp
10 #define anna_core_util_Tokenizer_hpp
11 
12 #include <string>
13 
14 #include <anna/core//DataBlock.hpp>
15 
16 namespace anna {
17 
18 class RuntimeException;
19 
23 class Tokenizer {
24 
25  int _apply(const char* str, const char* separator) noexcept(false);
26 
27 public:
28  typedef char* const* const_iterator;
29 
33  Tokenizer();
34 
42  Tokenizer(const char* str, const char* separator);
43 
51  Tokenizer(const std::string& str, const char* separator);
52 
56  virtual ~Tokenizer();
57 
58  // Accesores
63  bool activateStrip() const { return a_activateStrip; }
64 
65  // Operadores
66 
72  void activateStrip(const bool _activateStrip) { a_activateStrip = _activateStrip; }
73 
78  const char* at(const int i) noexcept(false);
79 
84  const char* at(const int i) const noexcept(false);
85 
90  const char* operator [](const int i) noexcept(false) { return at(i); }
91 
96  const char* operator [](const int i) const noexcept(false) { return at(i); }
97 
116  int apply(const char* str, const char* separator, const char *tokenizeContiguous = NULL) noexcept(false);
117  int apply(const std::string& str, const char* separator, const char *tokenizeContiguous = NULL) noexcept(false) {
118  return apply(str.c_str(), separator, tokenizeContiguous);
119  }
120 
121 
122  // Metodos
126  const char* last() const noexcept(false);
127 
132  int size() const { return a_maxItem; }
133 
138  const_iterator begin() const { return a_items; }
139 
144  const_iterator end() const { return a_items + a_maxItem; }
145 
150  static const char* data(const_iterator ii) { return *ii; }
151 
152 private:
153  static const int MaxItem;
154 
155  anna::DataBlock a_dataBlock;
156  bool a_activateStrip;
157  char** a_items;
158  int a_maxItem;
159 
160  static char* strip(char* str) ;
161 
162  void indexException(const int index, const char* fromFile, const int fromLine) const noexcept(false);
163 };
164 
165 }
166 
167 #endif
const char * last() const noexcept(false)
const_iterator begin() const
Definition: Tokenizer.hpp:138
int apply(const std::string &str, const char *separator, const char *tokenizeContiguous=NULL) noexcept(false)
Definition: Tokenizer.hpp:117
Definition: Tokenizer.hpp:23
char *const * const_iterator
Definition: Tokenizer.hpp:28
virtual ~Tokenizer()
const_iterator end() const
Definition: Tokenizer.hpp:144
Definition: app.hpp:12
bool activateStrip() const
Definition: Tokenizer.hpp:63
int size() const
Definition: Tokenizer.hpp:132
const char * operator[](const int i) noexcept(false)
Definition: Tokenizer.hpp:90
void activateStrip(const bool _activateStrip)
Definition: Tokenizer.hpp:72
int apply(const char *str, const char *separator, const char *tokenizeContiguous=NULL) noexcept(false)
static const char * data(const_iterator ii)
Definition: Tokenizer.hpp:150
Definition: DataBlock.hpp:24
const char * at(const int i) noexcept(false)