#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "php_intl.h"
#include "collator_class.h"
#include "collator_convert.h"
#include "collator_attr.h"
#include <unicode/ustring.h>
PHP_FUNCTION( collator_get_attribute )
{
long attribute, value;
COLLATOR_METHOD_INIT_VARS
if( zend_parse_method_parameters( ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol",
&object, Collator_ce_ptr, &attribute ) == FAILURE )
{
intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR,
"collator_get_attribute: unable to parse input params", 0 TSRMLS_CC );
RETURN_FALSE;
}
COLLATOR_METHOD_FETCH_OBJECT;
value = ucol_getAttribute( co->ucoll, attribute, COLLATOR_ERROR_CODE_P( co ) );
COLLATOR_CHECK_STATUS( co, "Error getting attribute value" );
RETURN_LONG( value );
}
PHP_FUNCTION( collator_set_attribute )
{
long attribute, value;
COLLATOR_METHOD_INIT_VARS
if( zend_parse_method_parameters( ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oll",
&object, Collator_ce_ptr, &attribute, &value ) == FAILURE)
{
intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR,
"collator_set_attribute: unable to parse input params", 0 TSRMLS_CC );
RETURN_FALSE;
}
COLLATOR_METHOD_FETCH_OBJECT;
ucol_setAttribute( co->ucoll, attribute, value, COLLATOR_ERROR_CODE_P( co ) );
COLLATOR_CHECK_STATUS( co, "Error setting attribute value" );
RETURN_TRUE;
}
PHP_FUNCTION( collator_get_strength )
{
COLLATOR_METHOD_INIT_VARS
if( zend_parse_method_parameters( ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O",
&object, Collator_ce_ptr ) == FAILURE )
{
intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR,
"collator_get_strength: unable to parse input params", 0 TSRMLS_CC );
RETURN_FALSE;
}
COLLATOR_METHOD_FETCH_OBJECT;
RETURN_LONG( ucol_getStrength( co->ucoll ) );
}
PHP_FUNCTION( collator_set_strength )
{
long strength;
COLLATOR_METHOD_INIT_VARS
if( zend_parse_method_parameters( ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol",
&object, Collator_ce_ptr, &strength ) == FAILURE )
{
intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR,
"collator_set_strength: unable to parse input params", 0 TSRMLS_CC );
RETURN_FALSE;
}
COLLATOR_METHOD_FETCH_OBJECT;
ucol_setStrength( co->ucoll, strength );
RETURN_TRUE;
}