home *** CD-ROM | disk | FTP | other *** search
- /* general macros for C programming */
-
- #define MAX(a,b) ((a)>(b)?(a):(b))
- #define MIN(a,b) ((a)<(b)?(a):(b))
- #define ABS(x) ((x<0)?(-(x)):(x))
- #define CLAMP(a,b,c) ((b)<(a)?(a): ((b)>(c)?(c):(b)) )
- #define MAKE_EVEN(n) (((n) + 1) & ~1L)
- #define BETWEEN(a,b,c) (a <= b && b < c)
-
- #define NEXT_ADDRESS(ptr) (void *)(ptr + 1)
- #define FIELD_OFFSET(type,field) (LONG)&(((type *)0)->field)
-
- #ifndef offsetof
- #define offsetof(type,memb) ((unsigned long)&((type *)0)->memb)
- #endif
-
- #ifndef elementsof
- #define elementsof(x) (sizeof x / sizeof x[0])
- #endif
-
- #define unless(x) if (!(x))
-
- #define LEAVE goto exitit
-
- #define RelMove(rp,dx,dy) Move((rp),(rp)->cp_x + dx, (rp)->cp_y + dy)
- #define RelDraw(rp,dx,dy) Draw((rp),(rp)->cp_x + dx, (rp)->cp_y + dy)
- #define HLine(rp,x) Draw((rp),x, (rp)->cp_y)
- #define VLine(rp,y) Draw((rp),(rp)->cp_x, y)
- #define RelHLine(rp,dx) Draw((rp),(rp)->cp_x + dx, (rp)->cp_y)
- #define RelVLine(rp,dy) Draw((rp),(rp)->cp_x, (rp)->cp_y + dy)
-
- /* ============================== unused stuff ============================ */
-
- #define MakeStruct(x) (x = AllocMem(sizeof *x,0) )
- #define MakeClearStruct(x) (x = AllocMem(sizeof *x,MEMF_CLEAR) )
- #define MakeChip(x) (x = AllocMem(sizeof *x,MEMF_CHIP) )
- #define MakePublic(x) (x = AllocMem(sizeof *x,MEMF_PUBLIC) )
- #define MakeObject(x,f) (x = AllocMem(sizeof *x,f) )
- #define MakeStructArray(x,n) (x = AllocMem(n * (sizeof *x),0) )
- #define MakeChipArray(x,n) (x = AllocMem(n * (sizeof *x),MEMF_CHIP) )
- #define MakeClearArray(x,n) (x = AllocMem(n * (sizeof *x),MEMF_CLEAR) )
- #define MakePublicArray(x,n) (x = AllocMem(n * (sizeof *x),MEMF_PUBLIC) )
-
- #define UnMakeStruct(x) if (x) FreeMem(x,sizeof *x)
- #define UnMakeStructArray(x,n) if (x) FreeMem(x,n * (sizeof *x))
- #define DeleteStruct(x) if (x) { FreeMem(x,sizeof *x); x = NULL; }
- #define DeleteStructArray(x,n) if (x) { FreeMem(x,n * (sizeof *x)); x = NULL; }
-
- #if 0
- #define new(type) (MemAlloc(sizeof (type),MEMF_CLEAR))
- #define newp(p) (p = MemAlloc(sizeof *p,MEMF_CLEAR))
- #define free(p) { MemFree(p); p=NULL; }
- #endif
-
- /* REM: No needed anymore with GadTools */
-
- #define STD_MENU_TEXT(h,string) { 0,1,JAM1,h,1,&topaz_9,(UBYTE *)string, NULL, }
-