diff --git a/CMakeLists.txt b/CMakeLists.txt index c8370e09..f3c87f2c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,7 +20,10 @@ include(IgnCMake) #-------------------------------------- # Set up the project -ign_configure_project(VERSION_SUFFIX) +ign_configure_project( + REPLACE_IGNITION_INCLUDE_PATH gz/cmake + VERSION_SUFFIX +) #-------------------------------------- # Set project-specific options diff --git a/doc/doxygen/api.in b/doc/doxygen/api.in index 8b42d495..86bd233d 100644 --- a/doc/doxygen/api.in +++ b/doc/doxygen/api.in @@ -956,7 +956,7 @@ INPUT_FILTER = # need to set EXTENSION_MAPPING for the extension otherwise the files are not # properly processed by doxygen. -FILTER_PATTERNS = *.hh="sed -e 's/inline\snamespace\s.*\s{$\|ignition::@GZ_DESIGNATION@::\|IGN_DEPRECATED([0-9\.]\+)\|IGNITION_@GZ_DESIGNATION_UPPER@_VISIBLE//g'" +FILTER_PATTERNS = *.hh="sed -e 's/inline\snamespace\s.*\s{$\|gz::@GZ_DESIGNATION@::\|IGN_DEPRECATED([0-9\.]\+)\|IGNITION_@GZ_DESIGNATION_UPPER@_VISIBLE//g'" # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will also be used to filter the input files that are used for diff --git a/examples/comp_deps/src/AlmostEmpty.cc b/examples/comp_deps/src/AlmostEmpty.cc index da65eaa2..bb7e0350 100644 --- a/examples/comp_deps/src/AlmostEmpty.cc +++ b/examples/comp_deps/src/AlmostEmpty.cc @@ -17,7 +17,7 @@ #include -namespace ignition +namespace gz { namespace component_deps { diff --git a/examples/core_nodep/src/AlmostEmpty.cc b/examples/core_nodep/src/AlmostEmpty.cc index 0a1c6df8..8826778b 100644 --- a/examples/core_nodep/src/AlmostEmpty.cc +++ b/examples/core_nodep/src/AlmostEmpty.cc @@ -17,7 +17,7 @@ #include -namespace ignition +namespace gz { namespace core_no_deps { diff --git a/examples/core_nodep_static/src/AlmostEmpty.cc b/examples/core_nodep_static/src/AlmostEmpty.cc index f55af640..8ff32660 100644 --- a/examples/core_nodep_static/src/AlmostEmpty.cc +++ b/examples/core_nodep_static/src/AlmostEmpty.cc @@ -17,7 +17,7 @@ #include -namespace ignition +namespace gz { namespace core_no_deps { diff --git a/include/gz/utilities/ExtraTestMacros.hh b/include/gz/utilities/ExtraTestMacros.hh index 5bd800d1..5fd45e9a 100644 --- a/include/gz/utilities/ExtraTestMacros.hh +++ b/include/gz/utilities/ExtraTestMacros.hh @@ -15,10 +15,10 @@ * */ -#ifndef IGNITION_UTILITIES_EXTRATESTMACROS_HH -#define IGNITION_UTILITIES_EXTRATESTMACROS_HH +#ifndef GZ_UTILITIES_EXTRATESTMACROS_HH +#define GZ_UTILITIES_EXTRATESTMACROS_HH -#include +#include /// \brief Restrict the execution of the test for the Windows platform. /// The test will be compiled on Windows too but will never be run as diff --git a/include/gz/utilities/SuppressWarning.hh b/include/gz/utilities/SuppressWarning.hh index 7ae99ec5..549af7f1 100644 --- a/include/gz/utilities/SuppressWarning.hh +++ b/include/gz/utilities/SuppressWarning.hh @@ -15,10 +15,10 @@ * */ -#ifndef IGNITION_UTILITIES_SUPPRESSWARNING_HH_ -#define IGNITION_UTILITIES_SUPPRESSWARNING_HH_ +#ifndef GZ_UTILITIES_SUPPRESSWARNING_HH_ +#define GZ_UTILITIES_SUPPRESSWARNING_HH_ -#include +#include // This header contains cross-platform macros for suppressing warnings. Please // only use these macros responsibly when you are certain that the compiler is diff --git a/include/gz/utilities/detail/ExtraTestMacros.hh b/include/gz/utilities/detail/ExtraTestMacros.hh index e9b780fd..aad5bf55 100644 --- a/include/gz/utilities/detail/ExtraTestMacros.hh +++ b/include/gz/utilities/detail/ExtraTestMacros.hh @@ -15,10 +15,10 @@ * */ -#ifndef IGNITION_UTILITIES_DETAIL_EXTRATESTMACROS_HH -#define IGNITION_UTILITIES_DETAIL_EXTRATESTMACROS_HH +#ifndef GZ_UTILITIES_DETAIL_EXTRATESTMACROS_HH +#define GZ_UTILITIES_DETAIL_EXTRATESTMACROS_HH -#include +#include #define DETAIL_IGN_UTILS_ADD_DISABLED_PREFIX(x) DISABLED_##x diff --git a/include/gz/utilities/detail/SuppressWarning.hh b/include/gz/utilities/detail/SuppressWarning.hh index f69fb17b..da0b8177 100644 --- a/include/gz/utilities/detail/SuppressWarning.hh +++ b/include/gz/utilities/detail/SuppressWarning.hh @@ -16,10 +16,10 @@ */ -#ifndef IGNITION_UTILITIES_DETAIL_SUPPRESSWARNING_HH_ -#define IGNITION_UTILITIES_DETAIL_SUPPRESSWARNING_HH_ +#ifndef GZ_UTILITIES_DETAIL_SUPPRESSWARNING_HH_ +#define GZ_UTILITIES_DETAIL_SUPPRESSWARNING_HH_ -#include +#include #define DETAIL_IGN_UTILS_STRINGIFY(x) #x diff --git a/include/ignition/utilities/ExtraTestMacros.hh b/include/ignition/utilities/ExtraTestMacros.hh new file mode 100644 index 00000000..8f0c6469 --- /dev/null +++ b/include/ignition/utilities/ExtraTestMacros.hh @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2020 Open Source Robotics Foundation + * + * 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. + * + */ + +#ifndef IGNITION_UTILITIES_EXTRATESTMACROS_HH +#define IGNITION_UTILITIES_EXTRATESTMACROS_HH + +#include + +/// \brief Restrict the execution of the test for the Windows platform. +/// The test will be compiled on Windows too but will never be run as +/// part of the test suite. The macro uses the Disabled_ prefix provided +/// by googletest. See +/// https://chromium.googlesource.com/external/github.com/google/googletest/+/HEAD/googletest/docs/advanced.md +#define IGN_UTILS_TEST_DISABLED_ON_WIN32(TestName) \ + DETAIL_IGN_UTILS_TEST_DISABLED_ON_WIN32(TestName) + +/// \brief Restrict the execution of the test for the Mac platform. +/// The test will be compiled on Windows too but will never be run as +/// part of the test suite. The macro uses the Disabled_ prefix provided +/// by googletest. See +/// https://chromium.googlesource.com/external/github.com/google/googletest/+/HEAD/googletest/docs/advanced.md +#define IGN_UTILS_TEST_DISABLED_ON_MAC(TestName) \ + DETAIL_IGN_UTILS_TEST_DISABLED_ON_MAC(TestName) + +/// \brief Restrict the execution of the test to just the Linux platform +/// Other platforms will get the test compiled but it won't be run +/// as part of the test suite execution. +/// The macro uses the Disabled_ prefix provided by googletest. See +/// https://chromium.googlesource.com/external/github.com/google/googletest/+/HEAD/googletest/docs/advanced.md +#define IGN_UTILS_TEST_ENABLED_ONLY_ON_LINUX(TestName) \ + DETAIL_IGN_UTILS_TEST_ENABLED_ONLY_ON_LINUX(TestName) + +#endif diff --git a/include/ignition/utilities/SuppressWarning.hh b/include/ignition/utilities/SuppressWarning.hh new file mode 100644 index 00000000..f5ef8af1 --- /dev/null +++ b/include/ignition/utilities/SuppressWarning.hh @@ -0,0 +1,71 @@ +/* + * Copyright (C) 2018 Open Source Robotics Foundation + * + * 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. + * + */ + +#ifndef IGNITION_UTILITIES_SUPPRESSWARNING_HH_ +#define IGNITION_UTILITIES_SUPPRESSWARNING_HH_ + +#include + +// This header contains cross-platform macros for suppressing warnings. Please +// only use these macros responsibly when you are certain that the compiler is +// producing a warning that is not applicable to the specific instance. Do not +// use these macros to ignore legitimate warnings, even if you may find them +// irritating. + +/* + * Usage example: + * + * SomeClass *ptr = CreatePtr(); + * IGN_UTILS_WARN_IGNORE__NON_VIRTUAL_DESTRUCTOR + * delete ptr; + * IGN_UTILS_WARN_RESUME__NON_VIRTUAL_DESTRUCTOR + * + */ + +// Be sure to call the IGN_UTILS_WARN_RESUME__XXXXX macro at the end of the +// block of code where the warning suppression is needed. Otherwise, you might +// inadvertently suppress legitimate warnings. + +// ---- List of available suppressions ---- + +/// \brief Compilers might warn about deleting a pointer to a class that has +/// virtual functions without a virtual destructor or a `final` declaration, +/// because the pointer might secretly be pointing to a more derived class type. +/// We want to suppress this warning when we know for certain (via the design +/// of our implementation) that the pointer is definitely not pointing to a more +/// derived type. +#define IGN_UTILS_WARN_IGNORE__NON_VIRTUAL_DESTRUCTOR \ + DETAIL_IGN_UTILS_WARN_IGNORE__NON_VIRTUAL_DESTRUCTOR + +#define IGN_UTILS_WARN_RESUME__NON_VIRTUAL_DESTRUCTOR \ + DETAIL_IGN_UTILS_WARN_RESUME__NON_VIRTUAL_DESTRUCTOR + +/// \brief Microsoft Visual Studio does not automatically export the interface +/// information for member variables that belong to interface classes of a DLL. +/// Instead it issues this warning. When the member variable is private, we +/// choose to suppress the warning instead of needlessly adding the class +/// information to the DLL interface. +#define IGN_UTILS_WARN_IGNORE__DLL_INTERFACE_MISSING \ + DETAIL_IGN_UTILS_WARN_IGNORE__DLL_INTERFACE_MISSING + +#define IGN_UTILS_WARN_RESUME__DLL_INTERFACE_MISSING \ + DETAIL_IGN_UTILS_WARN_RESUME__DLL_INTERFACE_MISSING + +// TODO(anyone): Add more warning types as they become relevant. +// Do not add warning types to suppress unless they are genuinely necessary. + +#endif