diff --git a/include/fcl/collision_object.h b/include/fcl/collision_object.h index 7d54ffd65fafd5059ffa8f405710ccdb53702582..043cfb9c1e89bab8e8594eb69007a86b8adbc288 100644 --- a/include/fcl/collision_object.h +++ b/include/fcl/collision_object.h @@ -38,6 +38,7 @@ #ifndef FCL_COLLISION_OBJECT_BASE_H #define FCL_COLLISION_OBJECT_BASE_H +#include <fcl/deprecated.h> #include "fcl/BV/AABB.h" #include "fcl/math/transform.h" #include "fcl/ccd/motion_base.h" @@ -295,11 +296,17 @@ public: } /// @brief get geometry from the object instance - const CollisionGeometry* getCollisionGeometry() const + const CollisionGeometry* getCollisionGeometry() const FCL_DEPRECATED { return cgeom.get(); } + /// @brief get geometry from the object instance + boost::shared_ptr<const CollisionGeometry> collisionGeometry() const + { + return cgeom; + } + /// @brief get object's cost density FCL_REAL getCostDensity() const { @@ -437,11 +444,17 @@ public: } /// @brief get geometry from the object instance - inline const CollisionGeometry* getCollisionGeometry() const + inline const CollisionGeometry* getCollisionGeometry() const FCL_DEPRECATED { return cgeom.get(); } + /// @brief get geometry from the object instance + inline boost::shared_ptr<const CollisionGeometry> collisionGeometry() const + { + return cgeom; + } + protected: boost::shared_ptr<CollisionGeometry> cgeom; diff --git a/include/fcl/deprecated.h b/include/fcl/deprecated.h new file mode 100644 index 0000000000000000000000000000000000000000..16c74e83b60c9da829e9189e79ab9c0d58db4b25 --- /dev/null +++ b/include/fcl/deprecated.h @@ -0,0 +1,68 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2013, CNRS-LAAS. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +/// \author Florent Lamiraux + +#ifndef FCL_DEPRECATED_HH +# define FCL_DEPRECATED_HH + +// Define a suffix which can be used to tag a type, a function or a a +// variable as deprecated (i.e. it will emit a warning when using it). +// +// Tagging a function as deprecated: +// void foo () FCL_DEPRECATED; +// +// Tagging a type as deprecated: +// class Foo {}; +// typedef Foo Bar FCL_DEPRECATED; +// +// Tagging a variable as deprecated: +// int a FCL_DEPRECATED = 0; +// +// The use of a macro is required as this is /not/ a standardized +// feature of C++ language or preprocessor, even if most of the +// compilers support it. +# ifdef __GNUC__ +# define FCL_DEPRECATED __attribute__ ((deprecated)) +# elif defined _MSC_VER +# define FCL_DEPRECATED __declspec (deprecated) +# elif defined(clang) +# define FL_DEPRECATED \ + attribute((deprecated("FCL: Use of this method is deprecated"))) +# else +// If the compiler is not recognized, drop the feature. +# define FCL_DEPRECATED /* nothing */ +# endif + +#endif //! FCL_DEPRECATED_HH