tf2  master
tf2 maintains the relationship between coordinate frames in a tree structure buffered in time, and lets the user transform points, vectors, etc between any two coordinate frames at any desired point in time.
visibility_control.h
Go to the documentation of this file.
1 // Copyright 2017, Open Source Robotics Foundation, Inc. All rights reserved.
2 //
3 // Redistribution and use in source and binary forms, with or without
4 // modification, are permitted provided that the following conditions are met:
5 //
6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer.
8 //
9 // * Redistributions in binary form must reproduce the above copyright
10 // notice, this list of conditions and the following disclaimer in the
11 // documentation and/or other materials provided with the distribution.
12 //
13 // * Neither the name of the Open Source Robotics Foundation nor the names of its
14 // contributors may be used to endorse or promote products derived from
15 // this software without specific prior written permission.
16 //
17 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
21 // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24 // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25 // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26 // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 // POSSIBILITY OF SUCH DAMAGE.
28 
29 #ifndef TF2__VISIBILITY_CONTROL_H_
30 #define TF2__VISIBILITY_CONTROL_H_
31 
32 // This logic was borrowed (then namespaced) from the examples on the gcc wiki:
33 // https://gcc.gnu.org/wiki/Visibility
34 
35 #if defined _WIN32 || defined __CYGWIN__
36  #ifdef __GNUC__
37  #define TF2_EXPORT __attribute__ ((dllexport))
38  #define TF2_IMPORT __attribute__ ((dllimport))
39  #else
40  #define TF2_EXPORT __declspec(dllexport)
41  #define TF2_IMPORT __declspec(dllimport)
42  #endif
43  #ifdef TF2_BUILDING_DLL
44  #define TF2_PUBLIC TF2_EXPORT
45  #else
46  #define TF2_PUBLIC TF2_IMPORT
47  #endif
48  #define TF2_PUBLIC_TYPE TF2_PUBLIC
49  #define TF2_LOCAL
50 #else
51  #define TF2_EXPORT __attribute__ ((visibility("default")))
52  #define TF2_IMPORT
53  #if __GNUC__ >= 4
54  #define TF2_PUBLIC __attribute__ ((visibility("default")))
55  #define TF2_LOCAL __attribute__ ((visibility("hidden")))
56  #else
57  #define TF2_PUBLIC
58  #define TF2_LOCAL
59  #endif
60  #define TF2_PUBLIC_TYPE
61 #endif
62 
63 #endif // TF2__VISIBILITY_CONTROL_H_