Changeset 23824 for lang/cplusplus
- Timestamp:
- 11/16/08 14:21:19 (5 years ago)
- Files:
-
- 1 modified
-
lang/cplusplus/i3/trunk/src/Test2.cpp (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lang/cplusplus/i3/trunk/src/Test2.cpp
r23823 r23824 88 88 }; 89 89 struct string_list { 90 char* value;90 TCHAR* value; 91 91 size_t length; 92 92 string_list* prev; … … 122 122 }; 123 123 struct string_array { 124 char** data;124 TCHAR** data; 125 125 size_t length; 126 126 string_array& operator=(string_list& list) { … … 130 130 return *this; 131 131 } 132 data = ( char**)malloc(sizeof(*data)*length);132 data = (TCHAR**)malloc(sizeof(*data)*length); 133 133 if (data == NULL) { 134 134 abort(); … … 143 143 struct Config { 144 144 int i; 145 char* s;145 TCHAR* s; 146 146 integer_list ia; 147 147 string_list sa; … … 149 149 struct Config2 { 150 150 int i; 151 char* s;151 TCHAR* s; 152 152 integer_array ia; 153 153 string_array sa; … … 178 178 }; 179 179 struct string_value { 180 char*& data; 181 string_value(char*& data) : data(data) {} 182 void operator()(const char* first, const char* last) const { 183 data = (char*)calloc(last - first + 1, 1); 180 TCHAR*& data; 181 string_value(TCHAR*& data) : data(data) {} 182 void operator()(const TCHAR* first, const TCHAR* last) const { 183 ptrdiff_t bytes = (char*)last - (char*)first; 184 data = (TCHAR*)calloc(bytes + sizeof(TCHAR), 1); 184 185 if (!data) { 185 186 abort(); 186 187 } 187 memcpy(data, first, last - first);188 memcpy(data, first, bytes); 188 189 } 189 190 }; … … 191 192 string_list& data; 192 193 string_array_value(string_list& data) : data(data) {} 193 void operator()(const char* first, const char* last) const { 194 void operator()(const TCHAR* first, const TCHAR* last) const { 195 ptrdiff_t bytes = (char*)last - (char*)first; 194 196 string_list* got = (string_list*)malloc(sizeof(string_list)); 195 197 if (!got) { 196 198 abort(); 197 199 } 198 got->value = ( char*)calloc(last - first + 1, 1);200 got->value = (TCHAR*)calloc(bytes + sizeof(TCHAR), 1); 199 201 if (!got->value) { 200 202 abort(); 201 203 } 202 memcpy(got->value, first, last - first);204 memcpy(got->value, first, bytes); 203 205 got->prev = data.tail; 204 206 data.tail = got; … … 226 228 definition(const MyIniLoader& self) 227 229 { 228 line_ending = str_p( "\r\n") | ch_p('\r') | ch_p('\n') | end_p;230 line_ending = str_p(_T("\r\n")) | ch_p(_T('\r')) | ch_p(_T('\n')) | end_p; 229 231 expr = ( 230 (*blank_p >> str_p( "i") >> *blank_p >> "=">> *blank_p >> int_p[self.i] >> *blank_p) |231 (*blank_p >> str_p( "ia[]") >> *blank_p >> "=">> *blank_p >> int_p[self.ia] >> *blank_p) |232 (*blank_p >> str_p( "s") >> *blank_p >> "=">> *blank_p >> (*(anychar_p - line_ending))[self.s]) |233 (*blank_p >> str_p( "sa[]") >> *blank_p >> "=">> *blank_p >> (*(anychar_p - line_ending))[self.sa]) |232 (*blank_p >> str_p(_T("i")) >> *blank_p >> _T("=") >> *blank_p >> int_p[self.i] >> *blank_p) | 233 (*blank_p >> str_p(_T("ia[]")) >> *blank_p >> _T("=") >> *blank_p >> int_p[self.ia] >> *blank_p) | 234 (*blank_p >> str_p(_T("s")) >> *blank_p >> _T("=") >> *blank_p >> (*(anychar_p - line_ending))[self.s]) | 235 (*blank_p >> str_p(_T("sa[]")) >> *blank_p >> _T("=") >> *blank_p >> (*(anychar_p - line_ending))[self.sa]) | 234 236 *blank_p 235 237 ) … … 249 251 250 252 MyIniLoader i(c); 251 i3::string str = _T(252 " ia[] = 1 \n"253 "s= fooobar \r"254 "i=5000\r\n"255 " sa[]=20kaioj \r"256 "ia[]=-55555\r\n"257 "sa[]=89iaidj\r"258 "\r"259 "\r"260 "sa[]=899ujif\r"261 "ia[]=807987\r"262 "\r\r");263 parse_info< > r = parse(str.c_str(), i);253 i3::string str = 254 _T(" ia[] = 1 \n") 255 _T("s= fooobar \r") 256 _T("i=5000\r\n") 257 _T(" sa[]=20kaioj \r") 258 _T("ia[]=-55555\r\n") 259 _T("sa[]=89iaidj\r") 260 _T("\r") 261 _T("\r") 262 _T("sa[]=899ujif\r") 263 _T("ia[]=807987\r") 264 _T("\r\r"); 265 parse_info<const TCHAR* const> r = parse<TCHAR>(str.c_str(), i); 264 266 265 267 c2.i = c.i;
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)