|
Hauptseite - Welches System? - Hardware - Software - Emulatoren - |
Internet MausNet Programmieren Verweise Über |
Die Implementierung zeigt auch, wie ein Modul automatisch initialisiert werden kann. Dazu wird einfach der Zeiger auf den Cookie Jar mit einem entsprechenden Wert initialisiert. Dies ist NULL für einen ungültigen Zeiger. Bei jedem Zugriff kann nun geprüft werden, ob dieser Zeiger noch ein ungültiger Zeiger ist und die Initialisierung aufgerufen werden.
Weiterhin nutzt diese Modul auch Funktionspointer für das Durchwandern des Cookie Jars. Damit kann eine Funktion, die etwas mit einem Cookie tut, an anderer Stelle programmiert werden. Dieses Modul weiß, wie man den Cookie Jar durchläuft und ruft für jeden Cookie die Funktion auf, die etwas mit einem einzelnen Cookie tut.
#ifdef __TURBOC__ #include <tos.h> #else #ifdef __GNUC__ #include <osbind.h> #else #include <tosbind.h> #endif #endif #include <stddef.h> #include "cookie.h" #include "cjar.h" #define _p_cookies (void *)0x5a0l CookieEntry *CookieJar = NULL; int CjarInit(void) { long OldStack; OldStack = Super(0L); CookieJar = *((CookieEntry**)_p_cookies); Super((void *)OldStack); return (CookieJar != NULL); } CookieEntry *CjarSearchL(long Name) { return NULL; } CookieEntry *CjarSearchS(char *Name) { return NULL; } void CjarTraverse(CookieAction ActionFkt) { CookieEntry *AktCookie; if (CookieJar != NULL) CjarInit(); if (CookieJar != NULL) { AktCookie = CookieJar; while (!CookieIsNullCookie(AktCookie)) { (*ActionFkt)(AktCookie); AktCookie++; } } }
English version not yet available. |