--- /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_Float_hpp
+#define anna_dbms_Float_hpp
+
+#include <anna/core/RuntimeException.hpp>
+
+#include <anna/dbms/Data.hpp>
+
+namespace anna {
+
+namespace dbms {
+
+/**
+ Numero en coma flotante usado como entrada y/o salida de las sentencias SQL.
+*/
+class Float : public Data {
+public:
+ /**
+ Constructor.
+ \param isNulleable Indica si el dato puede tomar valores nulos.
+ \para format Indica el indicador de formato para pasar de cadena a numero. Usa la misma nomenclatura
+ que printf, scanf, etc. Su uso dependerá del gestor de base de datos usado.
+ */
+ explicit Float(const bool isNulleable = false, const char* format = "%f") :
+ Data(Type::Float, sizeof(float), isNulleable),
+ a_format(format),
+ a_value(0.0) {
+ Data::setBuffer(&a_value);
+ }
+
+ /**
+ Constructor copia.
+ \param other Instancia de la que copiar.
+ */
+ Float(const Float& other) : Data(other), a_value(other.a_value), a_format(other.a_format) {
+ Data::setBuffer(&a_value);
+ }
+
+ /**
+ * Metodo obsoleto, debería usar #getValue.
+ Devuelve el contenido del campo de tipo Float.
+ \return el contenido del campo de tipo Float.
+ \warning Si el metodo Data::isNull devolvio \em true el resultado de este metodo no esta definido.
+ */
+ //float getFloatValue () const throw () { return getValue (); }
+
+ /**
+ * Devuelve el valor asociado a este campo.
+ * \return Devuelve el valor asociado a este campo.
+ */
+ float getValue() const throw() { return a_value; }
+
+ /**
+ * Devuelve el formato que indica la forma en la que el número será representado sobre
+ * una cadena, en caso de que fuera necesario.
+ */
+ const char* getFormat() const throw() { return a_format; }
+
+ /**
+ Operador de copia.
+ \param other Float del que copiar.
+ \return La instancia de esta cadena.
+ */
+ Float& operator = (const Float& other) throw(RuntimeException) {
+ if(this != &other) {
+ setNull(other.isNull());
+ a_value = other.a_value;
+ }
+
+ return *this;
+ }
+
+ /**
+ Operador de asignacion.
+ \param value Float del que copiar.
+ \return La instancia de esta cadena.
+ */
+ Float& operator = (const float value) throw(RuntimeException) {
+ a_value = value;
+ setNull(false);
+ return *this;
+ }
+
+ /**
+ Operador de conversion.
+ \warning Si la columna asociada tiene un valor NULL, devolvera 0.0.
+ \return El contenido de esta cadena.
+ */
+ operator float() const throw() { return getValue(); }
+
+ /**
+ 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();
+
+private:
+ float a_value;
+ const char* a_format;
+
+ void do_clear() throw() { a_value = 0.0; }
+};
+
+}
+}
+
+#endif
+