.. _program_listing_file__tmp_ws_src_rmf_traffic_rmf_traffic_include_rmf_traffic_geometry_ConvexShape.hpp: Program Listing for File ConvexShape.hpp ======================================== |exhale_lsh| :ref:`Return to documentation for file ` (``/tmp/ws/src/rmf_traffic/rmf_traffic/include/rmf_traffic/geometry/ConvexShape.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp /* * Copyright (C) 2019 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 RMF_TRAFFIC__CONVEXSHAPE_HPP #define RMF_TRAFFIC__CONVEXSHAPE_HPP #include #include namespace rmf_traffic { namespace geometry { class FinalConvexShape; //============================================================================== class ConvexShape : public Shape { public: virtual FinalConvexShape finalize_convex() const = 0; protected: ConvexShape(std::unique_ptr internal); }; using ConvexShapePtr = std::shared_ptr; using ConstConvexShapePtr = std::shared_ptr; //============================================================================== class FinalConvexShape : public FinalShape { public: // No API is needed here class Implementation; protected: FinalConvexShape(); }; using FinalConvexShapePtr = std::shared_ptr; using ConstFinalConvexShapePtr = std::shared_ptr; //============================================================================== template FinalConvexShapePtr make_final_convex(Args&& ... args) { return std::make_shared( T(std::forward(args)...).finalize_convex()); } //============================================================================== template FinalConvexShapePtr make_final_convex(const T& convex) { return std::make_shared(convex.finalize_convex()); } } // namespace geometry } // namespace rmf_traffic #endif // RMF_TRAFFIC__CONVEXSHAPE_HPP