Plotly.cpp 0.1.0
A C++ plotting library for expressive, interactive, real-time & streaming data visualization
Loading...
Searching...
No Matches
abi_macros.hpp
Go to the documentation of this file.
1#pragma once
2
7
8// Visibility macros for symbol exports
9#if defined(_WIN32) || defined(__CYGWIN__)
10#ifdef PLOTLY_BUILDING_LIB
11#define PLOTLY_EXPORT __declspec(dllexport)
12#else
13#define PLOTLY_EXPORT __declspec(dllimport)
14#endif
15#else
16#if __GNUC__ >= 4
17#define PLOTLY_EXPORT __attribute__((visibility("default")))
18#else
19#define PLOTLY_EXPORT
20#endif
21#endif
22
23// Deprecation markers
24#if defined(__GNUC__) || defined(__clang__)
25#define PLOTLY_DEPRECATED __attribute__((deprecated))
26#define PLOTLY_DEPRECATED_MSG(msg) __attribute__((deprecated(msg)))
27#elif defined(_MSC_VER)
28#define PLOTLY_DEPRECATED __declspec(deprecated)
29#define PLOTLY_DEPRECATED_MSG(msg) __declspec(deprecated(msg))
30#else
31#define PLOTLY_DEPRECATED
32#define PLOTLY_DEPRECATED_MSG(msg)
33#endif
34
35// Inline macros
36#if defined(_MSC_VER) && !defined(__clang__)
37#define PLOTLY_INLINE inline
38#define PLOTLY_FORCE_INLINE __forceinline
39#else
40#define PLOTLY_INLINE inline
41#define PLOTLY_FORCE_INLINE inline __attribute__((always_inline))
42#endif
43
44// Restrict keyword
45#if defined(_MSC_VER) && !defined(__clang__)
46#define PLOTLY_RESTRICT __restrict
47#else
48#define PLOTLY_RESTRICT __restrict__
49#endif