Add testcase for %attributestring on shared_ptr
This commit is contained in:
parent
c34d7f6d23
commit
07ce3fb746
4 changed files with 89 additions and 1 deletions
|
|
@ -245,6 +245,7 @@ CPP_TEST_CASES += \
|
||||||
li_boost_shared_ptr \
|
li_boost_shared_ptr \
|
||||||
li_boost_shared_ptr_bits \
|
li_boost_shared_ptr_bits \
|
||||||
li_boost_shared_ptr_template \
|
li_boost_shared_ptr_template \
|
||||||
|
li_boost_shared_ptr_attribute \
|
||||||
li_carrays \
|
li_carrays \
|
||||||
li_cdata \
|
li_cdata \
|
||||||
li_cpointer \
|
li_cpointer \
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,38 @@
|
||||||
|
import li_boost_shared_ptr_attribute.*;
|
||||||
|
|
||||||
|
public class li_boost_shared_ptr_attribute_runme {
|
||||||
|
static {
|
||||||
|
try {
|
||||||
|
System.loadLibrary("li_boost_shared_ptr_attribute");
|
||||||
|
} catch (UnsatisfiedLinkError e) {
|
||||||
|
System.err.println("Native code library failed to load. See the chapter on Dynamic Linking Problems in the SWIG Java documentation for help.\n" + e);
|
||||||
|
System.exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void check(GetSetMe g, int expected) {
|
||||||
|
int got = g.getN();
|
||||||
|
if (got != expected)
|
||||||
|
throw new RuntimeException("GetSetMe value is " + got + " but should be " + expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void check(GetMe g, int expected) {
|
||||||
|
int got = g.getN();
|
||||||
|
if (got != expected)
|
||||||
|
throw new RuntimeException("GetMe value is " + got + " but should be " + expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String argv[])
|
||||||
|
{
|
||||||
|
GetterSetter gs = new GetterSetter(5);
|
||||||
|
check(gs.getMyval(), 25);
|
||||||
|
check(gs.getAddedAttrib(), 25);
|
||||||
|
gs.setAddedAttrib(new GetSetMe(6));
|
||||||
|
check(gs.getMyval(), 6);
|
||||||
|
check(gs.getAddedAttrib(), 6);
|
||||||
|
|
||||||
|
GetterOnly g = new GetterOnly(4);
|
||||||
|
check(g.getMyval(), 16);
|
||||||
|
check(g.getAddedAttrib(), 16);
|
||||||
|
}
|
||||||
|
}
|
||||||
46
Examples/test-suite/li_boost_shared_ptr_attribute.i
Normal file
46
Examples/test-suite/li_boost_shared_ptr_attribute.i
Normal file
|
|
@ -0,0 +1,46 @@
|
||||||
|
%module li_boost_shared_ptr_attribute
|
||||||
|
|
||||||
|
#if defined(SWIGJAVA) || defined(SWIGCSHARP) || defined(SWIGPYTHON) || defined(SWIGD)
|
||||||
|
#define SHARED_PTR_WRAPPERS_IMPLEMENTED
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(SHARED_PTR_WRAPPERS_IMPLEMENTED)
|
||||||
|
|
||||||
|
%include "attribute.i"
|
||||||
|
%include "boost_shared_ptr.i"
|
||||||
|
|
||||||
|
%inline %{
|
||||||
|
#include <boost/shared_ptr.hpp>
|
||||||
|
using namespace boost;
|
||||||
|
%}
|
||||||
|
%shared_ptr(GetMe);
|
||||||
|
%shared_ptr(GetSetMe);
|
||||||
|
%attributestring(GetterOnly, shared_ptr<GetMe>, AddedAttrib, GetIt)
|
||||||
|
%attributestring(GetterSetter, shared_ptr<GetSetMe>, AddedAttrib, GetIt, SetIt)
|
||||||
|
|
||||||
|
%inline %{
|
||||||
|
struct GetMe {
|
||||||
|
explicit GetMe(int n) : n(n) {}
|
||||||
|
~GetMe() {}
|
||||||
|
int n;
|
||||||
|
};
|
||||||
|
struct GetSetMe {
|
||||||
|
explicit GetSetMe(int n) : n(n) {}
|
||||||
|
~GetSetMe() {}
|
||||||
|
int n;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct GetterOnly {
|
||||||
|
explicit GetterOnly(int n) : myval(new GetMe(n*n)) {}
|
||||||
|
shared_ptr<GetMe> GetIt() const { return myval; }
|
||||||
|
shared_ptr<GetMe> myval;
|
||||||
|
};
|
||||||
|
struct GetterSetter {
|
||||||
|
explicit GetterSetter(int n) : myval(new GetSetMe(n*n)) {}
|
||||||
|
shared_ptr<GetSetMe> GetIt() const { return myval; }
|
||||||
|
void SetIt(shared_ptr<GetSetMe> newval) { myval = newval; }
|
||||||
|
shared_ptr<GetSetMe> myval;
|
||||||
|
};
|
||||||
|
%}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -130,6 +130,9 @@
|
||||||
};
|
};
|
||||||
%}
|
%}
|
||||||
|
|
||||||
|
The %attributestring also works for class types that have %naturalvar turned
|
||||||
|
on and so is also useful for shared_ptr which has %naturalvar turned on in %shared_ptr.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
@ -275,7 +278,7 @@
|
||||||
%ignore Class::GetMethod();
|
%ignore Class::GetMethod();
|
||||||
%ignore Class::GetMethod() const;
|
%ignore Class::GetMethod() const;
|
||||||
%newobject Class::AttributeName;
|
%newobject Class::AttributeName;
|
||||||
%typemap(newfree) const AttributeType &AttributeName "delete $1;// my newfree override"
|
%typemap(newfree) const AttributeType &AttributeName "delete $1;"
|
||||||
%extend Class {
|
%extend Class {
|
||||||
AttributeType AttributeName;
|
AttributeType AttributeName;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue