/* +----------------------------------------------------------------------+ | 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: Vadim Savchuk | | Dmitry Lakhtyuk | +----------------------------------------------------------------------+ */ #ifdef HAVE_CONFIG_H #include #endif #if __cplusplus >= 201703L #include #include #endif extern "C" { #include "php_intl.h" } #include "collator_class.h" #include "intl_convert.h" #include /* {{{ Gets the locale name of the collator. */ U_CFUNC PHP_FUNCTION( collator_get_locale ) { zend_long type = 0; char* locale_name = nullptr; COLLATOR_METHOD_INIT_VARS /* Parse parameters. */ if( zend_parse_method_parameters( ZEND_NUM_ARGS(), getThis(), "Ol", &object, Collator_ce_ptr, &type ) == FAILURE ) { RETURN_THROWS(); } /* Fetch the object. */ COLLATOR_METHOD_FETCH_OBJECT; if (!co || !co->ucoll) { intl_error_set_code( nullptr, COLLATOR_ERROR_CODE( co ) ); intl_errors_set_custom_msg( COLLATOR_ERROR_P( co ), "Object not initialized"); zend_throw_error(nullptr, "Object not initialized"); RETURN_THROWS(); } /* Get locale by specified type. */ locale_name = (char*) ucol_getLocaleByType( co->ucoll, static_cast(type), COLLATOR_ERROR_CODE_P( co ) ); COLLATOR_CHECK_STATUS( co, "Error getting locale by type" ); /* Return it. */ RETVAL_STRINGL( locale_name, strlen(locale_name) ); } /* }}} */