#include <stdio.h>
#include <stdlib.h>
#include "data.h"
#include "depend.h"
#include "gettext.h"
#include "assert.h"
Functions | |
static int | updater_dependent (updaterfunc *updater) |
Checks if the source event of the updater function itself depends on another event or not. | |
static void | updater_movetoend (updaterfunc **list, updaterfunc *updater) |
Moves an updaterfunc structure to the end of a linked list. | |
int | updater_reorder () |
Reorders dep_updaterlist linked list. | |
int | updater_check (int dst) |
Checks if an updater function can be registered for a dependent event. | |
updaterfunc * | updater_new (int src, int dst, updater_f func) |
Register a new updater function. | |
void | updater_call (table *tab) |
Calls all registered updater functions. | |
Variables | |
static updaterfunc * | dep_updaterlist = NULL |
Linked list of all updater functions for dependent events. |
|
Calls all registered updater functions. Functions are called in the order of the linked list. updater_reorder() must be called before the first call to updater_call() to properly reorder the linked list.
|
|
Checks if an updater function can be registered for a dependent event.
|
|
Checks if the source event of the updater function itself depends on another event or not. Helper function for updater_reorder(). This function walks the dat_updatelist linked list and searches for an updater function that has a destination event equal to the source event of the updater function in the argument.
|
|
Moves an updaterfunc structure to the end of a linked list. Helper function for updater_reorder().
|
|
Register a new updater function. It is recommended that updater_check() is called before calling this function to verify if there isn't another updater function registered for this dependent event.
|
|
Reorders dep_updaterlist linked list. A source (independent) event for an updater function can infact be a destination (dependent) event of another updater function. This means that updater functions must be called in the correct order. Example: Function A has a source event 2 and destination event 3. Function B has a source event 1 and destination event 2. In this case updater_reorder() puts function B in front of A.
|