summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Zmievski <andrei@php.net>2006-02-10 00:23:29 +0000
committerAndrei Zmievski <andrei@php.net>2006-02-10 00:23:29 +0000
commit086dec271964e5c18db96797237ac4be01705da9 (patch)
treed576e186892ae551bce0636f652a1ea7c21b1463
parentd4307e4494e2f6141f1a05db2e1d440331659f6f (diff)
downloadphp-git-086dec271964e5c18db96797237ac4be01705da9.tar.gz
Make ReverseTextIterator a separate class.
-rw-r--r--ext/unicode/unicode_iterators.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/ext/unicode/unicode_iterators.c b/ext/unicode/unicode_iterators.c
index ca611dcd4b..0674799366 100644
--- a/ext/unicode/unicode_iterators.c
+++ b/ext/unicode/unicode_iterators.c
@@ -78,6 +78,7 @@ typedef struct {
PHPAPI zend_class_entry* text_iterator_aggregate_ce;
PHPAPI zend_class_entry* text_iterator_ce;
+PHPAPI zend_class_entry* rev_text_iterator_ce;
/* Code unit ops */
@@ -433,6 +434,10 @@ PHP_METHOD(TextIterator, __construct)
intern->flags = flags;
}
+ if (Z_OBJCE_P(this_ptr) == U_CLASS_ENTRY(rev_text_iterator_ce)) {
+ intern->flags |= ITER_REVERSE;
+ }
+
iter_ops[intern->type]->rewind(intern TSRMLS_CC);
}
@@ -495,13 +500,19 @@ void php_register_unicode_iterators(TSRMLS_D)
text_iterator_ce = zend_register_internal_class(&ce TSRMLS_CC);
text_iterator_ce->create_object = text_iterator_new;
text_iterator_ce->get_iterator = text_iter_get_iterator;
+ text_iterator_ce->ce_flags |= ZEND_ACC_FINAL_CLASS;
zend_class_implements(text_iterator_ce TSRMLS_CC, 1, zend_ce_traversable);
+ INIT_CLASS_ENTRY(ce, "ReverseTextIterator", text_iterator_funcs);
+ rev_text_iterator_ce = zend_register_internal_class(&ce TSRMLS_CC);
+ rev_text_iterator_ce->create_object = text_iterator_new;
+ rev_text_iterator_ce->get_iterator = text_iter_get_iterator;
+ rev_text_iterator_ce->ce_flags |= ZEND_ACC_FINAL_CLASS;
+ zend_class_implements(rev_text_iterator_ce TSRMLS_CC, 1, zend_ce_traversable);
+
zend_declare_class_constant_long(text_iterator_ce, "CODE_UNIT", sizeof("CODE_UNIT")-1, ITER_CODE_UNIT TSRMLS_CC);
zend_declare_class_constant_long(text_iterator_ce, "CODE_POINT", sizeof("CODE_POINT")-1, ITER_CODE_POINT TSRMLS_CC);
zend_declare_class_constant_long(text_iterator_ce, "COMB_SEQUENCE", sizeof("COMB_SEQUENCE")-1, ITER_COMB_SEQUENCE TSRMLS_CC);
-
- zend_declare_class_constant_long(text_iterator_ce, "REVERSE", sizeof("REVERSE")-1, ITER_REVERSE TSRMLS_CC);
}
/*