+++ /dev/null
-// ANNA - Anna is Not Nothingness Anymore //
-// //
-// (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo //
-// //
-// See project site at http://redmine.teslayout.com/projects/anna-suite //
-// See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE //
-
-
-#ifndef anna_dbms_String_hpp
-#define anna_dbms_String_hpp
-
-#include <anna/core/RuntimeException.hpp>
-
-#include <anna/dbms/Data.hpp>
-
-namespace anna {
-
-namespace dbms {
-
-/**
- Cadena usada como entrada y/o salida de las sentencias SQL.
-*/
-class String : public Data {
-public:
- /**
- Constructor.
- \param maxSize Tamao maximo que puede tener esta cadena. Deberia coincidir con el indicado
- por la columna con la que vaya a corresponder en la sentencia.
- \param isNulleable Indica si el dato puede tomar valores nulos.
- */
- explicit String(const int maxSize, const bool isNulleable = false) :
- Data(Type::String, maxSize, isNulleable) {
- Data::setBuffer(a_value = new char [maxSize + 1]);
- anna_memset(a_value, 0, maxSize + 1);
- }
-
- /**
- Constructor copia.
- \param other Instancia de la que copiar.
- */
- String(const String& other) :
- Data(other),
- a_value(other.a_value) {
- const int maxSize = getMaxSize();
- Data::setBuffer(a_value = new char [maxSize + 1]);
- anna_memset(a_value, 0, maxSize + 1);
- }
-
- /**
- Destructor.
- */
- virtual ~String() { delete [] a_value; }
-
- /**
- Devuelve el contenido de la cadena.
- \return El contenido de la cadena.
- \warning Si el metodo Data::isNull devolvio \em true el resultado de este metodo no esta definido.
- */
- const char* getValue() const throw() { return a_value; }
-
- /**
- Operador de copia.
- \param str Cadena de la que copiar. Si la longitud de la cadena sobrepasa el tamao maximo
- indicado en el constructor obtendremos una excepcin.
- \return La instancia de esta cadena.
- */
- String& operator = (const String& str) throw(RuntimeException);
-
- /**
- Operador de asignacin.
- \param str Cadena de la que copiar. Si la longitud de la cadena sobrepasa el tamao maximo
- indicado en el constructor obtendremos una excepcin.
- \return La instancia de esta cadena.
- */
- String& operator = (const char* str) throw(RuntimeException);
-
- /**
- Operador de asignacin.
- \param str Cadena de la que copiar. Si la longitud de la cadena sobrepasa el tamao maximo
- indicado en el constructor obtendremos una excepcin.
- \return La instancia de esta cadena.
- */
- String& operator = (const std::string& str) throw(RuntimeException) { return operator= (str.c_str()); }
-
- /**
- Operador de conversion. si el contenido de la columna sociada
- fue nulo este metodo devolvera NULL.
- \return El contenido de esta cadena.
- */
- operator const char*() const throw() { return (Data::isNull() == true) ? NULL : a_value; }
-
- /**
- Elimina los espacios a la derecha de la cadena recibida.
- \return La misma cadena recibida pero con los espacios eliminados.
- */
- static char* strip(char *str) throw();
-
- /**
- Devuelve una cadena con la informacion referente a esta instancia.
- \return Una cadena con la informacion referente a esta instancia.
- */
- virtual std::string asString() const throw();
-
-private:
- char* a_value;
-
- void do_clear() throw() { a_value [0] = 0; }
-};
-
-}
-}
-
-#endif
-