home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 519b.lha / Experiment_IV / Source.LZH / Source / cleanup.h < prev    next >
C/C++ Source or Header  |  1991-06-09  |  2KB  |  63 lines

  1. /* cleanup.h */
  2. /*
  3.  *
  4.  * $Author: Espie $
  5.  * $Date: 91/04/24 02:40:48 $
  6.  * $Revision: 1.1 $
  7.  * $Log:        cleanup.h,v $
  8.  * Revision 1.1  91/04/24  02:40:48  Espie
  9.  * Initial revision
  10.  * 
  11.  *
  12.  */
  13.  
  14. #ifndef CUSTOM_CLEANUP_H
  15. #define CUSTOM_CLEANUP_H
  16.  
  17. #ifndef NIL
  18. #define NIL (void *)0
  19. #endif
  20.  
  21. typedef void *GENERIC;
  22. typedef long INTEGER;
  23. typedef struct clean *CLEAN;
  24. typedef void (*FUNC0)(void);
  25. typedef void (*FUNC1)(GENERIC);
  26. typedef void (*FUNC2)(GENERIC, INTEGER);
  27. typedef void (*FUNC3)(GENERIC, INTEGER, INTEGER);
  28.  
  29. #define ToClean0(f) ToClean0L(NIL, f)
  30. #define ToClean(f, o) ToCleanL(NIL, f, o)
  31. #define ToClean2(f, o, i) ToClean2L(NIL, f, o, i)
  32. #define ToClean3(f, o, i, j) ToClean3L(NIL, f, o, i, j)
  33. #define ToClean0(f) ToClean0L(NIL, f)
  34. #define AllocClean(f) AllocCleanL(NIL, f)
  35.  
  36. extern void ToClean0L(CLEAN stem, void (*f)(void));
  37. extern void ToCleanL(CLEAN stem, void (*f)(GENERIC), GENERIC o);
  38. extern void ToClean2L(CLEAN stem, void (*f)(GENERIC, INTEGER), 
  39.         GENERIC o, INTEGER i);
  40. extern void ToClean3L(CLEAN stem, void (*f)(GENERIC, INTEGER, INTEGER),
  41.         GENERIC o, INTEGER i1, INTEGER i2);
  42. extern CLEAN AllocCleanL(CLEAN base, void (*panic)(char *));
  43.  
  44. extern void CleanUp(CLEAN base);
  45. extern void SetUpCleanUp(void (*panic)(char *));
  46. extern void SafeCleanUp(CLEAN *base);
  47. extern CLEAN AllocPrivateClean(void (*panic)(char *));
  48.  
  49. extern void PanicL(CLEAN stem, char *message);
  50. #define Panic(message) PanicL(NIL, message)
  51.  
  52. /* should never be defined when compiling cleanup.c itself */
  53.  
  54. #ifdef USE_ANSI_AT_EXIT
  55. extern int ANSIatexit(void (*func)(void));
  56. #define atexit ANSIatexit
  57. #define onexit ANSIatexit
  58. #endif
  59.  
  60.  
  61.  
  62. #endif
  63.