// Copyright 2022 Arthur Sonzogni. All rights reserved. // Use of this source code is governed by the MIT license that can be found in // the LICENSE file. #ifndef FTXUI_COMPONENT_LOOP_HPP #define FTXUI_COMPONENT_LOOP_HPP #include // for shared_ptr #include "ftxui/component/component_base.hpp" // for ComponentBase namespace ftxui { class ComponentBase; using Component = std::shared_ptr; class ScreenInteractive; class Loop { public: Loop(ScreenInteractive* screen, Component component); ~Loop(); bool HasQuitted(); void RunOnce(); void RunOnceBlocking(); void Run(); // This class is non copyable/movable. Loop(const Loop&) = default; Loop(Loop&&) = delete; Loop& operator=(Loop&&) = delete; Loop(const ScreenInteractive&) = delete; Loop& operator=(const Loop&) = delete; private: ScreenInteractive* screen_; Component component_; }; } // namespace ftxui #endif // FTXUI_COMPONENT_LOOP_HPP