%module nested_scope

%inline %{
namespace ns {
        // "global" is a case-insensitive keyword in PHP.
	struct Global_ {
#ifdef __clang__
		struct Outer {
			struct Nested;
			struct Nested {
			  int data;
			};
		};
		struct Outer::Nested instance;
#else
		struct Outer {
			struct Nested;
		};
		struct Outer::Nested {
			int data;
		} instance;
#endif
	};
}
		class Outer1 {
			struct Nested1;
		public:
			struct Nested2;
#ifdef __clang__
			struct Nested2 {
				int data;
			};
#endif
			template <class T> class AbstractClass;
			class Real;
		};
#ifndef __clang__
		struct Outer1::Nested2 {
			int data;
		};
#endif
		
		class Klass {
		public:
			template <class T> class AbstractClass;
			class Real;
		};

		template <class T> class Klass::AbstractClass {
		public:
			virtual void Method() = 0;
			virtual ~AbstractClass() {}
		};
%} 

%template(abstract_int) Klass::AbstractClass <int>;

%inline %{
		class Klass::Real : public AbstractClass <int> {
		public:
			virtual void Method() {}
		};
%}
