Core Module

Core is the main module of Vitrall. Its main classes are:

an abstract class that defines API for other modules.
the main module of Vitrall. Program keeps a list of loaded modules and manages threads.
an abstract class, basically a functor, that can be a native C++ function or a Lua code. Function can be encapsulated in Task and posted to TaskQueue.
stores a handler function to be called upon task execution, its earliest and latest time limits, in which it can be called, and a type. Type is an integer of user-defined value, which can be used for giving up execution, when there are more queued tasks of given type (like rendering request).
represents a queue of tasks.
connection between multiple TaskQueues and multiple threads. Free thread pops a Task from one of the TaskQueue and executes it. Main anteroom is placed in Program, that uses many threads, for tasks that can be executed in any thread. Anteroom is also present in Graphics::Renderer, for rendering tasks that have to execute in a specific thread.