From 2eca0ed54763ee47e55c4294d8c3a0fdafbe2f90 Mon Sep 17 00:00:00 2001 From: Tully Foote Date: Sun, 5 Aug 2018 23:22:15 -0700 Subject: [PATCH 1/5] copy in assert.h from rosconsole Signed-off-by: Tully Foote --- include/rcutils/assert.h | 155 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 155 insertions(+) create mode 100644 include/rcutils/assert.h diff --git a/include/rcutils/assert.h b/include/rcutils/assert.h new file mode 100644 index 00000000..3cbd315e --- /dev/null +++ b/include/rcutils/assert.h @@ -0,0 +1,155 @@ +/* + * Copyright (c) 2008, Willow Garage, Inc. + * 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: Josh Faust + +#ifndef ROSCONSOLE_ROSASSERT_H +#define ROSCONSOLE_ROSASSERT_H + +#include "ros/console.h" +#include "ros/static_assert.h" + +/** \file */ + +/** \def ROS_ASSERT(cond) + * \brief Asserts that the provided condition evaluates to true. + * + * If it is false, program execution will abort, with an informative + * statement about which assertion failed, in what file. Use ROS_ASSERT + * instead of assert() itself. + * + * If running inside a debugger, ROS_ASSERT will allow you to step past the assertion. + */ + +/** \def ROS_ASSERT_MSG(cond, ...) + * \brief Asserts that the provided condition evaluates to true. + * + * If it is false, program execution will abort, with an informative + * statement about which assertion failed, in what file, and it will print out + * a printf-style message you define. Example usage: + @verbatim + ROS_ASSERT_MSG(x > 0, "Uh oh, x went negative. Value = %d", x); + @endverbatim + * + * If running inside a debugger, ROS_ASSERT will allow you to step past the assertion. + */ + +/** + * \def ROS_ASSERT_CMD() + * \brief Runs a command if the provided condition is false + * + * For example: +\verbatim + ROS_ASSERT_CMD(x > 0, handleError(...)); +\endverbatim + */ + +/** \def ROS_BREAK() + * \brief Aborts program execution. + * + * Aborts program execution with an informative message stating what file and + * line it was called from. Use ROS_BREAK instead of calling assert(0) or + * ROS_ASSERT(0). + * + * If running inside a debugger, ROS_BREAK will allow you to step past the breakpoint. + */ + +/** \def ROS_ISSUE_BREAK() + * \brief Always issues a breakpoint instruction. + * + * This define is mostly for internal use, but is useful if you want to simply issue a break + * instruction in a cross-platform way. + * + * Currently implemented for Windows (any platform), powerpc64, and x86 + */ + +#include + +#ifdef WIN32 +# if defined (__MINGW32__) +# define ROS_ISSUE_BREAK() DebugBreak(); +# else // MSVC +# define ROS_ISSUE_BREAK() __debugbreak(); +# endif +#elif defined(__powerpc64__) +# define ROS_ISSUE_BREAK() asm volatile ("tw 31,1,1"); +#elif defined(__i386__) || defined(__ia64__) || defined(__x86_64__) +# define ROS_ISSUE_BREAK() asm("int $3"); +#else +# include +# define ROS_ISSUE_BREAK() abort(); +#endif + +#ifndef NDEBUG +#ifndef ROS_ASSERT_ENABLED +#define ROS_ASSERT_ENABLED +#endif +#endif + +#ifdef ROS_ASSERT_ENABLED +#define ROS_BREAK() \ + do { \ + ROS_FATAL("BREAKPOINT HIT\n\tfile = %s\n\tline=%d\n", __FILE__, __LINE__); \ + ROS_ISSUE_BREAK() \ + } while (false) + +#define ROS_ASSERT(cond) \ + do { \ + if (!(cond)) { \ + ROS_FATAL("ASSERTION FAILED\n\tfile = %s\n\tline = %d\n\tcond = %s\n", __FILE__, __LINE__, #cond); \ + ROS_ISSUE_BREAK() \ + } \ + } while (false) + +#define ROS_ASSERT_MSG(cond, ...) \ + do { \ + if (!(cond)) { \ + ROS_FATAL("ASSERTION FAILED\n\tfile = %s\n\tline = %d\n\tcond = %s\n\tmessage = ", __FILE__, __LINE__, #cond); \ + ROS_FATAL(__VA_ARGS__); \ + ROS_FATAL("\n"); \ + ROS_ISSUE_BREAK(); \ + } \ + } while (false) + +#define ROS_ASSERT_CMD(cond, cmd) \ + do { \ + if (!(cond)) { \ + cmd; \ + } \ + } while (false) + + +#else +#define ROS_BREAK() +#define ROS_ASSERT(cond) +#define ROS_ASSERT_MSG(cond, ...) +#define ROS_ASSERT_CMD(cond, cmd) +#endif + +#endif // ROSCONSOLE_ROSASSERT_H From 2dd17f914f9cd9c0fc90f07a4a16aca65e356018 Mon Sep 17 00:00:00 2001 From: Tully Foote Date: Sun, 5 Aug 2018 23:46:16 -0700 Subject: [PATCH 2/5] Update assertion methods for new home in rcutils Add unit tests for assert and remove CMD version. Signed-off-by: Tully Foote --- CMakeLists.txt | 7 +++ include/rcutils/assert.h | 93 ++++++++++++++++++---------------------- test/test_assert.cpp | 53 +++++++++++++++++++++++ 3 files changed, 102 insertions(+), 51 deletions(-) create mode 100644 test/test_assert.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 58b1cf41..693b3c5f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -198,6 +198,13 @@ if(BUILD_TESTING) target_link_libraries(test_allocator ${PROJECT_NAME} osrf_testing_tools_cpp::memory_tools) endif() + rcutils_custom_add_gtest(test_assert + test/test_assert.cpp + ) + if(TARGET test_assert) + target_link_libraries(test_assert ${PROJECT_NAME}) + endif() + rcutils_custom_add_gtest(test_char_array test/test_char_array.cpp ) diff --git a/include/rcutils/assert.h b/include/rcutils/assert.h index 3cbd315e..3d7d4f89 100644 --- a/include/rcutils/assert.h +++ b/include/rcutils/assert.h @@ -29,58 +29,57 @@ // Author: Josh Faust -#ifndef ROSCONSOLE_ROSASSERT_H -#define ROSCONSOLE_ROSASSERT_H +#ifndef RCUTILS__ASSERT_H_ +#define RCUTILS__ASSERT_H_ -#include "ros/console.h" -#include "ros/static_assert.h" +#include "rcutils/logging_macros.h" /** \file */ -/** \def ROS_ASSERT(cond) +/** \def RCUTILS_ASSERT(cond) * \brief Asserts that the provided condition evaluates to true. * * If it is false, program execution will abort, with an informative - * statement about which assertion failed, in what file. Use ROS_ASSERT + * statement about which assertion failed, in what file. Use RCUTILS_ASSERT * instead of assert() itself. * - * If running inside a debugger, ROS_ASSERT will allow you to step past the assertion. + * If running inside a debugger, RCUTILS_ASSERT will allow you to step past the assertion. */ -/** \def ROS_ASSERT_MSG(cond, ...) +/** \def RCUTILS_ASSERT_MSG(cond, ...) * \brief Asserts that the provided condition evaluates to true. * * If it is false, program execution will abort, with an informative * statement about which assertion failed, in what file, and it will print out * a printf-style message you define. Example usage: @verbatim - ROS_ASSERT_MSG(x > 0, "Uh oh, x went negative. Value = %d", x); + RCUTILS_ASSERT_MSG(x > 0, "Uh oh, x went negative. Value = %d", x); @endverbatim * - * If running inside a debugger, ROS_ASSERT will allow you to step past the assertion. + * If running inside a debugger, RCUTILS_ASSERT will allow you to step past the assertion. */ /** - * \def ROS_ASSERT_CMD() + * \def RCUTILS_ASSERT_CMD() * \brief Runs a command if the provided condition is false * * For example: \verbatim - ROS_ASSERT_CMD(x > 0, handleError(...)); + RCUTILS_ASSERT_CMD(x > 0, handleError(...)); \endverbatim */ -/** \def ROS_BREAK() +/** \def RCUTILS_BREAK() * \brief Aborts program execution. * * Aborts program execution with an informative message stating what file and - * line it was called from. Use ROS_BREAK instead of calling assert(0) or - * ROS_ASSERT(0). + * line it was called from. Use RCUTILS_BREAK instead of calling assert(0) or + * RCUTILS_ASSERT(0). * - * If running inside a debugger, ROS_BREAK will allow you to step past the breakpoint. + * If running inside a debugger, RCUTILS_BREAK will allow you to step past the breakpoint. */ -/** \def ROS_ISSUE_BREAK() +/** \def RCUTILS_ISSUE_BREAK() * \brief Always issues a breakpoint instruction. * * This define is mostly for internal use, but is useful if you want to simply issue a break @@ -89,67 +88,59 @@ * Currently implemented for Windows (any platform), powerpc64, and x86 */ -#include #ifdef WIN32 # if defined (__MINGW32__) -# define ROS_ISSUE_BREAK() DebugBreak(); -# else // MSVC -# define ROS_ISSUE_BREAK() __debugbreak(); +# define RCUTILS_ISSUE_BREAK() DebugBreak(); +# else // MSVC +# define RCUTILS_ISSUE_BREAK() __debugbreak(); # endif #elif defined(__powerpc64__) -# define ROS_ISSUE_BREAK() asm volatile ("tw 31,1,1"); +# define RCUTILS_ISSUE_BREAK() asm volatile ("tw 31,1,1"); #elif defined(__i386__) || defined(__ia64__) || defined(__x86_64__) -# define ROS_ISSUE_BREAK() asm("int $3"); +# define RCUTILS_ISSUE_BREAK() asm ("int $3"); #else # include -# define ROS_ISSUE_BREAK() abort(); +# define RCUTILS_ISSUE_BREAK() abort(); #endif #ifndef NDEBUG -#ifndef ROS_ASSERT_ENABLED -#define ROS_ASSERT_ENABLED +#ifndef RCUTILS_ASSERT_ENABLED +#define RCUTILS_ASSERT_ENABLED #endif #endif -#ifdef ROS_ASSERT_ENABLED -#define ROS_BREAK() \ +#ifdef RCUTILS_ASSERT_ENABLED +#define RCUTILS_BREAK() \ do { \ - ROS_FATAL("BREAKPOINT HIT\n\tfile = %s\n\tline=%d\n", __FILE__, __LINE__); \ - ROS_ISSUE_BREAK() \ + RCUTILS_LOG_FATAL("BREAKPOINT HIT\n\tfile = %s\n\tline=%d\n", __FILE__, __LINE__); \ + RCUTILS_ISSUE_BREAK() \ } while (false) -#define ROS_ASSERT(cond) \ +#define RCUTILS_ASSERT(cond) \ do { \ if (!(cond)) { \ - ROS_FATAL("ASSERTION FAILED\n\tfile = %s\n\tline = %d\n\tcond = %s\n", __FILE__, __LINE__, #cond); \ - ROS_ISSUE_BREAK() \ + RCUTILS_LOG_FATAL("ASSERTION FAILED\n\tfile = %s\n\tline = %d\n\tcond = %s\n", \ + __FILE__, __LINE__, #cond); \ + RCUTILS_ISSUE_BREAK() \ } \ } while (false) -#define ROS_ASSERT_MSG(cond, ...) \ +#define RCUTILS_ASSERT_MSG(cond, ...) \ do { \ if (!(cond)) { \ - ROS_FATAL("ASSERTION FAILED\n\tfile = %s\n\tline = %d\n\tcond = %s\n\tmessage = ", __FILE__, __LINE__, #cond); \ - ROS_FATAL(__VA_ARGS__); \ - ROS_FATAL("\n"); \ - ROS_ISSUE_BREAK(); \ + RCUTILS_LOG_FATAL("ASSERTION FAILED\n\tfile = %s\n\tline = %d\n\tcond = %s\n\tmessage = ", \ + __FILE__, __LINE__, #cond); \ + RCUTILS_LOG_FATAL(__VA_ARGS__); \ + RCUTILS_LOG_FATAL("\n"); \ + RCUTILS_ISSUE_BREAK(); \ } \ } while (false) -#define ROS_ASSERT_CMD(cond, cmd) \ - do { \ - if (!(cond)) { \ - cmd; \ - } \ - } while (false) - - #else -#define ROS_BREAK() -#define ROS_ASSERT(cond) -#define ROS_ASSERT_MSG(cond, ...) -#define ROS_ASSERT_CMD(cond, cmd) +#define RCUTILS_BREAK() +#define RCUTILS_ASSERT(cond) +#define RCUTILS_ASSERT_MSG(cond, ...) #endif -#endif // ROSCONSOLE_ROSASSERT_H +#endif // RCUTILS__ASSERT_H_ diff --git a/test/test_assert.cpp b/test/test_assert.cpp new file mode 100644 index 00000000..fe77a163 --- /dev/null +++ b/test/test_assert.cpp @@ -0,0 +1,53 @@ +// Copyright 2016 Open Source Robotics Foundation, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include +#include + +#include "rcutils/logging_macros.h" +#include "rcutils/assert.h" + + +void test_assert(bool value) +{ + RCUTILS_ASSERT(value); +} + + +void test_assert_msg(bool value, std::string message) +{ + RCUTILS_ASSERT_MSG(value, message.c_str()); +} + + +void test_break(void) +{ + RCUTILS_BREAK(); +} + +TEST(TestAssert, test_rcutils_assert) +{ + // Should pass + test_assert(true); + test_assert_msg(true, "no message"); + + EXPECT_DEATH(test_assert(false), ""); + EXPECT_DEATH(test_assert_msg(false, "message output"), ".*message output.*"); +} + + +TEST(TestAssert, test_rcutils_break) +{ + EXPECT_DEATH(test_break(), ""); +} From 02d2654574da78be79fc710dc45b86fa65a5c82f Mon Sep 17 00:00:00 2001 From: Tully Foote Date: Mon, 6 Aug 2018 12:20:41 -0700 Subject: [PATCH 3/5] changing license comment style Working around https://github.com/ament/ament_lint/pull/82 Signed-off-by: Tully Foote --- include/rcutils/assert.h | 59 +++++++++++++++++++++------------------- 1 file changed, 31 insertions(+), 28 deletions(-) diff --git a/include/rcutils/assert.h b/include/rcutils/assert.h index 3d7d4f89..532ad4b1 100644 --- a/include/rcutils/assert.h +++ b/include/rcutils/assert.h @@ -1,31 +1,34 @@ -/* - * Copyright (c) 2008, Willow Garage, Inc. - * 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. - */ +// Copyright (c) 2008, Willow Garage, Inc. +// All rights reserved. +// +// Software License Agreement (BSD License 2.0) +// +// 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 the {company} 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: Josh Faust From dddf1b01918930afbb672e8784aa9f117f274726 Mon Sep 17 00:00:00 2001 From: Tully Foote Date: Fri, 2 Aug 2019 09:58:45 -0700 Subject: [PATCH 4/5] fixup assert string formatting Signed-off-by: Tully Foote --- test/test_assert.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_assert.cpp b/test/test_assert.cpp index fe77a163..4906195a 100644 --- a/test/test_assert.cpp +++ b/test/test_assert.cpp @@ -27,7 +27,7 @@ void test_assert(bool value) void test_assert_msg(bool value, std::string message) { - RCUTILS_ASSERT_MSG(value, message.c_str()); + RCUTILS_ASSERT_MSG(value, "%s", message.c_str()); } From f8356d26e7042a86a6593cf0fcd7f85048894cc4 Mon Sep 17 00:00:00 2001 From: Tully Foote Date: Fri, 31 Jan 2020 16:43:13 -0800 Subject: [PATCH 5/5] FIx up bsd license re: https://github.com/ament/ament_lint/pull/209 Signed-off-by: Tully Foote --- LICENSE | 29 +++++++++++++++++++++++++ include/rcutils/assert.h | 46 ++++++++++++++++++---------------------- package.xml | 1 + 3 files changed, 51 insertions(+), 25 deletions(-) diff --git a/LICENSE b/LICENSE index d6456956..991553c6 100644 --- a/LICENSE +++ b/LICENSE @@ -200,3 +200,32 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + +BSD 3 Clause + +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 the copyright holder 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 HOLDER 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. diff --git a/include/rcutils/assert.h b/include/rcutils/assert.h index 532ad4b1..95637f68 100644 --- a/include/rcutils/assert.h +++ b/include/rcutils/assert.h @@ -1,33 +1,29 @@ // Copyright (c) 2008, Willow Garage, Inc. -// All rights reserved. + +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: // -// Software License Agreement (BSD License 2.0) +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. // -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: +// * 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. // -// * 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 the {company} nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. +// * Neither the name of the copyright holder 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 +// 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 HOLDER 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: Josh Faust diff --git a/package.xml b/package.xml index 9e3a398d..e7320ca8 100644 --- a/package.xml +++ b/package.xml @@ -6,6 +6,7 @@ Package containing various utility types and functions for C Karsten Knese Apache License 2.0 + BSD-3-Clause ament_cmake_ros python3-empy