#pragma once #include #include namespace vamp_zero { enum class menu_action_kind { ACTIVATE, PREVIOUS, NEXT, TEMPO_DOWN, TEMPO_UP }; struct menu_action { vamp_zero::menu_action_kind kind{}; std::size_t row{}; std::uint64_t revision{}; std::shared_ptr catalog{}; }; struct menu_item { std::string label{}; std::string detail{}; }; auto menu_count(vamp_zero::app_state const &state) -> std::size_t; auto menu_selection(vamp_zero::app_state const &state) -> std::size_t; auto menu_title(vamp_zero::app_state const &state) -> std::string; auto menu_row(vamp_zero::app_state const &state, std::size_t row) -> vamp_zero::menu_item; auto apply_menu_action(vamp_zero::app_state state, vamp_zero::menu_action const &action) -> vamp_zero::app_state; }