standalone: refactor for becoming also a SDL driver
[sdl_omap.git] / include / SDL_main.h
1 /*
2     SDL - Simple DirectMedia Layer
3     Copyright (C) 1997-2009 Sam Lantinga
4
5     This library is free software; you can redistribute it and/or
6     modify it under the terms of the GNU Lesser General Public
7     License as published by the Free Software Foundation; either
8     version 2.1 of the License, or (at your option) any later version.
9
10     This library is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13     Lesser General Public License for more details.
14
15     You should have received a copy of the GNU Lesser General Public
16     License along with this library; if not, write to the Free Software
17     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
18
19     Sam Lantinga
20     slouken@libsdl.org
21 */
22
23 #ifndef _SDL_main_h
24 #define _SDL_main_h
25
26 #include "SDL_stdinc.h"
27
28 /** @file SDL_main.h
29  *  Redefine main() on Win32 and MacOS so that it is called by winmain.c
30  */
31
32 #if defined(__WIN32__) || \
33     (defined(__MWERKS__) && !defined(__BEOS__)) || \
34     defined(__MACOS__) || defined(__MACOSX__) || \
35     defined(__SYMBIAN32__) || defined(QWS)
36
37 #ifdef __cplusplus
38 #define C_LINKAGE       "C"
39 #else
40 #define C_LINKAGE
41 #endif /* __cplusplus */
42
43 /** The application's main() function must be called with C linkage,
44  *  and should be declared like this:
45  *      @code
46  *      #ifdef __cplusplus
47  *      extern "C"
48  *      #endif
49  *      int main(int argc, char *argv[])
50  *      {
51  *      }
52  *      @endcode
53  */
54 #define main    SDL_main
55
56 /** The prototype for the application's main() function */
57 extern C_LINKAGE int SDL_main(int argc, char *argv[]);
58
59
60 /** @name From the SDL library code -- needed for registering the app on Win32 */
61 /*@{*/
62 #ifdef __WIN32__
63
64 #include "begin_code.h"
65 #ifdef __cplusplus
66 extern "C" {
67 #endif
68
69 /** This should be called from your WinMain() function, if any */
70 extern DECLSPEC void SDLCALL SDL_SetModuleHandle(void *hInst);
71 /** This can also be called, but is no longer necessary */
72 extern DECLSPEC int SDLCALL SDL_RegisterApp(char *name, Uint32 style, void *hInst);
73 /** This can also be called, but is no longer necessary (SDL_Quit calls it) */
74 extern DECLSPEC void SDLCALL SDL_UnregisterApp(void);
75 #ifdef __cplusplus
76 }
77 #endif
78 #include "close_code.h"
79 #endif
80 /*@}*/
81
82 /** @name From the SDL library code -- needed for registering QuickDraw on MacOS */
83 /*@{*/
84 #if defined(__MACOS__)
85
86 #include "begin_code.h"
87 #ifdef __cplusplus
88 extern "C" {
89 #endif
90
91 /** Forward declaration so we don't need to include QuickDraw.h */
92 struct QDGlobals;
93
94 /** This should be called from your main() function, if any */
95 extern DECLSPEC void SDLCALL SDL_InitQuickDraw(struct QDGlobals *the_qd);
96
97 #ifdef __cplusplus
98 }
99 #endif
100 #include "close_code.h"
101 #endif
102 /*@}*/
103
104 #endif /* Need to redefine main()? */
105
106 #endif /* _SDL_main_h */