ethercat_driver_ros2  main
C++ ROS test
visibility_control.h
Go to the documentation of this file.
1 // Copyright 2022 ICUBE Laboratory, University of Strasbourg
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 #ifndef ETHERCAT_DRIVER__VISIBILITY_CONTROL_H_
16 #define ETHERCAT_DRIVER__VISIBILITY_CONTROL_H_
17 
18 // This logic was borrowed (then namespaced) from the examples on the gcc wiki:
19 // https://gcc.gnu.org/wiki/Visibility
20 
21 #if defined _WIN32 || defined __CYGWIN__
22  #ifdef __GNUC__
23  #define ETHERCAT_DRIVER_EXPORT __attribute__ ((dllexport))
24  #define ETHERCAT_DRIVER_IMPORT __attribute__ ((dllimport))
25  #else
26  #define ETHERCAT_DRIVER_EXPORT __declspec(dllexport)
27  #define ETHERCAT_DRIVER_IMPORT __declspec(dllimport)
28  #endif
29  #ifdef ETHERCAT_DRIVER_BUILDING_LIBRARY
30  #define ETHERCAT_DRIVER_PUBLIC ETHERCAT_DRIVER_EXPORT
31  #else
32  #define ETHERCAT_DRIVER_PUBLIC ETHERCAT_DRIVER_IMPORT
33  #endif
34  #define ETHERCAT_DRIVER_PUBLIC_TYPE ETHERCAT_DRIVER_PUBLIC
35  #define ETHERCAT_DRIVER_LOCAL
36 #else
37  #define ETHERCAT_DRIVER_EXPORT __attribute__ ((visibility("default")))
38  #define ETHERCAT_DRIVER_IMPORT
39  #if __GNUC__ >= 4
40  #define ETHERCAT_DRIVER_PUBLIC __attribute__ ((visibility("default")))
41  #define ETHERCAT_DRIVER_LOCAL __attribute__ ((visibility("hidden")))
42  #else
43  #define ETHERCAT_DRIVER_PUBLIC
44  #define ETHERCAT_DRIVER_LOCAL
45  #endif
46  #define ETHERCAT_DRIVER_PUBLIC_TYPE
47 #endif
48 
49 #endif // ETHERCAT_DRIVER__VISIBILITY_CONTROL_H_