Qpid Proton C++ API  0.38.0
export.hpp
1 #ifndef PROTON_INTERNAL_EXPORT_HPP
2 #define PROTON_INTERNAL_EXPORT_HPP
3 
4 /*
5  *
6  * Licensed to the Apache Software Foundation (ASF) under one
7  * or more contributor license agreements. See the NOTICE file
8  * distributed with this work for additional information
9  * regarding copyright ownership. The ASF licenses this file
10  * to you under the Apache License, Version 2.0 (the
11  * "License"); you may not use this file except in compliance
12  * with the License. You may obtain a copy of the License at
13  *
14  * http://www.apache.org/licenses/LICENSE-2.0
15  *
16  * Unless required by applicable law or agreed to in writing,
17  * software distributed under the License is distributed on an
18  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
19  * KIND, either express or implied. See the License for the
20  * specific language governing permissions and limitations
21  * under the License.
22  *
23  */
24 
26 
28 #if defined(_WIN32) && !defined(PN_CPP_DECLARE_STATIC)
29  //
30  // Import and Export definitions for Windows:
31  //
32 # define PN_CPP_EXPORT __declspec(dllexport)
33 # define PN_CPP_IMPORT __declspec(dllimport)
34 # define PN_CPP_CLASS_EXPORT
35 # define PN_CPP_CLASS_IMPORT
36 #elif defined(__SUNPRO_C) || defined(__SUNPRO_CC)
37 # define PN_CPP_EXPORT __global
38 # define PN_CPP_IMPORT
39 # define PN_CPP_CLASS_EXPORT __global
40 # define PN_CPP_CLASS_IMPORT
41 #else
42  //
43  // Non-Windows (Linux, etc.) definitions:
44  //
45 # define PN_CPP_EXPORT __attribute__((visibility("default")))
46 # define PN_CPP_IMPORT
47 # define PN_CPP_CLASS_EXPORT __attribute__((visibility("default")))
48 # define PN_CPP_CLASS_IMPORT
49 #endif
50 
51 // For qpid-proton-cpp library symbols
52 #ifdef qpid_proton_cpp_EXPORTS
53 # define PN_CPP_EXTERN PN_CPP_EXPORT
54 # define PN_CPP_CLASS_EXTERN PN_CPP_CLASS_EXPORT
55 #else
56 # define PN_CPP_EXTERN PN_CPP_IMPORT
57 # define PN_CPP_CLASS_EXTERN PN_CPP_CLASS_IMPORT
58 #endif
59 
60 #if defined(PN_CPP_USE_DEPRECATED_API)
61 # define PN_CPP_DEPRECATED(message)
62 #else
63 # if defined(PN_COMPILER_CXX_ATTRIBUTE_DEPRECATED) && PN_COMPILER_CXX_ATTRIBUTE_DEPRECATED
64 # define PN_CPP_DEPRECATED(message) [[deprecated(message)]]
65 # elif defined(_WIN32)
66 # define PN_CPP_DEPRECATED(message) __declspec(deprecated(message))
67 # elif (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40500
68 # define PN_CPP_DEPRECATED(message) __attribute__((deprecated))
69 # else
70 # define PN_CPP_DEPRECATED(message) __attribute__((deprecated(message)))
71 # endif
72 #endif
73 
75 
76 #endif // PROTON_INTERNAL_EXPORT_HPP