Skip to content

Commit c689a73

Browse files
committed
Merge pull request #3 from rchristie/fieldml-report-dependencies
Fieldml report dependencies, also fix iteration bug.
2 parents 44a826d + 0dc2a81 commit c689a73

File tree

4 files changed

+22
-11
lines changed

4 files changed

+22
-11
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ IF( ${FIELDML_NAMESPACE_NAME}_INSTALL_CONFIG )
124124
"\nGET_FILENAME_COMPONENT( ${FIELDML_NAMESPACE_NAME}_INCLUDE_DIRS \"\${SELF_DIR}/../../include\" ABSOLUTE )"
125125
"\nSET( ${FIELDML_NAMESPACE_NAME}_INCLUDE_DIRS \"\${${FIELDML_NAMESPACE_NAME}_INCLUDE_DIRS}\" \"${LIBXML2_INCLUDE_DIR}\" \"${HDF5_INCLUDE_DIRS}\" \"${MPI_INCLUDE_DIRS}\" )"
126126
"\nSET( ${FIELDML_NAMESPACE_NAME}_LIBRARIES ${FIELDML_API_LIBRARY_TARGET_NAME} ${FIELDML_IO_API_LIBRARY_TARGET_NAME} ${HDF5_MINE_LIBRARIES} ${MPI_MINE_LIBRARIES})"
127-
"\nSET( ${FIELDML_NAMESPACE_NAME}_DEFINITIONS )"
127+
"\nSET( ${FIELDML_NAMESPACE_NAME}_DEFINITIONS ${LIBXML2_DEFINITIONS} )"
128128
"\nSET( ${FIELDML_NAMESPACE_NAME}_FOUND TRUE )"
129129
"\nENDIF( NOT DEFINED _${FIELDML_NAMESPACE_NAME}_CONFIG_CMAKE )"
130130
"\n" )

core/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,10 @@ ENDIF( "${CMAKE_BUILD_TYPE}" STREQUAL "Debug" )
9898
IF( WIN32 )
9999
ADD_DEFINITIONS( -D_CRT_SECURE_NO_WARNINGS )
100100
ENDIF( WIN32 )
101+
FOREACH( DEF ${LIBXML2_DEFINITIONS} )
102+
ADD_DEFINITIONS( -D${DEF} )
103+
ENDFOREACH( DEF ${LIBXML2_DEFINITIONS} )
104+
SET( LIBXML2_DEFINITIONS ${LIBXML2_DEFINITIONS} PARENT_SCOPE )
101105
SET(LIBXML2_INCLUDE_DIRS ${LIBXML2_INCLUDE_DIR})
102106
INCLUDE_DIRECTORIES( ${LIBXML2_INCLUDE_DIR} )
103107

core/src/FieldmlDOM.cpp

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1434,8 +1434,9 @@ static int parseObjectNode( xmlNodePtr objectNode, ParseState &state )
14341434
}
14351435

14361436
// Work around of the current bug that data resource need to be defined beofre parameter evaluator uses it
1437-
static int parseDataNode( xmlNodePtr objectNode, ParseState &state )
1437+
static int parseDataNode( xmlNodePtr objectNode, ParseState &state , bool& isParsed)
14381438
{
1439+
isParsed = false;
14391440
if( FmlUtil::contains( state.parseStack, objectNode ) )
14401441
{
14411442
const char *name = getStringAttribute( objectNode, NAME_ATTRIB );
@@ -1453,10 +1454,7 @@ static int parseDataNode( xmlNodePtr objectNode, ParseState &state )
14531454

14541455
state.parseStack.pop_back();
14551456

1456-
vector<xmlNodePtr>::iterator loc = find( state.unparsedNodes.begin(), state.unparsedNodes.end(), objectNode );
1457-
1458-
state.unparsedNodes.erase( loc );
1459-
1457+
isParsed = !err;
14601458
}
14611459

14621460
return err;
@@ -1490,11 +1488,21 @@ static int parseDoc( xmlDocPtr doc, ParseState &state )
14901488

14911489
// To be improved: Required the following "for" loop to loop through all the top level elements and
14921490
// parse the data resources before anything using them.
1493-
for( vector<xmlNodePtr>::iterator j = state.unparsedNodes.begin(); j != state.unparsedNodes.end();)
1491+
for( unsigned int index = 0; index < state.unparsedNodes.size(); )
14941492
{
1495-
xmlNodePtr temp_node = *j;
1496-
j++;
1497-
parseDataNode( temp_node, state );
1493+
bool isParsed = false;
1494+
xmlNodePtr objectNode = state.unparsedNodes[index];
1495+
parseDataNode( objectNode, state, isParsed );
1496+
if (isParsed)
1497+
{
1498+
// remove from unparsedNodes
1499+
vector<xmlNodePtr>::iterator loc = find( state.unparsedNodes.begin(), state.unparsedNodes.end(), objectNode );
1500+
state.unparsedNodes.erase( loc );
1501+
}
1502+
else
1503+
{
1504+
++index;
1505+
}
14981506
}
14991507

15001508
while( state.unparsedNodes.size() != 0 )

io/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,6 @@ IF( FIELDML_USE_HDF5 )
9191
ENDIF( FIELDML_USE_HDF5 )
9292

9393
SET( CMAKE_PREFIX_PATH ${CMAKE_INSTALL_PREFIX} )
94-
FIND_PACKAGE( LibXml2 REQUIRED )
9594

9695
SET( FIELDML_IO_API_SRCS
9796
src/ArrayDataReader.cpp

0 commit comments

Comments
 (0)