X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fbase%2FFBaseInt8.cpp;h=e98853527a34adbfc3c48082a09a59de287afb60;hb=HEAD;hp=8307d9aee9ec7cbf0bf362a6bde4c16157b7b3a6;hpb=7f8ad8a79cac77ca032fedf74d3c33dd5a52192c;p=platform%2Fframework%2Fnative%2Fappfw.git diff --git a/src/base/FBaseInt8.cpp b/src/base/FBaseInt8.cpp index 8307d9a..e988535 100644 --- a/src/base/FBaseInt8.cpp +++ b/src/base/FBaseInt8.cpp @@ -26,12 +26,14 @@ #include #include #include +#include "FBase_NumberUtil.h" +#include "FApp_AppInfo.h" namespace Tizen { namespace Base { Int8::Int8(char value) - : value((signed char)value) + : value(static_cast< signed char >(value)) , __pInt8Impl(null) { } @@ -95,70 +97,12 @@ Int8::GetHashCode(char val) result Int8::Decode(const String& s, char& ret) { - SysTryReturn(NID_BASE, s.GetLength() >= 1, E_NUM_FORMAT, E_NUM_FORMAT, - "[%s] The length of input String MUST be greater than 0.", GetErrorMessage(E_NUM_FORMAT)); - - long value = 0; - int radix = 0; - int startIndex = 0; - int minLength = 2; - wchar_t* pEnd = null; - String str(s); - - if (s[0] == L'-' || s[0] == L'+') - { - startIndex = 1; - minLength = 3; - } - - // Find radix - if (s[startIndex] == L'#') - { - radix = Character::RADIX_HEXADECIMAL; - - // Remove '#' - str.Remove(startIndex, 1); - } - else if (s[startIndex] == L'0' && (s.GetLength() >= minLength)) - { - if (s[startIndex + 1] == L'x' || s[startIndex + 1] == L'X') - { - radix = Character::RADIX_HEXADECIMAL; - } - else - { - radix = Character::RADIX_OCTAL; - } - } - else - { - radix = Character::RADIX_DECIMAL; - } - - result r = E_SUCCESS; - - errno = 0; - value = wcstol(str.GetPointer(), &pEnd, radix); - SysTryCatch(NID_BASE, (pEnd[0] == 0), r = E_NUM_FORMAT, E_NUM_FORMAT, - "[%s] Int8 decode failed. Scan stopped at (%ls).", GetErrorMessage(E_NUM_FORMAT), pEnd); - SysTryCatch(NID_BASE, !((value == LONG_MAX || value == LONG_MIN) && (errno != 0)), r = E_NUM_FORMAT, E_NUM_FORMAT, - "[%s] Decoded value cannot fit into an Int8.", GetErrorMessage(E_NUM_FORMAT)); - -CATCH: - if (value > Int8::VALUE_MAX) - { - ret = Int8::VALUE_MAX; - } - else if (value < (signed char) Int8::VALUE_MIN) - { - ret = (signed char) Int8::VALUE_MIN; - } - else - { - ret = (char) value; - } - - return r; + long value; + result r = _NumberUtil::Decode(s, value); + SysTryReturnResult(NID_BASE, r == E_SUCCESS, r, "Propagating."); + SysTryReturnResult(NID_BASE, (value >= Int8::VALUE_MIN) && (value <= Int8::VALUE_MAX), E_OUT_OF_RANGE, "The value(%d) is out of range.", value); + ret = static_cast< char >(value); + return E_SUCCESS; } result @@ -170,35 +114,11 @@ Int8::Parse(const String& s, char& ret) result Int8::Parse(const String& s, int radix, char& ret) { - SysTryReturn(NID_BASE, ((radix == Character::RADIX_BINARY) || (radix == Character::RADIX_OCTAL) || - (radix == Character::RADIX_DECIMAL) || (radix == Character::RADIX_HEXADECIMAL)), E_OUT_OF_RANGE, E_OUT_OF_RANGE, - "[%s] The radix(%d) MUST be one of 2, 8, 10 and 16.", GetErrorMessage(E_OUT_OF_RANGE), radix); - - int len = s.GetLength(); - SysTryReturn(NID_BASE, len > 0, E_NUM_FORMAT, E_NUM_FORMAT, "[%s] The length of input String MUST be greater than 0.", - GetErrorMessage(E_NUM_FORMAT)); - - errno = 0; - wchar_t* pEnd = null; - long value = wcstol(s.GetPointer(), &pEnd, radix); - SysTryReturn(NID_BASE, pEnd[0] == 0, E_NUM_FORMAT, E_NUM_FORMAT, "[%s] Int8 parse failed. Scan stopped at (%ls).", - GetErrorMessage(E_NUM_FORMAT), pEnd); - SysTryReturn(NID_BASE, !((value == LONG_MAX || value == LONG_MIN) && (errno != 0)), E_NUM_FORMAT, E_NUM_FORMAT, - "[%s] Parsed value cannot fit into an Int8.", GetErrorMessage(E_NUM_FORMAT)); - - if (value > Int8::VALUE_MAX) - { - ret = Int8::VALUE_MAX; - } - else if (value < static_cast< signed char >(Int8::VALUE_MIN)) - { - ret = static_cast< signed char >(Int8::VALUE_MIN); - } - else - { - ret = static_cast< char >(value); - } - + long value; + result r = _NumberUtil::Parse(s, radix, value); + SysTryReturnResult(NID_BASE, r == E_SUCCESS, r, "Propagating."); + SysTryReturnResult(NID_BASE, (value >= Int8::VALUE_MIN) && (value <= Int8::VALUE_MAX), E_OUT_OF_RANGE, "The value(%d) is out of range.", value); + ret = static_cast< char >(value); return E_SUCCESS; } @@ -208,6 +128,12 @@ Int8::ToChar(void) const return static_cast< char >(value); } +int8_t +Int8::ToInt8(void) const +{ + return 0; +} + short Int8::ToShort(void) const {