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;
}
Example #2
0
File: test.cpp Project: nandai/slog
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;
}
Example #3
0
File: test.cpp Project: nandai/slog
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;
}
Example #4
0
/*!
 * \brief   コンストラクタ
 */
SequenceLogServiceDB::SequenceLogServiceDB()
{
    SLOG(CLS_NAME, "SequenceLogServiceDB");

    String name;
    getName(&name);

    connect("localhost", "slog", "DPdhE8iv1HQIe6nL", name.getBuffer());
}
Example #5
0
File: test.cpp Project: nandai/slog
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;
	}
}
Example #8
0
File: test.cpp Project: nandai/slog
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;
}
Example #9
0
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" );
}
Example #10
0
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;
}
Example #11
0
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;
}
Example #12
0
/*!
 * \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);
}