Commit 701d36d4 authored by David E. DeMarle's avatar David E. DeMarle

Merge branch 'revert-noboost' into 'master'

Revert the removal of boost changes

See merge request !37
parents 5d1e9713 8e39bc04
......@@ -79,17 +79,13 @@ ENDMACRO()
# Output:
# is_core = variable is set to 'Core' is core was found in dir
MACRO(SET_CORE dir)
IF(NOT "${XDMF_SUBSECTION}" STREQUAL "")
set(is_core ${XDMF_SUBSECTION})
ELSE()
STRING(REGEX MATCH "core" is_core "${dir}")
STRING(REGEX MATCH "core" is_core "${dir}")
IF(EXISTS ${is_core})
SET(is_core "Core")
ELSE(EXISTS ${is_core})
STRING(REGEX MATCH "utils" is_core "${dir}")
IF(EXISTS ${is_core})
SET(is_core "Core")
ELSE(EXISTS ${is_core})
STRING(REGEX MATCH "utils" is_core "${dir}")
IF(EXISTS ${is_core})
SET(is_core "Util")
ENDIF(EXISTS ${is_core})
SET(is_core "Util")
ENDIF(EXISTS ${is_core})
ENDIF(NOT "${XDMF_SUBSECTION}" STREQUAL "")
ENDIF(EXISTS ${is_core})
ENDMACRO(SET_CORE dir)
......@@ -12,8 +12,6 @@ if(MSVC10)
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR})
endif()
include(CheckCXXSourceCompiles)
set(XDMF_LIBNAME "Xdmf" CACHE STRING "Name for this xdmf library to avoid collision")
set(XDMF_MAJOR_VERSION 3)
......@@ -50,7 +48,6 @@ if (XDMF_STATIC_AND_SHARED)
endif ()
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/CMake/VersionSuite)
include_directories(${CMAKE_CURRENT_BINARY_DIR})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
list(APPEND CMAKE_MODULE_PATH
......@@ -103,33 +100,6 @@ endif (TIFF_FOUND)
# Test for DSM
option(XDMF_BUILD_DSM OFF)
mark_as_advanced(XDMF_BUILD_DSM)
option(XDMF_TRY_NOBOOST ON)
mark_as_advanced(XDMF_TRY_NOBOOST)
if (XDMF_TRY_NOBOOST)
# Test for Cxx11
unset(HAVE_CXX11_SHARED_PTR CACHE)
check_cxx_source_compiles("
#include <memory>
using namespace std;
struct Base { virtual ~Base(){} };
int main(int ac, char * av[])
{
shared_ptr<Base> ptr(new Base());
}
"
HAVE_CXX11_SHARED_PTR)
endif ()
# Cxx11 does not work with swig due to an issue with swig
if (HAVE_CXX11_SHARED_PTR AND NOT XDMF_WRAP_PYTHON)
add_definitions(-DHAVE_CXX11_SHARED_PTR)
endif ()
if(XDMF_BUILD_DSM)
find_package(MPI REQUIRED)
if(MPI_FOUND)
......@@ -403,15 +373,7 @@ if(NOT XDMF_BUILD_CORE_ONLY)
)
endif (BUILD_SHARED_LIBS)
else()
if (WIN32)
if (XDMF_BUILD_DSM)
add_library(${XDMF_LIBNAME} ${LIBTYPE} ${XdmfSources} ${XdmfCoreSources} ${XdmfDSMSources})
else ()
add_library(${XDMF_LIBNAME} ${LIBTYPE} ${XdmfSources} ${XdmfCoreSources})
endif ()
else ()
add_library(${XDMF_LIBNAME} ${LIBTYPE} ${XdmfSources})
endif ()
add_library(${XDMF_LIBNAME} ${LIBTYPE} ${XdmfSources})
endif()
SET_TARGET_PROPERTIES(
${XDMF_LIBNAME} PROPERTIES
......
......@@ -142,28 +142,22 @@
# define XDMF_TEMPLATE
#else
/* Used to export/import from the dlls */
# undef XDMFCORE_EXPORT
# define XDMFCORE_EXPORT __declspec(dllimport)
# undef XDMFCORE_TEMPLATE
# define XDMFCORE_TEMPLATE extern
# undef XDMFDSM_EXPORT
# define XDMFDSM_EXPORT __declspec(dllimport)
# undef XDMFDSM_TEMPLATE
# define XDMFDSM_TEMPLATE extern
# ifdef XDMF_EXPORTS
# define XDMF_EXPORT __declspec(dllexport)
# define XDMF_TEMPLATE
# undef XDMFCORE_EXPORT
# define XDMFCORE_EXPORT __declspec(dllexport)
# undef XDMFCORE_TEMPLATE
# define XDMFCORE_TEMPLATE
# undef XDMFDSM_EXPORT
# define XDMFDSM_EXPORT __declspec(dllexport)
# undef XDMFDSM_TEMPLATE
# define XDMFDSM_TEMPLATE
# define XDMF_EXPORT __declspec(dllexport)
# define XDMF_TEMPLATE
# else /* XDMF_EXPORTS */
# define XDMF_EXPORT __declspec(dllimport)
# define XDMF_TEMPLATE extern
# undef XDMFCORE_EXPORT
# define XDMFCORE_EXPORT __declspec(dllimport)
# undef XDMFCORE_TEMPLATE
# define XDMFCORE_TEMPLATE extern
# undef XDMFDSM_EXPORT
# define XDMFDSM_EXPORT __declspec(dllimport)
# undef XDMFDSM_TEMPLATE
# define XDMFDSM_TEMPLATE extern
# define XDMF_EXPORT __declspec(dllimport)
# define XDMF_TEMPLATE extern
# endif /* XDMF_EXPORTS */
#endif
......
......@@ -23,6 +23,7 @@
#include <numeric>
#include <functional>
#include <boost/tokenizer.hpp>
#include "XdmfArray.hpp"
#include "XdmfError.hpp"
#include "XdmfAggregate.hpp"
......
......@@ -114,7 +114,11 @@ XdmfAttribute::populateItem(const std::map<std::string, std::string> & itemPrope
iter != childItems.end();
++iter) {
if(shared_ptr<XdmfArray> array = shared_dynamic_cast<XdmfArray>(*iter)) {
this->populateArray(array);
this->swap(array);
if (array->getReference()) {
this->setReference(array->getReference());
this->setReadMode(XdmfArray::Reference);
}
break;
}
}
......
......@@ -276,7 +276,7 @@ XdmfCurvilinearGrid::copyGrid(shared_ptr<XdmfGrid> sourceGrid)
shared_ptr<XdmfArray>
XdmfCurvilinearGrid::getDimensions()
{
return const_pointer_cast<XdmfArray>
return boost::const_pointer_cast<XdmfArray>
(static_cast<const XdmfCurvilinearGrid &>(*this).getDimensions());
}
......@@ -289,7 +289,7 @@ XdmfCurvilinearGrid::getDimensions() const
shared_ptr<XdmfGeometry>
XdmfCurvilinearGrid::getGeometry()
{
return const_pointer_cast<XdmfGeometry>
return boost::const_pointer_cast<XdmfGeometry>
(static_cast<const XdmfGrid &>(*this).getGeometry());
}
......
......@@ -25,7 +25,7 @@
#include "XdmfGeometryType.hpp"
#include "XdmfError.hpp"
#include "XdmfFunction.hpp"
#include <cstring>
#include <boost/tokenizer.hpp>
shared_ptr<XdmfGeometry> XdmfGeometry::New()
{
......@@ -176,7 +176,11 @@ XdmfGeometry::populateItem(const std::map<std::string, std::string> & itemProper
iter != childItems.end();
++iter) {
if(shared_ptr<XdmfArray> array = shared_dynamic_cast<XdmfArray>(*iter)) {
this->populateArray(array);
this->swap(array);
if (array->getReference()) {
this->setReference(array->getReference());
this->setReadMode(XdmfArray::Reference);
}
break;
}
}
......@@ -191,25 +195,12 @@ XdmfGeometry::populateItem(const std::map<std::string, std::string> & itemProper
std::map<std::string, std::string>::const_iterator origin =
itemProperties.find("Origin");
if (origin != itemProperties.end()) {
#ifdef HAVE_CXX11_SHARED_PTR
char * originString = strdup(origin->second.c_str());
char * token = std::strtok(originString, " ");
while (token != NULL)
{
mOrigin.push_back(atof(token));
token = std::strtok(NULL, " ");
}
free(originString);
originString = NULL;
#else
boost::tokenizer<> tokens(origin->second);
for(boost::tokenizer<>::const_iterator iter = tokens.begin();
iter != tokens.end();
++iter) {
mOrigin.push_back(atof((*iter).c_str()));
}
#endif
}
}
......
......@@ -62,7 +62,7 @@ XdmfGraph::getItemTag() const
shared_ptr<XdmfTime>
XdmfGraph::getTime()
{
return const_pointer_cast<XdmfTime>
return boost::const_pointer_cast<XdmfTime>
(static_cast<const XdmfGraph &>(*this).getTime());
}
......
......@@ -141,7 +141,7 @@ XdmfGrid::getName() const
shared_ptr<XdmfTime>
XdmfGrid::getTime()
{
return const_pointer_cast<XdmfTime>
return boost::const_pointer_cast<XdmfTime>
(static_cast<const XdmfGrid &>(*this).getTime());
}
......
......@@ -42,6 +42,8 @@
#include "XdmfSystemUtils.hpp"
#include <boost/tokenizer.hpp>
#include <stdio.h>
shared_ptr<XdmfGridTemplate>
......
......@@ -21,9 +21,8 @@
/* */
/*****************************************************************************/
#include <algorithm>
#include <cctype>
#include <cstring>
#include <boost/tokenizer.hpp>
#include "XdmfAttribute.hpp"
#include "XdmfCurvilinearGrid.hpp"
#include "XdmfDomain.hpp"
......@@ -278,25 +277,12 @@ XdmfItemFactory::createItem(const std::string & itemTag,
if(dimensions != itemProperties.end()) {
dimensionsString = dimensions->second;
}
#ifdef HAVE_CXX11_SHARED_PTR
char * dimString = strdup(dimensionsString.c_str());
char * token = std::strtok(dimString, " ");
while (token != NULL)
{
dimensionsArray->pushBack(atoi(token));
token = std::strtok(NULL, " ");
}
free(dimString);
dimString = NULL;
#else
boost::tokenizer<> tokens(dimensionsString);
for(boost::tokenizer<>::const_iterator iter = tokens.begin();
iter != tokens.end();
++iter) {
dimensionsArray->pushBack<unsigned int>(atoi((*iter).c_str()));
}
#endif
if(typeVal.compare("2DCORECTMESH") == 0 ||
typeVal.compare("3DCORECTMESH") == 0 ||
typeVal.compare("CORECTMESH") == 0) {
......
......@@ -333,7 +333,7 @@ XdmfRectilinearGrid::copyGrid(shared_ptr<XdmfGrid> sourceGrid)
shared_ptr<XdmfArray>
XdmfRectilinearGrid::getCoordinates(const unsigned int axisIndex)
{
return const_pointer_cast<XdmfArray>
return boost::const_pointer_cast<XdmfArray>
(static_cast<const XdmfRectilinearGrid &>
(*this).getCoordinates(axisIndex));
}
......@@ -362,7 +362,7 @@ XdmfRectilinearGrid::getCoordinates() const
shared_ptr<XdmfArray>
XdmfRectilinearGrid::getDimensions()
{
return const_pointer_cast<XdmfArray>
return boost::const_pointer_cast<XdmfArray>
(static_cast<const XdmfRectilinearGrid &>(*this).getDimensions());
}
......
......@@ -373,7 +373,7 @@ XdmfRegularGrid::copyGrid(shared_ptr<XdmfGrid> sourceGrid)
shared_ptr<XdmfArray>
XdmfRegularGrid::getBrickSize()
{
return const_pointer_cast<XdmfArray>
return boost::const_pointer_cast<XdmfArray>
(static_cast<const XdmfRegularGrid &>(*this).getBrickSize());
}
......@@ -386,7 +386,7 @@ XdmfRegularGrid::getBrickSize() const
shared_ptr<XdmfArray>
XdmfRegularGrid::getDimensions()
{
return const_pointer_cast<XdmfArray>
return boost::const_pointer_cast<XdmfArray>
(static_cast<const XdmfRegularGrid &>(*this).getDimensions());
}
......@@ -399,7 +399,7 @@ XdmfRegularGrid::getDimensions() const
shared_ptr<XdmfArray>
XdmfRegularGrid::getOrigin()
{
return const_pointer_cast<XdmfArray>
return boost::const_pointer_cast<XdmfArray>
(static_cast<const XdmfRegularGrid &>(*this).getOrigin());
}
......
......@@ -107,7 +107,7 @@ XdmfSet::populateItem(const std::map<std::string, std::string> & itemProperties,
else if(shared_ptr<XdmfArray> array =
shared_dynamic_cast<XdmfArray>(*iter)) {
if (!filled) {
this->populateArray(array);
this->swap(array);
filled = true;
}
if (array->getReference()) {
......
......@@ -24,7 +24,6 @@
#include <sstream>
#include <utility>
#include <climits>
#include <cstring>
#include <set>
#include "XdmfArray.hpp"
#include "XdmfHDF5Controller.hpp"
......@@ -39,6 +38,8 @@
#include "XdmfSystemUtils.hpp"
#include <boost/tokenizer.hpp>
#include <stdio.h>
std::vector<shared_ptr<XdmfHeavyDataController> >
......@@ -887,9 +888,7 @@ XdmfTemplate::preallocateSteps(unsigned int numSteps)
//printf("allocating subsection %u\n", allocateIteration);
//*/
//printf("initializing base array\n");
std::vector<unsigned int> preallocatedSizeVector;
preallocatedSizeVector.push_back(preallocatedSize);
tempArray->initialize(mTrackedArrays[i]->getArrayType(), preallocatedSizeVector);
tempArray->initialize(mTrackedArrays[i]->getArrayType(), preallocatedSize);
//printf("writing subsection");
tempArray->accept(mHeavyWriter);
//printf("subsection written\n");
......@@ -1115,28 +1114,6 @@ XdmfTemplate::setStep(unsigned int stepId)
mTrackedArrays[i]->initialize(mTrackedArrayTypes[i], mTrackedArrayDims[i]);
unsigned int index = 0;
#ifdef HAVE_CXX11_SHARED_PTR
char * trackedString = strdup(content.c_str());
char * token = std::strtok(trackedString, " \t\n");
if(mTrackedArrayTypes[i] == XdmfArrayType::String()) {
while (token != NULL)
{
mTrackedArrays[i]->insert(index, std::string(token));
token = std::strtok(NULL, " \t\n");
++index;
}
}
else {
while (token != NULL)
{
mTrackedArrays[i]->insert(index, atof(token));
token = std::strtok(NULL, " \t\n");
++index;
}
}
free(trackedString);
trackedString = NULL;
#else
boost::char_separator<char> sep(" \t\n");
boost::tokenizer<boost::char_separator<char> > valtokens(content, sep);
if(mTrackedArrayTypes[i] == XdmfArrayType::String()) {
......@@ -1155,7 +1132,6 @@ XdmfTemplate::setStep(unsigned int stepId)
mTrackedArrays[i]->insert(index, atof((*iter).c_str()));
}
}
#endif
}
}
}
......
......@@ -158,7 +158,11 @@ XdmfTopology::populateItem(const std::map<std::string, std::string> & itemProper
iter != childItems.end();
++iter) {
if(shared_ptr<XdmfArray> array = shared_dynamic_cast<XdmfArray>(*iter)) {
this->populateArray(array);
this->swap(array);
if (array->getReference()) {
this->setReference(array->getReference());
this->setReadMode(XdmfArray::Reference);
}
break;
}
}
......
......@@ -259,7 +259,7 @@ XdmfUnstructuredGrid::copyGrid(shared_ptr<XdmfGrid> sourceGrid)
shared_ptr<XdmfGeometry>
XdmfUnstructuredGrid::getGeometry()
{
return const_pointer_cast<XdmfGeometry>
return boost::const_pointer_cast<XdmfGeometry>
(static_cast<const XdmfGrid &>(*this).getGeometry());
}
......@@ -272,7 +272,7 @@ XdmfUnstructuredGrid::getItemTag() const
shared_ptr<XdmfTopology>
XdmfUnstructuredGrid::getTopology()
{
return const_pointer_cast<XdmfTopology>
return boost::const_pointer_cast<XdmfTopology>
(static_cast<const XdmfGrid &>(*this).getTopology());
}
......
......@@ -39,7 +39,7 @@ if(XDMF_BUILD_DSM)
endif()
mark_as_advanced(CLEAR Boost_INCLUDE_DIR)
find_package(Boost)
find_package(Boost REQUIRED)
if(Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
mark_as_advanced(FORCE Boost_INCLUDE_DIR)
......@@ -117,8 +117,7 @@ endif()
TEST_BIG_ENDIAN(XDMF_BIG_ENDIAN)
unset(HAVE_BOOST_SHARED_DYNAMIC_CAST CACHE)
unset(HAVE_CXX11_SHARED_PTR CACHE)
set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${Boost_INCLUDE_DIRS})
check_cxx_source_compiles("
#include <boost/shared_ptr.hpp>
......@@ -133,26 +132,6 @@ int main(int ac, char * av[])
"
HAVE_BOOST_SHARED_DYNAMIC_CAST)
if (XDMF_TRY_NOBOOST)
check_cxx_source_compiles("
#include <memory>
using namespace std;
struct Base { virtual ~Base(){} };
int main(int ac, char * av[])
{
shared_ptr<Base> ptr(new Base());
}
"
HAVE_CXX11_SHARED_PTR)
endif ()
if (HAVE_CXX11_SHARED_PTR AND NOT XDMF_WRAP_PYTHON)
add_definitions(-DHAVE_CXX11_SHARED_PTR)
endif ()
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/XdmfCoreConfig.hpp.in
${CMAKE_CURRENT_BINARY_DIR}/XdmfCoreConfig.hpp)
......@@ -245,9 +224,6 @@ SET_TARGET_PROPERTIES(
SOVERSION ${XDMF_MAJOR_VERSION}
)
set(XDMF_LIBRARY_DIRS ${XDMF_LIBRARY_DIRS} PARENT_SCOPE)
set(XDMF_LIBRARIES ${XDMF_LIBRARIES} PARENT_SCOPE)
link_directories(${XDMF_LIBRARY_DIRS})
target_link_libraries(XdmfCore ${XDMF_LIBRARIES})
......@@ -350,6 +326,7 @@ set(XdmfCore_INCLUDE_DIRS
CACHE INTERNAL "")
set(XDMF_INCLUDE_DIRS ${CMAKE_INSTALL_PREFIX}/include PARENT_SCOPE)
set(XDMF_LIBRARIES ${XDMF_LIBRARIES} ${CMAKE_INSTALL_PREFIX}/lib)
set(XDMF_DIR ${CMAKE_INSTALL_PREFIX} PARENT_SCOPE)
set(XDMF_BINARIES ${XDMF_BINARIES} ${CMAKE_INSTALL_PREFIX}/bin)
......
This diff is collapsed.
......@@ -37,6 +37,8 @@ class XdmfArrayType;
class XdmfHeavyDataController;
// Includes
#include <boost/shared_array.hpp>
#include <boost/variant.hpp>
/**
* @brief Provides storage for data values that are read in or will be
......@@ -108,11 +110,6 @@ public:
Reference
};
friend class XdmfHeavyDataWriter;
friend class XdmfHDF5Writer;
friend class XdmfHeavyDataController;
friend class XdmfHDF5Controller;
/**
* Create a new XdmfArray.
*
......@@ -603,7 +600,7 @@ public:
* initialized in this array.
*/
template <typename T>
T * initialize(const unsigned int size = 0);
shared_ptr<std::vector<T> > initialize(const unsigned int size = 0);
/**
* Initialize the array to specific dimensions.
......@@ -628,7 +625,8 @@ public:
* initialized in this array.
*/
template <typename T>
T * initialize(const std::vector<unsigned int> & dimensions);
shared_ptr<std::vector<T> >
initialize(const std::vector<unsigned int> & dimensions);
/**
* Initialize the array to contain a specified amount of a particular type.
......@@ -1322,7 +1320,7 @@ public:
* deletion of the array to XdmfArray.
*/
template<typename T>
void setValuesInternal(T * const arrayPointer,
void setValuesInternal(const T * const arrayPointer,
const unsigned int numValues,
const bool transferOwnership = 0);
......@@ -1380,6 +1378,56 @@ public:
template<typename T>
void setValuesInternal(const shared_ptr<std::vector<T> > array);
/**
* Exchange the contents of the vector with the contents of this
* array. No copy is made. The internal arrays are swapped.
*
* Example of use
*
* C++
*
* @dontinclude ExampleXdmfArray.cpp
* @skipline //#initialization
* @until //#initialization
* @skipline //#initinternalvector
* @until //#initinternalvector
* @skipline //#swapvector
* @until //#swapvector
*
* Python: The Python version only supports swapping XdmfArrays
*
* @param array A vector to exchange values with.
* @return bool whether the swap was successful.
*/
template<typename T>
bool swap(std::vector<T> & array);
/**
* Exchange the contents of the vector with the contents of this
* array. No copy is made. The internal arrays are swapped.
*
* Example of use
*
* C++
*
* @dontinclude ExampleXdmfArray.cpp
* @skipline //#initialization
* @until //#initialization
* @skipline //#initinternalvector
* @until //#initinternalvector
* @skipline //#initsharedvector
* @until //#initsharedvector
* @skipline //#swapsharedvector
* @until //#swapsharedvector
*
* Python: The Python version only supports swapping XdmfArrays
*
* @param array A smart pointer to a vector to exchange values with.
* @return bool whether the swap was successful.
*/
template<typename T>
bool swap(const shared_ptr<std::vector<T> > array);
/**
* Exchange the contents of an XdmfArray with the contents of this
* array. No copy is made. The internal arrays are swapped.
......@@ -1416,52 +1464,26 @@ protected:
XdmfArray();
template <typename T>
void setArrayType();
virtual void
populateArray(const shared_ptr<XdmfArray> array);
virtual void
populateItem(const std::map<std::string, std::string> & itemProperties,
const std::vector<shared_ptr<XdmfItem> > & childItems,
const XdmfCoreReader * const reader);
unsigned int mStringSize;
private:
XdmfArray(const XdmfArray &); // Not implemented.
void operator=(const XdmfArray &); // Not implemented.
template <typename T>
class XdmfVisitor;
template <typename T, typename U>
static
T
ApplyVisitor(const XdmfArray * const source, XdmfVisitor<T> & visitor, void * array, U * internal);
template<typename T, typename U, typename V>
static
T
ApplyVisitorFunction(XdmfVisitor<T> & visitor, U * array, V * internal);
// Variant Visitor Operations
class Clear;
class Erase;
class GetArrayType;
class GetCapacity;
template <typename T>
class GetValue;
template <typename T>
class GetValues;
template <typename T> class GetValue;
template <typename T> class GetValues;
class GetValuesPointer;
template <typename T>
class GetValuesString;
template <typename T>
class Insert;
template <typename T> class Insert;
class InsertArray;
class InternalizeArrayPointer;
class IsInitialized;
......@@ -1481,21 +1503,35 @@ private:
*/
void internalizeArrayPointer();
typedef boost::variant<
boost::blank,
shared_ptr<std::vector<char> >,
shared_ptr<std::vector<short> >,
shared_ptr<std::vector<int> >,
shared_ptr<std::vector<long> >,
shared_ptr<std::vector<float> >,
shared_ptr<std::vector<double> >,
shared_ptr<std::vector<unsigned char> >,
shared_ptr<std::vector<unsigned short> >,
shared_ptr<std::vector<unsigned int> >,
shared_ptr<std::vector<std::string> >,
boost::shared_array<const char>,
boost::shared_array<const short>,
boost::shared_array<const int>,
boost::shared_array<const long>,
boost::shared_array<const float>,
boost::shared_array<const double>,
boost::shared_array<const unsigned char>,
boost::shared_array<const unsigned short>,
boost::shared_array<const unsigned int> > ArrayVariant;
unsigned int mArrayPointerNumValues;
// unsigned int mStringSize;
std::vector<unsigned int> mDimensions;
std::string mName;
unsigned int mTmpReserveSize;
ReadMode mReadMode;
shared_ptr<XdmfArrayReference> mReference;
std::vector<unsigned int> mDimensions;
std::string mName;
std::string mRequestedHeavyDataset;
// Internal Array Data
// This will need to be expanded as T** or further to handle multiple dimensions
shared_ptr<const XdmfArrayType> mArrayType;
std::vector<unsigned int> mCapacity;
std::vector<unsigned long> mAllocation;
bool mHasArrayOwnership;
void * mArray;
ArrayVariant mArray;
};
#include "XdmfArray.tpp"
......@@ -1588,6 +1624,8 @@ XDMFCORE_EXPORT void XdmfArraySetValuesInternal(XDMFARRAY * array, void * pointe
XDMFCORE_EXPORT void XdmfArraySwapWithXdmfArray(XDMFARRAY * array, XDMFARRAY * swapArray);