]> granicus.if.org Git - php/commitdiff
Generate class entries for a few extensions
authorMáté Kocsis <kocsismate@woohoolabs.com>
Wed, 3 Feb 2021 08:03:18 +0000 (09:03 +0100)
committerMáté Kocsis <kocsismate@woohoolabs.com>
Wed, 3 Feb 2021 08:24:09 +0000 (09:24 +0100)
Relates to GH-6644

22 files changed:
ext/bcmath/bcmath.stub.php
ext/bcmath/bcmath_arginfo.h
ext/bz2/bz2.stub.php
ext/bz2/bz2_arginfo.h
ext/calendar/calendar.stub.php
ext/calendar/calendar_arginfo.h
ext/ctype/ctype.stub.php
ext/ctype/ctype_arginfo.h
ext/curl/curl.stub.php
ext/curl/curl_arginfo.h
ext/curl/curl_private.h
ext/curl/interface.c
ext/curl/multi.c
ext/curl/share.c
ext/date/php_date.c
ext/date/php_date.stub.php
ext/date/php_date_arginfo.h
ext/dba/dba.stub.php
ext/dba/dba_arginfo.h
ext/dom/php_dom.c
ext/dom/php_dom.stub.php
ext/dom/php_dom_arginfo.h

index acd63f000e79c239a60141303bd9927ff5aa7a44..daf479089d218cf604ccad3411c26d47aa42dd87 100644 (file)
@@ -1,6 +1,9 @@
 <?php
 
-/** @generate-function-entries */
+/**
+ * @generate-function-entries
+ * @generate-class-entries
+ */
 
 function bcadd(string $num1, string $num2, ?int $scale = null): string {}
 
index 3e0104e04c358b1ad82f507e8b5440ab54f53e1e..992e65e5131b732ec29c99c24b709f2f6f8af0cb 100644 (file)
@@ -1,5 +1,5 @@
 /* This is a generated file, edit the .stub.php file instead.
- * Stub hash: 0c1e2a6163a5fc0f42bf79bbc530af7c5fd77074 */
+ * Stub hash: 2232d60eb40f382b141ec28fe9542bd88e784333 */
 
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_bcadd, 0, 2, IS_STRING, 0)
        ZEND_ARG_TYPE_INFO(0, num1, IS_STRING, 0)
@@ -69,3 +69,4 @@ static const zend_function_entry ext_functions[] = {
        ZEND_FE(bcscale, arginfo_bcscale)
        ZEND_FE_END
 };
+
index 90141e3b6c119f7010873e581abe9d05f43f51a6..c0d58cdbcef06a39018e8d85627b5892a3bdd2fc 100644 (file)
@@ -1,6 +1,9 @@
 <?php
 
-/** @generate-function-entries */
+/**
+ * @generate-function-entries
+ * @generate-class-entries
+ */
 
 /**
  * @param string|resource $file
index 78b8e88a92e960b31a3e73469bf1e346b71c19c4..ecfd2f350fcb2b98a5375c41ce8e32d328af3f3b 100644 (file)
@@ -1,5 +1,5 @@
 /* This is a generated file, edit the .stub.php file instead.
- * Stub hash: 5436fd5a4b0fbfd3b3b3f1caa6a0cf8326c9c5f7 */
+ * Stub hash: 10682cdfc126686cab8497868287459dc574b93d */
 
 ZEND_BEGIN_ARG_INFO_EX(arginfo_bzopen, 0, 0, 2)
        ZEND_ARG_INFO(0, file)
@@ -72,3 +72,4 @@ static const zend_function_entry ext_functions[] = {
        ZEND_FE(bzdecompress, arginfo_bzdecompress)
        ZEND_FE_END
 };
+
index 575784df37b929499d477716b39e41533c513f28..1f66909755d4a3d38bcf434218610290433f2db2 100644 (file)
@@ -1,6 +1,9 @@
 <?php
 
-/** @generate-function-entries */
+/**
+ * @generate-function-entries
+ * @generate-class-entries
+ */
 
 function cal_days_in_month(int $calendar, int $month, int $year): int {}
 
index b8d5bfc95fec2d7f1eb8d8660165c95b8ab43ddc..080bd91a9ba85b96c01c8beea5f6f11cff48c636 100644 (file)
@@ -1,5 +1,5 @@
 /* This is a generated file, edit the .stub.php file instead.
- * Stub hash: ced2659f54bb25693831315625fe90b33e2f7cbe */
+ * Stub hash: 4953fb1f36502b399061f5e0ca2f700d09761be3 */
 
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_cal_days_in_month, 0, 3, IS_LONG, 0)
        ZEND_ARG_TYPE_INFO(0, calendar, IS_LONG, 0)
@@ -116,3 +116,4 @@ static const zend_function_entry ext_functions[] = {
        ZEND_FE(unixtojd, arginfo_unixtojd)
        ZEND_FE_END
 };
+
index bcc722c12dd49381afc4731c478447092ca35b8f..b5d42a97cbc11982ab1d0beefb843f93070a6196 100644 (file)
@@ -1,6 +1,9 @@
 <?php
 
-/** @generate-function-entries */
+/**
+ * @generate-function-entries
+ * @generate-class-entries
+ */
 
 function ctype_alnum(mixed $text): bool {}
 
index 10d8ae9bf128b6ca2d46c0073ef64aebadbbba6a..400ded4a6a5b028609698f23d462158ea9dc53ce 100644 (file)
@@ -1,5 +1,5 @@
 /* This is a generated file, edit the .stub.php file instead.
- * Stub hash: aa287af25fe33a05d15d85b92b0edcfae00284a2 */
+ * Stub hash: bdf377cc2819bdc625cd2ee1afed2f3e7990eef8 */
 
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ctype_alnum, 0, 1, _IS_BOOL, 0)
        ZEND_ARG_TYPE_INFO(0, text, IS_MIXED, 0)
@@ -53,3 +53,4 @@ static const zend_function_entry ext_functions[] = {
        ZEND_FE(ctype_xdigit, arginfo_ctype_xdigit)
        ZEND_FE_END
 };
+
index 8fd8fd91c52db36a2831279e0c72c4586cb7f82c..89941d640b377f6d159d7e2b61c3601303e8f1d0 100644 (file)
@@ -1,15 +1,21 @@
 <?php
 
-/** @generate-function-entries */
+/**
+ * @generate-function-entries
+ * @generate-class-entries
+ */
 
+/** @strict-properties */
 final class CurlHandle
 {
 }
 
+/** @strict-properties */
 final class CurlMultiHandle
 {
 }
 
+/** @strict-properties */
 final class CurlShareHandle
 {
 }
index e6bb94b7b4b21c0f36010d445ca18109f23a7e81..db4ce45d6f1db6deb00cc98b3e605869deb5c9f2 100644 (file)
@@ -1,5 +1,5 @@
 /* This is a generated file, edit the .stub.php file instead.
- * Stub hash: f1d616c644ad366405816cde0384f6f391773ebf */
+ * Stub hash: 0d1b398a10959922a9e12df75fd8465291058fd5 */
 
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_close, 0, 1, IS_VOID, 0)
        ZEND_ARG_OBJ_INFO(0, handle, CurlHandle, 0)
@@ -241,3 +241,37 @@ static const zend_function_entry class_CurlMultiHandle_methods[] = {
 static const zend_function_entry class_CurlShareHandle_methods[] = {
        ZEND_FE_END
 };
+
+zend_class_entry *register_class_CurlHandle()
+{
+       zend_class_entry ce, *class_entry;
+
+       INIT_CLASS_ENTRY(ce, "CurlHandle", class_CurlHandle_methods);
+       class_entry = zend_register_internal_class_ex(&ce, NULL);
+       class_entry->ce_flags |= ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES;
+
+       return class_entry;
+}
+
+zend_class_entry *register_class_CurlMultiHandle()
+{
+       zend_class_entry ce, *class_entry;
+
+       INIT_CLASS_ENTRY(ce, "CurlMultiHandle", class_CurlMultiHandle_methods);
+       class_entry = zend_register_internal_class_ex(&ce, NULL);
+       class_entry->ce_flags |= ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES;
+
+       return class_entry;
+}
+
+zend_class_entry *register_class_CurlShareHandle()
+{
+       zend_class_entry ce, *class_entry;
+
+       INIT_CLASS_ENTRY(ce, "CurlShareHandle", class_CurlShareHandle_methods);
+       class_entry = zend_register_internal_class_ex(&ce, NULL);
+       class_entry->ce_flags |= ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES;
+
+       return class_entry;
+}
+
index bc6852198dcdfa289134e9ac8e02d9e77ae807c6..49201334b96117d4a4445dbf28a966f817572da5 100644 (file)
@@ -152,8 +152,8 @@ static inline php_curlsh *curl_share_from_obj(zend_object *obj) {
 
 #define Z_CURL_SHARE_P(zv) curl_share_from_obj(Z_OBJ_P(zv))
 
-void curl_multi_register_class(const zend_function_entry *method_entries);
-void curl_share_register_class(const zend_function_entry *method_entries);
+void curl_multi_register_handlers(void);
+void curl_share_register_handlers(void);
 void curlfile_register_class(void);
 int curl_cast_object(zend_object *obj, zval *result, int type);
 
index 92dfc918cb05e85fb5663a96307e56e6aa7ef76a..d96334cd07b7410ffc1ace1b5c75c3902955eda3 100644 (file)
@@ -1177,10 +1177,7 @@ PHP_MINIT_FUNCTION(curl)
                return FAILURE;
        }
 
-       zend_class_entry ce;
-       INIT_CLASS_ENTRY(ce, "CurlHandle", class_CurlHandle_methods);
-       curl_ce = zend_register_internal_class(&ce);
-       curl_ce->ce_flags |= ZEND_ACC_FINAL | ZEND_ACC_NO_DYNAMIC_PROPERTIES;
+       curl_ce = register_class_CurlHandle();
        curl_ce->create_object = curl_create_object;
        curl_ce->serialize = zend_class_serialize_deny;
        curl_ce->unserialize = zend_class_unserialize_deny;
@@ -1193,8 +1190,11 @@ PHP_MINIT_FUNCTION(curl)
        curl_object_handlers.clone_obj = curl_clone_obj;
        curl_object_handlers.cast_object = curl_cast_object;
 
-       curl_multi_register_class(class_CurlMultiHandle_methods);
-       curl_share_register_class(class_CurlShareHandle_methods);
+       curl_multi_ce = register_class_CurlMultiHandle();
+       curl_multi_register_handlers();
+
+       curl_share_ce = register_class_CurlShareHandle();
+       curl_share_register_handlers();
        curlfile_register_class();
 
        return SUCCESS;
index 518acf2b0be9d73ed7858138d245db8199515401..36c99684d085c5c0623b24bd156d7034180a636f 100644 (file)
@@ -580,11 +580,7 @@ static HashTable *curl_multi_get_gc(zend_object *object, zval **table, int *n)
        return zend_std_get_properties(object);
 }
 
-void curl_multi_register_class(const zend_function_entry *method_entries) {
-       zend_class_entry ce_multi;
-       INIT_CLASS_ENTRY(ce_multi, "CurlMultiHandle", method_entries);
-       curl_multi_ce = zend_register_internal_class(&ce_multi);
-       curl_multi_ce->ce_flags |= ZEND_ACC_FINAL | ZEND_ACC_NO_DYNAMIC_PROPERTIES;
+void curl_multi_register_handlers(void) {
        curl_multi_ce->create_object = curl_multi_create_object;
        curl_multi_ce->serialize = zend_class_serialize_deny;
        curl_multi_ce->unserialize = zend_class_unserialize_deny;
index 58135acdb5659b1126771e8c43a07fb80e6b4b21..a7c2586aa5e46e4508649f49bf8e2f33c84ae8da 100644 (file)
@@ -162,11 +162,7 @@ void curl_share_free_obj(zend_object *object)
        zend_object_std_dtor(&sh->std);
 }
 
-void curl_share_register_class(const zend_function_entry *method_entries) {
-       zend_class_entry ce_share;
-       INIT_CLASS_ENTRY(ce_share, "CurlShareHandle", method_entries);
-       curl_share_ce = zend_register_internal_class(&ce_share);
-       curl_share_ce->ce_flags |= ZEND_ACC_FINAL | ZEND_ACC_NO_DYNAMIC_PROPERTIES;
+void curl_share_register_handlers(void) {
        curl_share_ce->create_object = curl_share_create_object;
        curl_share_ce->serialize = &zend_class_serialize_deny;
        curl_share_ce->unserialize = &zend_class_unserialize_deny;
index 4d739efc33a0cac99999a4c628dc70811cf5aa80..4e840a3106218f23285059dfb37cdf33ab0d1a95 100644 (file)
@@ -1603,10 +1603,7 @@ static int date_interval_has_property(zend_object *object, zend_string *name, in
 
 static void date_register_classes(void) /* {{{ */
 {
-       zend_class_entry ce_date, ce_immutable, ce_timezone, ce_interval, ce_period, ce_interface;
-
-       INIT_CLASS_ENTRY(ce_interface, "DateTimeInterface", class_DateTimeInterface_methods);
-       date_ce_interface = zend_register_internal_interface(&ce_interface);
+       date_ce_interface = register_class_DateTimeInterface();
        date_ce_interface->interface_gets_implemented = implement_date_interface_handler;
 
 #define REGISTER_DATE_INTERFACE_CONST_STRING(const_name, value) \
@@ -1626,9 +1623,8 @@ static void date_register_classes(void) /* {{{ */
        REGISTER_DATE_INTERFACE_CONST_STRING("RSS",              DATE_FORMAT_RFC1123);
        REGISTER_DATE_INTERFACE_CONST_STRING("W3C",              DATE_FORMAT_RFC3339);
 
-       INIT_CLASS_ENTRY(ce_date, "DateTime", class_DateTime_methods);
-       ce_date.create_object = date_object_new_date;
-       date_ce_date = zend_register_internal_class_ex(&ce_date, NULL);
+       date_ce_date = register_class_DateTime(date_ce_interface);
+       date_ce_date->create_object = date_object_new_date;
        memcpy(&date_object_handlers_date, &std_object_handlers, sizeof(zend_object_handlers));
        date_object_handlers_date.offset = XtOffsetOf(php_date_obj, std);
        date_object_handlers_date.free_obj = date_object_free_storage_date;
@@ -1636,21 +1632,17 @@ static void date_register_classes(void) /* {{{ */
        date_object_handlers_date.compare = date_object_compare_date;
        date_object_handlers_date.get_properties_for = date_object_get_properties_for;
        date_object_handlers_date.get_gc = date_object_get_gc;
-       zend_class_implements(date_ce_date, 1, date_ce_interface);
 
-       INIT_CLASS_ENTRY(ce_immutable, "DateTimeImmutable", class_DateTimeImmutable_methods);
-       ce_immutable.create_object = date_object_new_date;
-       date_ce_immutable = zend_register_internal_class_ex(&ce_immutable, NULL);
+       date_ce_immutable = register_class_DateTimeImmutable(date_ce_interface);
+       date_ce_immutable->create_object = date_object_new_date;
        memcpy(&date_object_handlers_immutable, &std_object_handlers, sizeof(zend_object_handlers));
        date_object_handlers_immutable.clone_obj = date_object_clone_date;
        date_object_handlers_immutable.compare = date_object_compare_date;
        date_object_handlers_immutable.get_properties_for = date_object_get_properties_for;
        date_object_handlers_immutable.get_gc = date_object_get_gc;
-       zend_class_implements(date_ce_immutable, 1, date_ce_interface);
 
-       INIT_CLASS_ENTRY(ce_timezone, "DateTimeZone", class_DateTimeZone_methods);
-       ce_timezone.create_object = date_object_new_timezone;
-       date_ce_timezone = zend_register_internal_class_ex(&ce_timezone, NULL);
+       date_ce_timezone = register_class_DateTimeZone();
+       date_ce_timezone->create_object = date_object_new_timezone;
        memcpy(&date_object_handlers_timezone, &std_object_handlers, sizeof(zend_object_handlers));
        date_object_handlers_timezone.offset = XtOffsetOf(php_timezone_obj, std);
        date_object_handlers_timezone.free_obj = date_object_free_storage_timezone;
@@ -1678,9 +1670,8 @@ static void date_register_classes(void) /* {{{ */
        REGISTER_TIMEZONE_CLASS_CONST_STRING("ALL_WITH_BC", PHP_DATE_TIMEZONE_GROUP_ALL_W_BC);
        REGISTER_TIMEZONE_CLASS_CONST_STRING("PER_COUNTRY", PHP_DATE_TIMEZONE_PER_COUNTRY);
 
-       INIT_CLASS_ENTRY(ce_interval, "DateInterval", class_DateInterval_methods);
-       ce_interval.create_object = date_object_new_interval;
-       date_ce_interval = zend_register_internal_class_ex(&ce_interval, NULL);
+       date_ce_interval = register_class_DateInterval();
+       date_ce_interval->create_object = date_object_new_interval;
        memcpy(&date_object_handlers_interval, &std_object_handlers, sizeof(zend_object_handlers));
        date_object_handlers_interval.offset = XtOffsetOf(php_interval_obj, std);
        date_object_handlers_interval.free_obj = date_object_free_storage_interval;
@@ -1693,11 +1684,9 @@ static void date_register_classes(void) /* {{{ */
        date_object_handlers_interval.get_gc = date_object_get_gc_interval;
        date_object_handlers_interval.compare = date_interval_compare_objects;
 
-       INIT_CLASS_ENTRY(ce_period, "DatePeriod", class_DatePeriod_methods);
-       ce_period.create_object = date_object_new_period;
-       date_ce_period = zend_register_internal_class_ex(&ce_period, NULL);
+       date_ce_period = register_class_DatePeriod(zend_ce_aggregate);
+       date_ce_period->create_object = date_object_new_period;
        date_ce_period->get_iterator = date_object_period_get_iterator;
-       zend_class_implements(date_ce_period, 1, zend_ce_aggregate);
        memcpy(&date_object_handlers_period, &std_object_handlers, sizeof(zend_object_handlers));
        date_object_handlers_period.offset = XtOffsetOf(php_period_obj, std);
        date_object_handlers_period.free_obj = date_object_free_storage_period;
index cb01b7e07384fd9cc72b0f15b04ff33d5c5f2197..bb192841994c0a6be48f53046ef56062c5221614 100644 (file)
@@ -1,6 +1,9 @@
 <?php
 
-/** @generate-function-entries */
+/**
+ * @generate-function-entries
+ * @generate-class-entries
+ */
 
 function strtotime(string $datetime, ?int $baseTimestamp = null): int|false {}
 
index cf50abb43faf869d3ef70e3db86a6ce051203072..91bc796285c60234f961bfda6257b0399066aeb5 100644 (file)
@@ -1,5 +1,5 @@
 /* This is a generated file, edit the .stub.php file instead.
- * Stub hash: 880a93d8a3461635447318317869fa7d3d7762dd */
+ * Stub hash: fde1c48b5ad92f574ac049101f421232c6a64252 */
 
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_strtotime, 0, 1, MAY_BE_LONG|MAY_BE_FALSE)
        ZEND_ARG_TYPE_INFO(0, datetime, IS_STRING, 0)
@@ -657,3 +657,67 @@ static const zend_function_entry class_DatePeriod_methods[] = {
        ZEND_ME(DatePeriod, getIterator, arginfo_class_DatePeriod_getIterator, ZEND_ACC_PUBLIC)
        ZEND_FE_END
 };
+
+zend_class_entry *register_class_DateTimeInterface()
+{
+       zend_class_entry ce, *class_entry;
+
+       INIT_CLASS_ENTRY(ce, "DateTimeInterface", class_DateTimeInterface_methods);
+       class_entry = zend_register_internal_interface(&ce);
+
+       return class_entry;
+}
+
+zend_class_entry *register_class_DateTime(zend_class_entry *class_entry_DateTimeInterface)
+{
+       zend_class_entry ce, *class_entry;
+
+       INIT_CLASS_ENTRY(ce, "DateTime", class_DateTime_methods);
+       class_entry = zend_register_internal_class_ex(&ce, NULL);
+       zend_class_implements(class_entry, 1, class_entry_DateTimeInterface);
+
+       return class_entry;
+}
+
+zend_class_entry *register_class_DateTimeImmutable(zend_class_entry *class_entry_DateTimeInterface)
+{
+       zend_class_entry ce, *class_entry;
+
+       INIT_CLASS_ENTRY(ce, "DateTimeImmutable", class_DateTimeImmutable_methods);
+       class_entry = zend_register_internal_class_ex(&ce, NULL);
+       zend_class_implements(class_entry, 1, class_entry_DateTimeInterface);
+
+       return class_entry;
+}
+
+zend_class_entry *register_class_DateTimeZone()
+{
+       zend_class_entry ce, *class_entry;
+
+       INIT_CLASS_ENTRY(ce, "DateTimeZone", class_DateTimeZone_methods);
+       class_entry = zend_register_internal_class_ex(&ce, NULL);
+
+       return class_entry;
+}
+
+zend_class_entry *register_class_DateInterval()
+{
+       zend_class_entry ce, *class_entry;
+
+       INIT_CLASS_ENTRY(ce, "DateInterval", class_DateInterval_methods);
+       class_entry = zend_register_internal_class_ex(&ce, NULL);
+
+       return class_entry;
+}
+
+zend_class_entry *register_class_DatePeriod(zend_class_entry *class_entry_IteratorAggregate)
+{
+       zend_class_entry ce, *class_entry;
+
+       INIT_CLASS_ENTRY(ce, "DatePeriod", class_DatePeriod_methods);
+       class_entry = zend_register_internal_class_ex(&ce, NULL);
+       zend_class_implements(class_entry, 1, class_entry_IteratorAggregate);
+
+       return class_entry;
+}
+
index 12cccbe506c880649d8b9d9a71b3a7a063812ea3..cff3b165b6ddb415c34685e4e5dd0d69142a8b75 100644 (file)
@@ -1,6 +1,9 @@
 <?php
 
-/** @generate-function-entries */
+/**
+ * @generate-function-entries
+ * @generate-class-entries
+ */
 
 /**
  * @param string $path
index d92eae0448cc38e29efc9442450fbb3428cd033a..ae6faf26f30fc9019bda5e7844a5c5b263e3fce6 100644 (file)
@@ -1,5 +1,5 @@
 /* This is a generated file, edit the .stub.php file instead.
- * Stub hash: 63980c2a7227d1b5dbd566efb3efbf8c45c55c0d */
+ * Stub hash: 847b6feaa62709f1a7a432564e9086e509b86bf7 */
 
 ZEND_BEGIN_ARG_INFO_EX(arginfo_dba_popen, 0, 0, 2)
        ZEND_ARG_INFO(0, path)
@@ -94,3 +94,4 @@ static const zend_function_entry ext_functions[] = {
        ZEND_FE(dba_list, arginfo_dba_list)
        ZEND_FE_END
 };
+
index e8d75d5999daf9e9a22ca1e5cb6bbc8df7b4bb7b..9dcb79e398027d678a29640da24bcb62ec0e6d61 100644 (file)
@@ -559,8 +559,6 @@ void dom_xpath_objects_free_storage(zend_object *object);
 /* {{{ PHP_MINIT_FUNCTION(dom) */
 PHP_MINIT_FUNCTION(dom)
 {
-       zend_class_entry ce;
-
        memcpy(&dom_object_handlers, &std_object_handlers, sizeof(zend_object_handlers));
        dom_object_handlers.offset = XtOffsetOf(dom_object, std);
        dom_object_handlers.free_obj = dom_objects_free_storage;
@@ -579,20 +577,17 @@ PHP_MINIT_FUNCTION(dom)
 
        zend_hash_init(&classes, 0, NULL, NULL, 1);
 
-       INIT_CLASS_ENTRY(ce, "DOMException", class_DOMException_methods);
-       dom_domexception_class_entry = zend_register_internal_class_ex(&ce, zend_ce_exception);
-       dom_domexception_class_entry->ce_flags |= ZEND_ACC_FINAL;
-       zend_declare_property_long(dom_domexception_class_entry, "code", sizeof("code")-1, 0, ZEND_ACC_PUBLIC);
+       dom_domexception_class_entry = register_class_DOMException(zend_ce_exception);
 
-       INIT_CLASS_ENTRY(ce, "DOMParentNode", class_DOMParentNode_methods);
-       dom_parentnode_class_entry = zend_register_internal_interface(&ce);
+       dom_parentnode_class_entry = register_class_DOMParentNode();
 
-       INIT_CLASS_ENTRY(ce, "DOMChildNode", class_DOMChildNode_methods);
-       dom_childnode_class_entry = zend_register_internal_interface(&ce);
+       dom_childnode_class_entry = register_class_DOMChildNode();
 
-       REGISTER_DOM_CLASS(ce, "DOMImplementation", NULL, class_DOMImplementation_methods, dom_domimplementation_class_entry);
+       dom_domimplementation_class_entry = register_class_DOMImplementation();
+       dom_domimplementation_class_entry->create_object = dom_objects_new;
 
-       REGISTER_DOM_CLASS(ce, "DOMNode", NULL, class_DOMNode_methods, dom_node_class_entry);
+       dom_node_class_entry = register_class_DOMNode();
+       dom_node_class_entry->create_object = dom_objects_new;
 
        zend_hash_init(&dom_node_prop_handlers, 0, NULL, dom_dtor_prop_handler, 1);
        dom_register_prop_handler(&dom_node_prop_handlers, "nodeName", sizeof("nodeName")-1, dom_node_node_name_read, NULL);
@@ -611,9 +606,10 @@ PHP_MINIT_FUNCTION(dom)
        dom_register_prop_handler(&dom_node_prop_handlers, "localName", sizeof("localName")-1, dom_node_local_name_read, NULL);
        dom_register_prop_handler(&dom_node_prop_handlers, "baseURI", sizeof("baseURI")-1, dom_node_base_uri_read, NULL);
        dom_register_prop_handler(&dom_node_prop_handlers, "textContent", sizeof("textContent")-1, dom_node_text_content_read, dom_node_text_content_write);
-       zend_hash_add_ptr(&classes, ce.name, &dom_node_prop_handlers);
+       zend_hash_add_ptr(&classes, dom_node_class_entry->name, &dom_node_prop_handlers);
 
-       REGISTER_DOM_CLASS(ce, "DOMNameSpaceNode", NULL, NULL, dom_namespace_node_class_entry);
+       dom_namespace_node_class_entry = register_class_DOMNameSpaceNode();
+       dom_namespace_node_class_entry->create_object = dom_objects_new;
 
        zend_hash_init(&dom_namespace_node_prop_handlers, 0, NULL, dom_dtor_prop_handler, 1);
        dom_register_prop_handler(&dom_namespace_node_prop_handlers, "nodeName", sizeof("nodeName")-1, dom_node_node_name_read, NULL);
@@ -624,9 +620,10 @@ PHP_MINIT_FUNCTION(dom)
        dom_register_prop_handler(&dom_namespace_node_prop_handlers, "namespaceURI", sizeof("namespaceURI")-1, dom_node_namespace_uri_read, NULL);
        dom_register_prop_handler(&dom_namespace_node_prop_handlers, "ownerDocument", sizeof("ownerDocument")-1, dom_node_owner_document_read, NULL);
        dom_register_prop_handler(&dom_namespace_node_prop_handlers, "parentNode", sizeof("parentNode")-1, dom_node_parent_node_read, NULL);
-       zend_hash_add_ptr(&classes, ce.name, &dom_namespace_node_prop_handlers);
+       zend_hash_add_ptr(&classes, dom_namespace_node_class_entry->name, &dom_namespace_node_prop_handlers);
 
-       REGISTER_DOM_CLASS(ce, "DOMDocumentFragment", dom_node_class_entry, class_DOMDocumentFragment_methods, dom_documentfragment_class_entry);
+       dom_documentfragment_class_entry = register_class_DOMDocumentFragment(dom_node_class_entry, dom_parentnode_class_entry);
+       dom_documentfragment_class_entry->create_object = dom_objects_new;
        zend_hash_init(&dom_documentfragment_prop_handlers, 0, NULL, dom_dtor_prop_handler, 1);
 
        dom_register_prop_handler(&dom_documentfragment_prop_handlers, "firstElementChild", sizeof("firstElementChild")-1, dom_parent_node_first_element_child_read, NULL);
@@ -634,10 +631,10 @@ PHP_MINIT_FUNCTION(dom)
        dom_register_prop_handler(&dom_documentfragment_prop_handlers, "childElementCount", sizeof("childElementCount")-1, dom_parent_node_child_element_count, NULL);
 
        zend_hash_merge(&dom_documentfragment_prop_handlers, &dom_node_prop_handlers, dom_copy_prop_handler, 0);
-       zend_hash_add_ptr(&classes, ce.name, &dom_documentfragment_prop_handlers);
-       zend_class_implements(dom_documentfragment_class_entry, 1, dom_parentnode_class_entry);
+       zend_hash_add_ptr(&classes, dom_documentfragment_class_entry->name, &dom_documentfragment_prop_handlers);
 
-       REGISTER_DOM_CLASS(ce, "DOMDocument", dom_node_class_entry, class_DOMDocument_methods, dom_document_class_entry);
+       dom_document_class_entry = register_class_DOMDocument(dom_node_class_entry, dom_parentnode_class_entry);
+       dom_document_class_entry->create_object = dom_objects_new;
        zend_hash_init(&dom_document_prop_handlers, 0, NULL, dom_dtor_prop_handler, 1);
        dom_register_prop_handler(&dom_document_prop_handlers, "doctype", sizeof("doctype")-1, dom_document_doctype_read, NULL);
        dom_register_prop_handler(&dom_document_prop_handlers, "implementation", sizeof("implementation")-1, dom_document_implementation_read, NULL);
@@ -664,30 +661,26 @@ PHP_MINIT_FUNCTION(dom)
        dom_register_prop_handler(&dom_document_prop_handlers, "childElementCount", sizeof("childElementCount")-1, dom_parent_node_child_element_count, NULL);
 
        zend_hash_merge(&dom_document_prop_handlers, &dom_node_prop_handlers, dom_copy_prop_handler, 0);
-       zend_hash_add_ptr(&classes, ce.name, &dom_document_prop_handlers);
-       zend_class_implements(dom_document_class_entry, 1, dom_parentnode_class_entry);
+       zend_hash_add_ptr(&classes, dom_document_class_entry->name, &dom_document_prop_handlers);
 
-       INIT_CLASS_ENTRY(ce, "DOMNodeList", class_DOMNodeList_methods);
-       ce.create_object = dom_nnodemap_objects_new;
-       dom_nodelist_class_entry = zend_register_internal_class_ex(&ce, NULL);
+       dom_nodelist_class_entry = register_class_DOMNodeList(zend_ce_aggregate, zend_ce_countable);
+       dom_nodelist_class_entry->create_object = dom_nnodemap_objects_new;
        dom_nodelist_class_entry->get_iterator = php_dom_get_iterator;
-       zend_class_implements(dom_nodelist_class_entry, 2, zend_ce_aggregate, zend_ce_countable);
 
        zend_hash_init(&dom_nodelist_prop_handlers, 0, NULL, dom_dtor_prop_handler, 1);
        dom_register_prop_handler(&dom_nodelist_prop_handlers, "length", sizeof("length")-1, dom_nodelist_length_read, NULL);
-       zend_hash_add_ptr(&classes, ce.name, &dom_nodelist_prop_handlers);
+       zend_hash_add_ptr(&classes, dom_nodelist_class_entry->name, &dom_nodelist_prop_handlers);
 
-       INIT_CLASS_ENTRY(ce, "DOMNamedNodeMap", class_DOMNamedNodeMap_methods);
-       ce.create_object = dom_nnodemap_objects_new;
-       dom_namednodemap_class_entry = zend_register_internal_class_ex(&ce, NULL);
+       dom_namednodemap_class_entry = register_class_DOMNamedNodeMap(zend_ce_aggregate, zend_ce_countable);
+       dom_namednodemap_class_entry->create_object = dom_nnodemap_objects_new;
        dom_namednodemap_class_entry->get_iterator = php_dom_get_iterator;
-       zend_class_implements(dom_namednodemap_class_entry, 2, zend_ce_aggregate, zend_ce_countable);
 
        zend_hash_init(&dom_namednodemap_prop_handlers, 0, NULL, dom_dtor_prop_handler, 1);
        dom_register_prop_handler(&dom_namednodemap_prop_handlers, "length", sizeof("length")-1, dom_namednodemap_length_read, NULL);
-       zend_hash_add_ptr(&classes, ce.name, &dom_namednodemap_prop_handlers);
+       zend_hash_add_ptr(&classes, dom_namednodemap_class_entry->name, &dom_namednodemap_prop_handlers);
 
-       REGISTER_DOM_CLASS(ce, "DOMCharacterData", dom_node_class_entry, class_DOMCharacterData_methods, dom_characterdata_class_entry);
+       dom_characterdata_class_entry = register_class_DOMCharacterData(dom_node_class_entry, dom_childnode_class_entry);
+       dom_characterdata_class_entry->create_object = dom_objects_new;
 
        zend_hash_init(&dom_characterdata_prop_handlers, 0, NULL, dom_dtor_prop_handler, 1);
        dom_register_prop_handler(&dom_characterdata_prop_handlers, "data", sizeof("data")-1, dom_characterdata_data_read, dom_characterdata_data_write);
@@ -695,11 +688,10 @@ PHP_MINIT_FUNCTION(dom)
        dom_register_prop_handler(&dom_characterdata_prop_handlers, "previousElementSibling", sizeof("previousElementSibling")-1, dom_node_previous_element_sibling_read, NULL);
        dom_register_prop_handler(&dom_characterdata_prop_handlers, "nextElementSibling", sizeof("nextElementSibling")-1, dom_node_next_element_sibling_read, NULL);
        zend_hash_merge(&dom_characterdata_prop_handlers, &dom_node_prop_handlers, dom_copy_prop_handler, 0);
-       zend_hash_add_ptr(&classes, ce.name, &dom_characterdata_prop_handlers);
-
-       zend_class_implements(dom_characterdata_class_entry, 1, dom_childnode_class_entry);
+       zend_hash_add_ptr(&classes, dom_characterdata_class_entry->name, &dom_characterdata_prop_handlers);
 
-       REGISTER_DOM_CLASS(ce, "DOMAttr", dom_node_class_entry, class_DOMAttr_methods, dom_attr_class_entry);
+       dom_attr_class_entry = register_class_DOMAttr(dom_node_class_entry);
+       dom_attr_class_entry->create_object = dom_objects_new;
 
        zend_hash_init(&dom_attr_prop_handlers, 0, NULL, dom_dtor_prop_handler, 1);
        dom_register_prop_handler(&dom_attr_prop_handlers, "name", sizeof("name")-1, dom_attr_name_read, NULL);
@@ -708,9 +700,10 @@ PHP_MINIT_FUNCTION(dom)
        dom_register_prop_handler(&dom_attr_prop_handlers, "ownerElement", sizeof("ownerElement")-1, dom_attr_owner_element_read, NULL);
        dom_register_prop_handler(&dom_attr_prop_handlers, "schemaTypeInfo", sizeof("schemaTypeInfo")-1, dom_attr_schema_type_info_read, NULL);
        zend_hash_merge(&dom_attr_prop_handlers, &dom_node_prop_handlers, dom_copy_prop_handler, 0);
-       zend_hash_add_ptr(&classes, ce.name, &dom_attr_prop_handlers);
+       zend_hash_add_ptr(&classes, dom_attr_class_entry->name, &dom_attr_prop_handlers);
 
-       REGISTER_DOM_CLASS(ce, "DOMElement", dom_node_class_entry, class_DOMElement_methods, dom_element_class_entry);
+       dom_element_class_entry = register_class_DOMElement(dom_node_class_entry, dom_parentnode_class_entry, dom_childnode_class_entry);
+       dom_element_class_entry->create_object = dom_objects_new;
 
        zend_hash_init(&dom_element_prop_handlers, 0, NULL, dom_dtor_prop_handler, 1);
        dom_register_prop_handler(&dom_element_prop_handlers, "tagName", sizeof("tagName")-1, dom_element_tag_name_read, NULL);
@@ -721,24 +714,26 @@ PHP_MINIT_FUNCTION(dom)
        dom_register_prop_handler(&dom_element_prop_handlers, "previousElementSibling", sizeof("previousElementSibling")-1, dom_node_previous_element_sibling_read, NULL);
        dom_register_prop_handler(&dom_element_prop_handlers, "nextElementSibling", sizeof("nextElementSibling")-1, dom_node_next_element_sibling_read, NULL);
        zend_hash_merge(&dom_element_prop_handlers, &dom_node_prop_handlers, dom_copy_prop_handler, 0);
-       zend_hash_add_ptr(&classes, ce.name, &dom_element_prop_handlers);
-
-       zend_class_implements(dom_element_class_entry, 2, dom_parentnode_class_entry, dom_childnode_class_entry);
+       zend_hash_add_ptr(&classes, dom_element_class_entry->name, &dom_element_prop_handlers);
 
-       REGISTER_DOM_CLASS(ce, "DOMText", dom_characterdata_class_entry, class_DOMText_methods, dom_text_class_entry);
+       dom_text_class_entry = register_class_DOMText(dom_characterdata_class_entry);
+       dom_text_class_entry->create_object = dom_objects_new;
 
        zend_hash_init(&dom_text_prop_handlers, 0, NULL, dom_dtor_prop_handler, 1);
        dom_register_prop_handler(&dom_text_prop_handlers, "wholeText", sizeof("wholeText")-1, dom_text_whole_text_read, NULL);
        zend_hash_merge(&dom_text_prop_handlers, &dom_characterdata_prop_handlers, dom_copy_prop_handler, 0);
-       zend_hash_add_ptr(&classes, ce.name, &dom_text_prop_handlers);
+       zend_hash_add_ptr(&classes, dom_text_class_entry->name, &dom_text_prop_handlers);
 
-       REGISTER_DOM_CLASS(ce, "DOMComment", dom_characterdata_class_entry, class_DOMComment_methods, dom_comment_class_entry);
-       zend_hash_add_ptr(&classes, ce.name, &dom_characterdata_prop_handlers);
+       dom_comment_class_entry = register_class_DOMComment(dom_characterdata_class_entry);
+       dom_comment_class_entry->create_object = dom_objects_new;
+       zend_hash_add_ptr(&classes, dom_comment_class_entry->name, &dom_characterdata_prop_handlers);
 
-       REGISTER_DOM_CLASS(ce, "DOMCdataSection", dom_text_class_entry, class_DOMCdataSection_methods, dom_cdatasection_class_entry);
-       zend_hash_add_ptr(&classes, ce.name, &dom_text_prop_handlers);
+       dom_cdatasection_class_entry = register_class_DOMCdataSection(dom_text_class_entry);
+       dom_cdatasection_class_entry->create_object = dom_objects_new;
+       zend_hash_add_ptr(&classes, dom_cdatasection_class_entry->name, &dom_text_prop_handlers);
 
-       REGISTER_DOM_CLASS(ce, "DOMDocumentType", dom_node_class_entry, class_DOMDocumentType_methods, dom_documenttype_class_entry);
+       dom_documenttype_class_entry = register_class_DOMDocumentType(dom_node_class_entry);
+       dom_documenttype_class_entry->create_object = dom_objects_new;
 
        zend_hash_init(&dom_documenttype_prop_handlers, 0, NULL, dom_dtor_prop_handler, 1);
        dom_register_prop_handler(&dom_documenttype_prop_handlers, "name", sizeof("name")-1, dom_documenttype_name_read, NULL);
@@ -748,17 +743,19 @@ PHP_MINIT_FUNCTION(dom)
        dom_register_prop_handler(&dom_documenttype_prop_handlers, "systemId", sizeof("systemId")-1, dom_documenttype_system_id_read, NULL);
        dom_register_prop_handler(&dom_documenttype_prop_handlers, "internalSubset", sizeof("internalSubset")-1, dom_documenttype_internal_subset_read, NULL);
        zend_hash_merge(&dom_documenttype_prop_handlers, &dom_node_prop_handlers, dom_copy_prop_handler, 0);
-       zend_hash_add_ptr(&classes, ce.name, &dom_documenttype_prop_handlers);
+       zend_hash_add_ptr(&classes, dom_documenttype_class_entry->name, &dom_documenttype_prop_handlers);
 
-       REGISTER_DOM_CLASS(ce, "DOMNotation", dom_node_class_entry, class_DOMNotation_methods, dom_notation_class_entry);
+       dom_notation_class_entry = register_class_DOMNotation(dom_node_class_entry);
+       dom_notation_class_entry->create_object = dom_objects_new;
 
        zend_hash_init(&dom_notation_prop_handlers, 0, NULL, dom_dtor_prop_handler, 1);
        dom_register_prop_handler(&dom_notation_prop_handlers, "publicId", sizeof("publicId")-1, dom_notation_public_id_read, NULL);
        dom_register_prop_handler(&dom_notation_prop_handlers, "systemId", sizeof("systemId")-1, dom_notation_system_id_read, NULL);
        zend_hash_merge(&dom_notation_prop_handlers, &dom_node_prop_handlers, dom_copy_prop_handler, 0);
-       zend_hash_add_ptr(&classes, ce.name, &dom_notation_prop_handlers);
+       zend_hash_add_ptr(&classes, dom_notation_class_entry->name, &dom_notation_prop_handlers);
 
-       REGISTER_DOM_CLASS(ce, "DOMEntity", dom_node_class_entry, class_DOMEntity_methods, dom_entity_class_entry);
+       dom_entity_class_entry = register_class_DOMEntity(dom_node_class_entry);
+       dom_entity_class_entry->create_object = dom_objects_new;
 
        zend_hash_init(&dom_entity_prop_handlers, 0, NULL, dom_dtor_prop_handler, 1);
        dom_register_prop_handler(&dom_entity_prop_handlers, "publicId", sizeof("publicId")-1, dom_entity_public_id_read, NULL);
@@ -768,32 +765,33 @@ PHP_MINIT_FUNCTION(dom)
        dom_register_prop_handler(&dom_entity_prop_handlers, "encoding", sizeof("encoding")-1, dom_entity_encoding_read, dom_entity_encoding_write);
        dom_register_prop_handler(&dom_entity_prop_handlers, "version", sizeof("version")-1, dom_entity_version_read, dom_entity_version_write);
        zend_hash_merge(&dom_entity_prop_handlers, &dom_node_prop_handlers, dom_copy_prop_handler, 0);
-       zend_hash_add_ptr(&classes, ce.name, &dom_entity_prop_handlers);
+       zend_hash_add_ptr(&classes, dom_entity_class_entry->name, &dom_entity_prop_handlers);
 
-       REGISTER_DOM_CLASS(ce, "DOMEntityReference", dom_node_class_entry, class_DOMEntityReference_methods, dom_entityreference_class_entry);
-       zend_hash_add_ptr(&classes, ce.name, &dom_node_prop_handlers);
+       dom_entityreference_class_entry = register_class_DOMEntityReference(dom_node_class_entry);
+       dom_entityreference_class_entry->create_object = dom_objects_new;
+       zend_hash_add_ptr(&classes, dom_entityreference_class_entry->name, &dom_node_prop_handlers);
 
-       REGISTER_DOM_CLASS(ce, "DOMProcessingInstruction", dom_node_class_entry, class_DOMProcessingInstruction_methods, dom_processinginstruction_class_entry);
+       dom_processinginstruction_class_entry = register_class_DOMProcessingInstruction(dom_node_class_entry);
+       dom_processinginstruction_class_entry->create_object = dom_objects_new;
 
        zend_hash_init(&dom_processinginstruction_prop_handlers, 0, NULL, dom_dtor_prop_handler, 1);
        dom_register_prop_handler(&dom_processinginstruction_prop_handlers, "target", sizeof("target")-1, dom_processinginstruction_target_read, NULL);
        dom_register_prop_handler(&dom_processinginstruction_prop_handlers, "data", sizeof("data")-1, dom_processinginstruction_data_read, dom_processinginstruction_data_write);
        zend_hash_merge(&dom_processinginstruction_prop_handlers, &dom_node_prop_handlers, dom_copy_prop_handler, 0);
-       zend_hash_add_ptr(&classes, ce.name, &dom_processinginstruction_prop_handlers);
+       zend_hash_add_ptr(&classes, dom_processinginstruction_class_entry->name, &dom_processinginstruction_prop_handlers);
 
 #ifdef LIBXML_XPATH_ENABLED
        memcpy(&dom_xpath_object_handlers, &dom_object_handlers, sizeof(zend_object_handlers));
        dom_xpath_object_handlers.offset = XtOffsetOf(dom_xpath_object, dom) + XtOffsetOf(dom_object, std);
        dom_xpath_object_handlers.free_obj = dom_xpath_objects_free_storage;
 
-       INIT_CLASS_ENTRY(ce, "DOMXPath", class_DOMXPath_methods);
-       ce.create_object = dom_xpath_objects_new;
-       dom_xpath_class_entry = zend_register_internal_class_ex(&ce, NULL);
+       dom_xpath_class_entry = register_class_DOMXPath();
+       dom_xpath_class_entry->create_object = dom_xpath_objects_new;
 
        zend_hash_init(&dom_xpath_prop_handlers, 0, NULL, dom_dtor_prop_handler, 1);
        dom_register_prop_handler(&dom_xpath_prop_handlers, "document", sizeof("document")-1, dom_xpath_document_read, NULL);
        dom_register_prop_handler(&dom_xpath_prop_handlers, "registerNodeNamespaces", sizeof("registerNodeNamespaces")-1, dom_xpath_register_node_ns_read, dom_xpath_register_node_ns_write);
-       zend_hash_add_ptr(&classes, ce.name, &dom_xpath_prop_handlers);
+       zend_hash_add_ptr(&classes, dom_xpath_class_entry->name, &dom_xpath_prop_handlers);
 #endif
 
        REGISTER_LONG_CONSTANT("XML_ELEMENT_NODE",                      XML_ELEMENT_NODE,                       CONST_CS | CONST_PERSISTENT);
index edebd13dd5340d6af823c66a653ee6dffea16e17..29e49bcbe2362c51a334ed87ef02186d0533aa8f 100644 (file)
@@ -1,17 +1,20 @@
 <?php
 
-/** @generate-function-entries */
+/**
+ * @generate-function-entries
+ * @generate-class-entries
+ */
 
-class DOMDocumentType
+class DOMDocumentType extends DOMNode
 {
 }
 
-class DOMCdataSection
+class DOMCdataSection extends DOMText
 {
     public function __construct(string $data) {}
 }
 
-class DOMComment
+class DOMComment extends DOMCharacterData
 {
     public function __construct(string $data = "") {}
 }
@@ -93,6 +96,10 @@ class DOMNode
     public function replaceChild(DOMNode $node, DOMNode $child) {}
 }
 
+class DOMNameSpaceNode
+{
+}
+
 class DOMImplementation
 {
     /** @return void */
@@ -108,7 +115,7 @@ class DOMImplementation
     public function createDocument(string $namespace = "", string $qualifiedName = "", ?DOMDocumentType $doctype = null) {}
 }
 
-class DOMDocumentFragment implements DOMParentNode
+class DOMDocumentFragment extends DOMNode implements DOMParentNode
 {
     public function __construct() {}
 
@@ -133,7 +140,7 @@ class DOMNodeList implements IteratorAggregate, Countable
     public function item(int $index) {}
 }
 
-class DOMCharacterData implements DOMChildNode
+class DOMCharacterData extends DOMNode implements DOMChildNode
 {
     /** @return bool */
     public function appendData(string $data) {}
@@ -162,7 +169,7 @@ class DOMCharacterData implements DOMChildNode
     public function after(...$nodes): void {}
 }
 
-class DOMAttr
+class DOMAttr extends DOMNode
 {
     public function __construct(string $name, string $value = "") {}
 
@@ -170,7 +177,7 @@ class DOMAttr
     public function isId() {}
 }
 
-class DOMElement implements DOMParentNode, DOMChildNode
+class DOMElement extends DOMNode implements DOMParentNode, DOMChildNode
 {
     public function __construct(string $qualifiedName, ?string $value = null, string $namespace = "") {}
 
@@ -246,7 +253,7 @@ class DOMElement implements DOMParentNode, DOMChildNode
     public function prepend(...$nodes): void {}
 }
 
-class DOMDocument implements DOMParentNode
+class DOMDocument extends DOMNode implements DOMParentNode
 {
     public function __construct(string $version = "1.0", string $encoding = "") {}
 
@@ -360,7 +367,7 @@ final class DOMException extends Exception
     public $code = 0;
 }
 
-class DOMText
+class DOMText extends DOMCharacterData
 {
     public function __construct(string $data = "") {}
 
@@ -398,7 +405,7 @@ class DOMEntity extends DOMNode
 {
 }
 
-class DOMEntityReference
+class DOMEntityReference extends DOMNode
 {
     public function __construct(string $name) {}
 }
@@ -407,7 +414,7 @@ class DOMNotation extends DOMNode
 {
 }
 
-class DOMProcessingInstruction
+class DOMProcessingInstruction extends DOMNode
 {
     public function __construct(string $name, string $value = "") {}
 }
index 16819e2a687379e1172dc284829ff664cf6dfa32..067b9b0b91b2751536bb5e94563ca05ca7bdd982 100644 (file)
@@ -1,5 +1,5 @@
 /* This is a generated file, edit the .stub.php file instead.
- * Stub hash: 3b8099cbadc28541bf0206c6173e82e5ba2f48ce */
+ * Stub hash: 550deb4b432eb0572b30c220998504047fc556f5 */
 
 ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_dom_import_simplexml, 0, 1, DOMElement, 1)
        ZEND_ARG_TYPE_INFO(0, node, IS_OBJECT, 0)
@@ -649,6 +649,11 @@ static const zend_function_entry class_DOMNode_methods[] = {
 };
 
 
+static const zend_function_entry class_DOMNameSpaceNode_methods[] = {
+       ZEND_FE_END
+};
+
+
 static const zend_function_entry class_DOMImplementation_methods[] = {
        ZEND_ME(DOMImplementation, getFeature, arginfo_class_DOMImplementation_getFeature, ZEND_ACC_PUBLIC)
        ZEND_ME(DOMImplementation, hasFeature, arginfo_class_DOMImplementation_hasFeature, ZEND_ACC_PUBLIC)
@@ -845,3 +850,237 @@ static const zend_function_entry class_DOMXPath_methods[] = {
 #endif
        ZEND_FE_END
 };
+
+zend_class_entry *register_class_DOMDocumentType(zend_class_entry *class_entry_DOMNode)
+{
+       zend_class_entry ce, *class_entry;
+
+       INIT_CLASS_ENTRY(ce, "DOMDocumentType", class_DOMDocumentType_methods);
+       class_entry = zend_register_internal_class_ex(&ce, class_entry_DOMNode);
+
+       return class_entry;
+}
+
+zend_class_entry *register_class_DOMCdataSection(zend_class_entry *class_entry_DOMText)
+{
+       zend_class_entry ce, *class_entry;
+
+       INIT_CLASS_ENTRY(ce, "DOMCdataSection", class_DOMCdataSection_methods);
+       class_entry = zend_register_internal_class_ex(&ce, class_entry_DOMText);
+
+       return class_entry;
+}
+
+zend_class_entry *register_class_DOMComment(zend_class_entry *class_entry_DOMCharacterData)
+{
+       zend_class_entry ce, *class_entry;
+
+       INIT_CLASS_ENTRY(ce, "DOMComment", class_DOMComment_methods);
+       class_entry = zend_register_internal_class_ex(&ce, class_entry_DOMCharacterData);
+
+       return class_entry;
+}
+
+zend_class_entry *register_class_DOMParentNode()
+{
+       zend_class_entry ce, *class_entry;
+
+       INIT_CLASS_ENTRY(ce, "DOMParentNode", class_DOMParentNode_methods);
+       class_entry = zend_register_internal_interface(&ce);
+
+       return class_entry;
+}
+
+zend_class_entry *register_class_DOMChildNode()
+{
+       zend_class_entry ce, *class_entry;
+
+       INIT_CLASS_ENTRY(ce, "DOMChildNode", class_DOMChildNode_methods);
+       class_entry = zend_register_internal_interface(&ce);
+
+       return class_entry;
+}
+
+zend_class_entry *register_class_DOMNode()
+{
+       zend_class_entry ce, *class_entry;
+
+       INIT_CLASS_ENTRY(ce, "DOMNode", class_DOMNode_methods);
+       class_entry = zend_register_internal_class_ex(&ce, NULL);
+
+       return class_entry;
+}
+
+zend_class_entry *register_class_DOMNameSpaceNode()
+{
+       zend_class_entry ce, *class_entry;
+
+       INIT_CLASS_ENTRY(ce, "DOMNameSpaceNode", class_DOMNameSpaceNode_methods);
+       class_entry = zend_register_internal_class_ex(&ce, NULL);
+
+       return class_entry;
+}
+
+zend_class_entry *register_class_DOMImplementation()
+{
+       zend_class_entry ce, *class_entry;
+
+       INIT_CLASS_ENTRY(ce, "DOMImplementation", class_DOMImplementation_methods);
+       class_entry = zend_register_internal_class_ex(&ce, NULL);
+
+       return class_entry;
+}
+
+zend_class_entry *register_class_DOMDocumentFragment(zend_class_entry *class_entry_DOMNode, zend_class_entry *class_entry_DOMParentNode)
+{
+       zend_class_entry ce, *class_entry;
+
+       INIT_CLASS_ENTRY(ce, "DOMDocumentFragment", class_DOMDocumentFragment_methods);
+       class_entry = zend_register_internal_class_ex(&ce, class_entry_DOMNode);
+       zend_class_implements(class_entry, 1, class_entry_DOMParentNode);
+
+       return class_entry;
+}
+
+zend_class_entry *register_class_DOMNodeList(zend_class_entry *class_entry_IteratorAggregate, zend_class_entry *class_entry_Countable)
+{
+       zend_class_entry ce, *class_entry;
+
+       INIT_CLASS_ENTRY(ce, "DOMNodeList", class_DOMNodeList_methods);
+       class_entry = zend_register_internal_class_ex(&ce, NULL);
+       zend_class_implements(class_entry, 2, class_entry_IteratorAggregate, class_entry_Countable);
+
+       return class_entry;
+}
+
+zend_class_entry *register_class_DOMCharacterData(zend_class_entry *class_entry_DOMNode, zend_class_entry *class_entry_DOMChildNode)
+{
+       zend_class_entry ce, *class_entry;
+
+       INIT_CLASS_ENTRY(ce, "DOMCharacterData", class_DOMCharacterData_methods);
+       class_entry = zend_register_internal_class_ex(&ce, class_entry_DOMNode);
+       zend_class_implements(class_entry, 1, class_entry_DOMChildNode);
+
+       return class_entry;
+}
+
+zend_class_entry *register_class_DOMAttr(zend_class_entry *class_entry_DOMNode)
+{
+       zend_class_entry ce, *class_entry;
+
+       INIT_CLASS_ENTRY(ce, "DOMAttr", class_DOMAttr_methods);
+       class_entry = zend_register_internal_class_ex(&ce, class_entry_DOMNode);
+
+       return class_entry;
+}
+
+zend_class_entry *register_class_DOMElement(zend_class_entry *class_entry_DOMNode, zend_class_entry *class_entry_DOMParentNode, zend_class_entry *class_entry_DOMChildNode)
+{
+       zend_class_entry ce, *class_entry;
+
+       INIT_CLASS_ENTRY(ce, "DOMElement", class_DOMElement_methods);
+       class_entry = zend_register_internal_class_ex(&ce, class_entry_DOMNode);
+       zend_class_implements(class_entry, 2, class_entry_DOMParentNode, class_entry_DOMChildNode);
+
+       return class_entry;
+}
+
+zend_class_entry *register_class_DOMDocument(zend_class_entry *class_entry_DOMNode, zend_class_entry *class_entry_DOMParentNode)
+{
+       zend_class_entry ce, *class_entry;
+
+       INIT_CLASS_ENTRY(ce, "DOMDocument", class_DOMDocument_methods);
+       class_entry = zend_register_internal_class_ex(&ce, class_entry_DOMNode);
+       zend_class_implements(class_entry, 1, class_entry_DOMParentNode);
+
+       return class_entry;
+}
+
+zend_class_entry *register_class_DOMException(zend_class_entry *class_entry_Exception)
+{
+       zend_class_entry ce, *class_entry;
+
+       INIT_CLASS_ENTRY(ce, "DOMException", class_DOMException_methods);
+       class_entry = zend_register_internal_class_ex(&ce, class_entry_Exception);
+       class_entry->ce_flags |= ZEND_ACC_FINAL;
+
+       zval property_code_default_value;
+       ZVAL_LONG(&property_code_default_value, 0);
+       zend_string *property_code_name = zend_string_init("code", sizeof("code") - 1, 1);
+       zend_declare_property_ex(class_entry, property_code_name, &property_code_default_value, ZEND_ACC_PUBLIC, NULL);
+       zend_string_release(property_code_name);
+
+       return class_entry;
+}
+
+zend_class_entry *register_class_DOMText(zend_class_entry *class_entry_DOMCharacterData)
+{
+       zend_class_entry ce, *class_entry;
+
+       INIT_CLASS_ENTRY(ce, "DOMText", class_DOMText_methods);
+       class_entry = zend_register_internal_class_ex(&ce, class_entry_DOMCharacterData);
+
+       return class_entry;
+}
+
+zend_class_entry *register_class_DOMNamedNodeMap(zend_class_entry *class_entry_IteratorAggregate, zend_class_entry *class_entry_Countable)
+{
+       zend_class_entry ce, *class_entry;
+
+       INIT_CLASS_ENTRY(ce, "DOMNamedNodeMap", class_DOMNamedNodeMap_methods);
+       class_entry = zend_register_internal_class_ex(&ce, NULL);
+       zend_class_implements(class_entry, 2, class_entry_IteratorAggregate, class_entry_Countable);
+
+       return class_entry;
+}
+
+zend_class_entry *register_class_DOMEntity(zend_class_entry *class_entry_DOMNode)
+{
+       zend_class_entry ce, *class_entry;
+
+       INIT_CLASS_ENTRY(ce, "DOMEntity", class_DOMEntity_methods);
+       class_entry = zend_register_internal_class_ex(&ce, class_entry_DOMNode);
+
+       return class_entry;
+}
+
+zend_class_entry *register_class_DOMEntityReference(zend_class_entry *class_entry_DOMNode)
+{
+       zend_class_entry ce, *class_entry;
+
+       INIT_CLASS_ENTRY(ce, "DOMEntityReference", class_DOMEntityReference_methods);
+       class_entry = zend_register_internal_class_ex(&ce, class_entry_DOMNode);
+
+       return class_entry;
+}
+
+zend_class_entry *register_class_DOMNotation(zend_class_entry *class_entry_DOMNode)
+{
+       zend_class_entry ce, *class_entry;
+
+       INIT_CLASS_ENTRY(ce, "DOMNotation", class_DOMNotation_methods);
+       class_entry = zend_register_internal_class_ex(&ce, class_entry_DOMNode);
+
+       return class_entry;
+}
+
+zend_class_entry *register_class_DOMProcessingInstruction(zend_class_entry *class_entry_DOMNode)
+{
+       zend_class_entry ce, *class_entry;
+
+       INIT_CLASS_ENTRY(ce, "DOMProcessingInstruction", class_DOMProcessingInstruction_methods);
+       class_entry = zend_register_internal_class_ex(&ce, class_entry_DOMNode);
+
+       return class_entry;
+}
+
+zend_class_entry *register_class_DOMXPath()
+{
+       zend_class_entry ce, *class_entry;
+
+       INIT_CLASS_ENTRY(ce, "DOMXPath", class_DOMXPath_methods);
+       class_entry = zend_register_internal_class_ex(&ce, NULL);
+
+       return class_entry;
+}
+