22 inline void print(std::ostream& out,
const char* name)
27 out << setw(36) << left << name;
28 out << setw(4) <<
'.' << setw(8) << left << JClass<T>::is_primitive;
29 out << setw(4) <<
'.' << setw(8) << left << JClass<T>::is_pointer;
30 out << setw(4) <<
'.' << setw(8) << left << JClass<T>::is_reference;
31 out << setw(4) <<
'.' << setw(8) << left << JClass<T>::is_constant;
43 #define PRINT(OUT, T) print<T>(OUT, #T)
52 int main(
int argc,
char **argv)
61 JParser<> zap(
"Example program to test class inspection.");
67 catch(
const exception &error) {
68 FATAL(error.what() << endl);
73 cout << setw(36) << left <<
"name";
74 cout << setw(12) <<
"primitive";
75 cout << setw(12) <<
" pointer";
76 cout << setw(12) <<
"reference";
77 cout << setw(12) <<
"constant";
84 PRINT(cout,
const int*);
91 ASSERT( JClass<int>::is_primitive);
92 ASSERT(!JClass<int>::is_pointer);
93 ASSERT(!JClass<int>::is_reference);
94 ASSERT(!JClass<int>::is_constant);
96 ASSERT( JClass<int&>::is_primitive);
97 ASSERT(!JClass<int&>::is_pointer);
98 ASSERT( JClass<int&>::is_reference);
99 ASSERT(!JClass<int&>::is_constant);
101 ASSERT( JClass<const int*>::is_primitive);
102 ASSERT( JClass<const int*>::is_pointer);
103 ASSERT(!JClass<const int*>::is_reference);
104 ASSERT( JClass<const int*>::is_constant);
106 ASSERT(!JClass<__A__>::is_primitive);
107 ASSERT(!JClass<__A__>::is_pointer);
108 ASSERT(!JClass<__A__>::is_reference);
109 ASSERT(!JClass<__A__>::is_constant);
114 ASSERT(is_iterator<__A__> ::value ==
false);
115 ASSERT(is_iterator<__A__&>::value ==
false);
116 ASSERT(is_iterator<__A__*>::value ==
true);