X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;f=include%2Fanna%2Fdbms%2FLongBlock.hpp;fp=include%2Fanna%2Fdbms%2FLongBlock.hpp;h=d0cb9c0e60d244de7c0869ff3d2f65381d48bb1b;hb=78be86969d2f26a9084b0c4af6ce43d5fa4ed3fd;hp=0000000000000000000000000000000000000000;hpb=a3b95648bd76140ef55e0b5941d423eee6c3856f;p=anna.git diff --git a/include/anna/dbms/LongBlock.hpp b/include/anna/dbms/LongBlock.hpp new file mode 100644 index 0000000..d0cb9c0 --- /dev/null +++ b/include/anna/dbms/LongBlock.hpp @@ -0,0 +1,122 @@ +// 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_LongBlock_hpp +#define anna_dbms_LongBlock_hpp + +#include + +#include +#include + +#include + +namespace anna { + +namespace dbms { + +/** + Bloque de datos usado como entrada y/o salida de las sentencias SQL. + + A diferencia del tipo de datos ShortBlock, en principio, no tiene ninguna limitacion + en cuanto a la longitud del campo que vamos a tratar. Por contra, dependiendo del motor + de base de datos que vayamos a usar puede tener un tratamiento especial a la hora de + grabarlo en la base de datos. + + \see ShortBlock +*/ +class LongBlock : public Data { +public: + /** + Constructor. + \param isNulleable Indica si el dato puede tomar valores nulos. + */ + explicit LongBlock(const bool isNulleable = false) : + Data(Type::LongBlock, 0, isNulleable), + a_value(true) { + Data::setBuffer((void*) NULL); + } + + /** + Constructor copia. + \param other Instancia de la que copiar. + */ + LongBlock(const LongBlock& other) : + Data(other), + a_value(true) { + a_value = other.a_value; + } + + /** + Destructor. + */ + virtual ~LongBlock() {;} + + /** + Devuelve el tamao actual de este dato. + \return El tamao actual de este dato. + */ + int getSize() const throw() { return a_value.getSize(); } + + /** + Devuelve el contenido de la este bloque de memoria. + \return Devuelve el contenido de la este bloque de memoria. + \warning Si el metodo Data::isNull devolvio \em true el resultado de este metodo no esta definido. + */ + const anna::DataBlock& getValue() const throw() { return a_value; } + + /** + Devuelve el contenido de la este bloque de memoria. + \return Devuelve el contenido de la este bloque de memoria. + \warning Si el metodo Data::isNull devolvio \em true el resultado de este metodo no esta definido. + */ + anna::DataBlock& getValue() throw() { return a_value; } + + /** + Operador de asignacin. + \param other Bloque del que copiar. + \return La instancia de este bloque de memoria. + */ + LongBlock& operator = (const LongBlock& other) throw(RuntimeException); + + /** + Operador de asignacin. + \param value Valor que queremos a asignar. + \return La instancia de esta cadena. + */ + LongBlock& operator = (const anna::DataBlock& value) throw(RuntimeException); + + /** + Operador de conversion. + \return El anna::DataBlock asociado a esta instancia. + */ + operator anna::DataBlock& () throw() { return a_value; } + + /** + Operador de conversion. + \return El anna::DataBlock asociado a esta instancia. + */ + operator const anna::DataBlock& () const throw() { return a_value; } + + /** + Devuelve una cadena con la informacion referente a esta instancia. + \return Una cadena con la informacion referente a esta instancia. + */ + std::string asString() const throw(); + +protected: + anna::DataBlock a_value; + + void do_clear() throw() { a_value.clear(); } +}; + +} +} + +#endif +