msvcirt: Implement some ostream stubs.

This commit is contained in:
Christian Costa 2008-08-20 10:18:58 +02:00 committed by Alexandre Julliard
parent 5bb6e4ab8c
commit f2b0e3168a
2 changed files with 61 additions and 3 deletions

View File

@ -16,6 +16,9 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "config.h"
#include "wine/port.h"
#include <stdarg.h>
#include "windef.h"
@ -24,6 +27,61 @@
WINE_DEFAULT_DEBUG_CHANNEL(msvcirt);
typedef struct {
LPVOID VTable;
} class_ostream;
#ifdef __i386__ /* thiscall functions are i386-specific */
#define THISCALL(func) __thiscall_ ## func
#define THISCALL_NAME(func) __ASM_NAME("__thiscall_" #func)
#define DEFINE_THISCALL_WRAPPER(func) \
extern void THISCALL(func)(); \
__ASM_GLOBAL_FUNC(__thiscall_ ## func, \
"popl %eax\n\t" \
"pushl %ecx\n\t" \
"pushl %eax\n\t" \
"jmp " __ASM_NAME(#func) )
#else /* __i386__ */
#define THISCALL(func) func
#define THISCALL_NAME(func) __ASM_NAME(#func)
#define DEFINE_THISCALL_WRAPPER(func) /* nothing */
#endif /* __i386__ */
/******************************************************************
* ??6ostream@@QAEAAV0@H@Z (MSVCRTI.@)
* class ostream & __thiscall ostream::operator<<(int)
*/
DEFINE_THISCALL_WRAPPER(MSVCIRT_operator_sl_int)
void * __stdcall MSVCIRT_operator_sl_int(class_ostream * _this, int integer)
{
FIXME("(%p)->(%d) stub\n", _this, integer);
return _this;
}
/******************************************************************
* ??6ostream@@QAEAAV0@PBD@Z (MSVCRTI.@)
* class ostream & __thiscall ostream::operator<<(char const *)
*/
DEFINE_THISCALL_WRAPPER(MSVCIRT_operator_sl_pchar)
void * __stdcall MSVCIRT_operator_sl_pchar(class_ostream * _this, const char * string)
{
FIXME("(%p)->(%s) stub\n", _this, string);
return _this;
}
/******************************************************************
* ?endl@@YAAAVostream@@AAV1@@Z (MSVCRTI.@)
* class ostream & __cdecl endl(class ostream &)
*/
void * CDECL MSVCIRT_endl(class_ostream * _this)
{
FIXME("(%p)->() stub\n", _this);
return _this;
}
BOOL WINAPI DllMain( HINSTANCE inst, DWORD reason, LPVOID reserved )
{
switch (reason)

View File

@ -134,7 +134,7 @@
@ stub ??6ostream@@QAEAAV0@E@Z # class ostream & __thiscall ostream::operator<<(unsigned char)
@ stub ??6ostream@@QAEAAV0@F@Z # class ostream & __thiscall ostream::operator<<(short)
@ stub ??6ostream@@QAEAAV0@G@Z # class ostream & __thiscall ostream::operator<<(unsigned short)
@ stub ??6ostream@@QAEAAV0@H@Z # class ostream & __thiscall ostream::operator<<(int)
@ cdecl -i386 -norelay ??6ostream@@QAEAAV0@H@Z(ptr long) __thiscall_MSVCIRT_operator_sl_int # class ostream & __thiscall ostream::operator<<(int)
@ stub ??6ostream@@QAEAAV0@I@Z # class ostream & __thiscall ostream::operator<<(unsigned int)
@ stub ??6ostream@@QAEAAV0@J@Z # class ostream & __thiscall ostream::operator<<(long)
@ stub ??6ostream@@QAEAAV0@K@Z # class ostream & __thiscall ostream::operator<<(unsigned long)
@ -145,7 +145,7 @@
@ stub ??6ostream@@QAEAAV0@P6AAAVios@@AAV1@@Z@Z # class ostream & __thiscall ostream::operator<<(class ios & (__cdecl*)(class ios &))
@ stub ??6ostream@@QAEAAV0@PAVstreambuf@@@Z # class ostream & __thiscall ostream::operator<<(class streambuf *)
@ stub ??6ostream@@QAEAAV0@PBC@Z # class ostream & __thiscall ostream::operator<<(signed char const *)
@ stub ??6ostream@@QAEAAV0@PBD@Z # class ostream & __thiscall ostream::operator<<(char const *)
@ cdecl -i386 -norelay ??6ostream@@QAEAAV0@PBD@Z(ptr ptr) __thiscall_MSVCIRT_operator_sl_pchar # class ostream & __thiscall ostream::operator<<(char const *)
@ stub ??6ostream@@QAEAAV0@PBE@Z # class ostream & __thiscall ostream::operator<<(unsigned char const *)
@ stub ??6ostream@@QAEAAV0@PBX@Z # class ostream & __thiscall ostream::operator<<(void const *)
@ stub ??7ios@@QBEHXZ # int __thiscall ios::operator!(void)const
@ -268,7 +268,7 @@
@ stub ?eback@streambuf@@IBEPADXZ # char * __thiscall streambuf::eback(void)const
@ stub ?ebuf@streambuf@@IBEPADXZ # char * __thiscall streambuf::ebuf(void)const
@ stub ?egptr@streambuf@@IBEPADXZ # char * __thiscall streambuf::egptr(void)const
@ stub ?endl@@YAAAVostream@@AAV1@@Z # class ostream & __cdecl endl(class ostream &)
@ cdecl ?endl@@YAAAVostream@@AAV1@@Z(ptr) MSVCIRT_endl # class ostream & __cdecl endl(class ostream &)
@ stub ?ends@@YAAAVostream@@AAV1@@Z # class ostream & __cdecl ends(class ostream &)
@ stub ?eof@ios@@QBEHXZ # int __thiscall ios::eof(void)const
@ stub ?epptr@streambuf@@IBEPADXZ # char * __thiscall streambuf::epptr(void)const