home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / forut062.zip / ForUtil-0.62 / lib / memmacros.h < prev    next >
C/C++ Source or Header  |  1996-08-28  |  3KB  |  108 lines

  1. /*****
  2. * memmacros.h : iEdit memory allocation macros
  3. *
  4. * This file Version    $Revision: 1.6 $
  5. *
  6. * Creation date:    Wed Mar  6 22:15:20 GMT+0100 1996
  7. * Last modification:     $Date: 1996/08/27 19:20:45 $
  8. * By:            $Author: koen $
  9. * Current State:    $State: Exp $
  10. *
  11. * Author:        koen
  12. * (C)Copyright 1995 Ripley Software Development
  13. * All Rights Reserved
  14. *****/
  15. /*****
  16. * $Source: /usr/local/rcs/ForUtil/lib/RCS/memmacros.h,v $
  17. *****/
  18. /*****
  19. * ChangeLog 
  20. * $Log: memmacros.h,v $
  21. * Revision 1.6  1996/08/27 19:20:45  koen
  22. * msdos related changes
  23. *
  24. * Revision 1.5  1996/08/07 21:19:29  koen
  25. * Added the sysdeps header file
  26. *
  27. * Revision 1.4  1996/08/02 14:55:02  koen
  28. * Added an #include <unistd.h> when HAVE_RAISE isn't defined.
  29. *
  30. * Revision 1.3  1996/07/16 09:20:57  koen
  31. * added a define for raise if raise is not supported by the system
  32. *
  33. * Revision 1.2  1996/05/06 00:36:57  koen
  34. * Adapted for MSDOS
  35. *
  36. * Revision 1.1  1996/03/08 15:35:30  koen
  37. * Initial Revision
  38. *
  39. *****/
  40.  
  41. #ifndef _memmacros_h_
  42. #define _memmacros_h_
  43.  
  44. /* AIX requires this to be the first thing in the file */
  45. #ifdef __GNUC__
  46. # ifndef alloca
  47. # define alloca __builtin_alloca
  48. # endif /* !alloca */
  49. # else
  50. #  if HAVE_ALLOCA_H
  51. #   include <alloca.h>
  52. #   else
  53. #    ifdef _AIX
  54.  #pragma alloca
  55. #   else
  56. #    ifndef alloca
  57. #     ifndef __MSDOS__    /* gets defined in sysdeps.h */
  58. char *alloca();
  59. #     endif /* __MSDOS__ */
  60. #    endif /* !alloca */
  61. #   endif /* !_AIX */
  62. # endif /* !HAVE_ALLOCA_H */
  63. #endif /* !__GNUC__ */
  64.  
  65. #include <stdio.h>
  66. #include <signal.h>
  67. #include "sysdeps.h"
  68.  
  69. #ifndef HAVE_RAISE
  70. #include <unistd.h>        /* for getpid() */
  71. #define raise(SIG) kill(getpid(), SIG)
  72. #endif
  73.  
  74. #define checked_malloc(var,size,type) \
  75.     {if((var = (type*)MALLOC((size)*sizeof(type))) == NULL) \
  76.     { fprintf(stderr, "Internal error: malloc failed for %i bytes\n" \
  77.         "file: %s, line %i\n", (size)*sizeof(type), __FILE__ , \
  78.         __LINE__); \
  79.     raise(SIGUSR1); \
  80.     exit(7); } }
  81.  
  82. #define checked_calloc(var,size,type) \
  83.     {if((var = (type*)CALLOC((size), sizeof(type))) == NULL) \
  84.     { fprintf(stderr, "Internal error: calloc failed for %i bytes\n" \
  85.         "file: %s, line %i\n", (size)*sizeof(type), __FILE__ , \
  86.         __LINE__); \
  87.     raise(SIGUSR1); \
  88.     exit(7); } }
  89.  
  90. #define checked_realloc(var,size,type) \
  91.     {if((var = (type*)REALLOC((var), ((size)*sizeof(type)))) == NULL) \
  92.     { fprintf(stderr, "Internal error: realloc failed for %i bytes\n" \
  93.         "file: %s, line %i\n", ((size)*sizeof(type)), __FILE__ , \
  94.         __LINE__); \
  95.     raise(SIGUSR1); \
  96.     exit(7); } }
  97.  
  98. #define checked_alloca(var,size,type) \
  99.     {if((var = (type*)alloca((size)*sizeof(type))) == NULL) \
  100.     { fprintf(stderr, "Internal error: alloca failed for %i bytes\n" \
  101.         "file: %s, line %i\n", (size)*sizeof(type), __FILE__ , \
  102.         __LINE__); \
  103.     raise(SIGUSR1); \
  104.     exit(7); } }
  105.  
  106. /* Don't add anything after this endif! */
  107. #endif /* _memmacros_h_ */
  108.