[php-src] master: intl: stop including headers as C extern (#24617)

From: Date: Fri, 23 Oct 2026 20:51:55 +0000
Subject: [php-src] master: intl: stop including headers as C extern (#24617)
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-142642@lists.php.net to get a copy of this message
Author: Gina Peter Banyard (Girgias) Committer: GitHub (web-flow) Pusher: Girgias Date: 2026-10-23T21:51:52+01:00 Commit: https://github.com/php/php-src/commit/c0250bac3ac1983a099a20b5f6c6ef5787dcbc3d Raw diff: https://github.com/php/php-src/commit/c0250bac3ac1983a099a20b5f6c6ef5787dcbc3d.diff intl: stop including headers as C extern (#24617) Except for arginfo header as PHP_FUNCTION/PHP_METHOD are marked as U_CFUNC and the ext/date/php_date.h header doesn't use extern C. We now specificy the header symbols that _need_ to follow the C function ABI, meaning in some places we drop U_CFUNC declarations and in others we add it. Also use the BEGIN_EXTERN_C() portability macro when possible so that searching for this is easier. Changed paths: M ext/intl/breakiterator/breakiterator_class.cpp M ext/intl/breakiterator/breakiterator_class.h M ext/intl/breakiterator/breakiterator_iterators.cpp M ext/intl/breakiterator/breakiterator_iterators.h M ext/intl/breakiterator/breakiterator_methods.cpp M ext/intl/breakiterator/codepointiterator_methods.cpp M ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp M ext/intl/calendar/calendar_class.cpp M ext/intl/calendar/calendar_class.h M ext/intl/calendar/calendar_methods.cpp M ext/intl/calendar/gregoriancalendar_methods.cpp M ext/intl/collator/collator_attr.cpp M ext/intl/collator/collator_class.cpp M ext/intl/collator/collator_class.h M ext/intl/collator/collator_compare.cpp M ext/intl/collator/collator_convert.cpp M ext/intl/collator/collator_convert.h M ext/intl/collator/collator_create.cpp M ext/intl/collator/collator_error.cpp M ext/intl/collator/collator_locale.cpp M ext/intl/collator/collator_sort.cpp M ext/intl/common/common_date.cpp M ext/intl/common/common_date.h M ext/intl/common/common_enum.cpp M ext/intl/common/common_enum.h M ext/intl/common/common_error.cpp M ext/intl/converter/converter.cpp M ext/intl/converter/converter.h M ext/intl/converter/converter_class.h M ext/intl/dateformat/dateformat.cpp M ext/intl/dateformat/dateformat_attr.cpp M ext/intl/dateformat/dateformat_attrcpp.cpp M ext/intl/dateformat/dateformat_class.cpp M ext/intl/dateformat/dateformat_class.h M ext/intl/dateformat/dateformat_create.cpp M ext/intl/dateformat/dateformat_data.h M ext/intl/dateformat/dateformat_format.cpp M ext/intl/dateformat/dateformat_format_object.cpp M ext/intl/dateformat/dateformat_helpers.cpp M ext/intl/dateformat/dateformat_helpers.h M ext/intl/dateformat/dateformat_parse.cpp M ext/intl/dateformat/datepatterngenerator_class.cpp M ext/intl/dateformat/datepatterngenerator_class.h M ext/intl/dateformat/datepatterngenerator_methods.cpp M ext/intl/formatter/formatter_attr.cpp M ext/intl/formatter/formatter_class.cpp M ext/intl/formatter/formatter_class.h M ext/intl/formatter/formatter_data.h M ext/intl/formatter/formatter_format.cpp M ext/intl/formatter/formatter_format.h M ext/intl/formatter/formatter_main.cpp M ext/intl/formatter/formatter_parse.cpp M ext/intl/grapheme/grapheme.h M ext/intl/grapheme/grapheme_string.cpp M ext/intl/grapheme/grapheme_util.cpp M ext/intl/grapheme/grapheme_util.h M ext/intl/idn/idn.cpp M ext/intl/intl_convert.h M ext/intl/intl_convertcpp.cpp M ext/intl/intl_error.h M ext/intl/intl_icu_compat.h M ext/intl/listformatter/listformatter_class.cpp M ext/intl/listformatter/listformatter_class.h M ext/intl/locale/locale_class.cpp M ext/intl/locale/locale_methods.cpp M ext/intl/msgformat/msgformat.cpp M ext/intl/msgformat/msgformat_attr.cpp M ext/intl/msgformat/msgformat_class.cpp M ext/intl/msgformat/msgformat_class.h M ext/intl/msgformat/msgformat_data.cpp M ext/intl/msgformat/msgformat_data.h M ext/intl/msgformat/msgformat_format.cpp M ext/intl/msgformat/msgformat_helpers.cpp M ext/intl/msgformat/msgformat_parse.cpp M ext/intl/normalizer/normalizer_class.cpp M ext/intl/normalizer/normalizer_class.h M ext/intl/normalizer/normalizer_normalize.cpp M ext/intl/numberformatter/numberformatter_class.cpp M ext/intl/numberformatter/numberformatter_class.h M ext/intl/php_intl.h M ext/intl/rangeformatter/rangeformatter_class.cpp M ext/intl/rangeformatter/rangeformatter_class.h M ext/intl/reldateformatter/reldateformatter_class.cpp M ext/intl/reldateformatter/reldateformatter_class.h M ext/intl/resourcebundle/resourcebundle.cpp M ext/intl/resourcebundle/resourcebundle.h M ext/intl/resourcebundle/resourcebundle_class.cpp M ext/intl/resourcebundle/resourcebundle_class.h M ext/intl/resourcebundle/resourcebundle_iterator.cpp M ext/intl/resourcebundle/resourcebundle_iterator.h M ext/intl/spoofchecker/spoofchecker_class.cpp M ext/intl/spoofchecker/spoofchecker_class.h M ext/intl/spoofchecker/spoofchecker_create.cpp M ext/intl/spoofchecker/spoofchecker_main.cpp M ext/intl/timezone/timezone_class.cpp M ext/intl/timezone/timezone_class.h M ext/intl/timezone/timezone_methods.cpp M ext/intl/transliterator/transliterator_class.cpp M ext/intl/transliterator/transliterator_class.h M ext/intl/transliterator/transliterator_methods.cpp M ext/intl/uchar/uchar.cpp M ext/intl/uchar/uchar.h Diff: diff --git a/ext/intl/breakiterator/breakiterator_class.cpp b/ext/intl/breakiterator/breakiterator_class.cpp index 35c5b6956b4a..c9f2a53b58d1 100644 --- a/ext/intl/breakiterator/breakiterator_class.cpp +++ b/ext/intl/breakiterator/breakiterator_class.cpp @@ -24,14 +24,14 @@ #include <typeinfo> -extern "C" { #define USE_BREAKITERATOR_POINTER 1 #include "breakiterator_class.h" +BEGIN_EXTERN_C() #include "breakiterator_arginfo.h" +END_EXTERN_C() #include <zend_exceptions.h> #include <zend_interfaces.h> #include <assert.h> -} using PHP::CodePointBreakIterator; using icu::RuleBasedBreakIterator; diff --git a/ext/intl/breakiterator/breakiterator_class.h b/ext/intl/breakiterator/breakiterator_class.h index f4258cbae5b1..9038aa3e7f78 100644 --- a/ext/intl/breakiterator/breakiterator_class.h +++ b/ext/intl/breakiterator/breakiterator_class.h @@ -62,6 +62,7 @@ typedef struct { RETURN_THROWS(); \ } +BEGIN_EXTERN_C() void breakiterator_object_create(zval *object, BreakIterator *break_iter, int brand_new); void breakiterator_register_BreakIterator_class(void); @@ -70,5 +71,6 @@ extern zend_class_entry *BreakIterator_ce_ptr, *RuleBasedBreakIterator_ce_ptr; extern zend_object_handlers BreakIterator_handlers; +END_EXTERN_C() #endif /* #ifndef BREAKITERATOR_CLASS_H */ diff --git a/ext/intl/breakiterator/breakiterator_iterators.cpp b/ext/intl/breakiterator/breakiterator_iterators.cpp index def0fa9d9fc5..8b1c136a0647 100644 --- a/ext/intl/breakiterator/breakiterator_iterators.cpp +++ b/ext/intl/breakiterator/breakiterator_iterators.cpp @@ -21,15 +21,15 @@ #include "breakiterator_iterators.h" #include "../common/common_enum.h" -extern "C" { #define USE_BREAKITERATOR_POINTER #include "breakiterator_class.h" +BEGIN_EXTERN_C() #include "breakiterator_iterators_arginfo.h" +END_EXTERN_C() #include "../intl_convert.h" #include "../locale/locale.h" #include <zend_exceptions.h> #include <zend_interfaces.h> -} static zend_class_entry *IntlPartsIterator_ce_ptr; diff --git a/ext/intl/breakiterator/breakiterator_iterators.h b/ext/intl/breakiterator/breakiterator_iterators.h index 3ac07cd271c8..bca19cc2b0b2 100644 --- a/ext/intl/breakiterator/breakiterator_iterators.h +++ b/ext/intl/breakiterator/breakiterator_iterators.h @@ -16,10 +16,8 @@ #include <unicode/umachine.h> -U_CDECL_BEGIN #include <math.h> #include <php.h> -U_CDECL_END typedef enum { PARTS_ITERATOR_KEY_SEQUENTIAL, diff --git a/ext/intl/breakiterator/breakiterator_methods.cpp b/ext/intl/breakiterator/breakiterator_methods.cpp index 60659915bf85..05d8c659bf23 100644 --- a/ext/intl/breakiterator/breakiterator_methods.cpp +++ b/ext/intl/breakiterator/breakiterator_methods.cpp @@ -21,14 +21,12 @@ #include "breakiterator_iterators.h" -extern "C" { #include "../php_intl.h" #define USE_BREAKITERATOR_POINTER 1 #include "breakiterator_class.h" #include "../locale/locale.h" #include <zend_exceptions.h> #include <zend_interfaces.h> -} using PHP::CodePointBreakIterator; using icu::BreakIterator; diff --git a/ext/intl/breakiterator/codepointiterator_methods.cpp b/ext/intl/breakiterator/codepointiterator_methods.cpp index 3b5044cb45a1..934e10c2cbf0 100644 --- a/ext/intl/breakiterator/codepointiterator_methods.cpp +++ b/ext/intl/breakiterator/codepointiterator_methods.cpp @@ -14,10 +14,8 @@ #include "codepointiterator_internal.h" -extern "C" { #define USE_BREAKITERATOR_POINTER 1 #include "breakiterator_class.h" -} using PHP::CodePointBreakIterator; diff --git a/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp b/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp index 611144b58ab6..5a978a97f43c 100644 --- a/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp +++ b/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp @@ -15,12 +15,10 @@ #include <unicode/rbbi.h> #include <memory> -extern "C" { #define USE_BREAKITERATOR_POINTER 1 #include "breakiterator_class.h" #include <zend_exceptions.h> #include <limits.h> -} #include "../intl_convertcpp.h" #include "../intl_common.h" diff --git a/ext/intl/calendar/calendar_class.cpp b/ext/intl/calendar/calendar_class.cpp index 46e8ba49b89c..b95028e0c9d9 100644 --- a/ext/intl/calendar/calendar_class.cpp +++ b/ext/intl/calendar/calendar_class.cpp @@ -21,15 +21,15 @@ #include <unicode/calendar.h> #include <unicode/gregocal.h> -extern "C" { #define USE_TIMEZONE_POINTER 1 #include "../timezone/timezone_class.h" #define USE_CALENDAR_POINTER 1 #include "calendar_class.h" +BEGIN_EXTERN_C() #include "calendar_arginfo.h" +END_EXTERN_C() #include <zend_exceptions.h> #include <assert.h> -} using icu::GregorianCalendar; using icu::Locale; @@ -40,7 +40,7 @@ zend_class_entry *GregorianCalendar_ce_ptr; zend_object_handlers Calendar_handlers; /* }}} */ -U_CFUNC void calendar_object_create(zval *object, +void calendar_object_create(zval *object, Calendar *calendar) { UClassID classId = calendar->getDynamicClassID(); @@ -57,14 +57,14 @@ U_CFUNC void calendar_object_create(zval *object, calendar_object_construct(object, calendar); } -U_CFUNC Calendar *calendar_fetch_native_calendar(zend_object *object) +Calendar *calendar_fetch_native_calendar(zend_object *object) { Calendar_object *co = php_intl_calendar_fetch_object(object); return co->ucal; } -U_CFUNC void calendar_object_construct(zval *object, +void calendar_object_construct(zval *object, Calendar *calendar) { Calendar_object *co; diff --git a/ext/intl/calendar/calendar_class.h b/ext/intl/calendar/calendar_class.h index 7c74aede9475..f025bd4525ae 100644 --- a/ext/intl/calendar/calendar_class.h +++ b/ext/intl/calendar/calendar_class.h @@ -63,10 +63,12 @@ Calendar *calendar_fetch_native_calendar(zend_object *object); void calendar_object_construct(zval *object, Calendar *calendar); +BEGIN_EXTERN_C() void calendar_register_IntlCalendar_class(void); extern zend_class_entry *Calendar_ce_ptr, *GregorianCalendar_ce_ptr; extern zend_object_handlers Calendar_handlers; +END_EXTERN_C() #endif /* #ifndef CALENDAR_CLASS_H */ diff --git a/ext/intl/calendar/calendar_methods.cpp b/ext/intl/calendar/calendar_methods.cpp index f4c9cb36cded..990eea9eeaf3 100644 --- a/ext/intl/calendar/calendar_methods.cpp +++ b/ext/intl/calendar/calendar_methods.cpp @@ -27,7 +27,6 @@ #include "../intl_convertcpp.h" #include "../common/common_date.h" -extern "C" { #include "../php_intl.h" #define USE_TIMEZONE_POINTER 1 #include "../timezone/timezone_class.h" @@ -36,8 +35,9 @@ extern "C" { #include "../intl_convert.h" #include <zend_exceptions.h> #include <zend_interfaces.h> +BEGIN_EXTERN_C() #include <ext/date/php_date.h> -} +END_EXTERN_C() #include "../common/common_enum.h" using icu::Locale; diff --git a/ext/intl/calendar/gregoriancalendar_methods.cpp b/ext/intl/calendar/gregoriancalendar_methods.cpp index 9573bdf5d9e7..bb276ddedf09 100644 --- a/ext/intl/calendar/gregoriancalendar_methods.cpp +++ b/ext/intl/calendar/gregoriancalendar_methods.cpp @@ -24,16 +24,16 @@ #include <unicode/gregocal.h> #include <unicode/ustring.h> -extern "C" { #include "../php_intl.h" #include "../intl_common.h" #define USE_TIMEZONE_POINTER 1 #include "../timezone/timezone_class.h" #define USE_CALENDAR_POINTER 1 #include "calendar_class.h" +BEGIN_EXTERN_C() #include <ext/date/php_date.h> +END_EXTERN_C() #include "zend_exceptions.h" -} using icu::GregorianCalendar; using icu::Locale; diff --git a/ext/intl/collator/collator_attr.cpp b/ext/intl/collator/collator_attr.cpp index 04ce848abe0b..e79e2e13974d 100644 --- a/ext/intl/collator/collator_attr.cpp +++ b/ext/intl/collator/collator_attr.cpp @@ -22,9 +22,7 @@ #include <unicode/unistr.h> #endif -extern "C" { #include "php_intl.h" -} #include "collator_class.h" #include "collator_convert.h" diff --git a/ext/intl/collator/collator_class.cpp b/ext/intl/collator/collator_class.cpp index 808f7ae127db..6e4996d065fe 100644 --- a/ext/intl/collator/collator_class.cpp +++ b/ext/intl/collator/collator_class.cpp @@ -15,11 +15,12 @@ #include "collator.h" #include "collator_class.h" -extern "C" { #include "php_intl.h" #include "intl_error.h" + +BEGIN_EXTERN_C() #include "collator_arginfo.h" -} +END_EXTERN_C() #include "collator_sort.h" #include "collator_convert.h" diff --git a/ext/intl/collator/collator_class.h b/ext/intl/collator/collator_class.h index 1f1629cce770..84790e88f808 100644 --- a/ext/intl/collator/collator_class.h +++ b/ext/intl/collator/collator_class.h @@ -18,15 +18,9 @@ #include <php.h> -#ifdef __cplusplus -extern "C" { -#endif #include "../intl_common.h" #include "../intl_error.h" #include "../intl_data.h" -#ifdef __cplusplus -} -#endif #include <unicode/ucol.h> @@ -64,17 +58,12 @@ static zend_always_inline zend_result collator_check_initialized(Collator_object return SUCCESS; } - -#ifdef __cplusplus -extern "C" { -#endif +BEGIN_EXTERN_C() void collator_register_Collator_symbols(int module_number); void collator_object_destroy( Collator_object* co ); -#ifdef __cplusplus -} -#endif extern zend_class_entry *Collator_ce_ptr; +END_EXTERN_C() /* Auxiliary macros */ diff --git a/ext/intl/collator/collator_compare.cpp b/ext/intl/collator/collator_compare.cpp index 4bfe0956a3f7..5607f1fd330c 100644 --- a/ext/intl/collator/collator_compare.cpp +++ b/ext/intl/collator/collator_compare.cpp @@ -22,10 +22,8 @@ #include <unicode/unistr.h> #endif -extern "C" { #include "php_intl.h" #include "intl_convert.h" -} #include "collator_class.h" /* {{{ Compare two strings. */ diff --git a/ext/intl/collator/collator_convert.cpp b/ext/intl/collator/collator_convert.cpp index 0f6e62f1b557..7edfe61839e2 100644 --- a/ext/intl/collator/collator_convert.cpp +++ b/ext/intl/collator/collator_convert.cpp @@ -22,10 +22,8 @@ #include <unicode/unistr.h> #endif -extern "C" { #include "php_intl.h" #include "intl_convert.h" -} #include "collator_class.h" #include "collator_is_numeric.h" #include "collator_convert.h" @@ -127,7 +125,7 @@ static void collator_convert_hash_item_from_utf16_to_utf8( /* {{{ collator_convert_hash_from_utf8_to_utf16 * Convert values of the given hash from UTF-8 encoding to UTF-16LE. */ -U_CFUNC void collator_convert_hash_from_utf8_to_utf16( HashTable* hash, UErrorCode* status ) +void collator_convert_hash_from_utf8_to_utf16( HashTable* hash, UErrorCode* status ) { zend_ulong hashIndex; zval *hashData; @@ -146,7 +144,7 @@ U_CFUNC void collator_convert_hash_from_utf8_to_utf16( HashTable* hash, UErrorCo /* {{{ collator_convert_hash_from_utf16_to_utf8 * Convert values of the given hash from UTF-16LE encoding to UTF-8. */ -U_CFUNC void collator_convert_hash_from_utf16_to_utf8( HashTable* hash, UErrorCode* status ) +void collator_convert_hash_from_utf16_to_utf8( HashTable* hash, UErrorCode* status ) { zend_ulong hashIndex; zend_string *hashKey; @@ -171,7 +169,7 @@ U_CFUNC void collator_convert_hash_from_utf16_to_utf8( HashTable* hash, UErrorCo * * @return zval* Converted string. */ -U_CFUNC zval* collator_convert_zstr_utf16_to_utf8( zval* utf16_zval, zval *rv ) +zval* collator_convert_zstr_utf16_to_utf8( zval* utf16_zval, zval *rv ) { zend_string* u8str; UErrorCode status = U_ZERO_ERROR; @@ -190,7 +188,7 @@ U_CFUNC zval* collator_convert_zstr_utf16_to_utf8( zval* utf16_zval, zval *rv ) } /* }}} */ -U_CFUNC zend_string *collator_convert_zstr_utf8_to_utf16(zend_string *utf8_str) +zend_string *collator_convert_zstr_utf8_to_utf16(zend_string *utf8_str) { UErrorCode status = U_ZERO_ERROR; @@ -209,7 +207,7 @@ U_CFUNC zend_string *collator_convert_zstr_utf8_to_utf16(zend_string *utf8_str) /* {{{ collator_convert_object_to_string * Convert object to UTF16-encoded string. */ -U_CFUNC zval* collator_convert_object_to_string( zval* obj, zval *rv ) +zval* collator_convert_object_to_string( zval* obj, zval *rv ) { zval* zstr = nullptr; UErrorCode status = U_ZERO_ERROR; @@ -272,7 +270,7 @@ U_CFUNC zval* collator_convert_object_to_string( zval* obj, zval *rv ) * * @return zval* Number. If str is not numeric string return number zero. */ -U_CFUNC zval* collator_convert_string_to_number( zval* str, zval *rv ) +zval* collator_convert_string_to_number( zval* str, zval *rv ) { zval* num = collator_convert_string_to_number_if_possible( str, rv ); if( num == str ) @@ -296,7 +294,7 @@ U_CFUNC zval* collator_convert_string_to_number( zval* str, zval *rv ) * * @return zval* Number. If str is not numeric string return number zero. */ -U_CFUNC zval* collator_convert_string_to_double( zval* str, zval *rv ) +zval* collator_convert_string_to_double( zval* str, zval *rv ) { zval* num = collator_convert_string_to_number( str, rv ); if( Z_TYPE_P(num) == IS_LONG ) @@ -317,7 +315,7 @@ U_CFUNC zval* collator_convert_string_to_double( zval* str, zval *rv ) * @return zval* Number if str is numeric string. Otherwise * original str param. */ -U_CFUNC zval* collator_convert_string_to_number_if_possible( zval* str, zval *rv ) +zval* collator_convert_string_to_number_if_possible( zval* str, zval *rv ) { uint8_t is_numeric = 0; zend_long lval = 0; @@ -351,7 +349,7 @@ U_CFUNC zval* collator_convert_string_to_number_if_possible( zval* str, zval *rv * * @return zend_string* UTF16 string. */ -U_CFUNC zend_string *collator_zval_to_string(zval *arg) +zend_string *collator_zval_to_string(zval *arg) { // TODO: This is extremely weird in that it leaves pre-existing strings alone and does not // perform a UTF-8 to UTF-16 conversion for them. The assumption is that values that are @@ -379,7 +377,7 @@ U_CFUNC zend_string *collator_zval_to_string(zval *arg) * @return zval* Normalized copy of arg or unmodified arg * if normalization is not needed. */ -U_CFUNC zval* collator_normalize_sort_argument( zval* arg, zval *rv ) +zval* collator_normalize_sort_argument( zval* arg, zval *rv ) { zval* n_arg = nullptr; diff --git a/ext/intl/collator/collator_convert.h b/ext/intl/collator/collator_convert.h index 1d65d9d2d76b..13ffbaabd72c 100644 --- a/ext/intl/collator/collator_convert.h +++ b/ext/intl/collator/collator_convert.h @@ -19,9 +19,6 @@ #include <php.h> #include <unicode/utypes.h> -#ifdef __cplusplus -extern "C" { -#endif void collator_convert_hash_from_utf8_to_utf16( HashTable* hash, UErrorCode* status ); void collator_convert_hash_from_utf16_to_utf8( HashTable* hash, UErrorCode* status ); @@ -35,8 +32,5 @@ zval* collator_convert_string_to_number_if_possible( zval* str, zval *rv ); zval* collator_convert_string_to_double( zval* str, zval *rv ); zend_string *collator_zval_to_string(zval *arg); -#ifdef __cplusplus -} -#endif #endif // COLLATOR_CONVERT_H diff --git a/ext/intl/collator/collator_create.cpp b/ext/intl/collator/collator_create.cpp index d2f16b67a26f..65397bfb573f 100644 --- a/ext/intl/collator/collator_create.cpp +++ b/ext/intl/collator/collator_create.cpp @@ -22,9 +22,7 @@ #include <unicode/unistr.h> #endif -extern "C" { #include "php_intl.h" -} #include "collator_class.h" #include "intl_data.h" diff --git a/ext/intl/collator/collator_error.cpp b/ext/intl/collator/collator_error.cpp index 2a1eda8f9f36..c16140bbe223 100644 --- a/ext/intl/collator/collator_error.cpp +++ b/ext/intl/collator/collator_error.cpp @@ -22,9 +22,7 @@ #include <unicode/unistr.h> #endif -extern "C" { #include "php_intl.h" -} #include "collator_class.h" /* {{{ Get collator's last error code. */ diff --git a/ext/intl/collator/collator_locale.cpp b/ext/intl/collator/collator_locale.cpp index 20aba988fb40..2d346f439c9d 100644 --- a/ext/intl/collator/collator_locale.cpp +++ b/ext/intl/collator/collator_locale.cpp @@ -22,9 +22,7 @@ #include <unicode/unistr.h> #endif -extern "C" { #include "php_intl.h" -} #include "collator_class.h" #include "intl_convert.h" diff --git a/ext/intl/collator/collator_sort.cpp b/ext/intl/collator/collator_sort.cpp index dc5898d23a6e..37f3be5ed291 100644 --- a/ext/intl/collator/collator_sort.cpp +++ b/ext/intl/collator/collator_sort.cpp @@ -22,10 +22,8 @@ #include <unicode/unistr.h> #endif -extern "C" { #include "php_intl.h" #include "intl_convert.h" -} #include "collator.h" #include "collator_class.h" #include "collator_sort.h" diff --git a/ext/intl/common/common_date.cpp b/ext/intl/common/common_date.cpp index c9eb45b0f2d9..db800cc01cc6 100644 --- a/ext/intl/common/common_date.cpp +++ b/ext/intl/common/common_date.cpp @@ -16,12 +16,13 @@ #include <unicode/calendar.h> -extern "C" { #include "../php_intl.h" #define USE_CALENDAR_POINTER 1 #include "../calendar/calendar_class.h" + +U_CDECL_BEGIN #include <ext/date/php_date.h> -} +U_CDECL_END using icu::TimeZone; using icu::UnicodeString; diff --git a/ext/intl/common/common_date.h b/ext/intl/common/common_date.h index a3a58eb3b037..42936875e36c 100644 --- a/ext/intl/common/common_date.h +++ b/ext/intl/common/common_date.h @@ -17,10 +17,8 @@ #include <unicode/umachine.h> -U_CDECL_BEGIN #include <php.h> #include "../intl_error.h" -U_CDECL_END #ifdef __cplusplus diff --git a/ext/intl/common/common_enum.cpp b/ext/intl/common/common_enum.cpp index 16c892074915..b95491945070 100644 --- a/ext/intl/common/common_enum.cpp +++ b/ext/intl/common/common_enum.cpp @@ -18,21 +18,13 @@ #include "../intl_cppshims.h" -// Fix build on Windows/old versions of ICU -#include <stdio.h> - -extern "C" { #include <zend_attributes.h> -} +#include <zend_interfaces.h> +#include <zend_exceptions.h> #include "common_enum.h" #include "common_arginfo.h" -extern "C" { -#include <zend_interfaces.h> -#include <zend_exceptions.h> -} - zend_class_entry *IntlIterator_ce_ptr; zend_object_handlers IntlIterator_handlers; diff --git a/ext/intl/common/common_enum.h b/ext/intl/common/common_enum.h index e4a8b5461df6..48a11bfbbea7 100644 --- a/ext/intl/common/common_enum.h +++ b/ext/intl/common/common_enum.h @@ -17,17 +17,12 @@ #define INTL_COMMON_ENUM_H #include <unicode/umachine.h> -#ifdef __cplusplus + #include <unicode/strenum.h> -extern "C" { #include <math.h> -#endif #include <php.h> #include "../intl_error.h" #include "../intl_data.h" -#ifdef __cplusplus -} -#endif #define INTLITERATOR_ERROR(ii) (ii)->err #define INTLITERATOR_ERROR_P(ii) &(INTLITERATOR_ERROR(ii)) diff --git a/ext/intl/common/common_error.cpp b/ext/intl/common/common_error.cpp index 8d0cca52bb77..7938cbd1dff9 100644 --- a/ext/intl/common/common_error.cpp +++ b/ext/intl/common/common_error.cpp @@ -17,10 +17,8 @@ #include <config.h> #endif -extern "C" { #include "php_intl.h" #include "intl_error.h" -} /* {{{ Get code of the last occurred error. */ U_CFUNC PHP_FUNCTION( intl_get_error_code ) diff --git a/ext/intl/converter/converter.cpp b/ext/intl/converter/converter.cpp index 3023da6ef2c8..55c35399fe00 100644 --- a/ext/intl/converter/converter.cpp +++ b/ext/intl/converter/converter.cpp @@ -22,12 +22,10 @@ #include "converter_class.h" -extern "C" { #include "converter.h" #include "php_intl.h" #include "../intl_error.h" #include "../intl_common.h" -} #define CONV_GET(pzv) (Z_INTL_CONVERTER_P((pzv))) #define THROW_UFAILURE(obj, error) php_converter_throw_failure(obj, error, \ diff --git a/ext/intl/converter/converter.h b/ext/intl/converter/converter.h index 60967d196723..af8147636512 100644 --- a/ext/intl/converter/converter.h +++ b/ext/intl/converter/converter.h @@ -19,14 +19,10 @@ #include <config.h> #endif -#include "php.h" +#include "zend_portability.h" -#ifdef __cplusplus -extern "C" { -#endif +BEGIN_EXTERN_C() int php_converter_minit(INIT_FUNC_ARGS); -#ifdef __cplusplus -} -#endif +END_EXTERN_C() #endif /* PHP_INTL_CONVERTER_H */ diff --git a/ext/intl/converter/converter_class.h b/ext/intl/converter/converter_class.h index 9b16e3b417d2..3adfd3a6e524 100644 --- a/ext/intl/converter/converter_class.h +++ b/ext/intl/converter/converter_class.h @@ -17,14 +17,7 @@ #include "php.h" #include <unicode/ucnv.h> - -#ifdef __cplusplus -extern "C" { -#endif #include "../intl_error.h" -#ifdef __cplusplus -} -#endif typedef struct _php_converter_object { UConverter *src, *dest; diff --git a/ext/intl/dateformat/dateformat.cpp b/ext/intl/dateformat/dateformat.cpp index 64454a8afde9..adc963e4bf25 100644 --- a/ext/intl/dateformat/dateformat.cpp +++ b/ext/intl/dateformat/dateformat.cpp @@ -17,9 +17,7 @@ #include <unicode/udat.h> -extern "C" { #include "php_intl.h" -} #include "dateformat_class.h" #include "dateformat.h" diff --git a/ext/intl/dateformat/dateformat_attr.cpp b/ext/intl/dateformat/dateformat_attr.cpp index 170a85889d53..fc248ba5da13 100644 --- a/ext/intl/dateformat/dateformat_attr.cpp +++ b/ext/intl/dateformat/dateformat_attr.cpp @@ -15,10 +15,8 @@ #include <config.h> #endif -extern "C" { #include "../php_intl.h" #include "../intl_convert.h" -} #include "dateformat_class.h" #include "dateformat_class.h" diff --git a/ext/intl/dateformat/dateformat_attrcpp.cpp b/ext/intl/dateformat/dateformat_attrcpp.cpp index 1c8fb88a3d51..38f90da3ab59 100644 --- a/ext/intl/dateformat/dateformat_attrcpp.cpp +++ b/ext/intl/dateformat/dateformat_attrcpp.cpp @@ -18,14 +18,12 @@ #include <unicode/calendar.h> #include <unicode/datefmt.h> -extern "C" { #include "../php_intl.h" #include "dateformat_class.h" #define USE_TIMEZONE_POINTER 1 #include "../timezone/timezone_class.h" #define USE_CALENDAR_POINTER 1 #include "../calendar/calendar_class.h" -} #include "../intl_convertcpp.h" #include "dateformat_helpers.h" diff --git a/ext/intl/dateformat/dateformat_class.cpp b/ext/intl/dateformat/dateformat_class.cpp index 45a6c56cc1c3..9e22ad4f4194 100644 --- a/ext/intl/dateformat/dateformat_class.cpp +++ b/ext/intl/dateformat/dateformat_class.cpp @@ -13,13 +13,13 @@ */ #include <unicode/udat.h> -extern "C" { #include "dateformat_class.h" #include "php_intl.h" #include "dateformat_data.h" #include "dateformat.h" +BEGIN_EXTERN_C() #include "dateformat_arginfo.h" -} +END_EXTERN_C() #include <zend_exceptions.h> diff --git a/ext/intl/dateformat/dateformat_class.h b/ext/intl/dateformat/dateformat_class.h index bef8f6dd6146..41d144687d18 100644 --- a/ext/intl/dateformat/dateformat_class.h +++ b/ext/intl/dateformat/dateformat_class.h @@ -16,15 +16,9 @@ #include <php.h> -#ifdef __cplusplus -extern "C" { -#endif #include "intl_common.h" #include "intl_error.h" #include "intl_data.h" -#ifdef __cplusplus -} -#endif #include "dateformat_data.h" typedef struct { @@ -39,14 +33,10 @@ typedef struct { #define php_intl_dateformatter_fetch_object(obj) ZEND_CONTAINER_OF(obj, IntlDateFormatter_object, zo) #define Z_INTL_DATEFORMATTER_P(zv) php_intl_dateformatter_fetch_object(Z_OBJ_P(zv)) -#ifdef __cplusplus -extern "C" { -#endif +BEGIN_EXTERN_C() void dateformat_register_IntlDateFormatter_class( void ); extern zend_class_entry *IntlDateFormatter_ce_ptr; -#ifdef __cplusplus -} -#endif +END_EXTERN_C() /* Auxiliary macros */ diff --git a/ext/intl/dateformat/dateformat_create.cpp b/ext/intl/dateformat/dateformat_create.cpp index df98c7178fc6..29f20514e3c7 100644 --- a/ext/intl/dateformat/dateformat_create.cpp +++ b/ext/intl/dateformat/dateformat_create.cpp @@ -19,7 +19,6 @@ #include <unicode/calendar.h> #include <unicode/datefmt.h> -extern "C" { #include <unicode/ustring.h> #include <unicode/udat.h> #include <unicode/uloc.h> @@ -32,7 +31,6 @@ extern "C" { #define USE_TIMEZONE_POINTER 1 #include "../timezone/timezone_class.h" #include "../intl_convert.h" -} #include "dateformat_helpers.h" #include "zend_exceptions.h" diff --git a/ext/intl/dateformat/dateformat_data.h b/ext/intl/dateformat/dateformat_data.h index b93b9d78c034..8185b98ed476 100644 --- a/ext/intl/dateformat/dateformat_data.h +++ b/ext/intl/dateformat/dateformat_data.h @@ -18,13 +18,7 @@ #include <unicode/udat.h> -#ifdef __cplusplus -extern "C" { -#endif #include "intl_error.h" -#ifdef __cplusplus -} -#endif typedef struct { // error handling @@ -34,13 +28,7 @@ typedef struct { UDateFormat * udatf; } dateformat_data; -#ifdef __cplusplus -extern "C" { -#endif void dateformat_data_init( dateformat_data* datef_data ); void dateformat_data_free( dateformat_data* datef_data ); -#ifdef __cplusplus -} -#endif #endif // DATE_FORMAT_DATA_H diff --git a/ext/intl/dateformat/dateformat_format.cpp b/ext/intl/dateformat/dateformat_format.cpp index 8890332dd406..194312913882 100644 --- a/ext/intl/dateformat/dateformat_format.cpp +++ b/ext/intl/dateformat/dateformat_format.cpp @@ -19,10 +19,8 @@ #include <unicode/ustring.h> #include <unicode/unum.h> -extern "C" { #include "../php_intl.h" #include "../intl_convert.h" -} #include "../common/common_date.h" #include "dateformat.h" diff --git a/ext/intl/dateformat/dateformat_format_object.cpp b/ext/intl/dateformat/dateformat_format_object.cpp index 52199a305f0f..3c115a2b5a50 100644 --- a/ext/intl/dateformat/dateformat_format_object.cpp +++ b/ext/intl/dateformat/dateformat_format_object.cpp @@ -23,14 +23,15 @@ #include "../intl_convertcpp.h" -extern "C" { #include "../php_intl.h" #include "../locale/locale.h" #define USE_CALENDAR_POINTER 1 #include "../calendar/calendar_class.h" -#include <ext/date/php_date.h> #include "../common/common_date.h" -} + +BEGIN_EXTERN_C() +#include <ext/date/php_date.h> +END_EXTERN_C() using icu::Locale; using icu::DateFormat; diff --git a/ext/intl/dateformat/dateformat_helpers.cpp b/ext/intl/dateformat/dateformat_helpers.cpp index 5d93536807a9..2b35bb5c197e 100644 --- a/ext/intl/dateformat/dateformat_helpers.cpp +++ b/ext/intl/dateformat/dateformat_helpers.cpp @@ -21,12 +21,10 @@ #include "dateformat_helpers.h" -extern "C" { #include "../php_intl.h" #include <Zend/zend_operators.h> #define USE_CALENDAR_POINTER 1 #include "../calendar/calendar_class.h" -} // Artificial value to set for a pure proleptic gregorian calendar (until icu provides it eventually) #define UCAL_PHP_PROLEPTIC_GREGORIAN -16 diff --git a/ext/intl/dateformat/dateformat_helpers.h b/ext/intl/dateformat/dateformat_helpers.h index f71e7f368706..fb2de2d98080 100644 --- a/ext/intl/dateformat/dateformat_helpers.h +++ b/ext/intl/dateformat/dateformat_helpers.h @@ -22,9 +22,7 @@ #include <unicode/calendar.h> #include <unicode/datefmt.h> -extern "C" { #include "../php_intl.h" -} using icu::Locale; using icu::Calendar; diff --git a/ext/intl/dateformat/dateformat_parse.cpp b/ext/intl/dateformat/dateformat_parse.cpp index 8a554ae404de..4598a9e93c1f 100644 --- a/ext/intl/dateformat/dateformat_parse.cpp +++ b/ext/intl/dateformat/dateformat_parse.cpp @@ -19,10 +19,8 @@ #include <unicode/ustring.h> #include <math.h> -extern "C" { #include "php_intl.h" #include "intl_convert.h" -} #include "dateformat.h" #include "dateformat_class.h" #include "dateformat_data.h" diff --git a/ext/intl/dateformat/datepatterngenerator_class.cpp b/ext/intl/dateformat/datepatterngenerator_class.cpp index 4a137d916f12..eccf8364899a 100644 --- a/ext/intl/dateformat/datepatterngenerator_class.cpp +++ b/ext/intl/dateformat/datepatterngenerator_class.cpp @@ -20,13 +20,13 @@ #include <unicode/dtptngen.h> -extern "C" { #define USE_DATETIMEPATTERNGENERATOR_POINTER 1 #include "datepatterngenerator_class.h" +BEGIN_EXTERN_C() #include "datepatterngenerator_arginfo.h" +END_EXTERN_C() #include <zend_exceptions.h> #include <assert.h> -} using icu::DateTimePatternGenerator; using icu::Locale; @@ -97,7 +97,7 @@ static zend_object *IntlDatePatternGenerator_object_create(zend_class_entry *ce) /* * Initialize 'IntlDatePatternGenerator' class */ -void dateformat_register_IntlDatePatternGenerator_class( void ) +U_CFUNC void dateformat_register_IntlDatePatternGenerator_class( void ) { /* Create and register 'IntlDatePatternGenerator' class. */ IntlDatePatternGenerator_ce_ptr = register_class_IntlDatePatternGenerator(); diff --git a/ext/intl/dateformat/datepatterngenerator_class.h b/ext/intl/dateformat/datepatterngenerator_class.h index c2c280e2df2c..cc8526dc56b5 100644 --- a/ext/intl/dateformat/datepatterngenerator_class.h +++ b/ext/intl/dateformat/datepatterngenerator_class.h @@ -55,10 +55,12 @@ typedef struct { RETURN_THROWS(); \ } +BEGIN_EXTERN_C() void dateformat_register_IntlDatePatternGenerator_class(void); extern zend_class_entry *IntlDatePatternGenerator_ce_ptr; extern zend_object_handlers IntlDatePatternGenerator_handlers; +END_EXTERN_C() #endif /* #ifndef DATEPATTERNGENERATOR_CLASS_H */ diff --git a/ext/intl/dateformat/datepatterngenerator_methods.cpp b/ext/intl/dateformat/datepatterngenerator_methods.cpp index 24943d4ec9b4..ebebfde87ce1 100644 --- a/ext/intl/dateformat/datepatterngenerator_methods.cpp +++ b/ext/intl/dateformat/datepatterngenerator_methods.cpp @@ -18,13 +18,11 @@ #include "../intl_convertcpp.h" -extern "C" { #include "php_intl.h" #define USE_DATETIMEPATTERNGENERATOR_POINTER 1 #include "datepatterngenerator_class.h" #include <zend_exceptions.h> #include <assert.h> -} using icu::DateTimePatternGenerator; using icu::Locale; diff --git a/ext/intl/formatter/formatter_attr.cpp b/ext/intl/formatter/formatter_attr.cpp index dee5a203b062..962dcf6ce21f 100644 --- a/ext/intl/formatter/formatter_attr.cpp +++ b/ext/intl/formatter/formatter_attr.cpp @@ -20,10 +20,8 @@ #include "../intl_convertcpp.h" #include "formatter_class.h" -extern "C" { #include "php_intl.h" #include "intl_convert.h" -} #define FORMATTER_UNUM(nfo) reinterpret_cast<UNumberFormat*>(FORMATTER_OBJECT(nfo)) diff --git a/ext/intl/formatter/formatter_class.cpp b/ext/intl/formatter/formatter_class.cpp index 2f3a4bb27ee4..6cf4d62f68f3 100644 --- a/ext/intl/formatter/formatter_class.cpp +++ b/ext/intl/formatter/formatter_class.cpp @@ -13,19 +13,17 @@ */ #include "formatter_class.h" -extern "C" { #include "php_intl.h" #include "formatter_data.h" #include "formatter_format.h" -} #include <zend_exceptions.h> #include "Zend/zend_attributes.h" #include "Zend/zend_interfaces.h" -extern "C" { +BEGIN_EXTERN_C() #include "formatter_arginfo.h" -} +END_EXTERN_C() zend_class_entry *NumberFormatter_ce_ptr = NULL; static zend_object_handlers NumberFormatter_handlers; diff --git a/ext/intl/formatter/formatter_class.h b/ext/intl/formatter/formatter_class.h index 0d4a4208a16e..9bd7959c89b5 100644 --- a/ext/intl/formatter/formatter_class.h +++ b/ext/intl/formatter/formatter_class.h @@ -17,15 +17,9 @@ #include "formatter_data.h" -#ifdef __cplusplus -extern "C" { -#endif #include "intl_common.h" #include "intl_error.h" #include "intl_data.h" -#ifdef __cplusplus -} -#endif typedef struct { formatter_data nf_data; @@ -36,14 +30,10 @@ typedef struct { #define php_intl_number_format_fetch_object(obj) ZEND_CONTAINER_OF(obj, NumberFormatter_object, zo) #define Z_INTL_NUMBERFORMATTER_P(zv) php_intl_number_format_fetch_object(Z_OBJ_P(zv)) -#ifdef __cplusplus -extern "C" { -#endif +BEGIN_EXTERN_C() void formatter_register_class( void ); extern zend_class_entry *NumberFormatter_ce_ptr; -#ifdef __cplusplus -} -#endif +END_EXTERN_C() /* Auxiliary macros */ diff --git a/ext/intl/formatter/formatter_data.h b/ext/intl/formatter/formatter_data.h index 8cacb11315ce..53f2fc3e3aef 100644 --- a/ext/intl/formatter/formatter_data.h +++ b/ext/intl/formatter/formatter_data.h @@ -15,13 +15,7 @@ #ifndef FORMATTER_DATA_H #define FORMATTER_DATA_H -#ifdef __cplusplus -extern "C" { -#endif #include <php.h> -#ifdef __cplusplus -} -#endif #ifdef __cplusplus #include <unicode/numfmt.h> @@ -30,13 +24,7 @@ using icu::NumberFormat; typedef void NumberFormat; #endif -#ifdef __cplusplus -extern "C" { -#endif #include "intl_error.h" -#ifdef __cplusplus -} -#endif typedef struct { // error hangling @@ -46,13 +34,7 @@ typedef struct { NumberFormat* unum; } formatter_data; -#ifdef __cplusplus -extern "C" { -#endif void formatter_data_init( formatter_data* nf_data ); void formatter_data_free( formatter_data* nf_data ); -#ifdef __cplusplus -} -#endif #endif // FORMATTER_DATA_H diff --git a/ext/intl/formatter/formatter_format.cpp b/ext/intl/formatter/formatter_format.cpp index 48edabc8ccde..f73a04ef3568 100644 --- a/ext/intl/formatter/formatter_format.cpp +++ b/ext/intl/formatter/formatter_format.cpp @@ -22,9 +22,7 @@ #include "formatter_class.h" #include "formatter_format.h" -extern "C" { #include "php_intl.h" -} /* {{{ Format a number. */ U_CFUNC PHP_FUNCTION( numfmt_format ) diff --git a/ext/intl/formatter/formatter_format.h b/ext/intl/formatter/formatter_format.h index 14aa91193ba2..0872e358d97c 100644 --- a/ext/intl/formatter/formatter_format.h +++ b/ext/intl/formatter/formatter_format.h @@ -15,8 +15,6 @@ #ifndef FORMATTER_FORMAT_H #define FORMATTER_FORMAT_H -#include <php.h> - #define FORMAT_TYPE_DEFAULT 0 #define FORMAT_TYPE_INT32 1 #define FORMAT_TYPE_INT64 2 diff --git a/ext/intl/formatter/formatter_main.cpp b/ext/intl/formatter/formatter_main.cpp index 79750714a5f0..bbaf671db019 100644 --- a/ext/intl/formatter/formatter_main.cpp +++ b/ext/intl/formatter/formatter_main.cpp @@ -24,9 +24,7 @@ #include "../intl_convertcpp.h" #include "formatter_class.h" -extern "C" { #include "php_intl.h" -} /* {{{ */ static int numfmt_ctor(INTERNAL_FUNCTION_PARAMETERS) diff --git a/ext/intl/formatter/formatter_parse.cpp b/ext/intl/formatter/formatter_parse.cpp index db7463030b7a..0acab835085c 100644 --- a/ext/intl/formatter/formatter_parse.cpp +++ b/ext/intl/formatter/formatter_parse.cpp @@ -23,10 +23,8 @@ #include "formatter_class.h" #include "formatter_format.h" -extern "C" { #include "php_intl.h" #include "intl_convert.h" -} #include <locale.h> #include <memory> diff --git a/ext/intl/grapheme/grapheme.h b/ext/intl/grapheme/grapheme.h index b52f48f9d142..4da62ca0d2b4 100644 --- a/ext/intl/grapheme/grapheme.h +++ b/ext/intl/grapheme/grapheme.h @@ -18,13 +18,9 @@ #include <php.h> #include <unicode/utypes.h> -#ifdef __cplusplus -extern "C" { -#endif +BEGIN_EXTERN_C() void grapheme_close_global_iterator( void ); -#ifdef __cplusplus -} -#endif +END_EXTERN_C() #define GRAPHEME_EXTRACT_TYPE_COUNT 0 #define GRAPHEME_EXTRACT_TYPE_MAXBYTES 1 diff --git a/ext/intl/grapheme/grapheme_string.cpp b/ext/intl/grapheme/grapheme_string.cpp index 08b41a5e6ab0..4acf636d54b1 100644 --- a/ext/intl/grapheme/grapheme_string.cpp +++ b/ext/intl/grapheme/grapheme_string.cpp @@ -22,11 +22,9 @@ #include <unicode/unistr.h> #endif -extern "C" { #include <php.h> #include "grapheme.h" #include "grapheme_util.h" -} #include <unicode/utypes.h> #include <unicode/utf8.h> diff --git a/ext/intl/grapheme/grapheme_util.cpp b/ext/intl/grapheme/grapheme_util.cpp index 33ebde254589..bf4be3f63801 100644 --- a/ext/intl/grapheme/grapheme_util.cpp +++ b/ext/intl/grapheme/grapheme_util.cpp @@ -22,12 +22,10 @@ #include <unicode/unistr.h> #endif -extern "C" { #include <php.h> #include "grapheme.h" #include "grapheme_util.h" #include "intl_common.h" -} #include <unicode/utypes.h> #include <unicode/ucol.h> @@ -42,8 +40,7 @@ ZEND_EXTERN_MODULE_GLOBALS( intl ) /* }}} */ /* {{{ grapheme_close_global_iterator - clean up */ -U_CFUNC void -grapheme_close_global_iterator( void ) +void grapheme_close_global_iterator( void ) { UBreakIterator *global_break_iterator = INTL_G( grapheme_iterator ); @@ -54,7 +51,7 @@ grapheme_close_global_iterator( void ) /* }}} */ /* {{{ grapheme_substr_ascii f='from' - starting point, l='length' */ -U_CFUNC void grapheme_substr_ascii(char *str, size_t str_len, int32_t f, int32_t l, char **sub_str, int32_t *sub_str_len) +void grapheme_substr_ascii(char *str, size_t str_len, int32_t f, int32_t l, char **sub_str, int32_t *sub_str_len) { int32_t str_len2 = (int32_t)str_len; /* in order to avoid signed/unsigned problems */ *sub_str = NULL; @@ -103,7 +100,7 @@ U_CFUNC void grapheme_substr_ascii(char *str, size_t str_len, int32_t f, int32_t /* {{{ grapheme_strpos_utf16 - strrpos using utf16*/ -U_CFUNC int32_t grapheme_strpos_utf16(char *haystack, size_t haystack_len, char *needle, size_t needle_len, int32_t offset, int32_t *puchar_pos, int f_ignore_case, int last, const char* locale) +int32_t grapheme_strpos_utf16(char *haystack, size_t haystack_len, char *needle, size_t needle_len, int32_t offset, int32_t *puchar_pos, int f_ignore_case, int last, const char* locale) { UChar *uhaystack = NULL, *uneedle = NULL; int32_t uhaystack_len = 0, uneedle_len = 0, char_pos, ret_pos, offset_pos = 0; @@ -233,7 +230,7 @@ U_CFUNC int32_t grapheme_strpos_utf16(char *haystack, size_t haystack_len, char /* }}} */ /* {{{ grapheme_ascii_check: ASCII check */ -U_CFUNC zend_long grapheme_ascii_check(const unsigned char *day, size_t len) +zend_long grapheme_ascii_check(const unsigned char *day, size_t len) { int ret_len = len; while ( len-- ) { @@ -247,7 +244,7 @@ U_CFUNC zend_long grapheme_ascii_check(const unsigned char *day, size_t len) /* }}} */ /* {{{ grapheme_split_string: find and optionally return grapheme boundaries */ -U_CFUNC int32_t grapheme_split_string(const UChar *text, int32_t text_length, int boundary_array[], int boundary_array_len ) +int32_t grapheme_split_string(const UChar *text, int32_t text_length, int boundary_array[], int boundary_array_len ) { UErrorCode status = U_ZERO_ERROR; int ret_len, pos; @@ -284,7 +281,7 @@ U_CFUNC int32_t grapheme_split_string(const UChar *text, int32_t text_length, in /* }}} */ /* {{{ grapheme_count_graphemes */ -U_CFUNC int32_t grapheme_count_graphemes(UBreakIterator *bi, UChar *string, int32_t string_len) +int32_t grapheme_count_graphemes(UBreakIterator *bi, UChar *string, int32_t string_len) { int ret_len = 0; int pos = 0; @@ -308,7 +305,7 @@ U_CFUNC int32_t grapheme_count_graphemes(UBreakIterator *bi, UChar *string, int3 /* {{{ grapheme_get_haystack_offset - bump the haystack pointer based on the grapheme count offset */ -U_CFUNC int32_t grapheme_get_haystack_offset(UBreakIterator* bi, int32_t offset) +int32_t grapheme_get_haystack_offset(UBreakIterator* bi, int32_t offset) { int32_t pos; int32_t (*iter_op)(UBreakIterator* bi); @@ -348,7 +345,7 @@ U_CFUNC int32_t grapheme_get_haystack_offset(UBreakIterator* bi, int32_t offset) /* }}} */ /* {{{ grapheme_strrpos_ascii: borrowed from the php ext/standard/string.c */ -U_CFUNC zend_long grapheme_strrpos_ascii(char *haystack, size_t haystack_len, char *needle, size_t needle_len, int32_t offset) +zend_long grapheme_strrpos_ascii(char *haystack, size_t haystack_len, char *needle, size_t needle_len, int32_t offset) { char *p, *e; @@ -388,7 +385,7 @@ U_CFUNC zend_long grapheme_strrpos_ascii(char *haystack, size_t haystack_len, ch /* }}} */ /* {{{ grapheme_get_break_iterator: get a clone of the global character break iterator */ -U_CFUNC UBreakIterator* grapheme_get_break_iterator(UErrorCode *status ) +UBreakIterator* grapheme_get_break_iterator(UErrorCode *status ) { UBreakIterator *global_break_iterator = INTL_G( grapheme_iterator ); diff --git a/ext/intl/grapheme/grapheme_util.h b/ext/intl/grapheme/grapheme_util.h index 0ddfcd3da88f..14ff800abdcd 100644 --- a/ext/intl/grapheme/grapheme_util.h +++ b/ext/intl/grapheme/grapheme_util.h @@ -15,9 +15,6 @@ #ifndef GRAPHEME_GRAPHEME_UTIL_H #define GRAPHEME_GRAPHEME_UTIL_H -#ifdef __cplusplus -extern "C" { -#endif #include "php_intl.h" #include "intl_convert.h" @@ -38,9 +35,6 @@ int32_t grapheme_count_graphemes(UBreakIterator *bi, UChar *string, int32_t stri int32_t grapheme_get_haystack_offset(UBreakIterator* bi, int32_t offset); UBreakIterator* grapheme_get_break_iterator(UErrorCode *status ); -#ifdef __cplusplus -} -#endif /* OUTSIDE_STRING: check if (possibly negative) long offset is outside the string with int32_t length */ #define OUTSIDE_STRING(offset, max_len) ( offset <= INT32_MIN || offset > INT32_MAX || (offset < 0 ? -offset > (zend_long) max_len : offset > (zend_long) max_len) ) diff --git a/ext/intl/idn/idn.cpp b/ext/intl/idn/idn.cpp index c1db9a84ccd0..3f6cbc3ec8ae 100644 --- a/ext/intl/idn/idn.cpp +++ b/ext/intl/idn/idn.cpp @@ -18,17 +18,13 @@ #include <config.h> #endif -extern "C" { #include "../php_intl.h" -} #include <unicode/uidna.h> #include <unicode/ustring.h> #include "idn.h" -extern "C" { #include "intl_error.h" -} /* }}} */ enum { diff --git a/ext/intl/intl_convert.h b/ext/intl/intl_convert.h index f33746b00c92..c3328cb8c337 100644 --- a/ext/intl/intl_convert.h +++ b/ext/intl/intl_convert.h @@ -18,6 +18,7 @@ #include <unicode/ustring.h> +BEGIN_EXTERN_C() void intl_convert_utf8_to_utf16( UChar** target, int32_t* target_len, const char* src, size_t src_len, @@ -38,5 +39,6 @@ bool intl_convert_utf8_offset_to_utf16( int32_t intl_convert_utf16_offset_to_utf8( const UChar* str, int32_t str_len, int32_t position ); +END_EXTERN_C() #endif // INTL_CONVERT_H diff --git a/ext/intl/intl_convertcpp.cpp b/ext/intl/intl_convertcpp.cpp index b305ff201c74..e8ad587c2689 100644 --- a/ext/intl/intl_convertcpp.cpp +++ b/ext/intl/intl_convertcpp.cpp @@ -16,9 +16,7 @@ #include "intl_convertcpp.h" #include <unicode/ustring.h> -extern "C" { #include <php.h> -} /* {{{ intl_stringFromChar */ int intl_stringFromChar(UnicodeString &ret, char *str, size_t str_len, UErrorCode *status) diff --git a/ext/intl/intl_error.h b/ext/intl/intl_error.h index 54fa0bf86f1a..7559281b19ad 100644 --- a/ext/intl/intl_error.h +++ b/ext/intl/intl_error.h @@ -23,6 +23,8 @@ #define INTL_ERROR_CODE(e) (e).code +BEGIN_EXTERN_C() + typedef struct { zend_string *custom_error_message; UErrorCode code; @@ -45,4 +47,6 @@ void intl_errors_set( intl_error* err, UErrorCode code, const char* msg); // Other error helpers smart_str intl_parse_error_to_string( UParseError* pe ); +END_EXTERN_C() + #endif // INTL_ERROR_H diff --git a/ext/intl/intl_icu_compat.h b/ext/intl/intl_icu_compat.h index ae3a6aa126e3..f7a17e5a6bfb 100644 --- a/ext/intl/intl_icu_compat.h +++ b/ext/intl/intl_icu_compat.h @@ -36,21 +36,13 @@ typedef USpoofCheckResult IntlIcuSpoofCheckResult; typedef void IntlIcuSpoofCheckResult; #endif -#ifdef __cplusplus -extern "C" { -#endif - -UConverter *intl_icu_compat_ucnv_clone(const UConverter *converter, UErrorCode *status); -UBreakIterator *intl_icu_compat_ubrk_clone(const UBreakIterator *break_iterator, UErrorCode *status); -void intl_icu_compat_uspoof_init_checker(USpoofChecker *checker, IntlIcuSpoofCheckResult **check_result, UErrorCode *status); -void intl_icu_compat_uspoof_close_check_result(IntlIcuSpoofCheckResult *check_result); -int32_t intl_icu_compat_uspoof_check_utf8(const USpoofChecker *checker, const char *text, int32_t length, IntlIcuSpoofCheckResult *check_result, UErrorCode *status); -UBool intl_icu_compat_uspoof_check_result_mismatch(IntlIcuSpoofCheckResult *check_result, int32_t checks, int32_t *result_checks, UErrorCode *status); -UBool intl_icu_compat_uspoof_is_allowed_chars_pattern_option(int64_t pattern_option); -const char *intl_icu_compat_uspoof_allowed_chars_pattern_option_error_message(void); - -#ifdef __cplusplus -} -#endif +U_CFUNC UConverter *intl_icu_compat_ucnv_clone(const UConverter *converter, UErrorCode *status); +U_CFUNC UBreakIterator *intl_icu_compat_ubrk_clone(const UBreakIterator *break_iterator, UErrorCode *status); +U_CFUNC void intl_icu_compat_uspoof_init_checker(USpoofChecker *checker, IntlIcuSpoofCheckResult **check_result, UErrorCode *status); +U_CFUNC void intl_icu_compat_uspoof_close_check_result(IntlIcuSpoofCheckResult *check_result); +U_CFUNC int32_t intl_icu_compat_uspoof_check_utf8(const USpoofChecker *checker, const char *text, int32_t length, IntlIcuSpoofCheckResult *check_result, UErrorCode *status); +U_CFUNC UBool intl_icu_compat_uspoof_check_result_mismatch(IntlIcuSpoofCheckResult *check_result, int32_t checks, int32_t *result_checks, UErrorCode *status); +U_CFUNC UBool intl_icu_compat_uspoof_is_allowed_chars_pattern_option(int64_t pattern_option); +U_CFUNC const char *intl_icu_compat_uspoof_allowed_chars_pattern_option_error_message(void); #endif diff --git a/ext/intl/listformatter/listformatter_class.cpp b/ext/intl/listformatter/listformatter_class.cpp index 87b5efb3f668..10ec6053dc8d 100644 --- a/ext/intl/listformatter/listformatter_class.cpp +++ b/ext/intl/listformatter/listformatter_class.cpp @@ -12,19 +12,17 @@ +----------------------------------------------------------------------+ */ -extern "C" { #include "php.h" -} #include <unicode/listformatter.h> #include <unicode/locid.h> #include "../intl_convertcpp.h" -extern "C" { #include "php_intl.h" -} #include "listformatter_class.h" +BEGIN_EXTERN_C() #include "listformatter_arginfo.h" +END_EXTERN_C() #include <memory> @@ -210,7 +208,7 @@ PHP_METHOD(IntlListFormatter, getErrorMessage) RETURN_STR(message); } -void listformatter_register_class(void) +U_CFUNC void listformatter_register_class(void) { zend_class_entry *class_entry = register_class_IntlListFormatter(); class_entry->create_object = listformatter_create_object; diff --git a/ext/intl/listformatter/listformatter_class.h b/ext/intl/listformatter/listformatter_class.h index bdf21b6886e0..e0d767b6e712 100644 --- a/ext/intl/listformatter/listformatter_class.h +++ b/ext/intl/listformatter/listformatter_class.h @@ -49,14 +49,10 @@ typedef struct { #define LISTFORMATTER_OBJECT(lfo) (lfo)->lf_data.ulistfmt -#ifdef __cplusplus -extern "C" { -#endif +BEGIN_EXTERN_C() void listformatter_register_class( void ); +END_EXTERN_C() extern zend_class_entry *ListFormatter_ce_ptr; -#ifdef __cplusplus -} -#endif #define INTL_LISTFORMATTER_FALLBACK_TYPE_AND 0 #define INTL_LISTFORMATTER_FALLBACK_WIDTH_WIDE 0 diff --git a/ext/intl/locale/locale_class.cpp b/ext/intl/locale/locale_class.cpp index a8d34f2e9f24..3629a4dddb83 100644 --- a/ext/intl/locale/locale_class.cpp +++ b/ext/intl/locale/locale_class.cpp @@ -13,13 +13,13 @@ */ #include <unicode/uloc.h> -extern "C" { #include "php_intl.h" #include "intl_error.h" #include "locale_class.h" #include "locale.h" +BEGIN_EXTERN_C() #include "locale_arginfo.h" -} +END_EXTERN_C() zend_class_entry *Locale_ce_ptr = NULL; diff --git a/ext/intl/locale/locale_methods.cpp b/ext/intl/locale/locale_methods.cpp index 8130593b8938..5fd89c62f157 100644 --- a/ext/intl/locale/locale_methods.cpp +++ b/ext/intl/locale/locale_methods.cpp @@ -25,7 +25,6 @@ #include <unicode/uenum.h> #include <unicode/locid.h> -extern "C" { #include "php_intl.h" #include "locale.h" #include "locale_class.h" @@ -37,7 +36,6 @@ extern "C" { #include <php.h> #include "main/php_ini.h" #include "zend_smart_str.h" -} ZEND_EXTERN_MODULE_GLOBALS( intl ) diff --git a/ext/intl/msgformat/msgformat.cpp b/ext/intl/msgformat/msgformat.cpp index 3857e97b4a4a..2f25256f03f0 100644 --- a/ext/intl/msgformat/msgformat.cpp +++ b/ext/intl/msgformat/msgformat.cpp @@ -19,12 +19,10 @@ #include <unicode/ustring.h> #include <unicode/umsg.h> -extern "C" { #include "php_intl.h" #include "msgformat_class.h" #include "msgformat_data.h" #include "intl_convert.h" -} /* {{{ */ static int msgfmt_ctor(INTERNAL_FUNCTION_PARAMETERS) diff --git a/ext/intl/msgformat/msgformat_attr.cpp b/ext/intl/msgformat/msgformat_attr.cpp index 15c3525b858f..bb7b21640158 100644 --- a/ext/intl/msgformat/msgformat_attr.cpp +++ b/ext/intl/msgformat/msgformat_attr.cpp @@ -16,12 +16,10 @@ #include <config.h> #endif -extern "C" { #include "php_intl.h" #include "msgformat_class.h" #include "msgformat_data.h" #include "intl_convert.h" -} #include <unicode/ustring.h> diff --git a/ext/intl/msgformat/msgformat_class.cpp b/ext/intl/msgformat/msgformat_class.cpp index 79398fb76e1d..a31de93007f1 100644 --- a/ext/intl/msgformat/msgformat_class.cpp +++ b/ext/intl/msgformat/msgformat_class.cpp @@ -14,12 +14,13 @@ #include <unicode/unum.h> -extern "C" { #include "msgformat_class.h" #include "php_intl.h" #include "msgformat_data.h" + +BEGIN_EXTERN_C() #include "msgformat_arginfo.h" -} +END_EXTERN_C() #include <zend_exceptions.h> diff --git a/ext/intl/msgformat/msgformat_class.h b/ext/intl/msgformat/msgformat_class.h index 849c45c14729..2024723e24ce 100644 --- a/ext/intl/msgformat/msgformat_class.h +++ b/ext/intl/msgformat/msgformat_class.h @@ -33,9 +33,10 @@ typedef struct { #define php_intl_messageformatter_fetch_object(obj) ZEND_CONTAINER_OF(obj, MessageFormatter_object, zo) #define Z_INTL_MESSAGEFORMATTER_P(zv) php_intl_messageformatter_fetch_object(Z_OBJ_P(zv)) +BEGIN_EXTERN_C() void msgformat_register_class( void ); extern zend_class_entry *MessageFormatter_ce_ptr; - +END_EXTERN_C() /* Auxiliary macros */ #define MSG_FORMAT_METHOD_INIT_VARS INTL_METHOD_INIT_VARS(MessageFormatter, mfo) diff --git a/ext/intl/msgformat/msgformat_data.cpp b/ext/intl/msgformat/msgformat_data.cpp index f36bf9e4ac76..0a059a9ea48f 100644 --- a/ext/intl/msgformat/msgformat_data.cpp +++ b/ext/intl/msgformat/msgformat_data.cpp @@ -24,7 +24,7 @@ /* {{{ void msgformat_data_init( msgformat_data* mf_data ) * Initialize internals of msgformat_data. */ -U_CFUNC void msgformat_data_init( msgformat_data* mf_data ) +void msgformat_data_init( msgformat_data* mf_data ) { if( !mf_data ) return; @@ -40,7 +40,7 @@ U_CFUNC void msgformat_data_init( msgformat_data* mf_data ) /* {{{ void msgformat_data_free( msgformat_data* mf_data ) * Clean up memory allocated for msgformat_data */ -U_CFUNC void msgformat_data_free(msgformat_data* mf_data) +void msgformat_data_free(msgformat_data* mf_data) { if (!mf_data) return; diff --git a/ext/intl/msgformat/msgformat_data.h b/ext/intl/msgformat/msgformat_data.h index 7ca4a5acb1ac..ca24a14cb0b3 100644 --- a/ext/intl/msgformat/msgformat_data.h +++ b/ext/intl/msgformat/msgformat_data.h @@ -17,13 +17,7 @@ #include <php.h> -#ifdef __cplusplus -extern "C" { -#endif #include "../intl_error.h" -#ifdef __cplusplus -} -#endif #include <unicode/umsg.h> @@ -39,14 +33,8 @@ typedef struct { int tz_set; /* if we've already the time zone in sub-formats */ } msgformat_data; -#ifdef __cplusplus -extern "C" { -#endif void msgformat_data_init( msgformat_data* mf_data ); void msgformat_data_free( msgformat_data* mf_data ); -#ifdef __cplusplus -} -#endif #ifdef MSG_FORMAT_QUOTE_APOS int msgformat_fix_quotes(UChar **spattern, uint32_t *spattern_len, UErrorCode *ec); diff --git a/ext/intl/msgformat/msgformat_format.cpp b/ext/intl/msgformat/msgformat_format.cpp index c0a02ad8db17..d4f2186e587e 100644 --- a/ext/intl/msgformat/msgformat_format.cpp +++ b/ext/intl/msgformat/msgformat_format.cpp @@ -18,13 +18,11 @@ #include <unicode/ustring.h> -extern "C" { #include "php_intl.h" #include "msgformat_class.h" #include "msgformat_data.h" #include "msgformat_helpers.h" #include "intl_convert.h" -} #ifndef Z_ADDREF_P #define Z_ADDREF_P(z) ((z)->refcount++) diff --git a/ext/intl/msgformat/msgformat_helpers.cpp b/ext/intl/msgformat/msgformat_helpers.cpp index b7d592641bde..d079703c2ece 100644 --- a/ext/intl/msgformat/msgformat_helpers.cpp +++ b/ext/intl/msgformat/msgformat_helpers.cpp @@ -31,14 +31,12 @@ #include "../intl_convertcpp.h" #include "../common/common_date.h" -extern "C" { #include "php_intl.h" #include "msgformat_class.h" #include "msgformat_helpers.h" #include "intl_convert.h" #define USE_TIMEZONE_POINTER #include "../timezone/timezone_class.h" -} U_NAMESPACE_BEGIN /** @@ -351,7 +349,7 @@ static void umsg_set_timezone(MessageFormatter_object *mfo, } } -U_CFUNC void umsg_format_helper(MessageFormatter_object *mfo, +void umsg_format_helper(MessageFormatter_object *mfo, HashTable *args, UChar **formatted, int32_t *formatted_len) @@ -607,7 +605,7 @@ U_CFUNC void umsg_format_helper(MessageFormatter_object *mfo, #define cleanup_zvals() for(int j=i;j>=0;j--) { zval_ptr_dtor((*args)+i); } -U_CFUNC void umsg_parse_helper(UMessageFormat *fmt, int *count, zval **args, UChar *source, int32_t source_len, UErrorCode *status) +void umsg_parse_helper(UMessageFormat *fmt, int *count, zval **args, UChar *source, int32_t source_len, UErrorCode *status) { UnicodeString srcString(source, source_len); Formattable *fargs = ((const MessageFormat*)fmt)->parse(srcString, *count, *status); diff --git a/ext/intl/msgformat/msgformat_parse.cpp b/ext/intl/msgformat/msgformat_parse.cpp index e177d3aca7fb..a9dc1314a221 100644 --- a/ext/intl/msgformat/msgformat_parse.cpp +++ b/ext/intl/msgformat/msgformat_parse.cpp @@ -18,13 +18,11 @@ #include <unicode/ustring.h> -extern "C" { #include "php_intl.h" #include "msgformat_class.h" #include "msgformat_data.h" #include "msgformat_helpers.h" #include "intl_convert.h" -} /* {{{ */ static void msgfmt_do_parse(MessageFormatter_object *mfo, const char *source, size_t src_len, zval *return_value) diff --git a/ext/intl/normalizer/normalizer_class.cpp b/ext/intl/normalizer/normalizer_class.cpp index 1898df04e2e1..d837c3115302 100644 --- a/ext/intl/normalizer/normalizer_class.cpp +++ b/ext/intl/normalizer/normalizer_class.cpp @@ -20,14 +20,10 @@ #include "normalizer.h" #include "normalizer_class.h" #include "php_intl.h" -#ifdef __cplusplus -extern "C" { -#endif +BEGIN_EXTERN_C() #include "normalizer_arginfo.h" +END_EXTERN_C() #include "intl_error.h" -#ifdef __cplusplus -} -#endif #include <unicode/unorm.h> diff --git a/ext/intl/normalizer/normalizer_class.h b/ext/intl/normalizer/normalizer_class.h index e30c29237041..ec1d6be21bf0 100644 --- a/ext/intl/normalizer/normalizer_class.h +++ b/ext/intl/normalizer/normalizer_class.h @@ -36,12 +36,9 @@ typedef struct { #define NORMALIZER_ERROR_CODE(co) INTL_ERROR_CODE(NORMALIZER_ERROR(co)) #define NORMALIZER_ERROR_CODE_P(co) &(INTL_ERROR_CODE(NORMALIZER_ERROR(co))) -#ifdef __cplusplus -extern "C" { -#endif +BEGIN_EXTERN_C() void normalizer_register_Normalizer_class( void ); -#ifdef __cplusplus -} -#endif +END_EXTERN_C() + extern zend_class_entry *Normalizer_ce_ptr; #endif // #ifndef NORMALIZER_CLASS_H diff --git a/ext/intl/normalizer/normalizer_normalize.cpp b/ext/intl/normalizer/normalizer_normalize.cpp index de9693580b1e..ceaf2aaba481 100644 --- a/ext/intl/normalizer/normalizer_normalize.cpp +++ b/ext/intl/normalizer/normalizer_normalize.cpp @@ -21,13 +21,11 @@ #include <unicode/unistr.h> #endif -extern "C" { #include "php_intl.h" #include <unicode/unorm2.h> #include "normalizer.h" #include "normalizer_class.h" #include "intl_convert.h" -} #include <unicode/utf8.h> diff --git a/ext/intl/numberformatter/numberformatter_class.cpp b/ext/intl/numberformatter/numberformatter_class.cpp index 71427da58aeb..cc98c075f568 100644 --- a/ext/intl/numberformatter/numberformatter_class.cpp +++ b/ext/intl/numberformatter/numberformatter_class.cpp @@ -12,22 +12,20 @@ +----------------------------------------------------------------------+ */ -extern "C" { #include "php.h" #include "zend_API.h" #include "../intl_common.h" -} #if U_ICU_VERSION_MAJOR_NUM >= 63 #include <unicode/numberformatter.h> #include <unicode/unistr.h> #include <unicode/locid.h> #include "../intl_convertcpp.h" - -extern "C" { #include "../php_intl.h" + +BEGIN_EXTERN_C() #include "numberformatter_arginfo.h" -} +END_EXTERN_C() #include "numberformatter_class.h" using icu::number::NumberFormatter; diff --git a/ext/intl/numberformatter/numberformatter_class.h b/ext/intl/numberformatter/numberformatter_class.h index 79ec5895ac57..4bd6332465e9 100644 --- a/ext/intl/numberformatter/numberformatter_class.h +++ b/ext/intl/numberformatter/numberformatter_class.h @@ -15,16 +15,10 @@ #ifndef NUMBERFORMATTER_CLASS_H #define NUMBERFORMATTER_CLASS_H -#ifdef __cplusplus -extern "C" { -#endif #include <php.h> #include "intl_common.h" #include "intl_error.h" #include "intl_data.h" -#ifdef __cplusplus -} -#endif #ifdef __cplusplus #include <unicode/numberformatter.h> @@ -48,13 +42,9 @@ typedef struct { #define NUMBERFORMATTER_OBJECT(nfo) (nfo)->nf_data.unumf -#ifdef __cplusplus -extern "C" { -#endif +BEGIN_EXTERN_C() void numberformatter_register_class(void); extern zend_class_entry *IntlNumberFormatter_ce_ptr; -#ifdef __cplusplus -} -#endif +END_EXTERN_C() #endif diff --git a/ext/intl/php_intl.h b/ext/intl/php_intl.h index 52f80d48e3ad..58a822de0be9 100644 --- a/ext/intl/php_intl.h +++ b/ext/intl/php_intl.h @@ -20,9 +20,6 @@ #include <php.h> -/* Even if we're included from C++, don't introduce C++ definitions - * because we were included with extern "C". The effect would be that - * when the headers defined any method, they would do so with C linkage */ #undef U_SHOW_CPLUSPLUS_API #define U_SHOW_CPLUSPLUS_API 0 #include "collator/collator_sort.h" @@ -43,6 +40,7 @@ extern zend_module_entry intl_module_entry; #include "TSRM.h" #endif +BEGIN_EXTERN_C() ZEND_BEGIN_MODULE_GLOBALS(intl) struct UCollator *current_collator; intl_error *current_collator_error; @@ -71,6 +69,8 @@ PHP_MINFO_FUNCTION(intl); const char *intl_locale_get_default( void ); char *canonicalize_locale_string(const char* locale); +END_EXTERN_C() + #define PHP_INTL_FUNCTION_WITH_ERROR_RESET(name) \ static void php_intl_##name##_impl(INTERNAL_FUNCTION_PARAMETERS); \ U_CFUNC PHP_FUNCTION(name) \ diff --git a/ext/intl/rangeformatter/rangeformatter_class.cpp b/ext/intl/rangeformatter/rangeformatter_class.cpp index 37b49e4f1310..1291d17b37bb 100644 --- a/ext/intl/rangeformatter/rangeformatter_class.cpp +++ b/ext/intl/rangeformatter/rangeformatter_class.cpp @@ -12,11 +12,9 @@ +----------------------------------------------------------------------+ */ -extern "C" { - #include "php.h" - #include "zend_API.h" - #include "../intl_common.h" -} +#include "php.h" +#include "zend_API.h" +#include "../intl_common.h" #if U_ICU_VERSION_MAJOR_NUM >= 63 #include <unicode/numberrangeformatter.h> @@ -25,13 +23,15 @@ extern "C" { #include <unicode/locid.h> #include "../intl_convertcpp.h" -extern "C" { - #include "../intl_error.h" - #include "../php_intl.h" - #include "../intl_data.h" - #include "rangeformatter_arginfo.h" - #include "rangeformatter_class.h" -} +#include "../intl_error.h" +#include "../php_intl.h" +#include "../intl_data.h" + +BEGIN_EXTERN_C() +#include "rangeformatter_arginfo.h" +END_EXTERN_C() + +#include "rangeformatter_class.h" using icu::number::NumberRangeFormatter; using icu::number::NumberFormatter; @@ -244,7 +244,7 @@ void IntlNumberRangeFormatter_object_free(zend_object *object) zend_object_std_dtor(&nfo->zo); } -void rangeformatter_register_class(void) +U_CFUNC void rangeformatter_register_class(void) { class_entry_IntlNumberRangeFormatter = register_class_IntlNumberRangeFormatter(); class_entry_IntlNumberRangeFormatter->create_object = IntlNumberRangeFormatter_object_create; diff --git a/ext/intl/rangeformatter/rangeformatter_class.h b/ext/intl/rangeformatter/rangeformatter_class.h index 4b6f02dc93c9..fc36a8bcb96a 100644 --- a/ext/intl/rangeformatter/rangeformatter_class.h +++ b/ext/intl/rangeformatter/rangeformatter_class.h @@ -44,7 +44,8 @@ typedef struct { #define RANGEFORMATTER_OBJECT(nfo) (nfo)->nrf_data.unumrf - +BEGIN_EXTERN_C() void rangeformatter_register_class(void); +END_EXTERN_C() #endif diff --git a/ext/intl/reldateformatter/reldateformatter_class.cpp b/ext/intl/reldateformatter/reldateformatter_class.cpp index e2b5db0b7b04..41a1fedca841 100644 --- a/ext/intl/reldateformatter/reldateformatter_class.cpp +++ b/ext/intl/reldateformatter/reldateformatter_class.cpp @@ -12,11 +12,9 @@ +----------------------------------------------------------------------+ */ -extern "C" { #include "php.h" #include "zend_enum.h" #include "zend_exceptions.h" -} #include "../formatter/formatter_class.h" @@ -32,11 +30,9 @@ extern "C" { #include <memory> #include <new> -extern "C" { #include "../php_intl.h" #include "../intl_data.h" #include "../intl_error.h" -} #include "../intl_convertcpp.h" #include "reldateformatter_class.h" diff --git a/ext/intl/reldateformatter/reldateformatter_class.h b/ext/intl/reldateformatter/reldateformatter_class.h index cd2ddc6e32e6..5d39a30e95bf 100644 --- a/ext/intl/reldateformatter/reldateformatter_class.h +++ b/ext/intl/reldateformatter/reldateformatter_class.h @@ -42,15 +42,9 @@ typedef struct { #define RELDATEFORMATTER_ERROR_P(obj) (&RELDATEFORMATTER_ERROR(obj)) #define RELDATEFORMATTER_OBJECT(obj) ((obj)->formatter) -#ifdef __cplusplus -extern "C" { -#endif - +BEGIN_EXTERN_C() void reldateformatter_register_class(void); extern zend_class_entry *IntlRelativeDateTimeFormatter_ce_ptr; - -#ifdef __cplusplus -} -#endif +END_EXTERN_C() #endif /* RELDATEFORMATTER_CLASS_H */ diff --git a/ext/intl/resourcebundle/resourcebundle.cpp b/ext/intl/resourcebundle/resourcebundle.cpp index d3a41b7c8d92..4674037e72fc 100644 --- a/ext/intl/resourcebundle/resourcebundle.cpp +++ b/ext/intl/resourcebundle/resourcebundle.cpp @@ -17,14 +17,12 @@ #include <zend.h> #include <zend_API.h> -extern "C" { #include "intl_convert.h" #include "intl_data.h" #include "resourcebundle/resourcebundle_class.h" -} /* {{{ ResourceBundle_extract_value */ -U_CFUNC void resourcebundle_extract_value( zval *return_value, ResourceBundle_object *source ) +void resourcebundle_extract_value( zval *return_value, ResourceBundle_object *source ) { UResType restype; const UChar* ufield; diff --git a/ext/intl/resourcebundle/resourcebundle.h b/ext/intl/resourcebundle/resourcebundle.h index e7c79c480d35..c52b83c4ccb7 100644 --- a/ext/intl/resourcebundle/resourcebundle.h +++ b/ext/intl/resourcebundle/resourcebundle.h @@ -21,12 +21,6 @@ #include "resourcebundle/resourcebundle_class.h" -#ifdef __cplusplus -extern "C" { -#endif void resourcebundle_extract_value( zval *target, ResourceBundle_object *source); -#ifdef __cplusplus -} -#endif #endif // #ifndef RESOURCEBUNDLE_CLASS_H diff --git a/ext/intl/resourcebundle/resourcebundle_class.cpp b/ext/intl/resourcebundle/resourcebundle_class.cpp index a7ca5eceeaa4..a18a23c3a872 100644 --- a/ext/intl/resourcebundle/resourcebundle_class.cpp +++ b/ext/intl/resourcebundle/resourcebundle_class.cpp @@ -16,24 +16,20 @@ #include <unicode/ures.h> #include <unicode/uenum.h> - -extern "C" { -#include <zend.h> #include <php.h> -} #include <Zend/zend_exceptions.h> #include <Zend/zend_interfaces.h> -extern "C" { #include "php_intl.h" #include "intl_data.h" #include "intl_common.h" #include "resourcebundle/resourcebundle.h" #include "resourcebundle/resourcebundle_iterator.h" #include "resourcebundle/resourcebundle_class.h" +BEGIN_EXTERN_C() #include "resourcebundle/resourcebundle_arginfo.h" -} +END_EXTERN_C() zend_class_entry *ResourceBundle_ce_ptr = NULL; diff --git a/ext/intl/resourcebundle/resourcebundle_class.h b/ext/intl/resourcebundle/resourcebundle_class.h index 1ec2ac592222..febb4c5ae700 100644 --- a/ext/intl/resourcebundle/resourcebundle_class.h +++ b/ext/intl/resourcebundle/resourcebundle_class.h @@ -18,14 +18,10 @@ #include <unicode/ures.h> #include <zend.h> -#ifdef __cplusplus -extern "C" { -#endif + #include "php.h" #include "intl_error.h" -#ifdef __cplusplus -} -#endif + typedef struct { intl_error error; @@ -51,13 +47,9 @@ static inline ResourceBundle_object *php_intl_resourcebundle_fetch_object(zend_o #define RESOURCEBUNDLE_OBJECT(rb) (rb)->me -#ifdef __cplusplus -extern "C" { -#endif +BEGIN_EXTERN_C() void resourcebundle_register_class( void ); extern zend_class_entry *ResourceBundle_ce_ptr; -#ifdef __cplusplus -} -#endif +END_EXTERN_C() #endif // #ifndef RESOURCEBUNDLE_CLASS_H diff --git a/ext/intl/resourcebundle/resourcebundle_iterator.cpp b/ext/intl/resourcebundle/resourcebundle_iterator.cpp index 29288418437a..1ff2f6667669 100644 --- a/ext/intl/resourcebundle/resourcebundle_iterator.cpp +++ b/ext/intl/resourcebundle/resourcebundle_iterator.cpp @@ -12,11 +12,9 @@ +----------------------------------------------------------------------+ */ -extern "C" { #include <php.h> #include <zend.h> #include <zend_API.h> -} #include "resourcebundle/resourcebundle.h" #include "resourcebundle/resourcebundle_class.h" diff --git a/ext/intl/resourcebundle/resourcebundle_iterator.h b/ext/intl/resourcebundle/resourcebundle_iterator.h index 762c12f363b5..3eab1f099811 100644 --- a/ext/intl/resourcebundle/resourcebundle_iterator.h +++ b/ext/intl/resourcebundle/resourcebundle_iterator.h @@ -29,12 +29,6 @@ typedef struct { zend_long i; } ResourceBundle_iterator; -#ifdef __cplusplus -extern "C" { -#endif -zend_object_iterator *resourcebundle_get_iterator( zend_class_entry *ce, zval *object, int byref ); -#ifdef __cplusplus -} -#endif +U_CFUNC zend_object_iterator *resourcebundle_get_iterator( zend_class_entry *ce, zval *object, int byref ); #endif // #ifndef RESOURCEBUNDLE_ITERATOR_H diff --git a/ext/intl/spoofchecker/spoofchecker_class.cpp b/ext/intl/spoofchecker/spoofchecker_class.cpp index fcadb2f44808..317b844e9937 100644 --- a/ext/intl/spoofchecker/spoofchecker_class.cpp +++ b/ext/intl/spoofchecker/spoofchecker_class.cpp @@ -13,14 +13,15 @@ */ #include "spoofchecker_class.h" -extern "C" { -#include "spoofchecker_arginfo.h" #include "php_intl.h" #include "intl_error.h" -} #include <unicode/uspoof.h> +BEGIN_EXTERN_C() +#include "spoofchecker_arginfo.h" +END_EXTERN_C() + zend_class_entry *Spoofchecker_ce_ptr = NULL; static zend_object_handlers Spoofchecker_handlers; @@ -66,7 +67,6 @@ static zend_object *Spoofchecker_object_create(zend_class_entry *ce) return &intern->zo; } -/* }}} */ /* * 'Spoofchecker' class registration structures & functions diff --git a/ext/intl/spoofchecker/spoofchecker_class.h b/ext/intl/spoofchecker/spoofchecker_class.h index dc9aa43db8a6..b8080ab84c65 100644 --- a/ext/intl/spoofchecker/spoofchecker_class.h +++ b/ext/intl/spoofchecker/spoofchecker_class.h @@ -17,15 +17,9 @@ #include <php.h> -#ifdef __cplusplus -extern "C" { -#endif #include "intl_common.h" #include "intl_error.h" #include "intl_data.h" -#ifdef __cplusplus -} -#endif #include "intl_icu_compat.h" #include <unicode/uspoof.h> @@ -50,15 +44,11 @@ typedef struct { #define SPOOFCHECKER_ERROR_CODE(co) INTL_ERROR_CODE(SPOOFCHECKER_ERROR(co)) #define SPOOFCHECKER_ERROR_CODE_P(co) &(INTL_ERROR_CODE(SPOOFCHECKER_ERROR(co))) -#ifdef __cplusplus -extern "C" { -#endif +BEGIN_EXTERN_C() void spoofchecker_register_Spoofchecker_class(void); -#ifdef __cplusplus -} -#endif extern zend_class_entry *Spoofchecker_ce_ptr; +END_EXTERN_C() /* Auxiliary macros */ diff --git a/ext/intl/spoofchecker/spoofchecker_create.cpp b/ext/intl/spoofchecker/spoofchecker_create.cpp index 8a322c0d64c2..9dbd2a6eac0a 100644 --- a/ext/intl/spoofchecker/spoofchecker_create.cpp +++ b/ext/intl/spoofchecker/spoofchecker_create.cpp @@ -21,10 +21,8 @@ #include <unicode/unistr.h> #endif -extern "C" { #include "php_intl.h" #include "intl_data.h" -} #include "spoofchecker_class.h" /* {{{ Spoofchecker object constructor. */ diff --git a/ext/intl/spoofchecker/spoofchecker_main.cpp b/ext/intl/spoofchecker/spoofchecker_main.cpp index 7a3ffd9b809a..92c7bb44de5c 100644 --- a/ext/intl/spoofchecker/spoofchecker_main.cpp +++ b/ext/intl/spoofchecker/spoofchecker_main.cpp @@ -21,10 +21,8 @@ #include <unicode/unistr.h> #endif -extern "C" { #include "php_intl.h" #include "intl_convert.h" -} #include "spoofchecker_class.h" /* {{{ Checks if a given text contains any suspicious characters */ diff --git a/ext/intl/timezone/timezone_class.cpp b/ext/intl/timezone/timezone_class.cpp index 23b5511cf361..aa1978e70d7d 100644 --- a/ext/intl/timezone/timezone_class.cpp +++ b/ext/intl/timezone/timezone_class.cpp @@ -27,15 +27,15 @@ #include "../common/common_date.h" -extern "C" { #include "../intl_convert.h" #define USE_TIMEZONE_POINTER 1 #include "timezone_class.h" -#include "timezone_arginfo.h" #include <zend_exceptions.h> #include <zend_interfaces.h> +U_CDECL_BEGIN +#include "timezone_arginfo.h" #include <ext/date/php_date.h> -} +U_CDECL_END using icu::Calendar; @@ -47,7 +47,7 @@ U_CDECL_END /* }}} */ /* {{{ timezone_object_construct */ -U_CFUNC void timezone_object_construct(const TimeZone *zone, zval *object, int owned) +void timezone_object_construct(const TimeZone *zone, zval *object, int owned) { TimeZone_object *to; @@ -60,7 +60,7 @@ U_CFUNC void timezone_object_construct(const TimeZone *zone, zval *object, int o /* {{{ timezone_convert_to_datetimezone * Convert from TimeZone to DateTimeZone object */ -U_CFUNC zval *timezone_convert_to_datetimezone(const TimeZone *timeZone, +zval *timezone_convert_to_datetimezone(const TimeZone *timeZone, intl_error *outside_error, zval *ret) { @@ -120,7 +120,7 @@ static void timezone_throw_exception_with_call_location(const char *msg, const c /* {{{ timezone_process_timezone_argument * TimeZone argument processor. outside_error may be nullptr (for static functions/constructors) */ -U_CFUNC TimeZone *timezone_process_timezone_argument( +TimeZone *timezone_process_timezone_argument( zend_object *timezone_object, zend_string *timezone_string, intl_error *outside_error, uint32_t arg_num) { std::unique_ptr<TimeZone> timeZone; @@ -349,7 +349,7 @@ static zend_object *TimeZone_object_create(zend_class_entry *ce) /* {{{ timezone_register_IntlTimeZone_class * Initialize 'IntlTimeZone' class */ -U_CFUNC void timezone_register_IntlTimeZone_class(void) +void timezone_register_IntlTimeZone_class() { /* Create and register 'IntlTimeZone' class. */ TimeZone_ce_ptr = register_class_IntlTimeZone(); diff --git a/ext/intl/timezone/timezone_class.h b/ext/intl/timezone/timezone_class.h index cb74709c965a..a864d7888f71 100644 --- a/ext/intl/timezone/timezone_class.h +++ b/ext/intl/timezone/timezone_class.h @@ -69,9 +69,11 @@ TimeZone *timezone_process_timezone_argument(zend_object *timezone_object, zend_ void timezone_object_construct(const TimeZone *zone, zval *object, int owned); +BEGIN_EXTERN_C() void timezone_register_IntlTimeZone_class(void); extern zend_class_entry *TimeZone_ce_ptr; extern zend_object_handlers TimeZone_handlers; +END_EXTERN_C() #endif /* #ifndef TIMEZONE_CLASS_H */ diff --git a/ext/intl/timezone/timezone_methods.cpp b/ext/intl/timezone/timezone_methods.cpp index 118b153cc796..89d725217b90 100644 --- a/ext/intl/timezone/timezone_methods.cpp +++ b/ext/intl/timezone/timezone_methods.cpp @@ -26,14 +26,14 @@ #include "../common/common_date.h" -extern "C" { #include "../php_intl.h" #define USE_TIMEZONE_POINTER 1 #include "timezone_class.h" #include "intl_convert.h" #include <zend_exceptions.h> +BEGIN_EXTERN_C() #include <ext/date/php_date.h> -} +END_EXTERN_C() #include "common/common_enum.h" using icu::Locale; diff --git a/ext/intl/transliterator/transliterator_class.cpp b/ext/intl/transliterator/transliterator_class.cpp index 737c51fcf4dd..c805b683510a 100644 --- a/ext/intl/transliterator/transliterator_class.cpp +++ b/ext/intl/transliterator/transliterator_class.cpp @@ -13,13 +13,14 @@ */ #include "transliterator_class.h" -extern "C" { #include "php_intl.h" #include "intl_error.h" #include "intl_convert.h" #include "intl_data.h" + +BEGIN_EXTERN_C() #include "transliterator_arginfo.h" -} +END_EXTERN_C() #include <unicode/utrans.h> @@ -30,7 +31,7 @@ zend_object_handlers Transliterator_handlers; /* {{{ int transliterator_object_construct( zval *object, UTransliterator *utrans, UErrorCode *status ) * Initialize internals of Transliterator_object. */ -U_CFUNC int transliterator_object_construct( zval *object, +int transliterator_object_construct( zval *object, UTransliterator *utrans, UErrorCode *status ) { diff --git a/ext/intl/transliterator/transliterator_class.h b/ext/intl/transliterator/transliterator_class.h index 1bdcd60eadc5..83d5d2a895f4 100644 --- a/ext/intl/transliterator/transliterator_class.h +++ b/ext/intl/transliterator/transliterator_class.h @@ -17,14 +17,8 @@ #include <php.h> -#ifdef __cplusplus -extern "C" { -#endif #include "intl_common.h" #include "intl_error.h" -#ifdef __cplusplus -} -#endif #include <unicode/utrans.h> @@ -60,19 +54,15 @@ typedef struct { RETURN_THROWS(); \ } -#ifdef __cplusplus -extern "C" { -#endif int transliterator_object_construct( zval *object, UTransliterator *utrans, UErrorCode *status ); +BEGIN_EXTERN_C() void transliterator_register_Transliterator_class( void ); extern zend_class_entry *Transliterator_ce_ptr; extern zend_object_handlers Transliterator_handlers; -#ifdef __cplusplus -} -#endif +END_EXTERN_C() #endif /* #ifndef TRANSLITERATOR_CLASS_H */ diff --git a/ext/intl/transliterator/transliterator_methods.cpp b/ext/intl/transliterator/transliterator_methods.cpp index db92be768241..64f9a2a06275 100644 --- a/ext/intl/transliterator/transliterator_methods.cpp +++ b/ext/intl/transliterator/transliterator_methods.cpp @@ -25,11 +25,9 @@ #include <unicode/translit.h> #include "../intl_convertcpp.h" -extern "C" { #include "php_intl.h" #include "intl_data.h" #include "intl_convert.h" -} #include "transliterator.h" #include "transliterator_class.h" diff --git a/ext/intl/uchar/uchar.cpp b/ext/intl/uchar/uchar.cpp index b2df5b9a05a8..3b3edfca49a9 100644 --- a/ext/intl/uchar/uchar.cpp +++ b/ext/intl/uchar/uchar.cpp @@ -12,7 +12,6 @@ +----------------------------------------------------------------------+ */ -extern "C" { #include "uchar.h" #include "intl_data.h" #include "intl_convert.h" @@ -21,7 +20,6 @@ extern "C" { #include <unicode/utf8.h> #include "uchar_arginfo.h" -} #define IC_METHOD(mname) \ static void php_intl_IntlChar_##mname##_impl(INTERNAL_FUNCTION_PARAMETERS); \ @@ -651,7 +649,7 @@ IC_CHAR_METHOD_CHAR(getBidiPairedBracket) #undef IC_CHAR_METHOD_CHAR /* }}} */ -int php_uchar_minit(INIT_FUNC_ARGS) { +U_CFUNC int php_uchar_minit(INIT_FUNC_ARGS) { register_class_IntlChar(); return SUCCESS; diff --git a/ext/intl/uchar/uchar.h b/ext/intl/uchar/uchar.h index 7b472163ab0f..4ec50b700d74 100644 --- a/ext/intl/uchar/uchar.h +++ b/ext/intl/uchar/uchar.h @@ -17,6 +17,8 @@ #include "php.h" +BEGIN_EXTERN_C() int php_uchar_minit(INIT_FUNC_ARGS); +END_EXTERN_C() #endif // incl_PHP_INTL_UCHAR_H

« previous php.cvs (#142642) next »