ChangeSet ID: 21306 CVSROOT: /opt/cvs-commit Module name: wine Changes by: julliard(a)winehq.org 2005/11/17 05:05:01 Modified files: dlls/msvcrt/tests: cpp.c Log message: Eric Pouech <eric.pouech(a)wanadoo.fr> Provide a sample of the joy of MSC symbol mangling. Patch: http://cvs.winehq.org/patch.py?id=21306 Old revision New revision Changes Path 1.7 1.8 +113 -8 wine/dlls/msvcrt/tests/cpp.c Index: wine/dlls/msvcrt/tests/cpp.c diff -u -p wine/dlls/msvcrt/tests/cpp.c:1.7 wine/dlls/msvcrt/tests/cpp.c:1.8 --- wine/dlls/msvcrt/tests/cpp.c:1.7 17 Nov 2005 11: 5: 1 -0000 +++ wine/dlls/msvcrt/tests/cpp.c 17 Nov 2005 11: 5: 1 -0000 @@ -824,7 +824,7 @@ struct _demangle { BOOL test_in_wine; }; -static void test_demangle(void) +static void test_demangle_datatype(void) { char * name; struct _demangle demangle[]={ @@ -839,17 +839,121 @@ static void test_demangle(void) }; int i, num_test = (sizeof(demangle)/sizeof(struct _demangle)); - for (i=0; i < num_test; i++) { - - name = NULL; - name = p__unDName(0, demangle[i].mangled, 0,pmalloc,pfree,0x2800); - if ( demangle[i].test_in_wine) - ok(name != NULL && !strcmp(name,demangle[i].result), "Got name \"%s\"\n", name); + for (i = 0; i < num_test; i++) + { + name = p__unDName(0, demangle[i].mangled, 0, pmalloc, pfree, 0x2800); + if (demangle[i].test_in_wine) + ok(name != NULL && !strcmp(name,demangle[i].result), "Got name \"%s\" for %d\n", name, i); else - todo_wine ok(name != NULL && !strcmp(name,demangle[i].result), "Got name %s\n", name); + todo_wine ok(name != NULL && !strcmp(name,demangle[i].result), "Got name %s for %d\n", name, i); } } +static void test_demangle(void) +{ + static struct {const char* in; const char* out;} test[] = { +{"??0bad_alloc(a)std@@QAE(a)ABV01@@Z", "public: __thiscall std::bad_alloc::bad_alloc(class std::bad_alloc const &)"}, +{"??0bad_alloc(a)std@@QAE(a)PBD@Z", "public: __thiscall std::bad_alloc::bad_alloc(char const *)"}, +{"??0bad_cast@@AAE(a)PBQBD@Z", "private: __thiscall bad_cast::bad_cast(char const * const *)"}, +{"??0bad_cast@@QAE(a)ABQBD@Z", "public: __thiscall bad_cast::bad_cast(char const * const &)"}, +{"??0bad_cast@@QAE(a)ABV0@@Z", "public: __thiscall bad_cast::bad_cast(class bad_cast const &)"}, +{"??0bad_exception(a)std@@QAE(a)ABV01@@Z", "public: __thiscall std::bad_exception::bad_exception(class std::bad_exception const &)"}, +{"??0bad_exception(a)std@@QAE(a)PBD@Z", "public: __thiscall std::bad_exception::bad_exception(char const *)"}, +{"??0?$basic_filebuf(a)DU?$char_traits(a)D@std@@@std@@QAE(a)ABV01@@Z", "public: __thiscall std::basic_filebuf<char,struct std::char_traits<char> >::basic_filebuf<char,struct std::char_traits<char> >(class std::basic_filebuf<char,struct std::char_traits<char> > const &)"}, +{"??0?$basic_filebuf(a)DU?$char_traits(a)D@std@@@std@@QAE(a)PAU_iobuf@@@Z", "public: __thiscall std::basic_filebuf<char,struct std::char_traits<char> >::basic_filebuf<char,struct std::char_traits<char> >(struct _iobuf *)"}, +{"??0?$basic_filebuf(a)DU?$char_traits(a)D@std@@@std@@QAE(a)W4_Uninitialized@1@@Z", "public: __thiscall std::basic_filebuf<char,struct std::char_traits<char> >::basic_filebuf<char,struct std::char_traits<char> >(enum std::_Uninitialized)"}, +{"??0?$basic_filebuf(a)GU?$char_traits(a)G@std@@@std@@QAE(a)ABV01@@Z", "public: __thiscall std::basic_filebuf<unsigned short,struct std::char_traits<unsigned short> >::basic_filebuf<unsigned short,struct std::char_traits<unsigned short> >(class std::basic_filebuf<unsigned short,struct std::char_traits<unsigned short> > const &)"}, +{"??0?$basic_filebuf(a)GU?$char_traits(a)G@std@@@std@@QAE(a)PAU_iobuf@@@Z", "public: __thiscall std::basic_filebuf<unsigned short,struct std::char_traits<unsigned short> >::basic_filebuf<unsigned short,struct std::char_traits<unsigned short> >(struct _iobuf *)"}, +{"??0?$basic_filebuf(a)GU?$char_traits(a)G@std@@@std@@QAE(a)W4_Uninitialized@1@@Z", "public: __thiscall std::basic_filebuf<unsigned short,struct std::char_traits<unsigned short> >::basic_filebuf<unsigned short,struct std::char_traits<unsigned short> >(enum std::_Uninitialized)"}, +{"??0?$basic_stringstream(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAE(a)ABV01@@Z", "public: __thiscall std::basic_stringstream<char,struct std::char_traits<char>,class std::allocator<char> >::basic_stringstream<char,struct std::char_traits<char>,class std::allocator<char> >(class std::basic_stringstream<char,struct std::char_traits<char>,class std::allocator<char> > const &)"}, +{"??0?$basic_stringstream(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAE(a)ABV?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@1(a)H@Z", "public: __thiscall std::basic_stringstream<char,struct std::char_traits<char>,class std::allocator<char> >::basic_stringstream<char,struct std::char_traits<char>,class std::allocator<char> >(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,int)"}, +{"??0?$basic_stringstream(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAE(a)H@Z", "public: __thiscall std::basic_stringstream<char,struct std::char_traits<char>,class std::allocator<char> >::basic_stringstream<char,struct std::char_traits<char>,class std::allocator<char> >(int)"}, +{"??0?$basic_stringstream(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@std@@QAE(a)ABV01@@Z", "public: __thiscall std::basic_stringstream<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> >::basic_stringstream<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> >(class std::basic_stringstream<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> > const &)"}, +{"??0?$basic_stringstream(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@std@@QAE(a)ABV?$basic_string(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@1(a)H@Z", "public: __thiscall std::basic_stringstream<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> >::basic_stringstream<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> >(class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> > const &,int)"}, +{"??0?$basic_stringstream(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@std@@QAE(a)H@Z", "public: __thiscall std::basic_stringstream<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> >::basic_stringstream<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> >(int)"}, +{"??0?$num_get(a)DV?$istreambuf_iterator(a)DU?$char_traits(a)D@std@@@std@@@std@@QAE(a)ABV_Locinfo@1(a)I@Z", "public: __thiscall std::num_get<char,class std::istreambuf_iterator<char,struct std::char_traits<char> > >::num_get<char,class std::istreambuf_iterator<char,struct std::char_traits<char> > >(class std::_Locinfo const &,unsigned int)"}, +{"??0?$num_get(a)DV?$istreambuf_iterator(a)DU?$char_traits(a)D@std@@@std@@@std@@QAE(a)I@Z", "public: __thiscall std::num_get<char,class std::istreambuf_iterator<char,struct std::char_traits<char> > >::num_get<char,class std::istreambuf_iterator<char,struct std::char_traits<char> > >(unsigned int)"}, +{"??0?$num_get(a)GV?$istreambuf_iterator(a)GU?$char_traits(a)G@std@@@std@@@std@@QAE(a)ABV_Locinfo@1(a)I@Z", "public: __thiscall std::num_get<unsigned short,class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >::num_get<unsigned short,class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >(class std::_Locinfo const &,unsigned int)"}, +{"??0?$num_get(a)GV?$istreambuf_iterator(a)GU?$char_traits(a)G@std@@@std@@@std@@QAE(a)I@Z", "public: __thiscall std::num_get<unsigned short,class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >::num_get<unsigned short,class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >(unsigned int)"}, +{"??0streambuf@@QAE(a)ABV0@@Z", "public: __thiscall streambuf::streambuf(class streambuf const &)"}, +{"??0strstreambuf@@QAE(a)ABV0@@Z", "public: __thiscall strstreambuf::strstreambuf(class strstreambuf const &)"}, +{"??0strstreambuf@@QAE(a)H@Z", "public: __thiscall strstreambuf::strstreambuf(int)"}, +{"??0strstreambuf@@QAE(a)P6APAXJ@ZP6AXPAX(a)Z@Z", "public: __thiscall strstreambuf::strstreambuf(void * (__cdecl*)(long),void (__cdecl*)(void *))"}, +{"??0strstreambuf@@QAE(a)PADH0@Z", "public: __thiscall strstreambuf::strstreambuf(char *,int,char *)"}, +{"??0strstreambuf@@QAE(a)PAEH0@Z", "public: __thiscall strstreambuf::strstreambuf(unsigned char *,int,unsigned char *)"}, +{"??0strstreambuf@@QAE(a)XZ", "public: __thiscall strstreambuf::strstreambuf(void)"}, +{"??1__non_rtti_object(a)std@@UAE(a)XZ", "public: virtual __thiscall std::__non_rtti_object::~__non_rtti_object(void)"}, +{"??1__non_rtti_object@@UAE(a)XZ", "public: virtual __thiscall __non_rtti_object::~__non_rtti_object(void)"}, +{"??1?$num_get(a)DV?$istreambuf_iterator(a)DU?$char_traits(a)D@std@@@std@@@std@@UAE(a)XZ", "public: virtual __thiscall std::num_get<char,class std::istreambuf_iterator<char,struct std::char_traits<char> > >::~num_get<char,class std::istreambuf_iterator<char,struct std::char_traits<char> > >(void)"}, +{"??1?$num_get(a)GV?$istreambuf_iterator(a)GU?$char_traits(a)G@std@@@std@@@std@@UAE(a)XZ", "public: virtual __thiscall std::num_get<unsigned short,class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >::~num_get<unsigned short,class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >(void)"}, +{"??4istream_withassign@@QAEAAV0(a)ABV0@@Z", "public: class istream_withassign & __thiscall istream_withassign::operator=(class istream_withassign const &)"}, +{"??4istream_withassign@@QAEAAVistream@@ABV1@@Z", "public: class istream & __thiscall istream_withassign::operator=(class istream const &)"}, +{"??4istream_withassign@@QAEAAVistream@@PAVstreambuf@@@Z", "public: class istream & __thiscall istream_withassign::operator=(class streambuf *)"}, +{"??5std@@YAAAV?$basic_istream(a)DU?$char_traits(a)D@std@@@0(a)AAV10@AAC(a)Z", "class std::basic_istream<char,struct std::char_traits<char> > & __cdecl std::operator>>(class std::basic_istream<char,struct std::char_traits<char> > &,signed char &)"}, +{"??5std@@YAAAV?$basic_istream(a)DU?$char_traits(a)D@std@@@0(a)AAV10@AAD(a)Z", "class std::basic_istream<char,struct std::char_traits<char> > & __cdecl std::operator>>(class std::basic_istream<char,struct std::char_traits<char> > &,char &)"}, +{"??5std@@YAAAV?$basic_istream(a)DU?$char_traits(a)D@std@@@0(a)AAV10@AAE(a)Z", "class std::basic_istream<char,struct std::char_traits<char> > & __cdecl std::operator>>(class std::basic_istream<char,struct std::char_traits<char> > &,unsigned char &)"}, +{"??6?$basic_ostream(a)GU?$char_traits(a)G@std@@@std@@QAEAAV01(a)P6AAAVios_base@1(a)AAV21@@Z(a)Z", "public: class std::basic_ostream<unsigned short,struct std::char_traits<unsigned short> > & __thiscall std::basic_ostream<unsigned short,struct std::char_traits<unsigned short> >::operator<<(class std::ios_base & (__cdecl*)(class std::ios_base &))"}, +{"??6?$basic_ostream(a)GU?$char_traits(a)G@std@@@std@@QAEAAV01(a)PAV?$basic_streambuf(a)GU?$char_traits(a)G@std@@@1@@Z", "public: class std::basic_ostream<unsigned short,struct std::char_traits<unsigned short> > & __thiscall std::basic_ostream<unsigned short,struct std::char_traits<unsigned short> >::operator<<(class std::basic_streambuf<unsigned short,struct std::char_traits<unsigned short> > *)"}, +{"??6?$basic_ostream(a)GU?$char_traits(a)G@std@@@std@@QAEAAV01(a)PBX@Z", "public: class std::basic_ostream<unsigned short,struct std::char_traits<unsigned short> > & __thiscall std::basic_ostream<unsigned short,struct std::char_traits<unsigned short> >::operator<<(void const *)"}, +{"??_8?$basic_fstream(a)DU?$char_traits(a)D@std@@@std@@7B?$basic_ostream(a)DU?$char_traits(a)D@std@@@1@@", "const std::basic_fstream<char,struct std::char_traits<char> >::`vbtable'{for `std::basic_ostream<char,struct std::char_traits<char> >'}"}, +{"??_8?$basic_fstream(a)GU?$char_traits(a)G@std@@@std@@7B?$basic_istream(a)GU?$char_traits(a)G@std@@@1@@", "const std::basic_fstream<unsigned short,struct std::char_traits<unsigned short> >::`vbtable'{for `std::basic_istream<unsigned short,struct std::char_traits<unsigned short> >'}"}, +{"??_8?$basic_fstream(a)GU?$char_traits(a)G@std@@@std@@7B?$basic_ostream(a)GU?$char_traits(a)G@std@@@1@@", "const std::basic_fstream<unsigned short,struct std::char_traits<unsigned short> >::`vbtable'{for `std::basic_ostream<unsigned short,struct std::char_traits<unsigned short> >'}"}, +{"??9std@@YA_NPBDABV?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@0@@Z", "bool __cdecl std::operator!=(char const *,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)"}, +{"??9std@@YA_NPBGABV?$basic_string(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@0@@Z", "bool __cdecl std::operator!=(unsigned short const *,class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> > const &)"}, +{"??A?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAEAADI(a)Z", "public: char & __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::operator[](unsigned int)"}, +{"??A?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QBEABDI(a)Z", "public: char const & __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::operator[](unsigned int)const "}, +{"??A?$basic_string(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@std@@QAEAAGI(a)Z", "public: unsigned short & __thiscall std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> >::operator[](unsigned int)"}, +{"??A?$basic_string(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@std@@QBEABGI(a)Z", "public: unsigned short const & __thiscall std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> >::operator[](unsigned int)const "}, +{"?abs(a)std@@YAMABV?$complex(a)M@1@@Z", "float __cdecl std::abs(class std::complex<float> const &)"}, +{"?abs(a)std@@YANABV?$complex(a)N@1@@Z", "double __cdecl std::abs(class std::complex<double> const &)"}, +{"?abs(a)std@@YAOABV?$complex(a)O@1@@Z", "long double __cdecl std::abs(class std::complex<long double> const &)"}, +{"?cin(a)std@@3V?$basic_istream(a)DU?$char_traits(a)D@std@@@1(a)A", "class std::basic_istream<char,struct std::char_traits<char> > std::cin"}, +{"?do_get@?$num_get(a)DV?$istreambuf_iterator(a)DU?$char_traits(a)D@std@@@std@@@std@@MBE?AV?$istreambuf_iterator(a)DU?$char_traits(a)D@std@@@2(a)V32@0AAVios_base(a)2@AAHAAG(a)Z", "protected: virtual class std::istreambuf_iterator<char,struct std::char_traits<char> > __thiscall std::num_get<char,class std::istreambuf_iterator<char,struct std::char_traits<char> > >::do_get(class std::istreambuf_iterator<char,struct std::char_traits<char> >,class std::istreambuf_iterator<char,struct std::char_traits<char> >,class std::ios_base &,int &,unsigned short &)const "}, +{"?do_get@?$num_get(a)DV?$istreambuf_iterator(a)DU?$char_traits(a)D@std@@@std@@@std@@MBE?AV?$istreambuf_iterator(a)DU?$char_traits(a)D@std@@@2(a)V32@0AAVios_base(a)2@AAHAAI(a)Z", "protected: virtual class std::istreambuf_iterator<char,struct std::char_traits<char> > __thiscall std::num_get<char,class std::istreambuf_iterator<char,struct std::char_traits<char> > >::do_get(class std::istreambuf_iterator<char,struct std::char_traits<char> >,class std::istreambuf_iterator<char,struct std::char_traits<char> >,class std::ios_base &,int &,unsigned int &)const "}, +{"?do_get@?$num_get(a)DV?$istreambuf_iterator(a)DU?$char_traits(a)D@std@@@std@@@std@@MBE?AV?$istreambuf_iterator(a)DU?$char_traits(a)D@std@@@2(a)V32@0AAVios_base(a)2@AAHAAJ(a)Z", "protected: virtual class std::istreambuf_iterator<char,struct std::char_traits<char> > __thiscall std::num_get<char,class std::istreambuf_iterator<char,struct std::char_traits<char> > >::do_get(class std::istreambuf_iterator<char,struct std::char_traits<char> >,class std::istreambuf_iterator<char,struct std::char_traits<char> >,class std::ios_base &,int &,long &)const "}, +{"?do_get@?$num_get(a)DV?$istreambuf_iterator(a)DU?$char_traits(a)D@std@@@std@@@std@@MBE?AV?$istreambuf_iterator(a)DU?$char_traits(a)D@std@@@2(a)V32@0AAVios_base(a)2@AAHAAK(a)Z", "protected: virtual class std::istreambuf_iterator<char,struct std::char_traits<char> > __thiscall std::num_get<char,class std::istreambuf_iterator<char,struct std::char_traits<char> > >::do_get(class std::istreambuf_iterator<char,struct std::char_traits<char> >,class std::istreambuf_iterator<char,struct std::char_traits<char> >,class std::ios_base &,int &,unsigned long &)const "}, +{"?do_get@?$num_get(a)DV?$istreambuf_iterator(a)DU?$char_traits(a)D@std@@@std@@@std@@MBE?AV?$istreambuf_iterator(a)DU?$char_traits(a)D@std@@@2(a)V32@0AAVios_base(a)2@AAHAAM(a)Z", "protected: virtual class std::istreambuf_iterator<char,struct std::char_traits<char> > __thiscall std::num_get<char,class std::istreambuf_iterator<char,struct std::char_traits<char> > >::do_get(class std::istreambuf_iterator<char,struct std::char_traits<char> >,class std::istreambuf_iterator<char,struct std::char_traits<char> >,class std::ios_base &,int &,float &)const "}, +{"?_query_new_handler@@YAP6AHI(a)ZXZ", "int (__cdecl*__cdecl _query_new_handler(void))(unsigned int)"}, +{"?register_callback(a)ios_base@std@@QAEXP6AXW4event(a)12@AAV12(a)H@ZH(a)Z", "public: void __thiscall std::ios_base::register_callback(void (__cdecl*)(enum std::ios_base::event,class std::ios_base &,int),int)"}, +{"?seekg@?$basic_istream(a)DU?$char_traits(a)D@std@@@std@@QAEAAV12(a)JW4seekdir@ios_base(a)2@@Z", "public: class std::basic_istream<char,struct std::char_traits<char> > & __thiscall std::basic_istream<char,struct std::char_traits<char> >::seekg(long,enum std::ios_base::seekdir)"}, +{"?seekg@?$basic_istream(a)DU?$char_traits(a)D@std@@@std@@QAEAAV12(a)V?$fpos(a)H@2@@Z", "public: class std::basic_istream<char,struct std::char_traits<char> > & __thiscall std::basic_istream<char,struct std::char_traits<char> >::seekg(class std::fpos<int>)"}, +{"?seekg@?$basic_istream(a)GU?$char_traits(a)G@std@@@std@@QAEAAV12(a)JW4seekdir@ios_base(a)2@@Z", "public: class std::basic_istream<unsigned short,struct std::char_traits<unsigned short> > & __thiscall std::basic_istream<unsigned short,struct std::char_traits<unsigned short> >::seekg(long,enum std::ios_base::seekdir)"}, +{"?seekg@?$basic_istream(a)GU?$char_traits(a)G@std@@@std@@QAEAAV12(a)V?$fpos(a)H@2@@Z", "public: class std::basic_istream<unsigned short,struct std::char_traits<unsigned short> > & __thiscall std::basic_istream<unsigned short,struct std::char_traits<unsigned short> >::seekg(class std::fpos<int>)"}, +{"?seekoff@?$basic_filebuf(a)DU?$char_traits(a)D@std@@@std@@MAE?AV?$fpos(a)H@2(a)JW4seekdir@ios_base(a)2@H(a)Z", "protected: virtual class std::fpos<int> __thiscall std::basic_filebuf<char,struct std::char_traits<char> >::seekoff(long,enum std::ios_base::seekdir,int)"}, +{"?seekoff@?$basic_filebuf(a)GU?$char_traits(a)G@std@@@std@@MAE?AV?$fpos(a)H@2(a)JW4seekdir@ios_base(a)2@H(a)Z", "protected: virtual class std::fpos<int> __thiscall std::basic_filebuf<unsigned short,struct std::char_traits<unsigned short> >::seekoff(long,enum std::ios_base::seekdir,int)"}, +{"?set_new_handler@@YAP6AXXZP6AXXZ(a)Z", "void (__cdecl*__cdecl set_new_handler(void (__cdecl*)(void)))(void)"}, +{"?str@?$basic_istringstream(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAEXABV?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@2@@Z", "public: void __thiscall std::basic_istringstream<char,struct std::char_traits<char>,class std::allocator<char> >::str(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)"}, +{"?str@?$basic_istringstream(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QBE?AV?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@2(a)XZ", "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall std::basic_istringstream<char,struct std::char_traits<char>,class std::allocator<char> >::str(void)const "}, +{"?str@?$basic_istringstream(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@std@@QAEXABV?$basic_string(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@2@@Z", "public: void __thiscall std::basic_istringstream<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> >::str(class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> > const &)"}, +{"?str@?$basic_istringstream(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@std@@QBE?AV?$basic_string(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@2(a)XZ", "public: class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> > __thiscall std::basic_istringstream<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> >::str(void)const "}, +{"?str@?$basic_ostringstream(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAEXABV?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@2@@Z", "public: void __thiscall std::basic_ostringstream<char,struct std::char_traits<char>,class std::allocator<char> >::str(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)"}, +{"?str@?$basic_ostringstream(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QBE?AV?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@2(a)XZ", "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall std::basic_ostringstream<char,struct std::char_traits<char>,class std::allocator<char> >::str(void)const "}, +{"?str@?$basic_ostringstream(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@std@@QAEXABV?$basic_string(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@2@@Z", "public: void __thiscall std::basic_ostringstream<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> >::str(class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> > const &)"}, +{"?str@?$basic_ostringstream(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@std@@QBE?AV?$basic_string(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@2(a)XZ", "public: class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> > __thiscall std::basic_ostringstream<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> >::str(void)const "}, +{"?str@?$basic_stringbuf(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAEXABV?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@2@@Z", "public: void __thiscall std::basic_stringbuf<char,struct std::char_traits<char>,class std::allocator<char> >::str(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)"}, +{"?str@?$basic_stringbuf(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QBE?AV?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@2(a)XZ", "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall std::basic_stringbuf<char,struct std::char_traits<char>,class std::allocator<char> >::str(void)const "}, +{"?str@?$basic_stringbuf(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@std@@QAEXABV?$basic_string(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@2@@Z", "public: void __thiscall std::basic_stringbuf<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> >::str(class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> > const &)"}, +{"?str@?$basic_stringbuf(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@std@@QBE?AV?$basic_string(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@2(a)XZ", "public: class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> > __thiscall std::basic_stringbuf<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> >::str(void)const "}, +{"?str@?$basic_stringstream(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAEXABV?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@2@@Z", "public: void __thiscall std::basic_stringstream<char,struct std::char_traits<char>,class std::allocator<char> >::str(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)"}, +{"?str@?$basic_stringstream(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QBE?AV?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@2(a)XZ", "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall std::basic_stringstream<char,struct std::char_traits<char>,class std::allocator<char> >::str(void)const "}, +{"?str@?$basic_stringstream(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@std@@QAEXABV?$basic_string(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@2@@Z", "public: void __thiscall std::basic_stringstream<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> >::str(class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> > const &)"}, +{"?str@?$basic_stringstream(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@std@@QBE?AV?$basic_string(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@2(a)XZ", "public: class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> > __thiscall std::basic_stringstream<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> >::str(void)const "}, +{"?_Sync(a)ios_base@std@@0_NA", "private: static bool std::ios_base::_Sync"}, +{"??_U(a)YAPAXI@Z", "void * __cdecl operator new[](unsigned int)"}, +{"??_V(a)YAXPAX@Z", "void __cdecl operator delete[](void *)"}, +{"??X?$_Complex_base(a)M@std@@QAEAAV01(a)ABM@Z", "public: class std::_Complex_base<float> & __thiscall std::_Complex_base<float>::operator*=(float const &)"}, +{"??Xstd@@YAAAV?$complex(a)M@0(a)AAV10@ABV10@@Z", "class std::complex<float> & __cdecl std::operator*=(class std::complex<float> &,class std::complex<float> const &)"}, + }; + int i, num_test = (sizeof(test)/sizeof(test[0])); + char* name; + + for (i = 0; i < num_test; i++) + { + name = p__unDName(0, test[i].in, 0, pmalloc, pfree, 0); + ok(name != NULL && !strcmp(name, test[i].out), "Got name \"%s\" for %d\n", name, i); + pfree(name); + } +} START_TEST(cpp) { @@ -861,6 +965,7 @@ START_TEST(cpp) test___non_rtti_object(); test_type_info(); test_rtti(); + test_demangle_datatype(); test_demangle(); if (hMsvcrt)