MCPcopy Create free account
hub / github.com/Sinflower/UberWolf / PutCharCode_inline

Function PutCharCode_inline

3rdParty/DXLib/CharCode.cpp:948–1145  ·  view source on GitHub ↗

文字コードを通常の文字列に変換する、終端にヌル文字は書き込まない( 戻り値:書き込んだバイト数 )

Source from the content-addressed store, hash-verified

946
947// 文字コードを通常の文字列に変換する、終端にヌル文字は書き込まない( 戻り値:書き込んだバイト数 )
948__inline int PutCharCode_inline( u32 CharCode, int CharCodeFormat, char *Dest )
949{
950 switch( CharCodeFormat )
951 {
952 case CHARCODEFORMAT_SHIFTJIS :
953 case CHARCODEFORMAT_GB2312 :
954 case CHARCODEFORMAT_UHC :
955 case CHARCODEFORMAT_BIG5 :
956 if( CharCode >= 0x100 )
957 {
958 if( Dest != NULL )
959 {
960 ( ( u8 * )Dest )[ 0 ] = ( u8 )( CharCode >> 8 ) ;
961 ( ( u8 * )Dest )[ 1 ] = ( u8 )( CharCode ) ;
962 }
963 return 2;
964 }
965 else
966 {
967 if( Dest != NULL )
968 {
969 ( ( u8 * )Dest )[ 0 ] = ( u8 )CharCode ;
970 }
971 return 1 ;
972 }
973
974 case CHARCODEFORMAT_ASCII :
975 case CHARCODEFORMAT_WINDOWS_1252 :
976 case CHARCODEFORMAT_ISO_IEC_8859_15 :
977 if( Dest != NULL )
978 {
979 ( ( u8 * )Dest )[ 0 ] = ( u8 )CharCode ;
980 }
981 return 1 ;
982
983 case CHARCODEFORMAT_UTF16LE :
984 case CHARCODEFORMAT_UTF16BE :
985 {
986 u32 DestCode1 ;
987 u32 DestCode2 ;
988 u32 DestSize ;
989
990 // UTF-16 で表現できない値の場合はキャンセル
991 if( CharCode > 0x10ffff )
992 {
993 return 0 ;
994 }
995
996 if( CharCode > 0xffff )
997 {
998 DestCode1 = 0xd800 | ( ( ( CharCode - 0x10000 ) >> 10 ) & 0x3ff ) ;
999 DestCode2 = 0xdc00 | ( ( CharCode - 0x10000 ) & 0x3ff ) ;
1000
1001 DestSize = 4 ;
1002 }
1003 else
1004 {
1005 DestCode1 = CharCode ;

Callers 12

PutCharCodeFunction · 0.85
CharCodeStringToStringFunction · 0.85
ConvStringFunction · 0.85
CL_struprFunction · 0.85
CL_vsprintf_help_ftoaFunction · 0.85
CL_vsprintf_help_itoaFunction · 0.85
CL_vsprintf_help_sFunction · 0.85
CL_vsprintf_help_cFunction · 0.85
CL_vsprintfFunction · 0.85
CL_itoaFunction · 0.85
CL_vsscanfFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected