Mercurial > sdl-ios-xcode
view src/hermes/HeadX86.h @ 1303:52b5afd7ecee
Date: Tue, 05 Jul 2005 21:43:26 +1000
From: Sean Childs
Subject: [SDL] Compiling SDL 1.2.8 with the free Borland compiler
When compiling SDL 1.2.8 with the free Borland compiler, I received this
error (there is a similar error that occurs in
src\video\windx5\sdl_dx5events.c):
Error E2342 ..\..\src\video\windib\sdl_dibevents.c 189: Type mismatch in
parameter 'lpPrevWndFunc' (wanted 'int (__stdcall *)()', got 'long
(__stdcall *)(void *,unsigned int,unsigned int,long)') in function
DIB_HandleMessage
I checked the MSDN library at:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/
windowsuserinterface/windowing/windowprocedures/windowprocedurereference/wind
owprocedurefunctions/callwindowproc.asp
and it had this to say:
If STRICT is not defined, the lpPrevWndFunc parameter has the data type
FARPROC. The FARPROC type is declared as follows:
int (FAR WINAPI * FARPROC) ()
In C, the FARPROC declaration indicates a callback function that has an
unspecified parameter list. In C++, however, the empty parameter list in
the declaration indicates that a function has no parameters. This subtle
distinction can break careless code. Following is one way to handle this
situation:
#ifdef STRICT
WNDPROC MyWindowProcedure
#else
FARPROC MyWindowProcedure
#endif
...
lResult = CallWindowProc(MyWindowProcedure, ...)
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Tue, 31 Jan 2006 15:30:42 +0000 |
parents | bb5ace455586 |
children | 782fd950bd46 c121d94672cb 39b9405d3cb6 |
line wrap: on
line source
/* Header definitions for the x86 routines for the HERMES library Copyright (c) 1998 Christian Nentwich (brn@eleet.mcb.at) This source code is licensed under the GNU LGPL Please refer to the file COPYING.LIB contained in the distribution for licensing conditions */ #ifndef __HERMES_HEAD_X86__ #define __HERMES_HEAD_X86__ #ifdef X86_ASSEMBLER /* If you can't stand IFDEFS, then close your eyes now, please :) */ /* Ok, we start with normal function definitions */ #ifdef __cplusplus extern "C" { #endif void STACKCALL ConvertX86(HermesConverterInterface *); void STACKCALL ClearX86_32(HermesClearInterface *); void STACKCALL ClearX86_24(HermesClearInterface *); void STACKCALL ClearX86_16(HermesClearInterface *); void STACKCALL ClearX86_8(HermesClearInterface *); int STACKCALL Hermes_X86_CPU(); void ConvertX86p32_32BGR888(); void ConvertX86p32_32RGBA888(); void ConvertX86p32_32BGRA888(); void ConvertX86p32_24RGB888(); void ConvertX86p32_24BGR888(); void ConvertX86p32_16RGB565(); void ConvertX86p32_16BGR565(); void ConvertX86p32_16RGB555(); void ConvertX86p32_16BGR555(); void ConvertX86p32_8RGB332(); void ConvertX86p16_32RGB888(); void ConvertX86p16_32BGR888(); void ConvertX86p16_32RGBA888(); void ConvertX86p16_32BGRA888(); void ConvertX86p16_24RGB888(); void ConvertX86p16_24BGR888(); void ConvertX86p16_16BGR565(); void ConvertX86p16_16RGB555(); void ConvertX86p16_16BGR555(); void ConvertX86p16_8RGB332(); void CopyX86p_4byte(); void CopyX86p_3byte(); void CopyX86p_2byte(); void CopyX86p_1byte(); void ConvertX86pI8_32(); void ConvertX86pI8_24(); void ConvertX86pI8_16(); extern int ConvertX86p16_32RGB888_LUT_X86[512]; extern int ConvertX86p16_32BGR888_LUT_X86[512]; extern int ConvertX86p16_32RGBA888_LUT_X86[512]; extern int ConvertX86p16_32BGRA888_LUT_X86[512]; #ifdef __cplusplus } #endif /* Now fix up the ELF underscore problem */ #if defined(__ELF__) && defined(__GNUC__) #ifdef __cplusplus extern "C" { #endif extern int _Hermes_X86_CPU(); extern void _ConvertX86(HermesConverterInterface *); extern void _ConvertX86p32_32BGR888(); extern void _ConvertX86p32_32RGBA888(); extern void _ConvertX86p32_32BGRA888(); extern void _ConvertX86p32_24RGB888(); extern void _ConvertX86p32_24BGR888(); extern void _ConvertX86p32_16RGB565(); extern void _ConvertX86p32_16BGR565(); extern void _ConvertX86p32_16RGB555(); extern void _ConvertX86p32_16BGR555(); extern void _ConvertX86p32_8RGB332(); extern void _ConvertX86p16_16BGR565(); extern void _ConvertX86p16_16RGB555(); extern void _ConvertX86p16_16BGR555(); extern void _ConvertX86p16_8RGB332(); #define Hermes_X86_CPU _Hermes_X86_CPU #define ConvertX86 _ConvertX86 #define ConvertX86p32_32BGR888 _ConvertX86p32_32BGR888 #define ConvertX86p32_32RGBA888 _ConvertX86p32_32RGBA888 #define ConvertX86p32_32BGRA888 _ConvertX86p32_32BGRA888 #define ConvertX86p32_24RGB888 _ConvertX86p32_24RGB888 #define ConvertX86p32_24BGR888 _ConvertX86p32_24BGR888 #define ConvertX86p32_16RGB565 _ConvertX86p32_16RGB565 #define ConvertX86p32_16BGR565 _ConvertX86p32_16BGR565 #define ConvertX86p32_16RGB555 _ConvertX86p32_16RGB555 #define ConvertX86p32_16BGR555 _ConvertX86p32_16BGR555 #define ConvertX86p32_8RGB332 _ConvertX86p32_8RGB332 #define ConvertX86p16_16BGR565 _ConvertX86p16_16BGR565 #define ConvertX86p16_16RGB555 _ConvertX86p16_16RGB555 #define ConvertX86p16_16BGR555 _ConvertX86p16_16BGR555 #define ConvertX86p16_8RGB332 _ConvertX86p16_8RGB332 #ifdef __cplusplus } #endif #endif /* ELF & GNU */ /* Make it run with WATCOM C */ #ifdef __WATCOMC__ #pragma warning 601 9 #pragma aux Hermes_X86_CPU "_*" #pragma aux ConvertX86 "_*" modify [EAX EBX ECX EDX ESI EDI] #pragma aux ClearX86_32 "_*" modify [EAX EBX ECX EDX ESI EDI] #pragma aux ClearX86_24 "_*" modify [EAX EBX ECX EDX ESI EDI] #pragma aux ClearX86_16 "_*" modify [EAX EBX ECX EDX ESI EDI] #pragma aux ClearX86_8 "_*" modify [EAX EBX ECX EDX ESI EDI] #pragma aux ConvertX86p32_32BGR888 "_*" #pragma aux ConvertX86p32_32RGBA888 "_*" #pragma aux ConvertX86p32_32BGRA888 "_*" #pragma aux ConvertX86p32_24RGB888 "_*" #pragma aux ConvertX86p32_24BGR888 "_*" #pragma aux ConvertX86p32_16RGB565 "_*" #pragma aux ConvertX86p32_16BGR565 "_*" #pragma aux ConvertX86p32_16RGB555 "_*" #pragma aux ConvertX86p32_16BGR555 "_*" #pragma aux ConvertX86p32_8RGB332 "_*" #pragma aux ConvertX86p16_32RGB888 "_*" #pragma aux ConvertX86p16_32BGR888 "_*" #pragma aux ConvertX86p16_32RGBA888 "_*" #pragma aux ConvertX86p16_32BGRA888 "_*" #pragma aux ConvertX86p16_24RGB888 "_*" #pragma aux ConvertX86p16_24BGR888 "_*" #pragma aux ConvertX86p16_16BGR565 "_*" #pragma aux ConvertX86p16_16RGB555 "_*" #pragma aux ConvertX86p16_16BGR555 "_*" #pragma aux ConvertX86p16_8RGB332 "_*" #pragma aux CopyX86p_4byte "_*" #pragma aux CopyX86p_3byte "_*" #pragma aux CopyX86p_2byte "_*" #pragma aux CopyX86p_1byte "_*" #pragma aux ConvertX86pI8_32 "_*" #pragma aux ConvertX86pI8_24 "_*" #pragma aux ConvertX86pI8_16 "_*" #pragma aux ConvertX86p16_32RGB888_LUT_X86 "_*" #pragma aux ConvertX86p16_32BGR888_LUT_X86 "_*" #pragma aux ConvertX86p16_32RGBA888_LUT_X86 "_*" #pragma aux ConvertX86p16_32BGRA888_LUT_X86 "_*" #endif /* __WATCOMC__ */ #endif /* X86_ASSEMBLER */ #endif