Improved template template parameters support.

Previously, specifying more than one simple template template parameter
resulted in a parse error. Now multiple template template parameters are
working including instantiation with %template. Example:

  template <template<template<class> class, class> class Op, template<class> class X, class Y>
    class C { ... };

Closes #624
Closes #1021
This commit is contained in:
William S Fulton 2022-12-02 19:16:02 +00:00
commit 05b93b1f06
9 changed files with 212 additions and 62 deletions

View file

@ -0,0 +1,36 @@
import template_template_template_parameters.*;
public class template_template_template_parameters_runme {
static {
try {
System.loadLibrary("template_template_template_parameters");
} 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[]) {
CustomAttrs custom_attrs = new CustomAttrs();
AC ac = new AC();
BAC bac = new BAC();
CBAC cbac = new CBAC();
DBAC dbac = new DBAC();
custom_attrs = ac.getAttributes();
custom_attrs = bac.getAttributes();
custom_attrs = cbac.getAttributes();
custom_attrs = dbac.getAttributes();
bac.BMethod(custom_attrs, ac);
cbac.BMethod(custom_attrs, ac);
dbac.BMethod(custom_attrs, ac);
cbac.CMethod(custom_attrs, bac);
dbac.DMethod(custom_attrs, bac);
}
}