[cig-commits] r6197 - in long/3D/Gale/trunk/src/StGermain: . Base/Automation/src Base/Container/src Base/Container/tests Base/Context/src Base/Extensibility/distributedtests Base/Extensibility/src Base/Foundation/src Base/IO/src Discretisation/Swarm/src Discretisation/Swarm/tests Discretisation/Utils/tests Discretisation/Utils/tests/output FD/tests FD/tests/output libStGermain/src libStGermain/tests

walter at geodynamics.org walter at geodynamics.org
Thu Mar 8 11:38:32 PST 2007


Author: walter
Date: 2007-03-08 11:28:21 -0800 (Thu, 08 Mar 2007)
New Revision: 6197

Added:
   long/3D/Gale/trunk/src/StGermain/FD/tests/output/
Modified:
   long/3D/Gale/trunk/src/StGermain/
   long/3D/Gale/trunk/src/StGermain/Base/Automation/src/CallGraph.c
   long/3D/Gale/trunk/src/StGermain/Base/Automation/src/Variable_Register.c
   long/3D/Gale/trunk/src/StGermain/Base/Automation/src/Variable_Register.h
   long/3D/Gale/trunk/src/StGermain/Base/Container/src/MemoryPool.c
   long/3D/Gale/trunk/src/StGermain/Base/Container/tests/testLinkedList.c
   long/3D/Gale/trunk/src/StGermain/Base/Container/tests/testLinkedListIterator.c
   long/3D/Gale/trunk/src/StGermain/Base/Container/tests/testMap.c
   long/3D/Gale/trunk/src/StGermain/Base/Container/tests/testSet.c
   long/3D/Gale/trunk/src/StGermain/Base/Context/src/AbstractContext.c
   long/3D/Gale/trunk/src/StGermain/Base/Extensibility/distributedtests/MockContext.c
   long/3D/Gale/trunk/src/StGermain/Base/Extensibility/src/PluginLoader.c
   long/3D/Gale/trunk/src/StGermain/Base/Extensibility/src/PluginsManager.c
   long/3D/Gale/trunk/src/StGermain/Base/Extensibility/src/PluginsManager.h
   long/3D/Gale/trunk/src/StGermain/Base/Foundation/src/Memory.c
   long/3D/Gale/trunk/src/StGermain/Base/IO/src/XML_IO_Handler.c
   long/3D/Gale/trunk/src/StGermain/Base/IO/src/XML_IO_Handler.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/SwarmOutput.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/SwarmOutput.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testSwarmParticleAdvection.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/output/
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testAllNodesVC.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCompositeVC-dictionary.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCompositeVC.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCornerVC.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testEmbeddedSurface.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testTimeIntegration.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testWallVC.c
   long/3D/Gale/trunk/src/StGermain/FD/tests/testMeshContext0.c
   long/3D/Gale/trunk/src/StGermain/libStGermain/src/Finalise.c
   long/3D/Gale/trunk/src/StGermain/libStGermain/src/Init.c
   long/3D/Gale/trunk/src/StGermain/libStGermain/tests/testLibStGermain.0of1.expected
   long/3D/Gale/trunk/src/StGermain/libStGermain/tests/testLibStGermain.c
Log:
 r3363 at earth (orig r4022):  LukeHodkinson | 2007-03-06 14:17:54 -0800
 Keeping the branch up to date with the trunk.
 
 



Property changes on: long/3D/Gale/trunk/src/StGermain
___________________________________________________________________
Name: svk:merge
   - 1ef209d2-b310-0410-a72d-e20c9eb0015c:/cig:3196
afb6c753-b9d0-0310-b4e7-dbd8d91cdd35:/branches/decomp3d/StGermain:4021
afb6c753-b9d0-0310-b4e7-dbd8d91cdd35:/trunk/StGermain:3899
   + 1ef209d2-b310-0410-a72d-e20c9eb0015c:/cig:3196
afb6c753-b9d0-0310-b4e7-dbd8d91cdd35:/branches/decomp3d/StGermain:4022
afb6c753-b9d0-0310-b4e7-dbd8d91cdd35:/trunk/StGermain:3899

Modified: long/3D/Gale/trunk/src/StGermain/Base/Automation/src/CallGraph.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Automation/src/CallGraph.c	2007-03-08 19:29:30 UTC (rev 6196)
+++ long/3D/Gale/trunk/src/StGermain/Base/Automation/src/CallGraph.c	2007-03-08 19:28:21 UTC (rev 6197)
@@ -313,7 +313,7 @@
 
 			
 			newSize = self->_tableSize + _Stg_CallGraph_Table_Delta;
-			newTable = Memory_Alloc_Array( _Stg_CallGraph_Entry, newSize, _Stg_CallGrap_Entry_Type );
+			newTable = Memory_Alloc_Array( _Stg_CallGraph_Entry, newSize, _Stg_CallGraph_Entry_Type );
 			/* safe to do, we want to copy ptr values */
 			memcpy( newTable, self->table, self->_tableSize * sizeof(_Stg_CallGraph_Entry) ); 
 			Memory_Free( self->table );

Modified: long/3D/Gale/trunk/src/StGermain/Base/Automation/src/Variable_Register.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Automation/src/Variable_Register.c	2007-03-08 19:29:30 UTC (rev 6196)
+++ long/3D/Gale/trunk/src/StGermain/Base/Automation/src/Variable_Register.c	2007-03-08 19:28:21 UTC (rev 6197)
@@ -107,6 +107,8 @@
 	self->_delta = 8;
 	self->_variable = Memory_Alloc_Array( Variable*, self->_size, "Variable_Register->_variable" );
 	memset(self->_variable, 0, sizeof(Variable*)*self->_size);
+
+	self->errorStream = Journal_Register( ErrorStream_Type, self->type );
 }
 
 
@@ -256,10 +258,9 @@
 
 Variable* Variable_Register_GetByIndex(void* variable_Register, Variable_Index varIndex ) {
 	Variable_Register*	self = (Variable_Register*)variable_Register;
+
 	#if DEBUG
-	Stream*			error = Journal_Register( ErrorStream_Type, self->type );
-	
-	Journal_DFirewall(  (varIndex < self->count), error,
+	Journal_DFirewall(  (varIndex < self->count), self->errorStream,
 		"Error: Given variable index %d not between 0 and variable count %d.\n",
 		varIndex, self->count );
 	#endif

Modified: long/3D/Gale/trunk/src/StGermain/Base/Automation/src/Variable_Register.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Automation/src/Variable_Register.h	2007-03-08 19:29:30 UTC (rev 6196)
+++ long/3D/Gale/trunk/src/StGermain/Base/Automation/src/Variable_Register.h	2007-03-08 19:28:21 UTC (rev 6197)
@@ -61,6 +61,7 @@
 		SizeT					_size; \
 		SizeT					_delta; \
 		Variable**				_variable; \
+		Stream*                                 errorStream; 
 		
 	struct _Variable_Register { __Variable_Register };
 	

Modified: long/3D/Gale/trunk/src/StGermain/Base/Container/src/MemoryPool.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Container/src/MemoryPool.c	2007-03-08 19:29:30 UTC (rev 6196)
+++ long/3D/Gale/trunk/src/StGermain/Base/Container/src/MemoryPool.c	2007-03-08 19:28:21 UTC (rev 6197)
@@ -97,10 +97,10 @@
 	assert( self );
 	_Stg_Class_Init ((Stg_Class*) self);
 	
-	self->elements = Memory_Alloc_Bytes_Unnamed( self->elementSize * self->numElements, char );
+	self->elements = Memory_Alloc_Bytes_Unnamed( self->elementSize * self->numElements, "char" );
 	memset( self->elements, 0, self->elementSize * self->numElements );
 
-	self->pool = Memory_Alloc_Bytes_Unnamed( sizeof( char* ) * self->numElements, char* );
+	self->pool = Memory_Alloc_Bytes_Unnamed( sizeof( char* ) * self->numElements, "char*" );
 	memset( self->pool, 0, sizeof(char*) * self->numElements );
 	
 	for( i=0; i<self->numElements; i++ ){

Modified: long/3D/Gale/trunk/src/StGermain/Base/Container/tests/testLinkedList.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Container/tests/testLinkedList.c	2007-03-08 19:29:30 UTC (rev 6196)
+++ long/3D/Gale/trunk/src/StGermain/Base/Container/tests/testLinkedList.c	2007-03-08 19:28:21 UTC (rev 6197)
@@ -75,7 +75,7 @@
 
 void dataCopyFunction( void **nodeData, void *newData, SizeT dataSize)
 {
-	*nodeData = Memory_Alloc_Bytes_Unnamed(dataSize, char);
+	*nodeData = Memory_Alloc_Bytes_Unnamed(dataSize, "char");
 	memset(*nodeData, 0, dataSize);
 
 	memcpy(*nodeData, newData, dataSize);

Modified: long/3D/Gale/trunk/src/StGermain/Base/Container/tests/testLinkedListIterator.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Container/tests/testLinkedListIterator.c	2007-03-08 19:29:30 UTC (rev 6196)
+++ long/3D/Gale/trunk/src/StGermain/Base/Container/tests/testLinkedListIterator.c	2007-03-08 19:28:21 UTC (rev 6197)
@@ -74,7 +74,7 @@
 
 void dataCopyFunction( void **nodeData, void *newData, SizeT dataSize)
 {
-	*nodeData = Memory_Alloc_Bytes_Unnamed(dataSize, char);
+	*nodeData = Memory_Alloc_Bytes_Unnamed(dataSize, "char");
 	memset(*nodeData, 0, dataSize);
 
 	memcpy(*nodeData, newData, dataSize);

Modified: long/3D/Gale/trunk/src/StGermain/Base/Container/tests/testMap.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Container/tests/testMap.c	2007-03-08 19:29:30 UTC (rev 6196)
+++ long/3D/Gale/trunk/src/StGermain/Base/Container/tests/testMap.c	2007-03-08 19:28:21 UTC (rev 6197)
@@ -45,11 +45,11 @@
 
 
 void mapCopyFunc( void** newData, void* data, SizeT size ) {
-	*newData = Memory_Alloc_Bytes_Unnamed( size , char);
+	*newData = Memory_Alloc_Bytes_Unnamed( size , "char");
 	/* TODO: convert to journal */
 	assert( *newData );
 
-	(*(MapTuple**)newData)->keyData = Memory_Alloc_Bytes_Unnamed( strlen( ((MapTuple*)data)->keyData ) + 1 , char);
+	(*(MapTuple**)newData)->keyData = Memory_Alloc_Bytes_Unnamed( strlen( ((MapTuple*)data)->keyData ) + 1 , "char");
 	strcpy( (*(MapTuple**)newData)->keyData, ((MapTuple*)data)->keyData );
 
 	(*(MapTuple**)newData)->valueData = Memory_Alloc( int, "MapTuple_newData->valueData" );

Modified: long/3D/Gale/trunk/src/StGermain/Base/Container/tests/testSet.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Container/tests/testSet.c	2007-03-08 19:29:30 UTC (rev 6196)
+++ long/3D/Gale/trunk/src/StGermain/Base/Container/tests/testSet.c	2007-03-08 19:28:21 UTC (rev 6197)
@@ -53,7 +53,7 @@
 
 
 void copyFunc( void** newData, void* data, SizeT size ) {
-	*newData = Memory_Alloc_Bytes_Unnamed( size, char );
+	*newData = Memory_Alloc_Bytes_Unnamed( size, "char" );
 	/* TODO: convert to journal */
 	assert( *newData );
 

Modified: long/3D/Gale/trunk/src/StGermain/Base/Context/src/AbstractContext.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Context/src/AbstractContext.c	2007-03-08 19:29:30 UTC (rev 6196)
+++ long/3D/Gale/trunk/src/StGermain/Base/Context/src/AbstractContext.c	2007-03-08 19:28:21 UTC (rev 6197)
@@ -179,7 +179,6 @@
 	self->register_Register = Stg_ObjectList_New();
 
 	self->plugins = PluginsManager_New( self->dictionary );
-	PluginsManager_AddDirectory( self->plugins, "StGermain", LIB_DIR );
 	
 	/* Main input parameters */
 	self->frequentOutputEvery = Dictionary_Entry_Value_AsUnsignedInt( 

Modified: long/3D/Gale/trunk/src/StGermain/Base/Extensibility/distributedtests/MockContext.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Extensibility/distributedtests/MockContext.c	2007-03-08 19:29:30 UTC (rev 6196)
+++ long/3D/Gale/trunk/src/StGermain/Base/Extensibility/distributedtests/MockContext.c	2007-03-08 19:28:21 UTC (rev 6197)
@@ -80,7 +80,7 @@
 		NON_GLOBAL );
 
 	self->plugins = PluginsManager_New( dictionary );
-	PluginsManager_AddDirectory( self->plugins, "StGermain", LIB_DIR );
+	PluginsManager_AddDirectory( "StGermain", LIB_DIR );
 	self->ep = EntryPoint_New( "TestEP", EntryPoint_VoidPtr_CastType );
 	self->em = ExtensionManager_New_OfExistingObject( "Context", self );
 
@@ -96,4 +96,3 @@
 	
 	_Stg_Class_Delete( self );
 }
-

Modified: long/3D/Gale/trunk/src/StGermain/Base/Extensibility/src/PluginLoader.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Extensibility/src/PluginLoader.c	2007-03-08 19:29:30 UTC (rev 6196)
+++ long/3D/Gale/trunk/src/StGermain/Base/Extensibility/src/PluginLoader.c	2007-03-08 19:28:21 UTC (rev 6197)
@@ -97,6 +97,7 @@
 	char*				fullPathName = NULL;
 	int				fullPathLength = 0;
 	int				length;
+	Index           dir_i;
 
 	Stream*				stream;
 	Stream*				debug;
@@ -113,32 +114,34 @@
 	/* Try the plugin name by itself (allows LD_LIBRARY_PATH) to take precendence */
 	fileName = Memory_Alloc_Array( char, strlen(pluginName) + strlen(PLUGININFO_PLUGIN_SUFFIX) + strlen(MODULE_EXT) + 1, "filename" );
 	sprintf( fileName, "%s%s%s", pluginName, PLUGININFO_PLUGIN_SUFFIX, MODULE_EXT );
+		
 	dllPtr = dlopen( fileName, RTLD_LAZY | RTLD_GLOBAL );
 
 	/* If that fails, try prepending directories from the list of registered directories */
-	if ( dllPtr == NULL ) {
-		Index i;
-
-		/* First print out a error message to debug why it didn't work */
-		Journal_Printf( debug, "dlerror(): %s\n", dlerror() );
-		
-		for ( i = 0; i < directories->count; ++i ) {
-			length = strlen(Stg_ObjectList_ObjectAt( directories, i )) + 1 + strlen(fileName) + 1;
+	
+	if ( dllPtr != NULL ) {
+		Journal_Printf( debug, "found in default load path.\n" );
+	}
+	else {
+		for ( dir_i = 0; dir_i < directories->count; ++dir_i ) {
+			length = strlen(Stg_ObjectList_ObjectAt( directories, dir_i )) + 1 + strlen(fileName) + 1;
 			if ( fullPathLength < length ) {
 				fullPathLength = length;
 				fullPathName = Memory_Realloc_Array( fullPathName, char, fullPathLength );
 			}
-			PathJoin( fullPathName, 2, Stg_ObjectList_ObjectAt( directories, i ), fileName );
-			Journal_Printf( debug, "Trying to find plugin: \"%s\"... ", pluginName );
+			PathJoin( fullPathName, 2, Stg_ObjectList_ObjectAt( directories, dir_i ), fileName );
 			dllPtr = dlopen( fullPathName, RTLD_LAZY | RTLD_GLOBAL );
 			if ( dllPtr ) {
+				Journal_Printf( debug, "found in load path %s.\n", fullPathName );
 				break;
 			}
-			else {
-				Journal_Printf( debug, "dlerror(): %s\n", dlerror() );
-			}
 		}
+		/* If it failed alltogether, print a error message. */
+		if ( dir_i == directories->count) {
+			Journal_Printf( debug, "failed - dlerror(): %s\n", dlerror() );
+		}
 	}
+		
 	Memory_Free( fileName );
 	if ( fullPathName ) {
 		Memory_Free( fullPathName );

Modified: long/3D/Gale/trunk/src/StGermain/Base/Extensibility/src/PluginsManager.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Extensibility/src/PluginsManager.c	2007-03-08 19:29:30 UTC (rev 6196)
+++ long/3D/Gale/trunk/src/StGermain/Base/Extensibility/src/PluginsManager.c	2007-03-08 19:28:21 UTC (rev 6197)
@@ -67,6 +67,8 @@
 
 const char* Codelet_GetMetadata();
 
+/* Define memory for global pointer to pluginDirectories */
+Stg_ObjectList*  pluginDirectories = NULL;	
 
 PluginsManager* PluginsManager_New( Dictionary* dictionary ) {
 	return _PluginsManager_New( 
@@ -129,7 +131,6 @@
 
 	self->plugins = Stg_ObjectList_New();
 	self->codelets = Stg_ObjectList_New();
-	self->directories = Stg_ObjectList_New();
 
 	if ( self->dictionary ) {
 		Dictionary_Entry_Value* localLibDirList = Dictionary_Get( self->dictionary, "LD_LIBRARY_PATH" );
@@ -139,7 +140,7 @@
 			count = Dictionary_Entry_Value_GetCount( localLibDirList );
 			for ( i = 0; i < count; ++i ) {
 				dir = Dictionary_Entry_Value_AsString( Dictionary_Entry_Value_GetElement( localLibDirList, i ) );
-				PluginsManager_AddDirectory( self, "FromDictionary", dir );
+				PluginsManager_AddDirectory( "FromDictionary", dir );
 			}
 		}
 	}
@@ -166,8 +167,6 @@
 	Stg_Class_Delete( self->codelets );
 	Stg_ObjectList_DeleteAllObjects( self->plugins );
 	Stg_Class_Delete( self->plugins );
-	Stg_ObjectList_DeleteAllObjects( self->directories );
-	Stg_Class_Delete( self->directories );
 	
 	/* Stg_Class_Delete parent */
 	_Stg_Class_Delete( self );
@@ -183,11 +182,11 @@
 	/* Print parent */
 	_Stg_Class_Print( self, stream );
 
-	if ( self->directories->count > 0 ) {
+	if ( pluginDirectories->count > 0 ) {
 		Journal_Printf( stream, "Search Path:\n" );
 		Stream_Indent( stream );
-		for ( i = 0; i < self->directories->count; ++i ) {
-			Journal_Printf( stream, "(path) %s\n", Stg_ObjectList_ObjectAt( self->directories, i ) );
+		for ( i = 0; i < pluginDirectories->count; ++i ) {
+			Journal_Printf( stream, "(path) %s\n", Stg_ObjectList_ObjectAt( pluginDirectories, i ) );
 		}
 		Stream_UnIndent( stream );
 	}
@@ -238,10 +237,9 @@
 #ifdef SINGLE_EXE
 	SingleRegister( context );
 #else
-
 #ifndef NOSHARED
-	for ( dir_I = 0; dir_I < self->directories->count; ++dir_I ) {
-		newEnvPathLength += strlen( Stg_ObjectList_ObjectAt( self->directories, dir_I ) );
+	for ( dir_I = 0; dir_I < pluginDirectories->count; ++dir_I ) {
+		newEnvPathLength += strlen( Stg_ObjectList_ObjectAt( pluginDirectories, dir_I ) );
 		/* Add one make space for the ':' inbetween the directories */
 		newEnvPathLength += 1; 
 	}
@@ -256,8 +254,8 @@
 		
 		newEnvPath = Memory_Alloc_Array( char, newEnvPathLength, "LD_LIBRARY_PATH" );
 		newEnvPath[0] = '\0';
-		for ( dir_I = 0; dir_I < self->directories->count; ++dir_I ) {
-			strcat( newEnvPath, Stg_ObjectList_ObjectAt( self->directories, dir_I ) );
+		for ( dir_I = 0; dir_I < pluginDirectories->count; ++dir_I ) {
+			strcat( newEnvPath, Stg_ObjectList_ObjectAt( pluginDirectories, dir_I ) );
 			strcat( newEnvPath, ":" );
 		}
 		if ( curEnvPath ) {
@@ -331,7 +329,7 @@
 	}
 
 	/* Try local search first */
-	thePlugin = PluginLoader_NewLocal( pluginName, self->directories, nPlugins, pluginNames, pluginLst );
+	thePlugin = PluginLoader_NewLocal( pluginName, pluginDirectories, nPlugins, pluginNames, pluginLst );
 
 	/* remote search? */
 
@@ -382,21 +380,25 @@
 	return True;
 }
 
-void PluginsManager_AddDirectory( void* plugins, Name name, char* directory ) {
-	PluginsManager*			self = (PluginsManager*)plugins;
+void PluginsManager_AddDirectory( Name name, char* directory ) {
 	Bool				found;
 	Index				i;
 	
+	/* Check if global list is initialised */
+	if (pluginDirectories == NULL) {
+		pluginDirectories = Stg_ObjectList_New();
+	}
+	
 	/* Check that the directory isn't already added */
 	found = False;
-	for( i =  0; i < self->directories->count; i++ ){
-		if( strcmp( directory, Stg_ObjectList_ObjectAt( self->directories, i ) ) == 0 ) {
+	for( i =  0; i < pluginDirectories->count; i++ ){
+		if( strcmp( directory, Stg_ObjectList_ObjectAt( pluginDirectories, i ) ) == 0 ) {
 			found = True;
 		}
 	}
 	
 	if( !found ) {
-		Stg_ObjectList_PointerAppend( self->directories, StG_Strdup( directory ), name, 0, 0, 0 ); 
+		Stg_ObjectList_PointerAppend( pluginDirectories, StG_Strdup( directory ), name, 0, 0, 0 ); 
 	}
 }
 

Modified: long/3D/Gale/trunk/src/StGermain/Base/Extensibility/src/PluginsManager.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Extensibility/src/PluginsManager.h	2007-03-08 19:29:30 UTC (rev 6196)
+++ long/3D/Gale/trunk/src/StGermain/Base/Extensibility/src/PluginsManager.h	2007-03-08 19:28:21 UTC (rev 6197)
@@ -55,12 +55,13 @@
 		/* Plugins info */ \
 		Dictionary*	dictionary; \
 		Stg_ObjectList* plugins; \
-		Stg_ObjectList* codelets; \
-		Stg_ObjectList*	directories;
+		Stg_ObjectList* codelets; 
 		
 	struct PluginsManager { __PluginsManager };
 	
-	
+    /** Define a global list of plugin directories*/
+     extern Stg_ObjectList*  pluginDirectories;	
+
 	/* Create a new Plugins */
 	PluginsManager* PluginsManager_New( Dictionary* dictionary );
 	
@@ -98,7 +99,7 @@
 
 	/** Add a directory to the list of prefixes it will try if the "dlopen" fails on a plugin. It won't add the same dir
 	    twice. */
-	void PluginsManager_AddDirectory( void* plugins, Name name, char* directory );
+	void PluginsManager_AddDirectory( Name name, char* directory );
 	
 	Index PluginsManager_Submit( 
 			void* plugins, 

Modified: long/3D/Gale/trunk/src/StGermain/Base/Foundation/src/Memory.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Foundation/src/Memory.c	2007-03-08 19:29:30 UTC (rev 6196)
+++ long/3D/Gale/trunk/src/StGermain/Base/Foundation/src/Memory.c	2007-03-08 19:28:21 UTC (rev 6197)
@@ -572,7 +572,7 @@
 		memoryPointer->length.xyz.x = xLength;
 		memoryPointer->length.xyz.y = (Index*) malloc( sizeof(Index) * xLength );
 		if ( memoryPointer->length.xyz.y == NULL ) {
-			Memory_OutOfMemoryError( sizeof(Index) * length );
+			Memory_OutOfMemoryError( sizeof(Index) * xLength );
 		}
 		
 		for ( i = 0; i < xLength; ++i )

Modified: long/3D/Gale/trunk/src/StGermain/Base/IO/src/XML_IO_Handler.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/IO/src/XML_IO_Handler.c	2007-03-08 19:29:30 UTC (rev 6196)
+++ long/3D/Gale/trunk/src/StGermain/Base/IO/src/XML_IO_Handler.c	2007-03-08 19:28:21 UTC (rev 6197)
@@ -25,6 +25,7 @@
 **  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 **~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
 
+#include <mpi.h>
 #include "Base/Foundation/Foundation.h"
 
 #include "types.h"
@@ -49,6 +50,9 @@
 /* textual class name */
 const Type XML_IO_Handler_Type = "XML_IO_Handler";
 
+/** The Xml search path list. */
+Stg_ObjectList* xmlSearchPaths = NULL;
+
 /* keyword strings for nodes and lists */
 static const xmlChar* INCLUDE_TAG = (const xmlChar*) "include";
 static const xmlChar* NAME_ATTR = (const xmlChar*) "name";
@@ -235,6 +239,7 @@
 	/* General and Virtual info should already be set */
 
 	Dictionary_Entry_Value_Type* lookupType;
+	
 
 	/* XML_IO_Handler info */
 	self->nameSpacesList = NULL;
@@ -296,6 +301,9 @@
 	/* search path info */
 	self->searchPathsSize = 0;
 	self->searchPaths = NULL;
+	
+	
+
 }
 
 
@@ -425,6 +433,32 @@
 
 
 /** add a path to the search paths */
+void XML_IO_Handler_AddDirectory( Name name, char* directory ) {
+	Bool				found;
+	Index				dir_i;
+	/* Check if it is a valid path */
+	if ( !directory ) {
+		return;
+	}
+
+	/* Check if dictionary already exists */
+	if(xmlSearchPaths == NULL) {
+		xmlSearchPaths = Stg_ObjectList_New();
+	}
+	
+	/* Add path to global list */
+	found = False;
+	for( dir_i =  0; dir_i < xmlSearchPaths->count; dir_i++ ){
+		if( strcmp( directory, Stg_ObjectList_ObjectAt( xmlSearchPaths, dir_i ) ) == 0 ) {
+			found = True;
+		}
+	}
+	
+	if( !found ) {
+		Stg_ObjectList_PointerAppend( xmlSearchPaths, StG_Strdup( directory ), name, 0, 0, 0 ); 
+	}
+}	
+/** add a path to the search paths */
 void _XML_IO_Handler_AddSearchPath( void* xml_io_handler, char* path ) {
 	XML_IO_Handler*		self = (XML_IO_Handler*)xml_io_handler;
 
@@ -445,14 +479,17 @@
 }
 
 
-#include <mpi.h>
 
+
+
+
 /** Read all parameters from a file implementation. See IO_Handler_ReadAllFromFile(). It will first check if the file
  * exists, and contains valid XML. */
 Bool _XML_IO_Handler_ReadAllFromFile( void* xml_io_handler, const char* filename, Dictionary* dictionary ) {
 	XML_IO_Handler* self = (XML_IO_Handler*) xml_io_handler;
 	xmlNodePtr cur = NULL;
-int rank;	
+	int rank;
+	
 	Journal_DPrintf( Journal_Register( Debug_Type, XML_IO_Handler_Type ), "XML_IO_Handler called to read file %s.\n", filename );
 	
 	assert( self && filename && dictionary );
@@ -463,8 +500,9 @@
 	/* Order of search*/
 	/* 1. Current directory */
 	/* 2. XML, searched paths */
-	/* 3. Environment Variable */
-	/* 4. Default STG_INCLUDE_PATH */
+	/* 3. XML paths from other projects */
+	/* 4. Environment Variable */
+	/* 5. Default STG_INCLUDE_PATH */
 
 	/* 1. Current directory */
 	{
@@ -483,7 +521,17 @@
 	else
 		_XML_IO_Handler_AddSearchPath( self, "./" );
 
-	/* 3. Environment Variable */
+	/* 3. XML paths from other projects */
+	if (xmlSearchPaths != NULL) {
+		int index_I;
+		for (index_I = 0; index_I  < xmlSearchPaths->count; index_I++){
+			_XML_IO_Handler_AddSearchPath( 
+					self, 
+					Stg_ObjectList_ObjectAt( xmlSearchPaths,index_I )
+				); 
+		}
+	}
+	/* 4. Environment Variable */
 	{
 		char* envValue;
 
@@ -503,11 +551,13 @@
 		}
 	}
 
-	/* 4. Default STG_INCLUDE_PATH */
+	/* 5. Default STG_INCLUDE_PATH */
 	#ifdef STG_INCLUDE_PATH
 		_XML_IO_Handler_AddSearchPath( self, STG_INCLUDE_PATH );
 	#endif
 
+
+	
 	/* open the file and check syntax */
 	if ( !(cur = _XML_IO_Handler_OpenCheckFile( self, filename )) ) {
 		return False;

Modified: long/3D/Gale/trunk/src/StGermain/Base/IO/src/XML_IO_Handler.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/IO/src/XML_IO_Handler.h	2007-03-08 19:29:30 UTC (rev 6196)
+++ long/3D/Gale/trunk/src/StGermain/Base/IO/src/XML_IO_Handler.h	2007-03-08 19:28:21 UTC (rev 6197)
@@ -51,6 +51,9 @@
 	/** textual class name */
 	extern const Type XML_IO_Handler_Type;
 	
+	/** The Xml search path list. */
+	extern Stg_ObjectList* xmlSearchPaths;
+	
 	/* additional class function ptr typedefs */
 	typedef Bool (XML_IO_Handler_WriteEntryToFileFunction) ( void* xml_io_handler, const char* filename,
 		Dictionary_Entry_Key name, Dictionary_Entry_Value* value, Dictionary_Entry_Source source );
@@ -163,5 +166,7 @@
 	
 	extern Bool _XML_IO_Handler_WriteEntryToFile( void* xml_io_handler, const char* filename, Dictionary_Entry_Key name,
 		Dictionary_Entry_Value* value, Dictionary_Entry_Source source );
-	
+
+	void XML_IO_Handler_AddDirectory( Name name, char* directory ); 
+
 #endif /* __Base_IO_XML_IO_Handler_h__ */

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/SwarmOutput.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/SwarmOutput.c	2007-03-08 19:29:30 UTC (rev 6196)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/SwarmOutput.c	2007-03-08 19:28:21 UTC (rev 6197)
@@ -376,3 +376,13 @@
 	Journal_Printf( stream, "%s", self->borderString );
 	Journal_Printf( stream, self->doubleFormatString, value );
 }
+
+void SwarmOutput_PrintTuple( void* swarmOutput, Stream* stream, double* value, Index size ) {
+	SwarmOutput*	  self                = (SwarmOutput*)     swarmOutput;
+	Index             count;
+
+	Journal_Printf( stream, "%s", self->borderString );
+	for( count = 0 ; count < size ; count++ ) {
+		Journal_Printf( stream, self->doubleFormatString, value[count] );
+	}
+}

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/SwarmOutput.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/SwarmOutput.h	2007-03-08 19:29:30 UTC (rev 6196)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/SwarmOutput.h	2007-03-08 19:28:21 UTC (rev 6197)
@@ -125,6 +125,7 @@
 	void _SwarmOutput_SetGlobalIndicies( void* swarmOutput, void* data ) ;
 	void SwarmOutput_PrintString( void* swarmOutput, Stream* stream, char* string ) ;
 	void SwarmOutput_PrintDouble( void* swarmOutput, Stream* stream, double value ) ;
+	void SwarmOutput_PrintTuple( void* swarmOutput, Stream* stream, double* value, Index size );
 	#define SwarmOutput_PrintValue( swarmOutput, stream, value )\
 		SwarmOutput_PrintDouble( swarmOutput, stream, (double) ( value ) )
 

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testSwarmParticleAdvection.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testSwarmParticleAdvection.c	2007-03-08 19:29:30 UTC (rev 6196)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testSwarmParticleAdvection.c	2007-03-08 19:28:21 UTC (rev 6197)
@@ -99,6 +99,7 @@
 	Particle*                       currParticle = NULL;
 	Particle_Index                  lParticle_I = 0;
 	Dimension_Index                 dim_I = 0;
+	char*                           directory;
 	
 	/* Initialise MPI, get world info */
 	MPI_Init( &argc, &argv );
@@ -115,6 +116,14 @@
 	DiscretisationSwarm_Init( &argc, &argv );
 	MPI_Barrier( CommWorld ); /* Ensures copyright info always come first in output */
 
+	/* Add the StGermain path to the global xml path dictionary */
+	directory = Memory_Alloc_Array( char, 200, "xmlDirectory" ) ;
+	sprintf(directory, "%s%s", LIB_DIR, "/StGermain" );
+	XML_IO_Handler_AddDirectory( "StGermain", directory  );
+	Memory_Free(directory);
+	/* Add the plugin path to the global plugin list */
+	PluginsManager_AddDirectory( "StGermain", LIB_DIR );
+
 	stream = Journal_Register (Info_Type, "myStream");
 
 	dictionary = Dictionary_New();
@@ -256,4 +265,3 @@
 	Swarm_Register_SaveAllRegisteredSwarms( 
 		Swarm_Register_GetSwarm_Register(), context );
 }
-


Property changes on: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/output
___________________________________________________________________
Name: svn:ignore
   - *dat*

   + *.xml
*dat*


Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testAllNodesVC.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testAllNodesVC.c	2007-03-08 19:29:30 UTC (rev 6196)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testAllNodesVC.c	2007-03-08 19:28:21 UTC (rev 6197)
@@ -124,6 +124,7 @@
 	procToWatch = argc >= 2 ? atoi(argv[1]) : 0;
 	
 	dictionary = Dictionary_New();
+	Dictionary_Add(dictionary, "outputPath", Dictionary_Entry_Value_FromString("./output"));
 	IO_Handler_ReadAllFromFile(io_handler, "data/allVC.xml", dictionary);
 	fflush(stdout);
 	MPI_Barrier(MPI_COMM_WORLD);

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCompositeVC-dictionary.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCompositeVC-dictionary.c	2007-03-08 19:29:30 UTC (rev 6196)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCompositeVC-dictionary.c	2007-03-08 19:28:21 UTC (rev 6197)
@@ -133,6 +133,7 @@
 	procToWatch = argc >= 2 ? atoi(argv[1]) : 0;
 	
 	dictionary = Dictionary_New();
+	Dictionary_Add(dictionary, "outputPath", Dictionary_Entry_Value_FromString("./output"));
 	IO_Handler_ReadAllFromFile(io_handler, "data/compositeVC.xml", dictionary);
 	
 	extensionMgr_Register = ExtensionManager_Register_New();

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCompositeVC.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCompositeVC.c	2007-03-08 19:29:30 UTC (rev 6196)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCompositeVC.c	2007-03-08 19:28:21 UTC (rev 6197)
@@ -138,6 +138,7 @@
 	procToWatch = argc >= 2 ? atoi(argv[1]) : 0;
 	
 	dictionary = Dictionary_New();
+	Dictionary_Add(dictionary, "outputPath", Dictionary_Entry_Value_FromString("./output"));
 	IO_Handler_ReadAllFromFile(io_handler, "data/wallVC.xml", dictionary);
 
 	extensionMgr_Register = ExtensionManager_Register_New();

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCornerVC.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCornerVC.c	2007-03-08 19:29:30 UTC (rev 6196)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCornerVC.c	2007-03-08 19:28:21 UTC (rev 6197)
@@ -148,6 +148,7 @@
 	procToWatch = argc >= 2 ? atoi(argv[1]) : 0;
 	
 	dictionary = Dictionary_New();
+	Dictionary_Add(dictionary, "outputPath", Dictionary_Entry_Value_FromString("./output"));
 	IO_Handler_ReadAllFromFile(io_handler, "data/cornerVC.xml", dictionary);
 	fflush(stdout);
 	MPI_Barrier(MPI_COMM_WORLD);

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testEmbeddedSurface.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testEmbeddedSurface.c	2007-03-08 19:29:30 UTC (rev 6196)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testEmbeddedSurface.c	2007-03-08 19:28:21 UTC (rev 6197)
@@ -91,6 +91,7 @@
 	if( rank == procToWatch ) printf( "Watching rank: %i\n", rank );
 	
 	dictionary = Dictionary_New();
+	Dictionary_Add(dictionary, "outputPath", Dictionary_Entry_Value_FromString("./output"));
 	Dictionary_Add( dictionary, "rank", Dictionary_Entry_Value_FromUnsignedInt( rank ) );
 	Dictionary_Add( dictionary, "numProcessors", Dictionary_Entry_Value_FromUnsignedInt( procCount ) );
 	Dictionary_Add( dictionary, "meshSizeI", Dictionary_Entry_Value_FromUnsignedInt( 2 ) );

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testTimeIntegration.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testTimeIntegration.c	2007-03-08 19:29:30 UTC (rev 6196)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testTimeIntegration.c	2007-03-08 19:28:21 UTC (rev 6197)
@@ -186,6 +186,7 @@
 	/* Create Context */
 	ioHandler = XML_IO_Handler_New();
 	dictionary = Dictionary_New();
+	Dictionary_Add(dictionary, "outputPath", Dictionary_Entry_Value_FromString("./output"));
 	IO_Handler_ReadAllFromCommandLine( ioHandler, argc, argv, dictionary );
 	context = _DiscretisationContext_New( 
 			sizeof(DiscretisationContext), 

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testWallVC.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testWallVC.c	2007-03-08 19:29:30 UTC (rev 6196)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testWallVC.c	2007-03-08 19:28:21 UTC (rev 6197)
@@ -136,6 +136,7 @@
 	procToWatch = argc >= 2 ? atoi(argv[1]) : 0;
 	
 	dictionary = Dictionary_New();
+	Dictionary_Add(dictionary, "outputPath", Dictionary_Entry_Value_FromString("./output"));
 	IO_Handler_ReadAllFromFile(io_handler, "data/wallVC.xml", dictionary);
 	fflush(stdout);
 	MPI_Barrier(MPI_COMM_WORLD);


Property changes on: long/3D/Gale/trunk/src/StGermain/FD/tests/output
___________________________________________________________________
Name: svn:ignore
   + *


Modified: long/3D/Gale/trunk/src/StGermain/FD/tests/testMeshContext0.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/FD/tests/testMeshContext0.c	2007-03-08 19:29:30 UTC (rev 6196)
+++ long/3D/Gale/trunk/src/StGermain/FD/tests/testMeshContext0.c	2007-03-08 19:28:21 UTC (rev 6197)
@@ -119,6 +119,7 @@
 
 	/* Read input */
 	dictionary = Dictionary_New();
+	dictionary->add( dictionary, "outputPath", Dictionary_Entry_Value_FromString( "./output" ) );
 	dictionary->add( dictionary, "meshSizeI", Dictionary_Entry_Value_FromUnsignedInt( 4 ) );
 	dictionary->add( dictionary, "meshSizeJ", Dictionary_Entry_Value_FromUnsignedInt( 3 ) );
 	dictionary->add( dictionary, "meshSizeK", Dictionary_Entry_Value_FromUnsignedInt( 4 ) );

Modified: long/3D/Gale/trunk/src/StGermain/libStGermain/src/Finalise.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/libStGermain/src/Finalise.c	2007-03-08 19:29:30 UTC (rev 6196)
+++ long/3D/Gale/trunk/src/StGermain/libStGermain/src/Finalise.c	2007-03-08 19:28:21 UTC (rev 6197)
@@ -39,6 +39,13 @@
 Bool StGermain_Finalise( void ) {
 	Journal_Printf( Journal_Register( DebugStream_Type, "Context" ), "In: %s\n", __func__ ); /* DO NOT CHANGE OR REMOVE */
 	
+	/*Delete the global objects : xmlSearchPaths and pluginDirectories */
+	Stg_ObjectList_DeleteAllObjects( pluginDirectories );
+	Stg_Class_Delete( pluginDirectories );
+	
+	Stg_ObjectList_DeleteAllObjects(xmlSearchPaths);
+	Stg_Class_Delete( xmlSearchPaths );
+
 	Discretisation_Finalise();
 	Base_Finalise();
 	

Modified: long/3D/Gale/trunk/src/StGermain/libStGermain/src/Init.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/libStGermain/src/Init.c	2007-03-08 19:29:30 UTC (rev 6196)
+++ long/3D/Gale/trunk/src/StGermain/libStGermain/src/Init.c	2007-03-08 19:28:21 UTC (rev 6197)
@@ -37,11 +37,21 @@
 #include <stdio.h>
 
 Bool StGermain_Init( int* argc, char** argv[] ) {
+	char* directory;
 	Base_Init( argc, argv );
 	
 	Journal_Printf( Journal_Register( DebugStream_Type, "Context" ), "In: %s\n", __func__ ); /* DO NOT CHANGE OR REMOVE */
 	
 	Discretisation_Init( argc, argv );
+
+	/* Add the StGermain path to the global xml path dictionary */
+	directory = Memory_Alloc_Array( char, 200, "xmlDirectory" ) ;
+	sprintf(directory, "%s%s", LIB_DIR, "/StGermain" );
+	XML_IO_Handler_AddDirectory( "StGermain", directory  );
+	Memory_Free(directory);
+	/* Add the plugin path to the global plugin list */
+	PluginsManager_AddDirectory( "StGermain", LIB_DIR );
+
 	
 	return True;
 }

Modified: long/3D/Gale/trunk/src/StGermain/libStGermain/tests/testLibStGermain.0of1.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/libStGermain/tests/testLibStGermain.0of1.expected	2007-03-08 19:29:30 UTC (rev 6196)
+++ long/3D/Gale/trunk/src/StGermain/libStGermain/tests/testLibStGermain.0of1.expected	2007-03-08 19:28:21 UTC (rev 6197)
@@ -1 +1,5 @@
+StGermain Framework revision 4012. Copyright (C) 2003-2005 VPAC.
+StGermain Discretisation Library revision 4012. Copyright (C) 2003-2005 VPAC.
 Watching rank: 0
+StGermain XML library Path found.
+ 
\ No newline at end of file

Modified: long/3D/Gale/trunk/src/StGermain/libStGermain/tests/testLibStGermain.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/libStGermain/tests/testLibStGermain.c	2007-03-08 19:29:30 UTC (rev 6196)
+++ long/3D/Gale/trunk/src/StGermain/libStGermain/tests/testLibStGermain.c	2007-03-08 19:28:21 UTC (rev 6197)
@@ -63,8 +63,19 @@
 	else {
 		procToWatch = 0;
 	}
-	if( rank == procToWatch ) printf( "Watching rank: %i\n", rank );
-	
+	if( rank == procToWatch ){ 
+		Stg_Object* testDirectory;
+		printf( "Watching rank: %i\n", rank );
+		/* Testing entries in xmlDictionary */
+		testDirectory = Stg_ObjectList_Get( xmlSearchPaths,"StGermain" );
+		if (testDirectory != NULL) {
+			printf("StGermain XML library Path found.\n ");
+		}
+		else {
+			printf("StGermain XML library Path not found.\n"); 
+		}
+
+	} 
 	StGermain_Finalise();
 	
 	/* Close off MPI */
@@ -72,4 +83,3 @@
 
 	return 0; /* success */
 }
-



More information about the cig-commits mailing list