[cig-commits] commit: Results of the Script O' Doom!!

Mercurial hg at geodynamics.org
Mon Feb 1 15:32:11 PST 2010


changeset:   699:94417947cddc
branch:      pcu_rejig
user:        MirkoVelic <------>
date:        Mon Nov 30 02:00:28 2009 +1100
files:       Base/Automation/src/CallGraph.c Base/Automation/src/CallGraph.h Base/Automation/src/Comm.c Base/Automation/src/Component.c Base/Automation/src/DocumentationComponentFactory.c Base/Automation/src/DocumentationComponentFactory.h Base/Automation/src/Finalise.c Base/Automation/src/HierarchyTable.c Base/Automation/src/Init.c Base/Automation/src/LiveComponentRegister.c Base/Automation/src/LiveComponentRegister.h Base/Automation/src/Meta.c Base/Automation/src/Stg_Component.c Base/Automation/src/Stg_Component.h Base/Automation/src/Stg_ComponentFactory.c Base/Automation/src/Stg_ComponentFactory.h Base/Automation/src/Stg_ComponentRegister.c Base/Automation/src/Stg_ComponentRegister.h Base/Automation/tests/CallGraphSuite.c Base/Automation/tests/CommSuite.c Base/Automation/tests/ComponentCopySuite.c Base/Automation/tests/HierarchyTableSuite.c Base/Container/src/AbsArray.c Base/Container/src/BTree.c Base/Container/src/BTreeIterator.c Base/Container/src/BTreeNode.c Base/Container/src/ChunkArray.c Base/Container/src/Finalise.c Base/Container/src/HashTable.c Base/Container/src/HashTable.h Base/Container/src/Heap.c Base/Container/src/Heap.h Base/Container/src/IArray.c Base/Container/src/IMap.c Base/Container/src/IMapIter.c Base/Container/src/ISet.c Base/Container/src/ISetIter.c Base/Container/src/IndexMap.c Base/Container/src/IndexMap.h Base/Container/src/IndexSet.c Base/Container/src/IndexSet.h Base/Container/src/Init.c Base/Container/src/Iter.c Base/Container/src/LinkedList.c Base/Container/src/LinkedList.h Base/Container/src/LinkedListIterator.c Base/Container/src/LinkedListIterator.h Base/Container/src/LinkedListNode.c Base/Container/src/List.c Base/Container/src/List.h Base/Container/src/MPIRoutines.c Base/Container/src/MaxHeap.c Base/Container/src/MaxHeap.h Base/Container/src/MemoryPool.c Base/Container/src/MemoryPool.h Base/Container/src/PtrMap.c Base/Container/src/PtrMap.h Base/Container/src/PtrSet.c Base/Container/src/PtrSet.h Base/Container/src/RangeSet.c Base/Container/src/RangeSet.h Base/Container/src/STree.c Base/Container/src/STreeMap.c Base/Container/src/Set.c Base/Container/src/Set.h Base/Container/src/UIntMap.c Base/Container/src/UIntMap.h Base/Container/tests/BTreeSuite.c Base/Container/tests/HashTableSuite.c Base/Container/tests/IArraySuite.c Base/Container/tests/IMapSuite.c Base/Container/tests/ISetSuite.c Base/Container/tests/IndexMapSuite.c Base/Container/tests/IndexSetSuite.c Base/Container/tests/LinkedListIteratorSuite.c Base/Container/tests/LinkedListSuite.c Base/Container/tests/ListSuite.c Base/Container/tests/MPIRoutinesSuite.c Base/Container/tests/MaxHeapSuite.c Base/Container/tests/MemoryPoolSuite.c Base/Container/tests/PtrMapSuite.c Base/Container/tests/PtrSetSuite.c Base/Container/tests/RangeSetSuite.c Base/Container/tests/STreeMapSuite.c Base/Container/tests/STreeSuite.c Base/Container/tests/SetSuite.c Base/Container/tests/UIntMapSuite.c Base/Context/src/AbstractContext.c Base/Context/src/AbstractContext.h Base/Context/src/Codelet.c Base/Context/src/Codelet.h Base/Context/src/CompositeVC.c Base/Context/src/CompositeVC.h Base/Context/src/ConditionFunction.c Base/Context/src/ConditionFunction.h Base/Context/src/ConditionFunction_Register.c Base/Context/src/ConditionFunction_Register.h Base/Context/src/ContextEntryPoint.c Base/Context/src/ContextEntryPoint.h Base/Context/src/DictionaryCheck.c Base/Context/src/DynamicVC.c Base/Context/src/DynamicVC.h Base/Context/src/Finalise.c Base/Context/src/Init.c Base/Context/src/SetVC.c Base/Context/src/SetVC.h Base/Context/src/Variable.c Base/Context/src/Variable.h Base/Context/src/VariableAllVC.c Base/Context/src/VariableAllVC.h Base/Context/src/VariableCondition.c Base/Context/src/VariableCondition.h Base/Context/src/VariableCondition_Register.c Base/Context/src/VariableCondition_Register.h Base/Context/src/VariableDumpStream.c Base/Context/src/VariableDumpStream.h Base/Context/src/Variable_Register.c Base/Context/src/Variable_Register.h Base/Context/tests/AbstractContextSuite.c Base/Context/tests/ConditionFunctionSuite.c Base/Context/tests/DictionaryCheckSuite.c Base/Context/tests/LiveComponentRegisterSuite.c Base/Context/tests/SetVC_Suite.c Base/Context/tests/Stg_MetaSuite.c Base/Context/tests/VariableAllVC_Suite.c Base/Context/tests/VariableDumpStreamSuite.c Base/Context/tests/VariableSuite.c Base/Context/tests/Variable_RegisterSuite.c Base/Extensibility/distributedtests/MockContext.c Base/Extensibility/distributedtests/testDistributedPlugin.c Base/Extensibility/distributedtests/testPlugin.c Base/Extensibility/distributedtests/testplugins/LocalPlugin/LocalPlugin.c Base/Extensibility/distributedtests/testplugins/LocalPluginDep/LocalPlugin1.c Base/Extensibility/distributedtests/testplugins/LocalPluginDep/LocalPlugin2.c Base/Extensibility/distributedtests/testplugins/RemotePlugin1.c Base/Extensibility/src/ClassHook.c Base/Extensibility/src/ClassHook.h Base/Extensibility/src/ClassPtrExtensionInfo.c Base/Extensibility/src/ClassPtrExtensionInfo.h Base/Extensibility/src/EntryPoint.c Base/Extensibility/src/EntryPoint.h Base/Extensibility/src/EntryPoint_Register.c Base/Extensibility/src/EntryPoint_Register.h Base/Extensibility/src/ExtensionInfo.c Base/Extensibility/src/ExtensionInfo.h Base/Extensibility/src/ExtensionManager.c Base/Extensibility/src/ExtensionManager.h Base/Extensibility/src/ExtensionManager_Register.c Base/Extensibility/src/ExtensionManager_Register.h Base/Extensibility/src/Finalise.c Base/Extensibility/src/Hook.c Base/Extensibility/src/Hook.h Base/Extensibility/src/Init.c Base/Extensibility/src/Module.c Base/Extensibility/src/Module.h Base/Extensibility/src/ModulesManager.c Base/Extensibility/src/ModulesManager.h Base/Extensibility/src/Plugin.c Base/Extensibility/src/Plugin.h Base/Extensibility/src/PluginsManager.c Base/Extensibility/src/PluginsManager.h Base/Extensibility/src/SimpleExtensionInfo.c Base/Extensibility/src/SimpleExtensionInfo.h Base/Extensibility/src/Toolbox.c Base/Extensibility/src/Toolbox.h Base/Extensibility/src/ToolboxesManager.c Base/Extensibility/src/ToolboxesManager.h Base/Extensibility/tests/EntryPointSuite.c Base/Extensibility/tests/ExtensionSuite.c Base/FlattenXML/src/main.c Base/Foundation/src/Class.c Base/Foundation/src/Class.h Base/Foundation/src/CommonRoutines.c Base/Foundation/src/Finalise.c Base/Foundation/src/Init.c Base/Foundation/src/Log.c Base/Foundation/src/MemMonitor.c Base/Foundation/src/Memory.c Base/Foundation/src/MemoryField.c Base/Foundation/src/MemoryPointer.c Base/Foundation/src/MemoryReport.c Base/Foundation/src/NamedObject_Register.c Base/Foundation/src/NamedObject_Register.h Base/Foundation/src/NewClass.c Base/Foundation/src/NewObject.c Base/Foundation/src/Numerics.c Base/Foundation/src/Object.c Base/Foundation/src/Object.h Base/Foundation/src/ObjectAdaptor.c Base/Foundation/src/ObjectAdaptor.h Base/Foundation/src/ObjectList.c Base/Foundation/src/ObjectList.h Base/Foundation/src/PrimitiveObject.c Base/Foundation/src/PrimitiveObject.h Base/Foundation/src/TestSuite.c Base/Foundation/src/TestSuite.h Base/Foundation/src/TimeMonitor.c Base/Foundation/src/debug.c Base/Foundation/tests/CommonRoutinesSuite.c Base/Foundation/tests/MemMonitorSuite.c Base/Foundation/tests/MemoryReportSuite.c Base/Foundation/tests/MemorySuite.c Base/Foundation/tests/NamedObject_Register2Suite.c Base/Foundation/tests/NamedObject_RegisterSuite.c Base/Foundation/tests/ObjectListSuite.c Base/Foundation/tests/PrimitiveObjectSuite.c Base/Foundation/tests/Stg_asprintfSuite.c Base/Foundation/tests/TimeMonitorSuite.c Base/IO/src/BinaryStream.c Base/IO/src/BinaryStream.h Base/IO/src/CFile.c Base/IO/src/CFile.h Base/IO/src/CStream.c Base/IO/src/CStream.h Base/IO/src/CmdLineArgs.c Base/IO/src/Dictionary.c Base/IO/src/Dictionary.h Base/IO/src/Dictionary_Entry.c Base/IO/src/Dictionary_Entry_Value.c Base/IO/src/Finalise.c Base/IO/src/IO_Handler.c Base/IO/src/IO_Handler.h Base/IO/src/IndentFormatter.c Base/IO/src/IndentFormatter.h Base/IO/src/Init.c Base/IO/src/Journal.c Base/IO/src/JournalFile.c Base/IO/src/JournalFile.h Base/IO/src/LineFormatter.c Base/IO/src/LineFormatter.h Base/IO/src/MPIFile.c Base/IO/src/MPIFile.h Base/IO/src/MPIStream.c Base/IO/src/MPIStream.h Base/IO/src/PathUtils.c Base/IO/src/RankFormatter.c Base/IO/src/RankFormatter.h Base/IO/src/Stream.c Base/IO/src/Stream.h Base/IO/src/StreamFormatter.c Base/IO/src/StreamFormatter.h Base/IO/src/XML_IO_Handler.c Base/IO/src/XML_IO_Handler.h Base/IO/src/shortcuts.c Base/IO/src/stgmessaging.c Base/IO/tests/DictionarySuite.c Base/IO/tests/IO_HandlerSuite.c Base/IO/tests/JournalSuite.c Base/IO/tests/MPIStreamSuite.c Base/IO/tests/PathUtilsSuite.c Base/IO/tests/RankFormatterSuite.c Base/ListPlugins/src/main.c Base/Python/Bindings/Context/bindings.c Base/Python/Bindings/Context/init.c Base/Python/Bindings/Context/misc.c Base/Python/Bindings/Dictionary/bindings.c Base/Python/Bindings/Dictionary/init.c Base/Python/Bindings/Dictionary/misc.c Base/src/Finalise.c Base/src/Init.c Base/tests/testLibBase.c Regresstor/ClientPrograms/checkDiff/main.c Regresstor/ClientPrograms/checkExecution/main.c Regresstor/ClientPrograms/endRun/main.c Regresstor/ClientPrograms/startRun/main.c Regresstor/ClientPrograms/submitBuild/main.c Regresstor/libRegresstor/src/FailedSubTest.c Regresstor/libRegresstor/src/RegressionTest.c Regresstor/libRegresstor/src/UnitTest.c Utils/src/Progress.c Utils/src/Progress.h Utils/tests/ProgressSuite.c compatibility/mpipython/main.c libStGermain/Python/Bindings/General/bindings.c libStGermain/Python/Bindings/General/init.c libStGermain/Python/Bindings/General/misc.c libStGermain/Python/Bindings/MPI/bindings.c libStGermain/Python/Bindings/MPI/init.c libStGermain/Python/Bindings/MPI/misc.c libStGermain/dynamic/dummy.c libStGermain/src/Finalise.c libStGermain/src/Init.c libStGermain/src/main.c libStGermain/static/dummy.c libStGermain/tests/LibStGermainSuite.c pcu/src/checks.c pcu/src/filename.c pcu/src/pcuassert.c pcu/src/runner.c pcu/src/source.c pcu/src/suite.c pcu/src/test.c pcu/src/textoutput.c pcu/src/utils.c src/main.c
description:
Results of the Script O' Doom!!
The entire Private _New functions inheritance system has been reworked to use macros so
that all arguments to these functions are now consistent and clear.
All private _New functions that have a parent now use consistent macro-defined arguments.
All existing macros have been re-written to be consistent with new macros.
All Public _New functions have had their arguments to private _New functions brought out of
the private functions and into the body of the Public functions so that the types
and variables that the private functions use is obvious; The private functions inside the public
functions now also have a macro-defined argument.

All the PCU tests passed.

StgFEM Regression Tests:
Before: 2 failed
After : 1 failed (same 1 of 2)

PICellerator Regression Tests:
Before: 0 failed
After : 0 failed

Underworld Regression Tests:
Before: 0 failed ( 1 command failed to execute )
After : 0 failed ( 1 command failed to execute; same command)

Experimental Regression Tests:
Before: 1 failed
After : 1 failed (same test)

Mirko


diff -r 49bcf68b0315 -r 94417947cddc Base/Automation/src/CallGraph.c
--- a/Base/Automation/src/CallGraph.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Automation/src/CallGraph.c	Mon Nov 30 02:00:28 2009 +1100
@@ -54,12 +54,14 @@ Stg_CallGraph* stgCallGraph = 0;
 
 
 Stg_CallGraph* Stg_CallGraph_New() {
-	return _Stg_CallGraph_New(
-		sizeof(Stg_CallGraph),
-		Stg_CallGraph_Type,
-		_Stg_CallGraph_Delete,
-		_Stg_CallGraph_Print,
-		_Stg_CallGraph_Copy );
+	/* Variables set in this function */
+	SizeT                      _sizeOfSelf = sizeof(Stg_CallGraph);
+	Type                              type = Stg_CallGraph_Type;
+	Stg_Class_DeleteFunction*      _delete = _Stg_CallGraph_Delete;
+	Stg_Class_PrintFunction*        _print = _Stg_CallGraph_Print;
+	Stg_Class_CopyFunction*          _copy = _Stg_CallGraph_Copy;
+
+	return _Stg_CallGraph_New(  STG_CALLGRAPH_PASSARGS  );
 }
 
 void Stg_CallGraph_Init( void* callGraph ) {
@@ -80,12 +82,7 @@ void Stg_CallGraph_Init( void* callGraph
 	_Stg_CallGraph_Init( self );
 };
 
-Stg_CallGraph* _Stg_CallGraph_New( 
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*			_delete,
-		Stg_Class_PrintFunction*			_print, 
-		Stg_Class_CopyFunction*				_copy )
+Stg_CallGraph* _Stg_CallGraph_New(  STG_CALLGRAPH_DEFARGS  )
 {
 	Stg_CallGraph* self;
 	
@@ -94,7 +91,7 @@ Stg_CallGraph* _Stg_CallGraph_New(
 		_sizeOfSelf >= sizeof(Stg_CallGraph), 
 		Journal_Register( Error_Type, Stg_CallGraph_Type ), 
 		"Attempting to construct an object that is smaller than this class" );
-	self = (Stg_CallGraph*)_Stg_Class_New( _sizeOfSelf, type, _delete, _print, _copy );
+	self = (Stg_CallGraph*)_Stg_Class_New(  STG_CLASS_PASSARGS  );
 	
 	/* General info */
 	
@@ -354,3 +351,5 @@ void Stg_CallGraph_Pop( void* callGraph 
 	self->_stack = oldStack->pop;
 	Memory_Free( oldStack );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Automation/src/CallGraph.h
--- a/Base/Automation/src/CallGraph.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Automation/src/CallGraph.h	Mon Nov 30 02:00:28 2009 +1100
@@ -89,12 +89,18 @@
 	void Stg_CallGraph_Init( void* callGraph );
 	
 	/* Creation implementation */
-	Stg_CallGraph* _Stg_CallGraph_New( 
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*			_delete,
-		Stg_Class_PrintFunction*			_print, 
-		Stg_Class_CopyFunction*				_copy );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define STG_CALLGRAPH_DEFARGS \
+                STG_CLASS_DEFARGS
+
+	#define STG_CALLGRAPH_PASSARGS \
+                STG_CLASS_PASSARGS
+
+	Stg_CallGraph* _Stg_CallGraph_New(  STG_CALLGRAPH_DEFARGS  );
 	
 	
 	/* Class Administration members ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
@@ -127,3 +133,4 @@
 	void Stg_CallGraph_Pop( void* callGraph );
 	
 #endif /* __Base_Automation_Stg_CallGraph_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Automation/src/Comm.c
--- a/Base/Automation/src/Comm.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Automation/src/Comm.c	Mon Nov 30 02:00:28 2009 +1100
@@ -330,3 +330,5 @@ void Comm_AlltoallEnd( const void* _self
    self->itmSize = 0;
    self->srcSizes = NULL;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Automation/src/Component.c
--- a/Base/Automation/src/Component.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Automation/src/Component.c	Mon Nov 30 02:00:28 2009 +1100
@@ -116,3 +116,5 @@ Bool Component_HasExecuted( void* self )
    assert( Class_IsSuper( self, stgComponent ) );
    return ((stgComponent*)self)->hasExecuted;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Automation/src/DocumentationComponentFactory.c
--- a/Base/Automation/src/DocumentationComponentFactory.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Automation/src/DocumentationComponentFactory.c	Mon Nov 30 02:00:28 2009 +1100
@@ -63,79 +63,53 @@ const Type DocumentationComponentFactory
 */
 	
 DocumentationComponentFactory* DocumentationComponentFactory_New( ) {
+	/* Variables set in this function */
+	SizeT                                                                        _sizeOfSelf = sizeof( DocumentationComponentFactory );
+	Type                                                                                type = DocumentationComponentFactory_Type;
+	Stg_Class_DeleteFunction*                                                        _delete = _DocumentationComponentFactory_Delete;
+	Stg_Class_PrintFunction*                                                          _print = _DocumentationComponentFactory_Print;
+	Stg_ComponentFactory_GetDoubleFunc*                                            getDouble = _DocumentationComponentFactory_GetDouble;
+	Stg_ComponentFactory_GetIntFunc*                                                  getInt = _DocumentationComponentFactory_GetInt;
+	Stg_ComponentFactory_GetUnsignedIntFunc*                                  getUnsignedInt = _DocumentationComponentFactory_GetUnsignedInt;
+	Stg_ComponentFactory_GetBoolFunc*                                                getBool = _DocumentationComponentFactory_GetBool;
+	Stg_ComponentFactory_GetStringFunc*                                            getString = _DocumentationComponentFactory_GetString;
+	Stg_ComponentFactory_GetRootDictDoubleFunc*                            getRootDictDouble = _DocumentationComponentFactory_GetRootDictDouble;
+	Stg_ComponentFactory_GetRootDictIntFunc*                                  getRootDictInt = _DocumentationComponentFactory_GetRootDictInt;
+	Stg_ComponentFactory_GetRootDictUnsignedIntFunc*                  getRootDictUnsignedInt = _DocumentationComponentFactory_GetRootDictUnsignedInt;
+	Stg_ComponentFactory_GetRootDictBoolFunc*                                getRootDictBool = _DocumentationComponentFactory_GetRootDictBool;
+	Stg_ComponentFactory_GetRootDictStringFunc*                            getRootDictString = _DocumentationComponentFactory_GetRootDictString;
+	Stg_ComponentFactory_ConstructByNameFunc*                                constructByName = _DocumentationComponentFactory_ConstructByName;
+	Stg_ComponentFactory_ConstructByKeyFunc*                                  constructByKey = _DocumentationComponentFactory_ConstructByKey;
+	Stg_ComponentFactory_ConstructByNameWithKeyFallbackFunc*  constructByNameWithKeyFallback = _DocumentationComponentFactory_ConstructByNameWithKeyFallback;
+	Stg_ComponentFactory_ConstructByListFunc*                                constructByList = _DocumentationComponentFactory_ConstructByList;
+
+	/* Variables that are set to ZERO are variables that will be set either by the current _New function or another parent _New function further up the hierachy */
+	Dictionary*       rootDict = ZERO;
+	Dictionary*  componentDict = ZERO;
+
 	DocumentationComponentFactory *self = NULL;
 
-	self = _DocumentationComponentFactory_New( 
-			sizeof( DocumentationComponentFactory ), 
-			DocumentationComponentFactory_Type,
-			_DocumentationComponentFactory_Delete,
-			_DocumentationComponentFactory_Print,
-			NULL,
-			_DocumentationComponentFactory_GetDouble,
-			_DocumentationComponentFactory_GetInt,
-			_DocumentationComponentFactory_GetUnsignedInt,
-			_DocumentationComponentFactory_GetBool,
-			_DocumentationComponentFactory_GetString,
-			_DocumentationComponentFactory_GetRootDictDouble,
-			_DocumentationComponentFactory_GetRootDictInt,
-			_DocumentationComponentFactory_GetRootDictUnsignedInt,
-			_DocumentationComponentFactory_GetRootDictBool,
-			_DocumentationComponentFactory_GetRootDictString,
-			_DocumentationComponentFactory_ConstructByName,
-			_DocumentationComponentFactory_ConstructByKey,
-			_DocumentationComponentFactory_ConstructByNameWithKeyFallback,
-			_DocumentationComponentFactory_ConstructByList );
+	/* The following terms are parameters that have been passed into or defined in this function but are being set before being passed onto the parent */
+	Stg_Class_CopyFunction*  _copy = NULL;
+
+	self = _DocumentationComponentFactory_New(  DOCUMENTATIONCOMPONENTFACTORY_PASSARGS  );
 
 	return self;
 }
 
 /* Creation implementation */
-DocumentationComponentFactory* _DocumentationComponentFactory_New( 
-		SizeT                                                    _sizeOfSelf,
-		Type                                                     type,
-		Stg_Class_DeleteFunction*                                _delete,
-		Stg_Class_PrintFunction*                                 _print,
-		Stg_Class_CopyFunction*                                  _copy,
-		Stg_ComponentFactory_GetDoubleFunc*                      getDouble,
-		Stg_ComponentFactory_GetIntFunc*                         getInt,
-		Stg_ComponentFactory_GetUnsignedIntFunc*                 getUnsignedInt,
-		Stg_ComponentFactory_GetBoolFunc*                        getBool,
-		Stg_ComponentFactory_GetStringFunc*                      getString,
-		Stg_ComponentFactory_GetRootDictDoubleFunc*              getRootDictDouble,
-		Stg_ComponentFactory_GetRootDictIntFunc*                 getRootDictInt,
-		Stg_ComponentFactory_GetRootDictUnsignedIntFunc*         getRootDictUnsignedInt,
-		Stg_ComponentFactory_GetRootDictBoolFunc*                getRootDictBool,
-		Stg_ComponentFactory_GetRootDictStringFunc*              getRootDictString,
-		Stg_ComponentFactory_ConstructByNameFunc*                constructByName,
-		Stg_ComponentFactory_ConstructByKeyFunc*                 constructByKey,
-		Stg_ComponentFactory_ConstructByNameWithKeyFallbackFunc* constructByNameWithKeyFallback,
-		Stg_ComponentFactory_ConstructByListFunc*                constructByList )
+DocumentationComponentFactory* _DocumentationComponentFactory_New(  DOCUMENTATIONCOMPONENTFACTORY_DEFARGS  )
 {
 	DocumentationComponentFactory *self = NULL;
 
 	assert( _sizeOfSelf >= sizeof( DocumentationComponentFactory ) );
-	self = (DocumentationComponentFactory*) _Stg_ComponentFactory_New( 
-			_sizeOfSelf,
-			type, 
-			_delete,
-			_print,
-			_copy,
-			getDouble,
-			getInt,
-			getUnsignedInt,
-			getBool,
-			getString,
-			getRootDictDouble,
-			getRootDictInt,
-			getRootDictUnsignedInt,
-			getRootDictBool,
-			getRootDictString,
-			constructByName,
-			constructByKey,
-			constructByNameWithKeyFallback,
-			constructByList,
-			NULL,
-			NULL );
+	/* The following terms are parameters that have been passed into this function but are being set before being passed onto the parent */
+	/* This means that any values of these parameters that are passed into this function are not passed onto the parent function
+	   and so should be set to ZERO in any children of this class. */
+	rootDict      = NULL;
+	componentDict = NULL;
+
+	self = (DocumentationComponentFactory*) _Stg_ComponentFactory_New(  STG_COMPONENTFACTORY_PASSARGS  );
 
 	return self;
 }
@@ -329,3 +303,5 @@ void DocumentationComponentFactory_Docum
 	Stg_Class_Delete( component );
 	Stream_UnIndent( self->infoStream );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Automation/src/DocumentationComponentFactory.h
--- a/Base/Automation/src/DocumentationComponentFactory.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Automation/src/DocumentationComponentFactory.h	Mon Nov 30 02:00:28 2009 +1100
@@ -54,26 +54,18 @@
 	/* Creation implementation */
 	DocumentationComponentFactory* DocumentationComponentFactory_New( );
 	
-	DocumentationComponentFactory* _DocumentationComponentFactory_New( 
-		SizeT                                                    _sizeOfSelf,
-		Type                                                     type,
-		Stg_Class_DeleteFunction*                                _delete,
-		Stg_Class_PrintFunction*                                 _print,
-		Stg_Class_CopyFunction*                                  _copy,
-		Stg_ComponentFactory_GetDoubleFunc*                      getDouble,
-		Stg_ComponentFactory_GetIntFunc*                         getInt,
-		Stg_ComponentFactory_GetUnsignedIntFunc*                 getUnsignedInt,
-		Stg_ComponentFactory_GetBoolFunc*                        getBool,
-		Stg_ComponentFactory_GetStringFunc*                      getString,
-		Stg_ComponentFactory_GetRootDictDoubleFunc*              getRootDictDouble,
-		Stg_ComponentFactory_GetRootDictIntFunc*                 getRootDictInt,
-		Stg_ComponentFactory_GetRootDictUnsignedIntFunc*         getRootDictUnsignedInt,
-		Stg_ComponentFactory_GetRootDictBoolFunc*                getRootDictBool,
-		Stg_ComponentFactory_GetRootDictStringFunc*              getRootDictString,
-		Stg_ComponentFactory_ConstructByNameFunc*                constructByName,
-		Stg_ComponentFactory_ConstructByKeyFunc*                 constructByKey,
-		Stg_ComponentFactory_ConstructByNameWithKeyFallbackFunc* constructByNameWithKeyFallback,
-		Stg_ComponentFactory_ConstructByListFunc*                constructByList );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define DOCUMENTATIONCOMPONENTFACTORY_DEFARGS \
+                STG_COMPONENTFACTORY_DEFARGS
+
+	#define DOCUMENTATIONCOMPONENTFACTORY_PASSARGS \
+                STG_COMPONENTFACTORY_PASSARGS
+
+	DocumentationComponentFactory* _DocumentationComponentFactory_New(  DOCUMENTATIONCOMPONENTFACTORY_DEFARGS  );
 	
 	/*-----------------------------------------------------------------------------------------------------------------
 	** Virtual functions
@@ -140,3 +132,4 @@
 	void DocumentationComponentFactory_DocumentType( void* cf, Type type ) ;
 
 #endif /* __Base_Automation_DocumentationComponentFactory_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Automation/src/Finalise.c
--- a/Base/Automation/src/Finalise.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Automation/src/Finalise.c	Mon Nov 30 02:00:28 2009 +1100
@@ -53,3 +53,5 @@ Bool BaseAutomation_Finalise( void ) {
 
 	return True;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Automation/src/HierarchyTable.c
--- a/Base/Automation/src/HierarchyTable.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Automation/src/HierarchyTable.c	Mon Nov 30 02:00:28 2009 +1100
@@ -190,3 +190,5 @@ Type HierarchyTable_GetTypePtrFromName( 
 	}
 	return NULL;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Automation/src/Init.c
--- a/Base/Automation/src/Init.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Automation/src/Init.c	Mon Nov 30 02:00:28 2009 +1100
@@ -69,3 +69,5 @@ Bool BaseAutomation_Init( int* argc, cha
 
 	return True;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Automation/src/LiveComponentRegister.c
--- a/Base/Automation/src/LiveComponentRegister.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Automation/src/LiveComponentRegister.c	Mon Nov 30 02:00:28 2009 +1100
@@ -54,30 +54,30 @@ const Type LiveComponentRegister_Type = 
 const Type LiveComponentRegister_Type = "LiveComponentRegister";
 LiveComponentRegister* stgLiveComponentRegister = NULL;
 
-LiveComponentRegister* _LiveComponentRegister_New( 
-		SizeT					_sizeOfSelf, 
-		Type					type,
-		Stg_Class_DeleteFunction*			_delete,
-		Stg_Class_PrintFunction*			_print, 
-		Stg_Class_CopyFunction*			_copy )
+LiveComponentRegister* _LiveComponentRegister_New(  LIVECOMPONENTREGISTER_DEFARGS  )
 {
 	LiveComponentRegister *self = NULL;
 
 	assert( _sizeOfSelf >= sizeof( LiveComponentRegister ) );
-	self = (LiveComponentRegister*) _Stg_Class_New( _sizeOfSelf, type, _delete, _print, _copy );
+	self = (LiveComponentRegister*) _Stg_Class_New(  STG_CLASS_PASSARGS  );
 	
 	return self;
 }
 	
 LiveComponentRegister* LiveComponentRegister_New(  )
 {
+	/* Variables set in this function */
+	SizeT                      _sizeOfSelf = sizeof( LiveComponentRegister );
+	Type                              type = LiveComponentRegister_Type;
+	Stg_Class_DeleteFunction*      _delete = _LiveComponentRegister_Delete;
+	Stg_Class_PrintFunction*        _print = _LiveComponentRegister_Print;
+
 	LiveComponentRegister *self = NULL;
 
-	self = _LiveComponentRegister_New( sizeof( LiveComponentRegister ), 
-					LiveComponentRegister_Type,
-					_LiveComponentRegister_Delete,
-					_LiveComponentRegister_Print,
-					NULL);
+	/* The following terms are parameters that have been passed into or defined in this function but are being set before being passed onto the parent */
+	Stg_Class_CopyFunction*  _copy = NULL;
+
+	self = _LiveComponentRegister_New(  LIVECOMPONENTREGISTER_PASSARGS  );
 
 	LiveComponentRegister_Init( self );
 
@@ -245,3 +245,5 @@ void LiveComponentRegister_DestroyAll( v
 	}
 
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Automation/src/LiveComponentRegister.h
--- a/Base/Automation/src/LiveComponentRegister.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Automation/src/LiveComponentRegister.h	Mon Nov 30 02:00:28 2009 +1100
@@ -55,13 +55,18 @@
 	** Constructor
 	*/
 		/* Creation implementation */
-	LiveComponentRegister* _LiveComponentRegister_New( 
-		SizeT					_sizeOfSelf, 
-		Type					type,
-		Stg_Class_DeleteFunction*			_delete,
-		Stg_Class_PrintFunction*			_print, 
-		Stg_Class_CopyFunction*			_copy
-		);
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define LIVECOMPONENTREGISTER_DEFARGS \
+                STG_CLASS_DEFARGS
+
+	#define LIVECOMPONENTREGISTER_PASSARGS \
+                STG_CLASS_PASSARGS
+
+	LiveComponentRegister* _LiveComponentRegister_New(  LIVECOMPONENTREGISTER_DEFARGS  );
 	
 	LiveComponentRegister* LiveComponentRegister_New(  );
 
@@ -102,3 +107,4 @@
 
 	void LiveComponentRegister_PrintSimilar( void* liveComponentRegister, Name name, Stream* stream, unsigned int number ) ;
 #endif /* __Base_Automation_LiveComponentRegister_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Automation/src/Meta.c
--- a/Base/Automation/src/Meta.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Automation/src/Meta.c	Mon Nov 30 02:00:28 2009 +1100
@@ -230,3 +230,5 @@ void Stg_Meta_Print( Dictionary* diction
 	Stream_UnIndent( stream );
 }
 
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Automation/src/Stg_Component.c
--- a/Base/Automation/src/Stg_Component.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Automation/src/Stg_Component.c	Mon Nov 30 02:00:28 2009 +1100
@@ -53,26 +53,13 @@ const Type Stg_Component_Type = "Stg_Com
 const Type Stg_Component_Type = "Stg_Component";
 
 
-Stg_Component* _Stg_Component_New( 
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*			_delete,
-		Stg_Class_PrintFunction*			_print, 
-		Stg_Class_CopyFunction*				_copy, 
-		Stg_Component_DefaultConstructorFunction*	_defaultConstructor,
-		Stg_Component_ConstructFunction*		_construct,
-		Stg_Component_BuildFunction*			_build,
-		Stg_Component_InitialiseFunction*		_initialise,
-		Stg_Component_ExecuteFunction*			_execute,
-		Stg_Component_DestroyFunction*			_destroy,
-		Name						name,
-		AllocationType					nameAllocationType )
+Stg_Component* _Stg_Component_New(  STG_COMPONENT_DEFARGS  )
 {
 	Stg_Component* self;
 	
 	/* Allocate memory */
 	assert( _sizeOfSelf >= sizeof(Stg_Component) );
-	self = (Stg_Component*)_Stg_Object_New( _sizeOfSelf, type, _delete, _print, _copy, name, nameAllocationType );
+	self = (Stg_Component*)_Stg_Object_New(  STG_OBJECT_PASSARGS  );
 	
 	/* General info */
 	
@@ -494,3 +481,5 @@ void Stg_Component_SetupStreamFromDictio
 											
 }
 
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Automation/src/Stg_Component.h
--- a/Base/Automation/src/Stg_Component.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Automation/src/Stg_Component.h	Mon Nov 30 02:00:28 2009 +1100
@@ -83,32 +83,35 @@
 		Type													destroyType;
 	struct Stg_Component { __Stg_Component };
 
-	#define STG_COMPONENT_DEFARGS \
-		STG_CLASS_DEFARGS, \
-		Stg_Component_DefaultConstructorFunction*	_defaultConstructor, \
-		Stg_Component_ConstructFunction*				_construct, \
-		Stg_Component_BuildFunction*					_build, \
-		Stg_Component_InitialiseFunction*			_initialise, \
-		Stg_Component_ExecuteFunction*				_execute, \
-		Stg_Component_DestroyFunction*				_destroy, \
-		Name													name, \
-		AllocationType										nameAllocationType
 
-	#define STG_COMPONENT_PASSARGS \
-		STG_CLASS_PASSARGS, \
-			_defaultConstructor, \
-			_construct, \
-			_build, \
-			_initialise, \
-			_execute, \
-			_destroy, \
-			name, \
-			nameAllocationType
 	
 	/* No Stg_Component_New or Stg_Component_Init as this is an abstract class */
 	
 	/* Creation implementation */
-	Stg_Component* _Stg_Component_New( STG_COMPONENT_DEFARGS );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define STG_COMPONENT_DEFARGS \
+                STG_OBJECT_DEFARGS, \
+                Stg_Component_DefaultConstructorFunction*  _defaultConstructor, \
+                Stg_Component_ConstructFunction*                    _construct, \
+                Stg_Component_BuildFunction*                            _build, \
+                Stg_Component_InitialiseFunction*                  _initialise, \
+                Stg_Component_ExecuteFunction*                        _execute, \
+                Stg_Component_DestroyFunction*                        _destroy
+
+	#define STG_COMPONENT_PASSARGS \
+                STG_OBJECT_PASSARGS, \
+	        _defaultConstructor, \
+	        _construct,          \
+	        _build,              \
+	        _initialise,         \
+	        _execute,            \
+	        _destroy           
+
+	Stg_Component* _Stg_Component_New(  STG_COMPONENT_DEFARGS  );
 	
 	
 	/* Class Administration members ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
@@ -175,3 +178,4 @@
 
 	
 #endif /* __Base_Automation_Stg_Component_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Automation/src/Stg_ComponentFactory.c
--- a/Base/Automation/src/Stg_ComponentFactory.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Automation/src/Stg_ComponentFactory.c	Mon Nov 30 02:00:28 2009 +1100
@@ -59,33 +59,12 @@ const Type Stg_ComponentFactory_Type = "
 ** Constructor
 */
 /* Creation implementation */
-Stg_ComponentFactory* _Stg_ComponentFactory_New( 
-		SizeT                                                    _sizeOfSelf,
-		Type                                                     type,
-		Stg_Class_DeleteFunction*                                _delete,
-		Stg_Class_PrintFunction*                                 _print,
-		Stg_Class_CopyFunction*                                  _copy,
-		Stg_ComponentFactory_GetDoubleFunc*                      getDouble,
-		Stg_ComponentFactory_GetIntFunc*                         getInt,
-		Stg_ComponentFactory_GetUnsignedIntFunc*                 getUnsignedInt,
-		Stg_ComponentFactory_GetBoolFunc*                        getBool,
-		Stg_ComponentFactory_GetStringFunc*                      getString,
-		Stg_ComponentFactory_GetRootDictDoubleFunc*              getRootDictDouble,
-		Stg_ComponentFactory_GetRootDictIntFunc*                 getRootDictInt,
-		Stg_ComponentFactory_GetRootDictUnsignedIntFunc*         getRootDictUnsignedInt,
-		Stg_ComponentFactory_GetRootDictBoolFunc*                getRootDictBool,
-		Stg_ComponentFactory_GetRootDictStringFunc*              getRootDictString,
-		Stg_ComponentFactory_ConstructByNameFunc*                constructByName,
-		Stg_ComponentFactory_ConstructByKeyFunc*                 constructByKey,
-		Stg_ComponentFactory_ConstructByNameWithKeyFallbackFunc* constructByNameWithKeyFallback,
-		Stg_ComponentFactory_ConstructByListFunc*                constructByList,
-		Dictionary*                                              rootDict,
-		Dictionary*                                              componentDict )
+Stg_ComponentFactory* _Stg_ComponentFactory_New(  STG_COMPONENTFACTORY_DEFARGS  )
 {
 	Stg_ComponentFactory *self = NULL;
 
 	assert( _sizeOfSelf >= sizeof( Stg_ComponentFactory ) );
-	self = (Stg_ComponentFactory*) _Stg_Class_New( _sizeOfSelf, type, _delete, _print, _copy );
+	self = (Stg_ComponentFactory*) _Stg_Class_New(  STG_CLASS_PASSARGS  );
 
 	self->getDouble = getDouble;
 	self->getInt = getInt;
@@ -116,30 +95,33 @@ Stg_ComponentFactory* _Stg_ComponentFact
 }
 	
 Stg_ComponentFactory* Stg_ComponentFactory_New( Dictionary* rootDict, Dictionary* componentDict ) {
+	/* Variables set in this function */
+	SizeT                                                                        _sizeOfSelf = sizeof( Stg_ComponentFactory );
+	Type                                                                                type = Stg_ComponentFactory_Type;
+	Stg_Class_DeleteFunction*                                                        _delete = _Stg_ComponentFactory_Delete;
+	Stg_Class_PrintFunction*                                                          _print = _Stg_ComponentFactory_Print;
+	Stg_ComponentFactory_GetDoubleFunc*                                            getDouble = _Stg_ComponentFactory_GetDouble;
+	Stg_ComponentFactory_GetIntFunc*                                                  getInt = _Stg_ComponentFactory_GetInt;
+	Stg_ComponentFactory_GetUnsignedIntFunc*                                  getUnsignedInt = _Stg_ComponentFactory_GetUnsignedInt;
+	Stg_ComponentFactory_GetBoolFunc*                                                getBool = _Stg_ComponentFactory_GetBool;
+	Stg_ComponentFactory_GetStringFunc*                                            getString = _Stg_ComponentFactory_GetString;
+	Stg_ComponentFactory_GetRootDictDoubleFunc*                            getRootDictDouble = _Stg_ComponentFactory_GetRootDictDouble;
+	Stg_ComponentFactory_GetRootDictIntFunc*                                  getRootDictInt = _Stg_ComponentFactory_GetRootDictInt;
+	Stg_ComponentFactory_GetRootDictUnsignedIntFunc*                  getRootDictUnsignedInt = _Stg_ComponentFactory_GetRootDictUnsignedInt;
+	Stg_ComponentFactory_GetRootDictBoolFunc*                                getRootDictBool = _Stg_ComponentFactory_GetRootDictBool;
+	Stg_ComponentFactory_GetRootDictStringFunc*                            getRootDictString = _Stg_ComponentFactory_GetRootDictString;
+	Stg_ComponentFactory_ConstructByNameFunc*                                constructByName = _Stg_ComponentFactory_ConstructByName;
+	Stg_ComponentFactory_ConstructByKeyFunc*                                  constructByKey = _Stg_ComponentFactory_ConstructByKey;
+	Stg_ComponentFactory_ConstructByNameWithKeyFallbackFunc*  constructByNameWithKeyFallback = _Stg_ComponentFactory_ConstructByNameWithKeyFallback;
+	Stg_ComponentFactory_ConstructByListFunc*                                constructByList = _Stg_ComponentFactory_ConstructByList;
+
 	Stg_ComponentFactory *self = NULL;
 
 	assert( rootDict );
-	self = _Stg_ComponentFactory_New( sizeof( Stg_ComponentFactory ), 
-					Stg_ComponentFactory_Type,
-					_Stg_ComponentFactory_Delete,
-					_Stg_ComponentFactory_Print,
-					NULL,
-					_Stg_ComponentFactory_GetDouble,
-					_Stg_ComponentFactory_GetInt,
-					_Stg_ComponentFactory_GetUnsignedInt,
-					_Stg_ComponentFactory_GetBool,
-					_Stg_ComponentFactory_GetString,
-					_Stg_ComponentFactory_GetRootDictDouble,
-					_Stg_ComponentFactory_GetRootDictInt,
-					_Stg_ComponentFactory_GetRootDictUnsignedInt,
-					_Stg_ComponentFactory_GetRootDictBool,
-					_Stg_ComponentFactory_GetRootDictString,
-					_Stg_ComponentFactory_ConstructByName,
-					_Stg_ComponentFactory_ConstructByKey,
-					_Stg_ComponentFactory_ConstructByNameWithKeyFallback,
-					_Stg_ComponentFactory_ConstructByList,
-					rootDict,
-					componentDict );
+	/* The following terms are parameters that have been passed into or defined in this function but are being set before being passed onto the parent */
+	Stg_Class_CopyFunction*  _copy = NULL;
+
+	self = _Stg_ComponentFactory_New(  STG_COMPONENTFACTORY_PASSARGS  );
 
 	return self;
 }
@@ -1016,3 +998,5 @@ Stg_Component** _Stg_ComponentFactory_Co
 
 	return componentList;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Automation/src/Stg_ComponentFactory.h
--- a/Base/Automation/src/Stg_ComponentFactory.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Automation/src/Stg_ComponentFactory.h	Mon Nov 30 02:00:28 2009 +1100
@@ -150,28 +150,50 @@
 	** Constructor
 	*/
 	/* Creation implementation */
-	Stg_ComponentFactory* _Stg_ComponentFactory_New( 
-		SizeT                                                    _sizeOfSelf,
-		Type                                                     type,
-		Stg_Class_DeleteFunction*                                _delete,
-		Stg_Class_PrintFunction*                                 _print,
-		Stg_Class_CopyFunction*                                  _copy,
-		Stg_ComponentFactory_GetDoubleFunc*                      getDouble,
-		Stg_ComponentFactory_GetIntFunc*                         getInt,
-		Stg_ComponentFactory_GetUnsignedIntFunc*                 getUnsignedInt,
-		Stg_ComponentFactory_GetBoolFunc*                        getBool,
-		Stg_ComponentFactory_GetStringFunc*                      getString,
-		Stg_ComponentFactory_GetRootDictDoubleFunc*              getRootDictDouble,
-		Stg_ComponentFactory_GetRootDictIntFunc*                 getRootDictInt,
-		Stg_ComponentFactory_GetRootDictUnsignedIntFunc*         getRootDictUnsignedInt,
-		Stg_ComponentFactory_GetRootDictBoolFunc*                getRootDictBool,
-		Stg_ComponentFactory_GetRootDictStringFunc*              getRootDictString,
-		Stg_ComponentFactory_ConstructByNameFunc*                constructByName,
-		Stg_ComponentFactory_ConstructByKeyFunc*                 constructByKey,
-		Stg_ComponentFactory_ConstructByNameWithKeyFallbackFunc* constructByNameWithKeyFallback,
-		Stg_ComponentFactory_ConstructByListFunc*                constructByList,
-		Dictionary*                                              rootDict,
-		Dictionary*                                              componentDict );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define STG_COMPONENTFACTORY_DEFARGS \
+                STG_CLASS_DEFARGS, \
+                Stg_ComponentFactory_GetDoubleFunc*                                            getDouble, \
+                Stg_ComponentFactory_GetIntFunc*                                                  getInt, \
+                Stg_ComponentFactory_GetUnsignedIntFunc*                                  getUnsignedInt, \
+                Stg_ComponentFactory_GetBoolFunc*                                                getBool, \
+                Stg_ComponentFactory_GetStringFunc*                                            getString, \
+                Stg_ComponentFactory_GetRootDictDoubleFunc*                            getRootDictDouble, \
+                Stg_ComponentFactory_GetRootDictIntFunc*                                  getRootDictInt, \
+                Stg_ComponentFactory_GetRootDictUnsignedIntFunc*                  getRootDictUnsignedInt, \
+                Stg_ComponentFactory_GetRootDictBoolFunc*                                getRootDictBool, \
+                Stg_ComponentFactory_GetRootDictStringFunc*                            getRootDictString, \
+                Stg_ComponentFactory_ConstructByNameFunc*                                constructByName, \
+                Stg_ComponentFactory_ConstructByKeyFunc*                                  constructByKey, \
+                Stg_ComponentFactory_ConstructByNameWithKeyFallbackFunc*  constructByNameWithKeyFallback, \
+                Stg_ComponentFactory_ConstructByListFunc*                                constructByList, \
+                Dictionary*                                                                     rootDict, \
+                Dictionary*                                                                componentDict
+
+	#define STG_COMPONENTFACTORY_PASSARGS \
+                STG_CLASS_PASSARGS, \
+	        getDouble,                      \
+	        getInt,                         \
+	        getUnsignedInt,                 \
+	        getBool,                        \
+	        getString,                      \
+	        getRootDictDouble,              \
+	        getRootDictInt,                 \
+	        getRootDictUnsignedInt,         \
+	        getRootDictBool,                \
+	        getRootDictString,              \
+	        constructByName,                \
+	        constructByKey,                 \
+	        constructByNameWithKeyFallback, \
+	        constructByList,                \
+	        rootDict,                       \
+	        componentDict                 
+
+	Stg_ComponentFactory* _Stg_ComponentFactory_New(  STG_COMPONENTFACTORY_DEFARGS  );
 	
 	Stg_ComponentFactory* Stg_ComponentFactory_New( 
 		Dictionary*                                              rootDict,
@@ -299,3 +321,4 @@
 	#define Stg_ComponentFactory_Unlimited ((unsigned int) -1)
 
 #endif /* __Base_Automation_Stg_ComponentFactory_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Automation/src/Stg_ComponentRegister.c
--- a/Base/Automation/src/Stg_ComponentRegister.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Automation/src/Stg_ComponentRegister.c	Mon Nov 30 02:00:28 2009 +1100
@@ -51,33 +51,33 @@ const Name Version = "0";
 const Name Version = "0";
 Stg_ComponentRegister *stgComponentRegister = NULL;
 
-Stg_ComponentRegister *_Stg_ComponentRegister_New(
-	SizeT					_sizeOfSelf, 
-	Type					type,
-	Stg_Class_DeleteFunction*		_delete,
-	Stg_Class_PrintFunction*		_print, 
-	Stg_Class_CopyFunction*			_copy )
+Stg_ComponentRegister *_Stg_ComponentRegister_New(  STG_COMPONENTREGISTER_DEFARGS  )
 {
 	Stg_ComponentRegister *self = NULL;
 
 	/* Allocate memory */
 	assert( _sizeOfSelf >= sizeof(Stg_ComponentRegister) );
-	self = (Stg_ComponentRegister*)_Stg_Class_New( _sizeOfSelf, type, _delete, _print, _copy );
+	self = (Stg_ComponentRegister*)_Stg_Class_New(  STG_CLASS_PASSARGS  );
 
 	return self;
 }
 	
 Stg_ComponentRegister *Stg_ComponentRegister_New(  )
 {
+	/* Variables set in this function */
+	SizeT                      _sizeOfSelf = sizeof( Stg_ComponentRegister );
+	Type                              type = Stg_ComponentRegister_Type;
+	Stg_Class_DeleteFunction*      _delete = _Stg_ComponentRegister_Delete;
+	Stg_Class_PrintFunction*        _print = _Stg_ComponentRegister_Print;
+
 	Stg_ComponentRegister *self = NULL;
 
 	if( stgComponentRegister == NULL ){
 		
-		self = _Stg_ComponentRegister_New( sizeof( Stg_ComponentRegister ),
-			Stg_ComponentRegister_Type,
-			_Stg_ComponentRegister_Delete,
-			_Stg_ComponentRegister_Print,
-			NULL );
+	/* The following terms are parameters that have been passed into or defined in this function but are being set before being passed onto the parent */
+	Stg_Class_CopyFunction*  _copy = NULL;
+
+		self = _Stg_ComponentRegister_New(  STG_COMPONENTREGISTER_PASSARGS  );
 		Stg_ComponentRegister_Init( self );
 	}
 	else{
@@ -323,3 +323,5 @@ void Stg_ComponentRegister_PrintAllTypes
 	   Journal_Printf( stream, "%s\n", element->componentType );
 	}
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Automation/src/Stg_ComponentRegister.h
--- a/Base/Automation/src/Stg_ComponentRegister.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Automation/src/Stg_ComponentRegister.h	Mon Nov 30 02:00:28 2009 +1100
@@ -89,12 +89,18 @@
 	/* Class Administration members ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
 	
 	/** Constructor Implementation */
-	Stg_ComponentRegister *_Stg_ComponentRegister_New(
-		SizeT					_sizeOfSelf, 
-		Type					type,
-		Stg_Class_DeleteFunction*		_delete,
-		Stg_Class_PrintFunction*		_print, 
-		Stg_Class_CopyFunction*			_copy );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define STG_COMPONENTREGISTER_DEFARGS \
+                STG_CLASS_DEFARGS
+
+	#define STG_COMPONENTREGISTER_PASSARGS \
+                STG_CLASS_PASSARGS
+
+	Stg_ComponentRegister *_Stg_ComponentRegister_New(  STG_COMPONENTREGISTER_DEFARGS  );
 	
 	Stg_ComponentRegister *Stg_ComponentRegister_New(  );
 	
@@ -187,3 +193,4 @@
 	Dictionary* Stg_ComponentRegisterElement_GetMetadata( Stg_ComponentRegisterElement* element );
 	
 #endif /* __Base_Automation_Stg_ComponentRegister_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Automation/tests/CallGraphSuite.c
--- a/Base/Automation/tests/CallGraphSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Automation/tests/CallGraphSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -203,3 +203,5 @@ void CallGraphSuite( pcu_suite_t* suite 
    pcu_suite_addTest( suite, CallGraphSuite_TestTableRealloc );
    pcu_suite_addTest( suite, CallGraphSuite_TestCopy );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Automation/tests/CommSuite.c
--- a/Base/Automation/tests/CommSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Automation/tests/CommSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -299,3 +299,5 @@ void CommSuite( pcu_suite_t* suite ) {
    /* Test below not yet completed */
    /* pcu_suite_addTest( suite, CommSuite_TestAllgather ); */
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Automation/tests/ComponentCopySuite.c
--- a/Base/Automation/tests/ComponentCopySuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Automation/tests/ComponentCopySuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -84,20 +84,21 @@ void Stg_ComponentA_Destroy( void* compo
 
 void* Stg_ComponentA_NewDefault( Name name )
 {
-	return _Stg_Component_New(
-		sizeof(Stg_ComponentA),
-		"Stg_ComponentA",
-		Stg_ComponentA_Delete,
-		Stg_ComponentA_Print,
-		Stg_ComponentA_Copy,
-		Stg_ComponentA_NewDefault,
-		Stg_ComponentA_AssignFromXML,
-		Stg_ComponentA_Build,
-		Stg_ComponentA_Initialise,
-		Stg_ComponentA_Execute,
-		Stg_ComponentA_Destroy,
-		name,
-		NON_GLOBAL );
+	/* Variables set in this function */
+	SizeT                                              _sizeOfSelf = sizeof(Stg_ComponentA);
+	Type                                                      type = "Stg_ComponentA";
+	Stg_Class_DeleteFunction*                              _delete = Stg_ComponentA_Delete;
+	Stg_Class_PrintFunction*                                _print = Stg_ComponentA_Print;
+	Stg_Class_CopyFunction*                                  _copy = Stg_ComponentA_Copy;
+	Stg_Component_DefaultConstructorFunction*  _defaultConstructor = Stg_ComponentA_NewDefault;
+	Stg_Component_ConstructFunction*                    _construct = Stg_ComponentA_AssignFromXML;
+	Stg_Component_BuildFunction*                            _build = Stg_ComponentA_Build;
+	Stg_Component_InitialiseFunction*                  _initialise = Stg_ComponentA_Initialise;
+	Stg_Component_ExecuteFunction*                        _execute = Stg_ComponentA_Execute;
+	Stg_Component_DestroyFunction*                        _destroy = Stg_ComponentA_Destroy;
+	AllocationType                              nameAllocationType = NON_GLOBAL;
+
+	return _Stg_Component_New(  STG_COMPONENT_PASSARGS  );
 }
 void Stg_ComponentA_Delete( void* class ) {
 	Stg_ComponentA* self = (Stg_ComponentA*)class;
@@ -169,20 +170,21 @@ void Stg_ComponentB_Destroy( void* compo
 
 void* Stg_ComponentB_NewDefault( Name name )
 {
-	return _Stg_Component_New(
-		sizeof(Stg_ComponentB),
-		"Stg_ComponentB",
-		Stg_ComponentB_Delete,
-		Stg_ComponentB_Print,
-		Stg_ComponentB_Copy,
-		Stg_ComponentB_NewDefault,
-		Stg_ComponentB_AssignFromXML,
-		Stg_ComponentB_Build,
-		Stg_ComponentB_Initialise,
-		Stg_ComponentB_Execute,
-		Stg_ComponentB_Destroy,
-		name,
-		NON_GLOBAL );
+	/* Variables set in this function */
+	SizeT                                              _sizeOfSelf = sizeof(Stg_ComponentB);
+	Type                                                      type = "Stg_ComponentB";
+	Stg_Class_DeleteFunction*                              _delete = Stg_ComponentB_Delete;
+	Stg_Class_PrintFunction*                                _print = Stg_ComponentB_Print;
+	Stg_Class_CopyFunction*                                  _copy = Stg_ComponentB_Copy;
+	Stg_Component_DefaultConstructorFunction*  _defaultConstructor = Stg_ComponentB_NewDefault;
+	Stg_Component_ConstructFunction*                    _construct = Stg_ComponentB_AssignFromXML;
+	Stg_Component_BuildFunction*                            _build = Stg_ComponentB_Build;
+	Stg_Component_InitialiseFunction*                  _initialise = Stg_ComponentB_Initialise;
+	Stg_Component_ExecuteFunction*                        _execute = Stg_ComponentB_Execute;
+	Stg_Component_DestroyFunction*                        _destroy = Stg_ComponentB_Destroy;
+	AllocationType                              nameAllocationType = NON_GLOBAL;
+
+	return _Stg_Component_New(  STG_COMPONENT_PASSARGS  );
 }
 void Stg_ComponentB_Delete( void* class ) {
 	Stg_ComponentB* self = (Stg_ComponentB*)class;
@@ -238,20 +240,21 @@ void Stg_ComponentC_Destroy( void* compo
 
 void* Stg_ComponentC_NewDefault( Name name )
 {
-	return _Stg_Component_New(
-		sizeof(Stg_ComponentC),
-		"Stg_ComponentC",
-		Stg_ComponentC_Delete,
-		Stg_ComponentC_Print,
-		Stg_ComponentC_Copy,
-		Stg_ComponentC_NewDefault,
-		Stg_ComponentC_AssignFromXML,
-		Stg_ComponentC_Build,
-		Stg_ComponentC_Initialise,
-		Stg_ComponentC_Execute,
-		Stg_ComponentC_Destroy,
-		name,
-		NON_GLOBAL );
+	/* Variables set in this function */
+	SizeT                                              _sizeOfSelf = sizeof(Stg_ComponentC);
+	Type                                                      type = "Stg_ComponentC";
+	Stg_Class_DeleteFunction*                              _delete = Stg_ComponentC_Delete;
+	Stg_Class_PrintFunction*                                _print = Stg_ComponentC_Print;
+	Stg_Class_CopyFunction*                                  _copy = Stg_ComponentC_Copy;
+	Stg_Component_DefaultConstructorFunction*  _defaultConstructor = Stg_ComponentC_NewDefault;
+	Stg_Component_ConstructFunction*                    _construct = Stg_ComponentC_AssignFromXML;
+	Stg_Component_BuildFunction*                            _build = Stg_ComponentC_Build;
+	Stg_Component_InitialiseFunction*                  _initialise = Stg_ComponentC_Initialise;
+	Stg_Component_ExecuteFunction*                        _execute = Stg_ComponentC_Execute;
+	Stg_Component_DestroyFunction*                        _destroy = Stg_ComponentC_Destroy;
+	AllocationType                              nameAllocationType = NON_GLOBAL;
+
+	return _Stg_Component_New(  STG_COMPONENT_PASSARGS  );
 }
 void Stg_ComponentC_Delete( void* class ) {
 	Stg_ComponentC* self = (Stg_ComponentC*)class;
@@ -401,3 +404,5 @@ void ComponentCopySuite( pcu_suite_t* su
    pcu_suite_setFixtures( suite, ComponentCopySuite_Setup, ComponentCopySuite_Teardown );
    pcu_suite_addTest( suite, ComponentCopySuite_TestCopy );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Automation/tests/HierarchyTableSuite.c
--- a/Base/Automation/tests/HierarchyTableSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Automation/tests/HierarchyTableSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -176,3 +176,5 @@ void HierarchyTableSuite( pcu_suite_t* s
    pcu_suite_addTest( suite, HierarchyTableSuite_TestPrintParents );
    pcu_suite_addTest( suite, HierarchyTableSuite_TestPrintChildren );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/AbsArray.c
--- a/Base/Container/src/AbsArray.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/AbsArray.c	Mon Nov 30 02:00:28 2009 +1100
@@ -153,3 +153,5 @@ const int* AbsArray_GetPtr( const void* 
 
    return self->ptr;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/BTree.c
--- a/Base/Container/src/BTree.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/BTree.c	Mon Nov 30 02:00:28 2009 +1100
@@ -731,3 +731,5 @@ void BTree_Delete( void* tree ) {
 void BTree_Delete( void* tree ) {
 	Stg_Class_Delete( tree );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/BTreeIterator.c
--- a/Base/Container/src/BTreeIterator.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/BTreeIterator.c	Mon Nov 30 02:00:28 2009 +1100
@@ -176,3 +176,5 @@ void _BTreeIterator_PrintFunc( void *sel
 	Journal_Printf( myStream, "\tTree (ptr): (%p)\n", iterator->tree );
 	Journal_Printf( myStream, "\tDepth : %d\n", iterator->depth );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/BTreeNode.c
--- a/Base/Container/src/BTreeNode.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/BTreeNode.c	Mon Nov 30 02:00:28 2009 +1100
@@ -92,3 +92,5 @@ void _BTreeNode_Init( BTreeNode* self ){
 	self->sizeOfData = 0;
 }
 
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/ChunkArray.c
--- a/Base/Container/src/ChunkArray.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/ChunkArray.c	Mon Nov 30 02:00:28 2009 +1100
@@ -502,3 +502,5 @@ char* ChunkArray_ObjectAt(ChunkArray *ch
     
     return (char*)&(chunkArray->chunks[chunkID].memory[arrayIdx]);
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/Finalise.c
--- a/Base/Container/src/Finalise.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/Finalise.c	Mon Nov 30 02:00:28 2009 +1100
@@ -44,3 +44,5 @@ Bool BaseContainer_Finalise( void ) {
 	
 	return True;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/HashTable.c
--- a/Base/Container/src/HashTable.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/HashTable.c	Mon Nov 30 02:00:28 2009 +1100
@@ -46,22 +46,11 @@ const Type HashTable_Type = "HashTable";
 /*----------------------------------------------------------------------------------------------------------------------------------
 ** Constructors
 */
-HashTable* _HashTable_New(
-			SizeT							_sizeOfSelf,
-			Type							type,
-			Stg_Class_DeleteFunction*	_delete,
-			Stg_Class_PrintFunction*	_print,
-			Stg_Class_CopyFunction*		_copy
-			)
+HashTable* _HashTable_New(  HASHTABLE_DEFARGS  )
 {
 	HashTable *self = NULL;
 
-	self = (HashTable*)_Stg_Class_New(
-							_sizeOfSelf,
-							type,
-							_delete,
-							_print,
-							_copy);
+	self = (HashTable*)_Stg_Class_New(  STG_CLASS_PASSARGS  );
 	return self;
 }
 
@@ -71,16 +60,18 @@ HashTable* HashTable_New(
 			HashTable_dataDeleteFunction*	dataDeleteFunction,
 			KeyType keyType)
 {
+	/* Variables set in this function */
+	SizeT                      _sizeOfSelf = sizeof(HashTable);
+	Type                              type = HashTable_Type;
+	Stg_Class_DeleteFunction*      _delete = _HashTable_DeleteFunc;
+	Stg_Class_PrintFunction*        _print = _HashTable_PrintFunc;
+	Stg_Class_CopyFunction*          _copy = _HashTable_CopyFunc;
+
 	
 	HashTable* self;
 	
 	/* General info */
-	self = _HashTable_New( 
-		   					sizeof(HashTable),
-							HashTable_Type,
-							_HashTable_DeleteFunc,
-							_HashTable_PrintFunc,
-							_HashTable_CopyFunc);
+	self = _HashTable_New(  HASHTABLE_PASSARGS  );
 
 	/* List info */
 	/* At the moment only String keys are supported */
@@ -609,3 +600,5 @@ HashTable_Index* HashTable_First( HashTa
     
 	return HashTable_Next( hi );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/HashTable.h
--- a/Base/Container/src/HashTable.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/HashTable.h	Mon Nov 30 02:00:28 2009 +1100
@@ -111,13 +111,18 @@
 				HashTable_dataDeleteFunction*	dataDeleteFunction,
 				KeyType keyType);
 
-	HashTable* _HashTable_New(
-				SizeT				_sizeOfSelf,
-				Type				type,
-				Stg_Class_DeleteFunction*	_delete,
-				Stg_Class_PrintFunction*	_print,
-				Stg_Class_CopyFunction*		_copy
-				);
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define HASHTABLE_DEFARGS \
+                STG_CLASS_DEFARGS
+
+	#define HASHTABLE_PASSARGS \
+                STG_CLASS_PASSARGS
+
+	HashTable* _HashTable_New(  HASHTABLE_DEFARGS  );
 
 	
 	/** Init interface. */
@@ -168,3 +173,4 @@
 
 #endif /* __HashTable_h__ */
 
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/Heap.c
--- a/Base/Container/src/Heap.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/Heap.c	Mon Nov 30 02:00:28 2009 +1100
@@ -51,30 +51,11 @@
 
 const Type Heap_Type = "Heap";
 
-_Heap* _Heap_New(
-				SizeT							_sizeOfSelf,
-				Type							type,
-				Stg_Class_DeleteFunction*			_delete,
-				Stg_Class_PrintFunction*			_print,
-				Stg_Class_CopyFunction*				_copy,
-				Heap_HeapifyFunction				*heapify,
-				Heap_ExtractFunction				*extract,
-				Heap_InsertFunction					*insert,
-				Heap_KeySwapFunction*				keySwapFunction,
-				Heap_CompareFunction				*compareFunction,
-				Heap_ExtendArrayFunc				*extendArray,
-				void						**keys,
-				int							keyLength,
-				int							numArrayElements )
+_Heap* _Heap_New(  HEAP_DEFARGS  )
 {
 	_Heap *self = NULL;
 
-	self = (_Heap*)_Stg_Class_New(
-							_sizeOfSelf,
-							type,
-							_delete,
-							_print,
-							_copy);
+	self = (_Heap*)_Stg_Class_New(  STG_CLASS_PASSARGS  );
 
 	assert( heapify );
 	assert( extract );
@@ -177,3 +158,5 @@ int _Heap_Right( _Heap *heap, int i )
 {
 	return 2*i+1;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/Heap.h
--- a/Base/Container/src/Heap.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/Heap.h	Mon Nov 30 02:00:28 2009 +1100
@@ -81,22 +81,36 @@
 		int							numArrayElements;
 	struct _Heap { __Heap };
 
-	_Heap* _Heap_New(
-				SizeT							_sizeOfSelf,
-				Type							type,
-				Stg_Class_DeleteFunction*			_delete,
-				Stg_Class_PrintFunction*			_print,
-				Stg_Class_CopyFunction*				_copy,
-				Heap_HeapifyFunction				*heapify,
-				Heap_ExtractFunction				*extract,
-				Heap_InsertFunction					*insert,
-				Heap_KeySwapFunction*				KeySwapFunction,
-				Heap_CompareFunction				*compareFunction,
-				Heap_ExtendArrayFunc				*extendArray,
-				void						**keys,
-				int							keyLength,
-				int							numArrayElements
-				);
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define HEAP_DEFARGS \
+                STG_CLASS_DEFARGS, \
+                Heap_HeapifyFunction*           heapify, \
+                Heap_ExtractFunction*           extract, \
+                Heap_InsertFunction*             insert, \
+                Heap_KeySwapFunction*   keySwapFunction, \
+                Heap_CompareFunction*   compareFunction, \
+                Heap_ExtendArrayFunc*       extendArray, \
+                void**                             keys, \
+                int                           keyLength, \
+                int                    numArrayElements
+
+	#define HEAP_PASSARGS \
+                STG_CLASS_PASSARGS, \
+	        heapify,          \
+	        extract,          \
+	        insert,           \
+	        keySwapFunction,  \
+	        compareFunction,  \
+	        extendArray,      \
+	        keys,             \
+	        keyLength,        \
+	        numArrayElements
+
+	_Heap* _Heap_New(  HEAP_DEFARGS  );
 
 	
 	void _Heap_Init( _Heap* self );
@@ -126,3 +140,4 @@
 
 #endif /* __Heap_h__ */
 
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/IArray.c
--- a/Base/Container/src/IArray.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/IArray.c	Mon Nov 30 02:00:28 2009 +1100
@@ -218,3 +218,5 @@ void IArray_ZeroAll( IArray* self ) {
    self->ptr = NULL;
    self->own = True;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/IMap.c
--- a/Base/Container/src/IMap.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/IMap.c	Mon Nov 30 02:00:28 2009 +1100
@@ -319,3 +319,5 @@ void IMap_First( const void* _self, IMap
    }
    iter->valid = False;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/IMapIter.c
--- a/Base/Container/src/IMapIter.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/IMapIter.c	Mon Nov 30 02:00:28 2009 +1100
@@ -94,3 +94,5 @@ int IMapIter_GetValue( const void* self 
    assert( ((IMapIter*)self)->valid && ((IMapIter*)self)->cur );
    return ((IMapIter*)self)->cur->val;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/ISet.c
--- a/Base/Container/src/ISet.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/ISet.c	Mon Nov 30 02:00:28 2009 +1100
@@ -425,3 +425,5 @@ void ISet_First( const void* _self, ISet
    }
    iter->valid = False;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/ISetIter.c
--- a/Base/Container/src/ISetIter.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/ISetIter.c	Mon Nov 30 02:00:28 2009 +1100
@@ -89,3 +89,5 @@ int ISetIter_GetKey( const void* self ) 
    assert( ((ISetIter*)self)->valid && ((ISetIter*)self)->cur );
    return ((ISetIter*)self)->cur->key;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/IndexMap.c
--- a/Base/Container/src/IndexMap.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/IndexMap.c	Mon Nov 30 02:00:28 2009 +1100
@@ -55,13 +55,14 @@ IndexMap* IndexMap_New_Param(
 IndexMap* IndexMap_New_Param(
 		unsigned					delta )
 {
-	return _IndexMap_New( 
-		sizeof(IndexMap), 
-		IndexMap_Type, 
-		_IndexMap_Delete, 
-		_IndexMap_Print, 
-		_IndexMap_Copy, 
-		delta );
+	/* Variables set in this function */
+	SizeT                      _sizeOfSelf = sizeof(IndexMap);
+	Type                              type = IndexMap_Type;
+	Stg_Class_DeleteFunction*      _delete = _IndexMap_Delete;
+	Stg_Class_PrintFunction*        _print = _IndexMap_Print;
+	Stg_Class_CopyFunction*          _copy = _IndexMap_Copy;
+
+	return _IndexMap_New(  INDEXMAP_PASSARGS  );
 }
 
 
@@ -85,24 +86,13 @@ void IndexMap_Init(
 }
 
 
-IndexMap* _IndexMap_New(
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*				_delete,
-		Stg_Class_PrintFunction*				_print, 
-		Stg_Class_CopyFunction*				_copy, 
-		unsigned					delta )
+IndexMap* _IndexMap_New(  INDEXMAP_DEFARGS  )
 {
 	IndexMap*			self;
 	
 	/* Allocate memory */
 	assert( _sizeOfSelf >= sizeof(IndexMap) );
-	self = (IndexMap*)_Stg_Class_New(
-		_sizeOfSelf,
-		type,
-		_delete,
-		_print,
-		_copy );
+	self = (IndexMap*)_Stg_Class_New(  STG_CLASS_PASSARGS  );
 	
 	/* General info */
 	
@@ -280,3 +270,5 @@ void IndexMap_Remap( void* indexMap, voi
 ** Private Functions
 */
 
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/IndexMap.h
--- a/Base/Container/src/IndexMap.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/IndexMap.h	Mon Nov 30 02:00:28 2009 +1100
@@ -85,13 +85,20 @@
 		unsigned					delta );
 	
 	/* Creation implementation */
-	IndexMap* _IndexMap_New(
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*				_delete,
-		Stg_Class_PrintFunction*				_print, 
-		Stg_Class_CopyFunction*				_copy, 
-		unsigned					delta );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define INDEXMAP_DEFARGS \
+                STG_CLASS_DEFARGS, \
+                unsigned  delta
+
+	#define INDEXMAP_PASSARGS \
+                STG_CLASS_PASSARGS, \
+	        delta
+
+	IndexMap* _IndexMap_New(  INDEXMAP_DEFARGS  );
 	
 	
 	/* Initialise a IndexMap */
@@ -144,3 +151,4 @@
 	
 
 #endif /* __Base_Container_IndexMap_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/IndexSet.c
--- a/Base/Container/src/IndexSet.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/IndexSet.c	Mon Nov 30 02:00:28 2009 +1100
@@ -51,7 +51,15 @@ const Type IndexSet_Type = "IndexSet";
 	((indexSet)->_container[(index) / (sizeof(char) * 8 )] & (1 << ((index) % (sizeof(char) * 8))))
 
 IndexSet* IndexSet_New( IndexSet_Index size ) {
-	return _IndexSet_New( sizeof(IndexSet), IndexSet_Type, _IndexSet_Delete, _IndexSet_Print, _IndexSet_Copy, _IndexSet_Duplicate, size );
+	/* Variables set in this function */
+	SizeT                        _sizeOfSelf = sizeof(IndexSet);
+	Type                                type = IndexSet_Type;
+	Stg_Class_DeleteFunction*        _delete = _IndexSet_Delete;
+	Stg_Class_PrintFunction*          _print = _IndexSet_Print;
+	Stg_Class_CopyFunction*            _copy = _IndexSet_Copy;
+	IndexSet_DuplicateFunction*   _duplicate = _IndexSet_Duplicate;
+
+	return _IndexSet_New(  INDEXSET_PASSARGS  );
 }
 
 void IndexSet_Init( IndexSet* self, IndexSet_Index size ) {
@@ -72,20 +80,13 @@ void IndexSet_Init( IndexSet* self, Inde
 }
 
 
-IndexSet* _IndexSet_New( 
-		SizeT				sizeOfSelf, 
-		Type				type,
-		Stg_Class_DeleteFunction*		_delete,
-		Stg_Class_PrintFunction*		_print, 
-		Stg_Class_CopyFunction*		_copy, 
-		IndexSet_DuplicateFunction*	_duplicate,
-		IndexSet_Index			size )
+IndexSet* _IndexSet_New(  INDEXSET_DEFARGS  )
 {
 	IndexSet* self;
 	
 	/* Allocate memory */
-	assert( sizeOfSelf >= sizeof(IndexSet) );
-	self = (IndexSet*)_Stg_Class_New( sizeOfSelf, type, _delete, _print, _copy );
+	assert( _sizeOfSelf >= sizeof(IndexSet) );
+	self = (IndexSet*)_Stg_Class_New(  STG_CLASS_PASSARGS  );
 	
 	/* General info */
 	
@@ -391,3 +392,5 @@ void _IndexSet_Duplicate( void* indexSet
 	memcpy( ((IndexSet*)newIndexSet)->_container, ((IndexSet*)indexSet)->_container, sizeof(char)*((IndexSet*)indexSet)->_containerSize );
 	newSet->membersCount = self->membersCount;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/IndexSet.h
--- a/Base/Container/src/IndexSet.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/IndexSet.h	Mon Nov 30 02:00:28 2009 +1100
@@ -92,14 +92,22 @@
 	void IndexSet_Init( IndexSet* self, IndexSet_Index size );
 	
 	/** IndexSet_New() implementation. */
-	IndexSet* _IndexSet_New( 
-		SizeT				_sizeOfSelf, 
-		Type				type,
-		Stg_Class_DeleteFunction*		_delete,
-		Stg_Class_PrintFunction*		_print, 
-		Stg_Class_CopyFunction*		_copy, 
-		IndexSet_DuplicateFunction*	_duplicate,
-		IndexSet_Index			size );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define INDEXSET_DEFARGS \
+                STG_CLASS_DEFARGS, \
+                IndexSet_DuplicateFunction*  _duplicate, \
+                IndexSet_Index                     size
+
+	#define INDEXSET_PASSARGS \
+                STG_CLASS_PASSARGS, \
+	        _duplicate, \
+	        size      
+
+	IndexSet* _IndexSet_New(  INDEXSET_DEFARGS  );
 	
 	/** IndexSet_Init() implementation. */
 	void _IndexSet_Init( IndexSet* self, IndexSet_Index size );
@@ -188,3 +196,4 @@
 	void _IndexSet_Abort( IndexSet* indexSet, const char* const funcName, IndexSet_Index index );
 
 #endif /* __Base_Container_IndexSet_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/Init.c
--- a/Base/Container/src/Init.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/Init.c	Mon Nov 30 02:00:28 2009 +1100
@@ -43,3 +43,5 @@ Bool BaseContainer_Init( int* argc, char
 	
 	return True;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/Iter.c
--- a/Base/Container/src/Iter.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/Iter.c	Mon Nov 30 02:00:28 2009 +1100
@@ -51,3 +51,5 @@ Bool Iter_IsValid( void* self ) {
   assert( self );
   return ((Iter*)self)->valid;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/LinkedList.c
--- a/Base/Container/src/LinkedList.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/LinkedList.c	Mon Nov 30 02:00:28 2009 +1100
@@ -45,22 +45,11 @@ const Type LinkedList_Type = "LinkedList
 /*----------------------------------------------------------------------------------------------------------------------------------
 ** Constructors
 */
-LinkedList* _LinkedList_New(
-			SizeT							_sizeOfSelf,
-			Type							type,
-			Stg_Class_DeleteFunction*			_delete,
-			Stg_Class_PrintFunction*			_print,
-			Stg_Class_CopyFunction*				_copy
-			)
+LinkedList* _LinkedList_New(  LINKEDLIST_DEFARGS  )
 {
 	LinkedList *self = NULL;
 
-	self = (LinkedList*)_Stg_Class_New(
-							_sizeOfSelf,
-							type,
-							_delete,
-							_print,
-							_copy);
+	self = (LinkedList*)_Stg_Class_New(  STG_CLASS_PASSARGS  );
 	return self;
 }
 
@@ -71,18 +60,20 @@ LinkedList* LinkedList_New(
 		LinkedList_dataDeleteFunction*	dataDeleteFunction,
 		Order listOrder )
 {
+	/* Variables set in this function */
+	SizeT                      _sizeOfSelf = sizeof(LinkedList);
+	Type                              type = LinkedList_Type;
+	Stg_Class_DeleteFunction*      _delete = _LinkedList_DeleteFunc;
+	Stg_Class_PrintFunction*        _print = _LinkedList_PrintFunc;
+	Stg_Class_CopyFunction*          _copy = NULL;
+
 	
 	LinkedList* self;
 	
 	/* General info */
 	assert ( compareFunction );
 	
-	self = _LinkedList_New( 
-		   					sizeof(LinkedList),
-							LinkedList_Type,
-							_LinkedList_DeleteFunc,
-							_LinkedList_PrintFunc,
-							NULL);
+	self = _LinkedList_New(  LINKEDLIST_PASSARGS  );
 
 	/* List info */
 	self->compareFunction = compareFunction;
@@ -388,3 +379,5 @@ void *LinkedList_ReturnNodeDataAtFunc( L
 	}
 	return NULL;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/LinkedList.h
--- a/Base/Container/src/LinkedList.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/LinkedList.h	Mon Nov 30 02:00:28 2009 +1100
@@ -88,13 +88,18 @@
 				LinkedList_dataDeleteFunction*	dataDeleteFunction,
 				Order listOrder);
 
-	LinkedList* _LinkedList_New(
-				SizeT							_sizeOfSelf,
-				Type							type,
-				Stg_Class_DeleteFunction*			_delete,
-				Stg_Class_PrintFunction*			_print,
-				Stg_Class_CopyFunction*				_copy
-				);
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define LINKEDLIST_DEFARGS \
+                STG_CLASS_DEFARGS
+
+	#define LINKEDLIST_PASSARGS \
+                STG_CLASS_PASSARGS
+
+	LinkedList* _LinkedList_New(  LINKEDLIST_DEFARGS  );
 
 	
 	/** Init interface. */
@@ -152,3 +157,4 @@
 	
 #endif /* __LinkedList_h__ */
 
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/LinkedListIterator.c
--- a/Base/Container/src/LinkedListIterator.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/LinkedListIterator.c	Mon Nov 30 02:00:28 2009 +1100
@@ -42,41 +42,31 @@
 
 const Type LinkedListIterator_Type = "LinkedListIterator";
 
-LinkedListIterator *_LinkedListIterator_New(
-		SizeT					_sizeOfSelf,
-		Type					type,
-		Stg_Class_DeleteFunction*	_delete,
-		Stg_Class_PrintFunction*	_print,
-		Stg_Class_CopyFunction*		_copy
-		)
+LinkedListIterator *_LinkedListIterator_New(  LINKEDLISTITERATOR_DEFARGS  )
 {
 	LinkedListIterator *self = NULL;
 
 	/** LinkedListIterator using Class_New, because  Memory module has been initialized */
 	
-	self = (LinkedListIterator*)_Stg_Class_New(
-		_sizeOfSelf,
-		type,
-		_delete,
-		_print, 
-		_copy );
+	self = (LinkedListIterator*)_Stg_Class_New(  STG_CLASS_PASSARGS  );
 	
 	return self;
 }
 
 LinkedListIterator *LinkedListIterator_New( LinkedList *list )
 {
+	/* Variables set in this function */
+	SizeT                      _sizeOfSelf = sizeof(LinkedListIterator);
+	Type                              type = LinkedListIterator_Type;
+	Stg_Class_DeleteFunction*      _delete = _LinkedListIterator_DeleteFunc;
+	Stg_Class_PrintFunction*        _print = _LinkedListIterator_PrintFunc;
+	Stg_Class_CopyFunction*          _copy = NULL;
+
 	
 	LinkedListIterator* self;
 	
 	assert( list );
-	self = _LinkedListIterator_New(
-			sizeof(LinkedListIterator),
-			LinkedListIterator_Type,
-			_LinkedListIterator_DeleteFunc,
-			_LinkedListIterator_PrintFunc,
-			NULL
-			);
+	self = _LinkedListIterator_New(  LINKEDLISTITERATOR_PASSARGS  );
 	/* General info */
 	
 	/* Virtual functions */
@@ -113,3 +103,5 @@ void _LinkedListIterator_PrintFunc( void
 	Journal_Printf( myStream, "LinkedListIterator (ptr): (%p)\n", iterator );
 	Journal_Printf( myStream, "\tlist (ptr): (%p)\n", iterator->list );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/LinkedListIterator.h
--- a/Base/Container/src/LinkedListIterator.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/LinkedListIterator.h	Mon Nov 30 02:00:28 2009 +1100
@@ -58,13 +58,18 @@
 	/** Constructor interface. */
 	LinkedListIterator* LinkedListIterator_New( LinkedList *list );
 	
-	LinkedListIterator *_LinkedListIterator_New(
-			SizeT					_sizeOfSelf,
-			Type					type,
-			Stg_Class_DeleteFunction*	_delete,
-			Stg_Class_PrintFunction*	_print,
-			Stg_Class_CopyFunction*		_copy
-			);
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define LINKEDLISTITERATOR_DEFARGS \
+                STG_CLASS_DEFARGS
+
+	#define LINKEDLISTITERATOR_PASSARGS \
+                STG_CLASS_PASSARGS
+
+	LinkedListIterator *_LinkedListIterator_New(  LINKEDLISTITERATOR_DEFARGS  );
 	
 	/** Init interface. */
 	void _LinkedListIterator_Init( LinkedListIterator *self );
@@ -83,3 +88,4 @@
 
 
 #endif /* __Base_Foundation__LinkedListIterator_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/LinkedListNode.c
--- a/Base/Container/src/LinkedListNode.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/LinkedListNode.c	Mon Nov 30 02:00:28 2009 +1100
@@ -71,3 +71,5 @@ void _LinkedListNode_Init( LinkedListNod
 	self->data = NULL;
 	self->sizeOfData = 0;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/List.c
--- a/Base/Container/src/List.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/List.c	Mon Nov 30 02:00:28 2009 +1100
@@ -50,19 +50,22 @@ const Type List_Type = "List";
 */
 
 List* List_New( Name name ) {
-	return _List_New( sizeof(List), 
-			  List_Type, 
-			  _List_Delete, 
-			  _List_Print, 
-			  NULL );
+	/* Variables set in this function */
+	SizeT                      _sizeOfSelf = sizeof(List);
+	Type                              type = List_Type;
+	Stg_Class_DeleteFunction*      _delete = _List_Delete;
+	Stg_Class_PrintFunction*        _print = _List_Print;
+	Stg_Class_CopyFunction*          _copy = NULL;
+
+	return _List_New(  LIST_PASSARGS  );
 }
 
-List* _List_New( LIST_DEFARGS ) {
+List* _List_New(  LIST_DEFARGS  ) {
 	List*	self;
 	
 	/* Allocate memory */
-	assert( sizeOfSelf >= sizeof(List) );
-	self = (List*)_Stg_Class_New( STG_CLASS_PASSARGS );
+	assert( _sizeOfSelf >= sizeof(List) );
+	self = (List*)_Stg_Class_New(  STG_CLASS_PASSARGS  );
 
 	/* Virtual info */
 
@@ -260,3 +263,5 @@ void List_Destruct( List* self ) {
 	self->itemSize = 0;
 	self->maxItems = 0;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/List.h
--- a/Base/Container/src/List.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/List.h	Mon Nov 30 02:00:28 2009 +1100
@@ -66,14 +66,21 @@
 	** Constructors
 	*/
 
-	#define LIST_DEFARGS		\
-		STG_CLASS_DEFARGS
 
-	#define LIST_PASSARGS		\
-		STG_CLASS_PASSARGS
+
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define LIST_DEFARGS \
+                STG_CLASS_DEFARGS
+
+	#define LIST_PASSARGS \
+                STG_CLASS_PASSARGS
 
 	List* List_New();
-	List* _List_New( LIST_DEFARGS );
+	List* _List_New(  LIST_DEFARGS  );
 	void _List_Init( List* self );
 
 	/*--------------------------------------------------------------------------------------------------------------------------
@@ -112,3 +119,4 @@
 	void List_Destruct( List* self );
 
 #endif /* __Base_Container_List_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/MPIRoutines.c
--- a/Base/Container/src/MPIRoutines.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/MPIRoutines.c	Mon Nov 30 02:00:28 2009 +1100
@@ -350,3 +350,5 @@ void Array_2DTo1D( unsigned nBlocks, uns
 		*disps = tmpDisps;
 	}
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/MaxHeap.c
--- a/Base/Container/src/MaxHeap.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/MaxHeap.c	Mon Nov 30 02:00:28 2009 +1100
@@ -57,54 +57,26 @@ MaxHeap* MaxHeap_New( void **keys, int k
 						Heap_CompareFunction *keyCompare,
 						Heap_ExtendArrayFunc *extendArray )
 {
-	return _MaxHeap_New( sizeof( MaxHeap ),
-									MaxHeap_Type,
-									_MaxHeap_DeleteFunc,
-									_MaxHeap_PrintFunc,
-									NULL,
-									MaxHeap_Heapify,
-									(Heap_ExtractFunction*)MaxHeap_Extract,
-									MaxHeap_InsertFunc,
-									keySwap,
-									keyCompare,
-									extendArray,
-									keys,
-									keyLength,
-									numArrayElements );
+	/* Variables set in this function */
+	SizeT                          _sizeOfSelf = sizeof( MaxHeap );
+	Type                                  type = MaxHeap_Type;
+	Stg_Class_DeleteFunction*          _delete = _MaxHeap_DeleteFunc;
+	Stg_Class_PrintFunction*            _print = _MaxHeap_PrintFunc;
+	Stg_Class_CopyFunction*              _copy = NULL;
+	Heap_HeapifyFunction*              heapify = MaxHeap_Heapify;
+	Heap_ExtractFunction*              extract = (Heap_ExtractFunction*)MaxHeap_Extract;
+	Heap_InsertFunction*                insert = MaxHeap_InsertFunc;
+	Heap_KeySwapFunction*      keySwapFunction = keySwap;
+	Heap_CompareFunction*      compareFunction = keyCompare;
+
+	return _MaxHeap_New(  MAXHEAP_PASSARGS  );
 }
 
-MaxHeap* _MaxHeap_New(
-			SizeT							_sizeOfSelf,
-			Type							type,
-			Stg_Class_DeleteFunction*			_delete,
-			Stg_Class_PrintFunction*			_print,
-			Stg_Class_CopyFunction*				_copy,
-			Heap_HeapifyFunction				*heapify,
-			Heap_ExtractFunction				*extract,
-			Heap_InsertFunction					*insert,
-			Heap_KeySwapFunction*				keySwapFunction,
-			Heap_CompareFunction				*compareFunction,
-			Heap_ExtendArrayFunc				*extendArray,
-			void						**keys,
-			int							keyLength,
-			int							numArrayElements )
+MaxHeap* _MaxHeap_New(  MAXHEAP_DEFARGS  )
 {
 	_Heap *heap;
 
-	heap = _Heap_New( _sizeOfSelf,
-						type,
-						_delete,
-						_print,
-						_copy,
-						heapify,
-						extract,
-						insert,
-						keySwapFunction,
-						compareFunction,
-						extendArray,
-						keys,
-						keyLength,
-						numArrayElements );
+	heap = _Heap_New(  HEAP_PASSARGS  );
 
 	_MaxHeap_Init( (MaxHeap*)heap );
 	return ( MaxHeap* )heap;
@@ -222,3 +194,5 @@ void MaxHeap_InsertFunc( _Heap *maxHeap,
 	}
 }
 
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/MaxHeap.h
--- a/Base/Container/src/MaxHeap.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/MaxHeap.h	Mon Nov 30 02:00:28 2009 +1100
@@ -55,22 +55,18 @@
 						Heap_CompareFunction *keyCompare,
 						Heap_ExtendArrayFunc *extendArray );
 
-	MaxHeap* _MaxHeap_New(
-				SizeT							_sizeOfSelf,
-				Type							type,
-				Stg_Class_DeleteFunction*			_delete,
-				Stg_Class_PrintFunction*			_print,
-				Stg_Class_CopyFunction*				_copy,
-				Heap_HeapifyFunction				*heapify,
-				Heap_ExtractFunction				*extract,
-				Heap_InsertFunction					*insert,
-				Heap_KeySwapFunction*				keySwapFunction,
-				Heap_CompareFunction				*compareFunction,
-				Heap_ExtendArrayFunc				*extendArray,				
-				void						**keys,
-				int							keyLength,
-				int							numArrayElements
-				);
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define MAXHEAP_DEFARGS \
+                HEAP_DEFARGS
+
+	#define MAXHEAP_PASSARGS \
+                HEAP_PASSARGS
+
+	MaxHeap* _MaxHeap_New(  MAXHEAP_DEFARGS  );
 
 	
 	void _MaxHeap_Init( MaxHeap* self );
@@ -98,3 +94,4 @@
 	
 #endif /* __MaxHeap_h__ */
 
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/MemoryPool.c
--- a/Base/Container/src/MemoryPool.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/MemoryPool.c	Mon Nov 30 02:00:28 2009 +1100
@@ -44,25 +44,11 @@ const Type MemoryPool_Type = "MemoryPool
 /*----------------------------------------------------------------------------------------------------------------------------------
 ** Constructors
 */
-MemoryPool* _MemoryPool_New(
-			SizeT							_sizeOfSelf,
-			Type							type,
-			Stg_Class_DeleteFunction*			_delete,
-			Stg_Class_PrintFunction*			_print,
-			Stg_Class_CopyFunction*				_copy,
-			int									elementSize,
-			int									numElements,
-			int									delta
-			)
+MemoryPool* _MemoryPool_New(  MEMORYPOOL_DEFARGS  )
 {
 	MemoryPool *self = NULL;
 
-	self = (MemoryPool*)_Stg_Class_New(
-							_sizeOfSelf,
-							type,
-							_delete,
-							_print,
-							_copy);
+	self = (MemoryPool*)_Stg_Class_New(  STG_CLASS_PASSARGS  );
 
 	self->numMemChunks = 1;
 	self->delta = delta;
@@ -78,19 +64,17 @@ MemoryPool* _MemoryPool_New(
 
 MemoryPool* MemoryPool_NewFunc( SizeT elementSize, int numElements, int delta )
 {
+	/* Variables set in this function */
+	SizeT                      _sizeOfSelf = sizeof(MemoryPool);
+	Type                              type = MemoryPool_Type;
+	Stg_Class_DeleteFunction*      _delete = _MemoryPool_DeleteFunc;
+	Stg_Class_PrintFunction*        _print = _MemoryPool_PrintFunc;
+	Stg_Class_CopyFunction*          _copy = NULL;
+
 	
 	MemoryPool* self;
 	
-	self = _MemoryPool_New( 
-		   					sizeof(MemoryPool),
-							MemoryPool_Type,
-							_MemoryPool_DeleteFunc,
-							_MemoryPool_PrintFunc,
-							NULL,
-							elementSize,
-							numElements,
-							delta
-							);
+	self = _MemoryPool_New(  MEMORYPOOL_PASSARGS  );
 
 	/* Virtual functions */
 	_MemoryPool_Init( self );
@@ -359,3 +343,5 @@ void MemoryPool_SetCallbackFuncArg( Memo
 	memPool->callbackFuncArg = callbackFuncArg;
 }
 
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/MemoryPool.h
--- a/Base/Container/src/MemoryPool.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/MemoryPool.h	Mon Nov 30 02:00:28 2009 +1100
@@ -83,16 +83,24 @@
 
 	MemoryPool* MemoryPool_NewFunc( SizeT elementSize, int numElements, int delta );
 
-	MemoryPool* _MemoryPool_New(
-				SizeT							_sizeOfSelf,
-				Type							type,
-				Stg_Class_DeleteFunction*			_delete,
-				Stg_Class_PrintFunction*			_print,
-				Stg_Class_CopyFunction*				_copy,
-				int									elementSize,
-				int									numElements,
-				int									delta
-				);
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define MEMORYPOOL_DEFARGS \
+                STG_CLASS_DEFARGS, \
+                int  elementSize, \
+                int  numElements, \
+                int        delta
+
+	#define MEMORYPOOL_PASSARGS \
+                STG_CLASS_PASSARGS, \
+	        elementSize, \
+	        numElements, \
+	        delta      
+
+	MemoryPool* _MemoryPool_New(  MEMORYPOOL_DEFARGS  );
 
 	
 	/** Init interface. */
@@ -127,3 +135,4 @@
 	
 #endif /* __MemoryPool_h__ */
 
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/PtrMap.c
--- a/Base/Container/src/PtrMap.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/PtrMap.c	Mon Nov 30 02:00:28 2009 +1100
@@ -54,13 +54,14 @@ PtrMap* PtrMap_New(
 PtrMap* PtrMap_New(
 		unsigned					delta )
 {
-	return _PtrMap_New( 
-		sizeof(PtrMap), 
-		PtrMap_Type, 
-		_PtrMap_Delete, 
-		_PtrMap_Print, 
-		NULL, 
-		delta );
+	/* Variables set in this function */
+	SizeT                      _sizeOfSelf = sizeof(PtrMap);
+	Type                              type = PtrMap_Type;
+	Stg_Class_DeleteFunction*      _delete = _PtrMap_Delete;
+	Stg_Class_PrintFunction*        _print = _PtrMap_Print;
+	Stg_Class_CopyFunction*          _copy = NULL;
+
+	return _PtrMap_New(  PTRMAP_PASSARGS  );
 }
 
 
@@ -84,24 +85,13 @@ void PtrMap_Init(
 }
 
 
-PtrMap* _PtrMap_New(
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*				_delete,
-		Stg_Class_PrintFunction*				_print, 
-		Stg_Class_CopyFunction*				_copy, 
-		unsigned					delta )
+PtrMap* _PtrMap_New(  PTRMAP_DEFARGS  )
 {
 	PtrMap*			self;
 	
 	/* Allocate memory */
 	assert( _sizeOfSelf >= sizeof(PtrMap) );
-	self = (PtrMap*)_Stg_Class_New(
-		_sizeOfSelf,
-		type,
-		_delete,
-		_print,
-		_copy );
+	self = (PtrMap*)_Stg_Class_New(  STG_CLASS_PASSARGS  );
 	
 	/* General info */
 	
@@ -227,3 +217,5 @@ void* PtrMap_Find( void* ptrMap, void* k
 /*----------------------------------------------------------------------------------------------------------------------------------
 ** Private Functions
 */
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/PtrMap.h
--- a/Base/Container/src/PtrMap.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/PtrMap.h	Mon Nov 30 02:00:28 2009 +1100
@@ -79,13 +79,20 @@
 		unsigned					delta );
 	
 	/* Creation implementation */
-	PtrMap* _PtrMap_New(
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*				_delete,
-		Stg_Class_PrintFunction*				_print, 
-		Stg_Class_CopyFunction*				_copy, 
-		unsigned					delta );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define PTRMAP_DEFARGS \
+                STG_CLASS_DEFARGS, \
+                unsigned  delta
+
+	#define PTRMAP_PASSARGS \
+                STG_CLASS_PASSARGS, \
+	        delta
+
+	PtrMap* _PtrMap_New(  PTRMAP_DEFARGS  );
 	
 	
 	/* Initialise a PtrMap */
@@ -125,3 +132,4 @@
 	
 
 #endif /* __Base_Container_PtrMap_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/PtrSet.c
--- a/Base/Container/src/PtrSet.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/PtrSet.c	Mon Nov 30 02:00:28 2009 +1100
@@ -54,20 +54,21 @@ PtrSet* PtrSet_New(
 PtrSet* PtrSet_New(
 		Dictionary*					dictionary )
 {
-	return _PtrSet_New( 
-		sizeof(PtrSet), 
-		PtrSet_Type, 
-		_PtrSet_Delete, 
-		_PtrSet_Print, 
-		NULL, 
-		_PtrSet_Union, 
-		_PtrSet_Intersection, 
-		_PtrSet_Subtraction, 
-		dictionary, 
-		0, 
-		_PtrSet_CompareData, 
-		NULL, 
-		_PtrSet_DeleteData );
+	/* Variables set in this function */
+	SizeT                            _sizeOfSelf = sizeof(PtrSet);
+	Type                                    type = PtrSet_Type;
+	Stg_Class_DeleteFunction*            _delete = _PtrSet_Delete;
+	Stg_Class_PrintFunction*              _print = _PtrSet_Print;
+	Stg_Class_CopyFunction*                _copy = NULL;
+	Set_UnionFunc*                    _unionFunc = _PtrSet_Union;
+	Set_IntersectionFunc*      _intersectionFunc = _PtrSet_Intersection;
+	Set_SubtractionFunc*        _subtractionFunc = _PtrSet_Subtraction;
+	SizeT                            elementSize = 0;
+	BTree_compareFunction*           compareFunc = _PtrSet_CompareData;
+	BTree_dataCopyFunction*         dataCopyFunc = NULL;
+	BTree_dataDeleteFunction*     dataDeleteFunc = _PtrSet_DeleteData;
+
+	return _PtrSet_New(  PTRSET_PASSARGS  );
 }
 
 
@@ -95,39 +96,13 @@ void PtrSet_Init(
 }
 
 
-PtrSet* _PtrSet_New(
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*				_delete,
-		Stg_Class_PrintFunction*				_print, 
-		Stg_Class_CopyFunction*				_copy, 
-		Set_UnionFunc*					_unionFunc, 
-		Set_IntersectionFunc*				_intersectionFunc, 
-		Set_SubtractionFunc*				_subtractionFunc, 
-		Dictionary*					dictionary, 
-		SizeT						elementSize, 
-		BTree_compareFunction*				compareFunc, 
-		BTree_dataCopyFunction*				dataCopyFunc, 
-		BTree_dataDeleteFunction*			dataDeleteFunc )
+PtrSet* _PtrSet_New(  PTRSET_DEFARGS  )
 {
 	PtrSet*	self;
 	
 	/* allocate memory */
 	assert( _sizeOfSelf >= sizeof(PtrSet) );
-	self = (PtrSet*)_Set_New(
-		_sizeOfSelf,
-		type,
-		_delete,
-		_print, 
-		_copy, 
-		_unionFunc, 
-		_intersectionFunc, 
-		_subtractionFunc, 
-		dictionary, 
-		elementSize, 
-		compareFunc, 
-		dataCopyFunc, 
-		dataDeleteFunc );
+	self = (PtrSet*)_Set_New(  SET_PASSARGS  );
 	
 	/* general info */
 	
@@ -244,3 +219,5 @@ int _PtrSet_CompareData( void* left, voi
 
 void _PtrSet_DeleteData( void* data ) {
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/PtrSet.h
--- a/Base/Container/src/PtrSet.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/PtrSet.h	Mon Nov 30 02:00:28 2009 +1100
@@ -69,20 +69,18 @@
 		Dictionary*					dictionary );
 	
 	/* Creation implementation */
-	PtrSet* _PtrSet_New(
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*				_delete,
-		Stg_Class_PrintFunction*				_print, 
-		Stg_Class_CopyFunction*				_copy, 
-		Set_UnionFunc*					_unionFunc, 
-		Set_IntersectionFunc*				_intersectionFunc, 
-		Set_SubtractionFunc*				_subtractionFunc, 
-		Dictionary*					dictionary, 
-		SizeT						elementSize, 
-		BTree_compareFunction*				compareFunc, 
-		BTree_dataCopyFunction*				dataCopyFunc, 
-		BTree_dataDeleteFunction*			dataDeleteFunc );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define PTRSET_DEFARGS \
+                SET_DEFARGS
+
+	#define PTRSET_PASSARGS \
+                SET_PASSARGS
+
+	PtrSet* _PtrSet_New(  PTRSET_DEFARGS  );
 	
 	
 	/* Initialise an instance */
@@ -129,3 +127,4 @@
 
 
 #endif /* __Base_Container_PtrSet_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/RangeSet.c
--- a/Base/Container/src/RangeSet.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/RangeSet.c	Mon Nov 30 02:00:28 2009 +1100
@@ -51,19 +51,22 @@ const Type RangeSet_Type = "RangeSet";
 */
 
 RangeSet* RangeSet_New() {
-	return _RangeSet_New( sizeof(RangeSet), 
-			      RangeSet_Type, 
-			      _RangeSet_Delete, 
-			      _RangeSet_Print, 
-			      _RangeSet_Copy );
+	/* Variables set in this function */
+	SizeT                      _sizeOfSelf = sizeof(RangeSet);
+	Type                              type = RangeSet_Type;
+	Stg_Class_DeleteFunction*      _delete = _RangeSet_Delete;
+	Stg_Class_PrintFunction*        _print = _RangeSet_Print;
+	Stg_Class_CopyFunction*          _copy = _RangeSet_Copy;
+
+	return _RangeSet_New(  RANGESET_PASSARGS  );
 }
 
-RangeSet* _RangeSet_New( RANGESET_DEFARGS ) {
+RangeSet* _RangeSet_New(  RANGESET_DEFARGS  ) {
 	RangeSet* self;
 
 	/* Allocate memory */
-	assert( sizeOfSelf >= sizeof(RangeSet) );
-	self = (RangeSet*)_Stg_Class_New( STG_CLASS_PASSARGS );
+	assert( _sizeOfSelf >= sizeof(RangeSet) );
+	self = (RangeSet*)_Stg_Class_New(  STG_CLASS_PASSARGS  );
 
 	/* Virtual info */
 
@@ -609,3 +612,5 @@ void RangeSet_Destruct( RangeSet* self )
 	self->btree = BTree_New( RangeSet_DataCompare, RangeSet_DataCopy, RangeSet_DataDelete, NULL, 
 				 BTREE_NO_DUPLICATES );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/RangeSet.h
--- a/Base/Container/src/RangeSet.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/RangeSet.h	Mon Nov 30 02:00:28 2009 +1100
@@ -63,14 +63,21 @@
 	** Constructors
 	*/
 
+
+
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
 	#define RANGESET_DEFARGS \
-		STG_CLASS_DEFARGS
+                STG_CLASS_DEFARGS
 
 	#define RANGESET_PASSARGS \
-		STG_CLASS_PASSARGS
+                STG_CLASS_PASSARGS
 
 	RangeSet* RangeSet_New();
-	RangeSet* _RangeSet_New( RANGESET_DEFARGS );
+	RangeSet* _RangeSet_New(  RANGESET_DEFARGS  );
 	void _RangeSet_Init( RangeSet* self );
 
 	/*--------------------------------------------------------------------------------------------------------------------------
@@ -133,3 +140,4 @@
 	void RangeSet_Destruct( RangeSet* self );
 
 #endif /* __Base_Container_RangeSet_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/STree.c
--- a/Base/Container/src/STree.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/STree.c	Mon Nov 30 02:00:28 2009 +1100
@@ -361,3 +361,5 @@ int STree_IntCmp( const void* left, cons
 
 void STree_IntDel( void* itm ) {
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/STreeMap.c
--- a/Base/Container/src/STreeMap.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/STreeMap.c	Mon Nov 30 02:00:28 2009 +1100
@@ -104,3 +104,5 @@ Bool STreeMap_HasKey( const void* _self,
 
    return STree_Has( self, key );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/Set.c
--- a/Base/Container/src/Set.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/Set.c	Mon Nov 30 02:00:28 2009 +1100
@@ -57,20 +57,17 @@ Set* Set_New_all(
 		BTree_dataCopyFunction*				dataCopyFunc, 
 		BTree_dataDeleteFunction*			dataDeleteFunc )
 {
-	return _Set_New( 
-		sizeof(Set), 
-		Set_Type, 
-		_Set_Delete, 
-		_Set_Print, 
-		NULL, 
-		_Set_Union, 
-		_Set_Intersection, 
-		_Set_Subtraction, 
-		dictionary, 
-		elementSize, 
-		compareFunc, 
-		dataCopyFunc, 
-		dataDeleteFunc );
+	/* Variables set in this function */
+	SizeT                            _sizeOfSelf = sizeof(Set);
+	Type                                    type = Set_Type;
+	Stg_Class_DeleteFunction*            _delete = _Set_Delete;
+	Stg_Class_PrintFunction*              _print = _Set_Print;
+	Stg_Class_CopyFunction*                _copy = NULL;
+	Set_UnionFunc*                    _unionFunc = _Set_Union;
+	Set_IntersectionFunc*      _intersectionFunc = _Set_Intersection;
+	Set_SubtractionFunc*        _subtractionFunc = _Set_Subtraction;
+
+	return _Set_New(  SET_PASSARGS  );
 }
 
 
@@ -102,31 +99,13 @@ void Set_Init(
 }
 
 
-Set* _Set_New(
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*				_delete,
-		Stg_Class_PrintFunction*				_print, 
-		Stg_Class_CopyFunction*				_copy, 
-		Set_UnionFunc*					_unionFunc, 
-		Set_IntersectionFunc*				_intersectionFunc, 
-		Set_SubtractionFunc*				_subtractionFunc, 
-		Dictionary*					dictionary, 
-		SizeT						elementSize, 
-		BTree_compareFunction*				compareFunc, 
-		BTree_dataCopyFunction*				dataCopyFunc, 
-		BTree_dataDeleteFunction*			dataDeleteFunc )
+Set* _Set_New(  SET_DEFARGS  )
 {
 	Set*	self;
 	
 	/* allocate memory */
 	assert( _sizeOfSelf >= sizeof(Set) );
-	self = (Set*)_Stg_Class_New(
-		_sizeOfSelf,
-		type,
-		_delete,
-		_print, 
-		_copy );
+	self = (Set*)_Stg_Class_New(  STG_CLASS_PASSARGS  );
 	
 	/* general info */
 	self->dictionary = dictionary;
@@ -297,3 +276,5 @@ void _Set_BTreeSubtraction( void* data, 
 		Set_Insert( ((Set**)pack)[1], data );
 	}
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/Set.h
--- a/Base/Container/src/Set.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/Set.h	Mon Nov 30 02:00:28 2009 +1100
@@ -86,20 +86,34 @@
 		BTree_dataDeleteFunction*			dataDeleteFunc );
 	
 	/* Creation implementation */
-	Set* _Set_New(
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*				_delete,
-		Stg_Class_PrintFunction*				_print, 
-		Stg_Class_CopyFunction*				_copy, 
-		Set_UnionFunc*					_unionFunc, 
-		Set_IntersectionFunc*				_intersectionFunc, 
-		Set_SubtractionFunc*				_subtractionFunc, 
-		Dictionary*					dictionary, 
-		SizeT						elementSize, 
-		BTree_compareFunction*				compareFunc, 
-		BTree_dataCopyFunction*				dataCopyFunc, 
-		BTree_dataDeleteFunction*			dataDeleteFunc );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define SET_DEFARGS \
+                STG_CLASS_DEFARGS, \
+                Set_UnionFunc*                    _unionFunc, \
+                Set_IntersectionFunc*      _intersectionFunc, \
+                Set_SubtractionFunc*        _subtractionFunc, \
+                Dictionary*                       dictionary, \
+                SizeT                            elementSize, \
+                BTree_compareFunction*           compareFunc, \
+                BTree_dataCopyFunction*         dataCopyFunc, \
+                BTree_dataDeleteFunction*     dataDeleteFunc
+
+	#define SET_PASSARGS \
+                STG_CLASS_PASSARGS, \
+	        _unionFunc,        \
+	        _intersectionFunc, \
+	        _subtractionFunc,  \
+	        dictionary,        \
+	        elementSize,       \
+	        compareFunc,       \
+	        dataCopyFunc,      \
+	        dataDeleteFunc   
+
+	Set* _Set_New(  SET_DEFARGS  );
 	
 	
 	/* Initialise an instance */
@@ -172,3 +186,4 @@
 
 
 #endif /* __Base_Container_Set_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/UIntMap.c
--- a/Base/Container/src/UIntMap.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/UIntMap.c	Mon Nov 30 02:00:28 2009 +1100
@@ -58,19 +58,22 @@ const Type UIntMap_Type = "UIntMap";
 */
 
 UIntMap* UIntMap_New() {
-	return _UIntMap_New( sizeof(UIntMap), 
-			     UIntMap_Type, 
-			     _UIntMap_Delete, 
-			     _UIntMap_Print, 
-			     _UIntMap_Copy );
+	/* Variables set in this function */
+	SizeT                      _sizeOfSelf = sizeof(UIntMap);
+	Type                              type = UIntMap_Type;
+	Stg_Class_DeleteFunction*      _delete = _UIntMap_Delete;
+	Stg_Class_PrintFunction*        _print = _UIntMap_Print;
+	Stg_Class_CopyFunction*          _copy = _UIntMap_Copy;
+
+	return _UIntMap_New(  UINTMAP_PASSARGS  );
 }
 
-UIntMap* _UIntMap_New( UINTMAP_DEFARGS ) {
+UIntMap* _UIntMap_New(  UINTMAP_DEFARGS  ) {
 	UIntMap* self;
 	
 	/* Allocate memory */
-	assert( sizeOfSelf >= sizeof(UIntMap) );
-	self = (UIntMap*)_Stg_Class_New( STG_CLASS_PASSARGS );
+	assert( _sizeOfSelf >= sizeof(UIntMap) );
+	self = (UIntMap*)_Stg_Class_New(  STG_CLASS_PASSARGS  );
 
 	/* Virtual info */
 
@@ -260,3 +263,5 @@ void UIntMap_ParseNode( void* data, void
 	parseStruct->keys[parseStruct->curItem] = ((unsigned*)data)[0];
 	parseStruct->vals[parseStruct->curItem++] = ((unsigned*)data)[1];
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/src/UIntMap.h
--- a/Base/Container/src/UIntMap.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/src/UIntMap.h	Mon Nov 30 02:00:28 2009 +1100
@@ -63,14 +63,21 @@
 	** Constructors
 	*/
 
-	#define UINTMAP_DEFARGS		\
-		STG_CLASS_DEFARGS
 
-	#define UINTMAP_PASSARGS	\
-		STG_CLASS_PASSARGS
+
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define UINTMAP_DEFARGS \
+                STG_CLASS_DEFARGS
+
+	#define UINTMAP_PASSARGS \
+                STG_CLASS_PASSARGS
 
 	UIntMap* UIntMap_New();
-	UIntMap* _UIntMap_New( UINTMAP_DEFARGS );
+	UIntMap* _UIntMap_New(  UINTMAP_DEFARGS  );
 	void _UIntMap_Init( UIntMap* self );
 
 	/*--------------------------------------------------------------------------------------------------------------------------
@@ -107,3 +114,4 @@
 	void UIntMap_ParseNode( void* data, void* _parseStruct );
 
 #endif /* __Base_Container_UIntMap_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/tests/BTreeSuite.c
--- a/Base/Container/tests/BTreeSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/tests/BTreeSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -291,3 +291,5 @@ void BTreeSuite( pcu_suite_t* suite ) {
    pcu_suite_addTest( suite, BTreeSuite_TestComplexityPerformance );
    pcu_suite_addTest( suite, BTreeSuite_TestParseTreeForAverage );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/tests/HashTableSuite.c
--- a/Base/Container/tests/HashTableSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/tests/HashTableSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -268,3 +268,5 @@ void HashTableSuite( pcu_suite_t* suite 
    pcu_suite_addTest( suite, HashTableSuite_TestInsertPointers );
    pcu_suite_addTest( suite, HashTableSuite_TestSearchPointers );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/tests/IArraySuite.c
--- a/Base/Container/tests/IArraySuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/tests/IArraySuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -114,3 +114,5 @@ void IArraySuite( pcu_suite_t* suite ) {
    pcu_suite_addTest( suite, IArraySuite_TestAdd );
    pcu_suite_addTest( suite, IArraySuite_TestRemove );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/tests/IMapSuite.c
--- a/Base/Container/tests/IMapSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/tests/IMapSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -139,3 +139,5 @@ void IMapSuite( pcu_suite_t* suite ) {
    pcu_suite_addTest( suite, IMapSuite_TestMap );
    pcu_suite_addTest( suite, IMapSuite_TestRemove );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/tests/ISetSuite.c
--- a/Base/Container/tests/ISetSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/tests/ISetSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -160,3 +160,5 @@ void ISetSuite( pcu_suite_t* suite ) {
    pcu_suite_addTest( suite, ISetSuite_TestIsect );
    pcu_suite_addTest( suite, ISetSuite_TestSubtr );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/tests/IndexMapSuite.c
--- a/Base/Container/tests/IndexMapSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/tests/IndexMapSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -73,3 +73,5 @@ void IndexMapSuite( pcu_suite_t* suite )
    pcu_suite_setFixtures( suite, IndexMapSuite_Setup, IndexMapSuite_Teardown );
    pcu_suite_addTest( suite, IndexMapSuite_TestAppendFind );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/tests/IndexSetSuite.c
--- a/Base/Container/tests/IndexSetSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/tests/IndexSetSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -422,3 +422,5 @@ void IndexSetSuite( pcu_suite_t* suite )
    pcu_suite_addTest( suite, IndexSetSuite_TestBadAssign );
    #endif
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/tests/LinkedListIteratorSuite.c
--- a/Base/Container/tests/LinkedListIteratorSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/tests/LinkedListIteratorSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -112,3 +112,5 @@ void LinkedListIteratorSuite( pcu_suite_
    pcu_suite_setFixtures( suite, LinkedListIteratorSuite_Setup, LinkedListIteratorSuite_Teardown );
    pcu_suite_addTest( suite, LinkedListIteratorSuite_TestRetreive );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/tests/LinkedListSuite.c
--- a/Base/Container/tests/LinkedListSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/tests/LinkedListSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -212,3 +212,5 @@ void LinkedListSuite( pcu_suite_t* suite
    pcu_suite_addTest( suite, LinkedListSuite_TestReturnArray );
    pcu_suite_addTest( suite, LinkedListSuite_TestFindNodeData );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/tests/ListSuite.c
--- a/Base/Container/tests/ListSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/tests/ListSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -177,3 +177,5 @@ void ListSuite( pcu_suite_t* suite ) {
    pcu_suite_addTest( suite, ListSuite_TestRemove );
    pcu_suite_addTest( suite, ListSuite_TestExists );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/tests/MPIRoutinesSuite.c
--- a/Base/Container/tests/MPIRoutinesSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/tests/MPIRoutinesSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -299,3 +299,5 @@ void MPIRoutinesSuite( pcu_suite_t* suit
    pcu_suite_addTest( suite, MPIRoutinesSuite_TestAlltoall_1D );
    pcu_suite_addTest( suite, MPIRoutinesSuite_TestAlltoall_2D );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/tests/MaxHeapSuite.c
--- a/Base/Container/tests/MaxHeapSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/tests/MaxHeapSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -172,3 +172,5 @@ void MaxHeapSuite( pcu_suite_t* suite ) 
    pcu_suite_addTest( suite, MaxHeapSuite_TestCreationExtraction );
    pcu_suite_addTest( suite, MaxHeapSuite_TestInsertionExtraction );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/tests/MemoryPoolSuite.c
--- a/Base/Container/tests/MemoryPoolSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/tests/MemoryPoolSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -191,3 +191,5 @@ void MemoryPoolSuite( pcu_suite_t* suite
    pcu_suite_addTest( suite, MemoryPoolSuite_TestDeallocation );
    pcu_suite_addTest( suite, MemoryPoolSuite_TestIllegalDeallocation );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/tests/PtrMapSuite.c
--- a/Base/Container/tests/PtrMapSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/tests/PtrMapSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -72,3 +72,5 @@ void PtrMapSuite( pcu_suite_t* suite ) {
    pcu_suite_setFixtures( suite, PtrMapSuite_Setup, PtrMapSuite_Teardown );
    pcu_suite_addTest( suite, PtrMapSuite_TestAppendFind );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/tests/PtrSetSuite.c
--- a/Base/Container/tests/PtrSetSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/tests/PtrSetSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -203,3 +203,5 @@ void PtrSetSuite( pcu_suite_t* suite ) {
    pcu_suite_addTest( suite, PtrSetSuite_TestSubtraction );
    pcu_suite_addTest( suite, PtrSetSuite_TestPerformance );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/tests/RangeSetSuite.c
--- a/Base/Container/tests/RangeSetSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/tests/RangeSetSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -264,3 +264,5 @@ void RangeSetSuite( pcu_suite_t* suite )
    pcu_suite_addTest( suite, RangeSetSuite_TestSubtraction );
    pcu_suite_addTest( suite, RangeSetSuite_TestPickle );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/tests/STreeMapSuite.c
--- a/Base/Container/tests/STreeMapSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/tests/STreeMapSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -93,3 +93,5 @@ void STreeMapSuite( pcu_suite_t* suite )
    pcu_suite_addTest( suite, STreeMapSuite_TestInsert );
    pcu_suite_addTest( suite, STreeMapSuite_TestMap );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/tests/STreeSuite.c
--- a/Base/Container/tests/STreeSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/tests/STreeSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -120,3 +120,5 @@ void STreeSuite( pcu_suite_t* suite ) {
    pcu_suite_addTest( suite, STreeSuite_TestRemove );
    pcu_suite_addTest( suite, STreeSuite_TestHas );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/tests/SetSuite.c
--- a/Base/Container/tests/SetSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/tests/SetSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -228,3 +228,5 @@ void SetSuite( pcu_suite_t* suite ) {
    pcu_suite_addTest( suite, SetSuite_TestSubtraction );
    pcu_suite_addTest( suite, SetSuite_TestPerformance );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Container/tests/UIntMapSuite.c
--- a/Base/Container/tests/UIntMapSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Container/tests/UIntMapSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -109,3 +109,5 @@ void UIntMapSuite( pcu_suite_t* suite ) 
    pcu_suite_addTest( suite, UIntMapSuite_TestMap );
    pcu_suite_addTest( suite, UIntMapSuite_TestMemoryMap );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/src/AbstractContext.c
--- a/Base/Context/src/AbstractContext.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/src/AbstractContext.c	Mon Nov 30 02:00:28 2009 +1100
@@ -89,12 +89,12 @@ const Type AbstractContext_Type = "Conte
 const Type AbstractContext_Type = "Context";
 const Type AbstractContext_Type_Verbose = "Context-verbose";
 
-AbstractContext* _AbstractContext_New( ABSTRACTCONTEXT_DEFARGS ) {
+AbstractContext* _AbstractContext_New(  ABSTRACTCONTEXT_DEFARGS  ) {
 	AbstractContext* self;
 	
 	/* Allocate memory */
-	assert( sizeOfSelf >= sizeof(AbstractContext) );
-	self = (AbstractContext*)_Stg_Component_New( STG_COMPONENT_PASSARGS );
+	assert( _sizeOfSelf >= sizeof(AbstractContext) );
+	self = (AbstractContext*)_Stg_Component_New(  STG_COMPONENT_PASSARGS  );
 	
 	/* General info */
 	self->dictionary = dictionary;
@@ -1159,3 +1159,5 @@ void _AbstractContext_CreateCheckpointDi
       MPI_Barrier( self->communicator );
    }
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/src/AbstractContext.h
--- a/Base/Context/src/AbstractContext.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/src/AbstractContext.h	Mon Nov 30 02:00:28 2009 +1100
@@ -172,28 +172,35 @@
 
 	struct AbstractContext { __AbstractContext };
 		
-	#define ABSTRACTCONTEXT_DEFARGS \
-		STG_COMPONENT_DEFARGS, \
-			AbstractContext_SetDt*	_setDt, \
-			double						startTime, \
-			double						stopTime, \
-			MPI_Comm						communicator, \
-			Dictionary*					dictionary
 
-	#define ABSTRACTCONTEXT_PASSARGS \
-		STG_COMPONENT_PASSARGS, \
-			_setDt, \
-			startTime, \
-			stopTime, \
-			communicator, \
-			dictionary
 		
 	/* Class stuff ************************************************************************************************************/
 	
 	/* No "AbstractContext_New" and "AbstractContext_Init" as this is an abstract class */
 	
 	/* Creation implementation / Virtual constructor */
-	AbstractContext* _AbstractContext_New( ABSTRACTCONTEXT_DEFARGS ); 
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define ABSTRACTCONTEXT_DEFARGS \
+                STG_COMPONENT_DEFARGS, \
+                AbstractContext_SetDt*        _setDt, \
+                double                     startTime, \
+                double                      stopTime, \
+                MPI_Comm                communicator, \
+                Dictionary*               dictionary
+
+	#define ABSTRACTCONTEXT_PASSARGS \
+                STG_COMPONENT_PASSARGS, \
+	        _setDt,       \
+	        startTime,    \
+	        stopTime,     \
+	        communicator, \
+	        dictionary  
+
+	AbstractContext* _AbstractContext_New(  ABSTRACTCONTEXT_DEFARGS  ); 
 
 	/* Initialisation implementation */
 	void _AbstractContext_Init( AbstractContext* self );
@@ -297,3 +304,4 @@
 
 	void _AbstractContext_CreateCheckpointDirectory( void* _context );
 #endif /* __Base_Context_AbstractContext_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/src/Codelet.c
--- a/Base/Context/src/Codelet.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/src/Codelet.c	Mon Nov 30 02:00:28 2009 +1100
@@ -53,6 +53,11 @@
 #include <assert.h>
 #include <string.h>
 
+	/* The following terms are parameters that have been passed into this function but are being set before being passed onto the parent */
+	/* This means that any values of these parameters that are passed into this function are not passed onto the parent function
+	   and so should be set to ZERO in any children of this class. */
+	nameAllocationType = NON_GLOBAL;
+
 const Type Codelet_Type = "Codelet";
 
 void* Codelet_New(
@@ -65,49 +70,26 @@ void* Codelet_New(
 		Stg_Component_DestroyFunction*                  _destroy,
 		Name                                            name )
 {
-	return _Codelet_New(
-			sizeof( Codelet ),
-			type,
-			_Codelet_Delete,
-			_Codelet_Print, 
-			_Codelet_Copy,
-			_defaultConstructor,
-			_construct,
-			_build,
-			_initialise,
-			_execute,
-			_destroy,
-			name );
+	/* Variables set in this function */
+	SizeT                      _sizeOfSelf = sizeof( Codelet );
+	Stg_Class_DeleteFunction*      _delete = _Codelet_Delete;
+	Stg_Class_PrintFunction*        _print = _Codelet_Print;
+	Stg_Class_CopyFunction*          _copy = _Codelet_Copy;
+
+	/* Variables that are set to ZERO are variables that will be set either by the current _New function or another parent _New function further up the hierachy */
+	AllocationType  nameAllocationType = ZERO;
+
+	return _Codelet_New(  CODELET_PASSARGS  );
 }
 
-void* _Codelet_New(
-		SizeT                                           _sizeOfSelf,
-		Type                                            type,
-		Stg_Class_DeleteFunction*                       _delete,
-		Stg_Class_PrintFunction*                        _print,
-		Stg_Class_CopyFunction*                         _copy,
-		Stg_Component_DefaultConstructorFunction*       _defaultConstructor,
-		Stg_Component_ConstructFunction*                _construct,
-		Stg_Component_BuildFunction*                    _build,
-		Stg_Component_InitialiseFunction*               _initialise,
-		Stg_Component_ExecuteFunction*                  _execute,
-		Stg_Component_DestroyFunction*                  _destroy,
-		Name                                            name )
+void* _Codelet_New(  CODELET_DEFARGS  )
 {
-	return _Stg_Component_New(
-			_sizeOfSelf,
-			type,
-			_delete,
-			_print, 
-			_copy,
-			_defaultConstructor,
-			_construct,
-			_build,
-			_initialise,
-			_execute,
-			_destroy,
-			name,
-			NON_GLOBAL );
+	/* The following terms are parameters that have been passed into this function but are being set before being passed onto the parent */
+	/* This means that any values of these parameters that are passed into this function are not passed onto the parent function
+	   and so should be set to ZERO in any children of this class. */
+	nameAllocationType = NON_GLOBAL;
+
+	return _Stg_Component_New(  STG_COMPONENT_PASSARGS  );
 }
 
 void  _Codelet_Delete( void* codelet ) {
@@ -153,3 +135,5 @@ Dictionary* Codelet_GetPluginDictionary(
 
 	return NULL;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/src/Codelet.h
--- a/Base/Context/src/Codelet.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/src/Codelet.h	Mon Nov 30 02:00:28 2009 +1100
@@ -61,19 +61,18 @@
 			Stg_Component_DestroyFunction*                  _destroy,
 			Name                                            name );
 	
-	void* _Codelet_New(
-			SizeT                                           _sizeOfSelf,
-			Type                                            type,
-			Stg_Class_DeleteFunction*                       _delete,
-			Stg_Class_PrintFunction*                        _print,
-			Stg_Class_CopyFunction*                         _copy,
-			Stg_Component_DefaultConstructorFunction*       _defaultConstructor,
-			Stg_Component_ConstructFunction*                _construct,
-			Stg_Component_BuildFunction*                    _build,
-			Stg_Component_InitialiseFunction*               _initialise,
-			Stg_Component_ExecuteFunction*                  _execute,
-			Stg_Component_DestroyFunction*                  _destroy,
-			Name                                            name );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define CODELET_DEFARGS \
+                STG_COMPONENT_DEFARGS
+
+	#define CODELET_PASSARGS \
+                STG_COMPONENT_PASSARGS
+
+	void* _Codelet_New(  CODELET_DEFARGS  );
 
 	void  _Codelet_Delete( void* codelet );
 	void  _Codelet_Print( void* codelet, Stream* stream );
@@ -87,3 +86,4 @@
 	Dictionary* Codelet_GetPluginDictionary( void* codelet, Dictionary* rootDict );
 
 #endif
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/src/CompositeVC.c
--- a/Base/Context/src/CompositeVC.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/src/CompositeVC.c	Mon Nov 30 02:00:28 2009 +1100
@@ -83,41 +83,39 @@ CompositeVC* CompositeVC_New(
 }
 
 CompositeVC* _CompositeVC_DefaultNew( Name name ) {
-	return (CompositeVC*)_CompositeVC_New(
-		sizeof(CompositeVC), 
-		CompositeVC_Type, 
-		_CompositeVC_Delete, 
-		_CompositeVC_Print,
-		_CompositeVC_Copy,
-		(Stg_Component_DefaultConstructorFunction*)_CompositeVC_DefaultNew,
-		_CompositeVC_AssignFromXML,
-		_CompositeVC_Build,
-		_VariableCondition_Initialise,
-		_VariableCondition_Execute,
-		_CompositeVC_Destroy,	
-		name,
-		NON_GLOBAL,
-		NULL,
-		_CompositeVC_PrintConcise,
-		_CompositeVC_ReadDictionary,
-		_CompositeVC_GetSet, 
-		_CompositeVC_GetVariableCount, 
-		_CompositeVC_GetVariableIndex, 
-		_CompositeVC_GetValueIndex, 
-		_CompositeVC_GetValueCount, 
-		_CompositeVC_GetValue, 
-		_CompositeVC_Apply, 
-		NULL/*variable_Register*/, 
-		NULL/*conFunc_Register*/,
-		NULL );
+	/* Variables set in this function */
+	SizeT                                              _sizeOfSelf = sizeof(CompositeVC);
+	Type                                                      type = CompositeVC_Type;
+	Stg_Class_DeleteFunction*                              _delete = _CompositeVC_Delete;
+	Stg_Class_PrintFunction*                                _print = _CompositeVC_Print;
+	Stg_Class_CopyFunction*                                  _copy = _CompositeVC_Copy;
+	Stg_Component_DefaultConstructorFunction*  _defaultConstructor = (Stg_Component_DefaultConstructorFunction*)_CompositeVC_DefaultNew;
+	Stg_Component_ConstructFunction*                    _construct = _CompositeVC_AssignFromXML;
+	Stg_Component_BuildFunction*                            _build = _CompositeVC_Build;
+	Stg_Component_InitialiseFunction*                  _initialise = _VariableCondition_Initialise;
+	Stg_Component_ExecuteFunction*                        _execute = _VariableCondition_Execute;
+	Stg_Component_DestroyFunction*                        _destroy = _CompositeVC_Destroy;
+	AllocationType                              nameAllocationType = NON_GLOBAL;
+	VariableCondition_BuildSelfFunc*                    _buildSelf = NULL;
+	VariableCondition_PrintConciseFunc*              _printConcise = _CompositeVC_PrintConcise;
+	VariableCondition_ReadDictionaryFunc*          _readDictionary = _CompositeVC_ReadDictionary;
+	VariableCondition_GetSetFunc*                          _getSet = _CompositeVC_GetSet;
+	VariableCondition_GetVariableCountFunc*      _getVariableCount = _CompositeVC_GetVariableCount;
+	VariableCondition_GetVariableIndexFunc*      _getVariableIndex = _CompositeVC_GetVariableIndex;
+	VariableCondition_GetValueIndexFunc*            _getValueIndex = _CompositeVC_GetValueIndex;
+	VariableCondition_GetValueCountFunc*            _getValueCount = _CompositeVC_GetValueCount;
+	VariableCondition_GetValueFunc*                      _getValue = _CompositeVC_GetValue;
+	VariableCondition_ApplyFunc*                            _apply = _CompositeVC_Apply;
+
+	return (CompositeVC*)_CompositeVC_New(  COMPOSITEVC_PASSARGS  );
 }
 
-CompositeVC* _CompositeVC_New( COMPOSITEVC_DEFARGS ) {
+CompositeVC* _CompositeVC_New(  COMPOSITEVC_DEFARGS  ) {
 	CompositeVC* self;
 	
 	/* Allocate memory/General info */
-	assert (sizeOfSelf >= sizeof(CompositeVC) );
-	self = (CompositeVC*)_VariableCondition_New( VARIABLECONDITION_PASSARGS );
+	assert (_sizeOfSelf >= sizeof(CompositeVC) );
+	self = (CompositeVC*)_VariableCondition_New(  VARIABLECONDITION_PASSARGS  );
 	
 	/* Virtual info */
 	
@@ -650,3 +648,5 @@ void _CompositeVC_Apply( void* _self, vo
    for( ii = 0; ii < self->nIndepItems; ii++ )
       VariableCondition_Apply( self->indepItems[ii], _ctx );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/src/CompositeVC.h
--- a/Base/Context/src/CompositeVC.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/src/CompositeVC.h	Mon Nov 30 02:00:28 2009 +1100
@@ -60,11 +60,7 @@
 	
 	struct _CompositeVC { __CompositeVC };
 	
-	#define COMPOSITEVC_DEFARGS \
-    	VARIABLECONDITION_DEFARGS
 
-	#define COMPOSITEVC_PASSARGS \
-    	VARIABLECONDITION_PASSARGS
 
 	/*--------------------------------------------------------------------------------------------------------------------------
 	** Constructor
@@ -93,7 +89,18 @@
 		Dictionary*							dictionary,
 		void*									data );
 	
-	CompositeVC* _CompositeVC_New( COMPOSITEVC_DEFARGS );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define COMPOSITEVC_DEFARGS \
+                VARIABLECONDITION_DEFARGS
+
+	#define COMPOSITEVC_PASSARGS \
+                VARIABLECONDITION_PASSARGS
+
+	CompositeVC* _CompositeVC_New(  COMPOSITEVC_DEFARGS  );
 	
 	void _CompositeVC_Init(
 		void* compositeVC,
@@ -165,3 +172,4 @@ void _CompositeVC_Apply( void* _self, vo
 
 	
 #endif /* __Base_Automation_CompositeVC_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/src/ConditionFunction.c
--- a/Base/Context/src/ConditionFunction.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/src/ConditionFunction.c	Mon Nov 30 02:00:28 2009 +1100
@@ -49,8 +49,14 @@ const Type ConditionFunction_Type = "Con
 
 ConditionFunction* ConditionFunction_New(ConditionFunction_ApplyFunc* apply, Name name)
 {
-	return _ConditionFunction_New(sizeof(ConditionFunction), ConditionFunction_Type, _ConditionFunction_Delete,
-		_ConditionFunction_Print, NULL, apply, name);
+	/* Variables set in this function */
+	SizeT                      _sizeOfSelf = sizeof(ConditionFunction);
+	Type                              type = ConditionFunction_Type;
+	Stg_Class_DeleteFunction*      _delete = _ConditionFunction_Delete;
+	Stg_Class_PrintFunction*        _print = _ConditionFunction_Print;
+	Stg_Class_CopyFunction*          _copy = NULL;
+
+	return _ConditionFunction_New(  CONDITIONFUNCTION_PASSARGS  );
 }
 
 
@@ -73,20 +79,13 @@ void ConditionFunction_Init(ConditionFun
 }
 
 
-ConditionFunction* _ConditionFunction_New( 
-		SizeT				_sizeOfSelf, 
-		Type				type,
-		Stg_Class_DeleteFunction*		_delete,
-		Stg_Class_PrintFunction*		_print, 
-		Stg_Class_CopyFunction*		_copy, 
-		ConditionFunction_ApplyFunc*	apply,
-		Name				name)
+ConditionFunction* _ConditionFunction_New(  CONDITIONFUNCTION_DEFARGS  )
 {
 	ConditionFunction* self;
 	
 	/* Allocate memory */
 	assert( _sizeOfSelf >= sizeof(ConditionFunction) );
-	self = (ConditionFunction*)_Stg_Class_New(_sizeOfSelf, type, _delete, _print, _copy);
+	self = (ConditionFunction*)_Stg_Class_New(  STG_CLASS_PASSARGS  );
 	
 	/* General info */
 	
@@ -169,3 +168,5 @@ void _ConditionFunction_Apply(void* cond
 	
 	ConditionFunction_Apply(self, index, var_I, context, result);
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/src/ConditionFunction.h
--- a/Base/Context/src/ConditionFunction.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/src/ConditionFunction.h	Mon Nov 30 02:00:28 2009 +1100
@@ -70,14 +70,22 @@
 	
 	void			ConditionFunction_Init(ConditionFunction* self, ConditionFunction_ApplyFunc* apply, Name name);
 	
-	ConditionFunction*	_ConditionFunction_New( 
-					SizeT				_sizeOfSelf, 
-					Type				type,
-					Stg_Class_DeleteFunction*		_delete,
-					Stg_Class_PrintFunction*		_print, 
-					Stg_Class_CopyFunction*		_copy, 
-					ConditionFunction_ApplyFunc*	apply,
-					Name				name);
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define CONDITIONFUNCTION_DEFARGS \
+                STG_CLASS_DEFARGS, \
+                ConditionFunction_ApplyFunc*  apply, \
+                Name                           name
+
+	#define CONDITIONFUNCTION_PASSARGS \
+                STG_CLASS_PASSARGS, \
+	        apply, \
+	        name 
+
+	ConditionFunction*	_ConditionFunction_New(  CONDITIONFUNCTION_DEFARGS  );
 	
 	void			_ConditionFunction_Init(void* conditionFunction, ConditionFunction_ApplyFunc* apply, Name name);
 	
@@ -118,3 +126,4 @@
 
 
 #endif /* __Base_Automation_ConditionFunction_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/src/ConditionFunction_Register.c
--- a/Base/Context/src/ConditionFunction_Register.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/src/ConditionFunction_Register.c	Mon Nov 30 02:00:28 2009 +1100
@@ -51,9 +51,15 @@ ConditionFunction_Register* condFunc_Reg
 */
 
 ConditionFunction_Register* ConditionFunction_Register_New(void)
-{ 
-	return _ConditionFunction_Register_New( sizeof(ConditionFunction_Register), ConditionFunction_Register_Type, 
-		_ConditionFunction_Register_Delete, _ConditionFunction_Register_Print, NULL);
+{
+	/* Variables set in this function */
+	SizeT                      _sizeOfSelf = sizeof(ConditionFunction_Register);
+	Type                              type = ConditionFunction_Register_Type;
+	Stg_Class_DeleteFunction*      _delete = _ConditionFunction_Register_Delete;
+	Stg_Class_PrintFunction*        _print = _ConditionFunction_Register_Print;
+	Stg_Class_CopyFunction*          _copy = NULL;
+ 
+	return _ConditionFunction_Register_New(  CONDITIONFUNCTION_REGISTER_PASSARGS  );
 }
 
 
@@ -76,17 +82,12 @@ void ConditionFunction_Register_Init(Con
 }
 
 
-ConditionFunction_Register* _ConditionFunction_Register_New( 
-				SizeT			_sizeOfSelf,
-				Type			type,
-				Stg_Class_DeleteFunction*	_delete,
-				Stg_Class_PrintFunction*	_print, 
-				Stg_Class_CopyFunction*	_copy )
+ConditionFunction_Register* _ConditionFunction_Register_New(  CONDITIONFUNCTION_REGISTER_DEFARGS  )
 {
 	ConditionFunction_Register*	self;
 	
 	/* Allocate memory */
-	self = (ConditionFunction_Register*)_Stg_Class_New(_sizeOfSelf, type, _delete, _print, _copy);
+	self = (ConditionFunction_Register*)_Stg_Class_New(  STG_CLASS_PASSARGS  );
 	
 	/* Virtual info */
 	
@@ -220,3 +221,5 @@ void ConditionFunction_Register_PrintNam
 		Journal_Printf( stream, "\"%s\", ", self->_cf[cf_I]->name );
 	}
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/src/ConditionFunction_Register.h
--- a/Base/Context/src/ConditionFunction_Register.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/src/ConditionFunction_Register.h	Mon Nov 30 02:00:28 2009 +1100
@@ -74,12 +74,18 @@
 	
 	void				ConditionFunction_Register_Init(ConditionFunction_Register* self);
 	
-	ConditionFunction_Register*	_ConditionFunction_Register_New( 
-						SizeT			_sizeOfSelf,
-						Type			type,
-						Stg_Class_DeleteFunction*	_delete,
-						Stg_Class_PrintFunction*	_print,
-						Stg_Class_CopyFunction*	_copy );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define CONDITIONFUNCTION_REGISTER_DEFARGS \
+                STG_CLASS_DEFARGS
+
+	#define CONDITIONFUNCTION_REGISTER_PASSARGS \
+                STG_CLASS_PASSARGS
+
+	ConditionFunction_Register*	_ConditionFunction_Register_New(  CONDITIONFUNCTION_REGISTER_DEFARGS  );
 		
 	void				_ConditionFunction_Register_Init(void* conditionFunction_Register);
 	
@@ -120,3 +126,4 @@
 
 	
 #endif /* __Base_Automation_ConditionFunction_Register_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/src/ContextEntryPoint.c
--- a/Base/Context/src/ContextEntryPoint.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/src/ContextEntryPoint.c	Mon Nov 30 02:00:28 2009 +1100
@@ -51,8 +51,18 @@ const Type ContextEntryPoint_Type = "Con
 
 
 ContextEntryPoint* ContextEntryPoint_New( const Name name, unsigned int castType ) {
-	return _ContextEntryPoint_New( sizeof(ContextEntryPoint), ContextEntryPoint_Type, _EntryPoint_Delete, 
-		_EntryPoint_Print, NULL, _ContextEntryPoint_GetRun, name, castType );
+	/* Variables set in this function */
+	SizeT                       _sizeOfSelf = sizeof(ContextEntryPoint);
+	Type                               type = ContextEntryPoint_Type;
+	Stg_Class_DeleteFunction*       _delete = _EntryPoint_Delete;
+	Stg_Class_PrintFunction*         _print = _EntryPoint_Print;
+	Stg_Class_CopyFunction*           _copy = NULL;
+	EntryPoint_GetRunFunction*      _getRun = _ContextEntryPoint_GetRun;
+
+	/* Variables that are set to ZERO are variables that will be set either by the current _New function or another parent _New function further up the hierachy */
+	AllocationType  nameAllocationType = ZERO;
+
+	return _ContextEntryPoint_New(  CONTEXTENTRYPOINT_PASSARGS  );
 }
 
 void ContextEntryPoint_Init( void* contextEntryPoint, Name name, unsigned int castType ) {
@@ -76,22 +86,13 @@ void ContextEntryPoint_Init( void* conte
 	_ContextEntryPoint_Init( self );
 }
 
-ContextEntryPoint* _ContextEntryPoint_New( 
-		SizeT				_sizeOfSelf,
-		Type				type,
-		Stg_Class_DeleteFunction*		_delete,
-		Stg_Class_PrintFunction*		_print,
-		Stg_Class_CopyFunction*		_copy, 
-		EntryPoint_GetRunFunction*	_getRun,
-		Name				name,
-		unsigned int			castType )
+ContextEntryPoint* _ContextEntryPoint_New(  CONTEXTENTRYPOINT_DEFARGS  )
 {
 	ContextEntryPoint* self;
 	
 	/* Allocate memory */
 	assert( _sizeOfSelf >= sizeof(ContextEntryPoint) );
-	self = (ContextEntryPoint*)_EntryPoint_New( _sizeOfSelf, type, _delete, _print, _copy, 
-		_getRun, name, castType );
+	self = (ContextEntryPoint*)_EntryPoint_New(  ENTRYPOINT_PASSARGS  );
 	
 	/* General info */
 	
@@ -163,3 +164,5 @@ void _ContextEntryPoint_Run_Step( void* 
 	#endif
 }
 
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/src/ContextEntryPoint.h
--- a/Base/Context/src/ContextEntryPoint.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/src/ContextEntryPoint.h	Mon Nov 30 02:00:28 2009 +1100
@@ -69,15 +69,18 @@
 	void ContextEntryPoint_Init( void* contextEntryPoint, Name name, unsigned int castType );
 	
 	/* Creation implementation */
-	ContextEntryPoint* _ContextEntryPoint_New( 
-		SizeT				_sizeOfSelf,
-		Type				type,
-		Stg_Class_DeleteFunction*		_delete,
-		Stg_Class_PrintFunction*		_print,
-		Stg_Class_CopyFunction*		_copy, 
-		EntryPoint_GetRunFunction*	_getRun,
-		Name				name,
-		unsigned int			castType );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define CONTEXTENTRYPOINT_DEFARGS \
+                ENTRYPOINT_DEFARGS
+
+	#define CONTEXTENTRYPOINT_PASSARGS \
+                ENTRYPOINT_PASSARGS
+
+	ContextEntryPoint* _ContextEntryPoint_New(  CONTEXTENTRYPOINT_DEFARGS  );
 	
 	/* Initialisation implementation */
 	void _ContextEntryPoint_Init( ContextEntryPoint* self );
@@ -93,3 +96,4 @@
 	void _ContextEntryPoint_Run_Step( void* contextEntryPoint, void* data0, double data1 );
 	
 #endif /* __Base_Context_ContextEntryPoint_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/src/DictionaryCheck.c
--- a/Base/Context/src/DictionaryCheck.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/src/DictionaryCheck.c	Mon Nov 30 02:00:28 2009 +1100
@@ -127,3 +127,5 @@ void CheckDictionaryKeys( Dictionary* di
 	}
 	Memory_Free(keyIndexArray);
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/src/DynamicVC.c
--- a/Base/Context/src/DynamicVC.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/src/DynamicVC.c	Mon Nov 30 02:00:28 2009 +1100
@@ -78,40 +78,39 @@ DynamicVC* DynamicVC_New(
 }
 
 DynamicVC* _DynamicVC_DefaultNew( Name name ) {
-	return (DynamicVC*)_DynamicVC_New( sizeof(DynamicVC), 
-		DynamicVC_Type, 
-		_DynamicVC_Delete, 
-	   _DynamicVC_Print, 
-		_DynamicVC_Copy,
-		(Stg_Component_DefaultConstructorFunction*)_DynamicVC_DefaultNew,
-		_VariableCondition_AssignFromXML,
-		_VariableCondition_Build,
-		_VariableCondition_Initialise,
-		_VariableCondition_Execute,
-		_VariableCondition_Destroy,
-		name, 
-		NON_GLOBAL,
-		NULL,
-		_DynamicVC_PrintConcise,
-		_DynamicVC_ReadDictionary,
-		_DynamicVC_GetSet, 
-		_DynamicVC_GetVariableCount, 
-		_DynamicVC_GetVariableIndex, 
-		_DynamicVC_GetValueIndex, 
-		_DynamicVC_GetValueCount, 
-		_DynamicVC_GetValue,
-		DynamicVC_Apply, 
-		NULL, 
-		NULL, 
-		NULL );
+	/* Variables set in this function */
+	SizeT                                              _sizeOfSelf = sizeof(DynamicVC);
+	Type                                                      type = DynamicVC_Type;
+	Stg_Class_DeleteFunction*                              _delete = _DynamicVC_Delete;
+	Stg_Class_PrintFunction*                                _print = _DynamicVC_Print;
+	Stg_Class_CopyFunction*                                  _copy = _DynamicVC_Copy;
+	Stg_Component_DefaultConstructorFunction*  _defaultConstructor = (Stg_Component_DefaultConstructorFunction*)_DynamicVC_DefaultNew;
+	Stg_Component_ConstructFunction*                    _construct = _VariableCondition_AssignFromXML;
+	Stg_Component_BuildFunction*                            _build = _VariableCondition_Build;
+	Stg_Component_InitialiseFunction*                  _initialise = _VariableCondition_Initialise;
+	Stg_Component_ExecuteFunction*                        _execute = _VariableCondition_Execute;
+	Stg_Component_DestroyFunction*                        _destroy = _VariableCondition_Destroy;
+	AllocationType                              nameAllocationType = NON_GLOBAL;
+	VariableCondition_BuildSelfFunc*                    _buildSelf = NULL;
+	VariableCondition_PrintConciseFunc*              _printConcise = _DynamicVC_PrintConcise;
+	VariableCondition_ReadDictionaryFunc*          _readDictionary = _DynamicVC_ReadDictionary;
+	VariableCondition_GetSetFunc*                          _getSet = _DynamicVC_GetSet;
+	VariableCondition_GetVariableCountFunc*      _getVariableCount = _DynamicVC_GetVariableCount;
+	VariableCondition_GetVariableIndexFunc*      _getVariableIndex = _DynamicVC_GetVariableIndex;
+	VariableCondition_GetValueIndexFunc*            _getValueIndex = _DynamicVC_GetValueIndex;
+	VariableCondition_GetValueCountFunc*            _getValueCount = _DynamicVC_GetValueCount;
+	VariableCondition_GetValueFunc*                      _getValue = _DynamicVC_GetValue;
+	VariableCondition_ApplyFunc*                            _apply = DynamicVC_Apply;
+
+	return (DynamicVC*)_DynamicVC_New(  DYNAMICVC_PASSARGS  );
 }
 
-DynamicVC* _DynamicVC_New( DYNAMICVC_DEFARGS ) {
+DynamicVC* _DynamicVC_New(  DYNAMICVC_DEFARGS  ) {
 	DynamicVC* self;
 
 	/* Allocate memory/General info */
-	assert( sizeOfSelf >= sizeof(DynamicVC) );
-	self = (DynamicVC*)_VariableCondition_New( VARIABLECONDITION_PASSARGS );
+	assert( _sizeOfSelf >= sizeof(DynamicVC) );
+	self = (DynamicVC*)_VariableCondition_New(  VARIABLECONDITION_PASSARGS  );
 	
 	/* Virtual info */
 	
@@ -332,3 +331,5 @@ Bool DynamicVC_Has( void* _self, int ind
 	assert( self );
         return IMap_Has( self->vcMap, index );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/src/DynamicVC.h
--- a/Base/Context/src/DynamicVC.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/src/DynamicVC.h	Mon Nov 30 02:00:28 2009 +1100
@@ -51,11 +51,7 @@ extern const Type DynamicVC_Type;
 
 	struct DynamicVC { __DynamicVC };
 
-	#define DYNAMICVC_DEFARGS \
-    	VARIABLECONDITION_DEFARGS
 
-	#define DYNAMICVC_PASSARGS \
-    	VARIABLECONDITION_PASSARGS
 
 	/*--------------------------------------------------------------------------------------------------------------------------
 	** Constructor
@@ -73,7 +69,18 @@ extern const Type DynamicVC_Type;
 
 	DynamicVC* _DynamicVC_DefaultNew( Name name );
 
-	DynamicVC* _DynamicVC_New( DYNAMICVC_DEFARGS );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define DYNAMICVC_DEFARGS \
+                VARIABLECONDITION_DEFARGS
+
+	#define DYNAMICVC_PASSARGS \
+                VARIABLECONDITION_PASSARGS
+
+	DynamicVC* _DynamicVC_New(  DYNAMICVC_DEFARGS  );
 
 	void _DynamicVC_Init( void* vc );
 
@@ -151,3 +158,4 @@ extern const Type DynamicVC_Type;
 	Bool DynamicVC_Has( void* _self, int index );
 
 #endif /* __Base_Automation_DynamicVC_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/src/Finalise.c
--- a/Base/Context/src/Finalise.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/src/Finalise.c	Mon Nov 30 02:00:28 2009 +1100
@@ -52,3 +52,5 @@ Bool BaseContext_Finalise( void ) {
 
 	return True;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/src/Init.c
--- a/Base/Context/src/Init.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/src/Init.c	Mon Nov 30 02:00:28 2009 +1100
@@ -94,3 +94,5 @@ Bool BaseContext_Init( int* argc, char**
 	
 	return True;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/src/SetVC.c
--- a/Base/Context/src/SetVC.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/src/SetVC.c	Mon Nov 30 02:00:28 2009 +1100
@@ -81,42 +81,39 @@ SetVC* SetVC_New(
 }
 
 SetVC* _SetVC_DefaultNew( Name name ) {
-	return (SetVC*)_SetVC_New( 
-		sizeof(SetVC), 
-		SetVC_Type, 
-		_SetVC_Delete, 
-		_SetVC_Print, 
-		_SetVC_Copy,
-		(Stg_Component_DefaultConstructorFunction*)_SetVC_DefaultNew,
-		_VariableCondition_AssignFromXML,
-		_VariableCondition_Build,
-		_VariableCondition_Initialise,
-		_VariableCondition_Execute,
-		_SetVC_Destroy,
-		name, 
-		NON_GLOBAL,
-		NULL,
-		_SetVC_PrintConcise,
-		_SetVC_ReadDictionary,
-		_SetVC_GetSet, 
-		_SetVC_GetVariableCount, 
-		_SetVC_GetVariableIndex, 
-		_SetVC_GetValueIndex, 
-		_SetVC_GetValueCount, 
-		_SetVC_GetValue,
-		_VariableCondition_Apply, 
-		NULL, /*variable_Register*/ 
-		NULL, /*conFunc_Register*/ 
-		NULL, /*dictionary*/
-		NULL /*dictionaryEntryName*/ );
+	/* Variables set in this function */
+	SizeT                                               _sizeOfSelf = sizeof(SetVC);
+	Type                                                       type = SetVC_Type;
+	Stg_Class_DeleteFunction*                               _delete = _SetVC_Delete;
+	Stg_Class_PrintFunction*                                 _print = _SetVC_Print;
+	Stg_Class_CopyFunction*                                   _copy = _SetVC_Copy;
+	Stg_Component_DefaultConstructorFunction*   _defaultConstructor = (Stg_Component_DefaultConstructorFunction*)_SetVC_DefaultNew;
+	Stg_Component_ConstructFunction*                     _construct = _VariableCondition_AssignFromXML;
+	Stg_Component_BuildFunction*                             _build = _VariableCondition_Build;
+	Stg_Component_InitialiseFunction*                   _initialise = _VariableCondition_Initialise;
+	Stg_Component_ExecuteFunction*                         _execute = _VariableCondition_Execute;
+	Stg_Component_DestroyFunction*                         _destroy = _SetVC_Destroy;
+	AllocationType                               nameAllocationType = NON_GLOBAL;
+	VariableCondition_BuildSelfFunc*                     _buildSelf = NULL;
+	VariableCondition_PrintConciseFunc*               _printConcise = _SetVC_PrintConcise;
+	VariableCondition_ReadDictionaryFunc*           _readDictionary = _SetVC_ReadDictionary;
+	VariableCondition_GetSetFunc*                           _getSet = _SetVC_GetSet;
+	VariableCondition_GetVariableCountFunc*       _getVariableCount = _SetVC_GetVariableCount;
+	VariableCondition_GetVariableIndexFunc*       _getVariableIndex = _SetVC_GetVariableIndex;
+	VariableCondition_GetValueIndexFunc*             _getValueIndex = _SetVC_GetValueIndex;
+	VariableCondition_GetValueCountFunc*             _getValueCount = _SetVC_GetValueCount;
+	VariableCondition_GetValueFunc*                       _getValue = _SetVC_GetValue;
+	VariableCondition_ApplyFunc*                             _apply = _VariableCondition_Apply;
+
+	return (SetVC*)_SetVC_New(  SETVC_PASSARGS  );
 }
 
-SetVC* _SetVC_New( SETVC_DEFARGS ) {
+SetVC* _SetVC_New(  SETVC_DEFARGS  ) {
 	SetVC* self;
 	
 	/* Allocate memory/General info */
-	assert( sizeOfSelf >= sizeof(SetVC) );
-	self = (SetVC*)_VariableCondition_New( VARIABLECONDITION_PASSARGS );
+	assert( _sizeOfSelf >= sizeof(SetVC) );
+	self = (SetVC*)_VariableCondition_New(  VARIABLECONDITION_PASSARGS  );
 	
 	/* Virtual info */
 	
@@ -440,3 +437,5 @@ void _SetVC_PrintConcise( void* variable
 /*--------------------------------------------------------------------------------------------------------------------------
 ** Functions
 */
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/src/SetVC.h
--- a/Base/Context/src/SetVC.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/src/SetVC.h	Mon Nov 30 02:00:28 2009 +1100
@@ -59,13 +59,7 @@
 
 	struct _SetVC { __SetVC };
 
-	#define SETVC_DEFARGS \
-    	VARIABLECONDITION_DEFARGS, \
-			Name _dictionaryEntryName 
 
-	#define SETVC_PASSARGS \
-    	VARIABLECONDITION_PASSARGS, \
-			_dictionaryEntryName
 	
 	/*--------------------------------------------------------------------------------------------------------------------------
 	** Constructor
@@ -86,7 +80,18 @@
 	
 	SetVC* _SetVC_DefaultNew( Name name );
 	
-	SetVC* _SetVC_New( SETVC_DEFARGS );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define SETVC_DEFARGS \
+                VARIABLECONDITION_DEFARGS
+
+	#define SETVC_PASSARGS \
+                VARIABLECONDITION_PASSARGS
+
+	SetVC* _SetVC_New(  SETVC_DEFARGS  );
 	
 	void _SetVC_Init( void* setVC, Name _dictionaryEntryName );
 	
@@ -147,3 +152,4 @@
 	*/
 
 #endif /* __Base_Automation_SetVC_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/src/Variable.c
--- a/Base/Context/src/Variable.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/src/Variable.c	Mon Nov 30 02:00:28 2009 +1100
@@ -70,64 +70,62 @@ Variable* Variable_New(
 		void**						arrayPtrPtr,
 		Variable_Register*				vr )
 {
+	/* Variables set in this function */
+	SizeT                                              _sizeOfSelf = sizeof(Variable);
+	Type                                                      type = Variable_Type;
+	Stg_Class_DeleteFunction*                              _delete = _Variable_Delete;
+	Stg_Class_PrintFunction*                                _print = _Variable_Print;
+	Stg_Class_CopyFunction*                                  _copy = _Variable_Copy;
+	Stg_Component_DefaultConstructorFunction*  _defaultConstructor = (Stg_Component_DefaultConstructorFunction*)Variable_DefaultNew;
+	Stg_Component_ConstructFunction*                    _construct = _Variable_AssignFromXML;
+	Stg_Component_BuildFunction*                            _build = _Variable_Build;
+	Stg_Component_InitialiseFunction*                  _initialise = _Variable_Initialise;
+	Stg_Component_ExecuteFunction*                        _execute = _Variable_Execute;
+	Stg_Component_DestroyFunction*                        _destroy = _Variable_Destroy;
+	Bool                                                  initFlag = True;
+
+	/* Variables that are set to ZERO are variables that will be set either by the current _New function or another parent _New function further up the hierachy */
+	AllocationType  nameAllocationType = ZERO;
+
 	Variable*	self;
 	
-	self = _Variable_New( 
-		sizeof(Variable), 
-		Variable_Type, 
-		_Variable_Delete, 
-		_Variable_Print, 
-		_Variable_Copy,
-		(Stg_Component_DefaultConstructorFunction*)Variable_DefaultNew,
-		_Variable_AssignFromXML,
-		_Variable_Build, 
-		_Variable_Initialise, 
-		_Variable_Execute, 
-		_Variable_Destroy,
-		name,
-		True,
-		dataCount, 
-		dataOffsets, 
-		dataTypes, 
-		dataTypeCounts, 
-		dataNames, 
-		structSizePtr, 
-		arraySizePtr,
-		arraySizeFunc,
-		arrayPtrPtr, 
-		vr );
+	self = _Variable_New(  VARIABLE_PASSARGS  );
 	
 	return self;
 }
 
 Variable* Variable_DefaultNew( Name name )
 {
+	/* Variables set in this function */
+	SizeT                                              _sizeOfSelf = sizeof(Variable);
+	Type                                                      type = Variable_Type;
+	Stg_Class_DeleteFunction*                              _delete = _Variable_Delete;
+	Stg_Class_PrintFunction*                                _print = _Variable_Print;
+	Stg_Class_CopyFunction*                                  _copy = _Variable_Copy;
+	Stg_Component_DefaultConstructorFunction*  _defaultConstructor = (Stg_Component_DefaultConstructorFunction*)Variable_DefaultNew;
+	Stg_Component_ConstructFunction*                    _construct = _Variable_AssignFromXML;
+	Stg_Component_BuildFunction*                            _build = _Variable_Build;
+	Stg_Component_InitialiseFunction*                  _initialise = _Variable_Initialise;
+	Stg_Component_ExecuteFunction*                        _execute = _Variable_Execute;
+	Stg_Component_DestroyFunction*                        _destroy = _Variable_Destroy;
+	Bool                                                  initFlag = False;
+	Index                                                dataCount = 0;
+	SizeT*                                             dataOffsets = NULL;
+	Variable_DataType*                                   dataTypes = NULL;
+	Index*                                          dataTypeCounts = NULL;
+	Name*                                                dataNames = NULL;
+	SizeT*                                           structSizePtr = NULL;
+	Index*                                            arraySizePtr = NULL;
+	Variable_ArraySizeFunc*                          arraySizeFunc = NULL;
+	void**                                             arrayPtrPtr = NULL;
+	Variable_Register*                                          vr = NULL;
+
+	/* Variables that are set to ZERO are variables that will be set either by the current _New function or another parent _New function further up the hierachy */
+	AllocationType  nameAllocationType = ZERO;
+
 	Variable*	self;
 	
-	self = _Variable_New( 
-		sizeof(Variable), 
-		Variable_Type, 
-		_Variable_Delete, 
-		_Variable_Print, 
-		_Variable_Copy,
-		(Stg_Component_DefaultConstructorFunction*)Variable_DefaultNew,
-		_Variable_AssignFromXML,
-		_Variable_Build, 
-		_Variable_Initialise, 
-		_Variable_Execute, 
-		_Variable_Destroy,
-		name,
-		False,
-		0, 
-		NULL, 
-		NULL, 
-		NULL, 
-		NULL, 
-		NULL, 
-		NULL,
-		NULL, 
-		NULL,
-		NULL );
+	self = _Variable_New(  VARIABLE_PASSARGS  );
 	
 	return self;
 }
@@ -140,6 +138,26 @@ Variable* Variable_NewScalar(
 		void**						arrayPtrPtr,
 		Variable_Register*				vr )
 {
+	/* Variables set in this function */
+	SizeT                                              _sizeOfSelf = sizeof(Variable);
+	Type                                                      type = Variable_Type;
+	Stg_Class_DeleteFunction*                              _delete = _Variable_Delete;
+	Stg_Class_PrintFunction*                                _print = _Variable_Print;
+	Stg_Class_CopyFunction*                                  _copy = _Variable_Copy;
+	Stg_Component_DefaultConstructorFunction*  _defaultConstructor = (Stg_Component_DefaultConstructorFunction*)Variable_DefaultNew;
+	Stg_Component_ConstructFunction*                    _construct = _Variable_AssignFromXML;
+	Stg_Component_BuildFunction*                            _build = _Variable_Build;
+	Stg_Component_InitialiseFunction*                  _initialise = _Variable_Initialise;
+	Stg_Component_ExecuteFunction*                        _execute = _Variable_Execute;
+	Stg_Component_DestroyFunction*                        _destroy = _Variable_Destroy;
+	Bool                                                  initFlag = True;
+	Index                                                dataCount = 1;
+	Name*                                                dataNames = 0;
+	SizeT*                                           structSizePtr = 0;
+
+	/* Variables that are set to ZERO are variables that will be set either by the current _New function or another parent _New function further up the hierachy */
+	AllocationType  nameAllocationType = ZERO;
+
 	Variable*		self;
 	SizeT			dataOffsets[] = { 0 };
 	Variable_DataType	dataTypes[] = { 0 };		/* Init value later */
@@ -147,30 +165,7 @@ Variable* Variable_NewScalar(
 	
 	dataTypes[0] = dataType;
 	
-	self = _Variable_New( 
-		sizeof(Variable), 
-		Variable_Type, 
-		_Variable_Delete, 
-		_Variable_Print, 
-		_Variable_Copy,
-		(Stg_Component_DefaultConstructorFunction*)Variable_DefaultNew,
-		_Variable_AssignFromXML,
-		_Variable_Build, 
-		_Variable_Initialise, 
-		_Variable_Execute,
-		_Variable_Destroy,
-		name,
-		True,
-		1, 
-		dataOffsets, 
-		dataTypes, 
-		dataTypeCounts, 
-		0, /* no component names */
-		0, /* means work out from dataType at build phase */
-		arraySizePtr,
-		arraySizeFunc,
-		arrayPtrPtr, 
-		vr );
+	self = _Variable_New(  VARIABLE_PASSARGS  );
 	
 	return self;
 }
@@ -185,6 +180,25 @@ Variable* Variable_NewVector(
 		Variable_Register*				vr,
 		... 						/* vector component names */ )
 {
+	/* Variables set in this function */
+	SizeT                                              _sizeOfSelf = sizeof(Variable);
+	Type                                                      type = Variable_Type;
+	Stg_Class_DeleteFunction*                              _delete = _Variable_Delete;
+	Stg_Class_PrintFunction*                                _print = _Variable_Print;
+	Stg_Class_CopyFunction*                                  _copy = _Variable_Copy;
+	Stg_Component_DefaultConstructorFunction*  _defaultConstructor = (Stg_Component_DefaultConstructorFunction*)Variable_DefaultNew;
+	Stg_Component_ConstructFunction*                    _construct = _Variable_AssignFromXML;
+	Stg_Component_BuildFunction*                            _build = _Variable_Build;
+	Stg_Component_InitialiseFunction*                  _initialise = _Variable_Initialise;
+	Stg_Component_ExecuteFunction*                        _execute = _Variable_Execute;
+	Stg_Component_DestroyFunction*                        _destroy = _Variable_Destroy;
+	Bool                                                  initFlag = True;
+	Index                                                dataCount = 1;
+	SizeT*                                           structSizePtr = 0;
+
+	/* Variables that are set to ZERO are variables that will be set either by the current _New function or another parent _New function further up the hierachy */
+	AllocationType  nameAllocationType = ZERO;
+
 	Variable*		self;
 	SizeT			dataOffsets[] = { 0 };
 	Variable_DataType	dataTypes[] = { 0 };				/* Init later... */
@@ -204,30 +218,7 @@ Variable* Variable_NewVector(
 	}
 	va_end( ap );
 	
-	self = _Variable_New( 
-		sizeof(Variable), 
-		Variable_Type, 
-		_Variable_Delete, 
-		_Variable_Print, 
-		_Variable_Copy, 
-		(Stg_Component_DefaultConstructorFunction*)Variable_DefaultNew,
-		_Variable_AssignFromXML,
-		_Variable_Build, 
-		_Variable_Initialise, 
-		_Variable_Execute, 
-		_Variable_Destroy,
-		name,
-		True,
-		1, 
-		dataOffsets, 
-		dataTypes, 
-		dataTypeCounts, 
-		dataNames,
-		0, /* means work out from dataType at build phase */
-		arraySizePtr,
-		arraySizeFunc,
-		arrayPtrPtr, 
-		vr );
+	self = _Variable_New(  VARIABLE_PASSARGS  );
 
 	Memory_Free( dataNames );
 	
@@ -244,6 +235,25 @@ Variable* Variable_NewVector2(
 		Variable_Register*				vr,
 		char**						dataNames )
 {
+	/* Variables set in this function */
+	SizeT                                              _sizeOfSelf = sizeof(Variable);
+	Type                                                      type = Variable_Type;
+	Stg_Class_DeleteFunction*                              _delete = _Variable_Delete;
+	Stg_Class_PrintFunction*                                _print = _Variable_Print;
+	Stg_Class_CopyFunction*                                  _copy = _Variable_Copy;
+	Stg_Component_DefaultConstructorFunction*  _defaultConstructor = (void*)Variable_DefaultNew;
+	Stg_Component_ConstructFunction*                    _construct = _Variable_AssignFromXML;
+	Stg_Component_BuildFunction*                            _build = _Variable_Build;
+	Stg_Component_InitialiseFunction*                  _initialise = _Variable_Initialise;
+	Stg_Component_ExecuteFunction*                        _execute = _Variable_Execute;
+	Stg_Component_DestroyFunction*                        _destroy = _Variable_Destroy;
+	Bool                                                  initFlag = True;
+	Index                                                dataCount = 1;
+	SizeT*                                           structSizePtr = 0;
+
+	/* Variables that are set to ZERO are variables that will be set either by the current _New function or another parent _New function further up the hierachy */
+	AllocationType  nameAllocationType = ZERO;
+
 	Variable*		self;
 	SizeT			dataOffsets[] = { 0 };
 	Variable_DataType	dataTypes[] = { 0 };
@@ -252,30 +262,7 @@ Variable* Variable_NewVector2(
 	dataTypes[0] = dataType;
 	dataTypeCounts[0] = dataTypeCount;
 
-	self = _Variable_New( 
-		sizeof(Variable), 
-		Variable_Type, 
-		_Variable_Delete, 
-		_Variable_Print, 
-		_Variable_Copy, 
-		(void*)Variable_DefaultNew,
-		_Variable_AssignFromXML,
-		_Variable_Build, 
-		_Variable_Initialise, 
-		_Variable_Execute, 
-		_Variable_Destroy,
-		name,
-		True,
-		1, 
-		dataOffsets, 
-		dataTypes, 
-		dataTypeCounts, 
-		dataNames,
-		0, /* means work out from dataType at build phase */
-		arraySizePtr,
-		arraySizeFunc,
-		arrayPtrPtr, 
-		vr );
+	self = _Variable_New(  VARIABLE_PASSARGS  );
 
 	return self;
 }
@@ -329,37 +316,18 @@ void Variable_Init(
 }
 
 
-Variable* _Variable_New(
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*				_delete,
-		Stg_Class_PrintFunction*				_print, 
-		Stg_Class_CopyFunction*				_copy, 
-		Stg_Component_DefaultConstructorFunction*	_defaultConstructor,
-		Stg_Component_ConstructFunction*		_construct,
-		Stg_Component_BuildFunction*			_build,
-		Stg_Component_InitialiseFunction*			_initialise,
-		Stg_Component_ExecuteFunction*			_execute,
-		Stg_Component_DestroyFunction*		_destroy,
-		Name						name,
-		Bool						initFlag,
-		Index						dataCount,
-		SizeT*						dataOffsets,
-		Variable_DataType*				dataTypes,
-		Index*						dataTypeCounts,
-		Name*						dataNames,
-		SizeT*						structSizePtr,
-		Index*						arraySizePtr,
-		Variable_ArraySizeFunc*				arraySizeFunc,
-		void**						arrayPtrPtr,
-		Variable_Register*				vr )
+Variable* _Variable_New(  VARIABLE_DEFARGS  )
 {
 	Variable*	self;
 	
 	/* Allocate memory */
 	assert( _sizeOfSelf >= sizeof(Variable) );
-	self = (Variable*)_Stg_Component_New( _sizeOfSelf, type, _delete, _print, _copy, _defaultConstructor,
-					      _construct, _build, _initialise, _execute, _destroy, name, NON_GLOBAL );
+	/* The following terms are parameters that have been passed into this function but are being set before being passed onto the parent */
+	/* This means that any values of these parameters that are passed into this function are not passed onto the parent function
+	   and so should be set to ZERO in any children of this class. */
+	nameAllocationType = NON_GLOBAL;
+
+	self = (Variable*)_Stg_Component_New(  STG_COMPONENT_PASSARGS  );
 	
 	/* General info */
 	
@@ -1227,3 +1195,5 @@ Bool Variable_ValueCompareWithinToleranc
 Bool Variable_ValueCompareWithinTolerance( void* variable, void* comparison, double tolerance ) {
 	return ( Variable_ValueCompare( variable, comparison ) < tolerance );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/src/Variable.h
--- a/Base/Context/src/Variable.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/src/Variable.h	Mon Nov 30 02:00:28 2009 +1100
@@ -100,33 +100,7 @@
 	** Constructors
 	*/
 
-	#define VARIABLE_DEFARGS							\
-		STG_CLASS_DEFARGS,							\
-		Stg_Component_DefaultConstructorFunction*	_defaultConstructor, 	\
-		Stg_Component_ConstructFunction*		_construct, 		\
-		Stg_Component_BuildFunction*			_build, 		\
-		Stg_Component_InitialiseFunction*		_initialise, 		\
-		Stg_Component_ExecuteFunction*			_execute, 		\
-		Stg_Component_DestroyFunction*			_destroy, 		\
-		Name						name, 			\
-		Bool						initFlag, 		\
-		Index						dataCount,		\
-		SizeT*						dataOffsets,		\
-		Variable_DataType*				dataTypes,		\
-		Index*						dataTypeCounts,		\
-		Name*						dataNames,		\
-		SizeT*						structSizePtr,		\
-		Index*						arraySizePtr,		\
-		Variable_ArraySizeFunc*				arraySizeFunc,		\
-		void**						arrayPtrPtr,		\
-		Variable_Register*				vr
 
-	#define VARIABLE_PASSARGS						\
-		STG_CLASS_PASSARGS, _defaultConstructor, _construct, 		\
-		_build, _initialise, _execute, _destroy, name, initFlag,	\
-		dataCount, dataOffsets, dataTypes, dataTypeCounts,		\
-		dataNames, structSizePtr, arraySizePtr, arraySizeFunc,				\
-		arrayPtrPtr, vr
 	
 	/** Creates a new Variable. A Variable holds the run-time information of a complex data type created by the programmer.
 	  * Essentially it associates a textual name to a variable in the program that the user can use to access or modify.
@@ -205,30 +179,40 @@
 		char**						dataNames );
 	
 	/** Constructor interface. */
-	Variable* _Variable_New(
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*			_delete,
-		Stg_Class_PrintFunction*			_print, 
-		Stg_Class_CopyFunction*				_copy, 
-		Stg_Component_DefaultConstructorFunction*	_defaultConstructor,
-		Stg_Component_ConstructFunction*		_construct,
-		Stg_Component_BuildFunction*			_build,
-		Stg_Component_InitialiseFunction*		_initialise,
-		Stg_Component_ExecuteFunction*			_execute,
-		Stg_Component_DestroyFunction*			_destroy,
-		Name						name,
-		Bool						initFlag,
-		Index						dataCount,
-		SizeT*						dataOffsets,
-		Variable_DataType*				dataTypes,
-		Index*						dataTypeCounts,
-		Name*						dataNames,
-		SizeT*						structSizePtr,
-		Index*						arraySizePtr,
-		Variable_ArraySizeFunc*				arraySizeFunc,
-		void**						arrayPtrPtr,
-		Variable_Register*				vr );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define VARIABLE_DEFARGS \
+                STG_COMPONENT_DEFARGS, \
+                Bool                           initFlag, \
+                Index                         dataCount, \
+                SizeT*                      dataOffsets, \
+                Variable_DataType*            dataTypes, \
+                Index*                   dataTypeCounts, \
+                Name*                         dataNames, \
+                SizeT*                    structSizePtr, \
+                Index*                     arraySizePtr, \
+                Variable_ArraySizeFunc*   arraySizeFunc, \
+                void**                      arrayPtrPtr, \
+                Variable_Register*                   vr
+
+	#define VARIABLE_PASSARGS \
+                STG_COMPONENT_PASSARGS, \
+	        initFlag,       \
+	        dataCount,      \
+	        dataOffsets,    \
+	        dataTypes,      \
+	        dataTypeCounts, \
+	        dataNames,      \
+	        structSizePtr,  \
+	        arraySizePtr,   \
+	        arraySizeFunc,  \
+	        arrayPtrPtr,    \
+	        vr            
+
+	Variable* _Variable_New(  VARIABLE_DEFARGS  );
 	
 	
 	/** Initialise a Variable */
@@ -1231,3 +1215,4 @@
 	Bool Variable_ValueCompareWithinTolerance( void* variable, void* comparison, double tolerance );
 
 #endif /* __Base_Automation_Variable__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/src/VariableAllVC.c
--- a/Base/Context/src/VariableAllVC.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/src/VariableAllVC.c	Mon Nov 30 02:00:28 2009 +1100
@@ -82,43 +82,39 @@ VariableAllVC*	VariableAllVC_New(
 }
 
 VariableAllVC*	_VariableAllVC_DefaultNew( Name name ) {
-	return (VariableAllVC*)_VariableAllVC_New(
-		sizeof(VariableAllVC), 
-		VariableAllVC_Type, 
-		_VariableAllVC_Delete, 
-		_VariableAllVC_Print, 
-		_VariableAllVC_Copy,
-		(Stg_Component_DefaultConstructorFunction*)_VariableAllVC_DefaultNew,
-		_VariableCondition_AssignFromXML,
-		_VariableAllVC_Build,
-		_VariableCondition_Initialise,
-		_VariableCondition_Execute,
-		_VariableAllVC_Destroy,
-		name,
-		NON_GLOBAL,
-		_VariableAllVC_BuildSelf, 
-		_VariableAllVC_PrintConcise,
-		_VariableAllVC_ReadDictionary,
-		_VariableAllVC_GetSet, 
-		_VariableAllVC_GetVariableCount, 
-		_VariableAllVC_GetVariableIndex, 
-		_VariableAllVC_GetValueIndex, 
-		_VariableAllVC_GetValueCount, 
-		_VariableAllVC_GetValue,
-		_VariableCondition_Apply, 
-		NULL,
-		NULL, 
-		NULL, 
-		NULL,
-		NULL );
+	/* Variables set in this function */
+	SizeT                                               _sizeOfSelf = sizeof(VariableAllVC);
+	Type                                                       type = VariableAllVC_Type;
+	Stg_Class_DeleteFunction*                               _delete = _VariableAllVC_Delete;
+	Stg_Class_PrintFunction*                                 _print = _VariableAllVC_Print;
+	Stg_Class_CopyFunction*                                   _copy = _VariableAllVC_Copy;
+	Stg_Component_DefaultConstructorFunction*   _defaultConstructor = (Stg_Component_DefaultConstructorFunction*)_VariableAllVC_DefaultNew;
+	Stg_Component_ConstructFunction*                     _construct = _VariableCondition_AssignFromXML;
+	Stg_Component_BuildFunction*                             _build = _VariableAllVC_Build;
+	Stg_Component_InitialiseFunction*                   _initialise = _VariableCondition_Initialise;
+	Stg_Component_ExecuteFunction*                         _execute = _VariableCondition_Execute;
+	Stg_Component_DestroyFunction*                         _destroy = _VariableAllVC_Destroy;
+	AllocationType                               nameAllocationType = NON_GLOBAL;
+	VariableCondition_BuildSelfFunc*                     _buildSelf = _VariableAllVC_BuildSelf;
+	VariableCondition_PrintConciseFunc*               _printConcise = _VariableAllVC_PrintConcise;
+	VariableCondition_ReadDictionaryFunc*           _readDictionary = _VariableAllVC_ReadDictionary;
+	VariableCondition_GetSetFunc*                           _getSet = _VariableAllVC_GetSet;
+	VariableCondition_GetVariableCountFunc*       _getVariableCount = _VariableAllVC_GetVariableCount;
+	VariableCondition_GetVariableIndexFunc*       _getVariableIndex = _VariableAllVC_GetVariableIndex;
+	VariableCondition_GetValueIndexFunc*             _getValueIndex = _VariableAllVC_GetValueIndex;
+	VariableCondition_GetValueCountFunc*             _getValueCount = _VariableAllVC_GetValueCount;
+	VariableCondition_GetValueFunc*                       _getValue = _VariableAllVC_GetValue;
+	VariableCondition_ApplyFunc*                             _apply = _VariableCondition_Apply;
+
+	return (VariableAllVC*)_VariableAllVC_New(  VARIABLEALLVC_PASSARGS  );
 }
 
-VariableAllVC* _VariableAllVC_New( VARIABLEALLVC_DEFARGS ) {
+VariableAllVC* _VariableAllVC_New(  VARIABLEALLVC_DEFARGS  ) {
 	VariableAllVC*	self;
 	
 	/* Allocate memory/General info */
-	assert( sizeOfSelf >= sizeof(VariableAllVC) );
-	self = (VariableAllVC*)_VariableCondition_New( VARIABLECONDITION_PASSARGS );
+	assert( _sizeOfSelf >= sizeof(VariableAllVC) );
+	self = (VariableAllVC*)_VariableCondition_New(  VARIABLECONDITION_PASSARGS  );
 	
 	/* Virtual info */
 	
@@ -465,3 +461,5 @@ void _VariableAllVC_PrintConcise( void* 
 /*--------------------------------------------------------------------------------------------------------------------------
 ** Functions
 */
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/src/VariableAllVC.h
--- a/Base/Context/src/VariableAllVC.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/src/VariableAllVC.h	Mon Nov 30 02:00:28 2009 +1100
@@ -64,15 +64,7 @@
 
 	struct _VariableAllVC { __VariableAllVC };
 	
-	#define VARIABLEALLVC_DEFARGS \
-		VARIABLECONDITION_DEFARGS, \
-         Name	_dictionaryEntryName, \
-			void*	mesh 
 
-   #define VARIABLEALLVC_PASSARGS \
-      VARIABLECONDITION_PASSARGS, \
-         _dictionaryEntryName, \
-			mesh 
 
 	/*--------------------------------------------------------------------------------------------------------------------------
 	** Constructor
@@ -94,7 +86,18 @@
 	
 	VariableAllVC* _VariableAllVC_DefaultNew( Name name );
 	
-	VariableAllVC* _VariableAllVC_New( VARIABLEALLVC_DEFARGS );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define VARIABLEALLVC_DEFARGS \
+                VARIABLECONDITION_DEFARGS
+
+	#define VARIABLEALLVC_PASSARGS \
+                VARIABLECONDITION_PASSARGS
+
+	VariableAllVC* _VariableAllVC_New(  VARIABLEALLVC_DEFARGS  );
 	
 	void _VariableAllVC_Init( void* allElementsVC, Name _dictionaryEntryName, void* mesh );
 	
@@ -157,3 +160,4 @@
 
 	
 #endif /* __Base_Automation_VariableAllVC_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/src/VariableCondition.c
--- a/Base/Context/src/VariableCondition.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/src/VariableCondition.c	Mon Nov 30 02:00:28 2009 +1100
@@ -51,12 +51,12 @@ const Type VariableCondition_Type = "Var
 ** Constructor
 */
 
-VariableCondition* _VariableCondition_New( VARIABLECONDITION_DEFARGS ) {
+VariableCondition* _VariableCondition_New(  VARIABLECONDITION_DEFARGS  ) {
 	VariableCondition*	self;
 	
 	/* Allocate memory/General info */
-	assert( sizeOfSelf >= sizeof(VariableCondition) );
-	self = (VariableCondition*)_Stg_Component_New( STG_COMPONENT_PASSARGS );
+	assert( _sizeOfSelf >= sizeof(VariableCondition) );
+	self = (VariableCondition*)_Stg_Component_New(  STG_COMPONENT_PASSARGS  );
 	
 	/* Virtual info */
 	self->_buildSelf = _buildSelf;
@@ -739,3 +739,5 @@ void VariableCondition_PrintConcise( voi
 	
 	self->_printConcise( self, stream );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/src/VariableCondition.h
--- a/Base/Context/src/VariableCondition.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/src/VariableCondition.h	Mon Nov 30 02:00:28 2009 +1100
@@ -132,43 +132,44 @@
 	see VariableCondition.h for details */
 	struct _VariableCondition { __VariableCondition };
 	
-	#define VARIABLECONDITION_DEFARGS	\
-		STG_COMPONENT_DEFARGS,	\
-			VariableCondition_BuildSelfFunc*				_buildSelf,	\
-			VariableCondition_PrintConciseFunc*			_printConcise, \
-			VariableCondition_ReadDictionaryFunc*		_readDictionary, \
-			VariableCondition_GetSetFunc*					_getSet, \
-			VariableCondition_GetVariableCountFunc		_getVariableCount, \
-			VariableCondition_GetVariableIndexFunc*	_getVariableIndex, \
-			VariableCondition_GetValueIndexFunc*		_getValueIndex, \
-			VariableCondition_GetValueCountFunc*		_getValueCount, \
-			VariableCondition_GetValueFunc*				_getValue, \
-			VariableCondition_ApplyFunc*					_apply, \
-			Variable_Register*								variable_Register, \
-			ConditionFunction_Register*					conFunc_Register, \
-			Dictionary*											dictionary 
 
-	#define VARIABLECONDITION_PASSARGS	\
-		STG_COMPONENT_PASSARGS,		\
-			_buildSelf,	\
-			_printConcise, \
-			_readDictionary, \
-			_getSet, \
-			_getVariableCount, \
-			_getVariableIndex, \
-			_getValueIndex, \
-			_getValueCount, \
-			_getValue, \
-			_apply, \
-			variable_Register, \
-			conFunc_Register, \
-			dictionary 
 	
 	/*--------------------------------------------------------------------------------------------------------------------------
 	** Constructor
 	*/
 	
-	VariableCondition* _VariableCondition_New( VARIABLECONDITION_DEFARGS );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define VARIABLECONDITION_DEFARGS \
+                STG_COMPONENT_DEFARGS, \
+                VariableCondition_BuildSelfFunc*                _buildSelf, \
+                VariableCondition_PrintConciseFunc*          _printConcise, \
+                VariableCondition_ReadDictionaryFunc*      _readDictionary, \
+                VariableCondition_GetSetFunc*                      _getSet, \
+                VariableCondition_GetVariableCountFunc   _getVariableCount, \
+                VariableCondition_GetVariableIndexFunc*  _getVariableIndex, \
+                VariableCondition_GetValueIndexFunc*        _getValueIndex, \
+                VariableCondition_GetValueCountFunc*        _getValueCount, \
+                VariableCondition_GetValueFunc*                  _getValue, \
+                VariableCondition_ApplyFunc*                        _apply
+
+	#define VARIABLECONDITION_PASSARGS \
+                STG_COMPONENT_PASSARGS, \
+	        _buildSelf,        \
+	        _printConcise,     \
+	        _readDictionary,   \
+	        _getSet,           \
+	        _getVariableCount, \
+	        _getVariableIndex, \
+	        _getValueIndex,    \
+	        _getValueCount,    \
+	        _getValue,         \
+	        _apply           
+
+	VariableCondition* _VariableCondition_New(  VARIABLECONDITION_DEFARGS  );
 	
 	void _VariableCondition_Init(
 		void*									variableCondition, 
@@ -251,3 +252,4 @@
 	void VariableCondition_PrintConcise( void* variableCondition, Stream* stream );
 	
 #endif /* __Base_Automation_VariableCondition_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/src/VariableCondition_Register.c
--- a/Base/Context/src/VariableCondition_Register.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/src/VariableCondition_Register.c	Mon Nov 30 02:00:28 2009 +1100
@@ -51,7 +51,14 @@ VariableCondition_Register* variableCond
 
 
 VariableCondition_Register* VariableCondition_Register_New(void) {
-	return _VariableCondition_Register_New( sizeof(VariableCondition_Register), VariableCondition_Register_Type, _VariableCondition_Register_Delete, _VariableCondition_Register_Print, NULL );
+	/* Variables set in this function */
+	SizeT                      _sizeOfSelf = sizeof(VariableCondition_Register);
+	Type                              type = VariableCondition_Register_Type;
+	Stg_Class_DeleteFunction*      _delete = _VariableCondition_Register_Delete;
+	Stg_Class_PrintFunction*        _print = _VariableCondition_Register_Print;
+	Stg_Class_CopyFunction*          _copy = NULL;
+
+	return _VariableCondition_Register_New(  VARIABLECONDITION_REGISTER_PASSARGS  );
 }
 
 void VariableCondition_Register_Init( void* variableCondition_Register ) {
@@ -72,18 +79,13 @@ void VariableCondition_Register_Init( vo
 	_VariableCondition_Register_Init( self );
 }
 
-VariableCondition_Register* _VariableCondition_Register_New(
-		SizeT				_sizeOfSelf,
-		Type				type,
-		Stg_Class_DeleteFunction*		_delete,
-		Stg_Class_PrintFunction*		_print,
-		Stg_Class_CopyFunction*		_copy )
+VariableCondition_Register* _VariableCondition_Register_New(  VARIABLECONDITION_REGISTER_DEFARGS  )
 {
 	VariableCondition_Register* self;
 	
 	/* Allocate memory */
 	assert( _sizeOfSelf >= sizeof(VariableCondition_Register) );
-	self = (VariableCondition_Register*)_Stg_Class_New( _sizeOfSelf, type, _delete, _print, _copy );
+	self = (VariableCondition_Register*)_Stg_Class_New(  STG_CLASS_PASSARGS  );
 	
 	/* General info */
 	
@@ -223,3 +225,5 @@ VariableCondition* VariableCondition_Reg
 		(Dictionary*)dictionary,
 		data );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/src/VariableCondition_Register.h
--- a/Base/Context/src/VariableCondition_Register.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/src/VariableCondition_Register.h	Mon Nov 30 02:00:28 2009 +1100
@@ -83,12 +83,18 @@
 			void*				variableCondition_Register);
 	
 	/* Creation implementation / Virtual constructor */
-	VariableCondition_Register* _VariableCondition_Register_New( 
-		SizeT					_sizeOfSelf,
-		Type					type,
-		Stg_Class_DeleteFunction*			_delete,
-		Stg_Class_PrintFunction*			_print, 
-		Stg_Class_CopyFunction*			_copy );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define VARIABLECONDITION_REGISTER_DEFARGS \
+                STG_CLASS_DEFARGS
+
+	#define VARIABLECONDITION_REGISTER_PASSARGS \
+                STG_CLASS_PASSARGS
+
+	VariableCondition_Register* _VariableCondition_Register_New(  VARIABLECONDITION_REGISTER_DEFARGS  );
 	
 	/* Initialisation implementation */
 	void _VariableCondition_Register_Init( void* variableCondition_Register);
@@ -127,3 +133,4 @@
 				void* data );
 	
 #endif /* __Base_Automation_VariableCondition_Register_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/src/VariableDumpStream.c
--- a/Base/Context/src/VariableDumpStream.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/src/VariableDumpStream.c	Mon Nov 30 02:00:28 2009 +1100
@@ -48,17 +48,18 @@ const Type VariableDumpStream_Type = "Va
 
 Stream* VariableDumpStream_New( Name name )
 {
-	return (Stream*)_VariableDumpStream_New( 
-		sizeof(VariableDumpStream), 
-		VariableDumpStream_Type, 
-		_VariableDumpStream_Delete, 
-		_VariableDumpStream_Print, 
-		_VariableDumpStream_Copy, 
-		name,
-		_CStream_Printf,
-		_CStream_Write,
-		_VariableDumpStream_Dump,
-		_CStream_SetFile );
+	/* Variables set in this function */
+	SizeT                      _sizeOfSelf = sizeof(VariableDumpStream);
+	Type                              type = VariableDumpStream_Type;
+	Stg_Class_DeleteFunction*      _delete = _VariableDumpStream_Delete;
+	Stg_Class_PrintFunction*        _print = _VariableDumpStream_Print;
+	Stg_Class_CopyFunction*          _copy = _VariableDumpStream_Copy;
+	Stream_PrintfFunction*         _printf = _CStream_Printf;
+	Stream_WriteFunction*           _write = _CStream_Write;
+	Stream_DumpFunction*             _dump = _VariableDumpStream_Dump;
+	Stream_SetFileFunction*       _setFile = _CStream_SetFile;
+
+	return (Stream*)_VariableDumpStream_New(  VARIABLEDUMPSTREAM_PASSARGS  );
 }
 
 void VariableDumpStream_Init( VariableDumpStream* self, Name name )
@@ -67,24 +68,13 @@ void VariableDumpStream_Init( VariableDu
 }
 
 
-VariableDumpStream* _VariableDumpStream_New( 
-	SizeT			_sizeOfSelf, 
-	Type			type, 
-	Stg_Class_DeleteFunction*	_delete, 
-	Stg_Class_PrintFunction* 	_print,
-	Stg_Class_CopyFunction*	_copy, 
-	Name			name,
-	Stream_PrintfFunction*	_printf, 
-	Stream_WriteFunction*	_write, 
-	Stream_DumpFunction*	_dump,
-	Stream_SetFileFunction*	_setFile )
+VariableDumpStream* _VariableDumpStream_New(  VARIABLEDUMPSTREAM_DEFARGS  )
 {
 	VariableDumpStream* self;
 	
 	/* Allocate memory */
 	assert( _sizeOfSelf >= sizeof(VariableDumpStream) );
-	self = (VariableDumpStream*)_CStream_New( _sizeOfSelf, type, _delete, _print, _copy, name, 
-		_printf, _write, _dump, _setFile );
+	self = (VariableDumpStream*)_CStream_New(  CSTREAM_PASSARGS  );
 	
 	_VariableDumpStream_Init( self );
 	
@@ -199,3 +189,5 @@ void VariableDumpStream_SetVariable( voi
 	}
 	Stream_SetFile( stream, file );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/src/VariableDumpStream.h
--- a/Base/Context/src/VariableDumpStream.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/src/VariableDumpStream.h	Mon Nov 30 02:00:28 2009 +1100
@@ -67,17 +67,18 @@
 	void VariableDumpStream_Init( VariableDumpStream* self, Name name );
 
 	/** Constructor interface. */
-	VariableDumpStream* _VariableDumpStream_New( 
-		SizeT			_sizeOfSelf, 
-		Type			type, 
-		Stg_Class_DeleteFunction*	_delete, 
-		Stg_Class_PrintFunction* 	_print,
-		Stg_Class_CopyFunction*	_copy, 
-		Name			name,
-		Stream_PrintfFunction*	_printf, 
-		Stream_WriteFunction*	_write, 
-		Stream_DumpFunction*	_dump,
-		Stream_SetFileFunction*	_setFile );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define VARIABLEDUMPSTREAM_DEFARGS \
+                CSTREAM_DEFARGS
+
+	#define VARIABLEDUMPSTREAM_PASSARGS \
+                CSTREAM_PASSARGS
+
+	VariableDumpStream* _VariableDumpStream_New(  VARIABLEDUMPSTREAM_DEFARGS  );
 
 	/** Init interface. */
 	void _VariableDumpStream_Init( VariableDumpStream *self );
@@ -107,3 +108,4 @@
 
 
 
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/src/Variable_Register.c
--- a/Base/Context/src/Variable_Register.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/src/Variable_Register.c	Mon Nov 30 02:00:28 2009 +1100
@@ -52,9 +52,15 @@ const Type Variable_Register_Type = "Var
 */
 
 Variable_Register* Variable_Register_New(void)
-{ 
-	return _Variable_Register_New( sizeof(Variable_Register), Variable_Register_Type, _Variable_Register_Delete,
-		_Variable_Register_Print, _Variable_Register_Copy );
+{
+	/* Variables set in this function */
+	SizeT                      _sizeOfSelf = sizeof(Variable_Register);
+	Type                              type = Variable_Register_Type;
+	Stg_Class_DeleteFunction*      _delete = _Variable_Register_Delete;
+	Stg_Class_PrintFunction*        _print = _Variable_Register_Print;
+	Stg_Class_CopyFunction*          _copy = _Variable_Register_Copy;
+ 
+	return _Variable_Register_New(  VARIABLE_REGISTER_PASSARGS  );
 }
 
 
@@ -77,17 +83,12 @@ void Variable_Register_Init(Variable_Reg
 }
 
 
-Variable_Register* _Variable_Register_New( 
-			SizeT			_sizeOfSelf,
-			Type			type,
-			Stg_Class_DeleteFunction*	_delete,
-			Stg_Class_PrintFunction*	_print, 
-			Stg_Class_CopyFunction*	_copy )
+Variable_Register* _Variable_Register_New(  VARIABLE_REGISTER_DEFARGS  )
 {
 	Variable_Register*	self;
 	
 	/* Allocate memory */
-	self = (Variable_Register*)_Stg_Class_New(_sizeOfSelf, type, _delete, _print, _copy);
+	self = (Variable_Register*)_Stg_Class_New(  STG_CLASS_PASSARGS  );
 	
 	/* Virtual info */
 	
@@ -267,3 +268,5 @@ Variable* Variable_Register_GetByIndex(v
 		
 	return  self->_variable[varIndex];
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/src/Variable_Register.h
--- a/Base/Context/src/Variable_Register.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/src/Variable_Register.h	Mon Nov 30 02:00:28 2009 +1100
@@ -72,12 +72,18 @@
 	
 	void			Variable_Register_Init(Variable_Register* self);
 	
-	Variable_Register*	_Variable_Register_New( 
-					SizeT			_sizeOfSelf,
-					Type			type,
-					Stg_Class_DeleteFunction*	_delete,
-					Stg_Class_PrintFunction*	_print, 
-					Stg_Class_CopyFunction*	_copy );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define VARIABLE_REGISTER_DEFARGS \
+                STG_CLASS_DEFARGS
+
+	#define VARIABLE_REGISTER_PASSARGS \
+                STG_CLASS_PASSARGS
+
+	Variable_Register*	_Variable_Register_New(  VARIABLE_REGISTER_DEFARGS  );
 		
 	void			_Variable_Register_Init(void* variable_Register);
 	
@@ -123,3 +129,4 @@
 	Variable*	Variable_Register_GetByIndex( void* variable_Register, Variable_Index varIndex);	
 	
 #endif /* __Base_Automation_Variable_Register_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/tests/AbstractContextSuite.c
--- a/Base/Context/tests/AbstractContextSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/tests/AbstractContextSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -83,27 +83,24 @@ TestContext* TestContext_New(
 	MPI_Comm		communicator,
 	Dictionary*	dictionary ) 
 {
+	/* Variables set in this function */
+	SizeT                                              _sizeOfSelf = sizeof(TestContext);
+	Type                                                      type = "TestContext";
+	Stg_Class_DeleteFunction*                              _delete = _AbstractContext_Delete;
+	Stg_Class_PrintFunction*                                _print = _AbstractContext_Print;
+	Stg_Class_CopyFunction*                                  _copy = NULL;
+	Stg_Component_DefaultConstructorFunction*  _defaultConstructor = NULL;
+	Stg_Component_ConstructFunction*                    _construct = NULL;
+	Stg_Component_BuildFunction*                            _build = _AbstractContext_Build;
+	Stg_Component_InitialiseFunction*                  _initialise = _AbstractContext_Initialise;
+	Stg_Component_ExecuteFunction*                        _execute = _AbstractContext_Execute;
+	Stg_Component_DestroyFunction*                        _destroy = _AbstractContext_Destroy;
+	AllocationType                              nameAllocationType = NON_GLOBAL;
+	AbstractContext_SetDt*                                  _setDt = TestSetDt;
+
    TestContext* ctx;
 
-   ctx = (TestContext*)_AbstractContext_New( 
-      sizeof(TestContext), 
-     	"TestContext", 
-      _AbstractContext_Delete, 
-      _AbstractContext_Print, 
-      NULL,
-      NULL, 
-      NULL, 
-      _AbstractContext_Build, 
-      _AbstractContext_Initialise, 
-      _AbstractContext_Execute, 
-      _AbstractContext_Destroy, 
-      name, 
-      NON_GLOBAL, 
-      TestSetDt, 
-      startTime, 
-      stopTime, 
-      communicator, 
-      dictionary );
+   ctx = (TestContext*)_AbstractContext_New(  ABSTRACTCONTEXT_PASSARGS  );
 
    ctx->buildHookCalled = 0;  
    ctx->icHookCalled = 0;
@@ -353,3 +350,5 @@ void AbstractContextSuite( pcu_suite_t* 
    pcu_suite_addTest( suite, AbstractContextSuite_TestRunNoDtDefined );
    pcu_suite_addTest( suite, AbstractContextSuite_TestRestartFromCheckpoint );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/tests/ConditionFunctionSuite.c
--- a/Base/Context/tests/ConditionFunctionSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/tests/ConditionFunctionSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -78,3 +78,5 @@ void ConditionFunctionSuite( pcu_suite_t
    pcu_suite_setFixtures( suite, ConditionFunctionSuite_Setup, ConditionFunctionSuite_Teardown );
    pcu_suite_addTest( suite, ConditionFunctionSuite_TestApply );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/tests/DictionaryCheckSuite.c
--- a/Base/Context/tests/DictionaryCheckSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/tests/DictionaryCheckSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -120,3 +120,5 @@ void DictionaryCheckSuite( pcu_suite_t* 
    pcu_suite_setFixtures( suite, DictionaryCheckSuite_Setup, DictionaryCheckSuite_Teardown );
    pcu_suite_addTest( suite, DictionaryCheckSuite_TestCheckKeys );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/tests/LiveComponentRegisterSuite.c
--- a/Base/Context/tests/LiveComponentRegisterSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/tests/LiveComponentRegisterSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -128,3 +128,5 @@ void LiveComponentRegisterSuite( pcu_sui
    pcu_suite_setFixtures( suite, LiveComponentRegisterSuite_Setup, LiveComponentRegisterSuite_Teardown );
    pcu_suite_addTest( suite, LiveComponentRegisterSuite_TestGet );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/tests/SetVC_Suite.c
--- a/Base/Context/tests/SetVC_Suite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/tests/SetVC_Suite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -255,3 +255,5 @@ void SetVC_Suite( pcu_suite_t* suite ) {
    pcu_suite_addTest( suite, SetVC_Suite_TestGetValueIndex );
    pcu_suite_addTest( suite, SetVC_Suite_TestApply );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/tests/Stg_MetaSuite.c
--- a/Base/Context/tests/Stg_MetaSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/tests/Stg_MetaSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -119,3 +119,5 @@ void Stg_MetaSuite( pcu_suite_t* suite )
    pcu_suite_setFixtures( suite, Stg_MetaSuite_Setup, Stg_MetaSuite_Teardown );
    pcu_suite_addTest( suite, Stg_MetaSuite_TestGetFunctions );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/tests/VariableAllVC_Suite.c
--- a/Base/Context/tests/VariableAllVC_Suite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/tests/VariableAllVC_Suite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -155,3 +155,5 @@ void VariableAllVC_Suite( pcu_suite_t* s
    pcu_suite_addTest( suite, VariableAllVC_Suite_TestGetValueIndex );
    pcu_suite_addTest( suite, VariableAllVC_Suite_TestApply );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/tests/VariableDumpStreamSuite.c
--- a/Base/Context/tests/VariableDumpStreamSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/tests/VariableDumpStreamSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -158,3 +158,5 @@ void VariableDumpStreamSuite( pcu_suite_
    pcu_suite_setFixtures( suite, VariableDumpStreamSuite_Setup, VariableDumpStreamSuite_Teardown );
    pcu_suite_addTest( suite, VariableDumpStreamSuite_TestDump );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/tests/VariableSuite.c
--- a/Base/Context/tests/VariableSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/tests/VariableSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -949,3 +949,5 @@ void VariableSuite( pcu_suite_t* suite )
    pcu_suite_addTest( suite, VariableSuite_TestVariableCopy );
    pcu_suite_addTest( suite, VariableSuite_TestVariableValueCompare );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Context/tests/Variable_RegisterSuite.c
--- a/Base/Context/tests/Variable_RegisterSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Context/tests/Variable_RegisterSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -94,3 +94,5 @@ void Variable_RegisterSuite( pcu_suite_t
    pcu_suite_setFixtures( suite, Variable_RegisterSuite_Setup, Variable_RegisterSuite_Teardown );
    pcu_suite_addTest( suite, Variable_RegisterSuite_TestAddGet );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/distributedtests/MockContext.c
--- a/Base/Extensibility/distributedtests/MockContext.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/distributedtests/MockContext.c	Mon Nov 30 02:00:28 2009 +1100
@@ -62,22 +62,24 @@ void _MockContext_Destroy( void* c, void
 }
 
 MockContext* MockContext_New( Dictionary* dictionary ) {
+	/* Variables set in this function */
+	SizeT                                              _sizeOfSelf = sizeof( MockContext );
+	Type                                                      type = "MockContext";
+	Stg_Class_DeleteFunction*                              _delete = _MockContext_Delete;
+	Stg_Class_PrintFunction*                                _print = NULL;
+	Stg_Class_CopyFunction*                                  _copy = NULL;
+	Stg_Component_DefaultConstructorFunction*  _defaultConstructor = _MockContext_DefaultNew;
+	Stg_Component_ConstructFunction*                    _construct = _MockContext_AssignFromXML;
+	Stg_Component_BuildFunction*                            _build = _MockContext_Build;
+	Stg_Component_InitialiseFunction*                  _initialise = _MockContext_Initialise;
+	Stg_Component_ExecuteFunction*                        _execute = _MockContext_Execute;
+	Stg_Component_DestroyFunction*                        _destroy = _MockContext_Destroy;
+	Name                                                      name = "context";
+	AllocationType                              nameAllocationType = NON_GLOBAL;
+
 	MockContext* self;
 
-	self = (MockContext*) _Stg_Component_New(
-		sizeof( MockContext ),
-		"MockContext",
-		_MockContext_Delete,
-		NULL,
-		NULL,
-		_MockContext_DefaultNew,
-		_MockContext_AssignFromXML,
-		_MockContext_Build,
-		_MockContext_Initialise,
-		_MockContext_Execute,
-		_MockContext_Destroy,
-		"context",
-		NON_GLOBAL );
+	self = (MockContext*) _Stg_Component_New(  STG_COMPONENT_PASSARGS  );
 
 	self->plugins = PluginsManager_New();
 	ModulesManager_AddDirectory( "StGermain", LIB_DIR );
@@ -96,3 +98,5 @@ void _MockContext_Delete( void* context 
 	
 	_Stg_Class_Delete( self );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/distributedtests/testDistributedPlugin.c
--- a/Base/Extensibility/distributedtests/testDistributedPlugin.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/distributedtests/testDistributedPlugin.c	Mon Nov 30 02:00:28 2009 +1100
@@ -109,3 +109,5 @@ int main( int argc, char* argv[] ) {
 }
 
 
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/distributedtests/testPlugin.c
--- a/Base/Extensibility/distributedtests/testPlugin.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/distributedtests/testPlugin.c	Mon Nov 30 02:00:28 2009 +1100
@@ -91,3 +91,5 @@ int main( int argc, char* argv[] ) {
 }
 
 
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/distributedtests/testplugins/LocalPlugin/LocalPlugin.c
--- a/Base/Extensibility/distributedtests/testplugins/LocalPlugin/LocalPlugin.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/distributedtests/testplugins/LocalPlugin/LocalPlugin.c	Mon Nov 30 02:00:28 2009 +1100
@@ -74,3 +74,5 @@ Index LocalPlugin_Register( PluginsManag
 	return ModulesManager_Submit( pluginsManager, LocalPlugin_Type, "0", _LocalPlugin_DefaultNew );
 }
 
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/distributedtests/testplugins/LocalPluginDep/LocalPlugin1.c
--- a/Base/Extensibility/distributedtests/testplugins/LocalPluginDep/LocalPlugin1.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/distributedtests/testplugins/LocalPluginDep/LocalPlugin1.c	Mon Nov 30 02:00:28 2009 +1100
@@ -73,3 +73,5 @@ Index LocalPlugin1_Register( PluginsMana
 	return ModulesManager_Submit( pluginsManager, LocalPlugin1_Type, "0", _LocalPlugin1_DefaultNew );
 }
 
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/distributedtests/testplugins/LocalPluginDep/LocalPlugin2.c
--- a/Base/Extensibility/distributedtests/testplugins/LocalPluginDep/LocalPlugin2.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/distributedtests/testplugins/LocalPluginDep/LocalPlugin2.c	Mon Nov 30 02:00:28 2009 +1100
@@ -72,3 +72,5 @@ Index LocalPlugin2_Register( PluginsMana
 Index LocalPlugin2_Register( PluginsManager* pluginsManager ) {
 	return ModulesManager_Submit( pluginsManager, LocalPlugin2_Type, "0", _LocalPlugin2_DefaultNew );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/distributedtests/testplugins/RemotePlugin1.c
--- a/Base/Extensibility/distributedtests/testplugins/RemotePlugin1.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/distributedtests/testplugins/RemotePlugin1.c	Mon Nov 30 02:00:28 2009 +1100
@@ -44,3 +44,5 @@ void RemotePlugin1_Register( void* entry
 
 }
 
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/src/ClassHook.c
--- a/Base/Extensibility/src/ClassHook.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/src/ClassHook.c	Mon Nov 30 02:00:28 2009 +1100
@@ -50,16 +50,17 @@ const Type ClassHook_Type = "ClassHook";
 
 /** allocate and initialise a new ClassHook. */
 ClassHook* ClassHook_New( Name name, Func_Ptr funcPtr, char* addedBy, void* reference ) {
-	return _ClassHook_New(
-		sizeof(ClassHook), 
-		ClassHook_Type, 
-		_ClassHook_Delete, 
-		_ClassHook_Print, 
-		_ClassHook_Copy, 
-		name, 
-		funcPtr, 
-		addedBy,
-		reference );
+	/* Variables set in this function */
+	SizeT                      _sizeOfSelf = sizeof(ClassHook);
+	Type                              type = ClassHook_Type;
+	Stg_Class_DeleteFunction*      _delete = _ClassHook_Delete;
+	Stg_Class_PrintFunction*        _print = _ClassHook_Print;
+	Stg_Class_CopyFunction*          _copy = _ClassHook_Copy;
+
+	/* Variables that are set to ZERO are variables that will be set either by the current _New function or another parent _New function further up the hierachy */
+	AllocationType  nameAllocationType = ZERO;
+
+	return _ClassHook_New(  CLASSHOOK_PASSARGS  );
 }
 
 void ClassHook_Init( void* hook, Name name, Func_Ptr funcPtr, char* addedBy, void* reference ) {
@@ -81,22 +82,18 @@ void ClassHook_Init( void* hook, Name na
 }
 
 
-ClassHook* _ClassHook_New( 
-		SizeT 				_sizeOfSelf, 
-		Type 				type, 
-		Stg_Class_DeleteFunction* 	_delete,
-		Stg_Class_PrintFunction*	_print,
-		Stg_Class_CopyFunction*		_copy, 
-		Name 				name, 
-		Func_Ptr			funcPtr,
-		char*				addedBy,
-		void*			reference )
+ClassHook* _ClassHook_New(  CLASSHOOK_DEFARGS  )
 {
 	ClassHook* self;
 	
 	/* Allocate memory */
 	assert( _sizeOfSelf >= sizeof(ClassHook) );
-	self = (ClassHook*)_Stg_Object_New( _sizeOfSelf, type, _delete, _print, _copy, name, NON_GLOBAL );
+	/* The following terms are parameters that have been passed into this function but are being set before being passed onto the parent */
+	/* This means that any values of these parameters that are passed into this function are not passed onto the parent function
+	   and so should be set to ZERO in any children of this class. */
+	nameAllocationType = NON_GLOBAL;
+
+	self = (ClassHook*)_Stg_Object_New(  STG_OBJECT_PASSARGS  );
 	
 	/* General info */
 	
@@ -153,3 +150,5 @@ void* _ClassHook_Copy( void* hook, void*
 	return (void*)newClassHook;
 }
 
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/src/ClassHook.h
--- a/Base/Extensibility/src/ClassHook.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/src/ClassHook.h	Mon Nov 30 02:00:28 2009 +1100
@@ -58,16 +58,24 @@
 	void ClassHook_Init( void* hook, Name name, Func_Ptr funcPtr, char* addedBy, void* reference );
 	
 	/* Creation implementation */
-	ClassHook* _ClassHook_New( 
-		SizeT 				_sizeOfSelf, 
-		Type 				type, 
-		Stg_Class_DeleteFunction* 	_delete,
-		Stg_Class_PrintFunction*	_print,
-		Stg_Class_CopyFunction*		_copy, 
-		Name 				name, 
-		Func_Ptr 			funcPtr,
-		char*				addedBy,
-		void*			reference );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define CLASSHOOK_DEFARGS \
+                STG_OBJECT_DEFARGS, \
+                Func_Ptr    funcPtr, \
+                char*       addedBy, \
+                void*     reference
+
+	#define CLASSHOOK_PASSARGS \
+                STG_OBJECT_PASSARGS, \
+	        funcPtr,   \
+	        addedBy,   \
+	        reference
+
+	ClassHook* _ClassHook_New(  CLASSHOOK_DEFARGS  );
 	
 	/* Initialisation implementation */
 	void _ClassHook_Init( ClassHook* self, Func_Ptr funcPtr, char* addedBy, void* reference );
@@ -88,3 +96,4 @@
 	void* _ClassHook_Copy( void* hook, void* dest, Bool deep, Name nameExt, PtrMap* ptrMap );
 	
 #endif /* __Base_Extensibility_ClassHook_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/src/ClassPtrExtensionInfo.c
--- a/Base/Extensibility/src/ClassPtrExtensionInfo.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/src/ClassPtrExtensionInfo.c	Mon Nov 30 02:00:28 2009 +1100
@@ -55,16 +55,19 @@ const Type ClassPtrExtensionInfo_Type = 
 
 /** allocate and initialise a new ClassPtrExtensionInfo. */
 ClassPtrExtensionInfo* ClassPtrExtensionInfo_New( const Name name, Stg_Class_CopyFunction* copyFunc, Index count ) {
-	return _ClassPtrExtensionInfo_New( 
-		sizeof(ClassPtrExtensionInfo), 
-		ClassPtrExtensionInfo_Type, 
-		_ClassPtrExtensionInfo_Delete,
-		_ClassPtrExtensionInfo_Print, 
-		_ClassPtrExtensionInfo_Copy, 
-		_ClassPtrExtensionInfo_DataCopy,
-		(Name)name,
-		copyFunc,
-		count );
+	/* Variables set in this function */
+	SizeT                            _sizeOfSelf = sizeof(ClassPtrExtensionInfo);
+	Type                                    type = ClassPtrExtensionInfo_Type;
+	Stg_Class_DeleteFunction*            _delete = _ClassPtrExtensionInfo_Delete;
+	Stg_Class_PrintFunction*              _print = _ClassPtrExtensionInfo_Print;
+	Stg_Class_CopyFunction*                _copy = _ClassPtrExtensionInfo_Copy;
+	ExtensionInfo_DataCopyFunction*    _dataCopy = _ClassPtrExtensionInfo_DataCopy;
+
+	/* Variables that are set to ZERO are variables that will be set either by the current _New function or another parent _New function further up the hierachy */
+	AllocationType  nameAllocationType = ZERO;
+	SizeT                         size = ZERO;
+
+	return _ClassPtrExtensionInfo_New(  CLASSPTREXTENSIONINFO_PASSARGS  );
 }
 
 
@@ -87,31 +90,18 @@ void ClassPtrExtensionInfo_Init( void* a
 }
 
 
-ClassPtrExtensionInfo* _ClassPtrExtensionInfo_New( 
-		SizeT 				_sizeOfSelf, 
-		Type 				type, 
-		Stg_Class_DeleteFunction* 	_delete,
-		Stg_Class_PrintFunction*	_print,
-		Stg_Class_CopyFunction*		_copy, 
-		ExtensionInfo_DataCopyFunction* _dataCopy,
-		Name 				name,
-		Stg_Class_CopyFunction*		copyFunc,
-		Index				count )
+ClassPtrExtensionInfo* _ClassPtrExtensionInfo_New(  CLASSPTREXTENSIONINFO_DEFARGS  )
 {
 	ClassPtrExtensionInfo* self;
 	
 	/* Allocate memory */
 	assert( _sizeOfSelf >= sizeof(ClassPtrExtensionInfo) );
-	self = (ClassPtrExtensionInfo*)_ExtensionInfo_New( 
-		_sizeOfSelf, 
-		type, 
-		_delete, 
-		_print, 
-		_copy, 
-		_dataCopy,
-		name, 
-		sizeof(ClassPtrExtensionInfo_PtrClass), 
-		count );
+	/* The following terms are parameters that have been passed into this function but are being set before being passed onto the parent */
+	/* This means that any values of these parameters that are passed into this function are not passed onto the parent function
+	   and so should be set to ZERO in any children of this class. */
+	size = sizeof(ClassPtrExtensionInfo_PtrClass);
+
+	self = (ClassPtrExtensionInfo*)_ExtensionInfo_New(  EXTENSIONINFO_PASSARGS  );
 	
 	/* General info */
 	
@@ -193,3 +183,5 @@ void* _ClassPtrExtensionInfo_DataCopy(
 
 /* Public member functions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
 /* Private member functions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/src/ClassPtrExtensionInfo.h
--- a/Base/Extensibility/src/ClassPtrExtensionInfo.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/src/ClassPtrExtensionInfo.h	Mon Nov 30 02:00:28 2009 +1100
@@ -76,16 +76,20 @@
 	void ClassPtrExtensionInfo_Init( void* arrayExtensionInfo, const Name name, Stg_Class_CopyFunction* copyFunc, Index count );
 	
 	/* Creation implementation */
-	ClassPtrExtensionInfo* _ClassPtrExtensionInfo_New( 
-		SizeT 				_sizeOfSelf, 
-		Type 				type, 
-		Stg_Class_DeleteFunction* 	_delete,
-		Stg_Class_PrintFunction*	_print,
-		Stg_Class_CopyFunction*		_copy, 
-		ExtensionInfo_DataCopyFunction*	_dataCopy,
-		Name 				name,
-		Stg_Class_CopyFunction*		copyFunc,
-		Index				count );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define CLASSPTREXTENSIONINFO_DEFARGS \
+                EXTENSIONINFO_DEFARGS, \
+                Stg_Class_CopyFunction*  copyFunc
+
+	#define CLASSPTREXTENSIONINFO_PASSARGS \
+                EXTENSIONINFO_PASSARGS, \
+	        copyFunc
+
+	ClassPtrExtensionInfo* _ClassPtrExtensionInfo_New(  CLASSPTREXTENSIONINFO_DEFARGS  );
 	
 	/* Initialisation implementation */
 	void _ClassPtrExtensionInfo_Init( ClassPtrExtensionInfo* self, Name name, Stg_Class_CopyFunction* copyFunc, Index count );
@@ -111,3 +115,4 @@
 	/* Public member functions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
 	/* Private member functions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
 #endif /* __Base_Extensibility_ClassPtrExtensionInfo_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/src/EntryPoint.c
--- a/Base/Extensibility/src/EntryPoint.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/src/EntryPoint.c	Mon Nov 30 02:00:28 2009 +1100
@@ -62,8 +62,18 @@ static const Type _EntryPoint_Run_Type =
  * \param name textual name of the entry point (useful if its to be stored in a list).
  * \return the allocated entry point. */
 EntryPoint* EntryPoint_New( const Name name, unsigned int castType ) {
-	return _EntryPoint_New( sizeof(EntryPoint), EntryPoint_Type, _EntryPoint_Delete, _EntryPoint_Print, _EntryPoint_Copy, _EntryPoint_GetRun,
-		name, castType );
+	/* Variables set in this function */
+	SizeT                       _sizeOfSelf = sizeof(EntryPoint);
+	Type                               type = EntryPoint_Type;
+	Stg_Class_DeleteFunction*       _delete = _EntryPoint_Delete;
+	Stg_Class_PrintFunction*         _print = _EntryPoint_Print;
+	Stg_Class_CopyFunction*           _copy = _EntryPoint_Copy;
+	EntryPoint_GetRunFunction*      _getRun = _EntryPoint_GetRun;
+
+	/* Variables that are set to ZERO are variables that will be set either by the current _New function or another parent _New function further up the hierachy */
+	AllocationType  nameAllocationType = ZERO;
+
+	return _EntryPoint_New(  ENTRYPOINT_PASSARGS  );
 }
 
 /** Initialise an existing entry point. See EntryPoint_New() for argument descriptions. */
@@ -87,21 +97,18 @@ void EntryPoint_Init( void* entryPoint, 
 	_EntryPoint_Init( self, castType );
 }
 
-EntryPoint* _EntryPoint_New( 
-		SizeT 				_sizeOfSelf, 
-		Type 				type, 
-		Stg_Class_DeleteFunction* 		_delete,
-		Stg_Class_PrintFunction*		_print,
-		Stg_Class_CopyFunction*		_copy, 
-		EntryPoint_GetRunFunction*	_getRun,
-		const Name 				name, 
-		unsigned int 			castType )
+EntryPoint* _EntryPoint_New(  ENTRYPOINT_DEFARGS  )
 {
 	EntryPoint* self;
 	
 	/* Allocate memory */
 	assert( _sizeOfSelf >= sizeof(EntryPoint) );
-	self = (EntryPoint*)_Stg_Object_New( _sizeOfSelf, type, _delete, _print, _copy, name, GLOBAL );
+	/* The following terms are parameters that have been passed into this function but are being set before being passed onto the parent */
+	/* This means that any values of these parameters that are passed into this function are not passed onto the parent function
+	   and so should be set to ZERO in any children of this class. */
+	nameAllocationType = GLOBAL;
+
+	self = (EntryPoint*)_Stg_Object_New(  STG_OBJECT_PASSARGS  );
 	
 	/* General info */
 	
@@ -914,3 +921,5 @@ void EntryPoint_ErrorIfNoHooks( void* en
 			epName, parentFunction, epName );
 	}
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/src/EntryPoint.h
--- a/Base/Extensibility/src/EntryPoint.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/src/EntryPoint.h	Mon Nov 30 02:00:28 2009 +1100
@@ -126,15 +126,22 @@
 	void EntryPoint_Init( void* entryPoint, const Name name, unsigned int castType );
 	
 	/** Creation implementation */
-	EntryPoint* _EntryPoint_New( 
-		SizeT 				_sizeOfSelf, 
-		Type 				type, 
-		Stg_Class_DeleteFunction* 		_delete,
-		Stg_Class_PrintFunction*		_print,
-		Stg_Class_CopyFunction*		_copy, 
-		EntryPoint_GetRunFunction*	_getRun,
-		Name 				name, 
-		unsigned int 			castType );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define ENTRYPOINT_DEFARGS \
+                STG_OBJECT_DEFARGS, \
+                EntryPoint_GetRunFunction*   _getRun, \
+                unsigned int                castType
+
+	#define ENTRYPOINT_PASSARGS \
+                STG_OBJECT_PASSARGS, \
+	        _getRun,  \
+	        castType
+
+	EntryPoint* _EntryPoint_New(  ENTRYPOINT_DEFARGS  );
 	
 	/** Member Initialisation implementation */
 	void _EntryPoint_Init( EntryPoint* self, unsigned int castType );
@@ -303,3 +310,4 @@
 	void EntryPoint_ErrorIfNoHooks( void* entryPoint, const char* parentFunction );
 	
 #endif /* __Base_Extensibility_EntryPoint_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/src/EntryPoint_Register.c
--- a/Base/Extensibility/src/EntryPoint_Register.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/src/EntryPoint_Register.c	Mon Nov 30 02:00:28 2009 +1100
@@ -49,7 +49,14 @@ const Type EntryPoint_Register_Type = "E
 
 
 EntryPoint_Register* EntryPoint_Register_New( void ) {
-	return _EntryPoint_Register_New( sizeof(EntryPoint_Register), EntryPoint_Register_Type, _EntryPoint_Register_Delete, _EntryPoint_Register_Print, NULL );
+	/* Variables set in this function */
+	SizeT                      _sizeOfSelf = sizeof(EntryPoint_Register);
+	Type                              type = EntryPoint_Register_Type;
+	Stg_Class_DeleteFunction*      _delete = _EntryPoint_Register_Delete;
+	Stg_Class_PrintFunction*        _print = _EntryPoint_Register_Print;
+	Stg_Class_CopyFunction*          _copy = NULL;
+
+	return _EntryPoint_Register_New(  ENTRYPOINT_REGISTER_PASSARGS  );
 }
 
 void EntryPoint_Register_Init( void* entryPoint_Register ) {
@@ -70,18 +77,13 @@ void EntryPoint_Register_Init( void* ent
 	_EntryPoint_Register_Init( self );
 }
 
-EntryPoint_Register* _EntryPoint_Register_New(
-		SizeT				_sizeOfSelf,
-		Type				type,
-		Stg_Class_DeleteFunction*		_delete,
-		Stg_Class_PrintFunction*		_print,
-		Stg_Class_CopyFunction*		_copy )
+EntryPoint_Register* _EntryPoint_Register_New(  ENTRYPOINT_REGISTER_DEFARGS  )
 {
 	EntryPoint_Register* self;
 	
 	/* Allocate memory */
 	assert( _sizeOfSelf >= sizeof(EntryPoint_Register) );
-	self = (EntryPoint_Register*)_Stg_Class_New( _sizeOfSelf, type, _delete, _print, _copy );
+	self = (EntryPoint_Register*)_Stg_Class_New(  STG_CLASS_PASSARGS  );
 	
 	/* General info */
 	
@@ -209,3 +211,5 @@ EntryPoint_Index EntryPoint_Register_Fin
 	
 	return (EntryPoint_Index)-1;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/src/EntryPoint_Register.h
--- a/Base/Extensibility/src/EntryPoint_Register.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/src/EntryPoint_Register.h	Mon Nov 30 02:00:28 2009 +1100
@@ -66,12 +66,18 @@
 	void EntryPoint_Register_Init( void* entryPoint_Register );
 	
 	/* Creation implementation / Virtual constructor */
-	EntryPoint_Register* _EntryPoint_Register_New( 
-		SizeT				_sizeOfSelf,
-		Type				type,
-		Stg_Class_DeleteFunction*		_delete,
-		Stg_Class_PrintFunction*		_print,
-		Stg_Class_CopyFunction*		_copy );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define ENTRYPOINT_REGISTER_DEFARGS \
+                STG_CLASS_DEFARGS
+
+	#define ENTRYPOINT_REGISTER_PASSARGS \
+                STG_CLASS_PASSARGS
+
+	EntryPoint_Register* _EntryPoint_Register_New(  ENTRYPOINT_REGISTER_DEFARGS  );
 	
 	/* Initialisation implementation */
 	void _EntryPoint_Register_Init( void* entryPoint_Register );
@@ -98,3 +104,4 @@
 	EntryPoint_Index EntryPoint_Register_Find( void* entryPoint_Register, void* entryPoint );
 	
 #endif /* __Base_Extensibility_EntryPoint_Register_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/src/ExtensionInfo.c
--- a/Base/Extensibility/src/ExtensionInfo.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/src/ExtensionInfo.c	Mon Nov 30 02:00:28 2009 +1100
@@ -51,22 +51,18 @@
 /* Textual name of this class */
 const Type ExtensionInfo_Type = "ExtensionInfo";
 
-ExtensionInfo* _ExtensionInfo_New( 
-		SizeT 				_sizeOfSelf, 
-		Type 				type, 
-		Stg_Class_DeleteFunction* 	_delete,
-		Stg_Class_PrintFunction*	_print,
-		Stg_Class_CopyFunction*		_copy,
-		ExtensionInfo_DataCopyFunction*	_dataCopy,
-		Name 				name, 
-		SizeT 				size,
-		Index				count )
+ExtensionInfo* _ExtensionInfo_New(  EXTENSIONINFO_DEFARGS  )
 {
 	ExtensionInfo* self;
 	
 	/* Allocate memory */
 	assert( _sizeOfSelf >= sizeof(ExtensionInfo) );
-	self = (ExtensionInfo*)_Stg_Object_New( _sizeOfSelf, type, _delete, _print, _copy, name, NON_GLOBAL );
+	/* The following terms are parameters that have been passed into this function but are being set before being passed onto the parent */
+	/* This means that any values of these parameters that are passed into this function are not passed onto the parent function
+	   and so should be set to ZERO in any children of this class. */
+	nameAllocationType = NON_GLOBAL;
+
+	self = (ExtensionInfo*)_Stg_Object_New(  STG_OBJECT_PASSARGS  );
 	
 	/* General info */
 	
@@ -286,3 +282,5 @@ void ExtensionInfo_Register(
 	
 	/* To consider... is there a way of checking that the handle is a sane value? SQ20050505 */
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/src/ExtensionInfo.h
--- a/Base/Extensibility/src/ExtensionInfo.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/src/ExtensionInfo.h	Mon Nov 30 02:00:28 2009 +1100
@@ -91,16 +91,24 @@
 	
 	
 	/* Creation implementation */
-	ExtensionInfo* _ExtensionInfo_New( 
-		SizeT 				_sizeOfSelf, 
-		Type 				type, 
-		Stg_Class_DeleteFunction* 	_delete,	/**< Derivatives: implement how to delete the extension */
-		Stg_Class_PrintFunction*	_print,		/**< Derivatives: implement how to print the extension */
-		Stg_Class_CopyFunction*		_copy, 		/**< Derivatives: implement how to copy the extension */
-		ExtensionInfo_DataCopyFunction*	_dataCopy,	/**< Derivatives: implement how to copy the extension data */
-		Name 				name,
-		SizeT 				size,
-		Index				count );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define EXTENSIONINFO_DEFARGS \
+                STG_OBJECT_DEFARGS, \
+                ExtensionInfo_DataCopyFunction*  _dataCopy, \
+                SizeT                                 size, \
+                Index                                count
+
+	#define EXTENSIONINFO_PASSARGS \
+                STG_OBJECT_PASSARGS, \
+	        _dataCopy, \
+	        size,      \
+	        count    
+
+	ExtensionInfo* _ExtensionInfo_New(  EXTENSIONINFO_DEFARGS  );
 	
 	/* Initialisation implementation */
 	void _ExtensionInfo_Init( ExtensionInfo* self, Name name, SizeT size, Index count );
@@ -203,3 +211,4 @@
 		void*				data );
 	
 #endif /* __Base_Extensibility_ExtensionInfo_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/src/ExtensionManager.c
--- a/Base/Extensibility/src/ExtensionManager.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/src/ExtensionManager.c	Mon Nov 30 02:00:28 2009 +1100
@@ -56,38 +56,44 @@ ExtensionManager* ExtensionManager_New_O
 		Name				name, 
 		SizeT				initialSize )
 {
-	return _ExtensionManager_New( 
-		sizeof(ExtensionManager), 
-		ExtensionManager_Type, 
-		_ExtensionManager_Delete,
-		_ExtensionManager_Print, 
-		_ExtensionManager_Copy, 
-		name, 
-		initialSize, 
-		NULL,			/* no existing object */
-		NULL,			/* no array */
-		0,
-		NULL,
-		0 );
+	/* Variables set in this function */
+	SizeT                          _sizeOfSelf = sizeof(ExtensionManager);
+	Type                                  type = ExtensionManager_Type;
+	Stg_Class_DeleteFunction*          _delete = _ExtensionManager_Delete;
+	Stg_Class_PrintFunction*            _print = _ExtensionManager_Print;
+	Stg_Class_CopyFunction*              _copy = _ExtensionManager_Copy;
+	void*                      _existingObject = NULL;
+	void*                               _array = NULL;
+	SizeT                             itemSize = 0;
+	ExtensionManager*                       em = NULL;
+	Index                                count = 0;
+
+	/* Variables that are set to ZERO are variables that will be set either by the current _New function or another parent _New function further up the hierachy */
+	AllocationType  nameAllocationType = ZERO;
+
+	return _ExtensionManager_New(  EXTENSIONMANAGER_PASSARGS  );
 }
 
 ExtensionManager* ExtensionManager_New_OfExistingObject( 
 		Name				name, 
 		void*				_existingObject )
 {
-	return _ExtensionManager_New( 
-		sizeof(ExtensionManager), 
-		ExtensionManager_Type, 
-		_ExtensionManager_Delete,
-		_ExtensionManager_Print, 
-		_ExtensionManager_Copy, 
-		name, 
-		0,			/* not extending a struct here */
-		_existingObject,
-		NULL,			/* not doing arrays here */
-		0,
-		NULL,
-		0 );
+	/* Variables set in this function */
+	SizeT                      _sizeOfSelf = sizeof(ExtensionManager);
+	Type                              type = ExtensionManager_Type;
+	Stg_Class_DeleteFunction*      _delete = _ExtensionManager_Delete;
+	Stg_Class_PrintFunction*        _print = _ExtensionManager_Print;
+	Stg_Class_CopyFunction*          _copy = _ExtensionManager_Copy;
+	SizeT                      initialSize = 0;
+	void*                           _array = NULL;
+	SizeT                         itemSize = 0;
+	ExtensionManager*                   em = NULL;
+	Index                            count = 0;
+
+	/* Variables that are set to ZERO are variables that will be set either by the current _New function or another parent _New function further up the hierachy */
+	AllocationType  nameAllocationType = ZERO;
+
+	return _ExtensionManager_New(  EXTENSIONMANAGER_PASSARGS  );
 }
 
 ExtensionManager* ExtensionManager_New_OfArray(
@@ -96,19 +102,20 @@ ExtensionManager* ExtensionManager_New_O
 		SizeT                           itemSize,
 		Index                           count )
 {
-	return _ExtensionManager_New(
-		sizeof( ExtensionManager ),
-		ExtensionManager_Type,
-		_ExtensionManager_Delete,
-		_ExtensionManager_Print,
-		_ExtensionManager_Copy,
-		name,
-		0,			/* not extending a struct here */
-		NULL,			/* not doing single object */
-		_array,
-		itemSize,
-		NULL,			/* not extending an array of extended structs */
-		count );
+	/* Variables set in this function */
+	SizeT                          _sizeOfSelf = sizeof( ExtensionManager );
+	Type                                  type = ExtensionManager_Type;
+	Stg_Class_DeleteFunction*          _delete = _ExtensionManager_Delete;
+	Stg_Class_PrintFunction*            _print = _ExtensionManager_Print;
+	Stg_Class_CopyFunction*              _copy = _ExtensionManager_Copy;
+	SizeT                          initialSize = 0;
+	void*                      _existingObject = NULL;
+	ExtensionManager*                       em = NULL;
+
+	/* Variables that are set to ZERO are variables that will be set either by the current _New function or another parent _New function further up the hierachy */
+	AllocationType  nameAllocationType = ZERO;
+
+	return _ExtensionManager_New(  EXTENSIONMANAGER_PASSARGS  );
 }
 
 ExtensionManager* ExtensionManager_New_OfExtendedArray(
@@ -117,19 +124,20 @@ ExtensionManager* ExtensionManager_New_O
 		ExtensionManager*               em,
 		Index                           count )
 {
-	return _ExtensionManager_New(
-		sizeof(ExtensionManager),
-		ExtensionManager_Type,
-		_ExtensionManager_Delete,
-		_ExtensionManager_Print,
-		_ExtensionManager_Copy,
-		name,
-		0,			/* not extending a struct here */
-		NULL,			/* not doing single object */
-		_array,
-		0,			/* take itemSize from em */
-		em,			/* The ExtensionManager which extended the struct */
-		count );
+	/* Variables set in this function */
+	SizeT                          _sizeOfSelf = sizeof(ExtensionManager);
+	Type                                  type = ExtensionManager_Type;
+	Stg_Class_DeleteFunction*          _delete = _ExtensionManager_Delete;
+	Stg_Class_PrintFunction*            _print = _ExtensionManager_Print;
+	Stg_Class_CopyFunction*              _copy = _ExtensionManager_Copy;
+	SizeT                          initialSize = 0;
+	void*                      _existingObject = NULL;
+	SizeT                             itemSize = 0;
+
+	/* Variables that are set to ZERO are variables that will be set either by the current _New function or another parent _New function further up the hierachy */
+	AllocationType  nameAllocationType = ZERO;
+
+	return _ExtensionManager_New(  EXTENSIONMANAGER_PASSARGS  );
 }
 
 void ExtensionManager_Init_OfStruct( 
@@ -253,25 +261,18 @@ void ExtensionManager_Init_OfExtendedArr
 		count );
 }
 
-ExtensionManager* _ExtensionManager_New(
-		SizeT				_sizeOfSelf,
-		Type				type,
-		Stg_Class_DeleteFunction*	_delete,
-		Stg_Class_PrintFunction*	_print,
-		Stg_Class_CopyFunction*		_copy, 
-		Name				name, 
-		SizeT				initialSize,
-		void*				_existingObject,
-		void*				_array,
-		SizeT				itemSize,
-		ExtensionManager*		em,
-		Index				count )
+ExtensionManager* _ExtensionManager_New(  EXTENSIONMANAGER_DEFARGS  )
 {
 	ExtensionManager* self;
 	
 	/* Allocate memory */
 	assert( _sizeOfSelf >= sizeof(ExtensionManager) );
-	self = (ExtensionManager*)_Stg_Object_New( _sizeOfSelf, type, _delete, _print, _copy, name, NON_GLOBAL );
+	/* The following terms are parameters that have been passed into this function but are being set before being passed onto the parent */
+	/* This means that any values of these parameters that are passed into this function are not passed onto the parent function
+	   and so should be set to ZERO in any children of this class. */
+	nameAllocationType = NON_GLOBAL;
+
+	self = (ExtensionManager*)_Stg_Object_New(  STG_OBJECT_PASSARGS  );
 	
 	/* General info */
 	
@@ -954,3 +955,5 @@ Bool ExtensionManager_GetLockDown( void*
 
 
 
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/src/ExtensionManager.h
--- a/Base/Extensibility/src/ExtensionManager.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/src/ExtensionManager.h	Mon Nov 30 02:00:28 2009 +1100
@@ -128,19 +128,30 @@
 		Index				count );
 	
 	/** Creation implementation / Virtual constructor */
-	ExtensionManager* _ExtensionManager_New( 
-		SizeT				_sizeOfSelf,
-		Type				type,
-		Stg_Class_DeleteFunction*	_delete,
-		Stg_Class_PrintFunction*	_print,
-		Stg_Class_CopyFunction*		_copy, 
-		Name				name, 
-		SizeT				initialSize,
-		void*				_existingObject,
-		void*				_array,
-		SizeT				itemSize,
-		ExtensionManager*		em,
-		Index				count );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define EXTENSIONMANAGER_DEFARGS \
+                STG_OBJECT_DEFARGS, \
+                SizeT                  initialSize, \
+                void*              _existingObject, \
+                void*                       _array, \
+                SizeT                     itemSize, \
+                ExtensionManager*               em, \
+                Index                        count
+
+	#define EXTENSIONMANAGER_PASSARGS \
+                STG_OBJECT_PASSARGS, \
+	        initialSize,     \
+	        _existingObject, \
+	        _array,          \
+	        itemSize,        \
+	        em,              \
+	        count          
+
+	ExtensionManager* _ExtensionManager_New(  EXTENSIONMANAGER_DEFARGS  );
 	
 	/* Initialisation implementation */
 	void _ExtensionManager_Init(
@@ -451,3 +462,4 @@
 	void ExtensionManager_SetLockDown( void* extension, Bool lockDown );
 	Bool ExtensionManager_GetLockDown( void* extension );
 #endif /* __Base_Extensibility_ExtensionManager_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/src/ExtensionManager_Register.c
--- a/Base/Extensibility/src/ExtensionManager_Register.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/src/ExtensionManager_Register.c	Mon Nov 30 02:00:28 2009 +1100
@@ -50,7 +50,14 @@ ExtensionManager_Register* extensionMgr_
 ExtensionManager_Register* extensionMgr_Register = 0;
 
 ExtensionManager_Register* ExtensionManager_Register_New( void ) {
-	return _ExtensionManager_Register_New( sizeof(ExtensionManager_Register), ExtensionManager_Register_Type, _ExtensionManager_Register_Delete, _ExtensionManager_Register_Print, NULL );
+	/* Variables set in this function */
+	SizeT                      _sizeOfSelf = sizeof(ExtensionManager_Register);
+	Type                              type = ExtensionManager_Register_Type;
+	Stg_Class_DeleteFunction*      _delete = _ExtensionManager_Register_Delete;
+	Stg_Class_PrintFunction*        _print = _ExtensionManager_Register_Print;
+	Stg_Class_CopyFunction*          _copy = NULL;
+
+	return _ExtensionManager_Register_New(  EXTENSIONMANAGER_REGISTER_PASSARGS  );
 }
 
 void ExtensionManager_Register_Init( void* extensionManager_Register ) {
@@ -71,18 +78,13 @@ void ExtensionManager_Register_Init( voi
 	_ExtensionManager_Register_Init( self );
 }
 
-ExtensionManager_Register* _ExtensionManager_Register_New(
-		SizeT				_sizeOfSelf,
-		Type				type,
-		Stg_Class_DeleteFunction*		_delete,
-		Stg_Class_PrintFunction*		_print,
-		Stg_Class_CopyFunction*		_copy )
+ExtensionManager_Register* _ExtensionManager_Register_New(  EXTENSIONMANAGER_REGISTER_DEFARGS  )
 {
 	ExtensionManager_Register* self;
 	
 	/* Allocate memory */
 	assert( _sizeOfSelf >= sizeof(ExtensionManager_Register) );
-	self = (ExtensionManager_Register*)_Stg_Class_New( _sizeOfSelf, type, _delete, _print, _copy );
+	self = (ExtensionManager_Register*)_Stg_Class_New(  STG_CLASS_PASSARGS  );
 	
 	/* General info */
 	
@@ -153,3 +155,5 @@ ExtensionManager* _ExtensionManager_Regi
 	
 	return ExtensionManager_Register_GetExtension( self, handle );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/src/ExtensionManager_Register.h
--- a/Base/Extensibility/src/ExtensionManager_Register.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/src/ExtensionManager_Register.h	Mon Nov 30 02:00:28 2009 +1100
@@ -70,12 +70,18 @@
 	void ExtensionManager_Register_Init( void* extension_Register );
 	
 	/** Creation implementation / Virtual constructor */
-	ExtensionManager_Register* _ExtensionManager_Register_New( 
-		SizeT				_sizeOfSelf,
-		Type				type,
-		Stg_Class_DeleteFunction*		_delete,
-		Stg_Class_PrintFunction*		_print,
-		Stg_Class_CopyFunction*		_copy );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define EXTENSIONMANAGER_REGISTER_DEFARGS \
+                STG_CLASS_DEFARGS
+
+	#define EXTENSIONMANAGER_REGISTER_PASSARGS \
+                STG_CLASS_PASSARGS
+
+	ExtensionManager_Register* _ExtensionManager_Register_New(  EXTENSIONMANAGER_REGISTER_DEFARGS  );
 	
 	/** Initialisation implementation */
 	void _ExtensionManager_Register_Init( void* extension_Register );
@@ -103,3 +109,4 @@
 	ExtensionManager* _ExtensionManager_Register_At( void* extension_Register, ExtensionManager_Index handle );
 	
 #endif /* __Base_Extensibility_ExtensionManager_Register_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/src/Finalise.c
--- a/Base/Extensibility/src/Finalise.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/src/Finalise.c	Mon Nov 30 02:00:28 2009 +1100
@@ -50,3 +50,5 @@ Bool BaseExtensibility_Finalise( void ) 
 	
 	return True;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/src/Hook.c
--- a/Base/Extensibility/src/Hook.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/src/Hook.c	Mon Nov 30 02:00:28 2009 +1100
@@ -49,7 +49,17 @@ const Type Hook_Type = "Hook";
 
 /** allocate and initialise a new Hook. */
 Hook* Hook_New( Name name, Func_Ptr funcPtr, char* addedBy ) {
-	return _Hook_New( sizeof(Hook), Hook_Type, _Hook_Delete, _Hook_Print, _Hook_Copy, name, funcPtr, addedBy );
+	/* Variables set in this function */
+	SizeT                      _sizeOfSelf = sizeof(Hook);
+	Type                              type = Hook_Type;
+	Stg_Class_DeleteFunction*      _delete = _Hook_Delete;
+	Stg_Class_PrintFunction*        _print = _Hook_Print;
+	Stg_Class_CopyFunction*          _copy = _Hook_Copy;
+
+	/* Variables that are set to ZERO are variables that will be set either by the current _New function or another parent _New function further up the hierachy */
+	AllocationType  nameAllocationType = ZERO;
+
+	return _Hook_New(  HOOK_PASSARGS  );
 }
 
 void Hook_Init( void* hook, Name name, Func_Ptr funcPtr, char* addedBy ) {
@@ -72,21 +82,18 @@ void Hook_Init( void* hook, Name name, F
 }
 
 
-Hook* _Hook_New( 
-		SizeT 				_sizeOfSelf, 
-		Type 				type, 
-		Stg_Class_DeleteFunction* 		_delete,
-		Stg_Class_PrintFunction*		_print,
-		Stg_Class_CopyFunction*		_copy, 
-		Name 				name, 
-		Func_Ptr			funcPtr,
-		char*				addedBy )
+Hook* _Hook_New(  HOOK_DEFARGS  )
 {
 	Hook* self;
 	
 	/* Allocate memory */
 	assert( _sizeOfSelf >= sizeof(Hook) );
-	self = (Hook*)_Stg_Object_New( _sizeOfSelf, type, _delete, _print, _copy, name, NON_GLOBAL );
+	/* The following terms are parameters that have been passed into this function but are being set before being passed onto the parent */
+	/* This means that any values of these parameters that are passed into this function are not passed onto the parent function
+	   and so should be set to ZERO in any children of this class. */
+	nameAllocationType = NON_GLOBAL;
+
+	self = (Hook*)_Stg_Object_New(  STG_OBJECT_PASSARGS  );
 	
 	/* General info */
 	
@@ -162,3 +169,5 @@ void* _Hook_Copy( void* hook, void* dest
 	
 	return (void*)newHook;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/src/Hook.h
--- a/Base/Extensibility/src/Hook.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/src/Hook.h	Mon Nov 30 02:00:28 2009 +1100
@@ -59,15 +59,22 @@
 	void Hook_Init( void* hook, Name name, Func_Ptr funcPtr, char* addedBy );
 	
 	/* Creation implementation */
-	Hook* _Hook_New( 
-		SizeT 				_sizeOfSelf, 
-		Type 				type, 
-		Stg_Class_DeleteFunction* 		_delete,
-		Stg_Class_PrintFunction*		_print,
-		Stg_Class_CopyFunction*		_copy, 
-		Name 				name, 
-		Func_Ptr 			funcPtr,
-		char*				 addedBy );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define HOOK_DEFARGS \
+                STG_OBJECT_DEFARGS, \
+                Func_Ptr  funcPtr, \
+                char*     addedBy
+
+	#define HOOK_PASSARGS \
+                STG_OBJECT_PASSARGS, \
+	        funcPtr, \
+	        addedBy
+
+	Hook* _Hook_New(  HOOK_DEFARGS  );
 	
 	/* Initialisation implementation */
 	void _Hook_Init( Hook* self, Func_Ptr funcPtr, char* addedBy );
@@ -88,3 +95,4 @@
 	void* _Hook_Copy( void* hook, void* dest, Bool deep, Name nameExt, PtrMap* ptrMap );
 	
 #endif /* __Base_Extensibility_Hook_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/src/Init.c
--- a/Base/Extensibility/src/Init.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/src/Init.c	Mon Nov 30 02:00:28 2009 +1100
@@ -89,3 +89,5 @@ Bool BaseExtensibility_Init( int* argc, 
 		
 	return True;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/src/Module.c
--- a/Base/Extensibility/src/Module.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/src/Module.c	Mon Nov 30 02:00:28 2009 +1100
@@ -89,21 +89,18 @@ void ***stg_module_funcs = NULL;
 void ***stg_module_funcs = NULL;
 #endif
 
-Module* _Module_New( 
-		SizeT                        _sizeOfSelf,
-		Type                         type,
-		Stg_Class_DeleteFunction*    _delete,
-		Stg_Class_PrintFunction*     _print,
-		Stg_Class_CopyFunction*      _copy, 
-		Name                         name,
-		Module_MangleNameFunction    MangleName,
-		Stg_ObjectList*              directories )
+Module* _Module_New(  MODULE_DEFARGS  )
 {
 	Module* self;
 
 	assert( _sizeOfSelf >= sizeof(Module) );
 
-	self = (Module*)_Stg_Object_New( _sizeOfSelf, type, _delete, _print, _copy, name, NON_GLOBAL );
+	/* The following terms are parameters that have been passed into this function but are being set before being passed onto the parent */
+	/* This means that any values of these parameters that are passed into this function are not passed onto the parent function
+	   and so should be set to ZERO in any children of this class. */
+	nameAllocationType = NON_GLOBAL;
+
+	self = (Module*)_Stg_Object_New(  STG_OBJECT_PASSARGS  );
 	
 	_Module_Init( self, MangleName, directories );
 
@@ -359,3 +356,7 @@ void* Module_MapStaticSymbol(Module *sel
     return stg_module_funcs[ii][jj];
 }
 #endif
+
+
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/src/Module.h
--- a/Base/Extensibility/src/Module.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/src/Module.h	Mon Nov 30 02:00:28 2009 +1100
@@ -70,15 +70,22 @@
 
 
 	/* Creation implementation / Virtual constructor */
-	Module* _Module_New( 
-		SizeT                        _sizeOfSelf,
-		Type                         type,
-		Stg_Class_DeleteFunction*    _delete,
-		Stg_Class_PrintFunction*     _print,
-		Stg_Class_CopyFunction*      _copy, 
-		Name                         name,
-		Module_MangleNameFunction    MangleName,
-		Stg_ObjectList*              directories );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define MODULE_DEFARGS \
+                STG_OBJECT_DEFARGS, \
+                Module_MangleNameFunction*   MangleName, \
+                Stg_ObjectList*             directories
+
+	#define MODULE_PASSARGS \
+                STG_OBJECT_PASSARGS, \
+	        MangleName,  \
+	        directories
+
+	Module* _Module_New(  MODULE_DEFARGS  );
 	
 	/* Initialisation implementation */
 	void _Module_Init(
@@ -109,3 +116,4 @@
 	void Module_UnLoad( void* module );
 	
 #endif /* __Base_Extensibility_Module_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/src/ModulesManager.c
--- a/Base/Extensibility/src/ModulesManager.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/src/ModulesManager.c	Mon Nov 30 02:00:28 2009 +1100
@@ -71,24 +71,13 @@ const char* Codelet_GetMetadata();
 /* Define memory for global pointer to moduleDirectories */
 Stg_ObjectList*  moduleDirectories = NULL;	
 
-ModulesManager* _ModulesManager_New(
-		SizeT                                   _sizeOfSelf,
-		Type                                    type,
-		Stg_Class_DeleteFunction*               _delete,
-		Stg_Class_PrintFunction*                _print,
-		Stg_Class_CopyFunction*                 _copy, 
-		ModulesManager_GetModulesListFunction*  _getModulesList,
-		ModulesManager_LoadModuleFunction*	_loadModule,
-		ModulesManager_UnloadModuleFunction*	_unloadModule,
-		ModulesManager_ModuleFactoryFunction*   _moduleFactory,
-		ModulesManager_CheckContextFunction*	_checkContext,
-		ModulesManager_GetModuleNameFunction*	_getModuleName  )
+ModulesManager* _ModulesManager_New(  MODULESMANAGER_DEFARGS  )
 {
 	ModulesManager* self;
 	
 	/* Allocate memory */
 	assert( _sizeOfSelf >= sizeof(ModulesManager) );
-	self = (ModulesManager*)_Stg_Class_New( _sizeOfSelf, type, _delete, _print, _copy );
+	self = (ModulesManager*)_Stg_Class_New(  STG_CLASS_PASSARGS  );
 	
 	/* General info */
 	
@@ -498,3 +487,5 @@ Bool ModulesManager_ConstructModule( voi
 
 	return True;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/src/ModulesManager.h
--- a/Base/Extensibility/src/ModulesManager.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/src/ModulesManager.h	Mon Nov 30 02:00:28 2009 +1100
@@ -79,18 +79,30 @@
 	extern Stg_ObjectList* moduleDirectories;	
 
 	/* Creation implementation / Virtual constructor */
-	ModulesManager* _ModulesManager_New( 
-		SizeT                                   _sizeOfSelf,
-		Type                                    type,
-		Stg_Class_DeleteFunction*               _delete,
-		Stg_Class_PrintFunction*                _print,
-		Stg_Class_CopyFunction*                 _copy, 
-		ModulesManager_GetModulesListFunction*  _getModulesList,
-		ModulesManager_LoadModuleFunction*	_loadModule,
-		ModulesManager_UnloadModuleFunction*	_unloadModule,
-		ModulesManager_ModuleFactoryFunction*   _moduleFactory,
-		ModulesManager_CheckContextFunction*	_checkContext,
-		ModulesManager_GetModuleNameFunction*	_getModuleName  );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define MODULESMANAGER_DEFARGS \
+                STG_CLASS_DEFARGS, \
+                ModulesManager_GetModulesListFunction*  _getModulesList, \
+                ModulesManager_LoadModuleFunction*          _loadModule, \
+                ModulesManager_UnloadModuleFunction*      _unloadModule, \
+                ModulesManager_ModuleFactoryFunction*    _moduleFactory, \
+                ModulesManager_CheckContextFunction*      _checkContext, \
+                ModulesManager_GetModuleNameFunction*    _getModuleName
+
+	#define MODULESMANAGER_PASSARGS \
+                STG_CLASS_PASSARGS, \
+	        _getModulesList, \
+	        _loadModule,     \
+	        _unloadModule,   \
+	        _moduleFactory,  \
+	        _checkContext,   \
+	        _getModuleName 
+
+	ModulesManager* _ModulesManager_New(  MODULESMANAGER_DEFARGS  );
 	
 	/* Initialisation implementation */
 	void _ModulesManager_Init( void* modulesManager );
@@ -139,3 +151,4 @@
 	Bool ModulesManager_ConstructModule( void* modulesManager, Name moduleName, Stg_ComponentFactory* cf, void* data );
 
 #endif /* __Base_Extensibility_ModulesManager_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/src/Plugin.c
--- a/Base/Extensibility/src/Plugin.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/src/Plugin.c	Mon Nov 30 02:00:28 2009 +1100
@@ -59,36 +59,31 @@ static const char* PLUGIN_REGISTER_SUFFI
 
 
 Plugin* Plugin_New( Name name, Stg_ObjectList* directories ) {
-	return _Plugin_New( 
-		sizeof(Plugin), 
-		Plugin_Type, 
-		_Plugin_Delete, 
-		_Plugin_Print, 
-		NULL,
-		name,
-		_Plugin_MangleName,
-		directories );
+	/* Variables set in this function */
+	SizeT                       _sizeOfSelf = sizeof(Plugin);
+	Type                               type = Plugin_Type;
+	Stg_Class_DeleteFunction*       _delete = _Plugin_Delete;
+	Stg_Class_PrintFunction*         _print = _Plugin_Print;
+	Stg_Class_CopyFunction*           _copy = NULL;
+	Module_MangleNameFunction*   MangleName = _Plugin_MangleName;
+
+	/* Variables that are set to ZERO are variables that will be set either by the current _New function or another parent _New function further up the hierachy */
+	AllocationType  nameAllocationType = ZERO;
+
+	return _Plugin_New(  PLUGIN_PASSARGS  );
 }
 
 Module* Plugin_Factory( Name name, Stg_ObjectList* directories ) {
 	return (Module*)Plugin_New( name, directories );
 }
 	
-Plugin* _Plugin_New( 
-		SizeT                        _sizeOfSelf,
-		Type                         type,
-		Stg_Class_DeleteFunction*    _delete,
-		Stg_Class_PrintFunction*     _print,
-		Stg_Class_CopyFunction*      _copy, 
-		Name                         name,
-		Module_MangleNameFunction    MangleName,
-		Stg_ObjectList*              directories )
+Plugin* _Plugin_New(  PLUGIN_DEFARGS  )
 {
 	Plugin* self;
 
 	assert( _sizeOfSelf >= sizeof(Plugin) );
 
-	self = (Plugin*)_Module_New( _sizeOfSelf, type, _delete, _print, _copy, name, MangleName, directories );
+	self = (Plugin*)_Module_New(  MODULE_PASSARGS  );
 	
 	_Plugin_Init( self );
 
@@ -140,3 +135,5 @@ Plugin_RegisterFunction* Plugin_GetRegis
 
 	return self->Register;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/src/Plugin.h
--- a/Base/Extensibility/src/Plugin.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/src/Plugin.h	Mon Nov 30 02:00:28 2009 +1100
@@ -63,15 +63,18 @@
 	Module* Plugin_Factory( Name name, Stg_ObjectList* directories );
 	
 	/* Creation implementation / Virtual constructor */
-	Plugin* _Plugin_New( 
-		SizeT                        _sizeOfSelf,
-		Type                         type,
-		Stg_Class_DeleteFunction*    _delete,
-		Stg_Class_PrintFunction*     _print,
-		Stg_Class_CopyFunction*      _copy, 
-		Name                         name,
-		Module_MangleNameFunction    MangleName,
-		Stg_ObjectList*              directories );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define PLUGIN_DEFARGS \
+                MODULE_DEFARGS
+
+	#define PLUGIN_PASSARGS \
+                MODULE_PASSARGS
+
+	Plugin* _Plugin_New(  PLUGIN_DEFARGS  );
 	
 	/* Initialisation implementation */
 	void _Plugin_Init( Plugin* self );
@@ -89,3 +92,4 @@
 	Plugin_RegisterFunction* Plugin_GetRegisterFunc( void* plugin );
 	
 #endif /* __Base_Extensibility_Plugin_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/src/PluginsManager.c
--- a/Base/Extensibility/src/PluginsManager.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/src/PluginsManager.c	Mon Nov 30 02:00:28 2009 +1100
@@ -47,49 +47,29 @@ const Type PluginsManager_Type = "Plugin
 
 
 PluginsManager* PluginsManager_New( void ) {
-	return _PluginsManager_New( 
-		sizeof(PluginsManager), 
-		PluginsManager_Type, 
-		_PluginsManager_Delete, 
-		_PluginsManager_Print, 
-		NULL, 
-		_PluginsManager_GetPluginsList,
-		_PluginsManager_LoadPlugin,
-		_PluginsManager_UnloadPlugin,
-		Plugin_Factory,
-		_PluginsManager_CheckContext,
-		_PluginsManager_GetModuleName );
+	/* Variables set in this function */
+	SizeT                                       _sizeOfSelf = sizeof(PluginsManager);
+	Type                                               type = PluginsManager_Type;
+	Stg_Class_DeleteFunction*                       _delete = _PluginsManager_Delete;
+	Stg_Class_PrintFunction*                         _print = _PluginsManager_Print;
+	Stg_Class_CopyFunction*                           _copy = NULL;
+	ModulesManager_GetModulesListFunction*  _getModulesList = _PluginsManager_GetPluginsList;
+	ModulesManager_LoadModuleFunction*          _loadModule = _PluginsManager_LoadPlugin;
+	ModulesManager_UnloadModuleFunction*      _unloadModule = _PluginsManager_UnloadPlugin;
+	ModulesManager_ModuleFactoryFunction*    _moduleFactory = Plugin_Factory;
+	ModulesManager_CheckContextFunction*      _checkContext = _PluginsManager_CheckContext;
+	ModulesManager_GetModuleNameFunction*    _getModuleName = _PluginsManager_GetModuleName;
+
+	return _PluginsManager_New(  PLUGINSMANAGER_PASSARGS  );
 }
 
-PluginsManager* _PluginsManager_New(
-		SizeT                                   _sizeOfSelf,
-		Type                                    type,
-		Stg_Class_DeleteFunction*               _delete,
-		Stg_Class_PrintFunction*                _print,
-		Stg_Class_CopyFunction*                 _copy, 
-		ModulesManager_GetModulesListFunction*  _getModulesList,
-		ModulesManager_LoadModuleFunction*	_loadModule,
-		ModulesManager_UnloadModuleFunction*	_unloadModule,
-		ModulesManager_ModuleFactoryFunction*   _moduleFactory,
-		ModulesManager_CheckContextFunction*	_checkContext,
-		ModulesManager_GetModuleNameFunction*	_getModuleName )
+PluginsManager* _PluginsManager_New(  PLUGINSMANAGER_DEFARGS  )
 {
 	PluginsManager* self;
 	
 	/* Allocate memory */
 	assert( _sizeOfSelf >= sizeof(PluginsManager) );
-	self = (PluginsManager*)_ModulesManager_New( 
-		_sizeOfSelf, 
-		type, 
-		_delete, 
-		_print, 
-		_copy, 
-		_getModulesList, 
-		_loadModule, 
-		_unloadModule,
-		_moduleFactory,
-		_checkContext,
-		_getModuleName );
+	self = (PluginsManager*)_ModulesManager_New(  MODULESMANAGER_PASSARGS  );
 	
 	/* General info */
 	
@@ -187,3 +167,5 @@ Name _PluginsManager_GetModuleName( void
 }
 
 
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/src/PluginsManager.h
--- a/Base/Extensibility/src/PluginsManager.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/src/PluginsManager.h	Mon Nov 30 02:00:28 2009 +1100
@@ -64,18 +64,18 @@
 	PluginsManager* PluginsManager_New( void );
 	
 	/* Creation implementation / Virtual constructor */
-	PluginsManager* _PluginsManager_New( 
-		SizeT                                   _sizeOfSelf,
-		Type                                    type,
-		Stg_Class_DeleteFunction*               _delete,
-		Stg_Class_PrintFunction*                _print,
-		Stg_Class_CopyFunction*                 _copy, 
-		ModulesManager_GetModulesListFunction*  _getModulesList,
-		ModulesManager_LoadModuleFunction*	_loadModule,
-		ModulesManager_UnloadModuleFunction*	_unloadModule,
-		ModulesManager_ModuleFactoryFunction*   _moduleFactory,
-		ModulesManager_CheckContextFunction*	_checkContext,
-		ModulesManager_GetModuleNameFunction*	_getModuleName );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define PLUGINSMANAGER_DEFARGS \
+                MODULESMANAGER_DEFARGS
+
+	#define PLUGINSMANAGER_PASSARGS \
+                MODULESMANAGER_PASSARGS
+
+	PluginsManager* _PluginsManager_New(  PLUGINSMANAGER_DEFARGS  );
 	
 	/* Initialisation implementation */
 	void _PluginsManager_Init( void* pluginsManager );
@@ -105,3 +105,4 @@
 	#define PluginsManager_Submit ModulesManager_Submit
 	
 #endif /* __Base_Extensibility_PluginsManager_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/src/SimpleExtensionInfo.c
--- a/Base/Extensibility/src/SimpleExtensionInfo.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/src/SimpleExtensionInfo.c	Mon Nov 30 02:00:28 2009 +1100
@@ -55,16 +55,18 @@ const Type SimpleExtensionInfo_Type = "S
 
 /** allocate and initialise a new SimpleExtensionInfo. */
 SimpleExtensionInfo* SimpleExtensionInfo_New( const Name name, SizeT size, Index count ) {
-	return _SimpleExtensionInfo_New( 
-		sizeof(SimpleExtensionInfo), 
-		SimpleExtensionInfo_Type, 
-		_SimpleExtensionInfo_Delete,
-		_SimpleExtensionInfo_Print, 
-		_SimpleExtensionInfo_Copy, 
-		_SimpleExtensionInfo_DataCopy,
-		(Name)name, 
-		size, 
-		count );
+	/* Variables set in this function */
+	SizeT                            _sizeOfSelf = sizeof(SimpleExtensionInfo);
+	Type                                    type = SimpleExtensionInfo_Type;
+	Stg_Class_DeleteFunction*            _delete = _SimpleExtensionInfo_Delete;
+	Stg_Class_PrintFunction*              _print = _SimpleExtensionInfo_Print;
+	Stg_Class_CopyFunction*                _copy = _SimpleExtensionInfo_Copy;
+	ExtensionInfo_DataCopyFunction*    _dataCopy = _SimpleExtensionInfo_DataCopy;
+
+	/* Variables that are set to ZERO are variables that will be set either by the current _New function or another parent _New function further up the hierachy */
+	AllocationType  nameAllocationType = ZERO;
+
+	return _SimpleExtensionInfo_New(  SIMPLEEXTENSIONINFO_PASSARGS  );
 }
 
 
@@ -87,31 +89,13 @@ void SimpleExtensionInfo_Init( void* sim
 }
 
 
-SimpleExtensionInfo* _SimpleExtensionInfo_New( 
-		SizeT 				_sizeOfSelf, 
-		Type 				type, 
-		Stg_Class_DeleteFunction* 	_delete,
-		Stg_Class_PrintFunction*	_print,
-		Stg_Class_CopyFunction*		_copy, 
-		ExtensionInfo_DataCopyFunction*	_dataCopy,
-		Name 				name, 
-		SizeT 				size,
-		Index				count )
+SimpleExtensionInfo* _SimpleExtensionInfo_New(  SIMPLEEXTENSIONINFO_DEFARGS  )
 {
 	SimpleExtensionInfo* self;
 	
 	/* Allocate memory */
 	assert( _sizeOfSelf >= sizeof(SimpleExtensionInfo) );
-	self = (SimpleExtensionInfo*)_ExtensionInfo_New( 
-		_sizeOfSelf, 
-		type, 
-		_delete, 
-		_print, 
-		_copy, 
-		_dataCopy,
-		name, 
-		size,
-		count );
+	self = (SimpleExtensionInfo*)_ExtensionInfo_New(  EXTENSIONINFO_PASSARGS  );
 	
 	/* General info */
 	
@@ -193,3 +177,5 @@ void* _SimpleExtensionInfo_DataCopy(
 
 /* Public member functions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
 /* Private member functions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/src/SimpleExtensionInfo.h
--- a/Base/Extensibility/src/SimpleExtensionInfo.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/src/SimpleExtensionInfo.h	Mon Nov 30 02:00:28 2009 +1100
@@ -72,16 +72,18 @@
 	void SimpleExtensionInfo_Init( void* simpleExtensionInfo, const Name name, SizeT size, Index count );
 	
 	/* Creation implementation */
-	SimpleExtensionInfo* _SimpleExtensionInfo_New( 
-		SizeT 				_sizeOfSelf, 
-		Type 				type, 
-		Stg_Class_DeleteFunction* 	_delete,
-		Stg_Class_PrintFunction*	_print,
-		Stg_Class_CopyFunction*		_copy, 
-		ExtensionInfo_DataCopyFunction*	_dataCopy,
-		Name 				name, 
-		SizeT 				size,
-		Index				count );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define SIMPLEEXTENSIONINFO_DEFARGS \
+                EXTENSIONINFO_DEFARGS
+
+	#define SIMPLEEXTENSIONINFO_PASSARGS \
+                EXTENSIONINFO_PASSARGS
+
+	SimpleExtensionInfo* _SimpleExtensionInfo_New(  SIMPLEEXTENSIONINFO_DEFARGS  );
 	
 	/* Initialisation implementation */
 	void _SimpleExtensionInfo_Init( SimpleExtensionInfo* self, Name name, SizeT size, Index count );
@@ -106,3 +108,4 @@
 	/* Public member functions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
 	/* Private member functions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
 #endif /* __Base_Extensibility_SimpleExtensionInfo_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/src/Toolbox.c
--- a/Base/Extensibility/src/Toolbox.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/src/Toolbox.c	Mon Nov 30 02:00:28 2009 +1100
@@ -60,36 +60,31 @@ static const char* TOOLBOX_MODULE_SUFFIX
 #endif
 
 Toolbox* Toolbox_New( Name name, Stg_ObjectList* directories ) {
-	return _Toolbox_New( 
-		sizeof(Toolbox), 
-		Toolbox_Type, 
-		_Toolbox_Delete, 
-		_Toolbox_Print, 
-		NULL,
-		name,
-		_Toolbox_MangleName,
-		directories );
+	/* Variables set in this function */
+	SizeT                       _sizeOfSelf = sizeof(Toolbox);
+	Type                               type = Toolbox_Type;
+	Stg_Class_DeleteFunction*       _delete = _Toolbox_Delete;
+	Stg_Class_PrintFunction*         _print = _Toolbox_Print;
+	Stg_Class_CopyFunction*           _copy = NULL;
+	Module_MangleNameFunction*   MangleName = _Toolbox_MangleName;
+
+	/* Variables that are set to ZERO are variables that will be set either by the current _New function or another parent _New function further up the hierachy */
+	AllocationType  nameAllocationType = ZERO;
+
+	return _Toolbox_New(  TOOLBOX_PASSARGS  );
 }
 
 Module* Toolbox_Factory( Name name, Stg_ObjectList* directories ) {
 	return (Module*)Toolbox_New( name, directories );
 }
 	
-Toolbox* _Toolbox_New( 
-		SizeT                        _sizeOfSelf,
-		Type                         type,
-		Stg_Class_DeleteFunction*    _delete,
-		Stg_Class_PrintFunction*     _print,
-		Stg_Class_CopyFunction*      _copy, 
-		Name                         name,
-		Module_MangleNameFunction    MangleName,
-		Stg_ObjectList*              directories )
+Toolbox* _Toolbox_New(  TOOLBOX_DEFARGS  )
 {
 	Toolbox* self;
 
 	assert( _sizeOfSelf >= sizeof(Toolbox) );
 
-	self = (Toolbox*)_Module_New( _sizeOfSelf, type, _delete, _print, _copy, name, MangleName, directories );
+	self = (Toolbox*)_Module_New(  MODULE_PASSARGS  );
 	
 	_Toolbox_Init( self );
 
@@ -159,3 +154,5 @@ Toolbox_FinaliseFunction* Toolbox_GetFin
 
 	return self->Finalise;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/src/Toolbox.h
--- a/Base/Extensibility/src/Toolbox.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/src/Toolbox.h	Mon Nov 30 02:00:28 2009 +1100
@@ -67,15 +67,18 @@
 	Module* Toolbox_Factory( Name name, Stg_ObjectList* directories );
 	
 	/* Creation implementation / Virtual constructor */
-	Toolbox* _Toolbox_New( 
-		SizeT                        _sizeOfSelf,
-		Type                         type,
-		Stg_Class_DeleteFunction*    _delete,
-		Stg_Class_PrintFunction*     _print,
-		Stg_Class_CopyFunction*      _copy, 
-		Name                         name,
-		Module_MangleNameFunction    MangleName,
-		Stg_ObjectList*              directories );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define TOOLBOX_DEFARGS \
+                MODULE_DEFARGS
+
+	#define TOOLBOX_PASSARGS \
+                MODULE_PASSARGS
+
+	Toolbox* _Toolbox_New(  TOOLBOX_DEFARGS  );
 	
 	/* Initialisation implementation */
 	void _Toolbox_Init( Toolbox* self );
@@ -99,3 +102,4 @@
 	Toolbox_FinaliseFunction* Toolbox_GetFinaliseFunc( void* toolbox );
 	
 #endif /* __Base_Extensibility_Toolbox_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/src/ToolboxesManager.c
--- a/Base/Extensibility/src/ToolboxesManager.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/src/ToolboxesManager.c	Mon Nov 30 02:00:28 2009 +1100
@@ -49,53 +49,29 @@ const Type ToolboxesManager_Type = "Tool
 
 
 ToolboxesManager* ToolboxesManager_New( int* argc, char*** argv ) {
-	return _ToolboxesManager_New( 
-		sizeof(ToolboxesManager), 
-		ToolboxesManager_Type, 
-		_ToolboxesManager_Delete, 
-		_ToolboxesManager_Print, 
-		NULL, 
-		_ToolboxesManager_GetToolboxesList,
-		_ToolboxesManager_LoadToolbox,
-		_ToolboxesManager_UnloadToolbox,
-		Toolbox_Factory,
-		_ToolboxesManager_CheckContext,
-		_ToolboxesManager_GetModuleName,
-		argc,
-		argv );
+	/* Variables set in this function */
+	SizeT                                       _sizeOfSelf = sizeof(ToolboxesManager);
+	Type                                               type = ToolboxesManager_Type;
+	Stg_Class_DeleteFunction*                       _delete = _ToolboxesManager_Delete;
+	Stg_Class_PrintFunction*                         _print = _ToolboxesManager_Print;
+	Stg_Class_CopyFunction*                           _copy = NULL;
+	ModulesManager_GetModulesListFunction*  _getModulesList = _ToolboxesManager_GetToolboxesList;
+	ModulesManager_LoadModuleFunction*          _loadModule = _ToolboxesManager_LoadToolbox;
+	ModulesManager_UnloadModuleFunction*      _unloadModule = _ToolboxesManager_UnloadToolbox;
+	ModulesManager_ModuleFactoryFunction*    _moduleFactory = Toolbox_Factory;
+	ModulesManager_CheckContextFunction*      _checkContext = _ToolboxesManager_CheckContext;
+	ModulesManager_GetModuleNameFunction*    _getModuleName = _ToolboxesManager_GetModuleName;
+
+	return _ToolboxesManager_New(  TOOLBOXESMANAGER_PASSARGS  );
 }
 
-ToolboxesManager* _ToolboxesManager_New(
-		SizeT                                   _sizeOfSelf,
-		Type                                    type,
-		Stg_Class_DeleteFunction*               _delete,
-		Stg_Class_PrintFunction*                _print,
-		Stg_Class_CopyFunction*                 _copy, 
-		ModulesManager_GetModulesListFunction*  _getModulesList,
-		ModulesManager_LoadModuleFunction*	_loadModule,
-		ModulesManager_UnloadModuleFunction*	_unloadModule,
-		ModulesManager_ModuleFactoryFunction*   _moduleFactory,
-		ModulesManager_CheckContextFunction*	_checkContext,
-		ModulesManager_GetModuleNameFunction*	_getModuleName,
-		int*					argc,
-		char***					argv )
+ToolboxesManager* _ToolboxesManager_New(  TOOLBOXESMANAGER_DEFARGS  )
 {
 	ToolboxesManager* self;
 	
 	/* Allocate memory */
 	assert( _sizeOfSelf >= sizeof(ToolboxesManager) );
-	self = (ToolboxesManager*)_ModulesManager_New( 
-		_sizeOfSelf, 
-		type, 
-		_delete, 
-		_print, 
-		_copy, 
-		_getModulesList, 
-		_loadModule, 
-		_unloadModule,
-		_moduleFactory,
-		_checkContext,
-		_getModuleName );
+	self = (ToolboxesManager*)_ModulesManager_New(  MODULESMANAGER_PASSARGS  );
 	
 	/* General info */
 	
@@ -228,3 +204,5 @@ Bool ToolboxesManager_IsInitialised( voi
 	return False;
 }
 
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/src/ToolboxesManager.h
--- a/Base/Extensibility/src/ToolboxesManager.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/src/ToolboxesManager.h	Mon Nov 30 02:00:28 2009 +1100
@@ -69,20 +69,22 @@
 	ToolboxesManager* ToolboxesManager_New( int* argc, char*** argv );
 	
 	/* Creation implementation / Virtual constructor */
-	ToolboxesManager* _ToolboxesManager_New( 
-		SizeT                                   _sizeOfSelf,
-		Type                                    type,
-		Stg_Class_DeleteFunction*               _delete,
-		Stg_Class_PrintFunction*                _print,
-		Stg_Class_CopyFunction*                 _copy, 
-		ModulesManager_GetModulesListFunction*  _getModulesList,
-		ModulesManager_LoadModuleFunction*	_loadModule,
-		ModulesManager_UnloadModuleFunction*	_unloadModule,
-		ModulesManager_ModuleFactoryFunction*   _moduleFactory,
-		ModulesManager_CheckContextFunction*	_checkContext,
-		ModulesManager_GetModuleNameFunction*	_getModuleName,
-		int*					argc,
-		char***					argv );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define TOOLBOXESMANAGER_DEFARGS \
+                MODULESMANAGER_DEFARGS, \
+                int*     argc, \
+                char***  argv
+
+	#define TOOLBOXESMANAGER_PASSARGS \
+                MODULESMANAGER_PASSARGS, \
+	        argc, \
+	        argv
+
+	ToolboxesManager* _ToolboxesManager_New(  TOOLBOXESMANAGER_DEFARGS  );
 
 	/* Initialisation implementation */
 	void _ToolboxesManager_Init( void* toolboxesManager, int* argc, char*** argv );
@@ -118,3 +120,4 @@
 	Bool ToolboxesManager_IsInitialised( void* toolboxesManager, char* label );
 
 #endif /* __Base_Extensibility_ToolboxesManager_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/tests/EntryPointSuite.c
--- a/Base/Extensibility/tests/EntryPointSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/tests/EntryPointSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -403,3 +403,5 @@ void EntryPointSuite( pcu_suite_t* suite
    pcu_suite_addTest( suite, EntryPointSuite_TestClassHook );
    pcu_suite_addTest( suite, EntryPointSuite_TestMinMax );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Extensibility/tests/ExtensionSuite.c
--- a/Base/Extensibility/tests/ExtensionSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Extensibility/tests/ExtensionSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -697,3 +697,5 @@ void ExtensionSuite( pcu_suite_t* suite 
    pcu_suite_addTest( suite, ExtensionSuite_TestExtendOfExtendedArray );
    pcu_suite_addTest( suite, ExtensionSuite_TestCopyExtendedArray );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/FlattenXML/src/main.c
--- a/Base/FlattenXML/src/main.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/FlattenXML/src/main.c	Mon Nov 30 02:00:28 2009 +1100
@@ -90,3 +90,5 @@ int main( int argc, char* argv[] )
 
 	return 0; /* success */
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Foundation/src/Class.c
--- a/Base/Foundation/src/Class.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Foundation/src/Class.c	Mon Nov 30 02:00:28 2009 +1100
@@ -118,7 +118,7 @@ void _Stg_Class_Print( void* _class, str
 	
 	Journal_Printf( stream, "Stg_Class (ptr): %p\n", self );
 	Stream_Indent( stream );
-	Journal_Printf( stream, "sizeOfSelf: %lu\n", self->_sizeOfSelf );
+	Journal_Printf( stream, "_sizeOfSelf: %lu\n", self->_sizeOfSelf );
 	Journal_Printf( stream, "_deleteSelf: %s\n", self->_deleteSelf ? "Yes" : "No" );
 	Journal_Printf( stream, "type: %s\n", self->type == Type_Invalid ? "Invalid" : self->type );
 	Journal_Printf( stream, "_delete (func ptr): %p\n", self->_delete );
@@ -233,3 +233,7 @@ void Stg_Class_RemoveRef( void* _class )
 	if( !(--self->nRefs) )
 		Stg_Class_Delete( self );
 }
+
+
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Foundation/src/Class.h
--- a/Base/Foundation/src/Class.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Foundation/src/Class.h	Mon Nov 30 02:00:28 2009 +1100
@@ -72,14 +72,14 @@
 	/* Class Administration members ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
 
 	#define STG_CLASS_DEFARGS					\
-		SizeT				sizeOfSelf,		\
+		SizeT				_sizeOfSelf,		\
 		Type				type,			\
-		Stg_Class_DeleteFunction*	deleteFunc,		\
-		Stg_Class_PrintFunction*	printFunc,		\
-		Stg_Class_CopyFunction*		copyFunc
+		Stg_Class_DeleteFunction*	_delete,		\
+		Stg_Class_PrintFunction*	 _print,		\
+		Stg_Class_CopyFunction*		  _copy
 
 	#define STG_CLASS_PASSARGS					\
-		sizeOfSelf, type, deleteFunc, printFunc, copyFunc
+		_sizeOfSelf, type, _delete, _print, _copy
     
 	
 	/** Constructor interface. */
diff -r 49bcf68b0315 -r 94417947cddc Base/Foundation/src/CommonRoutines.c
--- a/Base/Foundation/src/CommonRoutines.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Foundation/src/CommonRoutines.c	Mon Nov 30 02:00:28 2009 +1100
@@ -303,3 +303,5 @@ unsigned int Stg_LongestMatchingSubseque
 	return lmsLength;
 }
 					
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Foundation/src/Finalise.c
--- a/Base/Foundation/src/Finalise.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Foundation/src/Finalise.c	Mon Nov 30 02:00:28 2009 +1100
@@ -44,3 +44,5 @@ Bool BaseFoundation_Finalise( void ) {
 	
 	return True;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Foundation/src/Init.c
--- a/Base/Foundation/src/Init.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Foundation/src/Init.c	Mon Nov 30 02:00:28 2009 +1100
@@ -52,3 +52,5 @@ Bool BaseFoundation_Init( int* argc, cha
 	
 	return True;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Foundation/src/Log.c
--- a/Base/Foundation/src/Log.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Foundation/src/Log.c	Mon Nov 30 02:00:28 2009 +1100
@@ -192,3 +192,5 @@ void stg_profile_Func( char func_name[],
 }
 
 
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Foundation/src/MemMonitor.c
--- a/Base/Foundation/src/MemMonitor.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Foundation/src/MemMonitor.c	Mon Nov 30 02:00:28 2009 +1100
@@ -262,3 +262,5 @@ void Stg_MemMonitor_ConvertBytesToPrinti
 		sprintf( unitString, "tb" );
 	}
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Foundation/src/Memory.c
--- a/Base/Foundation/src/Memory.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Foundation/src/Memory.c	Mon Nov 30 02:00:28 2009 +1100
@@ -1860,3 +1860,5 @@ void _Memory_OutOfMemoryErrorFunc( const
 		stgMemory->stgCurrentMemory );
 }
 
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Foundation/src/MemoryField.c
--- a/Base/Foundation/src/MemoryField.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Foundation/src/MemoryField.c	Mon Nov 30 02:00:28 2009 +1100
@@ -311,3 +311,5 @@ unsigned int _MemoryField_CalcLongestSub
 
 	return longestSubFieldNameLen;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Foundation/src/MemoryPointer.c
--- a/Base/Foundation/src/MemoryPointer.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Foundation/src/MemoryPointer.c	Mon Nov 30 02:00:28 2009 +1100
@@ -329,3 +329,5 @@ void MemoryPointer_Print_File_Func_Helpe
 		MemoryPointer_Print ( (MemoryPointer*) memoryPointer, arguments->printOptions );
 	}
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Foundation/src/MemoryReport.c
--- a/Base/Foundation/src/MemoryReport.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Foundation/src/MemoryReport.c	Mon Nov 30 02:00:28 2009 +1100
@@ -273,3 +273,5 @@ const char* _MemoryReport_GetValue( Memo
 	}
 	return valueString;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Foundation/src/NamedObject_Register.c
--- a/Base/Foundation/src/NamedObject_Register.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Foundation/src/NamedObject_Register.c	Mon Nov 30 02:00:28 2009 +1100
@@ -51,31 +51,23 @@ const Type NamedObject_Register_Type = "
 const Type NamedObject_Register_Type = "NamedObject_Register";
 
 NamedObject_Register*	NamedObject_Register_New( void ) {
-	return _NamedObject_Register_New(
-		sizeof(NamedObject_Register),
-		NamedObject_Register_Type,
-		_NamedObject_Register_Delete,
-		_NamedObject_Register_Print,
-		_NamedObject_Register_Copy );
+	/* Variables set in this function */
+	SizeT                      _sizeOfSelf = sizeof(NamedObject_Register);
+	Type                              type = NamedObject_Register_Type;
+	Stg_Class_DeleteFunction*      _delete = _NamedObject_Register_Delete;
+	Stg_Class_PrintFunction*        _print = _NamedObject_Register_Print;
+	Stg_Class_CopyFunction*          _copy = _NamedObject_Register_Copy;
+
+	return _NamedObject_Register_New(  NAMEDOBJECT_REGISTER_PASSARGS  );
 }
 
-NamedObject_Register*	_NamedObject_Register_New( 
-		SizeT			_sizeOfSelf, 
-		Type			type,
-		Stg_Class_DeleteFunction*	_delete,
-		Stg_Class_PrintFunction*	_print,
-		Stg_Class_CopyFunction*	_copy ) 
+NamedObject_Register*	_NamedObject_Register_New(  NAMEDOBJECT_REGISTER_DEFARGS  ) 
 {
 	NamedObject_Register*	self;
 	
 	/* Allocate memory/General info */
 	assert(_sizeOfSelf >= sizeof(NamedObject_Register));
-	self = (NamedObject_Register*)_Stg_Class_New(
-		_sizeOfSelf, 
-		type, 
-		_delete, 
-		_print,
-		_copy );
+	self = (NamedObject_Register*)_Stg_Class_New(  STG_CLASS_PASSARGS  );
 	
 	/* Virtual info */
 	
@@ -147,3 +139,5 @@ void* _NamedObject_Register_Copy( void* 
 
 /* Public member functions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
 /* Private member functions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Foundation/src/NamedObject_Register.h
--- a/Base/Foundation/src/NamedObject_Register.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Foundation/src/NamedObject_Register.h	Mon Nov 30 02:00:28 2009 +1100
@@ -61,12 +61,18 @@
 	
 	NamedObject_Register*	NamedObject_Register_New( void );
 	
-	NamedObject_Register*	_NamedObject_Register_New( 
-		SizeT			_sizeOfSelf, 
-		Type			type,
-		Stg_Class_DeleteFunction*	_delete,
-		Stg_Class_PrintFunction*	_print,
-		Stg_Class_CopyFunction*	_copy );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define NAMEDOBJECT_REGISTER_DEFARGS \
+                STG_CLASS_DEFARGS
+
+	#define NAMEDOBJECT_REGISTER_PASSARGS \
+                STG_CLASS_PASSARGS
+
+	NamedObject_Register*	_NamedObject_Register_New(  NAMEDOBJECT_REGISTER_DEFARGS  );
 	
 	void _NamedObject_Register_Init( NamedObject_Register* self );
 	
@@ -100,3 +106,4 @@
 	
 	/* Private member functions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
 #endif /* __Base_Foundation_NamedObject_Register_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Foundation/src/NewClass.c
--- a/Base/Foundation/src/NewClass.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Foundation/src/NewClass.c	Mon Nov 30 02:00:28 2009 +1100
@@ -137,3 +137,5 @@ SizeT NewClass_GetMemUsage( const void* 
    Stg_Class_Delete( ptrs );
    return mem;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Foundation/src/NewObject.c
--- a/Base/Foundation/src/NewObject.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Foundation/src/NewObject.c	Mon Nov 30 02:00:28 2009 +1100
@@ -77,3 +77,5 @@ const char* NewObject_GetName( void* sel
    return ((NewObject*)self)->name;
 }
 
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Foundation/src/Numerics.c
--- a/Base/Foundation/src/Numerics.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Foundation/src/Numerics.c	Mon Nov 30 02:00:28 2009 +1100
@@ -45,3 +45,5 @@ Bool Num_InRange( double var, double low
 Bool Num_InRange( double var, double low, double upp ) {
 	return (var >= low - Num_Epsilon && var <= upp + Num_Epsilon);
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Foundation/src/Object.c
--- a/Base/Foundation/src/Object.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Foundation/src/Object.c	Mon Nov 30 02:00:28 2009 +1100
@@ -50,20 +50,13 @@ Index _Stg_Object_Counter = 0;
 Index _Stg_Object_Counter = 0;
 static const char _Stg_Object_Unnamed[] = "Unnamed";
 
-Stg_Object* _Stg_Object_New( 
-		SizeT				_sizeOfSelf, 
-		Type				type,
-		Stg_Class_DeleteFunction*	_delete,
-		Stg_Class_PrintFunction*	_print, 
-		Stg_Class_CopyFunction*		_copy, 
-		Name				name,
-		AllocationType			nameAllocationType )
+Stg_Object* _Stg_Object_New(  STG_OBJECT_DEFARGS  )
 {
 	Stg_Object* self;
 	
 	/* Allocate memory */
 	assert( _sizeOfSelf >= sizeof(Stg_Object) );
-	self = (Stg_Object*)_Stg_Class_New( _sizeOfSelf, type, _delete, _print, _copy );
+	self = (Stg_Object*)_Stg_Class_New(  STG_CLASS_PASSARGS  );
 	
 	/* General info */
 	
@@ -187,3 +180,5 @@ Name Stg_Object_AppendSuffix( void* obje
 
 	return name;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Foundation/src/Object.h
--- a/Base/Foundation/src/Object.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Foundation/src/Object.h	Mon Nov 30 02:00:28 2009 +1100
@@ -62,14 +62,22 @@
 	
 	
 	/** Constructor interface. */
-	Stg_Object* _Stg_Object_New( 
-		SizeT				_sizeOfSelf, 
-		Type				type,
-		Stg_Class_DeleteFunction*	_delete,
-		Stg_Class_PrintFunction*	_print, 
-		Stg_Class_CopyFunction*		_copy, 
-		Name				name,
-		AllocationType			nameAllocationType );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define STG_OBJECT_DEFARGS \
+                STG_CLASS_DEFARGS, \
+                Name                          name, \
+                AllocationType  nameAllocationType
+
+	#define STG_OBJECT_PASSARGS \
+                STG_CLASS_PASSARGS, \
+	        name,               \
+	        nameAllocationType
+
+	Stg_Object* _Stg_Object_New(  STG_OBJECT_DEFARGS  );
 	
 	/** Init interface. */
 	void _Stg_Object_Init( Stg_Object* self, Name name, AllocationType nameAllocationType );
@@ -107,3 +115,4 @@
 	
 	/* Private member functions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
 #endif /* __Base_Foundation_Object_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Foundation/src/ObjectAdaptor.c
--- a/Base/Foundation/src/ObjectAdaptor.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Foundation/src/ObjectAdaptor.c	Mon Nov 30 02:00:28 2009 +1100
@@ -51,20 +51,21 @@ const Type Stg_ObjectAdaptor_Type = "Stg
 
 
 Stg_ObjectAdaptor* Stg_ObjectAdaptor_NewOfClass( void* dataPtr, Name name, Bool iOwn, Bool isGlobal ) {
-	return _Stg_ObjectAdaptor_New(
-		sizeof(Stg_ObjectAdaptor), 
-		Stg_ObjectAdaptor_Type, 
-		_Stg_ObjectAdaptor_Delete,
-		_Stg_ObjectAdaptor_Print, 
-		_Stg_ObjectAdaptor_Copy,
-		name,
-		dataPtr,
-		iOwn,
-		isGlobal,
-		True,
-		NULL,
-		NULL,
-		NULL ); 
+	/* Variables set in this function */
+	SizeT                                     _sizeOfSelf = sizeof(Stg_ObjectAdaptor);
+	Type                                             type = Stg_ObjectAdaptor_Type;
+	Stg_Class_DeleteFunction*                     _delete = _Stg_ObjectAdaptor_Delete;
+	Stg_Class_PrintFunction*                       _print = _Stg_ObjectAdaptor_Print;
+	Stg_Class_CopyFunction*                         _copy = _Stg_ObjectAdaptor_Copy;
+	Bool                                       isStgClass = True;
+	Stg_ObjectAdaptor_DeletePointerFunction*    ptrDelete = NULL;
+	Stg_ObjectAdaptor_PrintPointerFunction*      ptrPrint = NULL;
+	Stg_ObjectAdaptor_CopyPointerFunction*        ptrCopy = NULL;
+
+	/* Variables that are set to ZERO are variables that will be set either by the current _New function or another parent _New function further up the hierachy */
+	AllocationType  nameAllocationType = ZERO;
+
+	return _Stg_ObjectAdaptor_New(  STG_OBJECTADAPTOR_PASSARGS  ); 
 }
 
 
@@ -95,20 +96,18 @@ Stg_ObjectAdaptor* Stg_ObjectAdaptor_New
 		Stg_ObjectAdaptor_PrintPointerFunction*		ptrPrint,
 		Stg_ObjectAdaptor_CopyPointerFunction*		ptrCopy )
 {
-	return _Stg_ObjectAdaptor_New(
-		sizeof(Stg_ObjectAdaptor), 
-		Stg_ObjectAdaptor_Type, 
-		_Stg_ObjectAdaptor_Delete,
-		_Stg_ObjectAdaptor_Print, 
-		_Stg_ObjectAdaptor_Copy,
-		name,
-		dataPtr,
-		iOwn,
-		isGlobal,
-		False,
-		ptrDelete,
-		ptrPrint,
-		ptrCopy ); 
+	/* Variables set in this function */
+	SizeT                      _sizeOfSelf = sizeof(Stg_ObjectAdaptor);
+	Type                              type = Stg_ObjectAdaptor_Type;
+	Stg_Class_DeleteFunction*      _delete = _Stg_ObjectAdaptor_Delete;
+	Stg_Class_PrintFunction*        _print = _Stg_ObjectAdaptor_Print;
+	Stg_Class_CopyFunction*          _copy = _Stg_ObjectAdaptor_Copy;
+	Bool                        isStgClass = False;
+
+	/* Variables that are set to ZERO are variables that will be set either by the current _New function or another parent _New function further up the hierachy */
+	AllocationType  nameAllocationType = ZERO;
+
+	return _Stg_ObjectAdaptor_New(  STG_OBJECTADAPTOR_PASSARGS  ); 
 }
 
 
@@ -139,26 +138,18 @@ void Stg_ObjectAdaptor_InitOfPointer(
 }
 
 
-Stg_ObjectAdaptor* _Stg_ObjectAdaptor_New( 
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*			_delete,
-		Stg_Class_PrintFunction*			_print, 
-		Stg_Class_CopyFunction*				_copy,
-		Name						name,
-		void*						dataPtr,
-		Bool						iOwn,
-		Bool						isGlobal,
-		Bool						isStgClass,
-		Stg_ObjectAdaptor_DeletePointerFunction*	ptrDelete,
-		Stg_ObjectAdaptor_PrintPointerFunction*		ptrPrint,
-		Stg_ObjectAdaptor_CopyPointerFunction*		ptrCopy )
+Stg_ObjectAdaptor* _Stg_ObjectAdaptor_New(  STG_OBJECTADAPTOR_DEFARGS  )
 {
 	Stg_ObjectAdaptor* self;
 	
 	/* Allocate memory */
 	assert( _sizeOfSelf >= sizeof(Stg_ObjectAdaptor) );
-	self = (Stg_ObjectAdaptor*)_Stg_Object_New( _sizeOfSelf, type, _delete, _print, _copy, name, GLOBAL );
+	/* The following terms are parameters that have been passed into this function but are being set before being passed onto the parent */
+	/* This means that any values of these parameters that are passed into this function are not passed onto the parent function
+	   and so should be set to ZERO in any children of this class. */
+	nameAllocationType = GLOBAL;
+
+	self = (Stg_ObjectAdaptor*)_Stg_Object_New(  STG_OBJECT_PASSARGS  );
 	
 	/* General info */
 	
@@ -338,3 +329,5 @@ Bool Stg_ObjectAdaptor_IsStgClassFunc( v
 
 
 /* Private member functions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Foundation/src/ObjectAdaptor.h
--- a/Base/Foundation/src/ObjectAdaptor.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Foundation/src/ObjectAdaptor.h	Mon Nov 30 02:00:28 2009 +1100
@@ -119,20 +119,32 @@
 	
 	
 	/* Creation implementation */
-	Stg_ObjectAdaptor* _Stg_ObjectAdaptor_New( 
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*			_delete,
-		Stg_Class_PrintFunction*			_print, 
-		Stg_Class_CopyFunction*				_copy,
-		Name						name,
-		void*						dataPtr,
-		Bool						iOwn,
-		Bool						isGlobal,
-		Bool						isStgClass,
-		Stg_ObjectAdaptor_DeletePointerFunction*	ptrDelete,
-		Stg_ObjectAdaptor_PrintPointerFunction*		ptrPrint,
-		Stg_ObjectAdaptor_CopyPointerFunction*		ptrCopy );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define STG_OBJECTADAPTOR_DEFARGS \
+                STG_OBJECT_DEFARGS, \
+                void*                                        dataPtr, \
+                Bool                                            iOwn, \
+                Bool                                        isGlobal, \
+                Bool                                      isStgClass, \
+                Stg_ObjectAdaptor_DeletePointerFunction*   ptrDelete, \
+                Stg_ObjectAdaptor_PrintPointerFunction*     ptrPrint, \
+                Stg_ObjectAdaptor_CopyPointerFunction*       ptrCopy
+
+	#define STG_OBJECTADAPTOR_PASSARGS \
+                STG_OBJECT_PASSARGS, \
+	        dataPtr,    \
+	        iOwn,       \
+	        isGlobal,   \
+	        isStgClass, \
+	        ptrDelete,  \
+	        ptrPrint,   \
+	        ptrCopy   
+
+	Stg_ObjectAdaptor* _Stg_ObjectAdaptor_New(  STG_OBJECTADAPTOR_DEFARGS  );
 	
 	/* Initialisation implementation */
 	void _Stg_ObjectAdaptor_Init( 
@@ -212,3 +224,4 @@
 	
 	/* Private member functions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
 #endif /* __Base_Automation_ObjectAdaptor_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Foundation/src/ObjectList.c
--- a/Base/Foundation/src/ObjectList.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Foundation/src/ObjectList.c	Mon Nov 30 02:00:28 2009 +1100
@@ -52,27 +52,27 @@ const Type Stg_ObjectList_Type = "Stg_Ob
 
 
 Stg_ObjectList* Stg_ObjectList_New2( Index initialSize, Index delta ) {
-	return _Stg_ObjectList_New( 
-		sizeof(Stg_ObjectList), 
-		Stg_ObjectList_Type, 
-		_Stg_ObjectList_Delete,
-		_Stg_ObjectList_Print,
-		_Stg_ObjectList_Copy,
-		_Stg_ObjectList_Append, 
-		_Stg_ObjectList_Prepend, 
-		_Stg_ObjectList_ReplaceAll,
-		_Stg_ObjectList_Replace,
-		_Stg_ObjectList_InsertBefore, 
-		_Stg_ObjectList_InsertAfter, 
-		_Stg_ObjectList_Remove, 
-		_Stg_ObjectList_GetIndex,
-		_Stg_ObjectList_Get, 
-		_Stg_ObjectList_AllocMoreMemory, 
-		_Stg_ObjectList_InsertAtIndex,
-		_Stg_ObjectList_RemoveByIndex, 
-		_Stg_ObjectList_DeleteAllObjects,
-		initialSize, 
-		delta );
+	/* Variables set in this function */
+	SizeT                                           _sizeOfSelf = sizeof(Stg_ObjectList);
+	Type                                                   type = Stg_ObjectList_Type;
+	Stg_Class_DeleteFunction*                           _delete = _Stg_ObjectList_Delete;
+	Stg_Class_PrintFunction*                             _print = _Stg_ObjectList_Print;
+	Stg_Class_CopyFunction*                               _copy = _Stg_ObjectList_Copy;
+	Stg_ObjectList_AppendFunction*                      _append = _Stg_ObjectList_Append;
+	Stg_ObjectList_PrependFunction*                    _prepend = _Stg_ObjectList_Prepend;
+	Stg_ObjectList_ReplaceAllFunction*              _replaceAll = _Stg_ObjectList_ReplaceAll;
+	Stg_ObjectList_ReplaceFunction*                    _replace = _Stg_ObjectList_Replace;
+	Stg_ObjectList_InsertBeforeFunction*          _insertBefore = _Stg_ObjectList_InsertBefore;
+	Stg_ObjectList_InsertAfterFunction*            _insertAfter = _Stg_ObjectList_InsertAfter;
+	Stg_ObjectList_RemoveFunction*                      _remove = _Stg_ObjectList_Remove;
+	Stg_ObjectList_GetIndexFunction*                  _getIndex = _Stg_ObjectList_GetIndex;
+	Stg_ObjectList_GetFunction*                            _get = _Stg_ObjectList_Get;
+	Stg_ObjectList_AllocMoreMemoryFunction*    _allocMoreMemory = _Stg_ObjectList_AllocMoreMemory;
+	Stg_ObjectList_InsertAtIndexFunction*        _insertAtIndex = _Stg_ObjectList_InsertAtIndex;
+	Stg_ObjectList_RemoveByIndexFunction*        _removeByIndex = _Stg_ObjectList_RemoveByIndex;
+	Stg_ObjectList_DeleteAllObjectsFunction*  _deleteAllObjects = _Stg_ObjectList_DeleteAllObjects;
+
+	return _Stg_ObjectList_New(  STG_OBJECTLIST_PASSARGS  );
 }
 	
 
@@ -106,33 +106,13 @@ void Stg_ObjectList_Init2( Stg_ObjectLis
 	
 
 /* Creation implementation */
-Stg_ObjectList* _Stg_ObjectList_New( 
-	SizeT						_sizeOfSelf, 
-	Type						type,
-	Stg_Class_DeleteFunction*				_delete,
-	Stg_Class_PrintFunction*				_print,
-	Stg_Class_CopyFunction*				_copy,
-	Stg_ObjectList_AppendFunction*			_append,
-	Stg_ObjectList_PrependFunction*		_prepend,
-	Stg_ObjectList_ReplaceAllFunction*		_replaceAll,
-	Stg_ObjectList_ReplaceFunction*		_replace,
-	Stg_ObjectList_InsertBeforeFunction*		_insertBefore,
-	Stg_ObjectList_InsertAfterFunction*		_insertAfter,
-	Stg_ObjectList_RemoveFunction*		_remove,
-	Stg_ObjectList_GetIndexFunction*		_getIndex,
-	Stg_ObjectList_GetFunction*			_get,
-	Stg_ObjectList_AllocMoreMemoryFunction*	_allocMoreMemory,
-	Stg_ObjectList_InsertAtIndexFunction*		_insertAtIndex,
-	Stg_ObjectList_RemoveByIndexFunction*		_removeByIndex,
-	Stg_ObjectList_DeleteAllObjectsFunction*	_deleteAllObjects,
-	Index						initialSize,
-	Index						delta ) 
+Stg_ObjectList* _Stg_ObjectList_New(  STG_OBJECTLIST_DEFARGS  ) 
 {
 	Stg_ObjectList* self;
 	
 	/* Allocate memory */
 	assert( _sizeOfSelf >= sizeof(Stg_ObjectList) );
-	self = (Stg_ObjectList*)_Stg_Class_New( _sizeOfSelf, type, _delete, _print, _copy );
+	self = (Stg_ObjectList*)_Stg_Class_New(  STG_CLASS_PASSARGS  );
 
 	/* Virtual functions */
 	self->_append = _append;
@@ -890,3 +870,5 @@ void Stg_ObjectList_PrintSimilar( void* 
 
 	Memory_Free( similarityArray );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Foundation/src/ObjectList.h
--- a/Base/Foundation/src/ObjectList.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Foundation/src/ObjectList.h	Mon Nov 30 02:00:28 2009 +1100
@@ -132,27 +132,48 @@
 	void Stg_ObjectList_Init2( Stg_ObjectList* self, Index initialSize, Index delta );
 	
 	/** Creation implementation */
-	Stg_ObjectList* _Stg_ObjectList_New( 
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*			_delete,
-		Stg_Class_PrintFunction*			_print,
-		Stg_Class_CopyFunction*				_copy, 
-		Stg_ObjectList_AppendFunction*			_append,
-		Stg_ObjectList_PrependFunction*			_prepend,
-		Stg_ObjectList_ReplaceAllFunction*			_replaceAll,
-		Stg_ObjectList_ReplaceFunction*			_replace,
-		Stg_ObjectList_InsertBeforeFunction*		_insertBefore,
-		Stg_ObjectList_InsertAfterFunction*			_insertAfter,
-		Stg_ObjectList_RemoveFunction*			_remove,
-		Stg_ObjectList_GetIndexFunction*			_getIndex,
-		Stg_ObjectList_GetFunction*				_get,
-		Stg_ObjectList_AllocMoreMemoryFunction*		_allocMoreMemory,
-		Stg_ObjectList_InsertAtIndexFunction*		_insertAtIndex,
-		Stg_ObjectList_RemoveByIndexFunction*		_removeByIndex,
-		Stg_ObjectList_DeleteAllObjectsFunction*		_deleteAllObjects,
-		Index						initialSize,
-		Index						delta );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define STG_OBJECTLIST_DEFARGS \
+                STG_CLASS_DEFARGS, \
+                Stg_ObjectList_AppendFunction*                      _append, \
+                Stg_ObjectList_PrependFunction*                    _prepend, \
+                Stg_ObjectList_ReplaceAllFunction*              _replaceAll, \
+                Stg_ObjectList_ReplaceFunction*                    _replace, \
+                Stg_ObjectList_InsertBeforeFunction*          _insertBefore, \
+                Stg_ObjectList_InsertAfterFunction*            _insertAfter, \
+                Stg_ObjectList_RemoveFunction*                      _remove, \
+                Stg_ObjectList_GetIndexFunction*                  _getIndex, \
+                Stg_ObjectList_GetFunction*                            _get, \
+                Stg_ObjectList_AllocMoreMemoryFunction*    _allocMoreMemory, \
+                Stg_ObjectList_InsertAtIndexFunction*        _insertAtIndex, \
+                Stg_ObjectList_RemoveByIndexFunction*        _removeByIndex, \
+                Stg_ObjectList_DeleteAllObjectsFunction*  _deleteAllObjects, \
+                Index                                           initialSize, \
+                Index                                                 delta
+
+	#define STG_OBJECTLIST_PASSARGS \
+                STG_CLASS_PASSARGS, \
+	        _append,           \
+	        _prepend,          \
+	        _replaceAll,       \
+	        _replace,          \
+	        _insertBefore,     \
+	        _insertAfter,      \
+	        _remove,           \
+	        _getIndex,         \
+	        _get,              \
+	        _allocMoreMemory,  \
+	        _insertAtIndex,    \
+	        _removeByIndex,    \
+	        _deleteAllObjects, \
+	        initialSize,       \
+	        delta            
+
+	Stg_ObjectList* _Stg_ObjectList_New(  STG_OBJECTLIST_DEFARGS  );
 	
 	/** Initialisation implementation */
 	void _Stg_ObjectList_Init( Stg_ObjectList* self, Index initialSize, Index delta );
@@ -401,3 +422,4 @@
 	/** Prints the first 'number' of names of objects in list which are most similar to 'name' */
 	void Stg_ObjectList_PrintSimilar( void* objectList, Name name, void* _stream, unsigned int number ) ;
 #endif /* __Base_Foundation_Stg_ObjectList_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Foundation/src/PrimitiveObject.c
--- a/Base/Foundation/src/PrimitiveObject.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Foundation/src/PrimitiveObject.c	Mon Nov 30 02:00:28 2009 +1100
@@ -46,72 +46,212 @@
 
 const Type Stg_PrimitiveObject_Type = "Stg_PrimitiveObject";
 
-Stg_PrimitiveObject* Stg_PrimitiveObject_New_UnsignedChar( unsigned char value, Name name ) {
+Stg_PrimitiveObject* Stg_PrimitiveObject_New_UnsignedChar( unsigned char value_renamed, Name name ) {
+	/* Variables set in this function */
+	Stg_C_Primitive_Type  dataType = Stg_C_Primitive_Type_UnsignedChar;
+
+	/* Variables that are set to ZERO are variables that will be set either by the current _New function or another parent _New function further up the hierachy */
+	SizeT                             _sizeOfSelf = ZERO;
+	Type                                     type = ZERO;
+	Stg_Class_DeleteFunction*             _delete = ZERO;
+	Stg_Class_PrintFunction*               _print = ZERO;
+	Stg_Class_CopyFunction*                 _copy = ZERO;
+	AllocationType             nameAllocationType = ZERO;
+
 	Stg_C_Primitive v;
-	v.asUnsignedChar = value;
-	return _Stg_PrimitiveObject_New( Stg_C_Primitive_Type_UnsignedChar, v, name );
+	v.asUnsignedChar = value_renamed;
+	/* The following terms are parameters that have been passed into or defined in this function but are being set before being passed onto the parent */
+	Stg_C_Primitive  value = v;
+
+	return _Stg_PrimitiveObject_New(  STG_PRIMITIVEOBJECT_PASSARGS  );
 }
-Stg_PrimitiveObject* Stg_PrimitiveObject_New_UnsignedShort( unsigned short value, Name name ) {
+Stg_PrimitiveObject* Stg_PrimitiveObject_New_UnsignedShort( unsigned short value_renamed, Name name ) {
+	/* Variables set in this function */
+	Stg_C_Primitive_Type  dataType = Stg_C_Primitive_Type_UnsignedShort;
+
+	/* Variables that are set to ZERO are variables that will be set either by the current _New function or another parent _New function further up the hierachy */
+	SizeT                             _sizeOfSelf = ZERO;
+	Type                                     type = ZERO;
+	Stg_Class_DeleteFunction*             _delete = ZERO;
+	Stg_Class_PrintFunction*               _print = ZERO;
+	Stg_Class_CopyFunction*                 _copy = ZERO;
+	AllocationType             nameAllocationType = ZERO;
+
 	Stg_C_Primitive v;
-	v.asUnsignedShort = value;
-	return _Stg_PrimitiveObject_New( Stg_C_Primitive_Type_UnsignedShort, v, name );
+	v.asUnsignedShort = value_renamed;
+	/* The following terms are parameters that have been passed into or defined in this function but are being set before being passed onto the parent */
+	Stg_C_Primitive  value = v;
+
+	return _Stg_PrimitiveObject_New(  STG_PRIMITIVEOBJECT_PASSARGS  );
 }
-Stg_PrimitiveObject* Stg_PrimitiveObject_New_UnsignedInt( unsigned int value, Name name ) {
+Stg_PrimitiveObject* Stg_PrimitiveObject_New_UnsignedInt( unsigned int value_renamed, Name name ) {
+	/* Variables set in this function */
+	Stg_C_Primitive_Type  dataType = Stg_C_Primitive_Type_UnsignedInt;
+
+	/* Variables that are set to ZERO are variables that will be set either by the current _New function or another parent _New function further up the hierachy */
+	SizeT                             _sizeOfSelf = ZERO;
+	Type                                     type = ZERO;
+	Stg_Class_DeleteFunction*             _delete = ZERO;
+	Stg_Class_PrintFunction*               _print = ZERO;
+	Stg_Class_CopyFunction*                 _copy = ZERO;
+	AllocationType             nameAllocationType = ZERO;
+
 	Stg_C_Primitive v;
-	v.asUnsignedInt = value;
-	return _Stg_PrimitiveObject_New( Stg_C_Primitive_Type_UnsignedInt, v, name );
+	v.asUnsignedInt = value_renamed;
+	/* The following terms are parameters that have been passed into or defined in this function but are being set before being passed onto the parent */
+	Stg_C_Primitive  value = v;
+
+	return _Stg_PrimitiveObject_New(  STG_PRIMITIVEOBJECT_PASSARGS  );
 }
-Stg_PrimitiveObject* Stg_PrimitiveObject_New_UnsignedLong( unsigned long value, Name name ) {
+Stg_PrimitiveObject* Stg_PrimitiveObject_New_UnsignedLong( unsigned long value_renamed, Name name ) {
+	/* Variables set in this function */
+	Stg_C_Primitive_Type  dataType = Stg_C_Primitive_Type_UnsignedLong;
+
+	/* Variables that are set to ZERO are variables that will be set either by the current _New function or another parent _New function further up the hierachy */
+	SizeT                             _sizeOfSelf = ZERO;
+	Type                                     type = ZERO;
+	Stg_Class_DeleteFunction*             _delete = ZERO;
+	Stg_Class_PrintFunction*               _print = ZERO;
+	Stg_Class_CopyFunction*                 _copy = ZERO;
+	AllocationType             nameAllocationType = ZERO;
+
 	Stg_C_Primitive v;
-	v.asUnsignedLong = value;
-	return _Stg_PrimitiveObject_New( Stg_C_Primitive_Type_UnsignedLong, v, name );
+	v.asUnsignedLong = value_renamed;
+	/* The following terms are parameters that have been passed into or defined in this function but are being set before being passed onto the parent */
+	Stg_C_Primitive  value = v;
+
+	return _Stg_PrimitiveObject_New(  STG_PRIMITIVEOBJECT_PASSARGS  );
 }
-Stg_PrimitiveObject* Stg_PrimitiveObject_New_Char( char value, Name name ) {
+Stg_PrimitiveObject* Stg_PrimitiveObject_New_Char( char value_renamed, Name name ) {
+	/* Variables set in this function */
+	Stg_C_Primitive_Type  dataType = Stg_C_Primitive_Type_Char;
+
+	/* Variables that are set to ZERO are variables that will be set either by the current _New function or another parent _New function further up the hierachy */
+	SizeT                             _sizeOfSelf = ZERO;
+	Type                                     type = ZERO;
+	Stg_Class_DeleteFunction*             _delete = ZERO;
+	Stg_Class_PrintFunction*               _print = ZERO;
+	Stg_Class_CopyFunction*                 _copy = ZERO;
+	AllocationType             nameAllocationType = ZERO;
+
 	Stg_C_Primitive v;
-	v.asChar = value;
-	return _Stg_PrimitiveObject_New( Stg_C_Primitive_Type_Char, v, name );
+	v.asChar = value_renamed;
+	/* The following terms are parameters that have been passed into or defined in this function but are being set before being passed onto the parent */
+	Stg_C_Primitive  value = v;
+
+	return _Stg_PrimitiveObject_New(  STG_PRIMITIVEOBJECT_PASSARGS  );
 }
-Stg_PrimitiveObject* Stg_PrimitiveObject_New_Short( short value, Name name ) {
+Stg_PrimitiveObject* Stg_PrimitiveObject_New_Short( short value_renamed, Name name ) {
+	/* Variables set in this function */
+	Stg_C_Primitive_Type  dataType = Stg_C_Primitive_Type_Short;
+
+	/* Variables that are set to ZERO are variables that will be set either by the current _New function or another parent _New function further up the hierachy */
+	SizeT                             _sizeOfSelf = ZERO;
+	Type                                     type = ZERO;
+	Stg_Class_DeleteFunction*             _delete = ZERO;
+	Stg_Class_PrintFunction*               _print = ZERO;
+	Stg_Class_CopyFunction*                 _copy = ZERO;
+	AllocationType             nameAllocationType = ZERO;
+
 	Stg_C_Primitive v;
-	v.asShort = value;
-	return _Stg_PrimitiveObject_New( Stg_C_Primitive_Type_Short, v, name );
+	v.asShort = value_renamed;
+	/* The following terms are parameters that have been passed into or defined in this function but are being set before being passed onto the parent */
+	Stg_C_Primitive  value = v;
+
+	return _Stg_PrimitiveObject_New(  STG_PRIMITIVEOBJECT_PASSARGS  );
 }
-Stg_PrimitiveObject* Stg_PrimitiveObject_New_Int( int value, Name name ) {
+Stg_PrimitiveObject* Stg_PrimitiveObject_New_Int( int value_renamed, Name name ) {
+	/* Variables set in this function */
+	Stg_C_Primitive_Type  dataType = Stg_C_Primitive_Type_Int;
+
+	/* Variables that are set to ZERO are variables that will be set either by the current _New function or another parent _New function further up the hierachy */
+	SizeT                             _sizeOfSelf = ZERO;
+	Type                                     type = ZERO;
+	Stg_Class_DeleteFunction*             _delete = ZERO;
+	Stg_Class_PrintFunction*               _print = ZERO;
+	Stg_Class_CopyFunction*                 _copy = ZERO;
+	AllocationType             nameAllocationType = ZERO;
+
 	Stg_C_Primitive v;
-	v.asInt = value;
-	return _Stg_PrimitiveObject_New( Stg_C_Primitive_Type_Int, v, name );
+	v.asInt = value_renamed;
+	/* The following terms are parameters that have been passed into or defined in this function but are being set before being passed onto the parent */
+	Stg_C_Primitive  value = v;
+
+	return _Stg_PrimitiveObject_New(  STG_PRIMITIVEOBJECT_PASSARGS  );
 }
-Stg_PrimitiveObject* Stg_PrimitiveObject_New_Long( long value, Name name ) {
+Stg_PrimitiveObject* Stg_PrimitiveObject_New_Long( long value_renamed, Name name ) {
+	/* Variables set in this function */
+	Stg_C_Primitive_Type  dataType = Stg_C_Primitive_Type_Long;
+
+	/* Variables that are set to ZERO are variables that will be set either by the current _New function or another parent _New function further up the hierachy */
+	SizeT                             _sizeOfSelf = ZERO;
+	Type                                     type = ZERO;
+	Stg_Class_DeleteFunction*             _delete = ZERO;
+	Stg_Class_PrintFunction*               _print = ZERO;
+	Stg_Class_CopyFunction*                 _copy = ZERO;
+	AllocationType             nameAllocationType = ZERO;
+
 	Stg_C_Primitive v;
-	v.asLong = value;
-	return _Stg_PrimitiveObject_New( Stg_C_Primitive_Type_Long, v, name );
+	v.asLong = value_renamed;
+	/* The following terms are parameters that have been passed into or defined in this function but are being set before being passed onto the parent */
+	Stg_C_Primitive  value = v;
+
+	return _Stg_PrimitiveObject_New(  STG_PRIMITIVEOBJECT_PASSARGS  );
 }
-Stg_PrimitiveObject* Stg_PrimitiveObject_New_Float( float value, Name name ) {
+Stg_PrimitiveObject* Stg_PrimitiveObject_New_Float( float value_renamed, Name name ) {
+	/* Variables set in this function */
+	Stg_C_Primitive_Type  dataType = Stg_C_Primitive_Type_Float;
+
+	/* Variables that are set to ZERO are variables that will be set either by the current _New function or another parent _New function further up the hierachy */
+	SizeT                             _sizeOfSelf = ZERO;
+	Type                                     type = ZERO;
+	Stg_Class_DeleteFunction*             _delete = ZERO;
+	Stg_Class_PrintFunction*               _print = ZERO;
+	Stg_Class_CopyFunction*                 _copy = ZERO;
+	AllocationType             nameAllocationType = ZERO;
+
 	Stg_C_Primitive v;
-	v.asFloat = value;
-	return _Stg_PrimitiveObject_New( Stg_C_Primitive_Type_Float, v, name );
+	v.asFloat = value_renamed;
+	/* The following terms are parameters that have been passed into or defined in this function but are being set before being passed onto the parent */
+	Stg_C_Primitive  value = v;
+
+	return _Stg_PrimitiveObject_New(  STG_PRIMITIVEOBJECT_PASSARGS  );
 }
-Stg_PrimitiveObject* Stg_PrimitiveObject_New_Double( double value, Name name ) {
+Stg_PrimitiveObject* Stg_PrimitiveObject_New_Double( double value_renamed, Name name ) {
+	/* Variables set in this function */
+	Stg_C_Primitive_Type  dataType = Stg_C_Primitive_Type_Double;
+
+	/* Variables that are set to ZERO are variables that will be set either by the current _New function or another parent _New function further up the hierachy */
+	SizeT                             _sizeOfSelf = ZERO;
+	Type                                     type = ZERO;
+	Stg_Class_DeleteFunction*             _delete = ZERO;
+	Stg_Class_PrintFunction*               _print = ZERO;
+	Stg_Class_CopyFunction*                 _copy = ZERO;
+	AllocationType             nameAllocationType = ZERO;
+
 	Stg_C_Primitive v;
-	v.asDouble = value;
-	return _Stg_PrimitiveObject_New( Stg_C_Primitive_Type_Double, v, name );
+	v.asDouble = value_renamed;
+	/* The following terms are parameters that have been passed into or defined in this function but are being set before being passed onto the parent */
+	Stg_C_Primitive  value = v;
+
+	return _Stg_PrimitiveObject_New(  STG_PRIMITIVEOBJECT_PASSARGS  );
 }
 
-Stg_PrimitiveObject* _Stg_PrimitiveObject_New( 
-	Stg_C_Primitive_Type	dataType,
-	Stg_C_Primitive		value,
-	Name			name )
+Stg_PrimitiveObject* _Stg_PrimitiveObject_New(  STG_PRIMITIVEOBJECT_DEFARGS  )
 {
 	Stg_PrimitiveObject*  result;
 
-	result = (Stg_PrimitiveObject*)_Stg_Object_New(
-			sizeof(Stg_PrimitiveObject),
-			Stg_PrimitiveObject_Type,
-			_Stg_PrimitiveObject_Delete,
-			_Stg_PrimitiveObject_Print,
-			_Stg_PrimitiveObject_Copy,
-			name,
-			NON_GLOBAL );
+	/* The following terms are parameters that have been passed into this function but are being set before being passed onto the parent */
+	/* This means that any values of these parameters that are passed into this function are not passed onto the parent function
+	   and so should be set to ZERO in any children of this class. */
+	_sizeOfSelf        = sizeof(Stg_PrimitiveObject);
+	type               = Stg_PrimitiveObject_Type;
+	_delete            = _Stg_PrimitiveObject_Delete;
+	_print             = _Stg_PrimitiveObject_Print;
+	_copy              = _Stg_PrimitiveObject_Copy;
+	nameAllocationType = NON_GLOBAL;
+
+	result = (Stg_PrimitiveObject*)_Stg_Object_New(  STG_OBJECT_PASSARGS  );
 	
 	_Stg_PrimitiveObject_Init( result, dataType, value );
 
@@ -227,3 +367,5 @@ void* _Stg_PrimitiveObject_Copy( void* p
 }
 	
 
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Foundation/src/PrimitiveObject.h
--- a/Base/Foundation/src/PrimitiveObject.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Foundation/src/PrimitiveObject.h	Mon Nov 30 02:00:28 2009 +1100
@@ -92,10 +92,22 @@
 	Stg_PrimitiveObject* Stg_PrimitiveObject_New_Float( float value, Name name );
 	Stg_PrimitiveObject* Stg_PrimitiveObject_New_Double( double value, Name name );
 	
-	Stg_PrimitiveObject* _Stg_PrimitiveObject_New( 
-		Stg_C_Primitive_Type	dataType,
-		Stg_C_Primitive		value,
-		Name			name );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define STG_PRIMITIVEOBJECT_DEFARGS \
+                STG_OBJECT_DEFARGS, \
+                Stg_C_Primitive_Type  dataType, \
+                Stg_C_Primitive          value
+
+	#define STG_PRIMITIVEOBJECT_PASSARGS \
+                STG_OBJECT_PASSARGS, \
+	        dataType, \
+	        value   
+
+	Stg_PrimitiveObject* _Stg_PrimitiveObject_New(  STG_PRIMITIVEOBJECT_DEFARGS  );
 
 
 	void _Stg_PrimitiveObject_Init( 
@@ -116,3 +128,4 @@
 	
 #endif /* __Base_Foundation_PrimitiveObject_h__ */
 
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Foundation/src/TestSuite.c
--- a/Base/Foundation/src/TestSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Foundation/src/TestSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -52,19 +52,22 @@ const Type TestSuite_Type = "TestSuite";
 */
 
 TestSuite* TestSuite_New() {
-	return _TestSuite_New( sizeof(TestSuite), 
-			      TestSuite_Type, 
-			      _TestSuite_Delete, 
-			      _TestSuite_Print, 
-			      _TestSuite_Copy );
+	/* Variables set in this function */
+	SizeT                      _sizeOfSelf = sizeof(TestSuite);
+	Type                              type = TestSuite_Type;
+	Stg_Class_DeleteFunction*      _delete = _TestSuite_Delete;
+	Stg_Class_PrintFunction*        _print = _TestSuite_Print;
+	Stg_Class_CopyFunction*          _copy = _TestSuite_Copy;
+
+	return _TestSuite_New(  TESTSUITE_PASSARGS  );
 }
 
-TestSuite* _TestSuite_New( TESTSUITE_DEFARGS ) {
+TestSuite* _TestSuite_New(  TESTSUITE_DEFARGS  ) {
 	TestSuite* self;
 
 	/* Allocate memory */
-	assert( sizeOfSelf >= sizeof(TestSuite) );
-	self = (TestSuite*)_Stg_Class_New( STG_CLASS_PASSARGS );
+	assert( _sizeOfSelf >= sizeof(TestSuite) );
+	self = (TestSuite*)_Stg_Class_New(  STG_CLASS_PASSARGS  );
 
 	/* Virtual info */
 
@@ -194,3 +197,5 @@ void TestSuite_Destruct( TestSuite* self
 	self->nTests = 0;
 	KillArray( self->tests );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Foundation/src/TestSuite.h
--- a/Base/Foundation/src/TestSuite.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Foundation/src/TestSuite.h	Mon Nov 30 02:00:28 2009 +1100
@@ -76,14 +76,21 @@
 	** Constructors
 	*/
 
+
+
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
 	#define TESTSUITE_DEFARGS \
-		STG_CLASS_DEFARGS
+                STG_CLASS_DEFARGS
 
 	#define TESTSUITE_PASSARGS \
-		STG_CLASS_PASSARGS
+                STG_CLASS_PASSARGS
 
 	TestSuite* TestSuite_New();
-	TestSuite* _TestSuite_New( TESTSUITE_DEFARGS );
+	TestSuite* _TestSuite_New(  TESTSUITE_DEFARGS  );
 	void _TestSuite_Init( TestSuite* self );
 
 	/*--------------------------------------------------------------------------------------------------------------------------
@@ -113,3 +120,4 @@
 	void TestSuite_Destruct( TestSuite* self );
 
 #endif /* __StGermain_Base_Foundation_TestSuite_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Foundation/src/TimeMonitor.c
--- a/Base/Foundation/src/TimeMonitor.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Foundation/src/TimeMonitor.c	Mon Nov 30 02:00:28 2009 +1100
@@ -169,3 +169,5 @@ double Stg_TimeMonitor_End( Stg_TimeMoni
 	
 	return tmData->aveProcDt;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Foundation/src/debug.c
--- a/Base/Foundation/src/debug.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Foundation/src/debug.c	Mon Nov 30 02:00:28 2009 +1100
@@ -33,3 +33,5 @@
 
 Bool	assert_jmpEnabled = False;
 jmp_buf	assert_env;
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Foundation/tests/CommonRoutinesSuite.c
--- a/Base/Foundation/tests/CommonRoutinesSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Foundation/tests/CommonRoutinesSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -161,3 +161,5 @@ void CommonRoutinesSuite( pcu_suite_t* s
    pcu_suite_addTest( suite, CommonRoutinesSuite_TestStG_RoundDoubleToNDecimalPlaces );
    pcu_suite_addTest( suite, CommonRoutinesSuite_TestStG_RoundDoubleToNSigFigs );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Foundation/tests/MemMonitorSuite.c
--- a/Base/Foundation/tests/MemMonitorSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Foundation/tests/MemMonitorSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -167,3 +167,5 @@ void MemMonitorSuite( pcu_suite_t* suite
    pcu_suite_addTest( suite, MemMonitorSuite_TestMonitor );
    #endif
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Foundation/tests/MemoryReportSuite.c
--- a/Base/Foundation/tests/MemoryReportSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Foundation/tests/MemoryReportSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -570,3 +570,5 @@ void MemoryReportSuite( pcu_suite_t* sui
    pcu_suite_addTest( suite, MemoryReportSuite_TestReportPrintsFour );
    #endif
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Foundation/tests/MemorySuite.c
--- a/Base/Foundation/tests/MemorySuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Foundation/tests/MemorySuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -454,3 +454,5 @@ void MemorySuite( pcu_suite_t* suite ) {
    pcu_suite_addTest( suite, MemorySuite_Test2DComplexArray );
    pcu_suite_addTest( suite, MemorySuite_Test3DComplexArray );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Foundation/tests/NamedObject_Register2Suite.c
--- a/Base/Foundation/tests/NamedObject_Register2Suite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Foundation/tests/NamedObject_Register2Suite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -41,14 +41,15 @@ typedef struct {
 } TestObject2;
 
 Stg_Object* TestObject2_New( Name name ) {
-	return _Stg_Object_New(
-		sizeof( TestObject2 ),
-		"TestObject",
-		_Stg_Object_Delete,
-		_Stg_Object_Print,
-		_Stg_Object_Copy, 
-		name,
-		NON_GLOBAL );
+	/* Variables set in this function */
+	SizeT                             _sizeOfSelf = sizeof( TestObject2 );
+	Type                                     type = "TestObject";
+	Stg_Class_DeleteFunction*             _delete = _Stg_Object_Delete;
+	Stg_Class_PrintFunction*               _print = _Stg_Object_Print;
+	Stg_Class_CopyFunction*                 _copy = _Stg_Object_Copy;
+	AllocationType             nameAllocationType = NON_GLOBAL;
+
+	return _Stg_Object_New(  STG_OBJECT_PASSARGS  );
 }
 
 typedef struct {
@@ -110,3 +111,5 @@ void NamedObject_Register2Suite( pcu_sui
    pcu_suite_setFixtures( suite, NamedObject_RegisterSuite2_Setup, NamedObject_RegisterSuite2_Teardown );
    pcu_suite_addTest( suite, NamedObject_RegisterSuite2_TestDeleteAll );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Foundation/tests/NamedObject_RegisterSuite.c
--- a/Base/Foundation/tests/NamedObject_RegisterSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Foundation/tests/NamedObject_RegisterSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -40,14 +40,15 @@ typedef struct {
 } TestObject;
 
 Stg_Object* TestObject_New( Name name ) {
-	return _Stg_Object_New(
-		sizeof( TestObject ),
-		"TestObject",
-		_Stg_Object_Delete,
-		_Stg_Object_Print,
-		_Stg_Object_Copy, 
-		name,
-		NON_GLOBAL );
+	/* Variables set in this function */
+	SizeT                             _sizeOfSelf = sizeof( TestObject );
+	Type                                     type = "TestObject";
+	Stg_Class_DeleteFunction*             _delete = _Stg_Object_Delete;
+	Stg_Class_PrintFunction*               _print = _Stg_Object_Print;
+	Stg_Class_CopyFunction*                 _copy = _Stg_Object_Copy;
+	AllocationType             nameAllocationType = NON_GLOBAL;
+
+	return _Stg_Object_New(  STG_OBJECT_PASSARGS  );
 }
 
 typedef struct {
@@ -128,3 +129,5 @@ void NamedObject_RegisterSuite( pcu_suit
    pcu_suite_addTest( suite, NamedObject_RegisterSuite_TestAdd );
    pcu_suite_addTest( suite, NamedObject_RegisterSuite_TestGetFunctions );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Foundation/tests/ObjectListSuite.c
--- a/Base/Foundation/tests/ObjectListSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Foundation/tests/ObjectListSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -492,3 +492,5 @@ void ObjectListSuite( pcu_suite_t* suite
    pcu_suite_addTest( suite, ObjectListSuite_TestReplaceAll );
    pcu_suite_addTest( suite, ObjectListSuite_TestCopy );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Foundation/tests/PrimitiveObjectSuite.c
--- a/Base/Foundation/tests/PrimitiveObjectSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Foundation/tests/PrimitiveObjectSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -109,3 +109,5 @@ void PrimitiveObjectSuite( pcu_suite_t* 
    pcu_suite_setFixtures( suite, PrimitiveObjectSuite_Setup, PrimitiveObjectSuite_Teardown );
    pcu_suite_addTest( suite, PrimitiveObjectSuite_TestPrimObjects );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Foundation/tests/Stg_asprintfSuite.c
--- a/Base/Foundation/tests/Stg_asprintfSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Foundation/tests/Stg_asprintfSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -66,3 +66,5 @@ void Stg_asprintfSuite( pcu_suite_t* sui
    pcu_suite_setFixtures( suite, Stg_asprintfSuite_Setup, Stg_asprintfSuite_Teardown );
    pcu_suite_addTest( suite, Stg_asprintfSuite_TestPrint );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Foundation/tests/TimeMonitorSuite.c
--- a/Base/Foundation/tests/TimeMonitorSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Foundation/tests/TimeMonitorSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -81,3 +81,5 @@ void TimeMonitorSuite( pcu_suite_t* suit
    pcu_suite_setFixtures( suite, TimeMonitorSuite_Setup, TimeMonitorSuite_Teardown );
    pcu_suite_addTest( suite, TimeMonitorSuite_TestTimingPeriod );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/src/BinaryStream.c
--- a/Base/IO/src/BinaryStream.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/src/BinaryStream.c	Mon Nov 30 02:00:28 2009 +1100
@@ -56,28 +56,27 @@ const Type BinaryStream_Type = "BinarySt
 
 Stream* BinaryStream_New( Name name )
 {
-	return (Stream*)_BinaryStream_New( sizeof(BinaryStream), BinaryStream_Type, _BinaryStream_Delete, _BinaryStream_Print, _Stream_Copy, 
-		name, _BinaryStream_Printf, _BinaryStream_Write, _BinaryStream_Dump, _BinaryStream_SetFile );
+	/* Variables set in this function */
+	SizeT                      _sizeOfSelf = sizeof(BinaryStream);
+	Type                              type = BinaryStream_Type;
+	Stg_Class_DeleteFunction*      _delete = _BinaryStream_Delete;
+	Stg_Class_PrintFunction*        _print = _BinaryStream_Print;
+	Stg_Class_CopyFunction*          _copy = _Stream_Copy;
+	Stream_PrintfFunction*         _printf = _BinaryStream_Printf;
+	Stream_WriteFunction*           _write = _BinaryStream_Write;
+	Stream_DumpFunction*             _dump = _BinaryStream_Dump;
+	Stream_SetFileFunction*       _setFile = _BinaryStream_SetFile;
+
+	return (Stream*)_BinaryStream_New(  BINARYSTREAM_PASSARGS  );
 }
 
-BinaryStream* _BinaryStream_New(
-	SizeT			_sizeOfSelf, 
-	Type			type, 
-	Stg_Class_DeleteFunction*	_delete, 
-	Stg_Class_PrintFunction* 	_print,
-	Stg_Class_CopyFunction*	_copy, 
-	Name			name,
-	Stream_PrintfFunction*	_printf, 
-	Stream_WriteFunction*	_write, 
-	Stream_DumpFunction*	_dump,
-	Stream_SetFileFunction*	_setFile )
+BinaryStream* _BinaryStream_New(  BINARYSTREAM_DEFARGS  )
 {
 	BinaryStream* self;
 	
 	/* Allocate memory */
 	assert( _sizeOfSelf >= sizeof(BinaryStream) );
-	self = (BinaryStream*)_Stream_New( _sizeOfSelf, type, _delete, _print, _copy, name, 
-		_printf, _write, _dump, _setFile );
+	self = (BinaryStream*)_Stream_New(  STREAM_PASSARGS  );
 	
 	_BinaryStream_Init( self );
 	
@@ -165,3 +164,5 @@ SizeT BinaryStream_WriteAllProcessors( N
 
 	return;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/src/BinaryStream.h
--- a/Base/IO/src/BinaryStream.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/src/BinaryStream.h	Mon Nov 30 02:00:28 2009 +1100
@@ -64,17 +64,18 @@
 	void _BinaryStream_Init( BinaryStream* self );
 
 	/** Constructor interface. */
-	BinaryStream* _BinaryStream_New( 
-		SizeT			_sizeOfSelf, 
-		Type			type, 
-		Stg_Class_DeleteFunction*	_delete, 
-		Stg_Class_PrintFunction* 	_print,
-		Stg_Class_CopyFunction*	_copy, 
-		Name			name,
-		Stream_PrintfFunction*	_printf, 
-		Stream_WriteFunction*	_write, 
-		Stream_DumpFunction*	_dump,
-		Stream_SetFileFunction*	_setFile );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define BINARYSTREAM_DEFARGS \
+                STREAM_DEFARGS
+
+	#define BINARYSTREAM_PASSARGS \
+                STREAM_PASSARGS
+
+	BinaryStream* _BinaryStream_New(  BINARYSTREAM_DEFARGS  );
 
 	/** Stg_Class_Delete interface. */
 	void _BinaryStream_Delete( void* cStream );
@@ -101,3 +102,4 @@
 
 
 
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/src/CFile.c
--- a/Base/IO/src/CFile.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/src/CFile.c	Mon Nov 30 02:00:28 2009 +1100
@@ -48,12 +48,28 @@ const Type CFile_Type = "CFile";
 
 JournalFile* CFile_New()
 {
-	return (JournalFile*)_CFile_New( sizeof(CFile), CFile_Type, _CFile_Delete, _CFile_Print, NULL, False );
+	/* Variables set in this function */
+	SizeT                      _sizeOfSelf = sizeof(CFile);
+	Type                              type = CFile_Type;
+	Stg_Class_DeleteFunction*      _delete = _CFile_Delete;
+	Stg_Class_PrintFunction*        _print = _CFile_Print;
+	Stg_Class_CopyFunction*          _copy = NULL;
+	Bool                            binary = False;
+
+	return (JournalFile*)_CFile_New(  CFILE_PASSARGS  );
 }
 
 JournalFile* CFileBinary_New()
 {
-	return (JournalFile*)_CFile_New( sizeof(CFile), CFile_Type, _CFile_Delete, _CFile_Print, NULL, True );
+	/* Variables set in this function */
+	SizeT                      _sizeOfSelf = sizeof(CFile);
+	Type                              type = CFile_Type;
+	Stg_Class_DeleteFunction*      _delete = _CFile_Delete;
+	Stg_Class_PrintFunction*        _print = _CFile_Print;
+	Stg_Class_CopyFunction*          _copy = NULL;
+	Bool                            binary = True;
+
+	return (JournalFile*)_CFile_New(  CFILE_PASSARGS  );
 }
 
 
@@ -71,17 +87,11 @@ JournalFile* CFile_New2( char* fileName 
 	return result;
 }
 
-CFile* _CFile_New(
-	SizeT _sizeOfSelf,
-	Type type,
-	Stg_Class_DeleteFunction* _delete,
-	Stg_Class_PrintFunction* _print,
-	Stg_Class_CopyFunction* _copy,
-	Bool                    binary)
+CFile* _CFile_New(  CFILE_DEFARGS  )
 {
 	CFile* self;
 	
-	self = (CFile*)_Stg_Class_New( _sizeOfSelf, type, _delete, _print, _copy );
+	self = (CFile*)_Stg_Class_New(  STG_CLASS_PASSARGS  );
 	self->binary = binary;
 	
 	_CFile_Init( self );
@@ -180,3 +190,5 @@ Bool _CFile_Flush( void* file )
 	return False;
 }
 
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/src/CFile.h
--- a/Base/IO/src/CFile.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/src/CFile.h	Mon Nov 30 02:00:28 2009 +1100
@@ -73,13 +73,20 @@
 
 
 	/** Constructor interface. */
-	CFile* _CFile_New(
-		SizeT _sizeOfSelf,
-		Type type,
-		Stg_Class_DeleteFunction* _delete,
-		Stg_Class_PrintFunction* _print,
-		Stg_Class_CopyFunction* _copy,
-		Bool                   binary);
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define CFILE_DEFARGS \
+                STG_CLASS_DEFARGS, \
+                Bool  binary
+
+	#define CFILE_PASSARGS \
+                STG_CLASS_PASSARGS, \
+	        binary
+
+	CFile* _CFile_New(  CFILE_DEFARGS  );
 		
 	/** Init interface. */
 	void _CFile_Init( CFile* self );
@@ -107,3 +114,4 @@
 #endif /* __Base_IO_CFile_h__ */
 
 
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/src/CStream.c
--- a/Base/IO/src/CStream.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/src/CStream.c	Mon Nov 30 02:00:28 2009 +1100
@@ -51,8 +51,18 @@ const Type CStream_Type = "CStream";
 
 Stream* CStream_New( Name name )
 {
-	return (Stream*)_CStream_New( sizeof(CStream), CStream_Type, _CStream_Delete, _CStream_Print, _Stream_Copy, 
-		name, _CStream_Printf, _CStream_Write, _CStream_Dump, _CStream_SetFile );
+	/* Variables set in this function */
+	SizeT                      _sizeOfSelf = sizeof(CStream);
+	Type                              type = CStream_Type;
+	Stg_Class_DeleteFunction*      _delete = _CStream_Delete;
+	Stg_Class_PrintFunction*        _print = _CStream_Print;
+	Stg_Class_CopyFunction*          _copy = _Stream_Copy;
+	Stream_PrintfFunction*         _printf = _CStream_Printf;
+	Stream_WriteFunction*           _write = _CStream_Write;
+	Stream_DumpFunction*             _dump = _CStream_Dump;
+	Stream_SetFileFunction*       _setFile = _CStream_SetFile;
+
+	return (Stream*)_CStream_New(  CSTREAM_PASSARGS  );
 }
 
 void CStream_Init( CStream* self, Name name )
@@ -61,24 +71,13 @@ void CStream_Init( CStream* self, Name n
 }
 
 
-CStream* _CStream_New( 
-	SizeT			_sizeOfSelf, 
-	Type			type, 
-	Stg_Class_DeleteFunction*	_delete, 
-	Stg_Class_PrintFunction* 	_print,
-	Stg_Class_CopyFunction*	_copy, 
-	Name			name,
-	Stream_PrintfFunction*	_printf, 
-	Stream_WriteFunction*	_write, 
-	Stream_DumpFunction*	_dump,
-	Stream_SetFileFunction*	_setFile )
+CStream* _CStream_New(  CSTREAM_DEFARGS  )
 {
 	CStream* self;
 	
 	/* Allocate memory */
 	assert( _sizeOfSelf >= sizeof(CStream) );
-	self = (CStream*)_Stream_New( _sizeOfSelf, type, _delete, _print, _copy, name, 
-		_printf, _write, _dump, _setFile );
+	self = (CStream*)_Stream_New(  STREAM_PASSARGS  );
 	
 	_CStream_Init( self );
 	
@@ -149,3 +148,5 @@ Bool _CStream_SetFile( Stream* stream, J
 
 
 
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/src/CStream.h
--- a/Base/IO/src/CStream.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/src/CStream.h	Mon Nov 30 02:00:28 2009 +1100
@@ -64,17 +64,18 @@
 	void CStream_Init( CStream* self, Name name );
 
 	/** Constructor interface. */
-	CStream* _CStream_New( 
-		SizeT			_sizeOfSelf, 
-		Type			type, 
-		Stg_Class_DeleteFunction*	_delete, 
-		Stg_Class_PrintFunction* 	_print,
-		Stg_Class_CopyFunction*	_copy, 
-		Name			name,
-		Stream_PrintfFunction*	_printf, 
-		Stream_WriteFunction*	_write, 
-		Stream_DumpFunction*	_dump,
-		Stream_SetFileFunction*	_setFile );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define CSTREAM_DEFARGS \
+                STREAM_DEFARGS
+
+	#define CSTREAM_PASSARGS \
+                STREAM_PASSARGS
+
+	CStream* _CStream_New(  CSTREAM_DEFARGS  );
 
 	/** Init interface. */
 	void _CStream_Init( CStream *self );
@@ -103,3 +104,4 @@
 
 
 
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/src/CmdLineArgs.c
--- a/Base/IO/src/CmdLineArgs.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/src/CmdLineArgs.c	Mon Nov 30 02:00:28 2009 +1100
@@ -142,3 +142,5 @@ char* stgParseListAllCmdLineArg( int* ar
 	return 0;
 }
 
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/src/Dictionary.c
--- a/Base/IO/src/Dictionary.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/src/Dictionary.c	Mon Nov 30 02:00:28 2009 +1100
@@ -54,38 +54,29 @@ static const int STRUCT_DELTA = 2;
 static const int STRUCT_DELTA = 2;
 
 Dictionary* Dictionary_New( void ) {
-	return _Dictionary_New(
-		sizeof(Dictionary),
-		Dictionary_Type,
-		_Dictionary_Delete,
-		_Dictionary_Print,
-		_Dictionary_Copy, 
-		_Dictionary_Add,
-		_Dictionary_AddWithSource,
-		_Dictionary_Set,
-		_Dictionary_SetWithSource,
-		_Dictionary_Get,
-		_Dictionary_GetSource );
+	/* Variables set in this function */
+	SizeT                                _sizeOfSelf = sizeof(Dictionary);
+	Type                                        type = Dictionary_Type;
+	Stg_Class_DeleteFunction*                _delete = _Dictionary_Delete;
+	Stg_Class_PrintFunction*                  _print = _Dictionary_Print;
+	Stg_Class_CopyFunction*                    _copy = _Dictionary_Copy;
+	Dictionary_AddFunction*                      add = _Dictionary_Add;
+	Dictionary_AddWithSourceFunction*  addWithSource = _Dictionary_AddWithSource;
+	Dictionary_SetFunction*                      set = _Dictionary_Set;
+	Dictionary_SetWithSourceFunction*  setWithSource = _Dictionary_SetWithSource;
+	Dictionary_GetFunction*                      get = _Dictionary_Get;
+	Dictionary_GetSourceFunction*          getSource = _Dictionary_GetSource;
+
+	return _Dictionary_New(  DICTIONARY_PASSARGS  );
 }
 
-Dictionary* _Dictionary_New( 
-	SizeT											_sizeOfSelf, 
-	Type											type, 
-	Stg_Class_DeleteFunction*				_delete,
-	Stg_Class_PrintFunction*				_print,
-	Stg_Class_CopyFunction*					_copy, 
-	Dictionary_AddFunction*					add,
-	Dictionary_AddWithSourceFunction*	addWithSource,
-	Dictionary_SetFunction*					set,
-	Dictionary_SetWithSourceFunction*	setWithSource,
-	Dictionary_GetFunction*					get,
-	Dictionary_GetSourceFunction			getSource)
+Dictionary* _Dictionary_New(  DICTIONARY_DEFARGS  )
 {	
 	Dictionary* self;
 	
 	/* Allocate memory */
 	assert( _sizeOfSelf >= sizeof(Dictionary) );
-	self = (Dictionary*)_Stg_Class_New( _sizeOfSelf, type, _delete, _print, _copy );
+	self = (Dictionary*)_Stg_Class_New(  STG_CLASS_PASSARGS  );
 	
 	/* General info */
 	
@@ -880,3 +871,7 @@ Bool Dictionary_CompareAllEntriesFull( v
 
 	return retValue;
 }
+
+
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/src/Dictionary.h
--- a/Base/IO/src/Dictionary.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/src/Dictionary.h	Mon Nov 30 02:00:28 2009 +1100
@@ -105,18 +105,30 @@
 	Dictionary* Dictionary_New( void );
 	
 	/** Constructor interface. */
-	Dictionary* _Dictionary_New( 
-		SizeT											_sizeOfSelf, 
-		Type											type, 
-		Stg_Class_DeleteFunction*				_delete,
-		Stg_Class_PrintFunction*				_print,
-		Stg_Class_CopyFunction*					_copy, 
-		Dictionary_AddFunction*					add,
-		Dictionary_AddWithSourceFunction*	addWithSource,
-		Dictionary_SetFunction*					set,
-		Dictionary_SetWithSourceFunction*	setWithSource,
-		Dictionary_GetFunction*					get,
-		Dictionary_GetSourceFunction*			getSource);
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define DICTIONARY_DEFARGS \
+                STG_CLASS_DEFARGS, \
+                Dictionary_AddFunction*                      add, \
+                Dictionary_AddWithSourceFunction*  addWithSource, \
+                Dictionary_SetFunction*                      set, \
+                Dictionary_SetWithSourceFunction*  setWithSource, \
+                Dictionary_GetFunction*                      get, \
+                Dictionary_GetSourceFunction*          getSource
+
+	#define DICTIONARY_PASSARGS \
+                STG_CLASS_PASSARGS, \
+	        add,           \
+	        addWithSource, \
+	        set,           \
+	        setWithSource, \
+	        get,           \
+	        getSource    
+
+	Dictionary* _Dictionary_New(  DICTIONARY_DEFARGS  );
 	
 	/** Init interface. */
 	void _Dictionary_Init( void* dictionary );
@@ -218,3 +230,4 @@
 	Bool Dictionary_CompareAllEntriesFull( void* dictionary1, void* dictionary2, Bool strictTypeCheck );
 
 #endif /* __Base_IO_Dictionary_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/src/Dictionary_Entry.c
--- a/Base/IO/src/Dictionary_Entry.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/src/Dictionary_Entry.c	Mon Nov 30 02:00:28 2009 +1100
@@ -153,3 +153,5 @@ Dictionary_Entry_Source Dictionary_Entry
 {
 	return self->source;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/src/Dictionary_Entry_Value.c
--- a/Base/IO/src/Dictionary_Entry_Value.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/src/Dictionary_Entry_Value.c	Mon Nov 30 02:00:28 2009 +1100
@@ -1208,3 +1208,5 @@ Dictionary_Entry_Value* Dictionary_Entry
 
 	return copy;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/src/Finalise.c
--- a/Base/IO/src/Finalise.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/src/Finalise.c	Mon Nov 30 02:00:28 2009 +1100
@@ -55,3 +55,5 @@ Bool BaseIO_Finalise( void )
 	
 	return True;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/src/IO_Handler.c
--- a/Base/IO/src/IO_Handler.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/src/IO_Handler.c	Mon Nov 30 02:00:28 2009 +1100
@@ -53,22 +53,13 @@ const Dictionary_MergeType IO_Handler_De
 
 /* TODO: register with IO_Handler registry */
 
-IO_Handler* _IO_Handler_New( 
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*				_delete,
-		Stg_Class_PrintFunction*				_print, 
-		Stg_Class_CopyFunction*				_copy, 
-		IO_Handler_ReadAllFromFileFunction*		_readAllFromFile,
-		IO_Handler_ReadAllFromFileForceSourceFunction*		_readAllFromFileForceSource,
-		IO_Handler_ReadAllFromBufferFunction*		_readAllFromBuffer,
-		IO_Handler_WriteAllToFileFunction*		_writeAllToFile )
+IO_Handler* _IO_Handler_New(  IO_HANDLER_DEFARGS  )
 {
 	IO_Handler* self;
 	
 	/* Allocate memory */
 	assert( _sizeOfSelf >= sizeof(IO_Handler) );
-	self = (IO_Handler*)_Stg_Class_New( _sizeOfSelf, type, _delete, _print, _copy );
+	self = (IO_Handler*)_Stg_Class_New(  STG_CLASS_PASSARGS  );
 	
 	/* General info */
 	
@@ -476,3 +467,5 @@ Index IO_Handler_ReadAllFromCommandLineF
 
 	return filesRead;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/src/IO_Handler.h
--- a/Base/IO/src/IO_Handler.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/src/IO_Handler.h	Mon Nov 30 02:00:28 2009 +1100
@@ -83,16 +83,26 @@
 	/* No "IO_Handler_New" and "IO_Handler_Init" as this is an abstract class */
 	
 	/** Creation implementation */
-	IO_Handler* _IO_Handler_New( 
-		SizeT						sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*				_delete,
-		Stg_Class_PrintFunction*				_print, 
-		Stg_Class_CopyFunction*				_copy, 
-		IO_Handler_ReadAllFromFileFunction*		_readAllFromFile,
-		IO_Handler_ReadAllFromFileForceSourceFunction*		_readAllFromFileForceSource,
-		IO_Handler_ReadAllFromBufferFunction*		_readAllFromBuffer,
-		IO_Handler_WriteAllToFileFunction*		_writeAllToFile );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define IO_HANDLER_DEFARGS \
+                STG_CLASS_DEFARGS, \
+                IO_Handler_ReadAllFromFileFunction*                        _readAllFromFile, \
+                IO_Handler_ReadAllFromFileForceSourceFunction*  _readAllFromFileForceSource, \
+                IO_Handler_ReadAllFromBufferFunction*                    _readAllFromBuffer, \
+                IO_Handler_WriteAllToFileFunction*                          _writeAllToFile
+
+	#define IO_HANDLER_PASSARGS \
+                STG_CLASS_PASSARGS, \
+	        _readAllFromFile,            \
+	        _readAllFromFileForceSource, \
+	        _readAllFromBuffer,          \
+	        _writeAllToFile            
+
+	IO_Handler* _IO_Handler_New(  IO_HANDLER_DEFARGS  );
 	
 	/** Initialisation implementation */
 	void _IO_Handler_Init( IO_Handler* self );
@@ -152,3 +162,4 @@
 	Index IO_Handler_ReadAllFromCommandLineForceSource( void* ioHandler, int argc, char* argv[], Dictionary* dictionary ) ;
 	
 #endif /* __Base_IO_IO_Handler_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/src/IndentFormatter.c
--- a/Base/IO/src/IndentFormatter.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/src/IndentFormatter.c	Mon Nov 30 02:00:28 2009 +1100
@@ -53,16 +53,29 @@ void IndentFormatter_MakeTag( IndentForm
 
 StreamFormatter* IndentFormatter_New()
 {
-	return (StreamFormatter*)_IndentFormatter_New( sizeof(IndentFormatter), IndentFormatter_Type,
-		_IndentFormatter_Delete, _IndentFormatter_Print, _IndentFormatter_Copy, _LineFormatter_Format,
-		IndentFormatter_IndentChar );
+	/* Variables set in this function */
+	SizeT                            _sizeOfSelf = sizeof(IndentFormatter);
+	Type                                    type = IndentFormatter_Type;
+	Stg_Class_DeleteFunction*            _delete = _IndentFormatter_Delete;
+	Stg_Class_PrintFunction*              _print = _IndentFormatter_Print;
+	Stg_Class_CopyFunction*                _copy = _IndentFormatter_Copy;
+	StreamFormatter_FormatFunction*      _format = _LineFormatter_Format;
+	char                              _character = IndentFormatter_IndentChar;
+
+	return (StreamFormatter*)_IndentFormatter_New(  INDENTFORMATTER_PASSARGS  );
 }
 
 StreamFormatter* IndentFormatter_New2( char _character )
 {
-	return (StreamFormatter*)_IndentFormatter_New( sizeof(IndentFormatter), IndentFormatter_Type,
-		_IndentFormatter_Delete, _IndentFormatter_Print, _IndentFormatter_Copy, _LineFormatter_Format,
-		_character );
+	/* Variables set in this function */
+	SizeT                            _sizeOfSelf = sizeof(IndentFormatter);
+	Type                                    type = IndentFormatter_Type;
+	Stg_Class_DeleteFunction*            _delete = _IndentFormatter_Delete;
+	Stg_Class_PrintFunction*              _print = _IndentFormatter_Print;
+	Stg_Class_CopyFunction*                _copy = _IndentFormatter_Copy;
+	StreamFormatter_FormatFunction*      _format = _LineFormatter_Format;
+
+	return (StreamFormatter*)_IndentFormatter_New(  INDENTFORMATTER_PASSARGS  );
 }
 
 void IndentFormatter_Init( IndentFormatter* self )
@@ -76,20 +89,13 @@ void IndentFormatter_Init( IndentFormatt
 	_IndentFormatter_Init( self, _LineFormatter_Format, IndentFormatter_IndentChar );
 }
 
-IndentFormatter* _IndentFormatter_New(
-	SizeT 				_sizeOfSelf,
-	Type 				type,
-	Stg_Class_DeleteFunction*		_delete,
-	Stg_Class_PrintFunction*		_print,
-	Stg_Class_CopyFunction*		_copy, 
-	StreamFormatter_FormatFunction*	_format,
-	char				_character )
+IndentFormatter* _IndentFormatter_New(  INDENTFORMATTER_DEFARGS  )
 {
 	IndentFormatter* self;
 	
 	/* Allocate memory */
 	assert( _sizeOfSelf >= sizeof(IndentFormatter) );
-	self = (IndentFormatter*)_Stg_Class_New( _sizeOfSelf, type, _delete, _print, _copy );
+	self = (IndentFormatter*)_Stg_Class_New(  STG_CLASS_PASSARGS  );
                                                                                 
 	_IndentFormatter_Init( self, _format, _character );
 
@@ -204,3 +210,5 @@ void IndentFormatter_MakeTag( IndentForm
 
 
 
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/src/IndentFormatter.h
--- a/Base/IO/src/IndentFormatter.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/src/IndentFormatter.h	Mon Nov 30 02:00:28 2009 +1100
@@ -67,14 +67,22 @@
 
 
 	/** Constructor interface. */
-	IndentFormatter* _IndentFormatter_New(
-		SizeT 				_sizeOfSelf,
-		Type 				type,
-		Stg_Class_DeleteFunction*		_delete,
-		Stg_Class_PrintFunction*		_print,
-		Stg_Class_CopyFunction*		_copy, 
-		StreamFormatter_FormatFunction*	_format,
-		char				_character );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define INDENTFORMATTER_DEFARGS \
+                STG_CLASS_DEFARGS, \
+                StreamFormatter_FormatFunction*     _format, \
+                char                             _character
+
+	#define INDENTFORMATTER_PASSARGS \
+                STG_CLASS_PASSARGS, \
+	        _format,    \
+	        _character
+
+	IndentFormatter* _IndentFormatter_New(  INDENTFORMATTER_DEFARGS  );
 
 	/** Init interface. */
 	void _IndentFormatter_Init(
@@ -109,3 +117,4 @@
 
 
 #endif /* __Base_IO_IndentFormatter_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/src/Init.c
--- a/Base/IO/src/Init.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/src/Init.c	Mon Nov 30 02:00:28 2009 +1100
@@ -103,3 +103,5 @@ Bool BaseIO_Init( int* argc, char** argv
 	
 	return True;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/src/Journal.c
--- a/Base/IO/src/Journal.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/src/Journal.c	Mon Nov 30 02:00:28 2009 +1100
@@ -751,3 +751,5 @@ void Journal_SetupDefaultTypedStreams() 
 	Stream_SetLevel( typedStream, 1 );
 	Journal_RegisterTypedStream( typedStream );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/src/JournalFile.c
--- a/Base/IO/src/JournalFile.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/src/JournalFile.c	Mon Nov 30 02:00:28 2009 +1100
@@ -44,21 +44,12 @@ const Type JournalFile_Type = "JournalFi
 const Type JournalFile_Type = "JournalFile";
 
 
-JournalFile* _JournalFile_New(
-	SizeT				_sizeOfSelf,
-	Type				type,
-	Stg_Class_DeleteFunction*	_delete,
-	Stg_Class_PrintFunction*	_print,
-	Stg_Class_CopyFunction*		_copy, 
-	JournalFile_OpenFunction*	_open,
-	JournalFile_AppendFunction*	_append,
-	JournalFile_CloseFunction*	_close,
-	JournalFile_FlushFunction*	_flush )
+JournalFile* _JournalFile_New(  JOURNALFILE_DEFARGS  )
 {
 	JournalFile* self;
 	
 	assert( _sizeOfSelf >= sizeof(JournalFile) );
-	self = (JournalFile*)_Stg_Class_New( _sizeOfSelf, type, _delete, _print, _copy );
+	self = (JournalFile*)_Stg_Class_New(  STG_CLASS_PASSARGS  );
 	
 	_JournalFile_Init( self, _open, _append, _close, _flush );
 	
@@ -167,3 +158,5 @@ Bool JournalFile_Flush( void* file )
 	stJournal->flushCount++;
 	return self->_flush( self );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/src/JournalFile.h
--- a/Base/IO/src/JournalFile.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/src/JournalFile.h	Mon Nov 30 02:00:28 2009 +1100
@@ -81,16 +81,26 @@
 
 
 	/** Constructor interface. */
-	JournalFile* _JournalFile_New(
-		SizeT				_sizeOfSelf,
-		Type				type,
-		Stg_Class_DeleteFunction*		_delete,
-		Stg_Class_PrintFunction*		_print,
-		Stg_Class_CopyFunction*		_copy, 
-		JournalFile_OpenFunction*	_open,
-		JournalFile_AppendFunction*	_append,
-		JournalFile_CloseFunction*	_close,
-		JournalFile_FlushFunction*	_flush );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define JOURNALFILE_DEFARGS \
+                STG_CLASS_DEFARGS, \
+                JournalFile_OpenFunction*      _open, \
+                JournalFile_AppendFunction*  _append, \
+                JournalFile_CloseFunction*    _close, \
+                JournalFile_FlushFunction*    _flush
+
+	#define JOURNALFILE_PASSARGS \
+                STG_CLASS_PASSARGS, \
+	        _open,   \
+	        _append, \
+	        _close,  \
+	        _flush 
+
+	JournalFile* _JournalFile_New(  JOURNALFILE_DEFARGS  );
 	
 	/** Init interface. */
 	void _JournalFile_Init(
@@ -150,3 +160,4 @@
 
 
 #endif /* __Base_IO_JournalFile_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/src/LineFormatter.c
--- a/Base/IO/src/LineFormatter.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/src/LineFormatter.c	Mon Nov 30 02:00:28 2009 +1100
@@ -46,19 +46,13 @@
 
 const Type LineFormatter_Type = "LineFormatter";
 
-LineFormatter* _LineFormatter_New(
-	SizeT 				_sizeOfSelf,
-	Type 				type,
-	Stg_Class_DeleteFunction*		_delete,
-	Stg_Class_PrintFunction*		_print,
-	Stg_Class_CopyFunction*		_copy, 
-	StreamFormatter_FormatFunction*	_format )
+LineFormatter* _LineFormatter_New(  LINEFORMATTER_DEFARGS  )
 {
 	LineFormatter* self;
 	
 	/* Allocate memory */
 	assert( _sizeOfSelf >= sizeof(LineFormatter) );
-	self = (LineFormatter*)_Stg_Class_New( _sizeOfSelf, type, _delete, _print, _copy );
+	self = (LineFormatter*)_Stg_Class_New(  STG_CLASS_PASSARGS  );
                                                                                 
 	_LineFormatter_Init( self, _format );
 
@@ -224,3 +218,5 @@ char* _LineFormatter_Format( void* forma
 	return result;	
 }
 
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/src/LineFormatter.h
--- a/Base/IO/src/LineFormatter.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/src/LineFormatter.h	Mon Nov 30 02:00:28 2009 +1100
@@ -60,13 +60,20 @@
 
 
 	/** Constructor interface. */
-	LineFormatter* _LineFormatter_New(
-		SizeT 				_sizeOfSelf,
-		Type 				type,
-		Stg_Class_DeleteFunction*		_delete,
-		Stg_Class_PrintFunction*		_print,
-		Stg_Class_CopyFunction*		_copy, 
-		StreamFormatter_FormatFunction*	_format );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define LINEFORMATTER_DEFARGS \
+                STG_CLASS_DEFARGS, \
+                StreamFormatter_FormatFunction*  _format
+
+	#define LINEFORMATTER_PASSARGS \
+                STG_CLASS_PASSARGS, \
+	        _format
+
+	LineFormatter* _LineFormatter_New(  LINEFORMATTER_DEFARGS  );
 
 	/** Init interface. */
 	void _LineFormatter_Init(
@@ -96,3 +103,4 @@
 
 
 
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/src/MPIFile.c
--- a/Base/IO/src/MPIFile.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/src/MPIFile.c	Mon Nov 30 02:00:28 2009 +1100
@@ -50,7 +50,14 @@ const Type MPIFile_Type = "MPIFile";
 
 JournalFile* MPIFile_New()
 {
-	return (JournalFile*)_MPIFile_New( sizeof(MPIFile), MPIFile_Type, _MPIFile_Delete, _MPIFile_Print, NULL );
+	/* Variables set in this function */
+	SizeT                      _sizeOfSelf = sizeof(MPIFile);
+	Type                              type = MPIFile_Type;
+	Stg_Class_DeleteFunction*      _delete = _MPIFile_Delete;
+	Stg_Class_PrintFunction*        _print = _MPIFile_Print;
+	Stg_Class_CopyFunction*          _copy = NULL;
+
+	return (JournalFile*)_MPIFile_New(  MPIFILE_PASSARGS  );
 }
 
 JournalFile* MPIFile_New2( const char* const fileName )
@@ -67,16 +74,11 @@ JournalFile* MPIFile_New2( const char* c
 	return result;
 }
 
-MPIFile* _MPIFile_New(
-	SizeT _sizeOfSelf,
-	Type type,
-	Stg_Class_DeleteFunction* _delete,
-	Stg_Class_PrintFunction* _print,
-	Stg_Class_CopyFunction* _copy )
+MPIFile* _MPIFile_New(  MPIFILE_DEFARGS  )
 {
 	MPIFile* self;
 	
-	self = (MPIFile*)_Stg_Class_New( _sizeOfSelf, type, _delete, _print, _copy );
+	self = (MPIFile*)_Stg_Class_New(  STG_CLASS_PASSARGS  );
 	
 	_MPIFile_Init( self );
 	
@@ -183,3 +185,5 @@ Bool _MPIFile_Flush( void* file )
 	
 	return True;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/src/MPIFile.h
--- a/Base/IO/src/MPIFile.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/src/MPIFile.h	Mon Nov 30 02:00:28 2009 +1100
@@ -67,12 +67,18 @@
 
 
 	/** Constructor interface. */
-	MPIFile* _MPIFile_New(
-		SizeT _sizeOfSelf,
-		Type type,
-		Stg_Class_DeleteFunction* _delete,
-		Stg_Class_PrintFunction* _print,
-		Stg_Class_CopyFunction* _copy );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define MPIFILE_DEFARGS \
+                STG_CLASS_DEFARGS
+
+	#define MPIFILE_PASSARGS \
+                STG_CLASS_PASSARGS
+
+	MPIFile* _MPIFile_New(  MPIFILE_DEFARGS  );
 		
 	/** Init interface. */
 	void _MPIFile_Init( MPIFile* self );
@@ -98,3 +104,4 @@
 	
 
 #endif /* __Base_IO_MPIFile_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/src/MPIStream.c
--- a/Base/IO/src/MPIStream.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/src/MPIStream.c	Mon Nov 30 02:00:28 2009 +1100
@@ -56,8 +56,18 @@ const Type MPIStream_Type = "MPIStream";
 
 Stream* MPIStream_New( Name name )
 {
-	return (Stream*)_MPIStream_New( sizeof(MPIStream), MPIStream_Type, _MPIStream_Delete, _MPIStream_Print, _Stream_Copy, 
-		name, _MPIStream_Printf, _MPIStream_Write, _MPIStream_Dump, _MPIStream_SetFile );
+	/* Variables set in this function */
+	SizeT                      _sizeOfSelf = sizeof(MPIStream);
+	Type                              type = MPIStream_Type;
+	Stg_Class_DeleteFunction*      _delete = _MPIStream_Delete;
+	Stg_Class_PrintFunction*        _print = _MPIStream_Print;
+	Stg_Class_CopyFunction*          _copy = _Stream_Copy;
+	Stream_PrintfFunction*         _printf = _MPIStream_Printf;
+	Stream_WriteFunction*           _write = _MPIStream_Write;
+	Stream_DumpFunction*             _dump = _MPIStream_Dump;
+	Stream_SetFileFunction*       _setFile = _MPIStream_SetFile;
+
+	return (Stream*)_MPIStream_New(  MPISTREAM_PASSARGS  );
 }
 
 void MPIStream_Init( MPIStream* self, Name name )
@@ -66,24 +76,13 @@ void MPIStream_Init( MPIStream* self, Na
 }
 
 
-MPIStream* _MPIStream_New( 
-	SizeT			_sizeOfSelf, 
-	Type			type, 
-	Stg_Class_DeleteFunction*	_delete, 
-	Stg_Class_PrintFunction* 	_print,
-	Stg_Class_CopyFunction*	_copy, 
-	Name			name,
-	Stream_PrintfFunction*	_printf, 
-	Stream_WriteFunction*	_write, 
-	Stream_DumpFunction*	_dump,
-	Stream_SetFileFunction*	_setFile )
+MPIStream* _MPIStream_New(  MPISTREAM_DEFARGS  )
 {
 	MPIStream* self;
 	
 	/* Allocate memory */
 	assert( _sizeOfSelf >= sizeof(MPIStream) );
-	self = (MPIStream*)_Stream_New( _sizeOfSelf, type, _delete, _print, _copy, name, 
-		_printf, _write, _dump, _setFile );
+	self = (MPIStream*)_Stream_New(  STREAM_PASSARGS  );
 	
 	_MPIStream_Init( self );
 	
@@ -230,3 +229,5 @@ SizeT MPIStream_WriteAllProcessors( Stre
 
 	return Stream_Write( stream, data, elem_size, num_elems );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/src/MPIStream.h
--- a/Base/IO/src/MPIStream.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/src/MPIStream.h	Mon Nov 30 02:00:28 2009 +1100
@@ -64,17 +64,18 @@
 	void MPIStream_Init( MPIStream* self, Name name );
 
 	/** Constructor interface. */
-	MPIStream* _MPIStream_New( 
-		SizeT			_sizeOfSelf, 
-		Type			type, 
-		Stg_Class_DeleteFunction*	_delete, 
-		Stg_Class_PrintFunction* 	_print,
-		Stg_Class_CopyFunction*	_copy, 
-		Name			name,
-		Stream_PrintfFunction*	_printf, 
-		Stream_WriteFunction*	_write, 
-		Stream_DumpFunction*	_dump,
-		Stream_SetFileFunction*	_setFile );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define MPISTREAM_DEFARGS \
+                STREAM_DEFARGS
+
+	#define MPISTREAM_PASSARGS \
+                STREAM_PASSARGS
+
+	MPIStream* _MPIStream_New(  MPISTREAM_DEFARGS  );
 
 	/** Init interface. */
 	void _MPIStream_Init( MPIStream *self );
@@ -106,3 +107,4 @@
 
 
 
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/src/PathUtils.c
--- a/Base/IO/src/PathUtils.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/src/PathUtils.c	Mon Nov 30 02:00:28 2009 +1100
@@ -345,3 +345,5 @@ Bool Stg_DirectoryExists( const char* pa
 	}
         return (info.st_mode & S_IFDIR);
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/src/RankFormatter.c
--- a/Base/IO/src/RankFormatter.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/src/RankFormatter.c	Mon Nov 30 02:00:28 2009 +1100
@@ -51,8 +51,15 @@ const char* PREPEND = ": ";
 
 StreamFormatter* RankFormatter_New()
 {
-	return (StreamFormatter*)_RankFormatter_New( sizeof(RankFormatter), RankFormatter_Type,
-		_RankFormatter_Delete, _RankFormatter_Print, _LineFormatter_Copy, _LineFormatter_Format );
+	/* Variables set in this function */
+	SizeT                            _sizeOfSelf = sizeof(RankFormatter);
+	Type                                    type = RankFormatter_Type;
+	Stg_Class_DeleteFunction*            _delete = _RankFormatter_Delete;
+	Stg_Class_PrintFunction*              _print = _RankFormatter_Print;
+	Stg_Class_CopyFunction*                _copy = _LineFormatter_Copy;
+	StreamFormatter_FormatFunction*      _format = _LineFormatter_Format;
+
+	return (StreamFormatter*)_RankFormatter_New(  RANKFORMATTER_PASSARGS  );
 }
 	
 void RankFormatter_Init( RankFormatter* self )
@@ -67,19 +74,13 @@ void RankFormatter_Init( RankFormatter* 
 	_RankFormatter_Init( self, _LineFormatter_Format );
 }
 
-RankFormatter* _RankFormatter_New(
-	SizeT 				_sizeOfSelf,
-	Type 				type,
-	Stg_Class_DeleteFunction*		_delete,
-	Stg_Class_PrintFunction*		_print,
-	Stg_Class_CopyFunction*		_copy, 
-	StreamFormatter_FormatFunction*	_format )
+RankFormatter* _RankFormatter_New(  RANKFORMATTER_DEFARGS  )
 {
 	RankFormatter* self;
 	
 	/* Allocate memory */
 	assert( _sizeOfSelf >= sizeof(RankFormatter) );
-	self = (RankFormatter*)_LineFormatter_New( _sizeOfSelf, type, _delete, _print, _copy, _format );
+	self = (RankFormatter*)_LineFormatter_New(  LINEFORMATTER_PASSARGS  );
 	
 	_RankFormatter_Init( self, _format );
 
@@ -146,3 +147,5 @@ void _RankFormatter_Print( void* formatt
 }
 
 
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/src/RankFormatter.h
--- a/Base/IO/src/RankFormatter.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/src/RankFormatter.h	Mon Nov 30 02:00:28 2009 +1100
@@ -63,13 +63,18 @@
 
 
 	/** Constructor interface. */
-	RankFormatter* _RankFormatter_New(
-		SizeT 				_sizeOfSelf,
-		Type 				type,
-		Stg_Class_DeleteFunction*		_delete,
-		Stg_Class_PrintFunction*		_print,
-		Stg_Class_CopyFunction*		_copy, 
-		StreamFormatter_FormatFunction*	_format );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define RANKFORMATTER_DEFARGS \
+                LINEFORMATTER_DEFARGS
+
+	#define RANKFORMATTER_PASSARGS \
+                LINEFORMATTER_PASSARGS
+
+	RankFormatter* _RankFormatter_New(  RANKFORMATTER_DEFARGS  );
 
 	/** Init interface. */
 	void _RankFormatter_Init(
@@ -87,3 +92,4 @@
 
 
 
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/src/Stream.c
--- a/Base/IO/src/Stream.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/src/Stream.c	Mon Nov 30 02:00:28 2009 +1100
@@ -60,23 +60,13 @@ static const int STREAM_CHILDREN_DELTA =
 /** Returns True if the current process is allowed to print. */
 Bool _Stream_IsPrintingRank( Stream* stream );
 
-Stream* _Stream_New(
-	SizeT			_sizeOfSelf,
-	Type			type,
-	Stg_Class_DeleteFunction*	_delete,
-	Stg_Class_PrintFunction*	_print,
-	Stg_Class_CopyFunction*	_copy, 
-	Name			name,
-	Stream_PrintfFunction*	_printf,
-	Stream_WriteFunction*	_write,
-	Stream_DumpFunction*	_dump,
-	Stream_SetFileFunction*	_setFile )
+Stream* _Stream_New(  STREAM_DEFARGS  )
 {
 	Stream* self;
 	
 	/* Allocate memory */
 	assert( _sizeOfSelf >= sizeof(Stream) );
-	self = (Stream*)_Stg_Class_New( _sizeOfSelf, type, _delete, _print, _copy );
+	self = (Stream*)_Stg_Class_New(  STG_CLASS_PASSARGS  );
                                                                                 
 	_Stream_Init( self, name, _printf, _write, _dump, _setFile );
 
@@ -717,3 +707,5 @@ Bool _Stream_IsPrintingRank( Stream* str
 
 	return True;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/src/Stream.h
--- a/Base/IO/src/Stream.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/src/Stream.h	Mon Nov 30 02:00:28 2009 +1100
@@ -90,17 +90,28 @@
 	struct Stream { __Stream };
 
 	/** Constructor interface. */
-	Stream* _Stream_New(
-		SizeT			_sizeOfSelf,
-		Type			type,
-		Stg_Class_DeleteFunction*	_delete,
-		Stg_Class_PrintFunction*	_print,
-		Stg_Class_CopyFunction*	_copy, 
-		Name			name,
-		Stream_PrintfFunction*	_printf,
-		Stream_WriteFunction*	_write,
-		Stream_DumpFunction*	_dump,
-		Stream_SetFileFunction*	_setFile );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define STREAM_DEFARGS \
+                STG_CLASS_DEFARGS, \
+                Name                         name, \
+                Stream_PrintfFunction*    _printf, \
+                Stream_WriteFunction*      _write, \
+                Stream_DumpFunction*        _dump, \
+                Stream_SetFileFunction*  _setFile
+
+	#define STREAM_PASSARGS \
+                STG_CLASS_PASSARGS, \
+	        name,     \
+	        _printf,  \
+	        _write,   \
+	        _dump,    \
+	        _setFile
+
+	Stream* _Stream_New(  STREAM_DEFARGS  );
 		
 	/** Init interface. */
 	void _Stream_Init(
@@ -263,3 +274,4 @@
 	void Stream_CloseAndFreeFile( void* stream ) ;
 
 #endif /* __Base_IO_Stream_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/src/StreamFormatter.c
--- a/Base/IO/src/StreamFormatter.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/src/StreamFormatter.c	Mon Nov 30 02:00:28 2009 +1100
@@ -42,19 +42,13 @@
 
 const Type StreamFormatter_Type = "StreamFormatter";
 
-StreamFormatter* _StreamFormatter_New(
-	SizeT 				_sizeOfSelf,
-	Type 				type,
-	Stg_Class_DeleteFunction*		_delete,
-	Stg_Class_PrintFunction*		_print,
-	Stg_Class_CopyFunction*		_copy, 
-	StreamFormatter_FormatFunction*	_format )
+StreamFormatter* _StreamFormatter_New(  STREAMFORMATTER_DEFARGS  )
 {
 	StreamFormatter* self;
 	
 	/* Allocate memory */
 	assert( _sizeOfSelf >= sizeof(StreamFormatter) );
-	self = (StreamFormatter*)_Stg_Class_New( _sizeOfSelf, type, _delete, _print, _copy );
+	self = (StreamFormatter*)_Stg_Class_New(  STG_CLASS_PASSARGS  );
                                                                                 
 	_StreamFormatter_Init( self, _format );
 
@@ -169,3 +163,5 @@ char* StreamFormatter_Buffer_AllocNext( 
 
 	return *stgStreamFormatter_Buffer->current;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/src/StreamFormatter.h
--- a/Base/IO/src/StreamFormatter.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/src/StreamFormatter.h	Mon Nov 30 02:00:28 2009 +1100
@@ -64,13 +64,20 @@
 
 
 	/** Constructor interface. */
-	StreamFormatter* _StreamFormatter_New(
-		SizeT 				_sizeOfSelf,
-		Type 				type,
-		Stg_Class_DeleteFunction*		_delete,
-		Stg_Class_PrintFunction*		_print,
-		Stg_Class_CopyFunction*		_copy, 
-		StreamFormatter_FormatFunction*	_format );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define STREAMFORMATTER_DEFARGS \
+                STG_CLASS_DEFARGS, \
+                StreamFormatter_FormatFunction*  _format
+
+	#define STREAMFORMATTER_PASSARGS \
+                STG_CLASS_PASSARGS, \
+	        _format
+
+	StreamFormatter* _StreamFormatter_New(  STREAMFORMATTER_DEFARGS  );
 	
 	/** Init interface. */
 	void _StreamFormatter_Init(
@@ -108,3 +115,4 @@
 	char* StreamFormatter_Buffer_AllocNext( Index size );
 
 #endif /* __Base_IO_StreamFormatter_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/src/XML_IO_Handler.c
--- a/Base/IO/src/XML_IO_Handler.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/src/XML_IO_Handler.c	Mon Nov 30 02:00:28 2009 +1100
@@ -162,9 +162,22 @@ static void _XML_IO_Handler_WriteParamet
 
 
 XML_IO_Handler* XML_IO_Handler_New( void ) {
-	return _XML_IO_Handler_New( sizeof(XML_IO_Handler), XML_IO_Handler_Type, _XML_IO_Handler_Delete, _XML_IO_Handler_Print, 
-		NULL, _XML_IO_Handler_ReadAllFromFile, _XML_IO_Handler_ReadAllFromFileForceSource, _XML_IO_Handler_ReadAllFromBuffer, _XML_IO_Handler_WriteAllToFile, _XML_IO_Handler_WriteEntryToFile, 
-		_XML_IO_Handler_SetListEncoding, _XML_IO_Handler_SetWritingPrecision, _XML_IO_Handler_SetWriteExplicitTypes );
+	/* Variables set in this function */
+	SizeT                                                           _sizeOfSelf = sizeof(XML_IO_Handler);
+	Type                                                                   type = XML_IO_Handler_Type;
+	Stg_Class_DeleteFunction*                                           _delete = _XML_IO_Handler_Delete;
+	Stg_Class_PrintFunction*                                             _print = _XML_IO_Handler_Print;
+	Stg_Class_CopyFunction*                                               _copy = NULL;
+	IO_Handler_ReadAllFromFileFunction*                        _readAllFromFile = _XML_IO_Handler_ReadAllFromFile;
+	IO_Handler_ReadAllFromFileForceSourceFunction*  _readAllFromFileForceSource = _XML_IO_Handler_ReadAllFromFileForceSource;
+	IO_Handler_ReadAllFromBufferFunction*                    _readAllFromBuffer = _XML_IO_Handler_ReadAllFromBuffer;
+	IO_Handler_WriteAllToFileFunction*                          _writeAllToFile = _XML_IO_Handler_WriteAllToFile;
+	XML_IO_Handler_WriteEntryToFileFunction*                  _writeEntryToFile = _XML_IO_Handler_WriteEntryToFile;
+	XML_IO_Handler_SetListEncodingFunction*                    _setListEncoding = _XML_IO_Handler_SetListEncoding;
+	XML_IO_Handler_SetWritingPrecisionFunction*            _setWritingPrecision = _XML_IO_Handler_SetWritingPrecision;
+	XML_IO_Handler_SetWriteExplicitTypesFunction*        _setWriteExplicitTypes = _XML_IO_Handler_SetWriteExplicitTypes;
+
+	return _XML_IO_Handler_New(  XML_IO_HANDLER_PASSARGS  );
 }
 
 XML_IO_Handler* XML_IO_Handler_New_Schema( XML_IO_Handler* old );
@@ -189,35 +202,13 @@ void XML_IO_Handler_Init( XML_IO_Handler
 	_XML_IO_Handler_Init( self );
 }
 
-XML_IO_Handler* _XML_IO_Handler_New( 
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*				_delete,
-		Stg_Class_PrintFunction*				_print, 
-		Stg_Class_CopyFunction*				_copy, 
-		IO_Handler_ReadAllFromFileFunction*		_readAllFromFile,
-		IO_Handler_ReadAllFromFileForceSourceFunction*		_readAllFromFileForceSource,
-		IO_Handler_ReadAllFromBufferFunction*		_readAllFromBuffer,
-		IO_Handler_WriteAllToFileFunction*		_writeAllToFile,
-		XML_IO_Handler_WriteEntryToFileFunction*	_writeEntryToFile, 
-		XML_IO_Handler_SetListEncodingFunction*		_setListEncoding,
-		XML_IO_Handler_SetWritingPrecisionFunction*	_setWritingPrecision,
-		XML_IO_Handler_SetWriteExplicitTypesFunction*	_setWriteExplicitTypes )
+XML_IO_Handler* _XML_IO_Handler_New(  XML_IO_HANDLER_DEFARGS  )
 {
 	XML_IO_Handler* self;
 	
 	/* Allocate memory */
 	assert( _sizeOfSelf >= sizeof(XML_IO_Handler) );
-	self = (XML_IO_Handler*)_IO_Handler_New( 
-		_sizeOfSelf, 
-		type,
-		_delete,
-		_print,
-		_copy, 
-		_readAllFromFile,
-		_readAllFromFileForceSource,
-		_readAllFromBuffer,
-		_writeAllToFile );
+	self = (XML_IO_Handler*)_IO_Handler_New(  IO_HANDLER_PASSARGS  );
 	
 	/* General info */
 	
@@ -2350,3 +2341,5 @@ void XML_IO_Handler_LibXMLErrorHandler( 
    Stream_Printf( Journal_Register( Error_Type, XML_IO_Handler_Type ), msg, ap );
    va_end(ap);
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/src/XML_IO_Handler.h
--- a/Base/IO/src/XML_IO_Handler.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/src/XML_IO_Handler.h	Mon Nov 30 02:00:28 2009 +1100
@@ -108,20 +108,26 @@
 	XML_IO_Handler* XML_IO_Handler_New( void );
 	
 	/** Creation implementation */
-	XML_IO_Handler* _XML_IO_Handler_New( 
-		SizeT						_sizeOfSelf,
-		Type						type,
-		Stg_Class_DeleteFunction*				_delete,
-		Stg_Class_PrintFunction*				_print, 
-		Stg_Class_CopyFunction*				_copy, 
-		IO_Handler_ReadAllFromFileFunction*		_readAllFromFile,
-		IO_Handler_ReadAllFromFileForceSourceFunction*		_readAllFromFileForceSource,
-		IO_Handler_ReadAllFromBufferFunction*		_readAllFromBuffer,
-		IO_Handler_WriteAllToFileFunction*		_writeAllToFile,
-		XML_IO_Handler_WriteEntryToFileFunction*	_writeEntryToFile,
-		XML_IO_Handler_SetListEncodingFunction*		_setListEncoding,
-		XML_IO_Handler_SetWritingPrecisionFunction*	_setWritingPrecision,
-		XML_IO_Handler_SetWriteExplicitTypesFunction*	_setWriteExplicitTypes );
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define XML_IO_HANDLER_DEFARGS \
+                IO_HANDLER_DEFARGS, \
+                XML_IO_Handler_WriteEntryToFileFunction*            _writeEntryToFile, \
+                XML_IO_Handler_SetListEncodingFunction*              _setListEncoding, \
+                XML_IO_Handler_SetWritingPrecisionFunction*      _setWritingPrecision, \
+                XML_IO_Handler_SetWriteExplicitTypesFunction*  _setWriteExplicitTypes
+
+	#define XML_IO_HANDLER_PASSARGS \
+                IO_HANDLER_PASSARGS, \
+	        _writeEntryToFile,      \
+	        _setListEncoding,       \
+	        _setWritingPrecision,   \
+	        _setWriteExplicitTypes
+
+	XML_IO_Handler* _XML_IO_Handler_New(  XML_IO_HANDLER_DEFARGS  );
 	
 	/** Initialise a XML_IO_Handler construct */
 	void XML_IO_Handler_Init( XML_IO_Handler* self );
@@ -180,3 +186,4 @@
 	void XML_IO_Handler_LibXMLErrorHandler( void* ctx, const char* msg, ... );
 
 #endif /* __Base_IO_XML_IO_Handler_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/src/shortcuts.c
--- a/Base/IO/src/shortcuts.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/src/shortcuts.c	Mon Nov 30 02:00:28 2009 +1100
@@ -177,3 +177,5 @@ void Journal_PrintString_WithLength( Str
 		Journal_Printf( stream, string );
 	}
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/src/stgmessaging.c
--- a/Base/IO/src/stgmessaging.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/src/stgmessaging.c	Mon Nov 30 02:00:28 2009 +1100
@@ -127,3 +127,5 @@ int Stg_MPI_Test ( char* file, int line,
 
 	return result;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/tests/DictionarySuite.c
--- a/Base/IO/tests/DictionarySuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/tests/DictionarySuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -494,3 +494,5 @@ void DictionarySuite( pcu_suite_t* suite
    pcu_suite_addTest( suite, DictionarySuite_TestMerge );
    pcu_suite_addTest( suite, DictionarySuite_TestReadAllParamFromCommandLine );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/tests/IO_HandlerSuite.c
--- a/Base/IO/tests/IO_HandlerSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/tests/IO_HandlerSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -742,3 +742,5 @@ void IO_HandlerSuite( pcu_suite_t* suite
    pcu_suite_addTest( suite, IO_HandlerSuite_TestReadWrongNS );
    pcu_suite_addTest( suite, IO_HandlerSuite_TestReadWrongRootNode );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/tests/JournalSuite.c
--- a/Base/IO/tests/JournalSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/tests/JournalSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -464,3 +464,5 @@ void JournalSuite( pcu_suite_t* suite ) 
    pcu_suite_addTest( suite, JournalSuite_TestShortcuts );
    pcu_suite_addTest( suite, JournalSuite_TestFirewall );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/tests/MPIStreamSuite.c
--- a/Base/IO/tests/MPIStreamSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/tests/MPIStreamSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -184,3 +184,5 @@ void MPIStreamSuite( pcu_suite_t* suite 
    pcu_suite_addTest( suite, MPIStreamSuite_TestWriteAllProcessors );
    pcu_suite_addTest( suite, MPIStreamSuite_TestPrintWithOffset );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/tests/PathUtilsSuite.c
--- a/Base/IO/tests/PathUtilsSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/tests/PathUtilsSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -130,3 +130,5 @@ void PathUtilsSuite( pcu_suite_t* suite 
    pcu_suite_addTest( suite, PathUtilsSuite_TestPathJoin );
    pcu_suite_addTest( suite, PathUtilsSuite_TestFindFile );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/IO/tests/RankFormatterSuite.c
--- a/Base/IO/tests/RankFormatterSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/IO/tests/RankFormatterSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -109,3 +109,5 @@ void RankFormatterSuite( pcu_suite_t* su
    pcu_suite_setFixtures( suite, RankFormatterSuite_Setup, RankFormatterSuite_Teardown );
    pcu_suite_addTest( suite, RankFormatterSuite_TestPrintWithRank );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/ListPlugins/src/main.c
--- a/Base/ListPlugins/src/main.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/ListPlugins/src/main.c	Mon Nov 30 02:00:28 2009 +1100
@@ -84,3 +84,5 @@ int main( int argc, char* argv[] )
 
 	return 0; /* success */
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Python/Bindings/Context/bindings.c
--- a/Base/Python/Bindings/Context/bindings.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Python/Bindings/Context/bindings.c	Mon Nov 30 02:00:28 2009 +1100
@@ -302,3 +302,5 @@ PyObject* Context_Python_SetTime( PyObje
 	Py_INCREF( Py_None );
 	return Py_None;
 }	
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Python/Bindings/Context/init.c
--- a/Base/Python/Bindings/Context/init.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Python/Bindings/Context/init.c	Mon Nov 30 02:00:28 2009 +1100
@@ -41,3 +41,5 @@ void initContext() {
 	}
 	return;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Python/Bindings/Context/misc.c
--- a/Base/Python/Bindings/Context/misc.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Python/Bindings/Context/misc.c	Mon Nov 30 02:00:28 2009 +1100
@@ -38,3 +38,5 @@ PyObject* Context_Python_copyright( PyOb
 PyObject* Context_Python_copyright( PyObject* self, PyObject* args ) {
     return Py_BuildValue( "s", "StGermain.Base.Bindings.Context Python module: Copyright (c) 2003 Victorian Partnership for Advanced Computing (VPAC) Ltd. Australia." );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Python/Bindings/Dictionary/bindings.c
--- a/Base/Python/Bindings/Dictionary/bindings.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Python/Bindings/Dictionary/bindings.c	Mon Nov 30 02:00:28 2009 +1100
@@ -195,3 +195,5 @@ PyObject* Dictionary_Python_LoadFromFile
 	Py_INCREF( Py_None );
 	return Py_None;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Python/Bindings/Dictionary/init.c
--- a/Base/Python/Bindings/Dictionary/init.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Python/Bindings/Dictionary/init.c	Mon Nov 30 02:00:28 2009 +1100
@@ -42,3 +42,5 @@ void initDictionary() {
 	}
 	return;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/Python/Bindings/Dictionary/misc.c
--- a/Base/Python/Bindings/Dictionary/misc.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/Python/Bindings/Dictionary/misc.c	Mon Nov 30 02:00:28 2009 +1100
@@ -38,3 +38,5 @@ PyObject* Dictionary_Python_copyright( P
 PyObject* Dictionary_Python_copyright( PyObject* self, PyObject* args ) {
 	return Py_BuildValue( "s", "StGermain.Base.Bindings.Dictionary Python module: Copyright (c) 2003 Victorian Partnership for Advanced Computing (VPAC) Ltd. Australia." );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/src/Finalise.c
--- a/Base/src/Finalise.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/src/Finalise.c	Mon Nov 30 02:00:28 2009 +1100
@@ -64,3 +64,5 @@ Bool StGermainBase_Finalise( void ) {
 
 	return True;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/src/Init.c
--- a/Base/src/Init.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/src/Init.c	Mon Nov 30 02:00:28 2009 +1100
@@ -76,3 +76,5 @@ Bool StGermainBase_Init( int* argc, char
 	
 	return True;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Base/tests/testLibBase.c
--- a/Base/tests/testLibBase.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Base/tests/testLibBase.c	Mon Nov 30 02:00:28 2009 +1100
@@ -79,3 +79,5 @@ Bool LinearAlgebra_Finalise( void ) {
 Bool LinearAlgebra_Finalise( void ) {
 	return True;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Regresstor/ClientPrograms/checkDiff/main.c
--- a/Regresstor/ClientPrograms/checkDiff/main.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Regresstor/ClientPrograms/checkDiff/main.c	Mon Nov 30 02:00:28 2009 +1100
@@ -310,3 +310,5 @@ int interpretResponse( SoapCtx* response
 	printf( "Regresstor: Successfully submited check.\n" );
 	return 1;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Regresstor/ClientPrograms/checkExecution/main.c
--- a/Regresstor/ClientPrograms/checkExecution/main.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Regresstor/ClientPrograms/checkExecution/main.c	Mon Nov 30 02:00:28 2009 +1100
@@ -310,3 +310,5 @@ int interpretResponse( SoapCtx* response
 	printf( "Regresstor: Successfully submited check.\n" );
 	return 1;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Regresstor/ClientPrograms/endRun/main.c
--- a/Regresstor/ClientPrograms/endRun/main.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Regresstor/ClientPrograms/endRun/main.c	Mon Nov 30 02:00:28 2009 +1100
@@ -243,3 +243,5 @@ int interpretResponse( SoapCtx* response
 	printf( "Regresstor: Successfully end run.\n" );
 	return 1;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Regresstor/ClientPrograms/startRun/main.c
--- a/Regresstor/ClientPrograms/startRun/main.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Regresstor/ClientPrograms/startRun/main.c	Mon Nov 30 02:00:28 2009 +1100
@@ -257,3 +257,5 @@ int interpretResponse( SoapCtx* response
 	printf( "Regresstor: Successfully begin run.\n" );
 	return 1;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Regresstor/ClientPrograms/submitBuild/main.c
--- a/Regresstor/ClientPrograms/submitBuild/main.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Regresstor/ClientPrograms/submitBuild/main.c	Mon Nov 30 02:00:28 2009 +1100
@@ -339,3 +339,5 @@ int interpretResponse( SoapCtx* response
 	printf( "Regresstor: Successfully submited build.\n" );
 	return 1;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Regresstor/libRegresstor/src/FailedSubTest.c
--- a/Regresstor/libRegresstor/src/FailedSubTest.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Regresstor/libRegresstor/src/FailedSubTest.c	Mon Nov 30 02:00:28 2009 +1100
@@ -20,3 +20,5 @@ void FailedSubTest_Delete( FailedSubTest
 		free( self );
 	}
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Regresstor/libRegresstor/src/RegressionTest.c
--- a/Regresstor/libRegresstor/src/RegressionTest.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Regresstor/libRegresstor/src/RegressionTest.c	Mon Nov 30 02:00:28 2009 +1100
@@ -152,3 +152,5 @@ void RegressionTest_CrashHandler( int si
 	exit( 1 );
 }
 
+
+
diff -r 49bcf68b0315 -r 94417947cddc Regresstor/libRegresstor/src/UnitTest.c
--- a/Regresstor/libRegresstor/src/UnitTest.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Regresstor/libRegresstor/src/UnitTest.c	Mon Nov 30 02:00:28 2009 +1100
@@ -56,3 +56,5 @@ void UnitTest_Add_FailedSubTest( UnitTes
 	self->subTestCount++;
 }
 
+
+
diff -r 49bcf68b0315 -r 94417947cddc Utils/src/Progress.c
--- a/Utils/src/Progress.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Utils/src/Progress.c	Mon Nov 30 02:00:28 2009 +1100
@@ -41,23 +41,24 @@ const Type Progress_Type = "Progress";
 
 
 Progress* Progress_New() {
-   return _Progress_New( sizeof(Progress), Progress_Type,
-			 _Progress_Delete,
-			 _Progress_Print,
-			 NULL );
+	/* Variables set in this function */
+	SizeT                      _sizeOfSelf = sizeof(Progress);
+	Type                              type = Progress_Type;
+	Stg_Class_DeleteFunction*      _delete = _Progress_Delete;
+	Stg_Class_PrintFunction*        _print = _Progress_Print;
+	Stg_Class_CopyFunction*          _copy = NULL;
+
+   return _Progress_New(  PROGRESS_PASSARGS  );
 }
 
 
-Progress* _Progress_New( SizeT sizeOfSelf, Type type,
-			 Stg_Class_DeleteFunction* delete,
-			 Stg_Class_PrintFunction* print, 
-			 Stg_Class_CopyFunction* copy )
+Progress* _Progress_New(  PROGRESS_DEFARGS  )
 {
    Progress* self;
 
    /* Allocate memory */
-   assert( sizeOfSelf >= sizeof(Progress) );
-   self = (Progress*)_Stg_Class_New( sizeOfSelf, type, delete, print, copy );
+   assert( _sizeOfSelf >= sizeof(Progress) );
+   self = (Progress*)_Stg_Class_New(  STG_CLASS_PASSARGS  );
    _Progress_Init( self );
 
    return self;
@@ -206,3 +207,5 @@ Bool Progress_CalcStatus( Progress* self
 
    return (self->perc != oldPerc || self->nBars != oldnBars);
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc Utils/src/Progress.h
--- a/Utils/src/Progress.h	Wed Nov 25 11:04:01 2009 +1100
+++ b/Utils/src/Progress.h	Mon Nov 30 02:00:28 2009 +1100
@@ -45,11 +45,19 @@
    int nSpaces;
 struct Progress { __Progress };
 
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define PROGRESS_DEFARGS \
+                STG_CLASS_DEFARGS
+
+	#define PROGRESS_PASSARGS \
+                STG_CLASS_PASSARGS
+
 Progress* Progress_New();
-Progress* _Progress_New( SizeT sizeOfSelf, Type type,
-			 Stg_Class_DeleteFunction* delete,
-			 Stg_Class_PrintFunction* print, 
-			 Stg_Class_CopyFunction* copy );
+Progress* _Progress_New(  PROGRESS_DEFARGS  );
 void _Progress_Init( void* self );
 void _Progress_Delete( void* self );
 void _Progress_Print( void* self, Stream* stream );
@@ -63,3 +71,4 @@ void Progress_Increment( void* self );
 void Progress_Increment( void* self );
 
 #endif /* __StGermain_Utils_Progress_h__ */
+
diff -r 49bcf68b0315 -r 94417947cddc Utils/tests/ProgressSuite.c
--- a/Utils/tests/ProgressSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/Utils/tests/ProgressSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -76,3 +76,5 @@ void ProgressSuite( pcu_suite_t* suite )
    pcu_suite_addTest( suite, ProgressSuite_TestSetPrefix );
    pcu_suite_addTest( suite, ProgressSuite_TestSetRange );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc compatibility/mpipython/main.c
--- a/compatibility/mpipython/main.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/compatibility/mpipython/main.c	Mon Nov 30 02:00:28 2009 +1100
@@ -49,3 +49,5 @@ int main( int argc, char **argv ) {
 
 	return status;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc libStGermain/Python/Bindings/General/bindings.c
--- a/libStGermain/Python/Bindings/General/bindings.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/libStGermain/Python/Bindings/General/bindings.c	Mon Nov 30 02:00:28 2009 +1100
@@ -63,3 +63,5 @@ PyObject* General_Python_Initialise( PyO
 	result = StGermain_Init( &argc, &argv );
 	return Py_BuildValue("i", result);
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc libStGermain/Python/Bindings/General/init.c
--- a/libStGermain/Python/Bindings/General/init.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/libStGermain/Python/Bindings/General/init.c	Mon Nov 30 02:00:28 2009 +1100
@@ -41,3 +41,5 @@ void initGeneral() {
 	}
 	return;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc libStGermain/Python/Bindings/General/misc.c
--- a/libStGermain/Python/Bindings/General/misc.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/libStGermain/Python/Bindings/General/misc.c	Mon Nov 30 02:00:28 2009 +1100
@@ -38,3 +38,5 @@ PyObject* General_Python_copyright( PyOb
 PyObject* General_Python_copyright( PyObject* self, PyObject* args ) {
 	return Py_BuildValue( "s", "StGermain.Bindings.General Python module: Copyright (c) 2003 Victorian Partnership for Advanced Computing (VPAC) Ltd. Australia." );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc libStGermain/Python/Bindings/MPI/bindings.c
--- a/libStGermain/Python/Bindings/MPI/bindings.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/libStGermain/Python/Bindings/MPI/bindings.c	Mon Nov 30 02:00:28 2009 +1100
@@ -89,3 +89,5 @@ PyObject* MPI_Python_Comm_rank( PyObject
 	/* Return */
 	return Py_BuildValue( "i", rank );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc libStGermain/Python/Bindings/MPI/init.c
--- a/libStGermain/Python/Bindings/MPI/init.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/libStGermain/Python/Bindings/MPI/init.c	Mon Nov 30 02:00:28 2009 +1100
@@ -42,3 +42,5 @@ void initMPI() {
 
 	return;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc libStGermain/Python/Bindings/MPI/misc.c
--- a/libStGermain/Python/Bindings/MPI/misc.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/libStGermain/Python/Bindings/MPI/misc.c	Mon Nov 30 02:00:28 2009 +1100
@@ -38,3 +38,5 @@ PyObject* MPI_Python_copyright( PyObject
 PyObject* MPI_Python_copyright( PyObject* self, PyObject* args ) {
     return Py_BuildValue( "s", "StGermain.Bindings.MPI Python module: Copyright (c) 2003 Victorian Partnership for Advanced Computing (VPAC) Ltd. Australia." );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc libStGermain/dynamic/dummy.c
--- a/libStGermain/dynamic/dummy.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/libStGermain/dynamic/dummy.c	Mon Nov 30 02:00:28 2009 +1100
@@ -33,3 +33,5 @@
 										/* dummy function so that Tru64 CC doesn't complain about doing nothing */
 const int StGermain_Dummy = 0;
 
+
+
diff -r 49bcf68b0315 -r 94417947cddc libStGermain/src/Finalise.c
--- a/libStGermain/src/Finalise.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/libStGermain/src/Finalise.c	Mon Nov 30 02:00:28 2009 +1100
@@ -63,3 +63,5 @@ Bool StGermain_Finalise( void ) {
 
 	return True;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc libStGermain/src/Init.c
--- a/libStGermain/src/Init.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/libStGermain/src/Init.c	Mon Nov 30 02:00:28 2009 +1100
@@ -76,3 +76,5 @@ Bool StGermain_Init( int* argc, char** a
 	
 	return True;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc libStGermain/src/main.c
--- a/libStGermain/src/main.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/libStGermain/src/main.c	Mon Nov 30 02:00:28 2009 +1100
@@ -167,3 +167,5 @@ void stgImportToolbox( Dictionary* dicti
 	
 	Dictionary_Entry_Value_AddElement( dev, Dictionary_Entry_Value_FromString( toolboxName ) );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc libStGermain/static/dummy.c
--- a/libStGermain/static/dummy.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/libStGermain/static/dummy.c	Mon Nov 30 02:00:28 2009 +1100
@@ -33,3 +33,5 @@
 										/* dummy function so that Tru64 CC doesn't complain about doing nothing */
 const int StGermain_Dummy = 0;
 
+
+
diff -r 49bcf68b0315 -r 94417947cddc libStGermain/tests/LibStGermainSuite.c
--- a/libStGermain/tests/LibStGermainSuite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/libStGermain/tests/LibStGermainSuite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -60,3 +60,5 @@ void LibStGermainSuite( pcu_suite_t* sui
    pcu_suite_setFixtures( suite, LibStGermainSuite_Setup, LibStGermainSuite_Teardown );
    pcu_suite_addTest( suite, LibStGermainSuite_TestXMLLibraryPath );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc pcu/src/checks.c
--- a/pcu/src/checks.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/pcu/src/checks.c	Mon Nov 30 02:00:28 2009 +1100
@@ -98,3 +98,5 @@ void _pcu_check_fileEq( const char* cons
    fclose(testFile1);
    fclose(testFile2);
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc pcu/src/filename.c
--- a/pcu/src/filename.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/pcu/src/filename.c	Mon Nov 30 02:00:28 2009 +1100
@@ -63,3 +63,5 @@ void _pcu_filename_input( const char* co
 
    sprintf( fullPathFileName, "./%s/%s/%s", moduleDir, fileType, inputFileName );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc pcu/src/pcuassert.c
--- a/pcu/src/pcuassert.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/pcu/src/pcuassert.c	Mon Nov 30 02:00:28 2009 +1100
@@ -4,3 +4,5 @@ int pcu_jump_ready = 0;
 int pcu_jump_ready = 0;
 jmp_buf pcu_jump_env;
 char* pcu_assert_cur = NULL;
+
+
diff -r 49bcf68b0315 -r 94417947cddc pcu/src/runner.c
--- a/pcu/src/runner.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/pcu/src/runner.c	Mon Nov 30 02:00:28 2009 +1100
@@ -161,3 +161,5 @@ void pcu_runner_searchHierarchy( pcu_sui
       pcu_suites = suite;
    pcu_nsuites++;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc pcu/src/source.c
--- a/pcu/src/source.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/pcu/src/source.c	Mon Nov 30 02:00:28 2009 +1100
@@ -183,3 +183,5 @@ void pcu_source_clear( pcu_source_t* src
       src->msg = NULL;
    }
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc pcu/src/suite.c
--- a/pcu/src/suite.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/pcu/src/suite.c	Mon Nov 30 02:00:28 2009 +1100
@@ -210,3 +210,5 @@ void pcu_suite_clear( pcu_suite_t* suite
    }
 }
 
+
+
diff -r 49bcf68b0315 -r 94417947cddc pcu/src/test.c
--- a/pcu/src/test.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/pcu/src/test.c	Mon Nov 30 02:00:28 2009 +1100
@@ -186,3 +186,5 @@ void pcu_test_gathersources( pcu_test_t*
       }
    }
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc pcu/src/textoutput.c
--- a/pcu/src/textoutput.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/pcu/src/textoutput.c	Mon Nov 30 02:00:28 2009 +1100
@@ -147,3 +147,5 @@ void printsources( pcu_listener_t* lsnr,
    if( nfails )
      printf( "\n" );
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc pcu/src/utils.c
--- a/pcu/src/utils.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/pcu/src/utils.c	Mon Nov 30 02:00:28 2009 +1100
@@ -32,3 +32,5 @@ char* pcu_strdup( const char* str ) {
 char* pcu_strdup( const char* str ) {
    return str ? pcu_memdup( str, strlen( str ) + 1 ) : NULL;
 }
+
+
diff -r 49bcf68b0315 -r 94417947cddc src/main.c
--- a/src/main.c	Wed Nov 25 11:04:01 2009 +1100
+++ b/src/main.c	Mon Nov 30 02:00:28 2009 +1100
@@ -299,3 +299,5 @@ int main( int argc, char* argv[] ) {
 	
 	return 0; /* success */
 }
+
+



More information about the CIG-COMMITS mailing list