zend_strtod.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /*
  2. +----------------------------------------------------------------------+
  3. | Zend Engine |
  4. +----------------------------------------------------------------------+
  5. | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) |
  6. +----------------------------------------------------------------------+
  7. | This source file is subject to version 2.00 of the Zend 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.zend.com/license/2_00.txt. |
  11. | If you did not receive a copy of the Zend license and are unable to |
  12. | obtain it through the world-wide-web, please send a note to |
  13. | license@zend.com so we can mail you a copy immediately. |
  14. +----------------------------------------------------------------------+
  15. | Authors: Derick Rethans <derick@php.net> |
  16. +----------------------------------------------------------------------+
  17. */
  18. /* This is a header file for the strtod implementation by David M. Gay which
  19. * can be found in zend_strtod.c */
  20. #ifndef ZEND_STRTOD_H
  21. #define ZEND_STRTOD_H
  22. #include <zend.h>
  23. BEGIN_EXTERN_C()
  24. ZEND_API void zend_freedtoa(char *s);
  25. ZEND_API char *zend_dtoa(double _d, int mode, int ndigits, int *decpt, bool *sign, char **rve);
  26. ZEND_API char *zend_gcvt(double value, int ndigit, char dec_point, char exponent, char *buf);
  27. ZEND_API double zend_strtod(const char *s00, const char **se);
  28. ZEND_API double zend_hex_strtod(const char *str, const char **endptr);
  29. ZEND_API double zend_oct_strtod(const char *str, const char **endptr);
  30. ZEND_API double zend_bin_strtod(const char *str, const char **endptr);
  31. ZEND_API int zend_startup_strtod(void);
  32. ZEND_API int zend_shutdown_strtod(void);
  33. END_EXTERN_C()
  34. /* double limits */
  35. #include <float.h>
  36. #if defined(DBL_MANT_DIG) && defined(DBL_MIN_EXP)
  37. #define ZEND_DOUBLE_MAX_LENGTH (3 + DBL_MANT_DIG - DBL_MIN_EXP)
  38. #else
  39. #define ZEND_DOUBLE_MAX_LENGTH 1080
  40. #endif
  41. #endif