/**
 * @file
 * @author Marek Bel
 */

#include "MenuStack.h"
/**
 * @brief Push menu on stack
 * @param menu
 * @param position selected position in menu being pushed
 */
void MenuStack::push(menuFunc_t menu, uint8_t position)
{
    if (m_index >= max_depth) return;
    m_stack[m_index].menu = menu;
    m_stack[m_index].position = position;
    ++m_index;
}

/**
 * @brief Pop menu from stack
 * @return Record containing menu function pointer and previously selected line number
 */
MenuStack::Record MenuStack::pop()
{
    if (m_index != 0) m_index--;

    return m_stack[m_index];
}