classtray_and_menu{public:tray_and_menu(){// Setup arrays with tray itemsif(tray_.menu!=nullptr){return;}tray_.menu=newtray_menu[8];tray_.menu[0]={.text="Hello",.cb=hello_cb,.submenu=nullptr};tray_.menu[1]={.text="Checked",.cb=toggle_cb,.submenu=nullptr};tray_.menu[2]={.text="Disabled",.disabled=1,.submenu=nullptr};tray_.menu[3]={.text="-",.submenu=nullptr};tray_.menu[4]={.text="SubMenu",.submenu=newtray_menu[3]};tray_.menu[5]={.text="-",.submenu=nullptr};tray_.menu[6]={.text="Quit",.cb=quit_cb,.submenu=nullptr};tray_.menu[7]={.text=nullptr,.submenu=nullptr};tray_.menu[4].submenu[0]={.text="FIRST",.checked=1,.cb=submenu_cb,.submenu=nullptr};tray_.menu[4].submenu[1]={.text="SECOND",.submenu=newtray_menu[6]};tray_.menu[4].submenu[2]={.text=nullptr,.submenu=nullptr};tray_.menu[4].submenu[1].submenu[0]={.text="THIRD",.submenu=newtray_menu[4]};tray_.menu[4].submenu[1].submenu[1]={.text="FOUR",.submenu=newtray_menu[3]};tray_.menu[4].submenu[1].submenu[2]={.text=nullptr,.submenu=nullptr};tray_.menu[4].submenu[1].submenu[0].submenu[0]={.text="7",.cb=submenu_cb,.submenu=nullptr};tray_.menu[4].submenu[1].submenu[0].submenu[1]={.text="-",.submenu=nullptr};tray_.menu[4].submenu[1].submenu[0].submenu[2]={.text="8",.cb=submenu_cb,.submenu=nullptr};tray_.menu[4].submenu[1].submenu[0].submenu[3]={.text=nullptr,.submenu=nullptr};tray_.menu[4].submenu[1].submenu[1].submenu[0]={.text="5",.cb=submenu_cb,.submenu=nullptr};tray_.menu[4].submenu[1].submenu[1].submenu[1]={.text="6",.cb=submenu_cb,.submenu=nullptr};tray_.menu[4].submenu[1].submenu[1].submenu[2]={.text=nullptr,.cb=submenu_cb,.submenu=nullptr};if(tray_init(&tray_)<0){std::runtime_error("failed to create tray_");}}~tray_and_menu(){delete[]tray_.menu[4].submenu[1].submenu[1].submenu;delete[]tray_.menu[4].submenu[1].submenu[0].submenu;delete[]tray_.menu[4].submenu[1].submenu;delete[]tray_.menu[4].submenu;delete[]tray_.menu[3].submenu;delete[]tray_.menu->submenu;tray_.menu->submenu=nullptr;}staticvoidrun_tray(){while(tray_loop(1)==0){std::cout<<"Iteration"<<std::endl;}}private:staticvoidtoggle_cb(structtray_menu*item){std::cout<<"toggle cb"<<std::endl;item->checked=!item->checked;tray_update(&tray_);}staticvoidhello_cb(structtray_menu*item){(void)item;std::cout<<"hello cb"<<std::endl;// NOLINTNEXTLINE(bugprone-branch-clone)if(strcmp(tray_.icon,TRAY_ICON1)==0){tray_.icon=TRAY_ICON2;}else{tray_.icon=TRAY_ICON1;}tray_update(&tray_);}staticvoidquit_cb(structtray_menu*item){(void)item;std::cout<<"quit cb"<<std::endl;tray_exit();}staticvoidsubmenu_cb(structtray_menu*item){(void)item;std::cout<<"submenu: clicked on "<<item->text<<std::endl;tray_update(&tray_);}private/* members */:// Tray with pointers to menustatictraytray_;};