X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;f=include%2Fanna%2Fdbms%2FShortBlock.hpp;fp=include%2Fanna%2Fdbms%2FShortBlock.hpp;h=cf22c7bdb7e804d691cc1b4625c026fddc0d0e7b;hb=78be86969d2f26a9084b0c4af6ce43d5fa4ed3fd;hp=0000000000000000000000000000000000000000;hpb=a3b95648bd76140ef55e0b5941d423eee6c3856f;p=anna.git diff --git a/include/anna/dbms/ShortBlock.hpp b/include/anna/dbms/ShortBlock.hpp new file mode 100644 index 0000000..cf22c7b --- /dev/null +++ b/include/anna/dbms/ShortBlock.hpp @@ -0,0 +1,115 @@ +// 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_ShortBlock_hpp +#define anna_dbms_ShortBlock_hpp + +#include + +#include +#include + +#include + +namespace anna { + +namespace dbms { + +/** + Bloque de datos usado como entrada y/o salida de las sentencias SQL. + + La longitud del dato a tratar estara en 2048 y 4096 bytes, dependiendo + del RDBMS concreto con el que estemos trabajando. + + \see LongBlock +*/ +class ShortBlock : public Data { +public: + /** + + Constructor. + \param maxSize Tamao maximo que puede tener este bloque. + \param isNulleable Indica si el dato puede tomar valores nulos. + */ + explicit ShortBlock(const int maxSize, const bool isNulleable = false) : + Data(Type::ShortBlock, maxSize, isNulleable), + a_value(true) { + a_value.allocate(maxSize); + Data::setBuffer((void*) a_value.getData()); + } + + /** + Constructor copia. + \param other Instancia de la que copiar. + */ + ShortBlock(const ShortBlock& other) : + Data(other), + a_value(true) { + a_value = other.a_value; + Data::setBuffer((void*) a_value.getData()); + } + + /** + Destructor. + */ + virtual ~ShortBlock() {;} + + /** + 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; } + + /** + Operador de asignacin. + \param other Bloque del que copiar. + \return La instancia de este bloque de memoria. + */ + ShortBlock& operator = (const ShortBlock& other) throw(RuntimeException); + + /** + Operador de asignacin. + \param value Valor que queremos a asignar. + \return La instancia de esta cadena. + */ + ShortBlock& 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; +}; + +} +} + +#endif +