#ifndef TMAINTASK_H #define TMAINTASK_H #include "pso/forward.h" #include "pso/macros.h" #include "pso/TObject.h" #define SET_OR_CLEAR_CHILD_FLAGS(flags, old_flags, flag_bit) \ if (flags != old_flags) { \ TMainTask *child; \ u32 bit = 1; \ FOREACH_NODE_NODECL_MULTI_ITER(TMainTask, main_task.down, child, bit <<= 1) { \ if (main_task_flags & bit) { \ child->set_flag_##flag_bit(); \ } else { \ child->clear_flag_##flag_bit(); \ } \ } \ old_flags = flags; \ } class TMainTask : public TObject { public: u32 task_flags; u32 mbr_0x20; u32 mbr_0x24; public: TMainTask(); virtual ~TMainTask(); virtual void run_task(); private: void set_task_flags(u32 flags) { this->task_flags |= flags; } void clear_task_flags(u32 flags) { this->task_flags &= ~flags; } u32 get_task_flags(u32 flags) { return this->task_flags & flags; }; }; #endif