home *** CD-ROM | disk | FTP | other *** search
/ The Fred Fish Collection 1.5 / ffcollection-1-5-1992-11.iso / ff_progs / prog-asm / talincod.lha / talincode.lha / macros.h < prev    next >
Encoding:
C/C++ Source or Header  |  1992-04-25  |  2.2 KB  |  58 lines

  1. /* general macros for C programming */
  2.  
  3. #define MAX(a,b)      ((a)>(b)?(a):(b))
  4. #define MIN(a,b)          ((a)<(b)?(a):(b))
  5. #define ABS(x)              ((x<0)?(-(x)):(x))
  6. #define CLAMP(a,b,c)     ((b)<(a)?(a): ((b)>(c)?(c):(b)) )
  7. #define MAKE_EVEN(n)     (((n) + 1) & ~1L)
  8. #define BETWEEN(a,b,c)    (a <= b && b < c)
  9.  
  10. #define NEXT_ADDRESS(ptr) (void *)(ptr + 1)
  11. #define    FIELD_OFFSET(type,field) (LONG)&(((type *)0)->field)
  12.  
  13. #ifndef offsetof
  14. #define offsetof(type,memb) ((unsigned long)&((type *)0)->memb)
  15. #endif
  16.  
  17. #ifndef elementsof
  18. #define elementsof(x)    (sizeof x / sizeof x[0])
  19. #endif
  20.  
  21. #define unless(x)        if (!(x))
  22.  
  23. #define LEAVE            goto exitit
  24.  
  25. #define RelMove(rp,dx,dy)    Move((rp),(rp)->cp_x + dx, (rp)->cp_y + dy)
  26. #define RelDraw(rp,dx,dy)    Draw((rp),(rp)->cp_x + dx, (rp)->cp_y + dy)
  27. #define HLine(rp,x)            Draw((rp),x,               (rp)->cp_y)
  28. #define VLine(rp,y)            Draw((rp),(rp)->cp_x,      y)
  29. #define RelHLine(rp,dx)        Draw((rp),(rp)->cp_x + dx, (rp)->cp_y)
  30. #define RelVLine(rp,dy)        Draw((rp),(rp)->cp_x,      (rp)->cp_y + dy)
  31.  
  32. /* ============================== unused stuff ============================ */
  33.  
  34. #define    MakeStruct(x)          (x = AllocMem(sizeof *x,0) )
  35. #define    MakeClearStruct(x)     (x = AllocMem(sizeof *x,MEMF_CLEAR) )
  36. #define    MakeChip(x)            (x = AllocMem(sizeof *x,MEMF_CHIP) )
  37. #define    MakePublic(x)          (x = AllocMem(sizeof *x,MEMF_PUBLIC) )
  38. #define    MakeObject(x,f)        (x = AllocMem(sizeof *x,f) )
  39. #define    MakeStructArray(x,n)   (x = AllocMem(n * (sizeof *x),0) )
  40. #define    MakeChipArray(x,n)     (x = AllocMem(n * (sizeof *x),MEMF_CHIP) )
  41. #define    MakeClearArray(x,n)    (x = AllocMem(n * (sizeof *x),MEMF_CLEAR) )
  42. #define    MakePublicArray(x,n)   (x = AllocMem(n * (sizeof *x),MEMF_PUBLIC) )
  43.  
  44. #define    UnMakeStruct(x)        if (x) FreeMem(x,sizeof *x)
  45. #define    UnMakeStructArray(x,n) if (x) FreeMem(x,n * (sizeof *x))
  46. #define    DeleteStruct(x)        if (x) { FreeMem(x,sizeof *x); x = NULL; }
  47. #define    DeleteStructArray(x,n) if (x) { FreeMem(x,n * (sizeof *x)); x = NULL; }
  48.  
  49. #if 0
  50. #define new(type)        (MemAlloc(sizeof (type),MEMF_CLEAR))
  51. #define newp(p)            (p = MemAlloc(sizeof *p,MEMF_CLEAR))
  52. #define free(p)         { MemFree(p); p=NULL; }
  53. #endif
  54.  
  55.     /* REM: No needed anymore with GadTools */
  56.  
  57. #define    STD_MENU_TEXT(h,string) { 0,1,JAM1,h,1,&topaz_9,(UBYTE *)string, NULL, }
  58.