home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2007 September / maximum-cd-2007-09.iso / Assets / data / AssaultCube_v0.93.exe / source / enet / callbacks.c < prev    next >
Encoding:
C/C++ Source or Header  |  2006-11-07  |  966 b   |  55 lines

  1. /** 
  2.  @file callbacks.c
  3.  @brief ENet callback functions
  4. */
  5. #define ENET_BUILDING_LIB 1
  6. #include "enet/enet.h"
  7.  
  8.  
  9. static ENetCallbacks callbacks = { malloc, free, rand };
  10.  
  11. int
  12. enet_initialize_with_callbacks (ENetVersion version, const ENetCallbacks * inits)
  13. {
  14.    if (version != ENET_VERSION)
  15.      return -1;
  16.  
  17.    if (inits -> malloc != NULL || inits -> free != NULL)
  18.    {
  19.       if (inits -> malloc == NULL || inits -> free == NULL)
  20.         return -1;
  21.  
  22.       callbacks.malloc = inits -> malloc;
  23.       callbacks.free = inits -> free;
  24.    }
  25.       
  26.    if (inits -> rand != NULL)
  27.      callbacks.rand = inits -> rand;
  28.  
  29.    return enet_initialize ();
  30. }
  31.            
  32. void *
  33. enet_malloc (size_t size)
  34. {
  35.    void * memory = callbacks.malloc (size);
  36.  
  37.    if (memory == NULL)
  38.      abort ();
  39.  
  40.    return memory;
  41. }
  42.  
  43. void
  44. enet_free (void * memory)
  45. {
  46.    callbacks.free (memory);
  47. }
  48.  
  49. int
  50. enet_rand (void)
  51. {
  52.    return callbacks.rand ();
  53. }
  54.  
  55.