Skip to content

Commit bcb7847

Browse files
committed
Add stubs for Intl BreakIterator
Closes GH-5207
1 parent d594fba commit bcb7847

File tree

4 files changed

+199
-68
lines changed

4 files changed

+199
-68
lines changed
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
<?php
2+
3+
class IntlBreakIterator implements Traversable
4+
{
5+
/** @return IntlBreakIterator|null */
6+
public static function createCharacterInstance(?string $locale = null) {}
7+
8+
/** @return IntlCodePointBreakIterator */
9+
public static function createCodePointInstance() {}
10+
11+
/** @return IntlBreakIterator|null */
12+
public static function createLineInstance(?string $locale = null) {}
13+
14+
/** @return IntlBreakIterator|null */
15+
public static function createSentenceInstance(?string $locale = null) {}
16+
17+
/** @return IntlBreakIterator|null */
18+
public static function createTitleInstance(?string $locale = null) {}
19+
20+
/** @return IntlBreakIterator|null */
21+
public static function createWordInstance(?string $locale = null) {}
22+
23+
private function __construct() {}
24+
25+
/** @return int */
26+
public function current() {}
27+
28+
/** @return int */
29+
public function first() {}
30+
31+
/** @return int|false */
32+
public function following(int $offset) {}
33+
34+
/** @return int */
35+
public function getErrorCode() {}
36+
37+
/** @return string|false */
38+
public function getErrorMessage() {}
39+
40+
/** @return string */
41+
public function getLocale(int $locale_type) {}
42+
43+
/** @return IntlPartsIterator|false */
44+
public function getPartsIterator(string $key_type = IntlPartsIterator::KEY_SEQUENTIAL) {}
45+
46+
/** @return string|null */
47+
public function getText() {}
48+
49+
/** @return bool */
50+
public function isBoundary(int $offset) {}
51+
52+
/** @return int */
53+
public function last() {}
54+
55+
/** @return int|false */
56+
public function next(?int $offset = null) {}
57+
58+
/** @return int|false */
59+
public function preceding(int $offset) {}
60+
61+
/** @return int */
62+
public function previous() {}
63+
64+
/** @return bool|null */
65+
public function setText(string $text) {}
66+
}
67+
68+
class IntlRuleBasedBreakIterator extends IntlBreakIterator
69+
{
70+
public function __construct(string $rules, bool $areCompiled = false) {}
71+
72+
/** @return string|false */
73+
public function getBinaryRules() {}
74+
75+
/** @return string|false */
76+
public function getRules() {}
77+
78+
/** @return int */
79+
public function getRuleStatus() {}
80+
81+
/** @return array|false */
82+
public function getRuleStatusVec() {}
83+
}
84+
85+
class IntlPartsIterator extends IntlIterator
86+
{
87+
/** @return IntlBreakIterator */
88+
public function getBreakIterator() {}
89+
}
90+
91+
class IntlCodePointBreakIterator extends IntlBreakIterator
92+
{
93+
/** @return int */
94+
public function getLastCodePoint() {}
95+
}
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
/* This is a generated file, edit the .stub.php file instead. */
2+
3+
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_IntlBreakIterator_createCharacterInstance, 0, 0, 0)
4+
ZEND_ARG_TYPE_INFO(0, locale, IS_STRING, 1)
5+
ZEND_END_ARG_INFO()
6+
7+
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_IntlBreakIterator_createCodePointInstance, 0, 0, 0)
8+
ZEND_END_ARG_INFO()
9+
10+
#define arginfo_class_IntlBreakIterator_createLineInstance arginfo_class_IntlBreakIterator_createCharacterInstance
11+
12+
#define arginfo_class_IntlBreakIterator_createSentenceInstance arginfo_class_IntlBreakIterator_createCharacterInstance
13+
14+
#define arginfo_class_IntlBreakIterator_createTitleInstance arginfo_class_IntlBreakIterator_createCharacterInstance
15+
16+
#define arginfo_class_IntlBreakIterator_createWordInstance arginfo_class_IntlBreakIterator_createCharacterInstance
17+
18+
#define arginfo_class_IntlBreakIterator___construct arginfo_class_IntlBreakIterator_createCodePointInstance
19+
20+
#define arginfo_class_IntlBreakIterator_current arginfo_class_IntlBreakIterator_createCodePointInstance
21+
22+
#define arginfo_class_IntlBreakIterator_first arginfo_class_IntlBreakIterator_createCodePointInstance
23+
24+
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_IntlBreakIterator_following, 0, 0, 1)
25+
ZEND_ARG_TYPE_INFO(0, offset, IS_LONG, 0)
26+
ZEND_END_ARG_INFO()
27+
28+
#define arginfo_class_IntlBreakIterator_getErrorCode arginfo_class_IntlBreakIterator_createCodePointInstance
29+
30+
#define arginfo_class_IntlBreakIterator_getErrorMessage arginfo_class_IntlBreakIterator_createCodePointInstance
31+
32+
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_IntlBreakIterator_getLocale, 0, 0, 1)
33+
ZEND_ARG_TYPE_INFO(0, locale_type, IS_LONG, 0)
34+
ZEND_END_ARG_INFO()
35+
36+
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_IntlBreakIterator_getPartsIterator, 0, 0, 0)
37+
ZEND_ARG_TYPE_INFO(0, key_type, IS_STRING, 0)
38+
ZEND_END_ARG_INFO()
39+
40+
#define arginfo_class_IntlBreakIterator_getText arginfo_class_IntlBreakIterator_createCodePointInstance
41+
42+
#define arginfo_class_IntlBreakIterator_isBoundary arginfo_class_IntlBreakIterator_following
43+
44+
#define arginfo_class_IntlBreakIterator_last arginfo_class_IntlBreakIterator_createCodePointInstance
45+
46+
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_IntlBreakIterator_next, 0, 0, 0)
47+
ZEND_ARG_TYPE_INFO(0, offset, IS_LONG, 1)
48+
ZEND_END_ARG_INFO()
49+
50+
#define arginfo_class_IntlBreakIterator_preceding arginfo_class_IntlBreakIterator_following
51+
52+
#define arginfo_class_IntlBreakIterator_previous arginfo_class_IntlBreakIterator_createCodePointInstance
53+
54+
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_IntlBreakIterator_setText, 0, 0, 1)
55+
ZEND_ARG_TYPE_INFO(0, text, IS_STRING, 0)
56+
ZEND_END_ARG_INFO()
57+
58+
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_IntlRuleBasedBreakIterator___construct, 0, 0, 1)
59+
ZEND_ARG_TYPE_INFO(0, rules, IS_STRING, 0)
60+
ZEND_ARG_TYPE_INFO(0, areCompiled, _IS_BOOL, 0)
61+
ZEND_END_ARG_INFO()
62+
63+
#define arginfo_class_IntlRuleBasedBreakIterator_getBinaryRules arginfo_class_IntlBreakIterator_createCodePointInstance
64+
65+
#define arginfo_class_IntlRuleBasedBreakIterator_getRules arginfo_class_IntlBreakIterator_createCodePointInstance
66+
67+
#define arginfo_class_IntlRuleBasedBreakIterator_getRuleStatus arginfo_class_IntlBreakIterator_createCodePointInstance
68+
69+
#define arginfo_class_IntlRuleBasedBreakIterator_getRuleStatusVec arginfo_class_IntlBreakIterator_createCodePointInstance
70+
71+
#define arginfo_class_IntlPartsIterator_getBreakIterator arginfo_class_IntlBreakIterator_createCodePointInstance
72+
73+
#define arginfo_class_IntlCodePointBreakIterator_getLastCodePoint arginfo_class_IntlBreakIterator_createCodePointInstance

ext/intl/breakiterator/breakiterator_class.cpp

Lines changed: 29 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
extern "C" {
2828
#define USE_BREAKITERATOR_POINTER 1
2929
#include "breakiterator_class.h"
30+
#include "breakiterator_arginfo.h"
3031
#include "breakiterator_methods.h"
3132
#include "rulebasedbreakiterator_methods.h"
3233
#include "codepointiterator_methods.h"
@@ -220,88 +221,52 @@ static zend_object *BreakIterator_object_create(zend_class_entry *ce)
220221
}
221222
/* }}} */
222223

223-
/* {{{ BreakIterator/RuleBasedBreakIterator methods arguments info */
224-
225-
ZEND_BEGIN_ARG_INFO_EX(ainfo_biter_void, 0, 0, 0)
226-
ZEND_END_ARG_INFO()
227-
228-
ZEND_BEGIN_ARG_INFO_EX(ainfo_biter_locale, 0, 0, 0)
229-
ZEND_ARG_INFO(0, locale)
230-
ZEND_END_ARG_INFO()
231-
232-
ZEND_BEGIN_ARG_INFO_EX(ainfo_biter_setText, 0, 0, 1)
233-
ZEND_ARG_INFO(0, text)
234-
ZEND_END_ARG_INFO()
235-
236-
ZEND_BEGIN_ARG_INFO_EX(ainfo_biter_next, 0, 0, 0)
237-
ZEND_ARG_INFO(0, offset)
238-
ZEND_END_ARG_INFO()
239-
240-
ZEND_BEGIN_ARG_INFO_EX(ainfo_biter_offset, 0, 0, 1)
241-
ZEND_ARG_INFO(0, offset)
242-
ZEND_END_ARG_INFO()
243-
244-
ZEND_BEGIN_ARG_INFO_EX(ainfo_biter_get_locale, 0, 0, 1)
245-
ZEND_ARG_INFO(0, locale_type)
246-
ZEND_END_ARG_INFO()
247-
248-
ZEND_BEGIN_ARG_INFO_EX(ainfo_biter_getPartsIterator, 0, 0, 0)
249-
ZEND_ARG_INFO(0, key_type)
250-
ZEND_END_ARG_INFO()
251-
252-
ZEND_BEGIN_ARG_INFO_EX(ainfo_rbbi___construct, 0, 0, 1)
253-
ZEND_ARG_INFO(0, rules)
254-
ZEND_ARG_INFO(0, areCompiled)
255-
ZEND_END_ARG_INFO()
256-
257-
/* }}} */
258-
259224
/* {{{ BreakIterator_class_functions
260225
* Every 'BreakIterator' class method has an entry in this table
261226
*/
262227
static const zend_function_entry BreakIterator_class_functions[] = {
263-
PHP_ME(BreakIterator, __construct, ainfo_biter_void, ZEND_ACC_PRIVATE)
264-
PHP_ME_MAPPING(createWordInstance, breakiter_create_word_instance, ainfo_biter_locale, ZEND_ACC_STATIC | ZEND_ACC_PUBLIC)
265-
PHP_ME_MAPPING(createLineInstance, breakiter_create_line_instance, ainfo_biter_locale, ZEND_ACC_STATIC | ZEND_ACC_PUBLIC)
266-
PHP_ME_MAPPING(createCharacterInstance, breakiter_create_character_instance, ainfo_biter_locale, ZEND_ACC_STATIC | ZEND_ACC_PUBLIC)
267-
PHP_ME_MAPPING(createSentenceInstance, breakiter_create_sentence_instance, ainfo_biter_locale, ZEND_ACC_STATIC | ZEND_ACC_PUBLIC)
268-
PHP_ME_MAPPING(createTitleInstance, breakiter_create_title_instance, ainfo_biter_locale, ZEND_ACC_STATIC | ZEND_ACC_PUBLIC)
269-
PHP_ME_MAPPING(createCodePointInstance, breakiter_create_code_point_instance, ainfo_biter_void, ZEND_ACC_STATIC | ZEND_ACC_PUBLIC)
270-
PHP_ME_MAPPING(getText, breakiter_get_text, ainfo_biter_void, ZEND_ACC_PUBLIC)
271-
PHP_ME_MAPPING(setText, breakiter_set_text, ainfo_biter_setText, ZEND_ACC_PUBLIC)
272-
PHP_ME_MAPPING(first, breakiter_first, ainfo_biter_void, ZEND_ACC_PUBLIC)
273-
PHP_ME_MAPPING(last, breakiter_last, ainfo_biter_void, ZEND_ACC_PUBLIC)
274-
PHP_ME_MAPPING(previous, breakiter_previous, ainfo_biter_void, ZEND_ACC_PUBLIC)
275-
PHP_ME_MAPPING(next, breakiter_next, ainfo_biter_next, ZEND_ACC_PUBLIC)
276-
PHP_ME_MAPPING(current, breakiter_current, ainfo_biter_void, ZEND_ACC_PUBLIC)
277-
PHP_ME_MAPPING(following, breakiter_following, ainfo_biter_offset, ZEND_ACC_PUBLIC)
278-
PHP_ME_MAPPING(preceding, breakiter_preceding, ainfo_biter_offset, ZEND_ACC_PUBLIC)
279-
PHP_ME_MAPPING(isBoundary, breakiter_is_boundary, ainfo_biter_offset, ZEND_ACC_PUBLIC)
280-
PHP_ME_MAPPING(getLocale, breakiter_get_locale, ainfo_biter_get_locale, ZEND_ACC_PUBLIC)
281-
PHP_ME_MAPPING(getPartsIterator, breakiter_get_parts_iterator, ainfo_biter_getPartsIterator, ZEND_ACC_PUBLIC)
282-
283-
PHP_ME_MAPPING(getErrorCode, breakiter_get_error_code, ainfo_biter_void, ZEND_ACC_PUBLIC)
284-
PHP_ME_MAPPING(getErrorMessage, breakiter_get_error_message, ainfo_biter_void, ZEND_ACC_PUBLIC)
228+
PHP_ME(BreakIterator, __construct, arginfo_class_IntlBreakIterator___construct, ZEND_ACC_PRIVATE)
229+
PHP_ME_MAPPING(createWordInstance, breakiter_create_word_instance, arginfo_class_IntlBreakIterator_createWordInstance, ZEND_ACC_STATIC | ZEND_ACC_PUBLIC)
230+
PHP_ME_MAPPING(createLineInstance, breakiter_create_line_instance, arginfo_class_IntlBreakIterator_createLineInstance, ZEND_ACC_STATIC | ZEND_ACC_PUBLIC)
231+
PHP_ME_MAPPING(createCharacterInstance, breakiter_create_character_instance, arginfo_class_IntlBreakIterator_createCharacterInstance, ZEND_ACC_STATIC | ZEND_ACC_PUBLIC)
232+
PHP_ME_MAPPING(createSentenceInstance, breakiter_create_sentence_instance, arginfo_class_IntlBreakIterator_createSentenceInstance, ZEND_ACC_STATIC | ZEND_ACC_PUBLIC)
233+
PHP_ME_MAPPING(createTitleInstance, breakiter_create_title_instance, arginfo_class_IntlBreakIterator_createTitleInstance, ZEND_ACC_STATIC | ZEND_ACC_PUBLIC)
234+
PHP_ME_MAPPING(createCodePointInstance, breakiter_create_code_point_instance, arginfo_class_IntlBreakIterator_createCodePointInstance, ZEND_ACC_STATIC | ZEND_ACC_PUBLIC)
235+
PHP_ME_MAPPING(getText, breakiter_get_text, arginfo_class_IntlBreakIterator_getText, ZEND_ACC_PUBLIC)
236+
PHP_ME_MAPPING(setText, breakiter_set_text, arginfo_class_IntlBreakIterator_setText, ZEND_ACC_PUBLIC)
237+
PHP_ME_MAPPING(first, breakiter_first, arginfo_class_IntlBreakIterator_first, ZEND_ACC_PUBLIC)
238+
PHP_ME_MAPPING(last, breakiter_last, arginfo_class_IntlBreakIterator_last, ZEND_ACC_PUBLIC)
239+
PHP_ME_MAPPING(previous, breakiter_previous, arginfo_class_IntlBreakIterator_previous, ZEND_ACC_PUBLIC)
240+
PHP_ME_MAPPING(next, breakiter_next, arginfo_class_IntlBreakIterator_next, ZEND_ACC_PUBLIC)
241+
PHP_ME_MAPPING(current, breakiter_current, arginfo_class_IntlBreakIterator_current, ZEND_ACC_PUBLIC)
242+
PHP_ME_MAPPING(following, breakiter_following, arginfo_class_IntlBreakIterator_following, ZEND_ACC_PUBLIC)
243+
PHP_ME_MAPPING(preceding, breakiter_preceding, arginfo_class_IntlBreakIterator_preceding, ZEND_ACC_PUBLIC)
244+
PHP_ME_MAPPING(isBoundary, breakiter_is_boundary, arginfo_class_IntlBreakIterator_isBoundary, ZEND_ACC_PUBLIC)
245+
PHP_ME_MAPPING(getLocale, breakiter_get_locale, arginfo_class_IntlBreakIterator_getLocale, ZEND_ACC_PUBLIC)
246+
PHP_ME_MAPPING(getPartsIterator, breakiter_get_parts_iterator, arginfo_class_IntlBreakIterator_getPartsIterator, ZEND_ACC_PUBLIC)
247+
248+
PHP_ME_MAPPING(getErrorCode, breakiter_get_error_code, arginfo_class_IntlBreakIterator_getErrorCode, ZEND_ACC_PUBLIC)
249+
PHP_ME_MAPPING(getErrorMessage, breakiter_get_error_message, arginfo_class_IntlBreakIterator_getErrorMessage, ZEND_ACC_PUBLIC)
285250
PHP_FE_END
286251
};
287252
/* }}} */
288253

289254
/* {{{ RuleBasedBreakIterator_class_functions
290255
*/
291256
static const zend_function_entry RuleBasedBreakIterator_class_functions[] = {
292-
PHP_ME(IntlRuleBasedBreakIterator, __construct, ainfo_rbbi___construct, ZEND_ACC_PUBLIC)
293-
PHP_ME_MAPPING(getRules, rbbi_get_rules, ainfo_biter_void, ZEND_ACC_PUBLIC)
294-
PHP_ME_MAPPING(getRuleStatus, rbbi_get_rule_status, ainfo_biter_void, ZEND_ACC_PUBLIC)
295-
PHP_ME_MAPPING(getRuleStatusVec, rbbi_get_rule_status_vec, ainfo_biter_void, ZEND_ACC_PUBLIC)
296-
PHP_ME_MAPPING(getBinaryRules, rbbi_get_binary_rules, ainfo_biter_void, ZEND_ACC_PUBLIC)
257+
PHP_ME(IntlRuleBasedBreakIterator, __construct, arginfo_class_IntlRuleBasedBreakIterator___construct, ZEND_ACC_PUBLIC)
258+
PHP_ME_MAPPING(getRules, rbbi_get_rules, arginfo_class_IntlRuleBasedBreakIterator_getRules, ZEND_ACC_PUBLIC)
259+
PHP_ME_MAPPING(getRuleStatus, rbbi_get_rule_status, arginfo_class_IntlRuleBasedBreakIterator_getRuleStatus, ZEND_ACC_PUBLIC)
260+
PHP_ME_MAPPING(getRuleStatusVec, rbbi_get_rule_status_vec, arginfo_class_IntlRuleBasedBreakIterator_getRuleStatusVec, ZEND_ACC_PUBLIC)
261+
PHP_ME_MAPPING(getBinaryRules, rbbi_get_binary_rules, arginfo_class_IntlRuleBasedBreakIterator_getBinaryRules, ZEND_ACC_PUBLIC)
297262
PHP_FE_END
298263
};
299264
/* }}} */
300265

301266
/* {{{ CodePointBreakIterator_class_functions
302267
*/
303268
static const zend_function_entry CodePointBreakIterator_class_functions[] = {
304-
PHP_ME_MAPPING(getLastCodePoint, cpbi_get_last_code_point, ainfo_biter_void, ZEND_ACC_PUBLIC)
269+
PHP_ME_MAPPING(getLastCodePoint, cpbi_get_last_code_point, arginfo_class_IntlCodePointBreakIterator_getLastCodePoint, ZEND_ACC_PUBLIC)
305270
PHP_FE_END
306271
};
307272
/* }}} */

ext/intl/breakiterator/breakiterator_iterators.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
extern "C" {
2525
#define USE_BREAKITERATOR_POINTER
2626
#include "breakiterator_class.h"
27+
#include "breakiterator_arginfo.h"
2728
#include "../intl_convert.h"
2829
#include "../locale/locale.h"
2930
#include <zend_exceptions.h>
@@ -285,11 +286,8 @@ U_CFUNC PHP_METHOD(IntlPartsIterator, getBreakIterator)
285286
ZVAL_COPY_DEREF(return_value, biter_zval);
286287
}
287288

288-
ZEND_BEGIN_ARG_INFO_EX(ainfo_parts_it_void, 0, 0, 0)
289-
ZEND_END_ARG_INFO()
290-
291289
static const zend_function_entry IntlPartsIterator_class_functions[] = {
292-
PHP_ME(IntlPartsIterator, getBreakIterator, ainfo_parts_it_void, ZEND_ACC_PUBLIC)
290+
PHP_ME(IntlPartsIterator, getBreakIterator, arginfo_class_IntlPartsIterator_getBreakIterator, ZEND_ACC_PUBLIC)
293291
PHP_FE_END
294292
};
295293

0 commit comments

Comments
 (0)