add disown.i and li_attribute.i
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@7726 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
46c43c51cd
commit
1fa14f74a7
12 changed files with 98 additions and 5 deletions
|
|
@ -125,6 +125,7 @@ CPP_TEST_CASES += \
|
|||
director_string \
|
||||
director_unroll \
|
||||
director_wombat \
|
||||
disown \
|
||||
dynamic_cast \
|
||||
empty \
|
||||
enum_plus \
|
||||
|
|
@ -156,6 +157,7 @@ CPP_TEST_CASES += \
|
|||
inline_initializer \
|
||||
kind \
|
||||
langobj \
|
||||
li_attribute \
|
||||
li_carrays \
|
||||
li_cdata \
|
||||
li_cpointer \
|
||||
|
|
|
|||
47
Examples/test-suite/disown.i
Normal file
47
Examples/test-suite/disown.i
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
%module disown
|
||||
|
||||
%{
|
||||
#include <iostream>
|
||||
%}
|
||||
|
||||
#pragma SWIG nowarn=453
|
||||
|
||||
%apply SWIGTYPE *DISOWN { A *disown };
|
||||
|
||||
%inline {
|
||||
struct A
|
||||
{
|
||||
~A()
|
||||
{
|
||||
// std::cout <<"delete A" << std::endl;
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
|
||||
class B
|
||||
{
|
||||
A *_a;
|
||||
public:
|
||||
B() : _a(0)
|
||||
{
|
||||
}
|
||||
|
||||
~B()
|
||||
{
|
||||
if (_a) {
|
||||
// std::cout <<"delete A from B" << std::endl;
|
||||
delete _a;
|
||||
}
|
||||
// std::cout <<"delete B" << std::endl;
|
||||
}
|
||||
|
||||
int acquire(A *disown)
|
||||
{
|
||||
// std::cout <<"acquire A" << std::endl;
|
||||
_a = disown;
|
||||
return 5;
|
||||
}
|
||||
|
||||
};
|
||||
}
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
%module li_attribute
|
||||
|
||||
%include exception.i
|
||||
%include attribute.i
|
||||
|
||||
%attribute(A, int, a, get_a, set_a);
|
||||
|
|
|
|||
|
|
@ -13,10 +13,11 @@ top_builddir = @top_builddir@
|
|||
|
||||
CPP_TEST_CASES += \
|
||||
primitive_types \
|
||||
li_attribute \
|
||||
li_cdata \
|
||||
li_cstring \
|
||||
|
||||
C_TEST_CASES += \
|
||||
li_cdata \
|
||||
li_cstring \
|
||||
|
||||
|
||||
|
|
|
|||
10
Examples/test-suite/perl5/disown_runme.pl
Normal file
10
Examples/test-suite/perl5/disown_runme.pl
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
use disown;
|
||||
|
||||
if (1) {
|
||||
$a = new disown::A();
|
||||
$b = new disown::B();
|
||||
$c = $b->acquire($a);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
@ -24,7 +24,6 @@ CPP_TEST_CASES += \
|
|||
input \
|
||||
inplaceadd \
|
||||
kwargs \
|
||||
li_attribute \
|
||||
li_cstring \
|
||||
li_cwstring \
|
||||
li_implicit \
|
||||
|
|
|
|||
6
Examples/test-suite/python/disown_runme.py
Normal file
6
Examples/test-suite/python/disown_runme.py
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
from disown import *
|
||||
|
||||
a = A()
|
||||
b = B()
|
||||
|
||||
b.acquire(a)
|
||||
|
|
@ -15,10 +15,11 @@ CPP_TEST_CASES = \
|
|||
track_objects \
|
||||
track_objects_directors \
|
||||
primitive_types \
|
||||
li_attribute \
|
||||
li_cdata \
|
||||
li_cstring
|
||||
|
||||
C_TEST_CASES += \
|
||||
li_cdata \
|
||||
li_cstring
|
||||
|
||||
include $(srcdir)/../common.mk
|
||||
|
|
|
|||
9
Examples/test-suite/ruby/disown_runme.rb
Normal file
9
Examples/test-suite/ruby/disown_runme.rb
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
require 'disown'
|
||||
|
||||
include Disown
|
||||
|
||||
|
||||
a = A.new
|
||||
b = B.new
|
||||
b.acquire(a)
|
||||
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
|
||||
%typemap(argout) Foo** foo {
|
||||
/* %typemap(argout) Foo** foo */
|
||||
$result = SWIG_NewPointerObj((void *) *$1, $*1_descriptor, 0);
|
||||
$result = SWIG_NewPointerObj((void *) *$1, $*1_descriptor, $track);
|
||||
}
|
||||
|
||||
%apply SWIGTYPE *DISOWN {Foo* ownedFoo};
|
||||
|
|
|
|||
|
|
@ -13,12 +13,13 @@ top_builddir = @top_builddir@
|
|||
|
||||
CPP_TEST_CASES += \
|
||||
primitive_types \
|
||||
li_attribute \
|
||||
li_cdata \
|
||||
li_cstring \
|
||||
li_cwstring \
|
||||
li_std_wstring
|
||||
|
||||
C_TEST_CASES += \
|
||||
li_cdata \
|
||||
li_cstring \
|
||||
li_cwstring
|
||||
|
||||
|
|
|
|||
16
Examples/test-suite/tcl/disown_runme.tcl
Normal file
16
Examples/test-suite/tcl/disown_runme.tcl
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
|
||||
# This is the union runtime testcase. It ensures that values within a
|
||||
# union embedded within a struct can be set and read correctly.
|
||||
|
||||
if [ catch { load ./disown[info sharedlibextension] disown} err_msg ] {
|
||||
puts stderr "Could not load shared object:\n$err_msg"
|
||||
}
|
||||
|
||||
set x 0
|
||||
while {$x<100} {
|
||||
set a [new_A]
|
||||
B b
|
||||
b acquire $a
|
||||
incr x
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue