| |
| import cpp11_using_constructor.*; |
| import java.lang.reflect.*; |
| |
| public class cpp11_using_constructor_runme { |
| |
| static { |
| try { |
| System.loadLibrary("cpp11_using_constructor"); |
| } 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 main(String argv[]) { |
| // Public base constructors |
| new PublicDerived1(0, "hi").meth(); |
| new PublicDerived2().meth(); |
| new PublicDerived2(0, "hi").meth(); |
| new PublicDerived3().meth(); |
| new PublicDerived3(0, "hi").meth(); |
| new PublicDerived4().meth(); |
| new PublicDerived5().meth(); |
| |
| // Protected base constructors |
| // Cannot test most of these as the constructors are protected |
| new ProtectedDerived5(); |
| |
| // Mix of public and overloaded constructors |
| new MixedDerived1a(0, "hi").meth(); |
| new MixedDerived1a().meth(); |
| new MixedDerived1b(0, "hi").meth(); |
| new MixedDerived1b().meth(); |
| |
| new MixedDerived2a(0, "hi").meth(); |
| new MixedDerived2a().meth(); |
| new MixedDerived2b(0, "hi").meth(); |
| new MixedDerived2b().meth(); |
| |
| new MixedDerived2c(0, "hi").meth(); |
| new MixedDerived2c().meth(); |
| new MixedDerived2c(0).meth(); |
| |
| new MixedDerived2d(0, "hi").meth(); |
| new MixedDerived2d().meth(); |
| new MixedDerived2d(0).meth(); |
| |
| new MixedDerived3a(0, "hi").meth(); |
| new MixedDerived3a().meth(); |
| new MixedDerived3b(0, "hi").meth(); |
| new MixedDerived3b().meth(); |
| |
| new MixedDerived3c(0, "hi").meth(); |
| new MixedDerived3c().meth(); |
| new MixedDerived3c(0).meth(); |
| |
| new MixedDerived3d(0, "hi").meth(); |
| new MixedDerived3d().meth(); |
| new MixedDerived3d(0).meth(); |
| |
| new MixedDerived4a(0, "hi").meth(); |
| new MixedDerived4a().meth(); |
| new MixedDerived4b(0, "hi").meth(); |
| new MixedDerived4b().meth(); |
| |
| new MixedDerived4c().meth(); |
| new MixedDerived4c(0).meth(); |
| |
| new MixedDerived4d().meth(); |
| new MixedDerived4d(0).meth(); |
| |
| new MixedDerived4e().meth(); |
| |
| new MixedDerived4f().meth(); |
| |
| // Mix of protected base constructors and overloading |
| new ProotDerived1a().meth(); |
| |
| new ProotDerived1b(0, "hi").meth(); |
| new ProotDerived1b().meth(); |
| |
| new ProotDerived1c(0, "hi").meth(); |
| new ProotDerived1c().meth(); |
| |
| new ProotDerived1d(0).meth(); |
| new ProotDerived1d().meth(); |
| |
| new ProotDerived1e(0).meth(); |
| new ProotDerived1e().meth(); |
| |
| new ProotDerived2a(0, "hi").meth(); |
| |
| new ProotDerived2b(0, "hi").meth(); |
| |
| new ProotDerived2c(0, "hi").meth(); |
| new ProotDerived2c().meth(); |
| |
| new ProotDerived2d(0, "hi").meth(); |
| new ProotDerived2d().meth(); |
| |
| new ProotDerived2e(0, "hi").meth(); |
| new ProotDerived2e().meth(); |
| |
| new ProotDerived2f(0, "hi").meth(); |
| new ProotDerived2f().meth(); |
| new ProotDerived2f(0).meth(); |
| |
| // Deeper inheritance chain |
| DeepBase3 db3 = new DeepBase3(11); |
| db3 = new DeepBase3(11, 22); |
| db3 = new DeepBase3(11, 22, 33); |
| DeepProtectedBase3 dbp3 = new DeepProtectedBase3(11, 22, 33); |
| |
| // Missing base |
| new HiddenDerived1(); |
| |
| // Templates and public base constructors (derive from non-template) |
| new TemplatePublicDerived1Int(0, "hi").meth(); |
| new TemplatePublicDerived2Int().meth(); |
| new TemplatePublicDerived2Int(0, "hi").meth(); |
| new TemplatePublicDerived3Int().meth(); |
| new TemplatePublicDerived3Int(0, "hi").meth(); |
| new TemplatePublicDerived4Int().meth(); |
| new TemplatePublicDerived5Int().meth(); |
| |
| // Templates and public base constructors (derive from template) |
| new TemplPublicDerived1Int(0, "hi").meth(); |
| new TemplPublicDerived2Int().meth(); |
| new TemplPublicDerived2Int(0, "hi").meth(); |
| new TemplPublicDerived3Int().meth(); |
| new TemplPublicDerived3Int(0, "hi").meth(); |
| new TemplPublicDerived4Int().meth(); |
| new TemplPublicDerived5Int().meth(); |
| new TemplPublicDerived6Int(0, "hi").meth(); |
| new TemplPublicDerived6Int().meth(); |
| |
| // Templated constructors (public) |
| TemplateConstructor1Base tcb = new TemplateConstructor1Base(0, "hi"); |
| tcb = new TemplateConstructor1Base("hi", "hi"); |
| tcb = new TemplateConstructor1Base(11.1, "hi"); |
| tcb.normal_method(); |
| tcb.template_method(0, "hi"); |
| tcb.template_method("hey", "ho"); |
| |
| TemplateConstructor1Derived tcd1 = new TemplateConstructor1Derived(0, "hi"); |
| tcd1 = new TemplateConstructor1Derived("hi", "hi"); |
| tcd1 = new TemplateConstructor1Derived(11.1, "hi"); |
| // Not the best test as these are also in the base class, hence use also introspection below |
| tcd1.normal_method(); |
| tcd1.template_method(0, "hi"); |
| tcd1.template_method("hey", "ho"); |
| |
| // Templated methods |
| // Introspection to make sure these are actually generated in the derived class |
| try { |
| TemplateConstructor1Derived.class.getDeclaredMethod("normal_method", (java.lang.Class[])null); |
| TemplateConstructor1Derived.class.getDeclaredMethod("template_method", new java.lang.Class[]{String.class, String.class}); |
| TemplateConstructor1Derived.class.getDeclaredMethod("template_method", new java.lang.Class[]{int.class, String.class}); |
| } catch (NoSuchMethodException e) { |
| throw new RuntimeException(e); |
| } |
| |
| // Templated constructors (protected) |
| TemplateConstructor2Derived tcd2 = new TemplateConstructor2Derived(); |
| tcd2.normal_method(); |
| tcd2.template_method(0, "hi"); |
| tcd2.template_method("hey", "ho"); |
| } |
| } |