[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