master
 1/**
 2 * This file has no copyright assigned and is placed in the Public Domain.
 3 * This file is part of the mingw-w64 runtime package.
 4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
 5 */
 6
 7#ifndef _INC_CORECRT_STARTUP
 8#define _INC_CORECRT_STARTUP
 9
10#include <corecrt.h>
11
12#ifdef __cplusplus
13extern "C" {
14#endif
15
16typedef enum _crt_app_type {
17    _crt_unknown_app,
18    _crt_console_app,
19    _crt_gui_app
20} _crt_app_type;
21
22_CRTIMP _crt_app_type __cdecl _query_app_type(void);
23_CRTIMP void __cdecl _set_app_type(_crt_app_type _Type);
24
25typedef enum _crt_argv_mode {
26    _crt_argv_no_arguments,
27    _crt_argv_unexpanded_arguments,
28    _crt_argv_expanded_arguments
29} _crt_argv_mode;
30
31_CRTIMP errno_t __cdecl _configure_narrow_argv(_crt_argv_mode mode);
32_CRTIMP errno_t __cdecl _configure_wide_argv(_crt_argv_mode mode);
33
34_CRTIMP int __cdecl _initialize_narrow_environment(void);
35_CRTIMP int __cdecl _initialize_wide_environment(void);
36
37_CRTIMP char** __cdecl _get_initial_narrow_environment(void);
38_CRTIMP wchar_t** __cdecl _get_initial_wide_environment(void);
39
40_CRTIMP char* __cdecl _get_narrow_winmain_command_line(void);
41_CRTIMP wchar_t* __cdecl _get_wide_winmain_command_line(void);
42
43_CRTIMP char **__cdecl __p__acmdln(void);
44#define _acmdln (*__p__acmdln())
45
46_CRTIMP wchar_t **__cdecl __p__wcmdln(void);
47#define _wcmdln (*__p__wcmdln())
48
49typedef void (__cdecl *_PVFV)(void);
50typedef int (__cdecl *_PIFV)(void);
51typedef void (__cdecl *_PVFI)(int);
52
53_CRTIMP void __cdecl _initterm(_PVFV* _First, _PVFV* _Last);
54_CRTIMP int __cdecl _initterm_e(_PIFV* _First, _PIFV* _Last);
55
56typedef struct _onexit_table_t {
57    _PVFV* _first;
58    _PVFV* _last;
59    _PVFV* _end;
60} _onexit_table_t;
61
62typedef int (__cdecl *_onexit_t)(void);
63
64_CRTIMP int __cdecl _initialize_onexit_table(_onexit_table_t*);
65_CRTIMP int __cdecl _register_onexit_function(_onexit_table_t*,_onexit_t);
66_CRTIMP int __cdecl _execute_onexit_table(_onexit_table_t*);
67_CRTIMP int __cdecl _crt_atexit(_PVFV func);
68_CRTIMP int __cdecl _crt_at_quick_exit(_PVFV func);
69
70#ifdef __cplusplus
71}
72#endif
73#endif