Fix newobject3 testcase
Fixes Octave problem which has a template called product.
This commit is contained in:
parent
e7f0c6d6ad
commit
08210236ef
5 changed files with 158 additions and 11 deletions
|
|
@ -6,20 +6,20 @@
|
||||||
|
|
||||||
%newobject factory::create;
|
%newobject factory::create;
|
||||||
%inline %{
|
%inline %{
|
||||||
class product {};
|
class Product {};
|
||||||
class factory {
|
class factory {
|
||||||
public:
|
public:
|
||||||
product * create(short id, short type = 0);
|
Product * create(short id, short type = 0);
|
||||||
product * create(const char * name, short type = 0);
|
Product * create(const char * name, short type = 0);
|
||||||
};
|
};
|
||||||
%}
|
%}
|
||||||
|
|
||||||
%{
|
%{
|
||||||
product * factory::create(short id, short type) {
|
Product * factory::create(short id, short type) {
|
||||||
return (id && type >= 0) ? new product : NULL;
|
return (id && type >= 0) ? new Product : NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
product * factory::create(const char * name, short type) {
|
Product * factory::create(const char * name, short type) {
|
||||||
return (name && type >= 0) ? new product : NULL;
|
return (name && type >= 0) ? new Product : NULL;
|
||||||
}
|
}
|
||||||
%}
|
%}
|
||||||
|
|
|
||||||
|
|
@ -5,10 +5,10 @@ require "newobject3.php";
|
||||||
|
|
||||||
$factory = new factory();
|
$factory = new factory();
|
||||||
|
|
||||||
check::classname("product", $factory->create(7));
|
check::classname("Product", $factory->create(7));
|
||||||
check::classname("product", $factory->create(7, 6));
|
check::classname("Product", $factory->create(7, 6));
|
||||||
check::classname("product", $factory->create("test"));
|
check::classname("Product", $factory->create("test"));
|
||||||
check::classname("product", $factory->create("test", 2));
|
check::classname("Product", $factory->create("test", 2));
|
||||||
|
|
||||||
check::isnull($factory->create(0), "create(0) should be NULL");
|
check::isnull($factory->create(0), "create(0) should be NULL");
|
||||||
check::isnull($factory->create(7, -1), "create(7, -1) should be NULL");
|
check::isnull($factory->create(7, -1), "create(7, -1) should be NULL");
|
||||||
|
|
|
||||||
93
Examples/test-suite/php5/newobject3.php
Normal file
93
Examples/test-suite/php5/newobject3.php
Normal file
|
|
@ -0,0 +1,93 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/* ----------------------------------------------------------------------------
|
||||||
|
* This file was automatically generated by SWIG (http://www.swig.org).
|
||||||
|
* Version 4.0.0
|
||||||
|
*
|
||||||
|
* This file is not intended to be easily readable and contains a number of
|
||||||
|
* coding conventions designed to improve portability and efficiency. Do not make
|
||||||
|
* changes to this file unless you know what you are doing--modify the SWIG
|
||||||
|
* interface file instead.
|
||||||
|
* ----------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
// Try to load our extension if it's not already loaded.
|
||||||
|
if (!extension_loaded('newobject3')) {
|
||||||
|
if (strtolower(substr(PHP_OS, 0, 3)) === 'win') {
|
||||||
|
if (!dl('php_newobject3.dll')) return;
|
||||||
|
} else {
|
||||||
|
// PHP_SHLIB_SUFFIX gives 'dylib' on MacOS X but modules are 'so'.
|
||||||
|
if (PHP_SHLIB_SUFFIX === 'dylib') {
|
||||||
|
if (!dl('newobject3.so')) return;
|
||||||
|
} else {
|
||||||
|
if (!dl('newobject3.'.PHP_SHLIB_SUFFIX)) return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* PHP Proxy Classes */
|
||||||
|
class Product {
|
||||||
|
public $_cPtr=null;
|
||||||
|
protected $_pData=array();
|
||||||
|
|
||||||
|
function __set($var,$value) {
|
||||||
|
if ($var === 'thisown') return swig_newobject3_alter_newobject($this->_cPtr,$value);
|
||||||
|
$this->_pData[$var] = $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
function __get($var) {
|
||||||
|
if ($var === 'thisown') return swig_newobject3_get_newobject($this->_cPtr);
|
||||||
|
return $this->_pData[$var];
|
||||||
|
}
|
||||||
|
|
||||||
|
function __isset($var) {
|
||||||
|
if ($var === 'thisown') return true;
|
||||||
|
return array_key_exists($var, $this->_pData);
|
||||||
|
}
|
||||||
|
|
||||||
|
function __construct($res=null) {
|
||||||
|
if (is_resource($res) && get_resource_type($res) === '_p_Product') {
|
||||||
|
$this->_cPtr=$res;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$this->_cPtr=new_Product();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class factory {
|
||||||
|
public $_cPtr=null;
|
||||||
|
protected $_pData=array();
|
||||||
|
|
||||||
|
function __set($var,$value) {
|
||||||
|
if ($var === 'thisown') return swig_newobject3_alter_newobject($this->_cPtr,$value);
|
||||||
|
$this->_pData[$var] = $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
function __get($var) {
|
||||||
|
if ($var === 'thisown') return swig_newobject3_get_newobject($this->_cPtr);
|
||||||
|
return $this->_pData[$var];
|
||||||
|
}
|
||||||
|
|
||||||
|
function __isset($var) {
|
||||||
|
if ($var === 'thisown') return true;
|
||||||
|
return array_key_exists($var, $this->_pData);
|
||||||
|
}
|
||||||
|
|
||||||
|
function create($id_or_name,$type=0) {
|
||||||
|
$r=factory_create($this->_cPtr,$id_or_name,$type);
|
||||||
|
if (!is_resource($r)) return $r;
|
||||||
|
return new Product($r);
|
||||||
|
}
|
||||||
|
|
||||||
|
function __construct($res=null) {
|
||||||
|
if (is_resource($res) && get_resource_type($res) === '_p_factory') {
|
||||||
|
$this->_cPtr=$res;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$this->_cPtr=new_factory();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
||||||
18
Examples/test-suite/php5/newobject3_runme.php
Normal file
18
Examples/test-suite/php5/newobject3_runme.php
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
require "tests.php";
|
||||||
|
require "newobject3.php";
|
||||||
|
|
||||||
|
$factory = new factory();
|
||||||
|
|
||||||
|
check::classname("Product", $factory->create(7));
|
||||||
|
check::classname("Product", $factory->create(7, 6));
|
||||||
|
check::classname("Product", $factory->create("test"));
|
||||||
|
check::classname("Product", $factory->create("test", 2));
|
||||||
|
|
||||||
|
check::isnull($factory->create(0), "create(0) should be NULL");
|
||||||
|
check::isnull($factory->create(7, -1), "create(7, -1) should be NULL");
|
||||||
|
check::isnull($factory->create(0, -1), "create(0, -1) should be NULL");
|
||||||
|
check::isnull($factory->create("bad", -1), "create(\"bad\", -1) should be NULL");
|
||||||
|
|
||||||
|
?>
|
||||||
36
Examples/test-suite/php5/php_newobject3.h
Normal file
36
Examples/test-suite/php5/php_newobject3.h
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
/* ----------------------------------------------------------------------------
|
||||||
|
* This file was automatically generated by SWIG (http://www.swig.org).
|
||||||
|
* Version 4.0.0
|
||||||
|
*
|
||||||
|
* This file is not intended to be easily readable and contains a number of
|
||||||
|
* coding conventions designed to improve portability and efficiency. Do not make
|
||||||
|
* changes to this file unless you know what you are doing--modify the SWIG
|
||||||
|
* interface file instead.
|
||||||
|
* ----------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
#ifndef PHP_NEWOBJECT3_H
|
||||||
|
#define PHP_NEWOBJECT3_H
|
||||||
|
|
||||||
|
extern zend_module_entry newobject3_module_entry;
|
||||||
|
#define phpext_newobject3_ptr &newobject3_module_entry
|
||||||
|
|
||||||
|
#ifdef PHP_WIN32
|
||||||
|
# define PHP_NEWOBJECT3_API __declspec(dllexport)
|
||||||
|
#else
|
||||||
|
# define PHP_NEWOBJECT3_API
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef ZTS
|
||||||
|
#include "TSRM.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
PHP_MINIT_FUNCTION(newobject3);
|
||||||
|
PHP_MSHUTDOWN_FUNCTION(newobject3);
|
||||||
|
PHP_RINIT_FUNCTION(newobject3);
|
||||||
|
PHP_RSHUTDOWN_FUNCTION(newobject3);
|
||||||
|
PHP_MINFO_FUNCTION(newobject3);
|
||||||
|
|
||||||
|
ZEND_NAMED_FUNCTION(_wrap_new_Product);
|
||||||
|
ZEND_NAMED_FUNCTION(_wrap_factory_create);
|
||||||
|
ZEND_NAMED_FUNCTION(_wrap_new_factory);
|
||||||
|
#endif /* PHP_NEWOBJECT3_H */
|
||||||
Loading…
Add table
Add a link
Reference in a new issue