1 // ANNA - Anna is Not Nothingness Anymore //
3 // (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo //
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 //
9 #ifndef anna_core_util_Tokenizer_hpp
10 #define anna_core_util_Tokenizer_hpp
14 #include <anna/core//DataBlock.hpp>
18 class RuntimeException;
21 Separa la cadena recibida en distintos elementos.
25 typedef char* const* const_iterator;
35 @param str Cadena sobre la que aplicar la separacion.
36 @param separator Caracteres que van a actuar como separador de las subcadenas contenidas en el
39 Tokenizer(const char* str, const char* separator);
44 @param str Cadena sobre la que aplicar la separacion.
45 @param separator Caracteres que van a actuar como separador de las subcadenas contenidas en el
48 Tokenizer(const std::string& str, const char* separator);
57 Devuelve el estado del indicador de activacion de eliminacion de espacios de los extremos.
58 \return El estado del indicador de activacion de eliminacion de espacios de los extremos.
60 bool activateStrip() const throw() { return a_activateStrip; }
65 Activa y/o desactiva que activa el sistema que permite recoger los elementos retornadodos
66 por esta clase sin espacios por delante y por detras.
67 \param _activateStrip Parametro que indica el estado de activacion o desactivacion.
69 void activateStrip(const bool _activateStrip) throw() { a_activateStrip = _activateStrip; }
72 @return El elemento que ocupa la posicion i-esima.
73 \warning Este método tiene una eficiencia de O(1), mejor usar iteradores.
75 const char* at(const int i) throw(RuntimeException);
78 @return El elemento que ocupa la posicion i-esima.
79 \warning Este método tiene una eficiencia de O(1), mejor usar iteradores.
81 const char* at(const int i) const throw(RuntimeException);
84 @return El elemento que ocupa la posicion i-esima.
85 \warning Este método tiene una eficiencia de O(1), mejor usar iteradores.
87 const char* operator [](const int i) throw(RuntimeException) { return at(i); }
90 @return El elemento que ocupa la posicion i-esima.
91 \warning Este método tiene una eficiencia de O(1), mejor usar iteradores.
93 const char* operator [](const int i) const throw(RuntimeException) { return at(i); }
96 Aplica la separacion sobre la cadena str con el separador recibido como parametro.
98 @param str Cadena sobre la que aplicar la separacion.
99 @param separator Caracteres que van a actuar como separador de las subcadenas contenidas en el
102 @return Numero de elementos obtenidos al aplicar la separacion.
105 int apply(const std::string& str, const char* separator) throw(RuntimeException) {
106 return apply(str.c_str(), separator);
110 Aplica la separacion sobre la cadena str con el separador recibido como parametro.
112 @param str Cadena sobre la que aplicar la separacion.
113 @param separator Caracteres que van a actuar como separador de las subcadenas contenidas en el
116 @return Numero de elementos obtenidos al aplicar la separacion.
119 int apply(const char* str, const char* separator) throw(RuntimeException);
123 @return El ultimo elemento obtenido la aplicar la separacion.
125 const char* last() const throw(RuntimeException);
128 * Devuelve el número de elementos obtenidos en la separación.
129 * \return el número de elementos obtenidos en la separación.
131 int size() const throw() { return a_maxItem; }
134 * Devuelve el iterador el comiento de los elementos obtenidos por #apply
135 * \return el iterador el comiento de los elementos obtenidos por #apply
137 const_iterator begin() const throw() { return a_items; }
140 * Devuelve el iterador al final de los elementos obtenidos por #apply
141 * \return el iterador al final de los elementos obtenidos por #apply
143 const_iterator end() const throw() { return a_items + a_maxItem; }
146 Devuelve la cadena referenciada por el iterator recibido como parametro.
147 \return la cadena referenciada por el iterator recibido como parametro.
149 static const char* data(const_iterator ii) throw() { return *ii; }
152 static const int MaxItem;
154 anna::DataBlock a_dataBlock;
155 bool a_activateStrip;
159 static char* strip(char* str) throw();
161 void indexException(const int index, const char* fromFile, const int fromLine) const throw(RuntimeException);