// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
namespace gui
{
class Item;
class Rect;
class Text;
class Window;
class Label;
class ListItem;
namespace status_bar
{
class StatusBar;
}
namespace nav_bar
{
class NavBar;
}
/// The general purpose abstract interface for enabling Double-Dispatch behavior throughout `gui::Item`'s
/// inheritance hierarchy.
class GuiVisitor
{
public:
virtual void visit(gui::Item &item) = 0;
virtual void visit(gui::Rect &item) = 0;
virtual void visit(gui::Text &item) = 0;
virtual void visit(gui::Window &item) = 0;
virtual void visit(gui::Label &item) = 0;
virtual void visit(gui::nav_bar::NavBar &item) = 0;
virtual void visit(gui::status_bar::StatusBar &item) = 0;
virtual void visit(gui::ListItem &item) = 0;
virtual ~GuiVisitor() = default;
};
} // namespace gui