Index: src/SynTree/Type.h
===================================================================
--- src/SynTree/Type.h	(revision ddfd945b741f2ed2bdb7c54fa54688244b98c7de)
+++ src/SynTree/Type.h	(revision d6d747d310b594f713f0f8df9f93ae69b21c6bf3)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Mar 16 08:28:02 2017
-// Update Count     : 91
+// Last Modified On : Thu Mar 16 12:11:50 2017
+// Update Count     : 116
 //
 
@@ -24,9 +24,22 @@
 class Type : public BaseSyntaxNode {
   public:
+	#define CommonBF( N ) \
+		bool operator[]( unsigned int i ) const { return val & (1 << i); } \
+		bool any() const { return val != 0; } \
+		static const char * Names[]; \
+		void print( std::ostream & os ) const { \
+			if ( (*this).any() ) { \
+				for ( unsigned int i = 0; i < N; i += 1 ) { \
+					if ( (*this)[i] ) { \
+						os << Names[i] << ' '; \
+					} \
+				} \
+			} \
+		}
+
 	// enum must remain in the same order as the corresponding bit fields.
 
 	enum { Inline = 1 << 0, Noreturn = 1 << 1, Fortran = 1 << 2, NumFuncSpecifier = 3 };
 	union FuncSpecifiers {
-		static const char * Names[];
 		unsigned int val;
 		struct {
@@ -37,20 +50,9 @@
 		FuncSpecifiers() : val( 0 ) {}
 		FuncSpecifiers( unsigned int val ) : val( val ) {}
-		bool operator[]( unsigned int i ) const { return val & (1 << i); }
-		bool any() const { return val != 0; }
-		void print( std::ostream & os ) const {
-			if ( (*this).any() ) {						// any function specifiers ?
-				for ( unsigned int i = 0; i < NumFuncSpecifier; i += 1 ) {
-					if ( (*this)[i] ) {
-						os << FuncSpecifiers::Names[i] << ' ';
-					} // if
-				} // for
-			} // if
-		}
+		CommonBF( NumFuncSpecifier )
 	}; // FuncSpecifiers
 
 	enum { Extern = 1 << 0, Static = 1 << 1, Auto = 1 << 2, Register = 1 << 3, Threadlocal = 1 << 4, NumStorageClass = 5 };
 	union StorageClasses {
-		static const char * Names[];
 		unsigned int val;
 		struct {
@@ -64,20 +66,9 @@
 		StorageClasses() : val( 0 ) {}
 		StorageClasses( unsigned int val ) : val( val ) {}
-		bool operator[]( unsigned int i ) const { return val & (1 << i); }
-		bool any() const { return val != 0; }
-		void print( std::ostream & os ) const {
-			if ( (*this).any() ) {						// any storage classes ?
-				for ( unsigned int i = 0; i < NumStorageClass; i += 1 ) {
-					if ( (*this)[i] ) {
-						os << StorageClasses::Names[i] << ' ';
-					} // if
-				} // for
-			} // if
-		}
+		CommonBF( NumStorageClass )
 	}; // StorageClasses
 
 	enum { Const = 1 << 0, Restrict = 1 << 1, Volatile = 1 << 2, Lvalue = 1 << 3, Mutex = 1 << 4, Atomic = 1 << 5, NumTypeQualifier = 6 };
 	union Qualifiers {
-		static const char * Names[];
 		enum { Mask = ~(Restrict | Lvalue) };
 		unsigned int val;
@@ -93,49 +84,39 @@
 		Qualifiers() : val( 0 ) {}
 		Qualifiers( unsigned int val ) : val( val ) {}
-		bool operator[]( unsigned int i ) const { return val & (1 << i); }
-		bool any() const { return val != 0; }
-		bool operator==( const Qualifiers other ) const {
+		bool operator==( Qualifiers other ) const {
 			return (val & Mask) == (other.val & Mask);
 		}
-		bool operator!=( const Qualifiers other ) const {
+		bool operator!=( Qualifiers other ) const {
 			return (val & Mask) != (other.val & Mask);
 		}
-		bool operator<=( const Qualifiers other ) const {
+		bool operator<=( Qualifiers other ) const {
 			return isConst <= other.isConst && isVolatile <= other.isVolatile &&
 				isMutex == other.isMutex && isAtomic == other.isAtomic;
 		}
-	 	bool operator>=( const Qualifiers other ) const {
+	 	bool operator>=( Qualifiers other ) const {
 			return isConst >= other.isConst	&& isVolatile >= other.isVolatile &&
 				isMutex == other.isMutex && isAtomic == other.isAtomic;
 		}
-		bool operator<( const Qualifiers other ) const {
+		bool operator<( Qualifiers other ) const {
 			return *this != other && *this <= other;
 		}
-	 	bool operator>( const Qualifiers other ) const {
+	 	bool operator>( Qualifiers other ) const {
 			return *this != other && *this >= other;
 		}
-		Qualifiers operator&=( const Type::Qualifiers other ) {
+		Qualifiers operator&=( Type::Qualifiers other ) {
 			val &= other.val; return *this;
 		}
-	 	Qualifiers operator+=( const Qualifiers other ) {
+	 	Qualifiers operator+=( Qualifiers other ) {
 			val |= other.val; return *this;
 		}
-	 	Qualifiers operator-=( const Qualifiers other ) {
+	 	Qualifiers operator-=( Qualifiers other ) {
 			val &= ~other.val; return *this;
 		}
-	 	Qualifiers operator+( const Qualifiers other ) const {
+	 	Qualifiers operator+( Qualifiers other ) const {
 			Qualifiers q = other;
 			q += *this;
 			return q;
 		}
-	 	void print( std::ostream & os, int indent = 0 ) const {
-			if ( (*this).any() ) {						// any type qualifiers ?
-				for ( unsigned int i = 0; i < NumTypeQualifier; i += 1 ) {
-					if ( (*this)[i] ) {
-						os << Names[i] << ' ';
-					} // if
-				} // for
-			} // if
-		}
+		CommonBF( NumTypeQualifier )
 	}; // Qualifiers
 
