swig/Examples/test-suite/allowexcept.i
Olly Betts 3d6dcc3ce6 The operator& trick in allowexcept.i doesn't work for SWIG/PHP because the
generated code takes the address of the variable in the code in the "vinit"
section.  So comment out the private operator& for PHP.


git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@10643 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2008-07-03 22:00:01 +00:00

73 lines
1.3 KiB
OpenEdge ABL

// Test allowexcept feature
%module allowexcept
// First make sure %exception is not used by default for variable wrappers
%nodefaultctor;
%nodefaultdtor;
%exception {
This will not compile
}
%inline %{
struct UVW {};
UVW uvw_global_variable;
struct Bar {
UVW member_variable;
static UVW static_member_variable;
};
UVW Bar::static_member_variable;
%}
// Now test the allowexcept feature by making the usual $action uncompileable and ensuring the %exception is picked up
struct XYZ {
};
// The operator& trick doesn't work for SWIG/PHP because the generated code
// takes the address of the variable in the code in the "vinit" section.
#ifdef SWIGPHP
%{
struct XYZ {
void foo() {}
private:
XYZ& operator=(const XYZ& other); // prevent assignment used in normally generated set method
};
%}
#else
%{
struct XYZ {
void foo() {}
private:
XYZ& operator=(const XYZ& other); // prevent assignment used in normally generated set method
XYZ* operator&(); // prevent dereferencing used in normally generated get method
};
%}
#endif
#if defined(SWIGUTL)
%exception {
/*
$action
*/
SWIG_fail;
}
#else
%exception {
/*
$action
*/
}
#endif
%allowexception;
%inline %{
XYZ global_variable;
struct Foo {
XYZ member_variable;
static XYZ static_member_variable;
};
XYZ Foo::static_member_variable;
%}