X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;f=source%2Fcore%2Futil%2FVariable.cpp;h=3145725f367c0795b969f79af4cbc06b3f091e79;hb=5a6cba5fde2b2f538a7515f8293cc0a8d9589dfa;hp=f8da926d390436d401e9db354f9acf6492d54314;hpb=4e12ac57e93c052f716a6305ad8fc099c45899d1;p=anna.git diff --git a/source/core/util/Variable.cpp b/source/core/util/Variable.cpp index f8da926..3145725 100644 --- a/source/core/util/Variable.cpp +++ b/source/core/util/Variable.cpp @@ -1,37 +1,9 @@ -// ANNA - Anna is Not 'N' Anymore -// -// (c) Copyright 2005-2014 Eduardo Ramos Testillano & Francisco Ruiz Rayo -// -// https://bitbucket.org/testillano/anna -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Authors: eduardo.ramos.testillano@gmail.com -// cisco.tierra@gmail.com +// 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 // #include @@ -60,6 +32,7 @@ Variable::Variable(const char* name, const Type::_v type) : case Type::Float: a_value.a_float = &a_aux.theFloat; break; case Type::Double: a_value.a_double = &a_aux.theDouble; break; case Type::Custom: a_value.a_custom = NULL; break; + default: break; } } @@ -76,39 +49,40 @@ Variable::~Variable() { delete a_value.a_dataBlock; a_value.a_dataBlock = NULL; break; + default: break; } } void Variable::setValue(const char* value) -throw(RuntimeException) { +noexcept(false) { verifyMatchType(Type::String, ANNA_FILE_LOCATION); a_isNull = false; *a_value.a_string = value; } void Variable::setValue(const int value) -throw(RuntimeException) { +noexcept(false) { verifyMatchType(Type::Integer, ANNA_FILE_LOCATION); a_isNull = false; *a_value.a_integer = value; } -void Variable::setValue(const Integer64 value) -throw(RuntimeException) { +void Variable::setValue(const S64 value) +noexcept(false) { verifyMatchType(Type::Integer64, ANNA_FILE_LOCATION); a_isNull = false; *a_value.a_longInteger = value; } void Variable::setValue(const bool value) -throw(RuntimeException) { +noexcept(false) { verifyMatchType(Type::Boolean, ANNA_FILE_LOCATION); a_isNull = false; *a_value.a_boolean = value; } void Variable::setValue(const DataBlock& value) -throw(RuntimeException) { +noexcept(false) { verifyMatchType(Type::Block, ANNA_FILE_LOCATION); if(a_value.a_dataBlock->deepCopy() == false) { @@ -123,7 +97,7 @@ throw(RuntimeException) { } void Variable::setValue(const float value) -throw(RuntimeException) { +noexcept(false) { verifyMatchSomeType(Type::Float, Type::Double, ANNA_FILE_LOCATION); if(a_type == Type::Float) { @@ -136,7 +110,7 @@ throw(RuntimeException) { } void Variable::setValue(const double value) -throw(RuntimeException) { +noexcept(false) { verifyMatchSomeType(Type::Float, Type::Double, ANNA_FILE_LOCATION); if(a_type == Type::Float) { @@ -149,21 +123,21 @@ throw(RuntimeException) { } const char* Variable::getStringValue() const -throw(RuntimeException) { +noexcept(false) { verifyIsNotNull(ANNA_FILE_LOCATION); verifyMatchType(Type::String, ANNA_FILE_LOCATION); return a_value.a_string->c_str(); } int Variable::getIntegerValue() const -throw(RuntimeException) { +noexcept(false) { verifyIsNotNull(ANNA_FILE_LOCATION); verifyMatchType(Type::Integer, ANNA_FILE_LOCATION); return *a_value.a_integer; } -Integer64 Variable::getInteger64Value() const -throw(RuntimeException) { +S64 Variable::getInteger64Value() const +noexcept(false) { int result(0); verifyIsNotNull(ANNA_FILE_LOCATION); verifyMatchSomeType(Type::Integer, Type::Integer64, ANNA_FILE_LOCATION); @@ -171,27 +145,28 @@ throw(RuntimeException) { switch(a_type) { case Type::Integer: result = *a_value.a_integer; break; case Type::Integer64: result = *a_value.a_longInteger; break; + default: break; } return result; } bool Variable::getBooleanValue() const -throw(RuntimeException) { +noexcept(false) { verifyIsNotNull(ANNA_FILE_LOCATION); verifyMatchType(Type::Boolean, ANNA_FILE_LOCATION); return *a_value.a_boolean; } const DataBlock& Variable::getDataBlockValue() const -throw(RuntimeException) { +noexcept(false) { verifyIsNotNull(ANNA_FILE_LOCATION); verifyMatchType(Type::Block, ANNA_FILE_LOCATION); return *a_value.a_dataBlock; } float Variable::getFloatValue() const -throw(RuntimeException) { +noexcept(false) { float result(0.0); verifyIsNotNull(ANNA_FILE_LOCATION); verifyMatchSomeType(Type::Float, Type::Double, ANNA_FILE_LOCATION); @@ -199,13 +174,14 @@ throw(RuntimeException) { switch(a_type) { case Type::Float: result = *a_value.a_float; break; case Type::Double: result = (float) *a_value.a_double; break; + default: break; } return result; } double Variable::getDoubleValue() const -throw(RuntimeException) { +noexcept(false) { double result(0.0); verifyIsNotNull(ANNA_FILE_LOCATION); verifyMatchSomeType(Type::Float, Type::Double, ANNA_FILE_LOCATION); @@ -213,13 +189,14 @@ throw(RuntimeException) { switch(a_type) { case Type::Float: result = (double) *a_value.a_float; break; case Type::Double: result = *a_value.a_double; break; + default: break; } return result; } String Variable::asString() const -throw() { +{ String result("anna::Variable { Name: "); result << a_name; result << " | Type: " << Type::asNotNullCString(a_type); @@ -237,6 +214,7 @@ throw() { case Type::Float: result += functions::asString("%f", *a_value.a_float); break; case Type::Double: result += functions::asString("%g", *a_value.a_double); break; case Type::Custom: result += functions::asHexString(anna_ptrnumber_cast(a_value.a_custom)); break; + default: break; } } @@ -244,7 +222,7 @@ throw() { } void* Variable::buffer() const -throw() { +{ void* result(NULL); switch(a_type) { @@ -256,13 +234,14 @@ throw() { case Type::Float: result = a_value.a_float; break; case Type::Double: result = a_value.a_double; break; case Type::Custom: result = a_value.a_custom; break; + default: break; } return result; } void* Variable::getReference() const -throw() { +{ void* result(NULL); switch(a_type) { @@ -274,13 +253,14 @@ throw() { case Type::Float: result = a_value.a_float; break; case Type::Double: result = a_value.a_double; break; case Type::Custom: result = a_value.a_custom; break; + default: break; } return result; } void Variable::verifyMatchType(const Type::_v type, const char* file, const int lineno) const -throw(RuntimeException) { +noexcept(false) { if(a_type != type) { String msg("Variable: "); msg << a_name << " | " << Type::asNotNullCString(type) << " mismatch data type"; @@ -289,7 +269,7 @@ throw(RuntimeException) { } void Variable::verifyMatchSomeType(const Type::_v firstType, const Type::_v secondType, const char* file, const int lineno) const -throw(RuntimeException) { +noexcept(false) { if(a_type != firstType && a_type != secondType) { String msg("Variable: "); msg << a_name << " | Neihter " << Type::asNotNullCString(firstType); @@ -299,7 +279,7 @@ throw(RuntimeException) { } void Variable::verifyIsNotNull(const char* file, const int lineno) const -throw(RuntimeException) { +noexcept(false) { if(a_isNull == true) { String msg("Variable: "); msg << a_name << " | Variable does not have assigned value";