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 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184
|
%module using_directive_and_declaration_forward
// Test using directives combined with using declarations and forward declarations
%inline %{
namespace Outer1 {
namespace Space1 {
class Thing1;
}
}
using namespace Outer1::Space1;
using Outer1::Space1::Thing1;
#ifdef __clang__
namespace Outer1 {
namespace Space1 {
class Thing1 {};
}
}
#else
class Thing1 {};
#endif
void useit1(Thing1 t) {}
void useit1a(Outer1::Space1::Thing1 t) {}
void useit1b(::Outer1::Space1::Thing1 t) {}
namespace Outer1 {
void useit1c(Space1::Thing1 t) {}
}
namespace Outer2 {
namespace Space2 {
class Thing2;
}
}
using namespace Outer2;
using Space2::Thing2;
using namespace Outer1::Space1;
using Outer1::Space1::Thing1;
#ifdef __clang__
namespace Outer2 {
namespace Space2 {
class Thing2 {};
}
}
#else
class Thing2 {};
#endif
void useit2(Thing2 t) {}
void useit2a(Outer2::Space2::Thing2 t) {}
void useit2b(::Outer2::Space2::Thing2 t) {}
void useit2c(Space2::Thing2 t) {}
namespace Outer2 {
void useit2d(Space2::Thing2 t) {}
}
namespace Outer3 {
namespace Space3 {
namespace Middle3 {
class Thing3;
}
}
}
using namespace Outer3;
using namespace Space3;
using Middle3::Thing3;
#ifdef __clang__
namespace Outer3 {
namespace Space3 {
namespace Middle3 {
class Thing3 {};
}
}
}
#else
class Thing3 {};
#endif
void useit3(Thing3 t) {}
void useit3a(Outer3::Space3::Middle3::Thing3 t) {}
void useit3b(::Outer3::Space3::Middle3::Thing3 t) {}
void useit3c(Middle3::Thing3 t) {}
namespace Outer3 {
namespace Space3 {
void useit3d(Middle3::Thing3 t) {}
}
}
namespace Outer4 {
namespace Space4 {
namespace Middle4 {
class Thing4;
}
}
}
using namespace Outer4::Space4;
using Middle4::Thing4;
#ifdef __clang__
namespace Outer4 {
namespace Space4 {
namespace Middle4 {
class Thing4 {};
}
}
}
#else
class Thing4 {};
#endif
void useit4(Thing4 t) {}
void useit4a(Outer4::Space4::Middle4::Thing4 t) {}
void useit4b(::Outer4::Space4::Middle4::Thing4 t) {}
void useit4c(Middle4::Thing4 t) {}
namespace Outer4 {
namespace Space4 {
void useit4d(Middle4::Thing4 t) {}
}
}
namespace Outer5 {
namespace Space5 {
namespace Middle5 {
namespace More5 {
class Thing5;
}
}
}
}
using namespace ::Outer5::Space5;
using namespace Middle5;
using More5::Thing5;
#ifdef __clang__
namespace Outer5 {
namespace Space5 {
namespace Middle5 {
namespace More5 {
class Thing5 {};
}
}
}
}
#else
class Thing5 {};
#endif
void useit5(Thing5 t) {}
void useit5a(Outer5::Space5::Middle5::More5::Thing5 t) {}
void useit5b(::Outer5::Space5::Middle5::More5::Thing5 t) {}
void useit5c(Middle5::More5::Thing5 t) {}
namespace Outer5 {
namespace Space5 {
void useit5d(Middle5::More5::Thing5 t) {}
}
}
namespace Outer7 {
namespace Space7 {
namespace Middle7 {
class Thing7;
}
}
}
using namespace Outer7::Space7;
#ifdef __clang__
namespace Outer7 {
namespace Space7 {
namespace Middle7 {
class Thing7 {};
}
}
}
#else
class Middle7::Thing7 {};
#endif
using Middle7::Thing7;
void useit7(Thing7 t) {}
void useit7a(Outer7::Space7::Middle7::Thing7 t) {}
void useit7b(::Outer7::Space7::Middle7::Thing7 t) {}
void useit7c(Middle7::Thing7 t) {}
namespace Outer7 {
namespace Space7 {
void useit7d(Middle7::Thing7 t) {}
}
}
%}
|