Field3D
GenericLazyLoadAction< Field_T > Class Template Reference

#include <MIPFieldIO.h>

Inheritance diagram for GenericLazyLoadAction< Field_T >:
LazyLoadAction< Field_T >

Public Types

typedef boost::shared_ptr< GenericLazyLoadAction< Field_T > > Ptr
 
typedef std::vector< PtrVec
 
- Public Types inherited from LazyLoadAction< Field_T >
typedef boost::shared_ptr< LazyLoadAction< Field_T > > Ptr
 
typedef std::vector< PtrVec
 

Public Member Functions

 GenericLazyLoadAction (const std::string &filename, const std::string &path, const DataTypeEnum &typeEnum)
 
virtual Field_T::Ptr load () const
 Performs the loading of the pre-determined field and returns a pointer to it. More...
 
 ~GenericLazyLoadAction ()
 
- Public Member Functions inherited from LazyLoadAction< Field_T >
virtual ~LazyLoadAction ()
 

Private Attributes

const std::string m_filename
 Filename. More...
 
const std::string m_path
 Path in file. More...
 
const DataTypeEnum m_typeEnum
 Data type enum. More...
 

Static Private Attributes

static boost::mutex ms_hdf5Mutex
 HDF5 access mutex. More...
 

Detailed Description

template<class Field_T>
class GenericLazyLoadAction< Field_T >

Definition at line 196 of file MIPFieldIO.h.

Member Typedef Documentation

template<class Field_T >
typedef boost::shared_ptr<GenericLazyLoadAction<Field_T> > GenericLazyLoadAction< Field_T >::Ptr

Definition at line 203 of file MIPFieldIO.h.

template<class Field_T >
typedef std::vector<Ptr> GenericLazyLoadAction< Field_T >::Vec

Definition at line 204 of file MIPFieldIO.h.

Constructor & Destructor Documentation

template<class Field_T >
GenericLazyLoadAction< Field_T >::GenericLazyLoadAction ( const std::string &  filename,
const std::string &  path,
const DataTypeEnum typeEnum 
)
inline

Definition at line 208 of file MIPFieldIO.h.

212  m_filename(filename), m_path(path), m_typeEnum(typeEnum)
213  {
214  // Empty
215  }
const std::string m_path
Path in file.
Definition: MIPFieldIO.h:267
const std::string m_filename
Filename.
Definition: MIPFieldIO.h:265
const DataTypeEnum m_typeEnum
Data type enum.
Definition: MIPFieldIO.h:269
template<class Field_T >
GenericLazyLoadAction< Field_T >::~GenericLazyLoadAction ( )
inline

Definition at line 217 of file MIPFieldIO.h.

218  { }

Member Function Documentation

template<class Field_T >
virtual Field_T::Ptr GenericLazyLoadAction< Field_T >::load ( ) const
inlinevirtual

Performs the loading of the pre-determined field and returns a pointer to it.

Implements LazyLoadAction< Field_T >.

Definition at line 222 of file MIPFieldIO.h.

References ClassFactory::createFieldIO(), field_dynamic_cast(), g_hdf5Mutex, Msg::print(), and ClassFactory::singleton().

223  {
224  using namespace Hdf5Util;
225 
226  hid_t file;
227  boost::shared_ptr<H5ScopedGopen> levelGroup;
228 
229  {
230  // Hold lock while calling H5Fopen
231  GlobalLock lock(g_hdf5Mutex);
232 
233  // Open the HDF5 file
234  file = H5Fopen(m_filename.c_str(), H5F_ACC_RDONLY, H5P_DEFAULT);
235  if (file < 0) {
236  throw Exc::NoSuchFileException(m_filename);
237  }
238  levelGroup.reset(new H5ScopedGopen(file, m_path));
239  }
240 
241  // Instantiate I/O
242  FieldIO::Ptr io =
243  ClassFactory::singleton().createFieldIO(Field_T::staticClassName());
244  // Read the data
245  FieldBase::Ptr field = io->read(*levelGroup, m_filename,
246  m_path, m_typeEnum);
247 
248  {
249  // Hold lock again
250  GlobalLock lock(g_hdf5Mutex);
251  // Close the file
252  if (H5Fclose(file) < 0) {
253  Msg::print("Error closing file: " + m_filename);
254  }
255  }
256  // Done
257  return field_dynamic_cast<Field_T>(field);
258  }
const std::string m_path
Path in file.
Definition: MIPFieldIO.h:267
Field_T::Ptr field_dynamic_cast(RefBase::Ptr field)
Dynamic cast that uses string-comparison in order to be safe even after an object crosses a shared li...
Definition: RefCount.h:256
Contains utility functions and classes for Hdf5 files.
Definition: Hdf5Util.h:86
boost::intrusive_ptr< FieldBase > Ptr
Definition: Field.h:97
static ClassFactory & singleton()
}
boost::recursive_mutex::scoped_lock GlobalLock
Definition: Hdf5Util.h:78
FIELD3D_API void print(Severity severity, const std::string &message)
Sends the string to the assigned output, prefixing the message with the severity. ...
Definition: Log.cpp:66
FIELD3D_NAMESPACE_OPEN FIELD3D_API boost::recursive_mutex g_hdf5Mutex
Definition: Hdf5Util.cpp:67
const std::string m_filename
Filename.
Definition: MIPFieldIO.h:265
const DataTypeEnum m_typeEnum
Data type enum.
Definition: MIPFieldIO.h:269
FieldIO::Ptr createFieldIO(const std::string &className) const
Instances an IO object by name.
boost::intrusive_ptr< FieldIO > Ptr
Definition: FieldIO.h:90
Scoped object - opens a group on creation and closes it on destruction.
Definition: Hdf5Util.h:194

Member Data Documentation

template<class Field_T >
const std::string GenericLazyLoadAction< Field_T >::m_filename
private

Filename.

Definition at line 265 of file MIPFieldIO.h.

template<class Field_T >
const std::string GenericLazyLoadAction< Field_T >::m_path
private

Path in file.

Definition at line 267 of file MIPFieldIO.h.

template<class Field_T >
const DataTypeEnum GenericLazyLoadAction< Field_T >::m_typeEnum
private

Data type enum.

Definition at line 269 of file MIPFieldIO.h.

template<class Field_T >
boost::mutex GenericLazyLoadAction< Field_T >::ms_hdf5Mutex
staticprivate

HDF5 access mutex.

Definition at line 272 of file MIPFieldIO.h.


The documentation for this class was generated from the following file: