Fix compilation when PCRE is disabled.

This commit is contained in:
Andrei Zmievski 2002-03-21 15:28:46 +00:00
parent a15c9a31eb
commit 1cf188ae1b
2 changed files with 37 additions and 16 deletions

View file

@ -86,20 +86,25 @@ static void aggregate_methods(zend_class_entry *ce, zend_class_entry *from_ce, i
uint func_name_len;
ulong num_key;
zval *list_hash = NULL;
#if HAVE_PCRE || HAVE_BUNDLED_PCRE
pcre *re = NULL;
pcre_extra *re_extra = NULL;
int re_options = 0;
#endif
/*
* Flip the array for easy lookup, or compile the regexp.
*/
if (aggr_type == AGGREGATE_BY_LIST) {
list_hash = array_to_hash(aggr_filter);
} else if (aggr_type == AGGREGATE_BY_REGEXP) {
}
#if HAVE_PCRE || HAVE_BUNDLED_PCRE
else if (aggr_type == AGGREGATE_BY_REGEXP) {
if ((re = pcre_get_compiled_regex(Z_STRVAL_P(aggr_filter), &re_extra, &re_options)) == NULL) {
return;
}
}
#endif
/*
* "Just because it's not nice doesn't mean it's not miraculous."
@ -122,9 +127,13 @@ static void aggregate_methods(zend_class_entry *ce, zend_class_entry *from_ce, i
/* 2. private methods (heh, like we really have them) */
func_name[0] == '_' ||
/* 3. explicitly excluded methods */
(aggr_type == AGGREGATE_BY_LIST && zend_hash_exists(Z_ARRVAL_P(list_hash), func_name, func_name_len)) ||
(aggr_type == AGGREGATE_BY_LIST && zend_hash_exists(Z_ARRVAL_P(list_hash), func_name, func_name_len))
#if HAVE_PCRE || HAVE_BUNDLED_PCRE
||
/* 4. methods matching regexp as modified by the exclusion flag */
(aggr_type == AGGREGATE_BY_REGEXP && (pcre_exec(re, re_extra, func_name, func_name_len-1, 0, 0, NULL, 0) < 0) ^ exclude) == 1) {
(aggr_type == AGGREGATE_BY_REGEXP && (pcre_exec(re, re_extra, func_name, func_name_len-1, 0, 0, NULL, 0) < 0) ^ exclude) == 1
#endif
) {
zend_hash_move_forward_ex(&from_ce->function_table, &pos);
continue;
}
@ -178,9 +187,11 @@ static void aggregate_properties(zval *obj, zend_class_entry *from_ce, int aggr_
uint prop_name_len;
ulong num_key;
zval *list_hash = NULL;
#if HAVE_PCRE || HAVE_BUNDLED_PCRE
pcre *re = NULL;
pcre_extra *re_extra = NULL;
int re_options = 0;
#endif
if (!from_ce->constants_updated) {
zend_hash_apply_with_argument(&from_ce->default_properties, (apply_func_arg_t) zval_update_constant, (void *) 1 TSRMLS_CC);
@ -192,11 +203,14 @@ static void aggregate_properties(zval *obj, zend_class_entry *from_ce, int aggr_
*/
if (aggr_type == AGGREGATE_BY_LIST) {
list_hash = array_to_hash(aggr_filter);
} else if (aggr_type == AGGREGATE_BY_REGEXP) {
}
#if HAVE_PCRE || HAVE_BUNDLED_PCRE
else if (aggr_type == AGGREGATE_BY_REGEXP) {
if ((re = pcre_get_compiled_regex(Z_STRVAL_P(aggr_filter), &re_extra, &re_options)) == NULL) {
return;
}
}
#endif
/*
* "Just because it's not nice doesn't mean it's not miraculous."
@ -217,9 +231,13 @@ static void aggregate_properties(zval *obj, zend_class_entry *from_ce, int aggr_
* 1. private properties (heh, like we really have them) */
if (prop_name[0] == '_' ||
/* 2. explicitly excluded properties */
(aggr_type == AGGREGATE_BY_LIST && zend_hash_exists(Z_ARRVAL_P(list_hash), prop_name, prop_name_len)) ||
(aggr_type == AGGREGATE_BY_LIST && zend_hash_exists(Z_ARRVAL_P(list_hash), prop_name, prop_name_len))
#if HAVE_PCRE || HAVE_BUNDLED_PCRE
||
/* 3. properties matching regexp as modified by the exclusion flag */
(aggr_type == AGGREGATE_BY_REGEXP && (pcre_exec(re, re_extra, prop_name, prop_name_len-1, 0, 0, NULL, 0) < 0) ^ exclude) == 1) {
(aggr_type == AGGREGATE_BY_REGEXP && (pcre_exec(re, re_extra, prop_name, prop_name_len-1, 0, 0, NULL, 0) < 0) ^ exclude) == 1
#endif
) {
zend_hash_move_forward_ex(&from_ce->default_properties, &pos);
continue;
}
@ -478,15 +496,6 @@ PHP_FUNCTION(aggregate_methods_by_list)
/* }}} */
/* {{{ proto void aggregate_methods_by_regexp(object obj, string class, string regexp [, bool exclude])
*/
PHP_FUNCTION(aggregate_methods_by_regexp)
{
aggregate(INTERNAL_FUNCTION_PARAM_PASSTHRU, AGGREGATE_METHODS, AGGREGATE_BY_REGEXP);
}
/* }}} */
/* {{{ proto void aggregate_properties(object obj, string class)
*/
PHP_FUNCTION(aggregate_properties)
@ -504,6 +513,15 @@ PHP_FUNCTION(aggregate_properties_by_list)
}
/* }}} */
#if HAVE_PCRE || HAVE_BUNDLED_PCRE
/* {{{ proto void aggregate_methods_by_regexp(object obj, string class, string regexp [, bool exclude])
*/
PHP_FUNCTION(aggregate_methods_by_regexp)
{
aggregate(INTERNAL_FUNCTION_PARAM_PASSTHRU, AGGREGATE_METHODS, AGGREGATE_BY_REGEXP);
}
/* }}} */
/* {{{ proto void aggregate_properties_by_regexp(object obj, string class, string regexp [, bool exclude])
*/
@ -512,6 +530,7 @@ PHP_FUNCTION(aggregate_properties_by_regexp)
aggregate(INTERNAL_FUNCTION_PARAM_PASSTHRU, AGGREGATE_PROPERTIES, AGGREGATE_BY_REGEXP);
}
/* }}} */
#endif
/* {{{ proto array aggregation_info(object obj)

View file

@ -819,10 +819,12 @@ function_entry basic_functions[] = {
PHP_FE(aggregate, first_arg_force_ref)
PHP_FE(aggregate_methods, first_arg_force_ref)
PHP_FE(aggregate_methods_by_list, first_arg_force_ref)
PHP_FE(aggregate_methods_by_regexp, first_arg_force_ref)
PHP_FE(aggregate_properties, first_arg_force_ref)
PHP_FE(aggregate_properties_by_list, first_arg_force_ref)
#if HAVE_PCRE || HAVE_BUNDLED_PCRE
PHP_FE(aggregate_methods_by_regexp, first_arg_force_ref)
PHP_FE(aggregate_properties_by_regexp, first_arg_force_ref)
#endif
PHP_FE(deaggregate, first_arg_force_ref)
PHP_FE(aggregation_info, first_arg_force_ref)
{NULL, NULL, NULL}