6#include <PlatformDetermination.h>
14#ifndef _MENUITERATOR_H
15#define _MENUITERATOR_H
18# define MAX_MENU_DEPTH 4
126 void setRemoteNo(uint8_t newRemoteNum) { remoteNo = newRemoteNum; }
132#define TM_REGULAR_LOCAL_ONLY 8
133#define TM_INVERTED_LOCAL_ONLY 9
134#define TM_EXTRA_INCLUDE_SUBMENUS 16
135#define TM_BIT_INVERT 0U
136#define TM_BIT_LOCAL_ONLY 3U
137#define TM_BIT_INCLUDE_SUBMENU 4U
157 this->filterType = filterType;
175class MenuItemIterator {
179 MenuItem* parentItems[MAX_MENU_DEPTH];
181 bool processingSubMenu;
217inline T *asMenuItem(
MenuItem *item,
MenuType expectedType,
const char *typeName) {
218 if (item ==
nullptr || item->
getMenuType() != expectedType) {
221 serlogF2(SER_ERROR, typeName, item ==
nullptr ? 0 : item->
getId());
225 return reinterpret_cast<T *
>(item);
281 return *asMenuItem<TimeFormattedMenuItem>(item,
MENUTYPE_TIME,
"Item not time");
286 return *asMenuItem<DateFormattedMenuItem>(item,
MENUTYPE_DATE,
"Item not date");