.. _program_listing_file__tmp_ws_src_rmf_traffic_rmf_traffic_include_rmf_traffic_Route.hpp: Program Listing for File Route.hpp ================================== |exhale_lsh| :ref:`Return to documentation for file ` (``/tmp/ws/src/rmf_traffic/rmf_traffic/include/rmf_traffic/Route.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp /* * 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 RMF_TRAFFIC__ROUTE_HPP #define RMF_TRAFFIC__ROUTE_HPP #include #include #include #include #include #include namespace rmf_traffic { //============================================================================== using RouteId = uint64_t; using ParticipantId = uint64_t; using CheckpointId = uint64_t; using PlanId = uint64_t; struct Dependency { uint64_t on_participant; uint64_t on_plan; uint64_t on_route; uint64_t on_checkpoint; bool operator==(const Dependency& other) const; }; using Dependencies = std::vector; using DependsOnCheckpoint = std::map; using DependsOnRoute = std::unordered_map; //============================================================================== class DependsOnPlan { public: DependsOnPlan(); DependsOnPlan(PlanId plan, DependsOnRoute routes); DependsOnPlan& plan(std::optional plan); std::optional plan() const; DependsOnPlan& routes(DependsOnRoute routes); DependsOnRoute& routes(); const DependsOnRoute& routes() const; struct Dependency { RouteId on_route; CheckpointId on_checkpoint; }; DependsOnPlan& add_dependency( CheckpointId dependent_checkpoint, Dependency dependency); class Implementation; private: rmf_utils::impl_ptr _pimpl; }; using DependsOnParticipant = std::unordered_map; //============================================================================== class Route { public: Route( std::string map, Trajectory trajectory); Route& map(std::string value); const std::string& map() const; Route& trajectory(Trajectory value); Trajectory& trajectory(); const Trajectory& trajectory() const; Route& checkpoints(std::set value); std::set& checkpoints(); const std::set& checkpoints() const; Route& dependencies(DependsOnParticipant value); DependsOnParticipant& dependencies(); const DependsOnParticipant& dependencies() const; Route& add_dependency( CheckpointId dependent_checkpoint, Dependency dependency); bool should_ignore(ParticipantId participant, PlanId plan) const; const DependsOnCheckpoint* check_dependencies( ParticipantId on_participant, PlanId on_plan, RouteId on_route) const; class Implementation; private: rmf_utils::impl_ptr _pimpl; }; using RoutePtr = std::shared_ptr; using ConstRoutePtr = std::shared_ptr; } // namespace rmf_traffic #endif // RMF_TRAFFIC__SCHEDULDE__ROUTE_HPP