Index: src/SynTree/Declaration.h
===================================================================
--- src/SynTree/Declaration.h	(revision cbce2727f642c2a177c82c045248ba1923699527)
+++ src/SynTree/Declaration.h	(revision 59a75cb9ea2eb27783bd588c2518bca66e74bc31)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Andrew Beach
-// Last Modified On : Tus Aug  8 13:25:00 2017
-// Update Count     : 125
+// Last Modified On : Wed Aug  9 14:45:00 2017
+// Update Count     : 126
 //
 
@@ -27,4 +27,8 @@
 class Declaration : public BaseSyntaxNode {
   public:
+	std::string name;
+	LinkageSpec::Spec linkage;
+	bool extension = false;
+
 	Declaration( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage );
 	Declaration( const Declaration &other );
@@ -53,41 +57,12 @@
 	static void dumpIds( std::ostream &os );
 	static Declaration *declFromId( UniqueId id );
-  private:
-	std::string name;
+
+  private:
 	Type::StorageClasses storageClasses;
-	LinkageSpec::Spec linkage;
 	UniqueId uniqueId;
-	bool extension = false;
 };
 
 class DeclarationWithType : public Declaration {
   public:
-	DeclarationWithType( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage, const std::list< Attribute * > & attributes, Type::FuncSpecifiers fs );
-	DeclarationWithType( const DeclarationWithType &other );
-	virtual ~DeclarationWithType();
-
-	std::string get_mangleName() const { return mangleName; }
-	DeclarationWithType * set_mangleName( std::string newValue ) { mangleName = newValue; return this; }
-
-	std::string get_scopedMangleName() const { return mangleName + "_" + std::to_string(scopeLevel); }
-
-	int get_scopeLevel() const { return scopeLevel; }
-	DeclarationWithType * set_scopeLevel( int newValue ) { scopeLevel = newValue; return this; }
-
-	ConstantExpr *get_asmName() const { return asmName; }
-	DeclarationWithType * set_asmName( ConstantExpr *newValue ) { asmName = newValue; return this; }
-
-	std::list< Attribute * >& get_attributes() { return attributes; }
-	const std::list< Attribute * >& get_attributes() const { return attributes; }
-
-	Type::FuncSpecifiers get_funcSpec() const { return fs; }
-	//void set_functionSpecifiers( Type::FuncSpecifiers newValue ) { fs = newValue; }
-
-	virtual DeclarationWithType *clone() const = 0;
-	virtual DeclarationWithType *acceptMutator( Mutator &m ) = 0;
-
-	virtual Type *get_type() const = 0;
-	virtual void set_type(Type *) = 0;
-  private:
 	// this represents the type with all types and typedefs expanded it is generated by SymTab::Validate::Pass2
 	std::string mangleName;
@@ -97,4 +72,33 @@
 	ConstantExpr *asmName;
 	std::list< Attribute * > attributes;
+
+	DeclarationWithType( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage, const std::list< Attribute * > & attributes, Type::FuncSpecifiers fs );
+	DeclarationWithType( const DeclarationWithType &other );
+	virtual ~DeclarationWithType();
+
+	std::string get_mangleName() const { return mangleName; }
+	DeclarationWithType * set_mangleName( std::string newValue ) { mangleName = newValue; return this; }
+
+	std::string get_scopedMangleName() const { return mangleName + "_" + std::to_string(scopeLevel); }
+
+	int get_scopeLevel() const { return scopeLevel; }
+	DeclarationWithType * set_scopeLevel( int newValue ) { scopeLevel = newValue; return this; }
+
+	ConstantExpr *get_asmName() const { return asmName; }
+	DeclarationWithType * set_asmName( ConstantExpr *newValue ) { asmName = newValue; return this; }
+
+	std::list< Attribute * >& get_attributes() { return attributes; }
+	const std::list< Attribute * >& get_attributes() const { return attributes; }
+
+	Type::FuncSpecifiers get_funcSpec() const { return fs; }
+	//void set_functionSpecifiers( Type::FuncSpecifiers newValue ) { fs = newValue; }
+
+	virtual DeclarationWithType *clone() const = 0;
+	virtual DeclarationWithType *acceptMutator( Mutator &m ) = 0;
+
+	virtual Type *get_type() const = 0;
+	virtual void set_type(Type *) = 0;
+
+  private:
 	Type::FuncSpecifiers fs;
 };
@@ -103,4 +107,8 @@
 	typedef DeclarationWithType Parent;
   public:
+	Type *type;
+	Initializer *init;
+	Expression *bitfieldWidth;
+
 	ObjectDecl( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage, Expression *bitfieldWidth, Type *type, Initializer *init,
 				const std::list< Attribute * > attributes = std::list< Attribute * >(), Type::FuncSpecifiers fs = Type::FuncSpecifiers() );
@@ -122,8 +130,4 @@
 	virtual void print( std::ostream &os, int indent = 0 ) const;
 	virtual void printShort( std::ostream &os, int indent = 0 ) const;
-  private:
-	Type *type;
-	Initializer *init;
-	Expression *bitfieldWidth;
 };
 
@@ -131,4 +135,7 @@
 	typedef DeclarationWithType Parent;
   public:
+	FunctionType *type;
+	CompoundStmt *statements;
+
 	FunctionDecl( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage, FunctionType *type, CompoundStmt *statements,
 				  const std::list< Attribute * > attributes = std::list< Attribute * >(), Type::FuncSpecifiers fs = Type::FuncSpecifiers() );
@@ -149,7 +156,4 @@
 	virtual void print( std::ostream &os, int indent = 0 ) const;
 	virtual void printShort( std::ostream &os, int indent = 0 ) const;
-  private:
-	FunctionType *type;
-	CompoundStmt *statements;
 };
 
@@ -157,4 +161,8 @@
 	typedef Declaration Parent;
   public:
+	Type *base;
+	std::list< TypeDecl* > parameters;
+	std::list< DeclarationWithType* > assertions;
+
 	NamedTypeDecl( const std::string &name, Type::StorageClasses scs, Type *type );
 	NamedTypeDecl( const NamedTypeDecl &other );
@@ -171,9 +179,4 @@
 	virtual void print( std::ostream &os, int indent = 0 ) const;
 	virtual void printShort( std::ostream &os, int indent = 0 ) const;
-  protected:
-  private:
-	Type *base;
-	std::list< TypeDecl* > parameters;
-	std::list< DeclarationWithType* > assertions;
 };
 
@@ -182,4 +185,8 @@
   public:
 	enum Kind { Any, Dtype, Ftype, Ttype };
+
+	Type * init;
+	bool sized;
+
 	/// Data extracted from a type decl
 	struct Data {
@@ -216,6 +223,4 @@
   private:
 	Kind kind;
-	Type * init;
-	bool sized;
 };
 
@@ -237,27 +242,26 @@
 	typedef Declaration Parent;
   public:
-	AggregateDecl( const std::string &name, const std::list< Attribute * > & attributes = std::list< class Attribute * >(), LinkageSpec::Spec linkage = LinkageSpec::Cforall );
-	AggregateDecl( const AggregateDecl &other );
-	virtual ~AggregateDecl();
-
-	std::list<Declaration*>& get_members() { return members; }
-	std::list<TypeDecl*>& get_parameters() { return parameters; }
-
-	std::list< Attribute * >& get_attributes() { return attributes; }
-	const std::list< Attribute * >& get_attributes() const { return attributes; }
-
-	bool has_body() const { return body; }
-	AggregateDecl * set_body( bool body ) { AggregateDecl::body = body; return this; }
-
-	virtual void print( std::ostream &os, int indent = 0 ) const;
-	virtual void printShort( std::ostream &os, int indent = 0 ) const;
-  protected:
-	virtual std::string typeString() const = 0;
-
-  private:
 	std::list<Declaration*> members;
 	std::list<TypeDecl*> parameters;
 	bool body;
 	std::list< Attribute * > attributes;
+
+	AggregateDecl( const std::string &name, const std::list< Attribute * > & attributes = std::list< class Attribute * >(), LinkageSpec::Spec linkage = LinkageSpec::Cforall );
+	AggregateDecl( const AggregateDecl &other );
+	virtual ~AggregateDecl();
+
+	std::list<Declaration*>& get_members() { return members; }
+	std::list<TypeDecl*>& get_parameters() { return parameters; }
+
+	std::list< Attribute * >& get_attributes() { return attributes; }
+	const std::list< Attribute * >& get_attributes() const { return attributes; }
+
+	bool has_body() const { return body; }
+	AggregateDecl * set_body( bool body ) { AggregateDecl::body = body; return this; }
+
+	virtual void print( std::ostream &os, int indent = 0 ) const;
+	virtual void printShort( std::ostream &os, int indent = 0 ) const;
+  protected:
+	virtual std::string typeString() const = 0;
 };
 
@@ -333,4 +337,6 @@
 class AsmDecl : public Declaration {
   public:
+	AsmStmt *stmt;
+
 	AsmDecl( AsmStmt *stmt );
 	AsmDecl( const AsmDecl &other );
@@ -345,6 +351,4 @@
 	virtual void print( std::ostream &os, int indent = 0 ) const;
 	virtual void printShort( std::ostream &os, int indent = 0 ) const;
-  private:
-	AsmStmt *stmt;
 };
 
