Spaces:
Sleeping
Sleeping
/* | |
* 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 */ | |
} | |