'string.sbp '文字列変数の操作用 #ifndef _INC_BASIC_STRING #define _INC_BASIC_STRING Function StrPtr(buf As *Char) As *Char StrPtr = buf End Function Function ZeroString(length As Long) As String Dim str As String str.ReSize(length) Return str End Function Function MakeStr(pBuf As PSTR) As String Dim temp As String(pBuf) Return temp End Function Function MakeStr(pBuf As PWSTR) As String Dim temp As String(pBuf) Return temp End Function Dim _System_AllocForConvertedString As *Function(size As SIZE_T) As VoidPtr _System_AllocForConvertedString = AddressOf (GC_malloc_atomic) Function GetStr(psz As PSTR, ByRef wcs As PWSTR) As SIZE_T If psz <> 0 Then Return GetStr(psz, lstrlenA(psz), wcs) Else Return 0 End If End Function Function GetStr(psz As PSTR, len As SIZE_T, ByRef wcs As PWSTR) As SIZE_T If psz = 0 Then Return 0 Dim sizeWCS = MultiByteToWideChar(CP_THREAD_ACP, 0, psz, len, 0, 0) wcs = _System_AllocForConvertedString(SizeOf (WCHAR) * sizeWCS) As PWSTR GetWCStr = MultiByteToWideChar(CP_THREAD_ACP, 0, psz, len, wcs, sizeWCS) wcs[GetWCStr] = 0 End Function Function GetStr(psz As PWSTR, ByRef wcs As PWSTR) As SIZE_T wcs = psz If psz <> 0 Then Return lstrlenW(psz) Else Return 0 End If End Function Function GetStr(psz As PWSTR, len As SIZE_T, ByRef wcs As PWSTR) As SIZE_T wcs = psz If psz <> 0 Then Return lstrlenW(psz) Else Return 0 End If End Function Function GetStr(psz As PWSTR, ByRef mbs As PSTR) As SIZE_T If psz = 0 Then Return 0 Else Return GetStr(psz, lstrlenW(psz), mbs) End If End Function Function GetStr(psz As PWSTR, len As SIZE_T, ByRef mbs As PSTR) As SIZE_T If psz = 0 Then Return 0 Dim sizeMBS = WideCharToMultiByte(CP_THREAD_ACP, 0, psz, len, 0, 0, 0, 0) mbs = _System_AllocForConvertedString(SizeOf (SByte) * (sizeMBS + 1)) As PSTR GetStr = WideCharToMultiByte(CP_THREAD_ACP, 0, psz, len, mbs, sizeMBS, 0, 0) As SIZE_T mbs[GetStr] = 0 End Function Function GetStr(psz As PSTR, ByRef mbs As PSTR) As SIZE_T mbs = psz If psz <> 0 Then Return lstrlenA(psz) Else Return 0 End If End Function Function GetStr(psz As PSTR, len As SIZE_T, ByRef mbs As PSTR) As SIZE_T mbs = psz Return len End Function Function GetStr(ByRef s As String, ByRef mbs As PSTR) As SIZE_T Return GetStr(s.Chars, s.Length As SIZE_T, mbs) End Function Function GetStr(ByRef s As String, ByRef wcs As PWSTR) As SIZE_T Return GetStr(s.Chars, s.Length As SIZE_T, wcs) End Function Function GetWCStr(psz As PSTR, ByRef wcs As PWSTR) As SIZE_T Return GetStr(psz, wcs) End Function Function GetWCStr(psz As PSTR, len As SIZE_T, ByRef wcs As PWSTR) As SIZE_T Return GetStr(psz, len, wcs) End Function Function GetWCStr(psz As PWSTR, ByRef wcs As PWSTR) As SIZE_T Return GetStr(psz, wcs) End Function Function GetWCStr(psz As PWSTR, len As SIZE_T, ByRef wcs As PWSTR) As SIZE_T Return GetStr(psz, len, wcs) End Function Function GetWCStr(ByRef s As String, ByRef wcs As PWSTR) As SIZE_T Return GetStr(s.Chars, s.Length, wcs) End Function Function GetMBStr(psz As PWSTR, ByRef mbs As PSTR) As SIZE_T Return GetStr(psz, mbs) End Function Function GetMBStr(psz As PWSTR, len As SIZE_T, ByRef mbs As PSTR) As SIZE_T Return GetStr(psz, len, mbs) End Function Function GetMBStr(psz As PSTR, ByRef mbs As PSTR) As SIZE_T Return GetStr(psz, mbs) End Function Function GetMBStr(psz As PSTR, len As SIZE_T, ByRef mbs As PSTR) As SIZE_T Return GetStr(psz, len, mbs) End Function Function GetMBStr(ByRef s As String, ByRef mbs As PSTR) As SIZE_T Return GetStr(s.Chars, s.Length, mbs) End Function Function GetTCStr(psz As PSTR, ByRef tcs As PCTSTR) As SIZE_T Return GetStr(psz, tcs) End Function Function GetTCStr(psz As PSTR, len As SIZE_T, ByRef tcs As PCTSTR) As SIZE_T Return GetStr(psz, len, tcs) End Function Function GetTCStr(psz As PWSTR, ByRef tcs As PCTSTR) As SIZE_T Return GetStr(psz, tcs) End Function Function GetTCStr(psz As PWSTR, len As SIZE_T, ByRef tcs As PCTSTR) As SIZE_T Return GetStr(psz, len, tcs) End Function Function GetTCStr(ByRef s As String, ByRef wcs As PCTSTR) As SIZE_T Return GetStr(s.Chars, s.Length, tcs) End Function Function GetSCStr(psz As PSTR, ByRef ss As *StrChar) As SIZE_T Return GetStr(psz, ss) End Function Function GetSCStr(psz As PSTR, len As SIZE_T, ByRef ss As *StrChar) As SIZE_T Return GetStr(psz, len, ss) End Function Function GetSCStr(psz As PWSTR, ByRef ss As *StrChar) As SIZE_T Return GetStr(psz, ss) End Function Function GetSCStr(psz As PWSTR, len As SIZE_T, ByRef ss As *StrChar) As SIZE_T Return GetStr(psz, len, ss) End Function Function GetSCStr(ByRef s As String, ByRef wcs As *StrChar) As SIZE_T Return GetStr(s.Chars, s.Length, ss) End Function Function ToWCStr(psz As PSTR) As PWSTR Return GetStr(psz, ToWCStr) End Function Function ToWCStr(psz As PSTR, len As SIZE_T) As PWSTR Return GetStr(psz, len, ToWCStr) End Function Function ToWCStr(psz As PWSTR) As PWSTR Return GetStr(psz, ToWCStr) End Function Function ToWCStr(psz As PWSTR, len As SIZE_T) As PWSTR Return GetStr(psz, len, ToWCStr) End Function Function ToWCStr(ByRef s As String) As PWSTR Return GetStr(s.Chars, s.Length, ToWCStr) End Function Function ToMBStr(psz As PSTR) As PSTR Return GetStr(psz, ToMBStr) End Function Function ToMBStr(psz As PSTR, len As SIZE_T) As PSTR Return GetStr(psz, len, ToMBStr) End Function Function ToMBStr(psz As PWSTR) As PSTR Return GetStr(psz, ToMBStr) End Function Function ToMBStr(psz As PWSTR, len As SIZE_T) As PSTR Return GetStr(psz, len, ToMBStr) End Function Function ToMBStr(ByRef s As String) As PSTR Return GetStr(s.Chars, s.Length, ToMBStr) End Function Function ToTCStr(psz As PSTR) As PCTSTR Return GetStr(psz, ToTCStr) End Function Function ToTCStr(psz As PSTR, len As SIZE_T) As PCTSTR Return GetStr(psz, len, ToTCStr) End Function Function ToTCStr(psz As PWSTR) As PCTSTR Return GetStr(psz, ToTCStr) End Function Function ToTCStr(psz As PWSTR, len As SIZE_T) As PCTSTR Return GetStr(psz, len, ToTCStr) End Function Function ToTCStr(ByRef s As String) As PCTSTR Return GetStr(s.Chars, s.Length, ToTCStr) End Function Function ToSCStr(psz As PSTR) As *StrChar Return GetStr(psz, ToSCStr) End Function Function ToSCStr(psz As PSTR, len As SIZE_T) As *StrChar Return GetStr(psz, len, ToSCStr) End Function Function ToSCStr(psz As PWSTR) As *StrChar Return GetStr(psz, ToSCStr) End Function Function ToSCStr(psz As PWSTR, len As SIZE_T) As *StrChar Return GetStr(psz, len, ToSCStr) End Function Function ToSCStr(ByRef s As String) As *StrChar Return GetStr(s.Chars, s.Length, ToSCStr) End Function #endif '_INC_BASIC_STRING