diff options
Diffstat (limited to 'src/include/openssl/base.h')
-rw-r--r-- | src/include/openssl/base.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/include/openssl/base.h b/src/include/openssl/base.h index 7fe232f3..cb1affac 100644 --- a/src/include/openssl/base.h +++ b/src/include/openssl/base.h @@ -291,6 +291,24 @@ extern "C" { #endif #endif // OPENSSL_ASM_INCOMPATIBLE +#if defined(__cplusplus) +// enums can be predeclared, but only in C++ and only if given an explicit type. +// C doesn't support setting an explicit type for enums thus a #define is used +// to do this only for C++. However, the ABI type between C and C++ need to have +// equal sizes, which is confirmed in a unittest. +#define BORINGSSL_ENUM_INT : int +enum ssl_early_data_reason_t BORINGSSL_ENUM_INT; +enum ssl_encryption_level_t BORINGSSL_ENUM_INT; +enum ssl_private_key_result_t BORINGSSL_ENUM_INT; +enum ssl_renegotiate_mode_t BORINGSSL_ENUM_INT; +enum ssl_select_cert_result_t BORINGSSL_ENUM_INT; +enum ssl_select_cert_result_t BORINGSSL_ENUM_INT; +enum ssl_ticket_aead_result_t BORINGSSL_ENUM_INT; +enum ssl_verify_result_t BORINGSSL_ENUM_INT; +#else +#define BORINGSSL_ENUM_INT +#endif + // CRYPTO_THREADID is a dummy value. typedef int CRYPTO_THREADID; |