summaryrefslogtreecommitdiff
path: root/Examples/test-suite/python_flatstaticmethod.i
blob: c0de7d29859667ad01d72ca6bd619f901d64fcc4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
%module python_flatstaticmethod

// This testcase tests C++ class static functions when using legacy "flattened"
// staticmethod access, A_bar, as well as the normal staticmethod access, A.bar.

%callback(1) A::bar;
%feature("kwargs") A::pub;
%feature("autodoc","0") A::func0static; // names
%feature("autodoc","1") A::func1static; // names + types
// special typemap and its docs
%typemap(in) (int c, int d) "$1 = 0; $2 = 0;";
%typemap(doc,name="hello",type="Tuple") (int c, int d) "hello: int tuple[2]";

%inline %{
  struct A {
    static int bar(int a) {
      return 2*a;
    }
    static int pub(int a = 1, int b = 0) {
      return a + b;
    }
    static int func0static(A *e, short, int c, int d, double f = 2) { return 0; }
    static int func1static(A *e, short, int c, int d, double f = 2) { return 0; }

    static const char *over(int) { return "over:int"; }
    static const char *over(double) { return "over:double"; }
    static const char *over(char *) { return "over:char *"; }

    static int defargs(int xx = 10, int yy = 20) { return xx + yy; }
  };

  extern "C" int foobar(int a, int (*pf)(int a)) {
    return pf(a);
  }
%}