6#include <PlatformDetermination.h>
14#ifndef _MENUITERATOR_H
15#define _MENUITERATOR_H
18# define MAX_MENU_DEPTH 4
127 void setRemoteNo(uint8_t newRemoteNum) { remoteNo = newRemoteNum; }
133#define TM_REGULAR_LOCAL_ONLY 8
134#define TM_INVERTED_LOCAL_ONLY 9
135#define TM_EXTRA_INCLUDE_SUBMENUS 16
136#define TM_BIT_INVERT 0U
137#define TM_BIT_LOCAL_ONLY 3U
138#define TM_BIT_INCLUDE_SUBMENU 4U
158 this->filterType = filterType;
176class MenuItemIterator {
180 MenuItem* parentItems[MAX_MENU_DEPTH];
182 bool processingSubMenu;
218inline T *asMenuItem(
MenuItem *item,
MenuType expectedType,
const char *typeName) {
219 if (item ==
nullptr || item->
getMenuType() != expectedType) {
222 serlog2(SER_ERROR, typeName, item ==
nullptr ? 0 : item->
getId());
226 return reinterpret_cast<T *
>(item);
282 return *asMenuItem<TimeFormattedMenuItem>(item,
MENUTYPE_TIME,
"Item not time");
287 return *asMenuItem<DateFormattedMenuItem>(item,
MENUTYPE_DATE,
"Item not date");