include/coal/fwd.hh
Go to the documentation of this file.
1 //
2 // Software License Agreement (BSD License)
3 //
4 // Copyright (c) 2014, CNRS-LAAS
5 // Copyright (c) 2022-2024, Inria
6 // Author: Florent Lamiraux
7 //
8 // All rights reserved.
9 //
10 // Redistribution and use in source and binary forms, with or without
11 // modification, are permitted provided that the following conditions
12 // are met:
13 //
14 // * Redistributions of source code must retain the above copyright
15 // notice, this list of conditions and the following disclaimer.
16 // * Redistributions in binary form must reproduce the above
17 // copyright notice, this list of conditions and the following
18 // disclaimer in the documentation and/or other materials provided
19 // with the distribution.
20 // * Neither the name of CNRS-LAAS nor the names of its
21 // contributors may be used to endorse or promote products derived
22 // from this software without specific prior written permission.
23 //
24 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
27 // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
28 // COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
29 // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
30 // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
31 // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
32 // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
34 // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35 // POSSIBILITY OF SUCH DAMAGE.
36 //
37 
38 #ifndef COAL_FWD_HH
39 #define COAL_FWD_HH
40 
41 #include <cassert>
42 #include <memory>
43 #include <sstream>
44 #include <stdexcept>
45 
46 #include "coal/config.hh"
47 #include "coal/deprecated.hh"
48 #include "coal/warning.hh"
49 
50 #if _WIN32
51 #define COAL_PRETTY_FUNCTION __FUNCSIG__
52 #else
53 #define COAL_PRETTY_FUNCTION __PRETTY_FUNCTION__
54 #endif
55 
56 #define COAL_UNUSED_VARIABLE(var) (void)(var)
57 
58 #ifdef NDEBUG
59 #define COAL_ONLY_USED_FOR_DEBUG(var) COAL_UNUSED_VARIABLE(var)
60 #else
61 #define COAL_ONLY_USED_FOR_DEBUG(var)
62 #endif
63 
64 #define COAL_THROW_PRETTY(message, exception) \
65  { \
66  std::stringstream ss; \
67  ss << "From file: " << __FILE__ << "\n"; \
68  ss << "in function: " << COAL_PRETTY_FUNCTION << "\n"; \
69  ss << "at line: " << __LINE__ << "\n"; \
70  ss << "message: " << message << "\n"; \
71  throw exception(ss.str()); \
72  }
73 
74 #ifdef COAL_TURN_ASSERT_INTO_EXCEPTION
75 #define COAL_ASSERT(check, message, exception) \
76  do { \
77  if (!(check)) { \
78  COAL_THROW_PRETTY(message, exception); \
79  } \
80  } while (0)
81 #else
82 #define COAL_ASSERT(check, message, exception) \
83  { \
84  COAL_UNUSED_VARIABLE(exception(message)); \
85  assert((check) && message); \
86  }
87 #endif
88 
89 #if (__cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600))
90 #define COAL_WITH_CXX11_SUPPORT
91 #endif
92 
93 #if defined(__GNUC__) || defined(__clang__)
94 #define COAL_COMPILER_DIAGNOSTIC_PUSH _Pragma("GCC diagnostic push")
95 #define COAL_COMPILER_DIAGNOSTIC_POP _Pragma("GCC diagnostic pop")
96 #define COAL_COMPILER_DIAGNOSTIC_IGNORED_DEPRECECATED_DECLARATIONS \
97  _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
98 
99 // GCC version 4.6 and higher supports -Wmaybe-uninitialized
100 #if (defined(__GNUC__) && \
101  ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)))
102 #define COAL_COMPILER_DIAGNOSTIC_IGNORED_MAYBE_UNINITIALIZED \
103  _Pragma("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
104 // Use __has_warning with clang. Clang introduced it in 2024 (3.5+)
105 #elif (defined(__clang__) && defined(__has_warning) && \
106  __has_warning("-Wmaybe-uninitialized"))
107 #define COAL_COMPILER_DIAGNOSTIC_IGNORED_MAYBE_UNINITIALIZED \
108  _Pragma("clang diagnostic ignored \"-Wmaybe-uninitialized\"")
109 #else
110 #define COAL_COMPILER_DIAGNOSTIC_IGNORED_MAYBE_UNINITIALIZED
111 #endif
112 #elif defined(WIN32)
113 #define COAL_COMPILER_DIAGNOSTIC_PUSH _Pragma("warning(push)")
114 #define COAL_COMPILER_DIAGNOSTIC_POP _Pragma("warning(pop)")
115 #define COAL_COMPILER_DIAGNOSTIC_IGNORED_DEPRECECATED_DECLARATIONS \
116  _Pragma("warning(disable : 4996)")
117 #define COAL_COMPILER_DIAGNOSTIC_IGNORED_MAYBE_UNINITIALIZED \
118  _Pragma("warning(disable : 4700)")
119 #else
120 #define COAL_COMPILER_DIAGNOSTIC_PUSH
121 #define COAL_COMPILER_DIAGNOSTIC_POP
122 #define COAL_COMPILER_DIAGNOSTIC_IGNORED_DEPRECECATED_DECLARATIONS
123 #define COAL_COMPILER_DIAGNOSTIC_IGNORED_MAYBE_UNINITIALIZED
124 #endif // __GNUC__
125 
126 namespace coal {
127 using std::dynamic_pointer_cast;
128 using std::make_shared;
129 using std::shared_ptr;
130 
132 typedef shared_ptr<CollisionObject> CollisionObjectPtr_t;
133 typedef shared_ptr<const CollisionObject> CollisionObjectConstPtr_t;
135 typedef shared_ptr<CollisionGeometry> CollisionGeometryPtr_t;
136 typedef shared_ptr<const CollisionGeometry> CollisionGeometryConstPtr_t;
137 class Transform3s;
138 
139 class AABB;
140 
142 typedef shared_ptr<BVHModelBase> BVHModelPtr_t;
143 
144 class OcTree;
145 typedef shared_ptr<OcTree> OcTreePtr_t;
146 typedef shared_ptr<const OcTree> OcTreeConstPtr_t;
147 } // namespace coal
148 
149 #ifdef COAL_BACKWARD_COMPATIBILITY_WITH_HPP_FCL
150 namespace hpp {
151 namespace fcl {
152 using namespace coal;
153 using Transform3f = Transform3s; // For backward compatibility
154 } // namespace fcl
155 } // namespace hpp
156 #endif
157 
158 #endif // COAL_FWD_HH
coal::BVHModelBase
A base class describing the bounding hierarchy of a mesh model or a point cloud model (which is viewe...
Definition: coal/BVH/BVH_model.h:65
coal
Main namespace.
Definition: coal/broadphase/broadphase_bruteforce.h:44
coal::CollisionGeometry
The geometry for the object for collision or distance computation.
Definition: coal/collision_object.h:94
coal::AABB
A class describing the AABB collision structure, which is a box in 3D space determined by two diagona...
Definition: coal/BV/AABB.h:55
coal::Transform3s
Simple transform class used locally by InterpMotion.
Definition: coal/math/transform.h:55
coal::CollisionObjectPtr_t
shared_ptr< CollisionObject > CollisionObjectPtr_t
Definition: include/coal/fwd.hh:131
coal::OcTreeConstPtr_t
shared_ptr< const OcTree > OcTreeConstPtr_t
Definition: include/coal/fwd.hh:146
coal::BVHModelPtr_t
shared_ptr< BVHModelBase > BVHModelPtr_t
Definition: include/coal/fwd.hh:141
coal::CollisionObject
the object for collision or distance computation, contains the geometry and the transform information
Definition: coal/collision_object.h:214
coal::CollisionGeometryConstPtr_t
shared_ptr< const CollisionGeometry > CollisionGeometryConstPtr_t
Definition: include/coal/fwd.hh:136
coal::OcTreePtr_t
shared_ptr< OcTree > OcTreePtr_t
Definition: include/coal/fwd.hh:144
coal::OcTree
Octree is one type of collision geometry which can encode uncertainty information in the sensor data.
Definition: coal/octree.h:53
coal::CollisionObjectConstPtr_t
shared_ptr< const CollisionObject > CollisionObjectConstPtr_t
Definition: include/coal/fwd.hh:133
coal::CollisionGeometryPtr_t
shared_ptr< CollisionGeometry > CollisionGeometryPtr_t
Definition: include/coal/fwd.hh:134


hpp-fcl
Author(s):
autogenerated on Sat Nov 23 2024 03:44:58