zend_multibyte.h 5.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. /*
  2. +----------------------------------------------------------------------+
  3. | Zend Engine |
  4. +----------------------------------------------------------------------+
  5. | Copyright (c) 1998-2016 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 |
  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: Masaki Fujimoto <fujimoto@php.net> |
  16. | Rui Hirokawa <hirokawa@php.net> |
  17. +----------------------------------------------------------------------+
  18. */
  19. /* $Id$ */
  20. #ifndef ZEND_MULTIBYTE_H
  21. #define ZEND_MULTIBYTE_H
  22. typedef struct _zend_encoding zend_encoding;
  23. typedef size_t (*zend_encoding_filter)(unsigned char **str, size_t *str_length, const unsigned char *buf, size_t length TSRMLS_DC);
  24. typedef const zend_encoding* (*zend_encoding_fetcher)(const char *encoding_name TSRMLS_DC);
  25. typedef const char* (*zend_encoding_name_getter)(const zend_encoding *encoding);
  26. typedef int (*zend_encoding_lexer_compatibility_checker)(const zend_encoding *encoding);
  27. typedef const zend_encoding *(*zend_encoding_detector)(const unsigned char *string, size_t length, const zend_encoding **list, size_t list_size TSRMLS_DC);
  28. typedef size_t (*zend_encoding_converter)(unsigned char **to, size_t *to_length, const unsigned char *from, size_t from_length, const zend_encoding *encoding_to, const zend_encoding *encoding_from TSRMLS_DC);
  29. typedef int (*zend_encoding_list_parser)(const char *encoding_list, size_t encoding_list_len, const zend_encoding ***return_list, size_t *return_size, int persistent TSRMLS_DC);
  30. typedef const zend_encoding *(*zend_encoding_internal_encoding_getter)(TSRMLS_D);
  31. typedef int (*zend_encoding_internal_encoding_setter)(const zend_encoding *encoding TSRMLS_DC);
  32. typedef struct _zend_multibyte_functions {
  33. const char *provider_name;
  34. zend_encoding_fetcher encoding_fetcher;
  35. zend_encoding_name_getter encoding_name_getter;
  36. zend_encoding_lexer_compatibility_checker lexer_compatibility_checker;
  37. zend_encoding_detector encoding_detector;
  38. zend_encoding_converter encoding_converter;
  39. zend_encoding_list_parser encoding_list_parser;
  40. zend_encoding_internal_encoding_getter internal_encoding_getter;
  41. zend_encoding_internal_encoding_setter internal_encoding_setter;
  42. } zend_multibyte_functions;
  43. /*
  44. * zend multibyte APIs
  45. */
  46. BEGIN_EXTERN_C()
  47. ZEND_API extern const zend_encoding *zend_multibyte_encoding_utf32be;
  48. ZEND_API extern const zend_encoding *zend_multibyte_encoding_utf32le;
  49. ZEND_API extern const zend_encoding *zend_multibyte_encoding_utf16be;
  50. ZEND_API extern const zend_encoding *zend_multibyte_encoding_utf16le;
  51. ZEND_API extern const zend_encoding *zend_multibyte_encoding_utf8;
  52. /* multibyte utility functions */
  53. ZEND_API int zend_multibyte_set_functions(const zend_multibyte_functions *functions TSRMLS_DC);
  54. ZEND_API const zend_multibyte_functions *zend_multibyte_get_functions(TSRMLS_D);
  55. ZEND_API const zend_encoding *zend_multibyte_fetch_encoding(const char *name TSRMLS_DC);
  56. ZEND_API const char *zend_multibyte_get_encoding_name(const zend_encoding *encoding);
  57. ZEND_API int zend_multibyte_check_lexer_compatibility(const zend_encoding *encoding);
  58. ZEND_API const zend_encoding *zend_multibyte_encoding_detector(const unsigned char *string, size_t length, const zend_encoding **list, size_t list_size TSRMLS_DC);
  59. ZEND_API size_t zend_multibyte_encoding_converter(unsigned char **to, size_t *to_length, const unsigned char *from, size_t from_length, const zend_encoding *encoding_to, const zend_encoding *encoding_from TSRMLS_DC);
  60. ZEND_API int zend_multibyte_parse_encoding_list(const char *encoding_list, size_t encoding_list_len, const zend_encoding ***return_list, size_t *return_size, int persistent TSRMLS_DC);
  61. ZEND_API const zend_encoding *zend_multibyte_get_internal_encoding(TSRMLS_D);
  62. ZEND_API const zend_encoding *zend_multibyte_get_script_encoding(TSRMLS_D);
  63. ZEND_API int zend_multibyte_set_script_encoding(const zend_encoding **encoding_list, size_t encoding_list_size TSRMLS_DC);
  64. ZEND_API int zend_multibyte_set_internal_encoding(const zend_encoding *encoding TSRMLS_DC);
  65. ZEND_API int zend_multibyte_set_script_encoding_by_string(const char *new_value, size_t new_value_length TSRMLS_DC);
  66. END_EXTERN_C()
  67. #endif /* ZEND_MULTIBYTE_H */
  68. /*
  69. * Local variables:
  70. * tab-width: 4
  71. * c-basic-offset: 4
  72. * End:
  73. * vim600: sw=4 ts=4 tw=78
  74. * vim<600: sw=4 ts=4 tw=78
  75. */