/
niceSOFT
/
swig
Обзор
Документация
Войти
/
niceSOFT
/
swig
Код
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Examples/test-suite/java/cpp11_template_using_base_runme.java
67 строк
3 KB
William S Fulton
Detect inheriting constructors by base class match in the parser
17 июн 2026, 03:47
17 июн 2026, 03:47
638742f
Код
Авторство
О чём код?
import cpp11_template_using_base.*; public class cpp11_template_using_base_runme { static { try { System.loadLibrary("cpp11_template_using_base"); } 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); } } private static void check(String actual, String expected) { if (!actual.equals(expected)) throw new RuntimeException("expected '" + expected + "' but got '" + actual + "'"); } public static void main(String argv[]) { DerivedInt d = new DerivedInt(); check(d.call(7), "Int:7"); // Inheriting constructor: using I::I; brings IntCase(int) into DerivedInt DerivedInt d10 = new DerivedInt(10); check(d10.call(7), "Int:17"); // Inheriting constructor through a typedef-name for a template-instance base (issue #2951) check(new TypedefMixin().call(7), "Int:7"); check(new TypedefMixin(10).call(7), "Int:17"); // As above but the unqualified-id is the base template's own name through the typedef (issue #2951) check(new TypedefNameMixin().call(7), "Int:7"); check(new TypedefNameMixin(10).call(7), "Int:17"); // As above but through a typedef of a typedef (issue #2951) check(new TypedefChainMixin().call(7), "Int:7"); check(new TypedefChainMixin(10).call(7), "Int:17"); // Multiple bases plus a typedef of a typedef naming the base (issue #2951) TypedefChainMultiBase tcmb = new TypedefChainMultiBase(); check(tcmb.call(7), "Int:7"); check(tcmb.call(7.5), "Double:7.500000"); check(new TypedefChainMultiBase(10).call(7), "Int:17"); // Multiple bases where the base is named through a typedef-argument typedef (issue #2951) TypedefArgMultiBase tamb = new TypedefArgMultiBase(); check(tamb.call(7), "Int:7"); check(tamb.call(7.5), "Double:7.500000"); check(new TypedefArgMultiBase(10).call(7), "Int:17"); // Base named through a scope-qualified qualifier: using ns2951::QualBase::QualBase (issue #2951) check(new QualifiedBaseUsing().call(7), "Int:7"); check(new QualifiedBaseUsing(10).call(7), "Int:17"); // Same immediate base named through a non-fully-qualified qualifier: using QualBase::QualBase (issue #2951) check(new SemiQualifiedBaseUsing().call(7), "Int:7"); check(new SemiQualifiedBaseUsing(10).call(7), "Int:17"); // Base reached through a typedef of a typedef whose intermediate lives in a namespace (issue #2951) check(new NsChainUsing().call(7), "Int:7"); check(new NsChainUsing(10).call(7), "Int:17"); OverloadedIntDouble o = new OverloadedIntDouble(); check(o.call(7), "Int:7"); check(o.call(7.5), "Double:7.500000"); } }