HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
blosc-export.h
Go to the documentation of this file.
1 /*********************************************************************
2  Blosc - Blocked Shuffling and Compression Library
3 
4  Author: Francesc Alted <francesc@blosc.org>
5 
6  See LICENSES/BLOSC.txt for details about copyright and rights to use.
7 **********************************************************************/
8 #ifndef BLOSC_EXPORT_H
9 #define BLOSC_EXPORT_H
10 
11 /* Macros for specifying exported symbols.
12  BLOSC_EXPORT is used to decorate symbols that should be
13  exported by the blosc shared library.
14  BLOSC_NO_EXPORT is used to decorate symbols that should NOT
15  be exported by the blosc shared library.
16 */
17 #if defined(BLOSC_SHARED_LIBRARY)
18  #if defined(_MSC_VER)
19  #define BLOSC_EXPORT __declspec(dllexport)
20  #elif (defined(__GNUC__) && __GNUC__ >= 4) || defined(__clang__)
21  #if defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__)
22  #define BLOSC_EXPORT __attribute__((dllexport))
23  #else
24  #define BLOSC_EXPORT __attribute__((visibility("default")))
25  #endif /* defined(_WIN32) || defined(__CYGWIN__) */
26  #else
27  #error Cannot determine how to define BLOSC_EXPORT for this compiler.
28  #endif
29 #else
30  #define BLOSC_EXPORT
31 #endif /* defined(BLOSC_SHARED_LIBRARY) */
32 
33 #if defined(__GNUC__) || defined(__clang__)
34  #define BLOSC_NO_EXPORT __attribute__((visibility("hidden")))
35 #else
36  #define BLOSC_NO_EXPORT
37 #endif /* defined(__GNUC__) || defined(__clang__) */
38 
39 /* When testing, export everything to make it easier to implement tests. */
40 #if defined(BLOSC_TESTING)
41  #undef BLOSC_NO_EXPORT
42  #define BLOSC_NO_EXPORT BLOSC_EXPORT
43 #endif /* defined(BLOSC_TESTING) */
44 
45 #endif /* BLOSC_EXPORT_H */