/* +----------------------------------------------------------------------+ | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ | This source file is subject to the Modified BSD License that is | | bundled with this package in the file LICENSE, and is available | | through the World Wide Web at . | | | | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Rui Hirokawa | | Stig Bakken | +----------------------------------------------------------------------+ */ #ifndef PHP_ICONV_H #define PHP_ICONV_H #ifdef PHP_WIN32 # ifdef PHP_ICONV_EXPORTS # define PHP_ICONV_API __declspec(dllexport) # else # define PHP_ICONV_API __declspec(dllimport) # endif #elif defined(__GNUC__) && __GNUC__ >= 4 # define PHP_ICONV_API __attribute__ ((visibility("default"))) #else # define PHP_ICONV_API #endif #include "php_version.h" #define PHP_ICONV_VERSION PHP_VERSION #ifdef HAVE_ICONV extern zend_module_entry iconv_module_entry; #define iconv_module_ptr &iconv_module_entry PHP_MINIT_FUNCTION(miconv); PHP_MSHUTDOWN_FUNCTION(miconv); PHP_MINFO_FUNCTION(miconv); ZEND_BEGIN_MODULE_GLOBALS(iconv) char *input_encoding; char *internal_encoding; char *output_encoding; ZEND_END_MODULE_GLOBALS(iconv) #define ICONVG(v) ZEND_MODULE_GLOBALS_ACCESSOR(iconv, v) #if defined(ZTS) && defined(COMPILE_DL_ICONV) ZEND_TSRMLS_CACHE_EXTERN() #endif #ifdef HAVE_IBM_ICONV # define ICONV_ASCII_ENCODING "IBM-850" # define ICONV_UCS4_ENCODING "UCS-4" #else # define ICONV_ASCII_ENCODING "ASCII" # define ICONV_UCS4_ENCODING "UCS-4LE" #endif #ifndef ICONV_CSNMAXLEN #define ICONV_CSNMAXLEN 64 #endif /* {{{ typedef enum php_iconv_err_t */ typedef enum _php_iconv_err_t { PHP_ICONV_ERR_SUCCESS = 0, PHP_ICONV_ERR_CONVERTER = 1, PHP_ICONV_ERR_WRONG_CHARSET = 2, PHP_ICONV_ERR_TOO_BIG = 3, PHP_ICONV_ERR_ILLEGAL_SEQ = 4, PHP_ICONV_ERR_ILLEGAL_CHAR = 5, PHP_ICONV_ERR_UNKNOWN = 6, PHP_ICONV_ERR_MALFORMED = 7, PHP_ICONV_ERR_ALLOC = 8, PHP_ICONV_ERR_OUT_BY_BOUNDS = 9 } php_iconv_err_t; /* }}} */ PHP_ICONV_API php_iconv_err_t php_iconv_string(const char * in_p, size_t in_len, zend_string **out, const char *out_charset, const char *in_charset); #else #define iconv_module_ptr NULL #endif /* HAVE_ICONV */ #define phpext_iconv_ptr iconv_module_ptr #endif /* PHP_ICONV_H */