Index: src/SynTree/AggregateDecl.cc
===================================================================
--- src/SynTree/AggregateDecl.cc	(revision 5f2f2d75adcd9f673ef8bda86f25d409347089be)
+++ src/SynTree/AggregateDecl.cc	(revision 68cd1ce1134527e1c664cfdf84df37a7025de8a7)
@@ -10,6 +10,6 @@
 // Created On       : Sun May 17 23:56:39 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue May 19 16:52:08 2015
-// Update Count     : 5
+// Last Modified On : Sat Jun 13 08:12:49 2015
+// Update Count     : 6
 //
 
@@ -19,5 +19,5 @@
 
 
-AggregateDecl::AggregateDecl( const std::string &name ) : Parent( name, Declaration::NoStorageClass, LinkageSpec::Cforall ) {
+AggregateDecl::AggregateDecl( const std::string &name ) : Parent( name, DeclarationNode::NoStorageClass, LinkageSpec::Cforall ) {
 }
 
Index: src/SynTree/Declaration.cc
===================================================================
--- src/SynTree/Declaration.cc	(revision 5f2f2d75adcd9f673ef8bda86f25d409347089be)
+++ src/SynTree/Declaration.cc	(revision 68cd1ce1134527e1c664cfdf84df37a7025de8a7)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon May 18 08:18:35 2015
-// Update Count     : 2
+// Last Modified On : Sat Jun 13 08:07:20 2015
+// Update Count     : 9
 //
 
@@ -22,16 +22,14 @@
 #include "utility.h"
 
-const char* Declaration::storageClassName[] = { "", "auto", "static", "extern", "register" };  
-
 static UniqueId lastUniqueId = 0;
 typedef std::map< UniqueId, Declaration* > IdMapType;
 static IdMapType idMap;
 
-Declaration::Declaration( const std::string &name, StorageClass sc, LinkageSpec::Type linkage )
-	: name( name ), storageClass( sc ), linkage( linkage ), uniqueId( 0 ) {
+Declaration::Declaration( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage )
+		: name( name ), storageClass( sc ), linkage( linkage ), uniqueId( 0 ) {
 }
 
 Declaration::Declaration( const Declaration &other )
-	: name( other.name ), storageClass( other.storageClass ), linkage( other.linkage ), uniqueId( other.uniqueId ) {
+		: name( other.name ), storageClass( other.storageClass ), linkage( other.linkage ), uniqueId( other.uniqueId ) {
 }
 
@@ -44,15 +42,9 @@
 }
 
-/* static class method */
 Declaration *Declaration::declFromId( UniqueId id ) {
 	IdMapType::const_iterator i = idMap.find( id );
-	if ( i != idMap.end() ) {
-		return i->second;
-	} else {
-		return 0;
-	} // if
+	return i != idMap.end() ? i->second : 0;
 }
 
-/* static class method */
 void Declaration::dumpIds( std::ostream &os ) {
 	for ( IdMapType::const_iterator i = idMap.begin(); i != idMap.end(); ++i ) {
Index: src/SynTree/Declaration.h
===================================================================
--- src/SynTree/Declaration.h	(revision 5f2f2d75adcd9f673ef8bda86f25d409347089be)
+++ src/SynTree/Declaration.h	(revision 68cd1ce1134527e1c664cfdf84df37a7025de8a7)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Jun  7 22:03:43 2015
-// Update Count     : 7
+// Last Modified On : Fri Jun 12 23:55:26 2015
+// Update Count     : 24
 //
 
@@ -21,18 +21,9 @@
 #include "Mutator.h"
 #include "Parser/LinkageSpec.h"
+#include "Parser/ParseNode.h"
 
 class Declaration {
   public:
-	enum StorageClass {  
-		NoStorageClass,
-		Extern,
-		Static,
-		Auto,
-		Register,
-		Inline,
-		Fortran,
-	};	
-
-	Declaration( const std::string &name, StorageClass sc, LinkageSpec::Type linkage );
+	Declaration( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage );
 	Declaration( const Declaration &other );
 	virtual ~Declaration();
@@ -40,6 +31,6 @@
 	const std::string &get_name() const { return name; }
 	void set_name( std::string newValue ) { name = newValue; }
-	StorageClass get_storageClass() const { return storageClass; }
-	void set_storageClass( StorageClass newValue ) { storageClass = newValue; }
+	DeclarationNode::StorageClass get_storageClass() const { return storageClass; }
+	void set_storageClass( DeclarationNode::StorageClass newValue ) { storageClass = newValue; }
 	LinkageSpec::Type get_linkage() const { return linkage; }
 	void set_linkage( LinkageSpec::Type newValue ) { linkage = newValue; }
@@ -53,11 +44,9 @@
 	virtual void printShort( std::ostream &os, int indent = 0 ) const = 0;
 
-	static const char* storageClassName[];  
-
 	static void dumpIds( std::ostream &os );
 	static Declaration *declFromId( UniqueId id );
   private:
 	std::string name;
-	StorageClass storageClass;
+	DeclarationNode::StorageClass storageClass;
 	LinkageSpec::Type linkage;
 	UniqueId uniqueId;
@@ -66,5 +55,5 @@
 class DeclarationWithType : public Declaration {
   public:
-	DeclarationWithType( const std::string &name, StorageClass sc, LinkageSpec::Type linkage );
+	DeclarationWithType( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage );
 	DeclarationWithType( const DeclarationWithType &other );
 	virtual ~DeclarationWithType();
@@ -86,5 +75,5 @@
 	typedef DeclarationWithType Parent;
   public:
-	ObjectDecl( const std::string &name, StorageClass sc, LinkageSpec::Type linkage, Expression *bitfieldWidth, Type *type, Initializer *init );
+	ObjectDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, Expression *bitfieldWidth, Type *type, Initializer *init );
 	ObjectDecl( const ObjectDecl &other );
 	virtual ~ObjectDecl();
@@ -112,5 +101,5 @@
 	typedef DeclarationWithType Parent;
   public:
-	FunctionDecl( const std::string &name, StorageClass sc, LinkageSpec::Type linkage, FunctionType *type, CompoundStmt *statements, bool isInline );
+	FunctionDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, FunctionType *type, CompoundStmt *statements, bool isInline );
 	FunctionDecl( const FunctionDecl &other );
 	virtual ~FunctionDecl();
@@ -144,5 +133,5 @@
 	typedef Declaration Parent;
   public:
-	NamedTypeDecl( const std::string &name, StorageClass sc, Type *type );
+	NamedTypeDecl( const std::string &name, DeclarationNode::StorageClass sc, Type *type );
 	NamedTypeDecl( const TypeDecl &other );
 	virtual ~NamedTypeDecl();
@@ -169,5 +158,5 @@
 	enum Kind { Any, Dtype, Ftype };
 
-	TypeDecl( const std::string &name, StorageClass sc, Type *type, Kind kind );
+	TypeDecl( const std::string &name, DeclarationNode::StorageClass sc, Type *type, Kind kind );
 	TypeDecl( const TypeDecl &other );
 
@@ -185,5 +174,5 @@
 	typedef NamedTypeDecl Parent;
   public:
-	TypedefDecl( const std::string &name, StorageClass sc, Type *type ) : Parent( name, sc, type ) {}
+	TypedefDecl( const std::string &name, DeclarationNode::StorageClass sc, Type *type ) : Parent( name, sc, type ) {}
 	TypedefDecl( const TypedefDecl &other ) : Parent( other ) {}
 
Index: src/SynTree/DeclarationWithType.cc
===================================================================
--- src/SynTree/DeclarationWithType.cc	(revision 5f2f2d75adcd9f673ef8bda86f25d409347089be)
+++ src/SynTree/DeclarationWithType.cc	(revision 68cd1ce1134527e1c664cfdf84df37a7025de8a7)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon May 18 08:20:23 2015
-// Update Count     : 2
+// Last Modified On : Sat Jun 13 08:08:07 2015
+// Update Count     : 3
 //
 
@@ -18,5 +18,5 @@
 #include "utility.h"
 
-DeclarationWithType::DeclarationWithType( const std::string &name, StorageClass sc, LinkageSpec::Type linkage )
+DeclarationWithType::DeclarationWithType( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage )
 		: Declaration( name, sc, linkage ) {
 }
Index: src/SynTree/FunctionDecl.cc
===================================================================
--- src/SynTree/FunctionDecl.cc	(revision 5f2f2d75adcd9f673ef8bda86f25d409347089be)
+++ src/SynTree/FunctionDecl.cc	(revision 68cd1ce1134527e1c664cfdf84df37a7025de8a7)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Jun  7 08:36:44 2015
-// Update Count     : 12
+// Last Modified On : Sat Jun 13 08:12:20 2015
+// Update Count     : 14
 //
 
@@ -21,5 +21,5 @@
 #include "utility.h"
 
-FunctionDecl::FunctionDecl( const std::string &name, StorageClass sc, LinkageSpec::Type linkage, FunctionType *type, CompoundStmt *statements, bool isInline )
+FunctionDecl::FunctionDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, FunctionType *type, CompoundStmt *statements, bool isInline )
 		: Parent( name, sc, linkage ), type( type ), statements( statements ), isInline( isInline ) {
 	// this is a brazen hack to force the function "main" to have C linkage
@@ -60,6 +60,6 @@
 		os << "inline ";
 	} // if
-	if ( get_storageClass() != NoStorageClass ) {
-		os << storageClassName[ get_storageClass() ] << ' ';
+	if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
+		os << DeclarationNode::storageName[ get_storageClass() ] << ' ';
 	} // if
 	if ( get_type() ) {
@@ -96,6 +96,6 @@
 		os << "inline ";
 	} // if
-	if ( get_storageClass() != NoStorageClass ) {
-		os << storageClassName[ get_storageClass() ] << ' ';
+	if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
+		os << DeclarationNode::storageName[ get_storageClass() ] << ' ';
 	} // if
 	if ( get_type() ) {
Index: src/SynTree/NamedTypeDecl.cc
===================================================================
--- src/SynTree/NamedTypeDecl.cc	(revision 5f2f2d75adcd9f673ef8bda86f25d409347089be)
+++ src/SynTree/NamedTypeDecl.cc	(revision 68cd1ce1134527e1c664cfdf84df37a7025de8a7)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Jun  7 08:36:09 2015
-// Update Count     : 2
+// Last Modified On : Sat Jun 13 08:13:55 2015
+// Update Count     : 3
 //
 
@@ -18,5 +18,5 @@
 #include "utility.h"
 
-NamedTypeDecl::NamedTypeDecl( const std::string &name, StorageClass sc, Type *base )
+NamedTypeDecl::NamedTypeDecl( const std::string &name, DeclarationNode::StorageClass sc, Type *base )
 	: Parent( name, sc, LinkageSpec::Cforall ), base( base ) {}
 
@@ -39,6 +39,6 @@
 		os << get_name() << ": ";
 	} // if
-	if ( get_storageClass() != NoStorageClass ) {
-		os << storageClassName[ get_storageClass() ] << ' ';
+	if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
+		os << DeclarationNode::storageName[ get_storageClass() ] << ' ';
 	} // if
 	os << typeString();
@@ -63,6 +63,6 @@
 		os << get_name() << ": ";
 	} // if
-	if ( get_storageClass() != NoStorageClass ) {
-		os << storageClassName[ get_storageClass() ] << ' ';
+	if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
+		os << DeclarationNode::storageName[ get_storageClass() ] << ' ';
 	} // if
 	os << typeString();
Index: src/SynTree/ObjectDecl.cc
===================================================================
--- src/SynTree/ObjectDecl.cc	(revision 5f2f2d75adcd9f673ef8bda86f25d409347089be)
+++ src/SynTree/ObjectDecl.cc	(revision 68cd1ce1134527e1c664cfdf84df37a7025de8a7)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jun  4 21:21:12 2015
-// Update Count     : 10
+// Last Modified On : Sat Jun 13 08:10:16 2015
+// Update Count     : 15
 //
 
@@ -20,5 +20,5 @@
 #include "utility.h"
 
-ObjectDecl::ObjectDecl( const std::string &name, StorageClass sc, LinkageSpec::Type linkage, Expression *bitfieldWidth, Type *type, Initializer *init )
+ObjectDecl::ObjectDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, Expression *bitfieldWidth, Type *type, Initializer *init )
 	: Parent( name, sc, linkage ), type( type ), init( init ), bitfieldWidth( bitfieldWidth ) {
 }
@@ -43,6 +43,6 @@
 	} // if
 
-	if ( get_storageClass() != NoStorageClass ) {
-		os << storageClassName[ get_storageClass() ] << ' ';
+	if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
+		os << DeclarationNode::storageName[ get_storageClass() ] << ' ';
 	} // if
 
@@ -74,6 +74,6 @@
 	} // if
 
-	if ( get_storageClass() != NoStorageClass ) {
-		os << storageClassName[ get_storageClass() ] << ' ';
+	if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
+		os << DeclarationNode::storageName[ get_storageClass() ] << ' ';
 	} // if
 
Index: src/SynTree/TypeDecl.cc
===================================================================
--- src/SynTree/TypeDecl.cc	(revision 5f2f2d75adcd9f673ef8bda86f25d409347089be)
+++ src/SynTree/TypeDecl.cc	(revision 68cd1ce1134527e1c664cfdf84df37a7025de8a7)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon May 18 11:02:11 2015
-// Update Count     : 1
+// Last Modified On : Sat Jun 13 08:14:35 2015
+// Update Count     : 2
 //
 
@@ -18,5 +18,5 @@
 #include "utility.h"
 
-TypeDecl::TypeDecl( const std::string &name, StorageClass sc, Type *type, Kind kind ) : Parent( name, sc, type ), kind( kind ) {
+TypeDecl::TypeDecl( const std::string &name, DeclarationNode::StorageClass sc, Type *type, Kind kind ) : Parent( name, sc, type ), kind( kind ) {
 }
 
