1 // ANNA - Anna is Not 'N' Anymore
3 // (c) Copyright 2005-2014 Eduardo Ramos Testillano & Francisco Ruiz Rayo
5 // https://bitbucket.org/testillano/anna
7 // Redistribution and use in source and binary forms, with or without
8 // modification, are permitted provided that the following conditions
11 // * Redistributions of source code must retain the above copyright
12 // notice, this list of conditions and the following disclaimer.
13 // * Redistributions in binary form must reproduce the above
14 // copyright notice, this list of conditions and the following disclaimer
15 // in the documentation and/or other materials provided with the
17 // * Neither the name of Google Inc. nor the names of its
18 // contributors may be used to endorse or promote products derived from
19 // this software without specific prior written permission.
21 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33 // Authors: eduardo.ramos.testillano@gmail.com
34 // cisco.tierra@gmail.com
37 #ifndef anna_dbms_Float_hpp
38 #define anna_dbms_Float_hpp
40 #include <anna/core/RuntimeException.hpp>
42 #include <anna/dbms/Data.hpp>
49 Numero en coma flotante usado como entrada y/o salida de las sentencias SQL.
51 class Float : public Data {
55 \param isNulleable Indica si el dato puede tomar valores nulos.
56 \para format Indica el indicador de formato para pasar de cadena a numero. Usa la misma nomenclatura
57 que printf, scanf, etc. Su uso dependerá del gestor de base de datos usado.
59 explicit Float(const bool isNulleable = false, const char* format = "%f") :
60 Data(Type::Float, sizeof(float), isNulleable),
63 Data::setBuffer(&a_value);
68 \param other Instancia de la que copiar.
70 Float(const Float& other) : Data(other), a_value(other.a_value), a_format(other.a_format) {
71 Data::setBuffer(&a_value);
75 * Metodo obsoleto, debería usar #getValue.
76 Devuelve el contenido del campo de tipo Float.
77 \return el contenido del campo de tipo Float.
78 \warning Si el metodo Data::isNull devolvio \em true el resultado de este metodo no esta definido.
80 //float getFloatValue () const throw () { return getValue (); }
83 * Devuelve el valor asociado a este campo.
84 * \return Devuelve el valor asociado a este campo.
86 float getValue() const throw() { return a_value; }
89 * Devuelve el formato que indica la forma en la que el número será representado sobre
90 * una cadena, en caso de que fuera necesario.
92 const char* getFormat() const throw() { return a_format; }
96 \param other Float del que copiar.
97 \return La instancia de esta cadena.
99 Float& operator = (const Float& other) throw(RuntimeException) {
101 setNull(other.isNull());
102 a_value = other.a_value;
109 Operador de asignacion.
110 \param value Float del que copiar.
111 \return La instancia de esta cadena.
113 Float& operator = (const float value) throw(RuntimeException) {
120 Operador de conversion.
121 \warning Si la columna asociada tiene un valor NULL, devolvera 0.0.
122 \return El contenido de esta cadena.
124 operator float() const throw() { return getValue(); }
127 Devuelve una cadena con la informacion referente a esta instancia.
128 \return Una cadena con la informacion referente a esta instancia.
130 std::string asString() const throw();
134 const char* a_format;
136 void do_clear() throw() { a_value = 0.0; }