diff --git a/CMake/VersionSuite/SetUpVersion.cmake b/CMake/VersionSuite/SetUpVersion.cmake index 67f46ddeb412bd580aa593bf69a89c60ef268d41..af4d57bf4febb3088e5171684856278b9fb30a7b 100644 --- a/CMake/VersionSuite/SetUpVersion.cmake +++ b/CMake/VersionSuite/SetUpVersion.cmake @@ -62,7 +62,7 @@ MACRO(VersionWrite vProjectName export_name) FOREACH(il ${include_list}) SET(includes "${includes}\n\#include \"${il}\"") ENDFOREACH() - FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${vProjectName}Version.hpp + FILE(WRITE ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${vProjectName}Version.hpp "/* Current Version of ${vProjectName} * Major is: ${vMajor} * Minor is: ${vMinor} @@ -73,7 +73,7 @@ ${includes} extern ${export_name} ProjectVersion ${vProjectName}Version;\n" ) - FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${vProjectName}Version.cpp + FILE(WRITE ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${vProjectName}Version.cpp "/* Current Version of ${vProjectName} * Make sure to include this file in your built sources */ diff --git a/CMakeLists.txt b/CMakeLists.txt index 0110dbbf9b6c05688920c95cac738dfb00595640..4eb91a65d9bdb9575952fc7ce51f8ba83a273445 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,6 +39,12 @@ if(XDMF_BUILD_TESTING) endif() if (XDMF_STATIC_AND_SHARED) + STRING(REGEX MATCH "-fPIC" IS_FPIC "${CMAKE_CXX_FLAGS}") + if ("${IS_FPIC}" STREQUAL "") + if(UNIX) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") + endif(UNIX) + endif ("${IS_FPIC}" STREQUAL "") add_definitions(-DXDMFSTATIC) endif () @@ -294,6 +300,7 @@ include_directories(${XdmfCore_INCLUDE_DIRS} ${XdmfDSM_INCLUDE_DIRS}) link_directories(${XDMF_LIBRARY_DIRS}) option(XDMF_BUILD_CORE_ONLY OFF) +mark_as_advanced(XDMF_BUILD_CORE_ONLY) if(NOT XDMF_BUILD_CORE_ONLY) set(XdmfSources XdmfAggregate @@ -364,16 +371,16 @@ if(NOT XDMF_BUILD_CORE_ONLY) set_target_properties(${XDMF_LIBNAME} PROPERTIES PREFIX ../ IMPORT_PREFIX ../ - RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} - LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} - ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/ + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib/${CMAKE_CFG_INTDIR}/ + ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib/${CMAKE_CFG_INTDIR}/) if(XDMF_STATIC_AND_SHARED AND BUILD_SHARED_LIBS) set_target_properties(Xdmf_Static PROPERTIES PREFIX ../ IMPORT_PREFIX ../ - RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} - LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} - ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/ + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib/${CMAKE_CFG_INTDIR}/ + ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib/${CMAKE_CFG_INTDIR}/) endif () endif() endif() diff --git a/XdmfTopology.hpp b/XdmfTopology.hpp index f76570c0f0bccbdaf8bf230d840e6f1239cf0c9a..a49bc141a0bea3876bbbba09168a825490598ae0 100644 --- a/XdmfTopology.hpp +++ b/XdmfTopology.hpp @@ -192,7 +192,7 @@ protected: private: - XdmfTopology(const XdmfTopology &); + XdmfTopology(const XdmfTopology &); // Not implemented. void operator=(const XdmfTopology &); // Not implemented. shared_ptr mType; diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index 3cca99fd2ff78a407bea0ea4133391da5a063077..bc6aa0bb4d1b9182bf954c6d90b2b835a48c564a 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -9,7 +9,7 @@ include(SetUpVersion) include(TestBigEndian) if(VERSION_CONTROL_AUTOUPDATE OR - NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/XdmfVersion.hpp) + NOT EXISTS ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/XdmfVersion.hpp) VersionCreate("Xdmf" "3" "3" "0" "XDMFCORE_EXPORT" "XdmfCore.hpp") endif() @@ -28,6 +28,7 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR}) #set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) option(XDMF_BUILD_DSM OFF) +mark_as_advanced(XDMF_BUILD_DSM) if(XDMF_BUILD_DSM) option(XDMF_BUILD_DSM_THREADS ON) @@ -53,6 +54,11 @@ endif () mark_as_advanced(CLEAR HDF5_C_INCLUDE_DIR) mark_as_advanced(CLEAR HDF5_hdf5_LIBRARY_DEBUG) mark_as_advanced(CLEAR HDF5_hdf5_LIBRARY_RELEASE) +set(HDF5_LIBRARIES ${vtkhdf5_LIBRARIES}) +set(HDF5_hdf5_LIBRARY_RELEASE ${vtkhdf5_LIBRARIES}) +set(HDF5_INCLUDE_DIRS ${vtkhdf5_INCLUDE_DIRS}) +set(HDF5_C_INCLUDE_DIR ${vtkhdf5_INCLUDE_DIRS}) +set(HDF5_FOUND TRUE) find_package(HDF5 REQUIRED) if(HDF5_FOUND) mark_as_advanced(FORCE HDF5_C_INCLUDE_DIR) @@ -87,6 +93,9 @@ if(HDF5_FOUND) endif() +set(LIBXML2_LIBRARIES ${vtklibxml2_LIBRARIES}) +set(LIBXML2_INCLUDE_DIR ${vtklibxml2_INCLUDE_DIRS}) +set(LIBXML2_FOUND TRUE) find_package(LibXml2 REQUIRED) if(LIBXML2_FOUND) include_directories(${LIBXML2_INCLUDE_DIR}) @@ -140,7 +149,7 @@ set(XdmfCoreSources XdmfSparseMatrix XdmfSubset XdmfSystemUtils - ${CMAKE_CURRENT_BINARY_DIR}/XdmfVersion + ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/XdmfVersion XdmfVisitor XdmfWriter) @@ -189,16 +198,16 @@ if(WIN32) set_target_properties(XdmfCore PROPERTIES PREFIX ../ IMPORT_PREFIX ../ - RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/ + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib/${CMAKE_CFG_INTDIR}/ + ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib/${CMAKE_CFG_INTDIR}/) if (XDMF_STATIC_AND_SHARED AND BUILD_SHARED_LIBS) set_target_properties(XdmfCore_Static PROPERTIES PREFIX ../ IMPORT_PREFIX ../ - RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/ + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib/${CMAKE_CFG_INTDIR}/ + ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib/${CMAKE_CFG_INTDIR}/) endif () endif() endif() diff --git a/core/XdmfArray.hpp b/core/XdmfArray.hpp index 691d4d32e71538f3cdd79ced102f90af00464347..0558635a998447c4accbc8129fec5a3787cbf8aa 100644 --- a/core/XdmfArray.hpp +++ b/core/XdmfArray.hpp @@ -26,9 +26,9 @@ // C Compatible Includes #include "XdmfCore.hpp" +#include "XdmfItem.hpp" #include "XdmfArrayReference.hpp" #include "XdmfHeavyDataController.hpp" -#include "XdmfItem.hpp" #ifdef __cplusplus diff --git a/core/XdmfArray.tpp b/core/XdmfArray.tpp index e21798647cf2ef12169942d9ba5de011d46ddb71..bfb01e4369e8dabbf73adf9fd89f50e990bb1ae2 100644 --- a/core/XdmfArray.tpp +++ b/core/XdmfArray.tpp @@ -662,9 +662,7 @@ XdmfArray::initialize(const std::vector & dimensions) { mDimensions = dimensions; const unsigned int size = static_cast( - std::accumulate(dimensions.begin(), - dimensions.end(), - 1, + std::accumulate(dimensions.begin(), dimensions.end(), 1, std::multiplies())); return this->initialize(size); } @@ -707,10 +705,11 @@ template void XdmfArray::pushBack(const T & value) { + this->setIsChanged(true); return boost::apply_visitor(PushBack(value, this), mArray); - this->setIsChanged(true); + } template @@ -718,11 +717,12 @@ void XdmfArray::resize(const unsigned int numValues, const T & value) { + this->setIsChanged(true); return boost::apply_visitor(Resize(this, numValues, value), mArray); - this->setIsChanged(true); + } template @@ -730,11 +730,8 @@ void XdmfArray::resize(const std::vector & dimensions, const T & value) { - const unsigned int size = static_cast( - std::accumulate(dimensions.begin(), - dimensions.end(), - 1, - std::multiplies())); + const unsigned int size = static_cast(std::accumulate(dimensions.begin(), dimensions.end(), 1, + std::multiplies())); this->resize(size, value); mDimensions = dimensions; this->setIsChanged(true); diff --git a/core/XdmfCoreReader.cpp b/core/XdmfCoreReader.cpp index 30464be351eb508e371ab94ac8fa0c1e3fffec79..57fea0e879eb120bb773c5ddbafc90bc18e76ac1 100644 --- a/core/XdmfCoreReader.cpp +++ b/core/XdmfCoreReader.cpp @@ -21,9 +21,6 @@ /* */ /*****************************************************************************/ -#include -#include -#include #include #include #include @@ -215,7 +212,6 @@ public: if (mItemFactory->isArrayTag((char *)currNode->name)) { while(childNode != NULL) { if(childNode->type == XML_TEXT_NODE && childNode->content) { -#if 1 //ARL's side const char * content = (char*)childNode->content; // Determine if content is whitespace @@ -237,16 +233,6 @@ public: itemProperties.insert(std::make_pair("XMLDir", mXMLDir)); break; } -#else //VTK's side, breaks XDMF's tests, revisit if problematic in VTK - std::string content((char *)childNode->content); - boost::algorithm::trim(content); - - if(content.size() != 0) { - itemProperties.insert(std::make_pair("Content", content)); - itemProperties.insert(std::make_pair("XMLDir", mXMLDir)); - break; - } -#endif } childNode = childNode->next; } diff --git a/core/XdmfError.hpp b/core/XdmfError.hpp index 6f900c7a1c2458d5e8e561d084709406379ecd5e..bfb3fae68ffd49194d0f5dc4d0cc5b730f82278b 100644 --- a/core/XdmfError.hpp +++ b/core/XdmfError.hpp @@ -323,4 +323,4 @@ catch (XdmfError & e) { \ } #endif -#endif +#endif /* XDMFERROR_HPP_ */ diff --git a/core/XdmfHDF5Writer.cpp b/core/XdmfHDF5Writer.cpp index 4f05cd384300b0f3f2d45548784c31d9ad61ef97..54b8b5e2772f48e6a4aceab91899913307afc803 100644 --- a/core/XdmfHDF5Writer.cpp +++ b/core/XdmfHDF5Writer.cpp @@ -123,6 +123,7 @@ XdmfHDF5Writer::New(const std::string & filePath, return p; } +//Set mUseDeflate(true), and mDeflateFactor(6) for default compression XdmfHDF5Writer::XdmfHDF5Writer(const std::string & filePath) : XdmfHeavyDataWriter(filePath, 1, 800), mImpl(new XdmfHDF5WriterImpl()), @@ -131,6 +132,7 @@ XdmfHDF5Writer::XdmfHDF5Writer(const std::string & filePath) : { } +//Set mUseDeflate(true), and mDeflateFactor(6) for default compression XdmfHDF5Writer::XdmfHDF5Writer(const XdmfHDF5Writer & writerRef) : XdmfHeavyDataWriter(writerRef.getFilePath(), 1, 800), mImpl(new XdmfHDF5WriterImpl()), @@ -1399,7 +1401,7 @@ XdmfHDF5Writer::write(XdmfArray & array) const hsize_t totalDimensionsSize = std::accumulate(current_dims.begin(), current_dims.end(), - 1, + (hsize_t) 1, std::multiplies()); // The Nth root of the chunk size divided by the dimensions added together const double factor = diff --git a/core/XdmfHeavyDataDescription.cpp b/core/XdmfHeavyDataDescription.cpp index 37e652ff2c6872f16ec28f0ee4b738f6b300504d..39c50ec23048d78236272d547261eee021908142 100644 --- a/core/XdmfHeavyDataDescription.cpp +++ b/core/XdmfHeavyDataDescription.cpp @@ -76,6 +76,8 @@ XdmfHeavyDataDescription::traverse(const shared_ptr visitor) } +// C Wrappers + XDMFHEAVYDATADESCRIPTION * XdmfHeavyDataDescriptionNew(char * key, char * value) { diff --git a/core/XdmfInformation.hpp b/core/XdmfInformation.hpp index ac50d96d05f32f63657f6f8b6a60837e37e3c63d..507e00483bcb79d5d1eaf87527511514e58951c1 100644 --- a/core/XdmfInformation.hpp +++ b/core/XdmfInformation.hpp @@ -221,7 +221,7 @@ protected: private: - XdmfInformation(const XdmfInformation &); + XdmfInformation(const XdmfInformation &); // Not implemented. void operator=(const XdmfInformation &); // Not implemented. std::string mKey; diff --git a/core/XdmfItem.cpp b/core/XdmfItem.cpp index 38c0dfd5dfd178933098af7143deb3c2f0997a30..94508edd47234e528d6ca056dc946693867bd2d6 100644 --- a/core/XdmfItem.cpp +++ b/core/XdmfItem.cpp @@ -34,7 +34,7 @@ XdmfItem::XdmfItem() : { } -XdmfItem::XdmfItem(XdmfItem &refItem) : +XdmfItem::XdmfItem(const XdmfItem &refItem) : mInformations(refItem.mInformations), mIsChanged(true) { diff --git a/core/XdmfItem.hpp b/core/XdmfItem.hpp index ebdb7283ce9ba22add15e6ebece561f27bef234b..fecded94482d835e0353321336ea3c4d25c030b3 100644 --- a/core/XdmfItem.hpp +++ b/core/XdmfItem.hpp @@ -37,8 +37,12 @@ class XdmfVisitor; // Includes #include +#define vtk_libxml2_reference reference // Reversing VTK name mangling #include #include +#include +#include +#include #include #include #include @@ -375,7 +379,7 @@ public: */ virtual void traverse(const shared_ptr visitor); - XdmfItem(XdmfItem &); + XdmfItem(const XdmfItem &); protected: @@ -409,7 +413,7 @@ protected: private: - XdmfItem(const XdmfItem &); // Not implemented. +// XdmfItem(const XdmfItem &); // It is implemented for C wrappers. void operator=(const XdmfItem &); // Not implemented. }; diff --git a/core/XdmfWriter.cpp b/core/XdmfWriter.cpp index 227c6cedb926312c1643986629672948aa190406..fb6d088195dc0d74a009616aa31a5ab8958b428b 100644 --- a/core/XdmfWriter.cpp +++ b/core/XdmfWriter.cpp @@ -22,7 +22,6 @@ /*****************************************************************************/ #include -#include #include #include #include "XdmfArray.hpp" @@ -120,6 +119,9 @@ public: (xmlChar*)"Version", (xmlChar*)mVersionString.c_str()); xmlDocSetRootElement(mXMLDocument, mXMLCurrentNode); + if(mHeavyDataWriter->getMode() == XdmfHeavyDataWriter::Default) { + mHeavyDataWriter->openFile(); + } } int mDepth;