Virtuelle Zockhalle 0.05 beta
Datenstrukturen | Funktionen | Variablen

eshelper.h-Dateireferenz

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_tremember_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.

Ausführliche Beschreibung

Verschiedene allgemein nützliche Helferlein, die ich in viele meiner Projekte verbaue.

Definiert in Datei eshelper.h.