SDLGameEngine

Macros

A collection of useful macros. More...

Defines

#define sgeLock(surface)
 Lock a surface.
#define sgeUnlock(surface)
 Unlock a surface.
#define sgeBailOut(format, args...)
 Hard exit.
#define sgeMalloc(target, type, amount)
 Allocate ram, fill with 0.
#define sgeMallocNoInit(target, type, amount)
 Allocate ram, uninitialized.
#define sgeRealloc(target, type, amount)
 Resize allocated ram.
#define sgeNew(target, type)   sgeMalloc(target,type,1);
 Create one object (aka struct)
#define sgeFree(target)
 Free the object.
#define sgeRandom(from, range)   (from + (int) ((float)(range+1) * (rand() / (RAND_MAX + (float)from))))
 Get a random integer.
#define sgeRandomFloat(from, range)   (float) ((float)from + ((float)(range+1) * (rand() / (RAND_MAX + (float)from))))
 Get a random float.
#define sgeByteSwap16(val)   (val)
 swap byteorder on big endian, otherwise do nothing
#define sgeByteSwap32(val)   (val)
 swap byteorder on big endian, otherwise do nothing
#define sgeRound(val)   round(val)
 round a integer value, if there is no c lib function available
#define MAX(x, y)   ((x) > (y) ? (x) : (y))
 define MAX if not already there
#define MIN(x, y)   ((x) < (y) ? (x) : (y))
 define MIN if not already there
#define MINMAX(value, lower, upper)   MIN(MAX((value), (lower)), (upper))
 keep a number in a certain range

Detailed Description

A collection of useful macros.

Macros for common tasks such as memory management and cross platform C incompatibilities.


Define Documentation

#define MAX (   x,
 
)    ((x) > (y) ? (x) : (y))

define MAX if not already there

Parameters:
xa number
ythe max limit of the number
Returns:
x if it is in range of y, otherwise y

Definition at line 349 of file sge.h.

#define MIN (   x,
 
)    ((x) < (y) ? (x) : (y))

define MIN if not already there

Parameters:
xa number
ythe min limit of the number
Returns:
x if it is in range of y, otherwise y

Definition at line 359 of file sge.h.

#define MINMAX (   value,
  lower,
  upper 
)    MIN(MAX((value), (lower)), (upper))

keep a number in a certain range

Parameters:
valuethe number to keep in range
lowerthe lower end of the range
upperthe upper end of the range
Returns:
a number ensured to be in range of lower and upper borders

Definition at line 369 of file sge.h.

#define sgeBailOut (   format,
  args... 
)
Value:
do {\
                fprintf(stderr,(format),args); \
                exit(-1); \
        } while (0)

Hard exit.

Parameters:
formatprintf format string
argsarguments for the format string

Exit out of the application without any cleanup.

You should use this only if there is a unresolvable situation

Definition at line 204 of file sge.h.

#define sgeByteSwap16 (   val)    (val)

swap byteorder on big endian, otherwise do nothing

Parameters:
vala 16bit number
Returns:
a 16bit number in a unique endianess

Use this for example if you write 16 or 32 bit numbers into a binary file to ensure it reads the same value on little and big endian

Definition at line 314 of file sge.h.

#define sgeByteSwap32 (   val)    (val)

swap byteorder on big endian, otherwise do nothing

Parameters:
vala 32bit number (depending on prefix)
Returns:
a 32bit number in a unique endianess

Use this for example if you write 16 or 32 bit numbers into a binary file to ensure it reads the same value on little and big endian

Definition at line 324 of file sge.h.

#define sgeFree (   target)
Value:
do {\
                free(target);\
                target=NULL;\
        } while(0)

Free the object.

Parameters:
targetthe pointer to the struct to free

Definition at line 281 of file sge.h.

#define sgeLock (   surface)
Value:
do {\
                if (SDL_MUSTLOCK(surface)) SDL_LockSurface(surface);\
        } while (0)

Lock a surface.

Parameters:
surfacesurface to lock

Lock a surface for drawing operations.

You should always use this before operating on pixel level on a surface. On most platforms your code will work without locking surfaces, but there are platforms where you will experience crashes.

Definition at line 178 of file sge.h.

#define sgeMalloc (   target,
  type,
  amount 
)
Value:
do {\
                (target)=(type *)malloc((amount+1)*sizeof(type));\
                if ((target)==NULL) {\
                        sgeBailOut("could not allocate %d bytes of ram\n", (int)((amount)*sizeof(type)));\
                }\
                memset(target,0,((amount)*sizeof(type)));\
        } while (0)

Allocate ram, fill with 0.

Parameters:
targetthe pointer to the struct to alloc
typethe struct type to alloc
amountthe number of sructs to alloc
Returns:
a pointer to the allocated and zero filled ram

Allocates ram for a structure and fills it with zeros.

MyStruct *obj;

sgeMalloc(obj, MyStruct, 1);

Definition at line 223 of file sge.h.

#define sgeMallocNoInit (   target,
  type,
  amount 
)
Value:
do {\
                (target)=(type *)malloc((amount+1)*sizeof(type));\
                if ((target)==NULL) {\
                        sgeBailOut("could not allocate %d bytes of ram\n", (int)((amount)*sizeof(type)));\
                }\
        } while (0)

Allocate ram, uninitialized.

Parameters:
targetthe pointer to the struct to alloc
typethe struct type to alloc
amountthe number of sructs to alloc
Returns:
a pointer to the allocated ram

Allocates ram for a structure

MyStruct *obj;

sgeMalloc(obj, MyStruct, 1);

Definition at line 245 of file sge.h.

#define sgeNew (   target,
  type 
)    sgeMalloc(target,type,1);

Create one object (aka struct)

Parameters:
targetthe pointer to the struct to alloc
typethe struct type to alloc
Returns:
a pointer with allocated and zero filled ram

Definition at line 274 of file sge.h.

#define sgeRandom (   from,
  range 
)    (from + (int) ((float)(range+1) * (rand() / (RAND_MAX + (float)from))))

Get a random integer.

Parameters:
fromthe base for the random
rangethe range the random will be around from +/-
Returns:
a random integer

Definition at line 293 of file sge.h.

#define sgeRandomFloat (   from,
  range 
)    (float) ((float)from + ((float)(range+1) * (rand() / (RAND_MAX + (float)from))))

Get a random float.

Parameters:
fromthe base for the random
rangethe range the random will be around from +/-
Returns:
a random float

Definition at line 302 of file sge.h.

#define sgeRealloc (   target,
  type,
  amount 
)
Value:
do {\
                (target)=realloc((target),sizeof(type)*(amount+1));\
                if (target==NULL) {\
                        sgeBailOut("could not allocate %d bytes of ram\n", (int)((amount)*sizeof(type)));\
                }\
        } while (0)

Resize allocated ram.

Parameters:
targetthe pointer to the struct to alloc
typethe struct type to alloc
amountthe number of sructs to alloc
Returns:
a pointer to the increased ram

Definition at line 260 of file sge.h.

#define sgeRound (   val)    round(val)

round a integer value, if there is no c lib function available

val a float value

Returns:
a int value rounded

Definition at line 339 of file sge.h.

#define sgeUnlock (   surface)
Value:
do {\
                if (SDL_MUSTLOCK(surface)) SDL_UnlockSurface(surface);\
        } while (0)

Unlock a surface.

Parameters:
surfacesurface to unlock

Unlock a surface, must be called after processing a locked surface.

Definition at line 189 of file sge.h.

 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines