File: using_member.i

package info (click to toggle)
swig 4.4.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 45,980 kB
  • sloc: cpp: 54,284; ansic: 29,022; java: 17,595; python: 12,734; cs: 10,421; ruby: 7,263; yacc: 6,501; makefile: 5,860; javascript: 5,538; sh: 5,422; perl: 4,246; php: 3,733; ml: 2,198; tcl: 2,015; lisp: 1,448; xml: 115
file content (81 lines) | stat: -rw-r--r-- 2,046 bytes parent folder | download
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
%module using_member

/* using declaration tests, including renaming */
%warnfilter(SWIGWARN_LANG_USING_NAME_DIFFERENT) one::twotwo::threetwo::BB::great;

%rename(greater) one::two::three::interface1::AA::great(int);
%rename(greater) one::two::three::interface1::AA::great(float);
%rename(greater) one::CC::great;
%rename(greater) one::DD::great;
%rename(greaterstill) one::DD::great(bool);

#ifdef SWIGLUA
// Lua does now have a separate integer type, but didn't used to
// and SWIG doesn't yet know about it (see #1918) so for now suppress
// warnings about functions with overloads on int vs double, etc.
%warnfilter(SWIGWARN_LANG_OVERLOAD_SHADOW) B::get(double);
%warnfilter(SWIGWARN_LANG_OVERLOAD_SHADOW) one::two::three::interface1::AA::great(float);
%warnfilter(SWIGWARN_LANG_OVERLOAD_SHADOW) one::CC::great;
%warnfilter(SWIGWARN_LANG_OVERLOAD_SHADOW) one::DD::great(float);
#endif

%inline %{
namespace interface1
{
    struct A
    {
        int get(int) {return 10;}
    };
}
using interface1::A;

struct B : public A
{
    using A::get;
    int get(double) {return 20;}
};


namespace one {
    namespace two {
        namespace three {
            namespace interface1
            {
                class AA
                {
                public:
                    int great(int) {return 0;}
                    int great(float) {return 1;}
                };
            }
            using interface1::AA;
        }
    }
    namespace twotwo {
        namespace threetwo {
            class BB : public two::three::AA
            {
            public:
// TODO: two::three::AA::great not introduced
                using two::three::AA::great;
                int great(bool) {return 2;}
                int jj() {return 3;}
            };
        }
    }

    class CC : public two::three::AA
    {
    public:
      using two::three::AA::great;
      int great(bool) {return 20;}
    };

    class DD : public two::three::AA
    {
    public:
      using two::three::AA::great;
      int great(bool) {return 30;}
    };
}
%}