You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.4 KiB
46 lines
1.4 KiB
/* Copyright (c) INRIA and Microsoft Corporation. All rights reserved.
|
|
Licensed under the Apache 2.0 License. */
|
|
|
|
#ifndef __KREMLIN_CALLCONV_H
|
|
#define __KREMLIN_CALLCONV_H
|
|
|
|
/******************************************************************************/
|
|
/* Some macros to ease compatibility */
|
|
/******************************************************************************/
|
|
|
|
/* We want to generate __cdecl safely without worrying about it being undefined.
|
|
* When using MSVC, these are always defined. When using MinGW, these are
|
|
* defined too. They have no meaning for other platforms, so we define them to
|
|
* be empty macros in other situations. */
|
|
#ifndef _MSC_VER
|
|
#ifndef __cdecl
|
|
#define __cdecl
|
|
#endif
|
|
#ifndef __stdcall
|
|
#define __stdcall
|
|
#endif
|
|
#ifndef __fastcall
|
|
#define __fastcall
|
|
#endif
|
|
#endif
|
|
|
|
/* Since KreMLin emits the inline keyword unconditionally, we follow the
|
|
* guidelines at https://gcc.gnu.org/onlinedocs/gcc/Inline.html and make this
|
|
* __inline__ to ensure the code compiles with -std=c90 and earlier. */
|
|
#ifdef __GNUC__
|
|
# define inline __inline__
|
|
#endif
|
|
|
|
/* GCC-specific attribute syntax; everyone else gets the standard C inline
|
|
* attribute. */
|
|
#ifdef __GNU_C__
|
|
# ifndef __clang__
|
|
# define force_inline inline __attribute__((always_inline))
|
|
# else
|
|
# define force_inline inline
|
|
# endif
|
|
#else
|
|
# define force_inline inline
|
|
#endif
|
|
|
|
#endif
|
|
|