Subastra
Loading...
Searching...
No Matches
Data Structures | Macros | Enumerations | Functions
scheduler.h File Reference
#include <stdio.h>
#include "../list.h"
#include "../names.h"
#include "require.h"
Include dependency graph for scheduler.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  scheduler_system_t
 
struct  scheduler_t
 

Macros

#define scheduler_declare_system_with_custom_runner( scheduler, mut, cons, system_name, runner_f, deps_on, dependency_count, ...)
 

Enumerations

enum  scheduler_strategy_t { SCHEDULER_STRATEGY_RANDOM }
 

Functions

static scheduler_t scheduler_new (scheduler_strategy_t strategy, allocator_t persistent_allocator, allocator_t temporary_allocator)
 
static void scheduler_add_system (scheduler_t *scheduler, system_req_t req, system_runner_f runner)
 
static void scheduler_add_system_declared_specific_data (scheduler_t *scheduler, system_requirements_declaration_t *declaration, void *system_specific_data)
 
static void scheduler_add_system_declared (scheduler_t *scheduler, system_requirements_declaration_t *declaration)
 
static void scheduler_dump_dependency_graph (scheduler_t *scheduler, FILE *out)
 
static void scheduler__topological_sort (allocator_t alloc, list_t *scheduler_system_list)
 
static void scheduler_set_parent_payload (scheduler_t *scheduler, system_payload_t payload)
 
static void scheduler_tick (scheduler_t *scheduler, double delta_time)
 
static void scheduler_begin_running (scheduler_t *scheduler)
 
static void scheduler_end_running (scheduler_t *scheduler)
 

Macro Definition Documentation

◆ scheduler_declare_system_with_custom_runner

#define scheduler_declare_system_with_custom_runner (   scheduler,
  mut,
  cons,
  system_name,
  runner_f,
  deps_on,
  dependency_count,
  ... 
)
Value:
name_t runner_f##_name = as_name(#system_name); \
do { \
system_req_t __system_req = __VA_ARGS__; \
__system_req.name = runner_f##_name; \
__system_req.depends_on = deps_on; \
__system_req.depends_on_count = dependency_count; \
system_req_entity_kinds_const(&__system_req, cons); \
system_req_entity_kinds_mut(&__system_req, mut); \
scheduler_add_system(scheduler, __system_req, runner_f); \
} while (0)
static name_t as_name(const char *str)
Definition names.h:33
u64 name_t
Definition names.h:14
Definition require.h:74
name_t name
Definition require.h:76
u32 depends_on_count
Definition require.h:81
name_t * depends_on
Definition require.h:80

Enumeration Type Documentation

◆ scheduler_strategy_t

Enumerator
SCHEDULER_STRATEGY_RANDOM 

Function Documentation

◆ scheduler__topological_sort()

static void scheduler__topological_sort ( allocator_t  alloc,
list_t scheduler_system_list 
)
static

◆ scheduler_add_system()

static void scheduler_add_system ( scheduler_t scheduler,
system_req_t  req,
system_runner_f  runner 
)
static

◆ scheduler_add_system_declared()

static void scheduler_add_system_declared ( scheduler_t scheduler,
system_requirements_declaration_t declaration 
)
static

◆ scheduler_add_system_declared_specific_data()

static void scheduler_add_system_declared_specific_data ( scheduler_t scheduler,
system_requirements_declaration_t declaration,
void *  system_specific_data 
)
static

◆ scheduler_begin_running()

static void scheduler_begin_running ( scheduler_t scheduler)
static

◆ scheduler_dump_dependency_graph()

static void scheduler_dump_dependency_graph ( scheduler_t scheduler,
FILE *  out 
)
static

◆ scheduler_end_running()

static void scheduler_end_running ( scheduler_t scheduler)
static

◆ scheduler_new()

static scheduler_t scheduler_new ( scheduler_strategy_t  strategy,
allocator_t  persistent_allocator,
allocator_t  temporary_allocator 
)
static

◆ scheduler_set_parent_payload()

static void scheduler_set_parent_payload ( scheduler_t scheduler,
system_payload_t  payload 
)
static

◆ scheduler_tick()

static void scheduler_tick ( scheduler_t scheduler,
double  delta_time 
)
static

Update all the active data members of a scheduler like delta_time