home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / dtx9302 / ctrick / globvars.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-03-04  |  3.7 KB  |  68 lines

  1. /* ****************************************************** */
  2. /*                      GLOBVARS.C                        */
  3. /*             (c) 1993 Holger Suhr & DMV                 */
  4. /* ****************************************************** */
  5.  
  6. /******************************************************** */
  7. /*  Das Includefile globals.h enthaelt alle globalen      */
  8. /*  Variablen, die Source-uebergreifend in einem Library- */
  9. /*  paket verfuegbar sein sollen. Das Include-File ist so */
  10. /*  angelegt, dass es fuer die Public- wie fuer die       */
  11. /*  Extern-Anwendung verwendet werden kann.               */
  12. /*  Um fuer alle Anwendungs- und Libraryfunktionen von    */
  13. /*  Anfang an klar zu definieren, wer die Public-Angabe   */
  14. /*  enthaelt, wird dieses C-File compiliert, dass         */
  15. /*  ausschliesslich diesen Zweck erfuellt. Ausserdem kann */
  16. /*  dann nicht von Fall zu Fall vergessen werden, dass    */
  17. /*  #define LOCAL an entsprechender Stelle einzutragen.   */
  18. /*  Ausserdem gibt es nur eine zentrale Stelle, die       */
  19. /*  globale Variablen dieser Art aufzunehmen hat.         */
  20. /* ****************************************************** */
  21.  
  22. /* ****************************************************** */
  23. /*  Diese Idee kann noch weiter ausgebaut werden, mit     */
  24. /*  dem Ziel, nicht immer alle/viele Teile einer Library  */
  25. /*  zu linken, wenn nur ein kleiner Teil benoetigt wird,  */
  26. /*  nur weil die Libraryfunktionen sich alle unter-       */
  27. /*  einander aufrufen.                                    */
  28. /*                                                        */
  29. /*  Haben Sie z.B. ein Paket von 4 Funktionen, die einen  */
  30. /*  bestimmten Zweck erfuellen, die jedoch nicht zwangs-  */
  31. /*  laeufig verwendet werden muessen, oder durch andere   */
  32. /*  Standardfunktionen umgangen werden koennen, dann      */
  33. /*  bietet sich folgende Moeglichkeit an:                 */
  34. /*                                                        */
  35. /*  In globals.h werden nach gleichem Schema, wie bei den */
  36. /*  anderen globalen Variablen, 4 Funktionspointer        */
  37. /*  deklariert, die entweder mit NULL oder mit einer      */
  38. /*  Standardfunktion vorbelegt werden.                    */
  39. /*                                                        */
  40. /*  Solange das Paket mit den 4 Funktionen noch nicht     */
  41. /*  ausdruecklich initialisiert wurde (snd_init() z.B.)   */
  42. /*  ist die entsprechende globale Variable                */
  43. /*  (soundinstalled z.B.) noch 0, und die Pointer zeigen  */
  44. /*  auf die Alternativfunktionen.                         */
  45. /*  Sie koennen also die Installation des Paketes         */
  46. /*  testen, ohne dadurch zwangslaeufig das Funktions-     */
  47. /*  paket allein durch den Test schon zu linken. (weil    */
  48. /*  soundinstalled in globals.c liegt und nicht im        */
  49. /*  source-file der soundfunktionen).                     */
  50. /*                                                        */
  51. /*  Als konkretes Beispiel sei hier ein Paket von         */
  52. /*  Sound-Funktionen angefuehrt. Ist dies Paket nicht     */
  53. /*  installiert, kann als Alternative ein putchar(7)      */
  54. /*  einen Beep verursachen. Wird jedoch vom eigentlichen  */
  55. /*  Anwendungsprogramm ein snd_init() ausgefuehrt, dann   */
  56. /*  ueberschreibt snd_init den Funktionspointer           */
  57. /*  (Snd_beep()) in globals.h, der mit putchar(7)         */
  58. /*  vorbelegt war durch die Funktion snd_beep(), die      */
  59. /*  dann einen eleganten 3-Ton-Beep aus der Sound-        */
  60. /*  Verwaltung erzeugt.                                   */
  61. /* ****************************************************** */
  62. #define LOCAL
  63. #include "globals.h"
  64. /* ****************************************************** */
  65. /*                 Ende von GLOBVARS.C                    */
  66.  
  67.  
  68.