1 /** 2 * 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). 3 * 4 * Copyright: Copyright (c) 2018 D Language Foundation 5 * License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0). 6 * Authors: Jacob Carlborg 7 * Source: $(DRUNTIMESRC core/sys/darwin/_crt_externs.d) 8 */ 9 module core.sys.darwin.crt_externs; 10 11 version (CoreDoc) 12 { 13 /** 14 * In reality this will be $(REF mach_header, core, sys, darwin, mach, loader) 15 * on 32-bit platforms and $(REF mach_header_64, core, sys, darwin, mach, loader) 16 * 64-bit platforms. 17 */ 18 struct MachHeader; 19 20 /** 21 * Returns the program arguments. 22 * 23 * These are the same arguments passed to the C main function: 24 * 25 * ___ 26 * extern (C) void main (char** argv, int argc, char** envp) {} 27 * ___ 28 * 29 * Same as the above `argv`. 30 * 31 * Return: the program arguments as a pointer to an array of null terminated C 32 * strings 33 */ 34 char*** _NSGetArgv(); 35 36 /** 37 * Returns the number of program arguments. 38 * 39 * These are the same arguments passed to the C main function: 40 * 41 * ___ 42 * extern (C) void main (char** argv, int argc, char** envp) {} 43 * ___ 44 * 45 * Same as the above `argc`. 46 * 47 * Return: a pointer to the number of program arguments 48 */ 49 int* _NSGetArgc(); 50 51 /** 52 * Returns the program environment variables. 53 * 54 * These are the same arguments passed as an array to the C main function: 55 * 56 * ___ 57 * extern (C) void main (char** argv, int argc, char** envp) {} 58 * ___ 59 * 60 * Same as the above `envp`. 61 * 62 * Return: the program environment variables as a pointer to an array of null 63 * terminated C strings 64 */ 65 char*** _NSGetEnviron(); 66 67 /** 68 * Returns the full path to the current executable as a pointer to a null 69 * terminated C string. 70 */ 71 char** _NSGetProgname(); 72 73 /// Returns the Mach-O header of the current executable. 74 MachHeader* _NSGetMachExecuteHeader(); 75 } 76 77 else version (OSX) 78 version = Darwin; 79 else version (iOS) 80 version = Darwin; 81 else version (TVOS) 82 version = Darwin; 83 else version (WatchOS) 84 version = Darwin; 85 86 version (Darwin): 87 extern(C): 88 nothrow: 89 @nogc: 90 91 import core.sys.darwin.mach.loader : mach_header, mach_header_64; 92 93 char*** _NSGetArgv(); 94 int* _NSGetArgc(); 95 char*** _NSGetEnviron(); 96 char** _NSGetProgname(); 97 98 version (D_LP64) 99 mach_header_64* _NSGetMachExecuteHeader(); 100 else 101 mach_header* _NSGetMachExecuteHeader();