Theolizer  Version.1.2.0
serializer for C++ / Do you want to update your classes easily ?
u8string.h ファイル

Unicode文字列用補助ツール群 [詳解]

#include "internal/external.h"
#include <string>
#include <iostream>
u8string.h の依存先関係図:

[ソースコード]

クラス

struct  theolizer::MultiByte
 
class  theolizer::u8string
 Unicode記録用文字列クラスu8string. [詳解]
 
class  theolizer::u8string::b_string
 

名前空間

 theolizer
 theolizer名前空間
 

マクロ定義

#define THEOLIZER_INTERNAL_CONSTRUCTOR(dFromChar)
 
#define THEOLIZER_INTERNAL_FUNCTION(dFunc)
 
#define THEOLIZER_INTERNAL_FRIEND_RELATIONAL_OPERATOR(dFunc)
 
#define THEOLIZER_INTERNAL_GET_STRING(dToChar, dName)
 

関数

unsigned THEOLIZER_INTERNAL_DLL theolizer::getACP ()
 
bool THEOLIZER_INTERNAL_DLL theolizer::setACP (unsigned iCodePage)
 
bool THEOLIZER_INTERNAL_DLL theolizer::registerStream (std::istream *iIStream)
 
bool THEOLIZER_INTERNAL_DLL theolizer::registerStream (std::ostream *iOStream)
 
bool THEOLIZER_INTERNAL_DLL theolizer::registerStream (std::iostream *iIOStream)
 
bool THEOLIZER_INTERNAL_DLL theolizer::unregisterStream (std::istream *iIStream)
 
bool THEOLIZER_INTERNAL_DLL theolizer::unregisterStream (std::ostream *iOStream)
 
bool THEOLIZER_INTERNAL_DLL theolizer::unregisterStream (std::iostream *iIOStream)
 
bool THEOLIZER_INTERNAL_DLL theolizer::isInputByUtf8 (std::istream *iIStream)
 
bool THEOLIZER_INTERNAL_DLL theolizer::isOutputByUtf8 (std::ostream *iOStream)
 

変数

const THEOLIZER_INTERNAL_DLL unsigned theolizer::kCP_ACP
 
const THEOLIZER_INTERNAL_DLL unsigned theolizer::kCP_UTF8
 

詳解

Unicode文字列用補助ツール群

著者
Yoshinori Tahara
日付
2015/09/02 Created
①u8string:下記文字エンコード間のコンバート機能を提供する
char UTF-8
wchar_t UTF-16/32
char16_t UTF-16
char32_t UTF-32
②Windows用Multi Byte対応機能を提供する
registerStream()にて登録したiostreamに対して、
Windows APIを用いてu8stringのMulti Byteとのコンバートを行う。
デフォルトにて、std::cint, std::cout, std::cerrを登録している。
  • std::istream : ulti Byte → UTF-8, UTF-16, UTF-32
  • std::ostream : UTF-8, UTF-16, UTF-32 → Multi Byte
③コンバート・エラー発生時、ConvertError例外を投げる
覚え書き
Visual Studioのchar型文字列リテラルは、デフォルトではMulti Byte文字エンコードである。
Visual Studio 2015以降ならば、u8"任意文字列"の書式にてUTF-8文字エンコードできる。

u8string.h に定義があります。

マクロ定義詳解

§ THEOLIZER_INTERNAL_CONSTRUCTOR

#define THEOLIZER_INTERNAL_CONSTRUCTOR (   dFromChar)
値:
/*! コンストラクタ */ \
u8string(const dFromChar* iIn) : \
mString(internal::Converter<char, dFromChar>::conv(iIn)) { } \
/*! コンストラクタ */ \
u8string(const std::basic_string<dFromChar>& iIn) : \
mString(internal::Converter<char, dFromChar>::conv(iIn)) { }

内部マクロ

u8string.h315 行目に定義があります。

§ THEOLIZER_INTERNAL_FRIEND_RELATIONAL_OPERATOR

#define THEOLIZER_INTERNAL_FRIEND_RELATIONAL_OPERATOR (   dFunc)
値:
/*! 比較演算子 */ \
friend bool dFunc(const u8string& lhs, const u8string& rhs) \
{ \
return std::dFunc(lhs.mString, rhs.mString); \
} \
/*! 比較演算子 */ \
friend bool dFunc(const u8string& lhs, char const* rhs) \
{ \
return std::dFunc(lhs.mString, rhs); \
} \
/*! 比較演算子 */ \
friend bool dFunc(char const* lhs, const u8string& rhs) \
{ \
return std::dFunc(lhs, rhs.mString); \
}

内部マクロ

u8string.h379 行目に定義があります。

§ THEOLIZER_INTERNAL_FUNCTION

#define THEOLIZER_INTERNAL_FUNCTION (   dFunc)
値:
u8string& dFunc(const u8string& iIn) { \
mString.dFunc(iIn.mString); \
return *this; \
}

内部マクロ

u8string.h344 行目に定義があります。

§ THEOLIZER_INTERNAL_GET_STRING

#define THEOLIZER_INTERNAL_GET_STRING (   dToChar,
  dName 
)
値:
std::dName get_##dName() const \
{ \
return internal::Converter<dToChar, char>::conv(mString); \
}

内部マクロ

u8string.h458 行目に定義があります。