diff options
author | Gustavo André dos Santos Lopes <cataphract@php.net> | 2012-06-22 18:19:54 +0200 |
---|---|---|
committer | Gustavo André dos Santos Lopes <cataphract@php.net> | 2012-06-22 18:19:54 +0200 |
commit | 0a7ae87e91368fe17c52767cfb31dabf3a94e38f (patch) | |
tree | 66d32ab8bed0c0e364b4990565f20a1caefced64 /ext/intl/breakiterator/breakiterator_class.cpp | |
parent | cee31091a960014ce5315008fc64437d04174caf (diff) | |
download | php-git-0a7ae87e91368fe17c52767cfb31dabf3a94e38f.tar.gz |
Added IntlCodePointBreakIterator.
Objects of this class can be instantiated with
IntlBreakIterator::createCodePointInstance()
The method does not take a locale, as it would not make sense in this
context.
This class has one additional method:
long IntlCodePointIterator::getLastCodePoint()
which returns either -1 or the last code point we moved over, if any
(and discounting any movement before the last call to
IntlBreakIterator::first() or IntlBreakIterator::last()).
Diffstat (limited to 'ext/intl/breakiterator/breakiterator_class.cpp')
-rw-r--r-- | ext/intl/breakiterator/breakiterator_class.cpp | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/ext/intl/breakiterator/breakiterator_class.cpp b/ext/intl/breakiterator/breakiterator_class.cpp index 8c25314a4a..633550203b 100644 --- a/ext/intl/breakiterator/breakiterator_class.cpp +++ b/ext/intl/breakiterator/breakiterator_class.cpp @@ -20,6 +20,7 @@ #include <unicode/brkiter.h> #include <unicode/rbbi.h> +#include "codepointiterator_internal.h" #include "breakiterator_iterators.h" @@ -30,14 +31,18 @@ extern "C" { #include "breakiterator_class.h" #include "breakiterator_methods.h" #include "rulebasedbreakiterator_methods.h" +#include "codepointiterator_methods.h" #include <zend_exceptions.h> #include <zend_interfaces.h> #include <assert.h> } +using PHP::CodePointBreakIterator; + /* {{{ Global variables */ zend_class_entry *BreakIterator_ce_ptr; zend_class_entry *RuleBasedBreakIterator_ce_ptr; +zend_class_entry *CodePointBreakIterator_ce_ptr; zend_object_handlers BreakIterator_handlers; /* }}} */ @@ -49,6 +54,8 @@ U_CFUNC void breakiterator_object_create(zval *object, if (classId == RuleBasedBreakIterator::getStaticClassID()) { ce = RuleBasedBreakIterator_ce_ptr; + } else if (classId == CodePointBreakIterator::getStaticClassID()) { + ce = CodePointBreakIterator_ce_ptr; } else { ce = BreakIterator_ce_ptr; } @@ -274,6 +281,7 @@ static const zend_function_entry BreakIterator_class_functions[] = { PHP_ME_MAPPING(createCharacterInstance, breakiter_create_character_instance, ainfo_biter_locale, ZEND_ACC_STATIC | ZEND_ACC_PUBLIC) PHP_ME_MAPPING(createSentenceInstance, breakiter_create_sentence_instance, ainfo_biter_locale, ZEND_ACC_STATIC | ZEND_ACC_PUBLIC) PHP_ME_MAPPING(createTitleInstance, breakiter_create_title_instance, ainfo_biter_locale, ZEND_ACC_STATIC | ZEND_ACC_PUBLIC) + PHP_ME_MAPPING(createCodePointInstance, breakiter_create_code_point_instance, ainfo_biter_void, ZEND_ACC_STATIC | ZEND_ACC_PUBLIC) PHP_ME_MAPPING(getText, breakiter_get_text, ainfo_biter_void, ZEND_ACC_PUBLIC) PHP_ME_MAPPING(setText, breakiter_set_text, ainfo_biter_setText, ZEND_ACC_PUBLIC) PHP_ME_MAPPING(first, breakiter_first, ainfo_biter_void, ZEND_ACC_PUBLIC) @@ -305,6 +313,14 @@ static const zend_function_entry RuleBasedBreakIterator_class_functions[] = { }; /* }}} */ +/* {{{ CodePointBreakIterator_class_functions + */ +static const zend_function_entry CodePointBreakIterator_class_functions[] = { + PHP_ME_MAPPING(getLastCodePoint, cpbi_get_last_code_point, ainfo_biter_void, ZEND_ACC_PUBLIC) + PHP_FE_END +}; +/* }}} */ + /* {{{ breakiterator_register_BreakIterator_class * Initialize 'BreakIterator' class @@ -364,6 +380,12 @@ void breakiterator_register_BreakIterator_class(TSRMLS_D) INIT_CLASS_ENTRY(ce, "IntlRuleBasedBreakIterator", RuleBasedBreakIterator_class_functions); RuleBasedBreakIterator_ce_ptr = zend_register_internal_class_ex(&ce, - BreakIterator_ce_ptr, NULL TSRMLS_CC); + BreakIterator_ce_ptr, NULL TSRMLS_CC); + + /* Create and register 'CodePointBreakIterator' class. */ + INIT_CLASS_ENTRY(ce, "IntlCodePointBreakIterator", + CodePointBreakIterator_class_functions); + CodePointBreakIterator_ce_ptr = zend_register_internal_class_ex(&ce, + BreakIterator_ce_ptr, NULL TSRMLS_CC); } /* }}} */ |