.. _program_listing_file__tmp_ws_src_rmf_task_rmf_task_include_rmf_task_Phase.hpp: Program Listing for File Phase.hpp ================================== |exhale_lsh| :ref:`Return to documentation for file ` (``/tmp/ws/src/rmf_task/rmf_task/include/rmf_task/Phase.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp /* * Copyright (C) 2021 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_TASK__PHASE_HPP #define RMF_TASK__PHASE_HPP #include #include #include #include #include namespace rmf_task { //============================================================================== class Phase { public: class Tag; using ConstTagPtr = std::shared_ptr; class Completed; using ConstCompletedPtr = std::shared_ptr; class Active; using ConstActivePtr = std::shared_ptr; class Snapshot; using ConstSnapshotPtr = std::shared_ptr; class Pending; }; //============================================================================== class Phase::Tag { public: using Id = uint64_t; Tag(Id id_, Header header_); Id id() const; const Header& header() const; class Implementation; private: rmf_utils::impl_ptr _pimpl; }; //============================================================================== class Phase::Completed { public: Completed( ConstSnapshotPtr snapshot_, rmf_traffic::Time start_, rmf_traffic::Time finish_); const ConstSnapshotPtr& snapshot() const; rmf_traffic::Time start_time() const; rmf_traffic::Time finish_time() const; class Implementation; private: rmf_utils::impl_ptr _pimpl; }; //============================================================================== class Phase::Active { public: virtual ConstTagPtr tag() const = 0; virtual Event::ConstStatePtr final_event() const = 0; virtual rmf_traffic::Duration estimate_remaining_time() const = 0; // Virtual destructor virtual ~Active() = default; }; //============================================================================== class Phase::Snapshot : public Phase::Active { public: static ConstSnapshotPtr make(const Active& active); // Documentation inherited ConstTagPtr tag() const final; // Documentation inherited Event::ConstStatePtr final_event() const final; // Documentation inherited rmf_traffic::Duration estimate_remaining_time() const final; class Implementation; private: Snapshot(); rmf_utils::impl_ptr _pimpl; }; //============================================================================== class Phase::Pending { public: Pending(ConstTagPtr tag); const ConstTagPtr& tag() const; Pending& will_be_skipped(bool value); bool will_be_skipped() const; class Implementation; private: rmf_utils::impl_ptr _pimpl; }; } // namespace rmf_task #endif // RMF_TASK__PHASE_HPP