mirror of
https://github.com/phpv8/v8js.git
synced 2024-12-22 18:41:52 +00:00
Support PHP8.1+
This commit is contained in:
parent
3d64f08536
commit
1db8f8de5e
@ -8,23 +8,23 @@ v8js.use_array_access = 1
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
class MyArray implements ArrayAccess, Countable {
|
class MyArray implements ArrayAccess, Countable {
|
||||||
public function offsetExists($offset) {
|
public function offsetExists($offset): bool {
|
||||||
return $offset >= 0 && $offset <= 20;
|
return $offset >= 0 && $offset <= 20;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function offsetGet($offset) {
|
public function offsetGet($offset): mixed {
|
||||||
return 19 - $offset;
|
return 19 - $offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function offsetSet($offset, $value) {
|
public function offsetSet($offset, $value): void {
|
||||||
throw new Exception('Not implemented');
|
throw new Exception('Not implemented');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function offsetUnset($offset) {
|
public function offsetUnset($offset): void {
|
||||||
throw new Exception('Not implemented');
|
throw new Exception('Not implemented');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function count() {
|
public function count(): int {
|
||||||
return 20;
|
return 20;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,23 +10,23 @@ v8js.use_array_access = 1
|
|||||||
class MyArray implements ArrayAccess, Countable {
|
class MyArray implements ArrayAccess, Countable {
|
||||||
private $data = Array('one', 'two', 'three');
|
private $data = Array('one', 'two', 'three');
|
||||||
|
|
||||||
public function offsetExists($offset) {
|
public function offsetExists($offset): bool {
|
||||||
return isset($this->data[$offset]);
|
return isset($this->data[$offset]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function offsetGet($offset) {
|
public function offsetGet($offset): mixed {
|
||||||
return $this->data[$offset];
|
return $this->data[$offset];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function offsetSet($offset, $value) {
|
public function offsetSet($offset, $value): void {
|
||||||
$this->data[$offset] = $value;
|
$this->data[$offset] = $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function offsetUnset($offset) {
|
public function offsetUnset($offset): void {
|
||||||
throw new Exception('Not implemented');
|
throw new Exception('Not implemented');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function count() {
|
public function count(): int {
|
||||||
return count($this->data);
|
return count($this->data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,24 +10,24 @@ v8js.use_array_access = 1
|
|||||||
class MyArray implements ArrayAccess, Countable {
|
class MyArray implements ArrayAccess, Countable {
|
||||||
private $data = Array('one', 'two', 'three');
|
private $data = Array('one', 'two', 'three');
|
||||||
|
|
||||||
public function offsetExists($offset) {
|
public function offsetExists($offset): bool {
|
||||||
return isset($this->data[$offset]);
|
return isset($this->data[$offset]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function offsetGet($offset) {
|
public function offsetGet($offset): mixed {
|
||||||
return $this->data[$offset];
|
return $this->data[$offset];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function offsetSet($offset, $value) {
|
public function offsetSet($offset, $value): void {
|
||||||
echo "set[$offset] = $value\n";
|
echo "set[$offset] = $value\n";
|
||||||
$this->data[$offset] = $value;
|
$this->data[$offset] = $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function offsetUnset($offset) {
|
public function offsetUnset($offset): void {
|
||||||
throw new Exception('Not implemented');
|
throw new Exception('Not implemented');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function count() {
|
public function count(): int {
|
||||||
return count($this->data);
|
return count($this->data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,24 +10,24 @@ v8js.use_array_access = 1
|
|||||||
class MyArray implements ArrayAccess, Countable {
|
class MyArray implements ArrayAccess, Countable {
|
||||||
private $data = Array('one', 'two', 'three');
|
private $data = Array('one', 'two', 'three');
|
||||||
|
|
||||||
public function offsetExists($offset) {
|
public function offsetExists($offset): bool {
|
||||||
return isset($this->data[$offset]);
|
return isset($this->data[$offset]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function offsetGet($offset) {
|
public function offsetGet($offset): mixed {
|
||||||
return $this->data[$offset];
|
return $this->data[$offset];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function offsetSet($offset, $value) {
|
public function offsetSet($offset, $value): void {
|
||||||
echo "set[$offset] = $value\n";
|
echo "set[$offset] = $value\n";
|
||||||
$this->data[$offset] = $value;
|
$this->data[$offset] = $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function offsetUnset($offset) {
|
public function offsetUnset($offset): void {
|
||||||
throw new Exception('Not implemented');
|
throw new Exception('Not implemented');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function count() {
|
public function count(): int {
|
||||||
echo 'count() = ', count($this->data), "\n";
|
echo 'count() = ', count($this->data), "\n";
|
||||||
return count($this->data);
|
return count($this->data);
|
||||||
}
|
}
|
||||||
|
@ -19,24 +19,24 @@ class MyArray implements ArrayAccess, Countable {
|
|||||||
* accessibly as $length. */
|
* accessibly as $length. */
|
||||||
public $length = 42;
|
public $length = 42;
|
||||||
|
|
||||||
public function offsetExists($offset) {
|
public function offsetExists($offset): bool {
|
||||||
return isset($this->data[$offset]);
|
return isset($this->data[$offset]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function offsetGet($offset) {
|
public function offsetGet($offset): mixed {
|
||||||
return $this->data[$offset];
|
return $this->data[$offset];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function offsetSet($offset, $value) {
|
public function offsetSet($offset, $value): void {
|
||||||
echo "set[$offset] = $value\n";
|
echo "set[$offset] = $value\n";
|
||||||
$this->data[$offset] = $value;
|
$this->data[$offset] = $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function offsetUnset($offset) {
|
public function offsetUnset($offset): void {
|
||||||
throw new Exception('Not implemented');
|
throw new Exception('Not implemented');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function count() {
|
public function count(): int {
|
||||||
return count($this->data);
|
return count($this->data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,24 +10,24 @@ v8js.use_array_access = 1
|
|||||||
class MyArray implements ArrayAccess, Countable {
|
class MyArray implements ArrayAccess, Countable {
|
||||||
private $data = Array('one', 'two', 'three');
|
private $data = Array('one', 'two', 'three');
|
||||||
|
|
||||||
public function offsetExists($offset) {
|
public function offsetExists($offset): bool {
|
||||||
return isset($this->data[$offset]);
|
return isset($this->data[$offset]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function offsetGet($offset) {
|
public function offsetGet($offset): mixed {
|
||||||
return $this->data[$offset];
|
return $this->data[$offset];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function offsetSet($offset, $value) {
|
public function offsetSet($offset, $value): void {
|
||||||
echo "set[$offset] = $value\n";
|
echo "set[$offset] = $value\n";
|
||||||
$this->data[$offset] = $value;
|
$this->data[$offset] = $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function offsetUnset($offset) {
|
public function offsetUnset($offset): void {
|
||||||
throw new Exception('Not implemented');
|
throw new Exception('Not implemented');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function count() {
|
public function count(): int {
|
||||||
return count($this->data);
|
return count($this->data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,24 +10,24 @@ v8js.use_array_access = 1
|
|||||||
class MyArray implements ArrayAccess, Countable {
|
class MyArray implements ArrayAccess, Countable {
|
||||||
private $data = Array('one', 'two', 'three', null, 'five');
|
private $data = Array('one', 'two', 'three', null, 'five');
|
||||||
|
|
||||||
public function offsetExists($offset) {
|
public function offsetExists($offset): bool {
|
||||||
return isset($this->data[$offset]);
|
return isset($this->data[$offset]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function offsetGet($offset) {
|
public function offsetGet($offset): mixed {
|
||||||
return $this->data[$offset];
|
return $this->data[$offset];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function offsetSet($offset, $value) {
|
public function offsetSet($offset, $value): void {
|
||||||
echo "set[$offset] = $value\n";
|
echo "set[$offset] = $value\n";
|
||||||
$this->data[$offset] = $value;
|
$this->data[$offset] = $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function offsetUnset($offset) {
|
public function offsetUnset($offset): void {
|
||||||
throw new Exception('Not implemented');
|
throw new Exception('Not implemented');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function count() {
|
public function count(): int {
|
||||||
return count($this->data);
|
return count($this->data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,26 +10,26 @@ v8js.use_array_access = 1
|
|||||||
class MyArray implements ArrayAccess, Countable {
|
class MyArray implements ArrayAccess, Countable {
|
||||||
private $data = Array('one', 'two', 'three');
|
private $data = Array('one', 'two', 'three');
|
||||||
|
|
||||||
public function offsetExists($offset) {
|
public function offsetExists($offset): bool {
|
||||||
return isset($this->data[$offset]);
|
return isset($this->data[$offset]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function offsetGet($offset) {
|
public function offsetGet($offset): mixed {
|
||||||
if(!$this->offsetExists($offset)) {
|
if(!$this->offsetExists($offset)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return $this->data[$offset];
|
return $this->data[$offset];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function offsetSet($offset, $value) {
|
public function offsetSet($offset, $value): void {
|
||||||
$this->data[$offset] = $value;
|
$this->data[$offset] = $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function offsetUnset($offset) {
|
public function offsetUnset($offset): void {
|
||||||
unset($this->data[$offset]);
|
unset($this->data[$offset]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function count() {
|
public function count(): int {
|
||||||
return max(array_keys($this->data)) + 1;
|
return max(array_keys($this->data)) + 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,23 +10,23 @@ v8js.use_array_access = 1
|
|||||||
class MyArray implements ArrayAccess, Countable {
|
class MyArray implements ArrayAccess, Countable {
|
||||||
private $data = Array('one', null, 'three');
|
private $data = Array('one', null, 'three');
|
||||||
|
|
||||||
public function offsetExists($offset) {
|
public function offsetExists($offset): bool {
|
||||||
return isset($this->data[$offset]);
|
return isset($this->data[$offset]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function offsetGet($offset) {
|
public function offsetGet($offset): mixed {
|
||||||
return $this->data[$offset];
|
return $this->data[$offset];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function offsetSet($offset, $value) {
|
public function offsetSet($offset, $value): void {
|
||||||
$this->data[$offset] = $value;
|
$this->data[$offset] = $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function offsetUnset($offset) {
|
public function offsetUnset($offset): void {
|
||||||
unset($this->data[$offset]);
|
unset($this->data[$offset]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function count() {
|
public function count(): int {
|
||||||
return max(array_keys($this->data)) + 1;
|
return max(array_keys($this->data)) + 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,23 +10,23 @@ v8js.use_array_access = 1
|
|||||||
class MyArray implements ArrayAccess, Countable {
|
class MyArray implements ArrayAccess, Countable {
|
||||||
private $data = array('one', 'two', 'three');
|
private $data = array('one', 'two', 'three');
|
||||||
|
|
||||||
public function offsetExists($offset) {
|
public function offsetExists($offset): bool {
|
||||||
return isset($this->data[$offset]);
|
return isset($this->data[$offset]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function offsetGet($offset) {
|
public function offsetGet($offset): mixed {
|
||||||
return $this->data[$offset];
|
return $this->data[$offset];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function offsetSet($offset, $value) {
|
public function offsetSet($offset, $value): void {
|
||||||
$this->data[$offset] = $value;
|
$this->data[$offset] = $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function offsetUnset($offset) {
|
public function offsetUnset($offset): void {
|
||||||
throw new Exception('Not implemented');
|
throw new Exception('Not implemented');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function count() {
|
public function count(): int {
|
||||||
return count($this->data);
|
return count($this->data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@ Test V8::executeString() : Exception clearing test
|
|||||||
--FILE--
|
--FILE--
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
$v8 = new V8Js(null, array(), array(), false);
|
$v8 = new V8Js('', array(), array(), false);
|
||||||
|
|
||||||
var_dump($v8->getPendingException());
|
var_dump($v8->getPendingException());
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ class Foo {
|
|||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
$this->v8 = new V8Js(null, array(), array(), false);
|
$this->v8 = new V8Js('', array(), array(), false);
|
||||||
$this->v8->foo = $this;
|
$this->v8->foo = $this;
|
||||||
$this->v8->executeString('fooobar', 'throw_0');
|
$this->v8->executeString('fooobar', 'throw_0');
|
||||||
var_dump($this->v8->getPendingException());
|
var_dump($this->v8->getPendingException());
|
||||||
|
@ -10,7 +10,7 @@ class Foo {
|
|||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
$this->v8 = new V8Js(null, array(), array(), false);
|
$this->v8 = new V8Js('', array(), array(), false);
|
||||||
$this->v8->foo = $this;
|
$this->v8->foo = $this;
|
||||||
$this->v8->executeString('function foobar() { throw new SyntaxError(); }', 'throw_1');
|
$this->v8->executeString('function foobar() { throw new SyntaxError(); }', 'throw_1');
|
||||||
$this->v8->executeString('try { foobar(); } catch (e) { print(e + " caught in JS!\n"); }', 'trycatch1');
|
$this->v8->executeString('try { foobar(); } catch (e) { print(e + " caught in JS!\n"); }', 'trycatch1');
|
||||||
|
@ -158,6 +158,10 @@ static void v8js_call_php_func(zend_object *object, zend_function *method_ptr, c
|
|||||||
fcc.called_scope = object->ce;
|
fcc.called_scope = object->ce;
|
||||||
fcc.object = object;
|
fcc.object = object;
|
||||||
|
|
||||||
|
if (!EG(current_execute_data) || !EG(current_execute_data)->func) {
|
||||||
|
EG(current_execute_data) = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
zend_call_function(&fci, &fcc);
|
zend_call_function(&fci, &fcc);
|
||||||
}
|
}
|
||||||
zend_catch {
|
zend_catch {
|
||||||
|
@ -178,6 +178,10 @@ void v8js_v8_call(v8js_ctx *c, zval **return_value,
|
|||||||
efree(timer_ctx);
|
efree(timer_ctx);
|
||||||
|
|
||||||
if(!V8JSG(fatal_error_abort)) {
|
if(!V8JSG(fatal_error_abort)) {
|
||||||
|
if (!EG(current_execute_data) || !EG(current_execute_data)->func) {
|
||||||
|
EG(current_execute_data) = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
char exception_string[64];
|
char exception_string[64];
|
||||||
|
|
||||||
if (c->time_limit_hit) {
|
if (c->time_limit_hit) {
|
||||||
|
39
v8js_v8.h
39
v8js_v8.h
@ -100,6 +100,45 @@ int v8js_get_properties_hash(v8::Local<v8::Value> jsValue, HashTable *retval, in
|
|||||||
#define SINCE80(x,y) x
|
#define SINCE80(x,y) x
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if PHP_VERSION_ID < 70200
|
||||||
|
#define ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(name, return_reference, required_num_args, class_name, allow_null) \
|
||||||
|
ZEND_BEGIN_ARG_INFO_EX(name, return_reference, required_num_args, allow_null)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// polyfill for ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX, which changes between 7.1 and 7.2
|
||||||
|
#if PHP_VERSION_ID < 70200
|
||||||
|
#define V8_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(name, return_reference, required_num_args, type, allow_null) \
|
||||||
|
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(name, return_reference, required_num_args, type, /*class_name*/ 0, allow_null)
|
||||||
|
#else
|
||||||
|
#define V8_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(name, return_reference, required_num_args, type, allow_null) \
|
||||||
|
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(name, return_reference, required_num_args, type, allow_null)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// In PHP 8.1, mismatched tentative return types emit a deprecation notice.
|
||||||
|
// https://wiki.php.net/rfc/internal_method_return_types
|
||||||
|
//
|
||||||
|
// When compiling for earlier php versions, the return type is dropped.
|
||||||
|
#if PHP_VERSION_ID < 80100
|
||||||
|
#define ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(name, return_reference, required_num_args, type, allow_null) \
|
||||||
|
ZEND_BEGIN_ARG_INFO_EX(name, return_reference, required_num_args, allow_null)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef IS_VOID
|
||||||
|
#define IS_VOID 99
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef IS_MIXED
|
||||||
|
#define IS_MIXED 99
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _IS_BOOL
|
||||||
|
#define _IS_BOOL 99
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef IS_LONG
|
||||||
|
#define IS_LONG 99
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#endif /* V8JS_V8_H */
|
#endif /* V8JS_V8_H */
|
||||||
|
|
||||||
|
@ -853,7 +853,7 @@ PHP_METHOD(V8Generator, __wakeup)
|
|||||||
}
|
}
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
|
||||||
/* {{{ mixed V8Generator::current()
|
/* {{{ mixed V8Generator::current(): mixed
|
||||||
*/
|
*/
|
||||||
PHP_METHOD(V8Generator, current)
|
PHP_METHOD(V8Generator, current)
|
||||||
{
|
{
|
||||||
@ -868,7 +868,7 @@ PHP_METHOD(V8Generator, current)
|
|||||||
}
|
}
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
|
||||||
/* {{{ scalar V8Generator::key()
|
/* {{{ scalar V8Generator::key(): mixed
|
||||||
*/
|
*/
|
||||||
PHP_METHOD(V8Generator, key)
|
PHP_METHOD(V8Generator, key)
|
||||||
{
|
{
|
||||||
@ -876,7 +876,7 @@ PHP_METHOD(V8Generator, key)
|
|||||||
}
|
}
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
|
||||||
/* {{{ void V8Generator::next()
|
/* {{{ void V8Generator::next(): void
|
||||||
*/
|
*/
|
||||||
PHP_METHOD(V8Generator, next)
|
PHP_METHOD(V8Generator, next)
|
||||||
{
|
{
|
||||||
@ -885,7 +885,7 @@ PHP_METHOD(V8Generator, next)
|
|||||||
}
|
}
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
|
||||||
/* {{{ void V8Generator::rewind()
|
/* {{{ void V8Generator::rewind(): void
|
||||||
*/
|
*/
|
||||||
PHP_METHOD(V8Generator, rewind)
|
PHP_METHOD(V8Generator, rewind)
|
||||||
{
|
{
|
||||||
@ -901,7 +901,7 @@ PHP_METHOD(V8Generator, rewind)
|
|||||||
}
|
}
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
|
||||||
/* {{{ boolean V8Generator::valid()
|
/* {{{ boolean V8Generator::valid(): bool
|
||||||
*/
|
*/
|
||||||
PHP_METHOD(V8Generator, valid)
|
PHP_METHOD(V8Generator, valid)
|
||||||
{
|
{
|
||||||
@ -982,19 +982,19 @@ ZEND_END_ARG_INFO()
|
|||||||
ZEND_BEGIN_ARG_INFO(arginfo_v8generator_wakeup, 0)
|
ZEND_BEGIN_ARG_INFO(arginfo_v8generator_wakeup, 0)
|
||||||
ZEND_END_ARG_INFO()
|
ZEND_END_ARG_INFO()
|
||||||
|
|
||||||
ZEND_BEGIN_ARG_INFO(arginfo_v8generator_current, 0)
|
V8_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8generator_current, 0, 0, IS_MIXED, 0)
|
||||||
ZEND_END_ARG_INFO()
|
ZEND_END_ARG_INFO()
|
||||||
|
|
||||||
ZEND_BEGIN_ARG_INFO(arginfo_v8generator_key, 0)
|
V8_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8generator_key, 0, 0, IS_MIXED, 0)
|
||||||
ZEND_END_ARG_INFO()
|
ZEND_END_ARG_INFO()
|
||||||
|
|
||||||
ZEND_BEGIN_ARG_INFO(arginfo_v8generator_next, 0)
|
V8_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8generator_next, 0, 0, IS_VOID, 0)
|
||||||
ZEND_END_ARG_INFO()
|
ZEND_END_ARG_INFO()
|
||||||
|
|
||||||
ZEND_BEGIN_ARG_INFO(arginfo_v8generator_rewind, 0)
|
V8_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8generator_rewind, 0, 0, IS_VOID, 0)
|
||||||
ZEND_END_ARG_INFO()
|
ZEND_END_ARG_INFO()
|
||||||
|
|
||||||
ZEND_BEGIN_ARG_INFO(arginfo_v8generator_valid, 0)
|
V8_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8generator_valid, 0, 0, _IS_BOOL, 0)
|
||||||
ZEND_END_ARG_INFO()
|
ZEND_END_ARG_INFO()
|
||||||
|
|
||||||
static const zend_function_entry v8js_v8generator_methods[] = {/* {{{ */
|
static const zend_function_entry v8js_v8generator_methods[] = {/* {{{ */
|
||||||
|
Loading…
Reference in New Issue
Block a user