Unravel Engine C++ Reference
Loading...
Searching...
No Matches
service_main.h
Go to the documentation of this file.
1
#pragma once
2
#include "
service.h
"
3
4
#ifndef ENTRY_APP_NAME
5
#error "You must define ENTRY_APP_NAME, e.g. #define ENTRY_APP_NAME myapp"
6
#define ENTRY_APP_NAME "app"
7
#endif
8
9
// 1) Standard Unix-style entry:
10
int
main
(
int
argc,
char
* argv[])
11
{
12
return
service_main
(
ENTRY_APP_NAME
, argc, argv);
13
}
14
15
#if defined(_WIN32)
16
17
// these typedefs/macros let us declare WinMain/wWinMain without pulling in windows.h
18
#ifndef WINAPI
19
#define WINAPI __stdcall
20
#endif
21
22
typedef
struct
HINSTANCE__* HINSTANCE;
23
typedef
char
* LPSTR;
24
typedef
wchar_t
* PWSTR;
25
26
// 2) Unicode console apps on MSVC use wmain()
27
#if defined(_MSC_VER) && defined(UNICODE)
28
extern
"C"
int
wmain(
int
argc,
wchar_t
* wargv[],
wchar_t
* wenvp)
29
{
30
(void)wenvp;
31
// __argc/__argv always exist in MSVC CRT, even under UNICODE
32
return
service_main
(
ENTRY_APP_NAME
, __argc, __argv);
33
}
34
#endif
35
36
// 3) GUI apps on Windows look for WinMain or wWinMain
37
#ifdef __cplusplus
38
extern
"C"
39
{
40
#endif
41
42
#if defined(UNICODE)
43
int
WINAPI wWinMain(HINSTANCE hInst, HINSTANCE hPrev, PWSTR lpCmdLine,
int
nShowCmd)
44
#else
45
int
WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmdLine,
int
nShowCmd)
46
#endif
47
{
48
(void)hInst;
49
(void)hPrev;
50
(void)lpCmdLine;
51
(void)nShowCmd;
52
// again, forward to service_main with ANSI argv
53
return
service_main
(
ENTRY_APP_NAME
, __argc, __argv);
54
}
55
56
#ifdef __cplusplus
57
}
// extern "C"
58
#endif
59
60
#endif
// _WIN32
service_main
auto service_main(const char *name, int argc, char *argv[]) -> int
Definition
service.cpp:166
service.h
ENTRY_APP_NAME
#define ENTRY_APP_NAME
Definition
service_main.h:6
main
int main(int argc, char *argv[])
Definition
service_main.h:10
UnravelEngine
UnravelEngine
engine
core
service
service_main.h
Generated by
1.12.0