#ifndef KERNEL_H_ #define KERNEL_H_ #include "Referenced.h" #include #include #include #include namespace BlueCore { class Kernel; //----------------------------------------------------------------------------- class KernelTask : public Referenced { protected: ~KernelTask() { } public: KernelTask() { } virtual void tick() { } }; //----------------------------------------------------------------------------- class Kernel : public Referenced { private: struct KernelTaskContainer { ref_ptr _Task; int _Priority; KernelTaskContainer(KernelTask* task, int priority) : _Task(task), _Priority(priority) { } bool operator <(const KernelTaskContainer& other) const { return (_Priority > other._Priority); } }; std::list _Tasks; std::list _AddedTasks; std::list _RemovedTasks; bool _Changed; bool _Clear; protected: ~Kernel() { } public: Kernel(); void addTask(KernelTask* task, int priority); void removeTask(KernelTask* task); void removeAllTasks(); void setTaskPriority(KernelTask* task, int priority); bool tick(); }; } // namespace BlueCore #endif /*KERNEL_H_*/