102 lines
2.5 KiB
D
102 lines
2.5 KiB
D
|
/**
|
||
|
* D header file for $(LINK2 https://opensource.apple.com/source/Libc/Libc-1244.30.3/include/crt_externs.h.auto.html, libc/crt_externs.h).
|
||
|
*
|
||
|
* Copyright: Copyright (c) 2018 D Language Foundation
|
||
|
* License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0).
|
||
|
* Authors: Jacob Carlborg
|
||
|
* Source: $(DRUNTIMESRC core/sys/darwin/_crt_externs.d)
|
||
|
*/
|
||
|
module core.sys.darwin.crt_externs;
|
||
|
|
||
|
version (CoreDoc)
|
||
|
{
|
||
|
/**
|
||
|
* In reality this will be $(REF mach_header, core, sys, darwin, mach, loader)
|
||
|
* on 32-bit platforms and $(REF mach_header_64, core, sys, darwin, mach, loader)
|
||
|
* 64-bit platforms.
|
||
|
*/
|
||
|
struct MachHeader;
|
||
|
|
||
|
/**
|
||
|
* Returns the program arguments.
|
||
|
*
|
||
|
* These are the same arguments passed to the C main function:
|
||
|
*
|
||
|
* ___
|
||
|
* extern (C) void main (char** argv, int argc, char** envp) {}
|
||
|
* ___
|
||
|
*
|
||
|
* Same as the above `argv`.
|
||
|
*
|
||
|
* Return: the program arguments as a pointer to an array of null terminated C
|
||
|
* strings
|
||
|
*/
|
||
|
char*** _NSGetArgv();
|
||
|
|
||
|
/**
|
||
|
* Returns the number of program arguments.
|
||
|
*
|
||
|
* These are the same arguments passed to the C main function:
|
||
|
*
|
||
|
* ___
|
||
|
* extern (C) void main (char** argv, int argc, char** envp) {}
|
||
|
* ___
|
||
|
*
|
||
|
* Same as the above `argc`.
|
||
|
*
|
||
|
* Return: a pointer to the number of program arguments
|
||
|
*/
|
||
|
int* _NSGetArgc();
|
||
|
|
||
|
/**
|
||
|
* Returns the program environment variables.
|
||
|
*
|
||
|
* These are the same arguments passed as an array to the C main function:
|
||
|
*
|
||
|
* ___
|
||
|
* extern (C) void main (char** argv, int argc, char** envp) {}
|
||
|
* ___
|
||
|
*
|
||
|
* Same as the above `envp`.
|
||
|
*
|
||
|
* Return: the program environment variables as a pointer to an array of null
|
||
|
* terminated C strings
|
||
|
*/
|
||
|
char*** _NSGetEnviron();
|
||
|
|
||
|
/**
|
||
|
* Returns the full path to the current executable as a pointer to a null
|
||
|
* terminated C string.
|
||
|
*/
|
||
|
char** _NSGetProgname();
|
||
|
|
||
|
/// Returns the Mach-O header of the current executable.
|
||
|
MachHeader* _NSGetMachExecuteHeader();
|
||
|
}
|
||
|
|
||
|
else version (OSX)
|
||
|
version = Darwin;
|
||
|
else version (iOS)
|
||
|
version = Darwin;
|
||
|
else version (TVOS)
|
||
|
version = Darwin;
|
||
|
else version (WatchOS)
|
||
|
version = Darwin;
|
||
|
|
||
|
version (Darwin):
|
||
|
extern(C):
|
||
|
nothrow:
|
||
|
@nogc:
|
||
|
|
||
|
import core.sys.darwin.mach.loader : mach_header, mach_header_64;
|
||
|
|
||
|
char*** _NSGetArgv();
|
||
|
int* _NSGetArgc();
|
||
|
char*** _NSGetEnviron();
|
||
|
char** _NSGetProgname();
|
||
|
|
||
|
version (D_LP64)
|
||
|
mach_header_64* _NSGetMachExecuteHeader();
|
||
|
else
|
||
|
mach_header* _NSGetMachExecuteHeader();
|