//!Commented DeclSpecifierTest
//%CPP
//Test1
inline int foo()
{
    return 1;
}

//Test2
const int a = 1;
//Test3
volatile int b = 3;
//Test4
typedef int* intp;
//Test5
extern int b;
//Test6
static int c;

//Test7
int foo()
{
    int i = 1;
    return i;
}

//Test8
int bar()
{
    register int i = c;
    return i;
}


//!Commented CompositeTypeSpecifier
//%CPP
//Test1
struct B //Test1
{
    int c; //Test3
    char b; //Test4
    //Test5
};
//Test6
union D //Test7
{
    int i; //Test8
    int y; //Test9
    //Test10
};
//Test11
class E //Test12
{
    //Test13
public:
    int c; //Test14
    //Test15
};

//!Commented ElaboratedTypeSpecifier 1
//%CPP
//Test1
class A* A; //Test2
//Test3
enum Status{ good, bad}; //Test4
//Test5
enum Status stat; //Test6
//Test7
union D //Test8
{
    int i; //Test9
    int y; //Test10
    //Test11
};
//Test12
union D d; //Test13

//!Commented ElaboratedTypeSpecifier 2
//%CPP
enum Status{ good, bad};
enum /*Test*/
Status stat;

//!Commented EnumeratioSpecifier
//%CPP
enum /*Test*/
Status{ good, bad};

//!NamedTypeSpecifier
//%CPP
typedef int INT;
typedef INT (FOO)(INT);

//!SimpleDeclSpecifier
//%CPP
signed short int i;
unsigned long int y;
float f;
void x();
char c;
double d;

//!Commented CPPCompositeTypeSpecifier 1
//%CPP
//TEST 1
class TestClass //TEST 2
{
    //TEST 3
}; //TEST 4

//!Commented CPPCompositeTypeSpecifier 2
//%CPP
/*TEST 1*/
class TestClass /*TEST 2*/
{
    /*TEST 3*/
}; /*TEST 4*/

//!Commented CPPCompositeTypeSpecifier 3
//%CPP
//TEST 1
class TestClass2 //TEST 2
 : public TestClass //TEST 3
{
    //TEST 4
}; //TEST 5

//!Commented CPPCompositeTypeSpecifier 4
//%CPP
/*TEST 1*/
class TestClass2 /*TEST 2*/
 : public TestClass
{
    /*TEST 3*/
}; /*TEST 4*/

//!Commented CPPCompositeTypeSpecifier 5
//%CPP
class TestClass2 /*TEST 1*/
 : public TestClass
{
};

//!Commented CPPCompositeTypeSpecifier 6
//%CPP

class TestClass2
 : public TestClass /*TEST 1*/
{
};

//=
class TestClass2 : public TestClass /*TEST 1*/
{
};

//!Commented CPPCompositeTypeSpecifier 7
//%CPP
class TestClass2 : public TestClass
{ //TEST 1
};

//=
class TestClass2 : public TestClass
{
    //TEST 1
};

//!Commented CPPCompositeTypeSpecifier 8
//%CPP
class TestClass2
 : public TestClass
{ /*TEST 1*/
};

//=
class TestClass2 : public TestClass
{
    /*TEST 1*/
};

//!Commented CPPNamedTypeSpecifier 1
//%CPP
template<class T> class A
{
    //TEST 1
    typedef char C; //TEST 2
};

//!Commented CPPNamedTypeSpecifier 2
//%CPP
template<class T> class A
{
    /*TEST 1*/
    typedef char C; /*TEST 2*/
};

//!Commented SimpleDeclSpecifier 1
//%CPP
//TEST 1
bool b; //TEST 2

//!Commented SimpleDeclSpecifier 2
//%CPP
/*TEST 1*/
wchar_t wc; /*TEST 2*/

//!Commented DeclSpecifier in Definition
//%CPP
//comment a
void tree(int a){ //comment b
	a = 1; //comment c
} //comment d

//=
//comment a
void tree(int a)
{
    //comment b
    a = 1; //comment c
} //comment d


