Field3D
Field3DFile.h File Reference

Contains the Field3DFile classesOSS sanitized. More...

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

Go to the source code of this file.

Classes

class  Field3DFileBase
 
struct  Field3DFileBase::LayerInfo
 
class  Field3DInputFile
 Provides reading of .f3d (internally, hdf5) files.Refer to using_files for examples of how to use this in your code. More...
 
class  Field3DOutputFile
 Provides writing of .f3d (internally, hdf5) files. More...
 
class  File::Layer
 
class  File::Partition
 
struct  InputFile::ParseLayersInfo
 struct used to pass the class and partition info back to the parseLayers() callback More...
 

Namespaces

 File
 Namespace for file I/O specifics.
 
 InputFile
 Namespace for file input specifics.
 

Constant Groups

 File
 Namespace for file I/O specifics.
 
 InputFile
 Namespace for file input specifics.
 

Functions

herr_t InputFile::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. More...
 
herr_t InputFile::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. More...
 
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. More...
 
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. More...
 
FieldMapping::Ptr readFieldMapping (hid_t mappingGroup)
 This function creates a FieldMappingIO instance based on className read from mappingGroup location which then reads FieldMapping data. More...
 
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. More...
 

Detailed Description

Contains the Field3DFile classes

OSS sanitized.

Definition in file Field3DFile.h.

Function Documentation

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 1576 of file Field3DFile.h.

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

1578 {
1579 
1581 
1582  typedef typename Field<Data_T>::Ptr FieldPtr;
1583 
1584  FieldIO::Ptr io = factory.createFieldIO(className);
1585  assert(io != 0);
1586  if (!io) {
1587  Msg::print(Msg::SevWarning, "Unable to find class type: " +
1588  className);
1589  return FieldPtr();
1590  }
1591 
1593  FieldBase::Ptr field = io->read(layerGroup, filename, layerPath, typeEnum);
1594 
1595  if (!field) {
1596  // We don't need to print a message, because it could just be that
1597  // a layer of the specified data type and name couldn't be found
1598  return FieldPtr();
1599  }
1600 
1601  FieldPtr result = field_dynamic_cast<Field<Data_T> >(field);
1602 
1603  if (result)
1604  return result;
1605 
1606  return FieldPtr();
1607 }
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 1558 of file Field3DFile.cpp.

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

Referenced by Field3DOutputFile::writeLayer().

1559 {
1561 
1562  FieldIO::Ptr io = factory.createFieldIO(field->className());
1563  assert(io != 0);
1564  if (!io) {
1565  Msg::print(Msg::SevWarning, "Unable to find class type: " +
1566  field->className());
1567  return false;
1568  }
1569 
1570  // Add class name attribute
1571  if (!writeAttribute(layerGroup, k_classNameAttrName,
1572  field->className())) {
1573  Msg::print(Msg::SevWarning, "Error adding class name attribute.");
1574  return false;
1575  }
1576 
1577  return io->write(layerGroup, field);
1578 }
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 1582 of file Field3DFile.cpp.

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

Referenced by Field3DInputFile::readPartitionAndLayerInfo().

1583 {
1585 
1586  std::string className;
1587 
1588  if (!readAttribute(mappingGroup, k_mappingTypeAttrName, className)) {
1589  Msg::print(Msg::SevWarning, "Couldn't find " + k_mappingTypeAttrName +
1590  " attribute");
1591  return FieldMapping::Ptr();
1592  }
1593 
1594  FieldMappingIO::Ptr io = factory.createFieldMappingIO(className);
1595  assert(io != 0);
1596  if (!io) {
1597  Msg::print(Msg::SevWarning, "Unable to find class type: " +
1598  className);
1599  return FieldMapping::Ptr();
1600  }
1601 
1602 
1603  FieldMapping::Ptr mapping = io->read(mappingGroup);
1604  if (!mapping) {
1605  Msg::print(Msg::SevWarning, "Couldn't read mapping");
1606  return FieldMapping::Ptr();
1607  }
1608 
1609  return mapping;
1610 }
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 1614 of file Field3DFile.cpp.

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

Referenced by Field3DOutputFile::writeMapping().

1615 {
1617 
1618  std::string className = mapping->className();
1619 
1620  if (!writeAttribute(mappingGroup, k_mappingTypeAttrName, className)) {
1621  Msg::print(Msg::SevWarning, "Couldn't add " + className + " attribute");
1622  return false;
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 false;
1631  }
1632 
1633  return io->write(mappingGroup, mapping);
1634 }