/////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// // // // Set data element as a string // // /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// void dataHandlerString::setString(const imbxUint32 index, const std::string& value) { PUNTOEXE_FUNCTION_START(L"dataHandlerString::setString"); setUnicodeString(index, convertToUnicode(value)); PUNTOEXE_FUNCTION_END(); }
/////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// // // // Overwrite setDouble so the value is written in the // exponential form if needed // // /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// void dataHandlerStringDS::setDouble(const imbxUint32 index, const double value) { PUNTOEXE_FUNCTION_START(L"dataHandlerStringDS::setDouble"); std::wostringstream convStream; convStream << value; setUnicodeString(index, convStream.str()); PUNTOEXE_FUNCTION_END(); }
/////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// // // // Set data element as an unsigned long // // /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// void dataHandlerString::setUnsignedLong(const imbxUint32 index, const imbxUint32 value) { PUNTOEXE_FUNCTION_START(L"dataHandlerString::setUnsignedLong"); std::wostringstream convStream; convStream << value; setUnicodeString(index, convStream.str()); PUNTOEXE_FUNCTION_END(); }
UErrorCode dateToDate(UDate date, UnicodeString &zoneId, C_DATE &DateOut, C_TIME &TimeOut, C_LONGINT &MillisecondOut){ UErrorCode status = U_ZERO_ERROR; C_TEXT iso_date_format; iso_date_format.setUTF8String((const uint8_t *)ISO_DATE_FORMAT_STRING, ISO_DATE_FORMAT_STRING_SIZE); const UnicodeString fmtstr = UnicodeString((const UChar *)iso_date_format.getUTF16StringPtr()); SimpleDateFormat isoFmt(fmtstr, status); if(status == U_ZERO_ERROR || status == U_USING_DEFAULT_WARNING || status == U_USING_FALLBACK_WARNING){ TimeZone *zone; if(zoneId.length()){ zone = TimeZone::createTimeZone(zoneId); }else{ //use local if zone was omitted zone = TimeZone::createDefault(); } if(zone){ isoFmt.adoptTimeZone(zone); } UnicodeString str; str = isoFmt.format(date, str); CUTF8String isoDateString; setUnicodeString(isoDateString, str); int yyyy = atoi((const char *)isoDateString.substr(0, 4).c_str()); int mm = atoi((const char *)isoDateString.substr(5, 2).c_str()); int dd = atoi((const char *)isoDateString.substr(8, 2).c_str()); int h = atoi((const char *)isoDateString.substr(11, 2).c_str()); int m = atoi((const char *)isoDateString.substr(14, 2).c_str()); int s = atoi((const char *)isoDateString.substr(17, 2).c_str()); int ms = atoi((const char *)isoDateString.substr(20, 3).c_str()); DateOut.setYearMonthDay(yyyy, mm, dd); TimeOut.setSeconds(s + (m * 60) + (h * 3600)); MillisecondOut.setIntValue(ms); status = U_ZERO_ERROR; } return status; }
bool setUnicodeString(CUTF8String &ustr, UnicodeString &str){ bool success = false; C_TEXT t; if(setUnicodeString(t, str)){ CUTF8String u; t.copyUTF8String(&ustr); } return success; }
UErrorCode dateToText(UDate date, UnicodeString &formatString, UnicodeString &zoneId, C_TEXT &StringOut){ UErrorCode status = U_ZERO_ERROR; SimpleDateFormat fmt(formatString, status); //the format string is valid if(status == U_ZERO_ERROR || status == U_USING_DEFAULT_WARNING || status == U_USING_FALLBACK_WARNING){ TimeZone *zone; if(zoneId.length()){ zone = TimeZone::createTimeZone(zoneId); }else{ //use local if zone was omitted zone = TimeZone::createDefault(); } if(zone){ fmt.adoptTimeZone(zone); } UnicodeString str; //export the date string str = fmt.format(date, str, status); if(status == U_ZERO_ERROR || status == U_USING_DEFAULT_WARNING || status == U_USING_FALLBACK_WARNING){ setUnicodeString(StringOut, str); status = U_ZERO_ERROR; } } return status; }