extern "C" {
struct EllipseData_wrap {
double r1;
double r2;
};
// abstract pointer typ
struct NativeClass_wrap;
// constructor
NativeClass_wrap * newNativeClass();
// destructor
void deleteNativeClass( NativeClass_wrap *& native);
// method
double calcEllipse( NativeClass_wrap * native, EllipseData_wrap input);
} /* extern "C" */