source: Include/system/string.sbp@ 299

Last change on this file since 299 was 272, checked in by イグトランス (egtra), 17 years ago

StringBuilderを追加。String不変へ。共通の文字列操作関数をActiveBasic.Strings内に配置(設計に検討の余地あり)。

File size: 6.7 KB
RevLine 
[1]1'string.sbp
2'文字列変数の操作用
3
4#ifndef _INC_BASIC_STRING
5#define _INC_BASIC_STRING
6
[272]7Function StrPtr(s As String) As *StrChar
8 StrPtr = s.StrPtr
[1]9End Function
10
11Function ZeroString(length As Long) As String
[223]12 Return New String(0 As StrChar, length)
[1]13End Function
14
[167]15Function MakeStr(psz As PSTR) As String
16 Return New String(psz)
[1]17End Function
18
[167]19Function MakeStr(psz As PWSTR) As String
20 Return New String(psz)
[142]21End Function
22
23Dim _System_AllocForConvertedString As *Function(size As SIZE_T) As VoidPtr
24_System_AllocForConvertedString = AddressOf (GC_malloc_atomic)
25
26Function GetStr(psz As PSTR, ByRef wcs As PWSTR) As SIZE_T
27 If psz <> 0 Then
[175]28 Return GetStr(psz, lstrlenA(psz) As SIZE_T, wcs)
[142]29 Else
30 Return 0
31 End If
32End Function
33
34Function GetStr(psz As PSTR, len As SIZE_T, ByRef wcs As PWSTR) As SIZE_T
35 If psz = 0 Then Return 0
[192]36 Dim lenWCS = MultiByteToWideChar(CP_THREAD_ACP, 0, psz, len, 0, 0)
37 wcs = _System_AllocForConvertedString(SizeOf (WCHAR) * (lenWCS + 1)) As PWSTR
38 GetStr = MultiByteToWideChar(CP_THREAD_ACP, 0, psz, len, wcs, lenWCS)
[149]39 wcs[GetStr] = 0
[142]40End Function
41
42Function GetStr(psz As PWSTR, ByRef wcs As PWSTR) As SIZE_T
43 wcs = psz
44 If psz <> 0 Then
[175]45 Return lstrlenW(psz) As SIZE_T
[142]46 Else
47 Return 0
48 End If
49End Function
50
51Function GetStr(psz As PWSTR, len As SIZE_T, ByRef wcs As PWSTR) As SIZE_T
52 wcs = psz
53 If psz <> 0 Then
[149]54 Return len
[142]55 Else
56 Return 0
57 End If
58End Function
59
60Function GetStr(psz As PWSTR, ByRef mbs As PSTR) As SIZE_T
61 If psz = 0 Then
62 Return 0
63 Else
[175]64 Return GetStr(psz, lstrlenW(psz) As SIZE_T, mbs)
[142]65 End If
66End Function
67
68Function GetStr(psz As PWSTR, len As SIZE_T, ByRef mbs As PSTR) As SIZE_T
69 If psz = 0 Then Return 0
[192]70 Dim lenMBS = WideCharToMultiByte(CP_THREAD_ACP, 0, psz, len, 0, 0, 0, 0)
71 mbs = _System_AllocForConvertedString(SizeOf (SByte) * (lenMBS + 1)) As PSTR
72 GetStr = WideCharToMultiByte(CP_THREAD_ACP, 0, psz, len, mbs, lenMBS, 0, 0) As SIZE_T
[142]73 mbs[GetStr] = 0
74End Function
75
76Function GetStr(psz As PSTR, ByRef mbs As PSTR) As SIZE_T
77 mbs = psz
78 If psz <> 0 Then
[175]79 Return lstrlenA(psz) As SIZE_T
[142]80 Else
81 Return 0
82 End If
83End Function
84
85Function GetStr(psz As PSTR, len As SIZE_T, ByRef mbs As PSTR) As SIZE_T
86 mbs = psz
[149]87 If psz <> 0 Then
88 Return len
89 Else
90 Return 0
91 End If
[142]92End Function
93
[237]94Function GetStr(s As String, ByRef mbs As PSTR) As SIZE_T
[272]95 Return GetStr(s.StrPtr, s.Length As SIZE_T, mbs)
[142]96End Function
97
[237]98Function GetStr(s As String, ByRef wcs As PWSTR) As SIZE_T
[272]99 Return GetStr(s.StrPtr, s.Length As SIZE_T, wcs)
[142]100End Function
101
102Function GetWCStr(psz As PSTR, ByRef wcs As PWSTR) As SIZE_T
103 Return GetStr(psz, wcs)
104End Function
105
106Function GetWCStr(psz As PSTR, len As SIZE_T, ByRef wcs As PWSTR) As SIZE_T
107 Return GetStr(psz, len, wcs)
108End Function
109
110Function GetWCStr(psz As PWSTR, ByRef wcs As PWSTR) As SIZE_T
111 Return GetStr(psz, wcs)
112End Function
113
114Function GetWCStr(psz As PWSTR, len As SIZE_T, ByRef wcs As PWSTR) As SIZE_T
115 Return GetStr(psz, len, wcs)
116End Function
117
[237]118Function GetWCStr(s As String, ByRef wcs As PWSTR) As SIZE_T
[272]119 Return GetStr(s.StrPtr, s.Length As SIZE_T, wcs)
[142]120End Function
121
122Function GetMBStr(psz As PWSTR, ByRef mbs As PSTR) As SIZE_T
123 Return GetStr(psz, mbs)
124End Function
125
126Function GetMBStr(psz As PWSTR, len As SIZE_T, ByRef mbs As PSTR) As SIZE_T
127 Return GetStr(psz, len, mbs)
128End Function
129
130Function GetMBStr(psz As PSTR, ByRef mbs As PSTR) As SIZE_T
131 Return GetStr(psz, mbs)
132End Function
133
134Function GetMBStr(psz As PSTR, len As SIZE_T, ByRef mbs As PSTR) As SIZE_T
135 Return GetStr(psz, len, mbs)
136End Function
137
[237]138Function GetMBStr(s As String, ByRef mbs As PSTR) As SIZE_T
[272]139 Return GetStr(s.StrPtr, s.Length As SIZE_T, mbs)
[142]140End Function
141
142Function GetTCStr(psz As PSTR, ByRef tcs As PCTSTR) As SIZE_T
143 Return GetStr(psz, tcs)
144End Function
145
146Function GetTCStr(psz As PSTR, len As SIZE_T, ByRef tcs As PCTSTR) As SIZE_T
147 Return GetStr(psz, len, tcs)
148End Function
149
150Function GetTCStr(psz As PWSTR, ByRef tcs As PCTSTR) As SIZE_T
151 Return GetStr(psz, tcs)
152End Function
153
154Function GetTCStr(psz As PWSTR, len As SIZE_T, ByRef tcs As PCTSTR) As SIZE_T
155 Return GetStr(psz, len, tcs)
156End Function
157
[237]158Function GetTCStr(s As String, ByRef tcs As PCTSTR) As SIZE_T
[272]159 Return GetStr(s.StrPtr, s.Length As SIZE_T, tcs)
[142]160End Function
161
162Function GetSCStr(psz As PSTR, ByRef ss As *StrChar) As SIZE_T
163 Return GetStr(psz, ss)
164End Function
165
166Function GetSCStr(psz As PSTR, len As SIZE_T, ByRef ss As *StrChar) As SIZE_T
167 Return GetStr(psz, len, ss)
168End Function
169
170Function GetSCStr(psz As PWSTR, ByRef ss As *StrChar) As SIZE_T
171 Return GetStr(psz, ss)
172End Function
173
174Function GetSCStr(psz As PWSTR, len As SIZE_T, ByRef ss As *StrChar) As SIZE_T
175 Return GetStr(psz, len, ss)
176End Function
177
[237]178Function GetSCStr(s As String, ByRef ss As *StrChar) As SIZE_T
[272]179 Return GetStr(s.StrPtr, s.Length As SIZE_T, ss)
[142]180End Function
181
182Function ToWCStr(psz As PSTR) As PWSTR
[149]183 GetStr(psz, ToWCStr)
[142]184End Function
185
186Function ToWCStr(psz As PSTR, len As SIZE_T) As PWSTR
[149]187 GetStr(psz, len, ToWCStr)
[142]188End Function
189
190Function ToWCStr(psz As PWSTR) As PWSTR
[149]191 GetStr(psz, ToWCStr)
[142]192End Function
193
194Function ToWCStr(psz As PWSTR, len As SIZE_T) As PWSTR
[149]195 GetStr(psz, len, ToWCStr)
[142]196End Function
197
[237]198Function ToWCStr(s As String) As PWSTR
[272]199 GetStr(s.StrPtr, s.Length As SIZE_T, ToWCStr)
[142]200End Function
201
202Function ToMBStr(psz As PSTR) As PSTR
[149]203 GetStr(psz, ToMBStr)
[142]204End Function
205
206Function ToMBStr(psz As PSTR, len As SIZE_T) As PSTR
[149]207 GetStr(psz, len, ToMBStr)
[142]208End Function
209
210Function ToMBStr(psz As PWSTR) As PSTR
[149]211 GetStr(psz, ToMBStr)
[142]212End Function
213
214Function ToMBStr(psz As PWSTR, len As SIZE_T) As PSTR
[149]215 GetStr(psz, len, ToMBStr)
[142]216End Function
217
[237]218Function ToMBStr(s As String) As PSTR
[272]219 GetStr(s.StrPtr, s.Length As SIZE_T, ToMBStr)
[142]220End Function
221
222Function ToTCStr(psz As PSTR) As PCTSTR
[149]223 GetStr(psz, ToTCStr)
[142]224End Function
225
226Function ToTCStr(psz As PSTR, len As SIZE_T) As PCTSTR
[149]227 GetStr(psz, len, ToTCStr)
[142]228End Function
229
230Function ToTCStr(psz As PWSTR) As PCTSTR
[149]231 GetStr(psz, ToTCStr)
[142]232End Function
233
234Function ToTCStr(psz As PWSTR, len As SIZE_T) As PCTSTR
[149]235 GetStr(psz, len, ToTCStr)
[142]236End Function
237
[237]238Function ToTCStr(s As String) As PCTSTR
[272]239 GetStr(s.StrPtr, s.Length As SIZE_T, ToTCStr)
[142]240End Function
241
242Function ToSCStr(psz As PSTR) As *StrChar
[149]243 GetStr(psz, ToSCStr)
[142]244End Function
245
246Function ToSCStr(psz As PSTR, len As SIZE_T) As *StrChar
[149]247 GetStr(psz, len, ToSCStr)
[142]248End Function
249
250Function ToSCStr(psz As PWSTR) As *StrChar
[149]251 GetStr(psz, ToSCStr)
[142]252End Function
253
254Function ToSCStr(psz As PWSTR, len As SIZE_T) As *StrChar
[149]255 GetStr(psz, len, ToSCStr)
[142]256End Function
257
[237]258Function ToSCStr(s As String) As *StrChar
[272]259 GetStr(s.StrPtr, s.Length As SIZE_T, ToSCStr)
[142]260End Function
261
[1]262#endif '_INC_BASIC_STRING
Note: See TracBrowser for help on using the repository browser.