Files
Gina Peter Banyard c0250bac3a 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.
2026-10-23 21:51:52 +01:00

54 lines
2.0 KiB
C

/*
+----------------------------------------------------------------------+
| Copyright © The PHP Group and Contributors. |
+----------------------------------------------------------------------+
| This source file is subject to the Modified BSD License that is |
| bundled with this package in the file LICENSE, and is available |
| through the World Wide Web at <https://www.php.net/license/>. |
| |
| SPDX-License-Identifier: BSD-3-Clause |
+----------------------------------------------------------------------+
| Authors: Stanislav Malyshev <stas@zend.com> |
+----------------------------------------------------------------------+
*/
#ifndef MSG_FORMAT_CLASS_H
#define MSG_FORMAT_CLASS_H
#include <php.h>
#include <unicode/uconfig.h>
#include "../intl_common.h"
#include "../intl_error.h"
#include "../intl_data.h"
#include "msgformat_data.h"
typedef struct {
msgformat_data mf_data;
zend_object zo;
} MessageFormatter_object;
#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)
#define MSG_FORMAT_METHOD_FETCH_OBJECT_NO_CHECK INTL_METHOD_FETCH_OBJECT(INTL_MESSAGEFORMATTER, mfo)
#define MSG_FORMAT_METHOD_FETCH_OBJECT \
MSG_FORMAT_METHOD_FETCH_OBJECT_NO_CHECK; \
if (MSG_FORMAT_OBJECT(mfo) == NULL) { \
zend_throw_error(NULL, "Found unconstructed MessageFormatter"); \
RETURN_THROWS(); \
}
#define MSG_FORMAT_OBJECT(mfo) (mfo)->mf_data.umsgf
#endif // #ifndef MSG_FORMAT_CLASS_H