/******************************************************************************
*
* Copyright (c) 2014 Antillia.com TOSHIYUKI ARAI. ALL RIGHTS RESERVED.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions, and the following disclaimer.
*
* 2. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
*
*
* LogWriter.cpp
*
*****************************************************************************/
#include <oz++/Locale.h>
#include <oz++/LogWriter.h>
#include <oz++/StringT.h>
namespace OZ {
class MbString :public StringT<char> {
public:
MbString(const char* string)
:StringT<char>(string)
{
LogWriter::debug("MbString#MbString(const char* string='%s')",
string);
}
public:
MbString(const MbString& string)
:StringT<char>(string)
{
LogWriter::debug("MbString#MbString(const MbString& string='%s')",
(const char*)string);
}
};
class WcString :public StringT<wchar_t> {
public:
WcString(const wchar_t* string)
:StringT<wchar_t>(string)
{
LogWriter::debug(L"WcString#WcString(const wchar_t* string='%ls')",
string);
}
public:
WcString(const WcString& string)
:StringT<wchar_t>(string)
{
LogWriter::debug(L"WcString#WcString(const WcString& string='%ls')",
(const wchar_t*)string);
}
};
}
int main(int argc, char* argv[])
{
Locale locale;
fwide(stdout, 1);
LogWriter::debug(L"%ls", L"テスト開始");
try {
StringT<char> string("OpenFlow: オープンフロー");
MbString mbstring("NFV: ネットワーク機能仮想化");
MbString mbstring1((const char*)string);
MbString mbstring2(mbstring);
wprintf(L"1 %s\n", (const char*)mbstring1);
wprintf(L"2 %s\n", (const char*)mbstring2);
StringT<wchar_t> wstring(L"Hello world. こんにちは世界");
WcString wcsstring(L"Goodbye world. さようなら世界");
WcString wcsstring1((const wchar_t*)wstring);
WcString wcsstring2(wcsstring);
wprintf(L"3 %ls\n", (const wchar_t*)wcsstring1);
wprintf(L"4 %ls\n", (const wchar_t*)wcsstring2);
const char* null = (char*)NULL;
if (null != (char*)NULL) {
StringT<char> stringx(null);
} else {
throw Exception("NULL string");
}
} catch (Exception& ex) {
LogWriter::err("%s", (const char*)ex.toString());
wprintf(L"%s\n", (const char*)ex.toString());
}
LogWriter::debug(L"%ls", L"テスト終了");
return 0;
}