Field3D
Field3DFileHDF5.h File Reference

Contains the Field3DFileHDF5 classes. More...

#include <list>
#include <string>
#include <vector>
#include <hdf5.h>
#include <boost/intrusive_ptr.hpp>
#include "EmptyField.h"
#include "Field.h"
#include "FieldCache.h"
#include "FieldMetadata.h"
#include "ClassFactory.h"
#include "Hdf5Util.h"
#include "ns.h"

Go to the source code of this file.

Classes

class  Field3DFileHDF5Base
 
struct  Field3DFileHDF5Base::LayerInfo
 
class  Field3DInputFileHDF5
 Provides reading of .f3d (internally, hdf5) files. More...
 
class  Field3DOutputFileHDF5
 Provides writing of .f3d (internally, hdf5) files. More...
 
class  FileHDF5::Layer
 
class  FileHDF5::Partition
 
struct  InputFileHDF5::ParseLayersInfo
 struct used to pass the class and partition info back to the parseLayers() callback More...
 

Namespaces

namespace  FileHDF5
 Namespace for file I/O specifics.
 
namespace  InputFileHDF5
 Namespace for file input specifics.
 

Functions

FIELD3D_API herr_t InputFileHDF5::parseLayers (hid_t loc_id, const char *partitionName, const H5L_info_t *linfo, void *opdata)
 Gets called from readPartitionAndLayerInfo to check each group found under the root of the file. It checks to see if it can find a "partition" and then passes that to writePartition.
 
FIELD3D_API herr_t InputFileHDF5::parsePartitions (hid_t loc_id, const char *partitionName, const H5L_info_t *linfo, void *opdata)
 Gets called from readPartitionAndLayerInfo to check each group found under the root of the file. It checks to see if it can find a "partition" and then passes that to writePartition.
 
classFactory IO functions
template<class Data_T >
Field< Data_T >::Ptr readField (const std::string &className, hid_t layerGroup, const std::string &filename, const std::string &layerPath)
 This function creates a FieldIO instance based on className which then reads the field data from layerGroup location.
 
FIELD3D_API FieldMapping::Ptr readFieldMapping (hid_t mappingGroup)
 This function creates a FieldMappingIO instance based on className read from mappingGroup location which then reads FieldMapping data.
 
FIELD3D_API bool writeField (hid_t layerGroup, FieldBase::Ptr field)
 This function creates a FieldIO instance based on field->className() which then writes the field data in layerGroup location.
 
FIELD3D_API bool writeFieldMapping (hid_t mappingGroup, FieldMapping::Ptr mapping)
 This function creates a FieldMappingIO instance based on mapping->className() which then writes FieldMapping data to mappingGroup location.
 

Detailed Description

Contains the Field3DFileHDF5 classes.

OSS sanitized

Definition in file Field3DFileHDF5.h.

Function Documentation

◆ readField()

template<class Data_T >
Field< Data_T >::Ptr readField ( const std::string & className,
hid_t layerGroup,
const std::string & filename,
const std::string & layerPath )

This function creates a FieldIO instance based on className which then reads the field data from layerGroup location.

Definition at line 1644 of file Field3DFileHDF5.h.

1646{
1647
1649
1650 typedef typename Field<Data_T>::Ptr FieldPtr;
1651
1652 FieldIO::Ptr io = factory.createFieldIO(className);
1653 if (!io) {
1654 Msg::print(Msg::SevWarning, "Unable to find class type: " +
1655 className);
1656 return FieldPtr();
1657 }
1658
1660 FieldBase::Ptr field = io->read(layerGroup, filename, layerPath, typeEnum);
1661
1662 if (!field) {
1663 // We don't need to print a message, because it could just be that
1664 // a layer of the specified data type and name couldn't be found
1665 return FieldPtr();
1666 }
1667
1668 FieldPtr result = field_dynamic_cast<Field<Data_T> >(field);
1669
1670 if (result)
1671 return result;
1672
1673 return FieldPtr();
1674}
DataTypeEnum
Definition Traits.h:108
FieldIO::Ptr createFieldIO(const std::string &className) const
Instances an IO object by name.
static ClassFactory & singleton()
}
boost::intrusive_ptr< FieldBase > Ptr
Definition Field.h:97
boost::intrusive_ptr< FieldIO > Ptr
Definition FieldIO.h:91
boost::intrusive_ptr< Field > Ptr
Definition Field.h:395
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
@ SevWarning
Definition Log.h:68
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:70
static DataTypeEnum typeEnum()

References ClassFactory::createFieldIO(), field_dynamic_cast(), Msg::print(), Msg::SevWarning, ClassFactory::singleton(), and DataTypeTraits< T >::typeEnum().

Referenced by Field3DInputFile::readLayer(), and Field3DInputFileHDF5::readLayer().

◆ writeField()

FIELD3D_API bool writeField ( hid_t layerGroup,
FieldBase::Ptr field )

This function creates a FieldIO instance based on field->className() which then writes the field data in layerGroup location.

Definition at line 1589 of file Field3DFileHDF5.cpp.

1590{
1592
1593 FieldIO::Ptr io = factory.createFieldIO(field->className());
1594 assert(io != 0);
1595 if (!io) {
1596 Msg::print(Msg::SevWarning, "Unable to find class type: " +
1597 field->className());
1598 return false;
1599 }
1600
1601 // Add class name attribute
1602 if (!writeAttribute(layerGroup, k_classNameAttrName,
1603 field->className())) {
1604 Msg::print(Msg::SevWarning, "Error adding class name attribute.");
1605 return false;
1606 }
1607
1608 return io->write(layerGroup, field);
1609}
FIELD3D_API bool writeAttribute(hid_t location, const std::string &attrName, const std::string &value)
Writes a string attribute.

References ClassFactory::createFieldIO(), Msg::print(), Msg::SevWarning, ClassFactory::singleton(), and Hdf5Util::writeAttribute().

Referenced by Field3DOutputFile::writeLayer(), and Field3DOutputFileHDF5::writeLayer().

◆ readFieldMapping()

FIELD3D_API FieldMapping::Ptr readFieldMapping ( hid_t mappingGroup)

This function creates a FieldMappingIO instance based on className read from mappingGroup location which then reads FieldMapping data.

Definition at line 1613 of file Field3DFileHDF5.cpp.

1614{
1616
1617 std::string className;
1618
1619 if (!readAttribute(mappingGroup, k_mappingTypeAttrName, className)) {
1620 Msg::print(Msg::SevWarning, "Couldn't find " + k_mappingTypeAttrName +
1621 " attribute");
1622 return FieldMapping::Ptr();
1623 }
1624
1625 FieldMappingIO::Ptr io = factory.createFieldMappingIO(className);
1626 assert(io != 0);
1627 if (!io) {
1628 Msg::print(Msg::SevWarning, "Unable to find class type: " +
1629 className);
1630 return FieldMapping::Ptr();
1631 }
1632
1633
1634 FieldMapping::Ptr mapping = io->read(mappingGroup);
1635 if (!mapping) {
1636 Msg::print(Msg::SevWarning, "Couldn't read mapping");
1637 return FieldMapping::Ptr();
1638 }
1639
1640 return mapping;
1641}
FieldMappingIO::Ptr createFieldMappingIO(const std::string &className) const
Instances an IO object by name.
boost::intrusive_ptr< FieldMappingIO > Ptr
boost::intrusive_ptr< FieldMapping > Ptr
FIELD3D_API bool readAttribute(hid_t location, const std::string &attrName, std::string &value)
Reads a string attribute.

References ClassFactory::createFieldMappingIO(), Msg::print(), Hdf5Util::readAttribute(), Msg::SevWarning, and ClassFactory::singleton().

Referenced by Field3DInputFile::readPartitionAndLayerInfo(), and Field3DInputFileHDF5::readPartitionAndLayerInfo().

◆ writeFieldMapping()

FIELD3D_API bool writeFieldMapping ( hid_t mappingGroup,
FieldMapping::Ptr mapping )

This function creates a FieldMappingIO instance based on mapping->className() which then writes FieldMapping data to mappingGroup location.

Definition at line 1645 of file Field3DFileHDF5.cpp.

1646{
1648
1649 std::string className = mapping->className();
1650
1651 if (!writeAttribute(mappingGroup, k_mappingTypeAttrName, className)) {
1652 Msg::print(Msg::SevWarning, "Couldn't add " + className + " attribute");
1653 return false;
1654 }
1655
1656 FieldMappingIO::Ptr io = factory.createFieldMappingIO(className);
1657 assert(io != 0);
1658 if (!io) {
1659 Msg::print(Msg::SevWarning, "Unable to find class type: " +
1660 className);
1661 return false;
1662 }
1663
1664 return io->write(mappingGroup, mapping);
1665}

References ClassFactory::createFieldMappingIO(), Msg::print(), Msg::SevWarning, ClassFactory::singleton(), and Hdf5Util::writeAttribute().

Referenced by Field3DOutputFileHDF5::writeMapping().