Olly Betts
50426aae20
Make PHP directors work more like other languages
...
A PHP exception now gets translated to a C++ exception to skips over C++
code to get back to PHP, avoiding the need to gate every directorout
typemap on EG(exception).
2021-04-22 14:40:21 +12:00
Olly Betts
10d87100ea
Whitespace tweaks
2021-04-22 12:25:13 +12:00
Olly Betts
5e2114501f
Pass NULL instead of an empty zend_function_entry
2021-04-21 19:11:21 +12:00
Olly Betts
af5030bca1
Just call the internal class entry internal_ce
...
It's just a local variable, so no need to carefully name it after
the class.
2021-04-21 18:34:26 +12:00
Olly Betts
3f9723b896
Use PTR instead of zv for SWIG_remove() parameter
...
The parameter is a general pointer, not necessarily a zval.
2021-04-21 18:16:56 +12:00
Olly Betts
33feca7527
Eliminate SWIG_SetZval()
...
$needNewFlow is now only used for a different hack in a directorout
typemap.
2021-04-21 18:16:08 +12:00
Olly Betts
ac676d1a6c
Remove bogus zend_string_release() in magic methods
...
We shouldn't be freeing the property name here.
2021-04-21 18:16:08 +12:00
Olly Betts
508d9f7279
Eliminate unused code in generated __isset methods
2021-04-21 18:16:08 +12:00
Olly Betts
c705ef8f32
Use PHP objects instead of resources to wrap pointers
...
Pointer to member is currently still wrapped as a resource.
2021-04-21 15:40:35 +12:00
Olly Betts
f1aaeeea1c
Fix -prefix to prefix PHP class names
2021-04-20 18:23:23 +12:00
Olly Betts
7f74c4c1cd
Generate list of string compares for __isset()
...
Previously we checked for a <varname>_get() method instead, but that
will misfire for an method actually called foo_get() in the C++ API
being wrapped.
2021-04-19 16:04:02 +12:00
Olly Betts
84559bc441
Clean up code to generate magic property methods
2021-04-19 15:12:42 +12:00
Olly Betts
ed86e68fe1
Remove variable which is set but never used
2021-04-19 11:37:21 +12:00
Olly Betts
0a437cddcc
Simplify magic property methods
2021-04-17 19:01:32 +12:00
Olly Betts
e76308be92
Simplify globalvariableHandler() further
2021-04-17 07:39:41 +12:00
Olly Betts
2629764e3f
Remove remnants of attempts to wrap to PHP global vars
...
This isn't really workable since PHP doesn't support intercepting
accesses to global variables (nor to static class properties, so
we can't wrap C/C++ global variables that way either).
The _get() and _set() function wrappers actually work and have
been generated for a very long time.
2021-04-17 05:59:18 +12:00
Olly Betts
7ccf3b81df
Drop support for long obsolete typemap vars
...
These were deprecated nearly 20 years ago and attempts to use them
have generated a deprecation warning for most of that time.
Addresses #1984 for PHP.
2021-04-16 16:33:51 +12:00
Olly Betts
4eb666d648
Remove set but not used variable
2021-04-16 16:33:25 +12:00
Olly Betts
54a879d2cc
Remove unused typemap variable $classFlag
2021-04-16 15:52:21 +12:00
Olly Betts
dcdaaba7ba
Eliminate $zend_obj typemap variable
...
We can just get the zend_class_entry from the swig_type_info when
we need it.
2021-04-16 13:13:24 +12:00
Olly Betts
c4ff1ed7cb
Remove <module>_{alter,get}_newobject functions
...
These were added as part of the changes to add director support for
PHP, but have never actually been used by anything SWIG generates,
and they aren't documented so shouldn't be used externally.
Removing these exposed a bug in the arginfo generation where we emitted
a ZEND_ARG_INFO for a varargs "parameter", which this commit also fixes.
2021-04-16 09:42:27 +12:00
Olly Betts
a80dad0369
Revert to call_user_function() for PHP 7
...
zend_call_known_instance_method() was new in PHP 8.0.
2021-04-14 17:01:43 +12:00
Olly Betts
5bd38004c9
Fix calling of protected director methods
...
Use zend_call_known_instance_method() instead of call_user_function(),
since this way PHP seems to know that context of the call is from within
the same object.
Fixes testcases director_nested and director_protected which were giving
errors for PHP 8 and warnings for PHP 7.
2021-04-14 16:14:10 +12:00
Olly Betts
50f92dca08
Mark wrapped abstract classes
...
This allows restoring reflection checks in testcase director_abstract.
2021-04-14 10:59:12 +12:00
Olly Betts
836258b9d3
Fix some cases of converting PHP NULL to C++ NULL
...
Fixes testcase overload_null for PHP 8.0
2021-04-13 16:53:52 +12:00
Olly Betts
37f575b7b4
Merge branch 'master' into gsoc2017-php7-classes-via-c-api
2021-04-13 15:15:09 +12:00
Olly Betts
623dd7a394
Eliminate CALL_METHOD and CALL_METHOD_PARAM_1 macros
...
These names lack a "SWIG_" prefix to help prevent collisions with code
being wrapped, but they're each only used in one place so just inline
them there.
2021-04-13 14:42:33 +12:00
Olly Betts
a216f6ca3c
Stop generating unused Zend resource destructors
...
These aren't used since we stopped using PHP resources to wrap classes.
2021-04-13 13:13:24 +12:00
Olly Betts
09b968474d
Removed unused #define-s in generated code
2021-04-13 12:43:02 +12:00
Olly Betts
d2542eadf6
Remove redundant cast
2021-04-13 11:16:59 +12:00
Olly Betts
0bf846f56f
Eliminate unused Printf args
2021-04-13 10:43:51 +12:00
Olly Betts
0a72bfc630
Eliminate tempPointer variable
2021-04-13 10:18:47 +12:00
Olly Betts
93a288c85a
Fix memory leak in SWIG tool
2021-04-13 10:14:29 +12:00
Olly Betts
60e7deda2c
Eliminate non-standard $lower_param typemap variable
2021-04-13 10:03:03 +12:00
Olly Betts
a0174ea7fe
php: Fix testcase li_boost_shared_ptr_bits
2021-04-04 18:58:24 +12:00
Olly Betts
40da8bcbb6
php: Wrap classes using only swig_object_wrapper
...
We no longer use PHP resources to wrap classes, and the proxy classes no
longer has a _cPtr property.
2021-04-04 07:45:20 +12:00
Olly Betts
0267ee374b
Merge branch 'master' into gsoc2017-php7-classes-via-c-api
2021-04-02 08:13:10 +13:00
Olly Betts
18bc3e287b
php: Avoid double underscore in generated code
...
These are reserved by the C++ standard, but we were generating them
in the le_swig__... names.
2021-04-02 08:07:44 +13:00
Olly Betts
d2a0956766
Remove NULL check which can never be NULL
...
A pointer to a struct member can't be NULL!
2021-04-02 07:59:35 +13:00
Olly Betts
a1abc692d3
Eliminate per-class dtor function
...
These are all the same, and the NULL check performed is done inside
zend_objects_destroy_object() anyway, so we can just set the dtor
to zend_objects_destroy_object (which is what in-tree PHP extensions
do.)
2021-04-02 07:58:08 +13:00
Olly Betts
c467a66668
Remove debug code
2021-04-01 14:40:32 +13:00
Olly Betts
5838f10aa0
wrap fake class constants via C API
2021-04-01 14:40:32 +13:00
Olly Betts
43457690ac
Eliminate another global variable
2021-03-31 11:10:34 +13:00
Olly Betts
46ef0eb9a1
Fix value of $source typemap parameter
...
This is only present for ancient compatibility so nothing actually
tests it works.
2021-03-31 10:57:34 +13:00
Olly Betts
3b1cc00566
Eliminate 3 List variables
...
Rather than building up lists of classes and details about them to
generate from at the end, just generate into a new String variable as we
go along.
2021-03-31 10:55:26 +13:00
Olly Betts
d24e09c57d
Remove now-unused variables and code to set them
2021-03-31 05:02:13 +13:00
Olly Betts
904f5a65d8
Merge branch 'master' into gsoc2017-php7-classes-via-c-api
2021-03-31 04:53:40 +13:00
Olly Betts
2392f6146a
Remove variables which are set but never used
2021-03-31 04:39:18 +13:00
Olly Betts
c863ca8b1f
Use zstring access macros
...
These are likely to be more future-proof than accessing struct members
directly.
2021-03-29 18:18:37 +13:00
Olly Betts
5156ad4f7b
Remove unnecessary NULL check
...
SWIG_remove() calls either free() or delete, both of which handle
a NULL pointer.
2021-03-29 17:45:03 +13:00