%module(docstring="hello.") autodoc %warnfilter(SWIGWARN_PARSE_KEYWORD) inout; %feature("autodoc"); // 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]"; // testing for different documentation levels %feature("autodoc","0") A::func0; // names %feature("autodoc","1") A::func1; // names + types %feature("autodoc","2") A::func2; // extended %feature("autodoc","3") A::func3; // extended + types %feature("autodoc","0") A::func0default; // names %feature("autodoc","1") A::func1default; // names + types %feature("autodoc","2") A::func2default; // extended %feature("autodoc","3") A::func3default; // extended + types %feature("autodoc","0") A::func0static; // names %feature("autodoc","1") A::func1static; // names + types %feature("autodoc","2") A::func2static; // extended %feature("autodoc","3") A::func3static; // extended + types %feature("autodoc","0") A::variable_a; // names %feature("autodoc","1") A::variable_b; // names + types %feature("autodoc","2") A::variable_c; // extended %feature("autodoc","3") A::variable_d; // extended + types %feature("autodoc","just a string.") A::funk; // names %inline { enum Hola { hi, hello }; struct A { A(int a, short b, Hola h) {} int funk(int a) { return a; } int func0(short, int c, int d) { return c; } int func1(short, int c, int d) { return c; } int func2(short, int c, int d) { return c; } int func3(short, int c, int d) { return c; } int func0default(A *e, short, int c, int d, double f = 2) { return 0; } int func1default(A *e, short, int c, int d, double f = 2) { return 0; } int func2default(A *e, short, int c, int d, double f = 2) { return 0; } int func3default(A *e, short, int c, int d, double f = 2) { return 0; } 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 int func2static(A *e, short, int c, int d, double f = 2) { return 0; } static int func3static(A *e, short, int c, int d, double f = 2) { return 0; } int variable_a; int variable_b; int variable_c; int variable_d; }; } // deleting typemaps and docs %typemap(in) (int c, int d) ; %typemap(doc) (int c, int d); // docs for some parameters %typemap(doc) int a "a: special comment for parameter a"; %typemap(doc) int b "b: another special comment for parameter b"; %feature("autodoc","0") C::C(int a, int b, Hola h); // names %feature("autodoc","1") D::D(int a, int b, Hola h); // names + types %feature("autodoc","2") E::E(int a, int b, Hola h); // extended %feature("autodoc","3") F::F(int a, int b, Hola h); // extended + types %feature("autodoc","0") C::~C(); // names %feature("autodoc","1") D::~D(); // names + types %feature("autodoc","2") E::~E(); // extended %feature("autodoc","3") F::~F(); // extended + types %inline { struct B { B(int a, int b, Hola h) {} int funk(int c, int d) { return c; } }; struct C { C(int a, int b, Hola h) {} }; struct D { D(int a, int b, Hola h) {} }; struct E { E(int a, int b, Hola h) {} }; struct F { F(int a, int b, Hola h) {} }; int funk(A *e, short, int c, int d) { return c; } int funkdefaults(A *e, short, int c, int d, double f = 2) { return c; } } %include %inline %{ int func_input(int *INPUT) { return 1; } int func_output(int *OUTPUT) { *OUTPUT = 2; return 1; } int func_inout(int *INOUT) { *INOUT += 1; return 1; } %} %callback("%(uppercase)s_CALLBACK") func_cb; %inline { int func_cb(int c, int d) { return c; } } // Bug 3310528 %feature("autodoc","1") banana; // names + types %inline %{ typedef struct tagS { int a; char b; } S; typedef int Integer; void banana(S *a, const struct tagS *b, int c, Integer d) {} %} // Check docs for a template type %inline %{ template struct T { T inout(T t) { return t; } }; %} %template(TInteger) T; %inline %{ #ifdef SWIGPYTHON_BUILTIN bool is_python_builtin() { return true; } #else bool is_python_builtin() { return false; } #endif %} // Autodoc language keywords %feature(autodoc,1) process; %feature(autodoc,1) process2; %feature("compactdefaultargs") process; %feature("compactdefaultargs") process2; %inline %{ int process(int from, int in, int var) { return from; } int process2(int from = 0, int _in = 1, int var = 2) { return from; } %} %feature(autodoc,1) process3; %feature(autodoc,1) process4; %feature("kwargs") process3; %feature("kwargs") process4; %inline %{ int process3(int from, int _in, int var) { return from; } int process4(int from = 0, int _in = 1, int var = 2) { return from; } %} // Autodoc for methods with default arguments not directly representable in // target language. %feature(autodoc,0) process_complex_defval; %feature("compactdefaultargs") process_complex_defval; %inline %{ const int PROCESS_DEFAULT_VALUE = 17; typedef long int some_type; int process_complex_defval(int val = PROCESS_DEFAULT_VALUE, int factor = some_type(-1)) { return val*factor; } %} // Test for empty docstring, which should be ignored. %feature("docstring") "" %inline %{ struct a_structure{ char my_array[1]; }; %}