String Value_datetime_imp::get_String( tslen inLimit ) const { String str; if( inLimit != 0 ) { UChar* p = str.getBuffer(kDateTimeStrMaxLength + 1); const DTFormat* pDTFormat = get_DTFormat(); Convert_datetime_str_fast( (DateTimeEncoded&)mValue, pDTFormat->mDateFormat, pDTFormat->mDateSep, pDTFormat->mTimeSep, p ); if( ((DateTimeEncoded&)mValue).encoded < 0 ) str.releaseBuffer(kDateTimeStrMaxLength); // 24 symbols for negative dates else str.releaseBuffer(kDateTimeStrMaxLength - 1); // 23 symbols for positive dates // not -1 and less than maxLen if( inLimit > 0 && vuint32(inLimit) < kDateTimeStrMaxLength ) { str.truncate( inLimit ); } } return str; }
void JsonTest::test02() { SLOG(CLS_NAME, "test01"); String str; Json* json1 = Json::getNewObject(); Json* json2 = Json::getNewObject(); json2->add("addr", "Tokyo"); json2->add("tel", "03"); json1->add(json2); Json* json3 = Json::getNewObject(); json3->add("addr", "Osaka"); json3->add("tel", "06"); json1->add(json3); json1->serialize(&str); SMSG(slog::DEBUG, "%s", str.getBuffer()); SASSERT("01", str.equals( "[" "{\"addr\":\"Tokyo\",\"tel\":\"03\"}," "{\"addr\":\"Osaka\",\"tel\":\"06\"}" "]")); delete json1; }
void JsonTest::test01() { SLOG(CLS_NAME, "test01"); String str; Json* json1 = Json::getNewObject(); json1->serialize(&str); SMSG(slog::DEBUG, "%s", str.getBuffer()); SASSERT("01", str.equals("{}")); json1->add("name", "printf"); json1->serialize(&str); SMSG(slog::DEBUG, "%s", str.getBuffer()); SASSERT("02", str.equals("{\"name\":\"printf\"}")); delete json1; }
/*! * \brief コンストラクタ */ SequenceLogServiceDB::SequenceLogServiceDB() { SLOG(CLS_NAME, "SequenceLogServiceDB"); String name; getName(&name); connect("localhost", "slog", "DPdhE8iv1HQIe6nL", name.getBuffer()); }
void JsonTest::test04() { SLOG(CLS_NAME, "test04"); String str; Json* json1 = Json::getNewObject(); json1->add("id", 1); json1->serialize(&str); SMSG(slog::DEBUG, "%s", str.getBuffer()); SASSERT("01", str.equals("{\"id\":1}")); }
String Window::getWindowText(HWND hWnd) { int wsize = GetWindowTextLengthW(hWnd); wchar_t* buf = new wchar_t[wsize + 1]; GetWindowTextW(hWnd, buf, wsize + 1); int size = WideCharToMultiByte(CP_UTF8, 0, buf, wsize, NULL, 0, NULL, NULL); String str; str.resize(size); WideCharToMultiByte(CP_UTF8, 0, buf, wsize, str.getBuffer(), size, NULL, NULL); str.setLength(size); delete[] buf; return str; }
void SensorFileSysWalker::sendSignal( int action , String value ) { sensorDataId++; logger.logInfo( String( "sendSignal: sensory data id=" ) + sensorDataId + ", action=" + action + ", value=" + value ); NeuroSignal *signal = MindSensor::getSensorySignal(); // set value by chunks split by directory delimiter char *p = value.getBuffer(); ASSERTMSG( p != NULL , "Unexpected" ); int nSent = 0; while( *p ) { // find delimiter char *next = NULL; char *pn = strchr( p , '\\' ); if( pn == NULL ) { pn = p + strlen( p ); next = pn; } else next = pn + 1; // check long name int spaceSize = SENSOR_WIDTH_DATA - 1; if( pn - p > spaceSize ) { pn = p + spaceSize; next = pn; } // create chunk signal signal -> clearData(); // add action info charToSignal( signal , 0 , action ); // set chunk item int len = pn - p; for( int k = 0; k < len; k++ ) charToSignal( signal , k + 1 , p[ k ] ); for( int k = len + 1; k < SENSOR_WIDTH_DATA; k++ ) charToSignal( signal , k , 0 ); // produce item flow String msgId = String( "s" ) + sensorDataId + "m" + nSent; MindSensor::processSensorData( msgId ); nSent++; p = next; } }
void JsonTest::test03() { SLOG(CLS_NAME, "test03"); String str; Json* json1 = Json::getNewObject(); Json* json2 = Json::getNewObject("messages"); json1->add(json2); json1->add("kind", "0003"); json1->serialize(&str); SMSG(slog::DEBUG, "%s", str.getBuffer()); SASSERT("01", str.equals("{\"messages\":[],\"kind\":\"0003\"}")); delete json1; }
void AIDBRecordHeader::readData( String& data , FILE *file ) { if( recordStatus != 'N' ) throw RuntimeError( "AIDBRecordHeader::readData: invalid record to read from file" ); if( data.size() < recordDataSize ) data.resize( recordDataSize ); char *ptr = data.getBuffer(); if( fread( ptr , 1 , recordDataSize , file ) != recordDataSize ) throw RuntimeError( "AIDBRecordHeader::readData: cannot read from file required size" ); ptr[ recordDataSize ] = 0; // skip record terminator if( getc( file ) != '\n' ) throw RuntimeError( "AIDBRecordHeader::readData: no record terminator" ); }
String Value_money_imp::get_String( tslen inLimit ) const { String str; if( inLimit != 0 ) { tslen MaxLen = get_MaxChars(); tslen BuffLength = MaxLen + 1; UChar* pBuffer = str.getBuffer( BuffLength ); UChar* pEnd = get_String( pBuffer, MaxLen ); // copy str into buffer. str.releaseBuffer( static_cast<tslen>(pEnd - pBuffer) ); // not -1 and less than maxLen if( inLimit > 0 && inLimit < MaxLen ) { str.truncate( inLimit ); } } return str; }
String Value_time_imp::get_String( tslen inLimit ) const { String str; if( inLimit != 0 ) { UChar* p = str.getBuffer(kTimeStrMaxLength + 1); const DTFormat* pDTFormat = get_DTFormat(); Convert_time_str_uu_fast( (TimeEncoded&)mValue, pDTFormat->mTimeSep, p ); str.releaseBuffer(kTimeStrMaxLength); // not -1 and less than maxLen if( inLimit > 0 && vuint32(inLimit) < kTimeStrMaxLength ) { str.truncate( inLimit ); } } return str; }
/*! * \brief メッセージ設定 */ void Exception::setMessage(const char* format, ...) { #if defined(_WINDOWS) mErrorNo = GetLastError(); #else mErrorNo = errno; #endif // メッセージ生成 va_list arg; va_start(arg, format); int32_t capacity = sizeof(mMessage) - 1; int32_t len = vsnprintf(mMessage, capacity, format, arg); va_end(arg); // バッファが一杯か? if (len == -1) { mMessage[capacity] = '\0'; noticeLog("%s", mMessage); return; } // APIエラーによる例外か? if (mErrorNo == 0) { noticeLog("%s", mMessage); return; } // APIエラーのメッセージ取得 #if defined(_WINDOWS) wchar_t apiError[512]; DWORD flags = // FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS; FormatMessageW(flags, nullptr, mErrorNo, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), apiError, sizeof(apiError), nullptr); apiError[lstrlenW(apiError) - 2] = '\0'; // 改行除去 String str; str.conv(apiError); char* buffer = str.getBuffer(); #else char* buffer = strerror(mErrorNo); #endif if (len) len = snprintf(mMessage + len, capacity - len, " / %s(%d)", buffer, mErrorNo); else len = snprintf(mMessage + len, capacity - len, "%s(%d)", buffer, mErrorNo); if (len == -1) mMessage[capacity] = '\0'; if (mOutputLog) noticeLog("%s", mMessage); }