Spaces:
Running
Running
| /* | |
| * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. | |
| * | |
| * Licensed under the OpenSSL license (the "License"). You may not use | |
| * this file except in compliance with the License. You can obtain a copy | |
| * in the file LICENSE in the source distribution or at | |
| * https://www.openssl.org/source/license.html | |
| */ | |
| extern "C" { | |
| /****************************************************************************** | |
| * Detect operating systems. This probably needs completing. | |
| * The result is that at least one OPENSSL_SYS_os macro should be defined. | |
| * However, if none is defined, Unix is assumed. | |
| **/ | |
| /* --------------------- Microsoft operating systems ---------------------- */ | |
| /* | |
| * Note that MSDOS actually denotes 32-bit environments running on top of | |
| * MS-DOS, such as DJGPP one. | |
| */ | |
| /* | |
| * For 32 bit environment, there seems to be the CygWin environment and then | |
| * all the others that try to do the same thing Microsoft does... | |
| */ | |
| /* | |
| * UEFI lives here because it might be built with a Microsoft toolchain and | |
| * we need to avoid the false positive match on Windows. | |
| */ | |
| /* Anything that tries to look like Microsoft is "Windows" */ | |
| /* | |
| * DLL settings. This part is a bit tough, because it's up to the | |
| * application implementor how he or she will link the application, so it | |
| * requires some macro to be used. | |
| */ | |
| /* ------------------------------- OpenVMS -------------------------------- */ | |
| /* -------------------------------- Unix ---------------------------------- */ | |
| /* -------------------------------- VOS ----------------------------------- */ | |
| /** | |
| * That's it for OS-specific stuff | |
| *****************************************************************************/ | |
| /* Specials for I/O an exit */ | |
| /*- | |
| * OPENSSL_EXTERN is normally used to declare a symbol with possible extra | |
| * attributes to handle its presence in a shared library. | |
| * OPENSSL_EXPORT is used to define a symbol with extra possible attributes | |
| * to make it visible in a shared library. | |
| * Care needs to be taken when a header file is used both to declare and | |
| * define symbols. Basically, for any library that exports some global | |
| * variables, the following code must be present in the header file that | |
| * declares them, before OPENSSL_EXTERN is used: | |
| * | |
| * #ifdef SOME_BUILD_FLAG_MACRO | |
| * # undef OPENSSL_EXTERN | |
| * # define OPENSSL_EXTERN OPENSSL_EXPORT | |
| * #endif | |
| * | |
| * The default is to have OPENSSL_EXPORT and OPENSSL_EXTERN | |
| * have some generally sensible values. | |
| */ | |
| /*- | |
| * Macros to allow global variables to be reached through function calls when | |
| * required (if a shared library version requires it, for example. | |
| * The way it's done allows definitions like this: | |
| * | |
| * // in foobar.c | |
| * OPENSSL_IMPLEMENT_GLOBAL(int,foobar,0) | |
| * // in foobar.h | |
| * OPENSSL_DECLARE_GLOBAL(int,foobar); | |
| * #define foobar OPENSSL_GLOBAL_REF(foobar) | |
| */ | |
| /* Standard integer types */ | |
| typedef INT8 int8_t; | |
| typedef UINT8 uint8_t; | |
| typedef INT16 int16_t; | |
| typedef UINT16 uint16_t; | |
| typedef INT32 int32_t; | |
| typedef UINT32 uint32_t; | |
| typedef INT64 int64_t; | |
| typedef UINT64 uint64_t; | |
| /* | |
| * minimally required typdefs for systems not supporting inttypes.h or | |
| * stdint.h: currently just older VC++ | |
| */ | |
| typedef signed char int8_t; | |
| typedef unsigned char uint8_t; | |
| typedef short int16_t; | |
| typedef unsigned short uint16_t; | |
| typedef int int32_t; | |
| typedef unsigned int uint32_t; | |
| typedef __int64 int64_t; | |
| typedef unsigned __int64 uint64_t; | |
| /* ossl_inline: portable inline definition usable in public headers */ | |
| /* just use inline */ | |
| /* | |
| * Visual Studio: inline is available in C++ only, however | |
| * __inline is available for C, see | |
| * http://msdn.microsoft.com/en-us/library/z8y1yy88.aspx | |
| */ | |
| /* ossl_unused: portable unused attribute for use in public headers */ | |
| } | |