summaryrefslogtreecommitdiff
path: root/Examples/test-suite/class_scope_namespace.i
blob: 47d918157595ab1679379bd04b79417f487368a3 (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
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
// Test a mix of forward class declarations, class definitions, using declarations and using directives.

%module class_scope_namespace

%warnfilter(SWIGWARN_PARSE_NAMED_NESTED_CLASS) H::HH;
%warnfilter(SWIGWARN_PARSE_NAMED_NESTED_CLASS) Space8::I_::II;

%inline %{
struct A;
namespace Space1 {
  namespace SubSpace1 {
    struct A {
      void aa(Space1::SubSpace1::A, SubSpace1::A, A) {}
    };
    void aaa(Space1::SubSpace1::A, SubSpace1::A, A) {}
  }
}

namespace Space2 {
  struct B;
}
using Space2::B;
#ifdef __clang__
namespace Space2 {
  struct B {
    void bb(Space2::B, B) {}
  };
}
#else
struct B {
  void bb(Space2::B, B) {}
};
#endif
void bbb(Space2::B, B) {}

namespace Space3 {
  namespace SubSpace3 {
    struct C;
    struct D;
  }
}
struct C;
struct D;
namespace Space3 {
  struct C;
  struct SubSpace3::C {
    void cc(Space3::SubSpace3::C, SubSpace3::C) {}
  };
  using SubSpace3::D;
  struct SubSpace3::D {
    void dd(Space3::SubSpace3::D, SubSpace3::D, D) {}
  };
  void ccc(Space3::SubSpace3::C, SubSpace3::C) {}
  void ddd(Space3::SubSpace3::D, SubSpace3::D, D) {}
}

namespace Space4 {
  namespace SubSpace4 {
    struct E;
  }
}
using namespace Space4;
using SubSpace4::E;
// Was added to incorrect namespace in swig-3.0.12
struct SubSpace4::E {
  void ee(Space4::SubSpace4::E, SubSpace4::E, E) {}
};
void eee(Space4::SubSpace4::E, SubSpace4::E, E) {}

namespace Space5 {
  namespace SubSpace5 {
    namespace SubSubSpace5 {
      struct F;
    }
  }
}
namespace Space5 {
  using namespace SubSpace5;
  using SubSubSpace5::F;
  // Was added to incorrect namespace in swig-3.0.12
  struct SubSubSpace5::F {
    void ff(Space5::SubSpace5::SubSubSpace5::F, SubSpace5::SubSubSpace5::F, SubSubSpace5::F, F) {}
  };
  void fff(Space5::SubSpace5::SubSubSpace5::F, SubSpace5::SubSubSpace5::F, SubSubSpace5::F, F) {}
}

namespace Space6 {
  struct G;
  namespace SubSpace6 {
    struct G;
  }
}
namespace Space6 {
  struct SubSpace6::G {
    void gg(Space6::SubSpace6::G, SubSpace6::G) {}
  };
  void ggg(Space6::SubSpace6::G, SubSpace6::G) {}
}

struct HH;
struct H {
  struct HH {
    void hh(H::HH) {}
  };
};
void hhh(H::HH) {}

namespace Space8 {
  struct II;
  struct I_ {
    struct II {
      void ii(Space8::I_::II, I_::II) {}
    };
  };
  void iii(Space8::I_::II, I_::II) {}
}

struct J;
namespace Space9 {
  namespace SubSpace9 {
    struct J {
      void jj(Space9::SubSpace9::J, SubSpace9::J, J) {}
    };
    void jjj(Space9::SubSpace9::J, SubSpace9::J, J) {}
  }
}

namespace Space10 {
  struct K;
}
namespace Space10 {
  namespace SubSpace10 {
    struct K {
      void kk(Space10::SubSpace10::K, SubSpace10::K, K) {}
    };
    void kkk(Space10::SubSpace10::K, SubSpace10::K, K) {}
  }
}

namespace OtherSpace {
  struct L;
  struct M;
}
using OtherSpace::L;
namespace Space11 {
  using OtherSpace::M;
  namespace SubSpace11 {
    struct L {
      void ll(Space11::SubSpace11::L, SubSpace11::L, L) {}
    };
    void lll(Space11::SubSpace11::L, SubSpace11::L, L) {}
    struct M {
      void mm(Space11::SubSpace11::M, SubSpace11::M, M) {}
    };
    void mmm(Space11::SubSpace11::M, SubSpace11::M, M) {}
  }
}

%}