Changeset 23824 for lang/cplusplus

Show
Ignore:
Timestamp:
11/16/08 14:21:19 (5 years ago)
Author:
saturday06
Message:

b s

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/cplusplus/i3/trunk/src/Test2.cpp

    r23823 r23824  
    8888    }; 
    8989    struct string_list { 
    90         char* value; 
     90        TCHAR* value; 
    9191        size_t length; 
    9292        string_list* prev; 
     
    122122    }; 
    123123    struct string_array { 
    124         char** data; 
     124        TCHAR** data; 
    125125        size_t length; 
    126126        string_array& operator=(string_list& list) { 
     
    130130                return *this; 
    131131            } 
    132             data = (char**)malloc(sizeof(*data)*length); 
     132            data = (TCHAR**)malloc(sizeof(*data)*length); 
    133133            if (data == NULL) { 
    134134                abort(); 
     
    143143    struct Config { 
    144144        int i; 
    145         char* s; 
     145        TCHAR* s; 
    146146        integer_list ia; 
    147147        string_list sa; 
     
    149149    struct Config2 { 
    150150        int i; 
    151         char* s; 
     151        TCHAR* s; 
    152152        integer_array ia; 
    153153        string_array sa; 
     
    178178        }; 
    179179        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); 
    184185                if (!data) { 
    185186                    abort(); 
    186187                } 
    187                 memcpy(data, first, last - first); 
     188                memcpy(data, first, bytes); 
    188189            } 
    189190        }; 
     
    191192            string_list& data; 
    192193            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; 
    194196                string_list* got = (string_list*)malloc(sizeof(string_list)); 
    195197                if (!got) { 
    196198                    abort(); 
    197199                } 
    198                 got->value = (char*)calloc(last - first + 1, 1); 
     200                got->value = (TCHAR*)calloc(bytes + sizeof(TCHAR), 1); 
    199201                if (!got->value) { 
    200202                    abort(); 
    201203                } 
    202                 memcpy(got->value, first, last - first); 
     204                memcpy(got->value, first, bytes); 
    203205                got->prev = data.tail; 
    204206                data.tail = got; 
     
    226228                    definition(const MyIniLoader& self) 
    227229                    { 
    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; 
    229231                            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]) | 
    234236                        *blank_p 
    235237                       ) 
     
    249251     
    250252    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); 
    264266 
    265267    c2.i = c.i;