| // 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) {} |
| } |
| } |
| |
| %} |
| |