Utils.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. //
  2. // Utils.h
  3. // BulletTest
  4. //
  5. // Copyright (c) 2011 Apple Inc.
  6. //
  7. #ifndef BulletTest_Utils_h
  8. #define BulletTest_Utils_h
  9. #include "btIntDefines.h"
  10. #include <stddef.h>
  11. #include <stdio.h>
  12. #ifdef _WIN32
  13. #define LARGE_FLOAT17 (1.f * powf(2,17))
  14. #define RANDF_16 (random_number32() * powf(2,-16))
  15. #define RANDF_01 ( random_number32() * powf(2,-32) )
  16. #define RANDF ( random_number32() * powf(2,-8) )
  17. #define RANDF_m1p1 (2.0f*( random_number32() * powf(2,-32)-1.0f))
  18. #else
  19. #define LARGE_FLOAT17 (0x1.0p17f)
  20. #define RANDF_16 (random_number32() * 0x1.0p-16f)
  21. #define RANDF_01 ( random_number32() * 0x1.0p-32f )
  22. #define RANDF ( random_number32() * 0x1.0p-8f )
  23. #define RANDF_m1p1 (2.0f*( random_number32() * 0x1.0p-32f )-1.0f)
  24. #endif//_WIN32
  25. #ifdef __cplusplus
  26. extern "C" {
  27. #endif
  28. /*********************
  29. * Timing *
  30. *********************/
  31. extern int gReportNanoseconds;
  32. uint64_t ReadTicks( void );
  33. double TicksToCycles( uint64_t delta ); // Performance data should be reported in cycles most of the time.
  34. double TicksToSeconds( uint64_t delta );
  35. /*********************
  36. * Guard Heap *
  37. *********************/
  38. // return buffer containing count objects of size size, with guard pages in betweeen.
  39. // The stride between one object and the next is given by objectStride.
  40. // objectStride may be NULL. Objects so created are freed with GuardFree
  41. void *GuardCalloc( size_t count, size_t size, size_t *objectStride );
  42. void GuardFree( void * );
  43. // mark the contents of a guard buffer read-only or write-only. Return 0 on success.
  44. int GuardMarkReadOnly( void *);
  45. int GuardMarkWriteOnly( void *);
  46. int GuardMarkReadWrite( void *);
  47. /*********************
  48. * Printing *
  49. *********************/
  50. #define vlog( ... ) printf( __VA_ARGS__ )
  51. uint32_t random_number32(void);
  52. uint64_t random_number64(void);
  53. #ifdef __cplusplus
  54. }
  55. #endif
  56. #endif