Member function pointers can't possibly be represented as function pointers, they have a strictly bigger size and attempting to do it resulted in code which, with a lot of bad casts, compiled, but crashed during run-time. The proper solution is to represent C++ method pointers with an appropriate opaque type, but for now this remains broken -- just make it explicitly broken instead of pretending that it works when it actually has no chance to. Let "namespace_spaces" unit test pass, as it's not really related to the function pointers, by adding an explicit SWIGC test to it.
35 lines
583 B
OpenEdge ABL
35 lines
583 B
OpenEdge ABL
%module namespace_spaces
|
|
|
|
%{
|
|
#if defined(__SUNPRO_CC)
|
|
#pragma error_messages (off, wbadasg) /* Assigning extern "C" ... */
|
|
#endif
|
|
%}
|
|
|
|
%inline %{
|
|
|
|
class Foo {
|
|
public:
|
|
Foo();
|
|
~Foo();
|
|
typedef int Integer;
|
|
int blah(int x);
|
|
int spam(int x);
|
|
Integer bar(Integer x);
|
|
#ifndef SWIGC
|
|
void (Foo:: *func_ptr) (int);
|
|
#endif
|
|
};
|
|
|
|
inline Foo :: Foo () {}
|
|
|
|
inline Foo :: ~Foo () {}
|
|
|
|
inline int Foo
|
|
::blah(int x) { return 2*x; }
|
|
|
|
inline int Foo :: spam(int x) { return -x; }
|
|
|
|
inline Foo :: Integer Foo :: bar(Foo :: Integer x) { return x; }
|
|
|
|
%}
|