Skip to content
Snippets Groups Projects
Commit efe367ed authored by wfg's avatar wfg
Browse files

Added Write template function and started working on CCapsule class

1) Moved write out of transport

2) Moved transport and transform members into CCapsule

3) Completely rearranged CGroup to move functionality to CCapsule


To do:
Test template implementation.
parent 3388902c
No related branches found
No related tags found
1 merge request!8Integrate groupless
Showing
with 292 additions and 155 deletions
/*
* CCapsule.h
*
* Created on: Nov 7, 2016
* Author: wfg
*/
#ifndef CCAPSULE_H_
#define CCAPSULE_H_
#include <vector>
#ifdef HAVE_MPI
#include <mpi.h>
#else
#include "public/mpidummy.h"
#endif
#include "core/CGroup.h"
#include "core/SVariable.h"
#include "core/CTransform.h"
#include "core/CTransport.h"
namespace adios
{
class CCapsule
{
public:
#ifdef HAVE_MPI
MPI_Comm m_MPIComm = NULL; ///< only used as reference to MPI communicator passed from parallel constructor, MPI_Comm is a pointer itself. Public as called from C
#else
MPI_Comm m_MPIComm = 0; ///< only used as reference to MPI communicator passed from parallel constructor, MPI_Comm is a pointer itself. Public as called from C
#endif
std::vector<char> m_Buffer; ///< buffer to be managed, just one type for now
std::map< std::string, std::shared_ptr<CTransform> > m_Transforms; ///< transforms associated with ADIOS run
std::map< std::string, std::shared_ptr<CTransport> > m_Transports; ///< transports associated with ADIOS run
CCapsule( ); ///< default empty constructor
~CCapsule( );
/**
* This will add to the m_Transports and m_Transforms map
* @param group
*/
void OpenGroupBuffer( const CGroup& group );
template< class T>
void WriteVariableToBuffer( const CGroup& group, const SVariable<T>& variable );
/**
* Closes the buffer and moves it into the
* @param group
*/
void CloseGroupBuffer( const CGroup& group );
};
} //end namespace
#endif /* CCAPSULE_H_ */
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
#endif #endif
#include "core/CVariable.h" #include <core/SVariable.h>
#include "core/SAttribute.h" #include "core/SAttribute.h"
#include "core/CTransport.h" #include "core/CTransport.h"
...@@ -62,28 +62,15 @@ public: ...@@ -62,28 +62,15 @@ public:
~CGroup( ); ///< Using STL containers, no deallocation ~CGroup( ); ///< Using STL containers, no deallocation
/** /**
* Opens group and passes fileName and accessMode to m_Transport * Called from ADIOS open, sets group as active and passes associated bufferName and accessMode
* @param fileName * @param bufferName associated buffer for this group
* @param accessMode * @param accessMode associated access mode (read, write, append) for bufferName
*/ */
void Open( const std::string fileName, const std::string accessMode = "w" ); void Open( const std::string bufferName, const std::string accessMode );
/** /**
* Passes variableName and values to m_Transport * Creates a new variable in the group object
* @param variableName
* @param values
*/
void Write( const std::string variableName, const void* values );
/**
* Must think what to do with Capsule and Transport
*/
void Close( );
/**
* Sets a new variable in the group object
* @param name variable name, must be unique. If name exists it removes the current variable. In debug mode program will exit. * @param name variable name, must be unique. If name exists it removes the current variable. In debug mode program will exit.
* @param type variable type, must be in SSupport::Datatypes[hostLanguage] in public/SSupport.h * @param type variable type, must be in SSupport::Datatypes[hostLanguage] in public/SSupport.h
* @param dimensionsCSV comma separated variable local dimensions (e.g. "Nx,Ny,Nz") * @param dimensionsCSV comma separated variable local dimensions (e.g. "Nx,Ny,Nz")
...@@ -91,29 +78,23 @@ public: ...@@ -91,29 +78,23 @@ public:
* @param globalDimensionsCSV comma separated variable global dimensions (e.g. "gNx,gNy,gNz"), if globalOffsetsCSV is also empty variable is local * @param globalDimensionsCSV comma separated variable global dimensions (e.g. "gNx,gNy,gNz"), if globalOffsetsCSV is also empty variable is local
* @param globalOffsetsCSV comma separated variable global dimensions (e.g. "gNx,gNy,gNz"), if globalOffsetsCSV is also empty variable is local * @param globalOffsetsCSV comma separated variable global dimensions (e.g. "gNx,gNy,gNz"), if globalOffsetsCSV is also empty variable is local
*/ */
void SetVariable( const std::string name, const std::string type, void CreateVariable( const std::string name, const std::string type,
const std::string dimensionsCSV, const std::string transform, const std::string dimensionsCSV, const std::string transform,
const std::string globalDimensionsCSV, const std::string globalOffsetsCSV ); const std::string globalDimensionsCSV, const std::string globalOffsetsCSV );
/** /**
* @brief Sets a new attribute in current Group *
* @param name attribute name, must be unique. If name exists it removes the current variable. In debug mode program will exit. * @param name attribute name, must be unique. If name exists it removes the current variable. In debug mode program will exit.
* @param isGlobal * @param type attribute type string or numeric type
* @param type * @param value information about the attribute
* @param value * @param globalDimensionsCSV comma separated variable global dimensions (e.g. "gNx,gNy,gNz"), if globalOffsetsCSV is also empty variable is local
* @param globalOffsetsCSV comma separated variable global dimensions (e.g. "gNx,gNy,gNz"), if globalOffsetsCSV is also empty variable is local
*/ */
void SetAttribute( const std::string name, const bool isGlobal, const std::string type, const std::string value ); void CreateAttribute( const std::string name, const std::string type, const std::string value,
const std::string globalDimensionsCSV, const std::string globalOffsetsCSV );
/** void Close( ); ///< set m_IsOpen to false and sets m_BufferName and m_AccessMode to empty
* @brief Sets m_Transport with available supported method
* @param method supported values in SSupport.h TransportMethods
* @param priority numeric priority for the I/O to schedule this write with others that might be pending
* @param iteration iterations between writes of a group to gauge how quickly this data should be evacuated from the compute node
* @param mpiComm MPI communicator from User->ADIOS->Group
*/
void SetTransport( const std::string method, const unsigned int priority, const unsigned int iteration,
const MPI_Comm mpiComm );
/** /**
...@@ -127,18 +108,27 @@ public: ...@@ -127,18 +108,27 @@ public:
private: private:
const std::string& m_HostLanguage; ///< reference to class ADIOS m_HostLanguage, this erases the copy constructor. Might be moved later to non-reference const const std::string& m_HostLanguage; ///< reference to class ADIOS m_HostLanguage, this erases the copy constructor. Might be moved later to non-reference const
const bool m_DebugMode = false; ///< if true will do more checks, exceptions, warnings, expect slower code const bool m_DebugMode = false; ///< if true will do more checks, exceptions, warnings, expect slower code, known at compile time
/** std::map< std::string, std::pair< std::string, unsigned int > > m_Variables; ///< Makes variable name unique, key: variable name, value: pair.first = type, pair.second = index in corresponding vector of CVariable
* @brief Contains all group variables (from XML Config file).
* <pre> std::vector< SVariable<char> > m_Char; ///< Key: variable name, Value: variable of type char
* Key: std::string unique variable name std::vector< SVariable<unsigned char> > m_UChar; ///< Key: variable name, Value: variable of type unsigned char
* Value: Polymorphic value is always unique child defined in SVariableTemplate.h, allow different variable types std::vector< SVariable<short> > m_Short; ///< Key: variable name, Value: variable of type short
* </pre> std::vector< SVariable<unsigned short> > m_UShort; ///< Key: variable name, Value: variable of type unsigned short
*/ std::vector< SVariable<int> > m_Int; ///< Key: variable name, Value: variable of type int
std::map< std::string, CVariable > m_Variables; std::vector< SVariable<unsigned int> > m_UInt; ///< Key: variable name, Value: variable of type unsigned int
std::vector< std::string > m_VariableTransforms; ///< if a variable has a transform it fills this container, the variable hold an index std::vector< SVariable<long int> > m_LInt; ///< Key: variable name, Value: variable of type long int
std::vector< SVariable<unsigned long int> > m_ULInt; ///< Key: variable name, Value: variable of type unsigned long int
std::vector< SVariable<long long int> > m_LLInt; ///< Key: variable name, Value: variable of type long long int
std::vector< SVariable<unsigned long long int> > m_ULLInt; ///< Key: variable name, Value: variable of type unsigned long long int
std::vector< SVariable<float> > m_Float; ///< Key: variable name, Value: variable of type float
std::vector< SVariable<double> > m_Double; ///< Key: variable name, Value: variable of type double
std::vector< SVariable<long double> > m_LDouble; ///< Key: variable name, Value: variable of type double
std::set<std::string> m_SetVariables; ///< set of variables whose T* values have been set (no nullptr)
std::vector< std::string > m_Transforms; ///< if a variable has a transform it fills this container, the variable holds an index
/** /**
* @brief Contains all group attributes from SAttribute.h * @brief Contains all group attributes from SAttribute.h
...@@ -151,8 +141,9 @@ private: ...@@ -151,8 +141,9 @@ private:
std::vector< std::pair< std::string, std::string > > m_GlobalBounds; ///< if a variable or an attribute is global it fills this container, from global-bounds in XML File, data in global space, pair.first = global dimensions, pair.second = global bounds std::vector< std::pair< std::string, std::string > > m_GlobalBounds; ///< if a variable or an attribute is global it fills this container, from global-bounds in XML File, data in global space, pair.first = global dimensions, pair.second = global bounds
std::string m_CurrentTransport; ///< current transport method associated with this group std::string m_Transport; ///< current transport method associated with this group
std::string m_OutputName; ///< associated output (file, stream, buffer, etc.) if the Group is opened. std::string m_BufferName; ///< associated buffer (file, stream, vector, etc.) if the Group is opened.
std::string m_AccessMode; /// associated access mode for associated buffer from m_BufferName
unsigned long int m_SerialSize; ///< size used for potential serialization of metadata into a std::vector<char>. Counts sizes from m_Variables, m_Attributes, m_GlobalBounds unsigned long int m_SerialSize; ///< size used for potential serialization of metadata into a std::vector<char>. Counts sizes from m_Variables, m_Attributes, m_GlobalBounds
...@@ -162,11 +153,23 @@ private: ...@@ -162,11 +153,23 @@ private:
*/ */
void ParseXMLGroup( const std::string& xmlGroup ); void ParseXMLGroup( const std::string& xmlGroup );
const unsigned int CurrentTypeIndex( const std::string type ) const noexcept;
/**
* Used by SetVariable and SetAttribute to check if global bounds exist in m_GlobalBounds
* @param globalDimensionsCSV comma separated variables defining global dimensions (e.g. "Nx,NY,Nz")
* @param globalOffsetsCSV comma separated variables defining global offsets (e.g. "oNx,oNY,oNz")
* @return -1 if not global -> both inputs are empty, otherwise index in m_GlobalBounds if exist or create a new element in m_GlobalBounds;
*/
const int SetGlobalBounds( const std::string globalDimensionsCSV, const std::string globalOffsetsCSV ) noexcept;
/** /**
* Function that checks if transport method is valid, called from overloaded SetTransform functions * Used by SetVariable to check if transform exists in m_Transform
* @param method transport method to be checked from SSupport * @param transform variable transformation method (e.g. bzip2, szip, zlib )
* @return -1 variable is not associated with a transform, otherwise index in m_Transforms
*/ */
void CheckTransport( const std::string method ); const int SetTransforms( const std::string transform ) noexcept;
}; };
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
/// \cond EXCLUDE_FROM_DOXYGEN /// \cond EXCLUDE_FROM_DOXYGEN
#include <core/CVariable.h> #include <core/SVariable.h>
#include <string> #include <string>
/// \endcond /// \endcond
...@@ -29,17 +29,14 @@ public: ...@@ -29,17 +29,14 @@ public:
const std::string m_Method; ///< name of the transformation method const std::string m_Method; ///< name of the transformation method
const unsigned int m_CompressionLevel; ///< depends on library implementation const unsigned int m_CompressionLevel; ///< depends on library implementation
CVariableBase& m_Variable; ///< variable to be transformed
/** /**
* Initialize parent method * Initialize parent method
* @param method zlib, bzip2, szip * @param method zlib, bzip2, szip
* @param variable * @param variable
*/ */
CTransform( const std::string method, const unsigned int compressionLevel, CVariableBase& variable ): CTransform( const unsigned int compressionLevel ):
m_Method( method ), m_CompressionLevel( compressionLevel )
m_CompressionLevel( compressionLevel ),
m_Variable( variable )
{ } { }
virtual ~CTransform( ){ }; virtual ~CTransform( ){ };
......
...@@ -18,7 +18,6 @@ ...@@ -18,7 +18,6 @@
#include "public/mpidummy.h" #include "public/mpidummy.h"
#endif #endif
#include <core/CVariable.h>
namespace adios namespace adios
...@@ -29,7 +28,6 @@ class CTransport ...@@ -29,7 +28,6 @@ class CTransport
public: public:
const std::string m_Method; ///< method name, must be defined in SSupport.h TransportMethods
const unsigned int m_Priority; ///< writing priority for this transport const unsigned int m_Priority; ///< writing priority for this transport
const unsigned int m_Iteration; ///< iteration number for this transport const unsigned int m_Iteration; ///< iteration number for this transport
MPI_Comm m_MPIComm; ///< passed MPI communicator MPI_Comm m_MPIComm; ///< passed MPI communicator
...@@ -50,7 +48,6 @@ public: ...@@ -50,7 +48,6 @@ public:
*/ */
CTransport( const std::string method, const unsigned int priority, const unsigned int iteration, CTransport( const std::string method, const unsigned int priority, const unsigned int iteration,
MPI_Comm mpiComm, const bool debugMode ): MPI_Comm mpiComm, const bool debugMode ):
m_Method( method ),
m_Priority( priority ), m_Priority( priority ),
m_Iteration( iteration ), m_Iteration( iteration ),
m_MPIComm( mpiComm ), m_MPIComm( mpiComm ),
...@@ -71,9 +68,6 @@ public: ...@@ -71,9 +68,6 @@ public:
*/ */
virtual void Open( const std::string outputName, const std::string accessMode ) = 0; virtual void Open( const std::string outputName, const std::string accessMode ) = 0;
virtual void Write( const CVariableBase& variable )
{ };
virtual void Close( ) = 0; //here think what needs to be passed virtual void Close( ) = 0; //here think what needs to be passed
virtual void Finalize( ) virtual void Finalize( )
......
...@@ -5,8 +5,8 @@ ...@@ -5,8 +5,8 @@
* Author: wfg * Author: wfg
*/ */
#ifndef CVARIABLE_H_ #ifndef SVARIABLE_H_
#define CVARIABLE_H_ #define SVARIABLE_H_
/// \cond EXCLUDE_FROM_DOXYGEN /// \cond EXCLUDE_FROM_DOXYGEN
#include <string> #include <string>
...@@ -15,36 +15,21 @@ ...@@ -15,36 +15,21 @@
#include <sstream> #include <sstream>
/// \endcond /// \endcond
#include "core/CGroup.h" //friend class (manager)
namespace adios namespace adios
{ {
/** /**
* @param Base (parent) class for template derived (child) class CVariable. Required to put CVariable objects in STL containers. * @param Base (parent) class for template derived (child) class CVariable. Required to put CVariable objects in STL containers.
*/ */
class CVariable template< class T >
struct SVariable
{ {
public:
/**
* Unique constructor for local and global variables
* @param type variable type, must be in SSupport::Datatypes[hostLanguage] in public/SSupport.h
* @param dimensionsCSV comma separated variable local dimensions (e.g. "Nx,Ny,Nz")
* @param transformIndex
* @param globalIndex
*/
CVariable( const std::string type, const std::string dimensionsCSV,
const int globalIndex, const int transformIndex );
virtual ~CVariable( );
void* m_Values;
protected:
const std::string m_Type; ///< mandatory, double, float, unsigned integer, integer, etc.
const std::string m_DimensionsCSV; ///< comma separated list for variables to search for local dimensions const std::string m_DimensionsCSV; ///< comma separated list for variables to search for local dimensions
const T* m_Values;
const int m_TransformIndex; ///< if global > 0, index corresponds to , if local then = -1
const int m_GlobalBoundsIndex; ///< if global > 0, index corresponds to global-bounds in m_GlobalBounds in CGroup, if local then = -1
}; };
...@@ -52,4 +37,4 @@ protected: ...@@ -52,4 +37,4 @@ protected:
#endif /* CVARIABLE_H_ */ #endif /* SVARIABLE_H_ */
/*
* GroupTemplates.h
*
* Created on: Nov 7, 2016
* Author: wfg
*/
#ifndef ADIOSTEMPLATES_H_
#define ADIOSTEMPLATES_H_
#include "core/CGroup.h"
#include "core/SVariable.h"
#include "core/CCapsule.h"
namespace adios
{
template< class T >
void WriteVariable( const std::string variableName, const T* values, CGroup& group, CCapsule& capsule ) noexcept
{
auto itVariable = group.m_Variables.find( variableName );
const std::string type( itVariable->second.first );
const unsigned int index( itVariable->second.second );
group.m_SetVariables.insert( variableName );
if( std::is_same<T,char> )
{
SVariable<char>& variable = group.m_Char[index];
variable.m_Values = values;
capsule.WriteVariableToBuffer( group, variable );
}
else if( std::is_same<T,unsigned char> )
{
SVariable<unsigned char>& variable = group.m_UChar[index];
variable.m_Values = values;
capsule.WriteVariableToBuffer( group, variable );
}
else if( std::is_same<T,short> )
{
SVariable<short>& variable = group.m_Short[index];
variable.m_Values = values;
capsule.WriteVariableToBuffer( group, variable );
}
else if( std::is_same<T,unsigned short> )
{
SVariable<unsigned short>& variable = group.m_UShort[index];
variable.m_Values = values;
capsule.WriteVariableToBuffer( group, variable );
}
else if( std::is_same<T,int> )
{
SVariable<int>& variable = group.m_Int[index];
variable.m_Values = values;
capsule.WriteVariableToBuffer( group, variable );
}
else if( std::is_same<T,unsigned int> )
{
SVariable<unsigned int>& variable = group.m_Int[index];
variable.m_Values = values;
capsule.WriteVariableToBuffer( group, variable );
}
else if( std::is_same<T,long int> )
{
SVariable<long int>& variable = group.m_LInt[index];
variable.m_Values = values;
capsule.WriteVariableToBuffer( group, variable );
}
else if( std::is_same<T,long long int> )
{
SVariable<long int>& variable = group.m_LLInt[index];
variable.m_Values = values;
capsule.WriteVariableToBuffer( group, variable );
}
else if( std::is_same<T,unsigned long long int> )
{
SVariable<unsigned long long int>& variable = group.m_ULLInt[index];
variable.m_Values = values;
capsule.WriteVariableToBuffer( group, variable );
}
else if( std::is_same<T,float> )
{
SVariable<float>& variable = group.m_Float[index];
variable.m_Values = values;
capsule.WriteVariableToBuffer( group, variable );
}
else if( std::is_same<T,double> )
{
SVariable<double>& variable = group.m_Double[index];
variable.m_Values = values;
capsule.WriteVariableToBuffer( group, variable );
}
else if( std::is_same<T,long double> )
{
SVariable<double>& variable = group.m_Double[index];
variable.m_Values = values;
capsule.WriteVariableToBuffer( group, variable );
}
}
} //end namespace
#endif /* ADIOSTEMPLATES_H_ */
/*
ri * GroupFunctions.h helper functions for class CGroup
*
* Created on: Oct 27, 2016
* Author: wfg
*/
#ifndef GROUPFUNCTIONS_H_
#define GROUPFUNCTIONS_H_
/// \cond EXCLUDE_FROM_DOXYGEN
#include <string>
#include <map>
#include <memory> //unique_ptr
/// \endcond
#ifdef HAVE_MPI
#include <mpi.h>
#else
#include "public/mpidummy.h"
#endif
#include <core/CVariable.h>
#include "core/CTransport.h"
namespace adios
{
/**
* Create a language (C++, C, Fortran, etc.) supported type variable and add it to variables map
* @param name key in variables map
* @param type variable type, must be in SSupport::Datatypes[hostLanguage] in public/SSupport.h
* @param dimensionsCSV comma separated variable local dimensions (e.g. "Nx,Ny,Nz")
* @param transform method, format = lib or lib:level, where lib = zlib, bzip2, szip, and level=1:9
* @param globalDimensionsCSV comma separated variable global dimensions (e.g. "gNx,gNy,gNz"), if globalOffsetsCSV is also empty variable is local
* @param globalOffsetsCSV comma separated variable global dimensions (e.g. "gNx,gNy,gNz"), if globalOffsetsCSV is also empty variable is local
* @param variables map belonging to class CGroup
*/
void CreateVariableLanguage( const std::string name, const std::string type,
const std::string dimensionsCSV, const std::string transform,
const std::string globalDimensionsCSV, const std::string globalOffsetsCSV,
std::map<std::string, std::shared_ptr<CVariableBase> >& variables ) noexcept;
/**
* Looks up the variable type and cast the appropriate values type to m_Value in CVariable
* @param variables always a derived CVariable object from CVariableBase
* @param values to be casted to the right type
*/
void SetVariableValues( CVariableBase& variable, const void* values ) noexcept;
/**
* Create a derived (child) class of CTransport in transport unique_ptr
* @param method supported values in SSupport.h TransportMethods
* @param priority numeric priority for the I/O to schedule this write with others that might be pending
* @param iteration iterations between writes of a group to gauge how quickly this data should be evacuated from the compute node
* @param mpiComm MPI communicator from User->ADIOS->Group
* @param transport passed from CGroup m_Transport member
*/
void CreateTransport( const std::string method, const unsigned int priority, const unsigned int iteration,
const MPI_Comm mpiComm, const bool debugMode, std::shared_ptr<CTransport>& transport ) noexcept;
} //end namespace
#endif /* GROUPFUNCTIONS_H_ */
...@@ -21,9 +21,9 @@ ...@@ -21,9 +21,9 @@
#endif #endif
#include "core/CGroup.h" #include "core/CGroup.h"
#include "core/CTransport.h" #include "core/CCapsule.h"
#include "core/CTransform.h"
#include "public/SSupport.h" #include "public/SSupport.h"
#include "functions/ADIOSTemplates.h"
namespace adios namespace adios
...@@ -70,6 +70,7 @@ public: // PUBLIC Constructors and Functions define the User Interface with ADIO ...@@ -70,6 +70,7 @@ public: // PUBLIC Constructors and Functions define the User Interface with ADIO
*/ */
ADIOS( const MPI_Comm mpiComm, const bool debugMode = false ); ADIOS( const MPI_Comm mpiComm, const bool debugMode = false );
~ADIOS( ); ///< virtual destructor overriden by children's own destructors ~ADIOS( ); ///< virtual destructor overriden by children's own destructors
/** /**
...@@ -86,7 +87,19 @@ public: // PUBLIC Constructors and Functions define the User Interface with ADIO ...@@ -86,7 +87,19 @@ public: // PUBLIC Constructors and Functions define the User Interface with ADIO
* @param variableName name of existing scalar or vector variable in the XML file or created with CreateVariable * @param variableName name of existing scalar or vector variable in the XML file or created with CreateVariable
* @param values pointer to the variable values passed from the user application, use dynamic_cast to check that pointer is of the same value type * @param values pointer to the variable values passed from the user application, use dynamic_cast to check that pointer is of the same value type
*/ */
void Write( const std::string groupName, const std::string variableName, const void* values ); template< class T>
void Write( const std::string groupName, const std::string variableName, T* values )
{
auto itGroup = m_Groups.find( groupName );
if( m_DebugMode == true )
{
CheckGroup( itGroup, groupName, " from call to Write with variable " + variableName );
if( itGroup->second.m_IsOpen == false )
throw std::invalid_argument( "ERROR: group " + groupName + " is not open in Write function.\n" );
}
WriteVariable( variableName, values, itGroup->second, m_Capsule );
}
/** /**
* Close a particular group, group will be out of scope and destroyed * Close a particular group, group will be out of scope and destroyed
...@@ -118,7 +131,7 @@ private: ...@@ -118,7 +131,7 @@ private:
*/ */
std::map< std::string, CGroup > m_Groups; std::map< std::string, CGroup > m_Groups;
std::map< std::string, std::shared_ptr<CTransform> > m_Transforms; CCapsule m_Capsule; ///< manager of data transports, transforms and movement operations
/** /**
* @brief Maximum buffer size in ADIOS write() operation. From buffer max - size - MB in XML file * @brief Maximum buffer size in ADIOS write() operation. From buffer max - size - MB in XML file
......
...@@ -26,7 +26,6 @@ public: ...@@ -26,7 +26,6 @@ public:
~CDIMES( ); ~CDIMES( );
void Write( const CVariable& variable );
}; };
......
...@@ -25,7 +25,6 @@ public: ...@@ -25,7 +25,6 @@ public:
~CDataspaces( ); ~CDataspaces( );
void Write( const CVariable& variable );
}; };
......
...@@ -30,8 +30,6 @@ public: ...@@ -30,8 +30,6 @@ public:
void Open( const std::string fileName, const std::string accessMode ); void Open( const std::string fileName, const std::string accessMode );
void Write( const CVariableBase& variable );
void Close( ); void Close( );
private: private:
......
...@@ -24,7 +24,6 @@ public: ...@@ -24,7 +24,6 @@ public:
~CFlexpath( ); ~CFlexpath( );
void Write( const CVariable& variable );
}; };
......
...@@ -24,8 +24,6 @@ public: ...@@ -24,8 +24,6 @@ public:
~CICEE( ); ~CICEE( );
void Write( const CVariable& variable );
}; };
......
...@@ -26,7 +26,6 @@ public: ...@@ -26,7 +26,6 @@ public:
~CMPI( ); ~CMPI( );
void Write( const CVariable& variable );
}; };
......
...@@ -26,7 +26,6 @@ public: ...@@ -26,7 +26,6 @@ public:
~CMPIAggregate( ); ~CMPIAggregate( );
void Write( const CVariable& variable );
}; };
......
...@@ -25,7 +25,6 @@ public: ...@@ -25,7 +25,6 @@ public:
~CMPILustre( ); ~CMPILustre( );
void Write( const CVariable& variable );
}; };
......
...@@ -26,8 +26,6 @@ public: ...@@ -26,8 +26,6 @@ public:
~CNetCDF4( ); ~CNetCDF4( );
void Write( const CVariable& variable );
}; };
......
...@@ -26,7 +26,6 @@ public: ...@@ -26,7 +26,6 @@ public:
~CPHDF5( ); ~CPHDF5( );
void Write( const CVariable& variable );
}; };
......
...@@ -27,8 +27,6 @@ public: ...@@ -27,8 +27,6 @@ public:
void Open( const std::string fileName, const std::string accessMode ); void Open( const std::string fileName, const std::string accessMode );
void Write( const CVariableBase& variable );
void Close( ); void Close( );
}; };
......
...@@ -25,8 +25,6 @@ public: ...@@ -25,8 +25,6 @@ public:
~CVarMerge( ); ~CVarMerge( );
void Write( const CVariable& variable );
}; };
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment