Virtuelle Zockhalle 0.05 beta
|
Verschiedene allgemein nützliche Helferlein, die ich in viele meiner Projekte verbaue. Mehr ...
#include <stdlib.h>
#include <stdarg.h>
#include <stdio.h>
gehe zum Quellcode dieser Datei
Datenstrukturen | |
struct | remember_entry_t |
Eintrag in die Remember-Liste. Mehr ... | |
struct | remember_stack_t |
Remember-Liste. Mehr ... | |
Makrodefinitionen | |
Kleine Helferlein | |
#define | get_sign(N) ((N) < 0 ? -1 : (N) > 0 ? 1 : 0) |
Vorzeichen eines Wertes ermitteln. | |
#define | get_max(N1, N2) ((N1) > (N2) ? (N1) : (N2)) |
Den größeren von zwei Werten ermitteln. | |
#define | get_min(N1, N2) ((N1) < (N2) ? (N1) : (N2)) |
Den kleineren von zwei Werten ermitteln. | |
Funktionen | |
void | helper_init (const char *argv0) |
Modul initialisieren. | |
void * | emalloc (size_t sz) |
Sicherer malloc() | |
void * | erealloc (void *mem, size_t sz) |
Sicherer realloc() | |
void * | ecalloc (size_t sz) |
Gelöschten Speicher anfordern. | |
char * | estrdup (const char *str) |
Sicherer strdup() | |
FILE * | efopen (const char *fnam, const char *fmod) |
Sicherer fopen() | |
void | swapmem (void *ptr1, void *ptr2, size_t sz) |
Speicherbereiche austauschen. | |
Mersenne-Twister | |
Immer noch der beste und schnellste Zufallsgenerator der Welt! | |
void | mt_seed (unsigned long s) |
Saatwert für den Zufallsgenerator setzen. | |
void | mt_seed_time (void) |
Saatwert aus Systemzeit setzen. | |
void | mt_seed_array (unsigned long init_key[], int key_length) |
Saatwert aus einem Array setzen. | |
unsigned long | mt_int32 (void) |
32bit-Zufallszahl erzeugen | |
long | mt_int31 (void) |
31bit-Zufallszahl erzeugen | |
double | mt_real (void) |
Fließkomma-Zufallszahl erzeugen. | |
unsigned long | mt_range (unsigned long limit) |
Integer-Zufallszahl mit Obergrenze erzeugen. | |
void | mt_shuffle (void *ar, size_t elem_sz, size_t ar_sz) |
Array durchmischen. | |
Variablen | |
const char * | progname |
Name des Programmes. | |
Fehlerbehandlung | |
typedef void(* | errorcb_t )(const char *msg) |
Typ einer Callbackfunktion für die Fehlerbehandlung. | |
typedef void(* | atfatal_cb_t )(void) |
Typ einer Callbackfunktion vor dem harten Ausstieg mit fatal . | |
void | print_message (FILE *f, const char *msg) |
Meldung in einen Stream ausgeben. | |
int | atfatal (atfatal_cb_t cb) |
Cleanupfunktion vor dem harten Ausstieg registrieren. | |
void | fatal (const char *msg) |
Harter Ausstieg bei fatalem Fehler. | |
errorcb_t | set_errorcb (errorcb_t newcb) |
Funktion zur Fehlerbehandlung setzen. | |
void | v_error (const char *fmt, va_list va) |
Fehler mit Parameterliste. | |
void | f_error (const char *fmt,...) |
Fehler mit Parametern. | |
void | s_error (const char *msg) |
Fehler mit einfachem Text. | |
Remember-Mechanismus | |
Wer noch zu Zeiten des seligen Amiga programmiert hat, kennt wohl auch noch den struct Remember des AmigaOS 2.x.Diese Buchführung über angeforderte Ressourcen ist davon inspiriert.Sie ist allerdings auch flexibler. Zu den Resourcen können beliebige Freigabefunktionen hinterlegt werden, so dass alles mit einer derartigen Liste aufgeräumt werden kann. Und im Gegensatz zum Amiga hantiere ich nicht mit einer verketteten Liste, sondern mit einem dynamisch wachsenden Array, was den Code in den meisten Fällen ein bisschen effizienter macht. | |
#define | r_remember_new(RMB) _MAKEREMEMBER_0 ((RMB), remember_t, remember_new, remember_dispose) |
Neue Remember-Liste erzeugen, mit Remember-Mechanismus. | |
#define | r_malloc(RMB, SZ) _MAKEREMEMBER_1 ((RMB), void *, emalloc, free, (SZ)) |
Speicher mit Remember-Mechanismus anfordern. | |
#define | r_calloc(RMB, SZ) _MAKEREMEMBER_1 ((RMB), void *, ecalloc, free, (SZ)) |
Gelöschten Speicher mit Remember-Mechanismus anfordern. | |
#define | r_strdup(RMB, STR) _MAKEREMEMBER_1 ((RMB), char *, estrdup, free, (STR)) |
String mit Remember-Mechanismus duplizieren. | |
#define | r_fopen(RMB, FNAM, FMOD) _MAKEREMEMBER_2 ((RMB), FILE *, efopen, fclose, (FNAM), (FMOD)) |
Datei mit Remember-Mechanismus öffnen. | |
typedef void(* | freefunc_t )(void *res) |
Typ einer Freigabefunktion für Ressourcen. | |
typedef remember_stack_t * | remember_t |
Handlicher Typ für einen Zeiger auf eine Remember-Liste. | |
remember_t | remember_new (void) |
Neue Remember-Liste erzeugen. | |
void | remember_free (remember_t rmb) |
Einträge in Remember-Liste freigeben. | |
void | remember_dispose (remember_t rmb) |
Gesamte Remember-Liste freigeben. | |
void * | remember_push (remember_t rmb, freefunc_t free_f, void *res) |
Eintrag zur Remember-Liste hinzufügen. | |
void | r_call (remember_t rmb, void(*callback)(void)) |
Funktionsaufruf in Remember-Liste eintragen. |
Verschiedene allgemein nützliche Helferlein, die ich in viele meiner Projekte verbaue.
Definiert in Datei eshelper.h.