summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorMáté Kocsis <kocsismate@woohoolabs.com>2020-02-24 23:54:49 +0100
committerMáté Kocsis <kocsismate@woohoolabs.com>2020-02-25 23:05:03 +0100
commitbcb7847139b5fd1ccab5d5f2818aebe1eeed0fbf (patch)
tree43b19ed38739fee0ebd7fdfc0bb9cdbc774fbd91 /ext
parentd594fba3ac7afc591ab4082c5f13f8f96fffa451 (diff)
downloadphp-git-bcb7847139b5fd1ccab5d5f2818aebe1eeed0fbf.tar.gz
Add stubs for Intl BreakIterator
Closes GH-5207
Diffstat (limited to 'ext')
-rw-r--r--ext/intl/breakiterator/breakiterator.stub.php95
-rw-r--r--ext/intl/breakiterator/breakiterator_arginfo.h73
-rw-r--r--ext/intl/breakiterator/breakiterator_class.cpp93
-rw-r--r--ext/intl/breakiterator/breakiterator_iterators.cpp6
4 files changed, 199 insertions, 68 deletions
diff --git a/ext/intl/breakiterator/breakiterator.stub.php b/ext/intl/breakiterator/breakiterator.stub.php
new file mode 100644
index 0000000000..663932d64e
--- /dev/null
+++ b/ext/intl/breakiterator/breakiterator.stub.php
@@ -0,0 +1,95 @@
+<?php
+
+class IntlBreakIterator implements Traversable
+{
+ /** @return IntlBreakIterator|null */
+ public static function createCharacterInstance(?string $locale = null) {}
+
+ /** @return IntlCodePointBreakIterator */
+ public static function createCodePointInstance() {}
+
+ /** @return IntlBreakIterator|null */
+ public static function createLineInstance(?string $locale = null) {}
+
+ /** @return IntlBreakIterator|null */
+ public static function createSentenceInstance(?string $locale = null) {}
+
+ /** @return IntlBreakIterator|null */
+ public static function createTitleInstance(?string $locale = null) {}
+
+ /** @return IntlBreakIterator|null */
+ public static function createWordInstance(?string $locale = null) {}
+
+ private function __construct() {}
+
+ /** @return int */
+ public function current() {}
+
+ /** @return int */
+ public function first() {}
+
+ /** @return int|false */
+ public function following(int $offset) {}
+
+ /** @return int */
+ public function getErrorCode() {}
+
+ /** @return string|false */
+ public function getErrorMessage() {}
+
+ /** @return string */
+ public function getLocale(int $locale_type) {}
+
+ /** @return IntlPartsIterator|false */
+ public function getPartsIterator(string $key_type = IntlPartsIterator::KEY_SEQUENTIAL) {}
+
+ /** @return string|null */
+ public function getText() {}
+
+ /** @return bool */
+ public function isBoundary(int $offset) {}
+
+ /** @return int */
+ public function last() {}
+
+ /** @return int|false */
+ public function next(?int $offset = null) {}
+
+ /** @return int|false */
+ public function preceding(int $offset) {}
+
+ /** @return int */
+ public function previous() {}
+
+ /** @return bool|null */
+ public function setText(string $text) {}
+}
+
+class IntlRuleBasedBreakIterator extends IntlBreakIterator
+{
+ public function __construct(string $rules, bool $areCompiled = false) {}
+
+ /** @return string|false */
+ public function getBinaryRules() {}
+
+ /** @return string|false */
+ public function getRules() {}
+
+ /** @return int */
+ public function getRuleStatus() {}
+
+ /** @return array|false */
+ public function getRuleStatusVec() {}
+}
+
+class IntlPartsIterator extends IntlIterator
+{
+ /** @return IntlBreakIterator */
+ public function getBreakIterator() {}
+}
+
+class IntlCodePointBreakIterator extends IntlBreakIterator
+{
+ /** @return int */
+ public function getLastCodePoint() {}
+}
diff --git a/ext/intl/breakiterator/breakiterator_arginfo.h b/ext/intl/breakiterator/breakiterator_arginfo.h
new file mode 100644
index 0000000000..27d5185050
--- /dev/null
+++ b/ext/intl/breakiterator/breakiterator_arginfo.h
@@ -0,0 +1,73 @@
+/* This is a generated file, edit the .stub.php file instead. */
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_IntlBreakIterator_createCharacterInstance, 0, 0, 0)
+ ZEND_ARG_TYPE_INFO(0, locale, IS_STRING, 1)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_IntlBreakIterator_createCodePointInstance, 0, 0, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_class_IntlBreakIterator_createLineInstance arginfo_class_IntlBreakIterator_createCharacterInstance
+
+#define arginfo_class_IntlBreakIterator_createSentenceInstance arginfo_class_IntlBreakIterator_createCharacterInstance
+
+#define arginfo_class_IntlBreakIterator_createTitleInstance arginfo_class_IntlBreakIterator_createCharacterInstance
+
+#define arginfo_class_IntlBreakIterator_createWordInstance arginfo_class_IntlBreakIterator_createCharacterInstance
+
+#define arginfo_class_IntlBreakIterator___construct arginfo_class_IntlBreakIterator_createCodePointInstance
+
+#define arginfo_class_IntlBreakIterator_current arginfo_class_IntlBreakIterator_createCodePointInstance
+
+#define arginfo_class_IntlBreakIterator_first arginfo_class_IntlBreakIterator_createCodePointInstance
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_IntlBreakIterator_following, 0, 0, 1)
+ ZEND_ARG_TYPE_INFO(0, offset, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_class_IntlBreakIterator_getErrorCode arginfo_class_IntlBreakIterator_createCodePointInstance
+
+#define arginfo_class_IntlBreakIterator_getErrorMessage arginfo_class_IntlBreakIterator_createCodePointInstance
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_IntlBreakIterator_getLocale, 0, 0, 1)
+ ZEND_ARG_TYPE_INFO(0, locale_type, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_IntlBreakIterator_getPartsIterator, 0, 0, 0)
+ ZEND_ARG_TYPE_INFO(0, key_type, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_class_IntlBreakIterator_getText arginfo_class_IntlBreakIterator_createCodePointInstance
+
+#define arginfo_class_IntlBreakIterator_isBoundary arginfo_class_IntlBreakIterator_following
+
+#define arginfo_class_IntlBreakIterator_last arginfo_class_IntlBreakIterator_createCodePointInstance
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_IntlBreakIterator_next, 0, 0, 0)
+ ZEND_ARG_TYPE_INFO(0, offset, IS_LONG, 1)
+ZEND_END_ARG_INFO()
+
+#define arginfo_class_IntlBreakIterator_preceding arginfo_class_IntlBreakIterator_following
+
+#define arginfo_class_IntlBreakIterator_previous arginfo_class_IntlBreakIterator_createCodePointInstance
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_IntlBreakIterator_setText, 0, 0, 1)
+ ZEND_ARG_TYPE_INFO(0, text, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_IntlRuleBasedBreakIterator___construct, 0, 0, 1)
+ ZEND_ARG_TYPE_INFO(0, rules, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, areCompiled, _IS_BOOL, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_class_IntlRuleBasedBreakIterator_getBinaryRules arginfo_class_IntlBreakIterator_createCodePointInstance
+
+#define arginfo_class_IntlRuleBasedBreakIterator_getRules arginfo_class_IntlBreakIterator_createCodePointInstance
+
+#define arginfo_class_IntlRuleBasedBreakIterator_getRuleStatus arginfo_class_IntlBreakIterator_createCodePointInstance
+
+#define arginfo_class_IntlRuleBasedBreakIterator_getRuleStatusVec arginfo_class_IntlBreakIterator_createCodePointInstance
+
+#define arginfo_class_IntlPartsIterator_getBreakIterator arginfo_class_IntlBreakIterator_createCodePointInstance
+
+#define arginfo_class_IntlCodePointBreakIterator_getLastCodePoint arginfo_class_IntlBreakIterator_createCodePointInstance
diff --git a/ext/intl/breakiterator/breakiterator_class.cpp b/ext/intl/breakiterator/breakiterator_class.cpp
index 608702ac2b..abbc413c5c 100644
--- a/ext/intl/breakiterator/breakiterator_class.cpp
+++ b/ext/intl/breakiterator/breakiterator_class.cpp
@@ -27,6 +27,7 @@
extern "C" {
#define USE_BREAKITERATOR_POINTER 1
#include "breakiterator_class.h"
+#include "breakiterator_arginfo.h"
#include "breakiterator_methods.h"
#include "rulebasedbreakiterator_methods.h"
#include "codepointiterator_methods.h"
@@ -220,68 +221,32 @@ static zend_object *BreakIterator_object_create(zend_class_entry *ce)
}
/* }}} */
-/* {{{ BreakIterator/RuleBasedBreakIterator methods arguments info */
-
-ZEND_BEGIN_ARG_INFO_EX(ainfo_biter_void, 0, 0, 0)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(ainfo_biter_locale, 0, 0, 0)
- ZEND_ARG_INFO(0, locale)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(ainfo_biter_setText, 0, 0, 1)
- ZEND_ARG_INFO(0, text)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(ainfo_biter_next, 0, 0, 0)
- ZEND_ARG_INFO(0, offset)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(ainfo_biter_offset, 0, 0, 1)
- ZEND_ARG_INFO(0, offset)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(ainfo_biter_get_locale, 0, 0, 1)
- ZEND_ARG_INFO(0, locale_type)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(ainfo_biter_getPartsIterator, 0, 0, 0)
- ZEND_ARG_INFO(0, key_type)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(ainfo_rbbi___construct, 0, 0, 1)
- ZEND_ARG_INFO(0, rules)
- ZEND_ARG_INFO(0, areCompiled)
-ZEND_END_ARG_INFO()
-
-/* }}} */
-
/* {{{ BreakIterator_class_functions
* Every 'BreakIterator' class method has an entry in this table
*/
static const zend_function_entry BreakIterator_class_functions[] = {
- PHP_ME(BreakIterator, __construct, ainfo_biter_void, ZEND_ACC_PRIVATE)
- PHP_ME_MAPPING(createWordInstance, breakiter_create_word_instance, ainfo_biter_locale, ZEND_ACC_STATIC | ZEND_ACC_PUBLIC)
- PHP_ME_MAPPING(createLineInstance, breakiter_create_line_instance, ainfo_biter_locale, ZEND_ACC_STATIC | ZEND_ACC_PUBLIC)
- 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)
- PHP_ME_MAPPING(last, breakiter_last, ainfo_biter_void, ZEND_ACC_PUBLIC)
- PHP_ME_MAPPING(previous, breakiter_previous, ainfo_biter_void, ZEND_ACC_PUBLIC)
- PHP_ME_MAPPING(next, breakiter_next, ainfo_biter_next, ZEND_ACC_PUBLIC)
- PHP_ME_MAPPING(current, breakiter_current, ainfo_biter_void, ZEND_ACC_PUBLIC)
- PHP_ME_MAPPING(following, breakiter_following, ainfo_biter_offset, ZEND_ACC_PUBLIC)
- PHP_ME_MAPPING(preceding, breakiter_preceding, ainfo_biter_offset, ZEND_ACC_PUBLIC)
- PHP_ME_MAPPING(isBoundary, breakiter_is_boundary, ainfo_biter_offset, ZEND_ACC_PUBLIC)
- PHP_ME_MAPPING(getLocale, breakiter_get_locale, ainfo_biter_get_locale, ZEND_ACC_PUBLIC)
- PHP_ME_MAPPING(getPartsIterator, breakiter_get_parts_iterator, ainfo_biter_getPartsIterator, ZEND_ACC_PUBLIC)
-
- PHP_ME_MAPPING(getErrorCode, breakiter_get_error_code, ainfo_biter_void, ZEND_ACC_PUBLIC)
- PHP_ME_MAPPING(getErrorMessage, breakiter_get_error_message, ainfo_biter_void, ZEND_ACC_PUBLIC)
+ PHP_ME(BreakIterator, __construct, arginfo_class_IntlBreakIterator___construct, ZEND_ACC_PRIVATE)
+ PHP_ME_MAPPING(createWordInstance, breakiter_create_word_instance, arginfo_class_IntlBreakIterator_createWordInstance, ZEND_ACC_STATIC | ZEND_ACC_PUBLIC)
+ PHP_ME_MAPPING(createLineInstance, breakiter_create_line_instance, arginfo_class_IntlBreakIterator_createLineInstance, ZEND_ACC_STATIC | ZEND_ACC_PUBLIC)
+ PHP_ME_MAPPING(createCharacterInstance, breakiter_create_character_instance, arginfo_class_IntlBreakIterator_createCharacterInstance, ZEND_ACC_STATIC | ZEND_ACC_PUBLIC)
+ PHP_ME_MAPPING(createSentenceInstance, breakiter_create_sentence_instance, arginfo_class_IntlBreakIterator_createSentenceInstance, ZEND_ACC_STATIC | ZEND_ACC_PUBLIC)
+ PHP_ME_MAPPING(createTitleInstance, breakiter_create_title_instance, arginfo_class_IntlBreakIterator_createTitleInstance, ZEND_ACC_STATIC | ZEND_ACC_PUBLIC)
+ PHP_ME_MAPPING(createCodePointInstance, breakiter_create_code_point_instance, arginfo_class_IntlBreakIterator_createCodePointInstance, ZEND_ACC_STATIC | ZEND_ACC_PUBLIC)
+ PHP_ME_MAPPING(getText, breakiter_get_text, arginfo_class_IntlBreakIterator_getText, ZEND_ACC_PUBLIC)
+ PHP_ME_MAPPING(setText, breakiter_set_text, arginfo_class_IntlBreakIterator_setText, ZEND_ACC_PUBLIC)
+ PHP_ME_MAPPING(first, breakiter_first, arginfo_class_IntlBreakIterator_first, ZEND_ACC_PUBLIC)
+ PHP_ME_MAPPING(last, breakiter_last, arginfo_class_IntlBreakIterator_last, ZEND_ACC_PUBLIC)
+ PHP_ME_MAPPING(previous, breakiter_previous, arginfo_class_IntlBreakIterator_previous, ZEND_ACC_PUBLIC)
+ PHP_ME_MAPPING(next, breakiter_next, arginfo_class_IntlBreakIterator_next, ZEND_ACC_PUBLIC)
+ PHP_ME_MAPPING(current, breakiter_current, arginfo_class_IntlBreakIterator_current, ZEND_ACC_PUBLIC)
+ PHP_ME_MAPPING(following, breakiter_following, arginfo_class_IntlBreakIterator_following, ZEND_ACC_PUBLIC)
+ PHP_ME_MAPPING(preceding, breakiter_preceding, arginfo_class_IntlBreakIterator_preceding, ZEND_ACC_PUBLIC)
+ PHP_ME_MAPPING(isBoundary, breakiter_is_boundary, arginfo_class_IntlBreakIterator_isBoundary, ZEND_ACC_PUBLIC)
+ PHP_ME_MAPPING(getLocale, breakiter_get_locale, arginfo_class_IntlBreakIterator_getLocale, ZEND_ACC_PUBLIC)
+ PHP_ME_MAPPING(getPartsIterator, breakiter_get_parts_iterator, arginfo_class_IntlBreakIterator_getPartsIterator, ZEND_ACC_PUBLIC)
+
+ PHP_ME_MAPPING(getErrorCode, breakiter_get_error_code, arginfo_class_IntlBreakIterator_getErrorCode, ZEND_ACC_PUBLIC)
+ PHP_ME_MAPPING(getErrorMessage, breakiter_get_error_message, arginfo_class_IntlBreakIterator_getErrorMessage, ZEND_ACC_PUBLIC)
PHP_FE_END
};
/* }}} */
@@ -289,11 +254,11 @@ static const zend_function_entry BreakIterator_class_functions[] = {
/* {{{ RuleBasedBreakIterator_class_functions
*/
static const zend_function_entry RuleBasedBreakIterator_class_functions[] = {
- PHP_ME(IntlRuleBasedBreakIterator, __construct, ainfo_rbbi___construct, ZEND_ACC_PUBLIC)
- PHP_ME_MAPPING(getRules, rbbi_get_rules, ainfo_biter_void, ZEND_ACC_PUBLIC)
- PHP_ME_MAPPING(getRuleStatus, rbbi_get_rule_status, ainfo_biter_void, ZEND_ACC_PUBLIC)
- PHP_ME_MAPPING(getRuleStatusVec, rbbi_get_rule_status_vec, ainfo_biter_void, ZEND_ACC_PUBLIC)
- PHP_ME_MAPPING(getBinaryRules, rbbi_get_binary_rules, ainfo_biter_void, ZEND_ACC_PUBLIC)
+ PHP_ME(IntlRuleBasedBreakIterator, __construct, arginfo_class_IntlRuleBasedBreakIterator___construct, ZEND_ACC_PUBLIC)
+ PHP_ME_MAPPING(getRules, rbbi_get_rules, arginfo_class_IntlRuleBasedBreakIterator_getRules, ZEND_ACC_PUBLIC)
+ PHP_ME_MAPPING(getRuleStatus, rbbi_get_rule_status, arginfo_class_IntlRuleBasedBreakIterator_getRuleStatus, ZEND_ACC_PUBLIC)
+ PHP_ME_MAPPING(getRuleStatusVec, rbbi_get_rule_status_vec, arginfo_class_IntlRuleBasedBreakIterator_getRuleStatusVec, ZEND_ACC_PUBLIC)
+ PHP_ME_MAPPING(getBinaryRules, rbbi_get_binary_rules, arginfo_class_IntlRuleBasedBreakIterator_getBinaryRules, ZEND_ACC_PUBLIC)
PHP_FE_END
};
/* }}} */
@@ -301,7 +266,7 @@ 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_ME_MAPPING(getLastCodePoint, cpbi_get_last_code_point, arginfo_class_IntlCodePointBreakIterator_getLastCodePoint, ZEND_ACC_PUBLIC)
PHP_FE_END
};
/* }}} */
diff --git a/ext/intl/breakiterator/breakiterator_iterators.cpp b/ext/intl/breakiterator/breakiterator_iterators.cpp
index cd3ef42281..a8d14e94b8 100644
--- a/ext/intl/breakiterator/breakiterator_iterators.cpp
+++ b/ext/intl/breakiterator/breakiterator_iterators.cpp
@@ -24,6 +24,7 @@
extern "C" {
#define USE_BREAKITERATOR_POINTER
#include "breakiterator_class.h"
+#include "breakiterator_arginfo.h"
#include "../intl_convert.h"
#include "../locale/locale.h"
#include <zend_exceptions.h>
@@ -285,11 +286,8 @@ U_CFUNC PHP_METHOD(IntlPartsIterator, getBreakIterator)
ZVAL_COPY_DEREF(return_value, biter_zval);
}
-ZEND_BEGIN_ARG_INFO_EX(ainfo_parts_it_void, 0, 0, 0)
-ZEND_END_ARG_INFO()
-
static const zend_function_entry IntlPartsIterator_class_functions[] = {
- PHP_ME(IntlPartsIterator, getBreakIterator, ainfo_parts_it_void, ZEND_ACC_PUBLIC)
+ PHP_ME(IntlPartsIterator, getBreakIterator, arginfo_class_IntlPartsIterator_getBreakIterator, ZEND_ACC_PUBLIC)
PHP_FE_END
};