php_random.h 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /*
  2. +----------------------------------------------------------------------+
  3. | PHP Version 7 |
  4. +----------------------------------------------------------------------+
  5. | Copyright (c) 1997-2018 The PHP Group |
  6. +----------------------------------------------------------------------+
  7. | This source file is subject to version 3.01 of the PHP license, |
  8. | that is bundled with this package in the file LICENSE, and is |
  9. | available through the world-wide-web at the following url: |
  10. | http://www.php.net/license/3_01.txt |
  11. | If you did not receive a copy of the PHP license and are unable to |
  12. | obtain it through the world-wide-web, please send a note to |
  13. | license@php.net so we can mail you a copy immediately. |
  14. +----------------------------------------------------------------------+
  15. | Authors: Sammy Kaye Powers <me@sammyk.me> |
  16. +----------------------------------------------------------------------+
  17. */
  18. #ifndef PHP_RANDOM_H
  19. #define PHP_RANDOM_H
  20. BEGIN_EXTERN_C()
  21. PHP_FUNCTION(random_bytes);
  22. PHP_FUNCTION(random_int);
  23. PHP_MINIT_FUNCTION(random);
  24. PHP_MSHUTDOWN_FUNCTION(random);
  25. typedef struct {
  26. int fd;
  27. } php_random_globals;
  28. #define php_random_bytes_throw(b, s) php_random_bytes((b), (s), 1)
  29. #define php_random_bytes_silent(b, s) php_random_bytes((b), (s), 0)
  30. #define php_random_int_throw(min, max, result) \
  31. php_random_int((min), (max), (result), 1)
  32. #define php_random_int_silent(min, max, result) \
  33. php_random_int((min), (max), (result), 0)
  34. PHPAPI int php_random_bytes(void *bytes, size_t size, zend_bool should_throw);
  35. PHPAPI int php_random_int(zend_long min, zend_long max, zend_long *result, zend_bool should_throw);
  36. #ifdef ZTS
  37. # define RANDOM_G(v) ZEND_TSRMG(random_globals_id, php_random_globals *, v)
  38. extern PHPAPI int random_globals_id;
  39. #else
  40. # define RANDOM_G(v) random_globals.v
  41. extern PHPAPI php_random_globals random_globals;
  42. #endif
  43. END_EXTERN_C()
  44. #endif
  45. /*
  46. * Local variables:
  47. * tab-width: 4
  48. * c-basic-offset: 4
  49. * End:
  50. */