Field3D
|
Provides writing of .f3d (internally, hdf5) files. More...
#include <Field3DFile.h>
Public Types | |
enum | CreateMode { OverwriteMode, FailOnExisting, OverwriteMode, FailOnExisting } |
enum | CreateMode { OverwriteMode, FailOnExisting, OverwriteMode, FailOnExisting } |
Public Member Functions | |
bool | create (const std::string &filename, CreateMode cm=OverwriteMode) |
Creates a .f3d file on disk. | |
bool | create (const std::string &filename, CreateMode cm=OverwriteMode) |
Creates a .f3d file on disk. | |
bool | writeGlobalMetadata () |
This routine is call if you want to write out global metadata to disk. | |
bool | writeGlobalMetadata () |
This routine is call if you want to write out global metadata to disk. | |
bool | writeGroupMembership () |
This routine is called just before closing to write out any group membership to disk. | |
bool | writeGroupMembership () |
This routine is called just before closing to write out any group membership to disk. | |
Constructors & destructor | |
Field3DOutputFile () | |
virtual | ~Field3DOutputFile () |
Field3DOutputFile () | |
virtual | ~Field3DOutputFile () |
Writing layer to disk | |
template<class Data_T > | |
bool | writeScalarLayer (const std::string &layerName, typename Field< Data_T >::Ptr layer) |
Writes a scalar layer to the "Default" partition. | |
template<class Data_T > | |
bool | writeVectorLayer (const std::string &layerName, typename Field< FIELD3D_VEC3_T< Data_T > >::Ptr layer) |
Writes a vector layer to the "Default" partition. | |
template<class Data_T > | |
bool | writeScalarLayer (const std::string &partitionName, const std::string &layerName, typename Field< Data_T >::Ptr layer) |
Writes a layer to a specific partition. The partition will be created if not specified. | |
template<class Data_T > | |
bool | writeScalarLayer (typename Field< Data_T >::Ptr layer) |
Writes a layer to a specific partition. The field name and attribute name are used for partition and layer, respectively. | |
template<class Data_T > | |
bool | writeVectorLayer (const std::string &partitionName, const std::string &layerName, typename Field< FIELD3D_VEC3_T< Data_T > >::Ptr layer) |
Writes a layer to a specific partition. The partition will be created if not specified. | |
template<class Data_T > | |
bool | writeVectorLayer (typename Field< FIELD3D_VEC3_T< Data_T > >::Ptr layer) |
Writes a layer to a specific partition. The field name and attribute name are used for partition and layer, respectively. | |
template<class Data_T > | |
bool | writeScalarLayer (const std::string &layerName, typename Field< Data_T >::Ptr layer) |
Writes a scalar layer to the "Default" partition. | |
template<class Data_T > | |
bool | writeVectorLayer (const std::string &layerName, typename Field< FIELD3D_VEC3_T< Data_T > >::Ptr layer) |
Writes a vector layer to the "Default" partition. | |
template<class Data_T > | |
bool | writeScalarLayer (const std::string &partitionName, const std::string &layerName, typename Field< Data_T >::Ptr layer) |
Writes a layer to a specific partition. The partition will be created if not specified. | |
template<class Data_T > | |
bool | writeScalarLayer (typename Field< Data_T >::Ptr layer) |
Writes a layer to a specific partition. The field name and attribute name are used for partition and layer, respectively. | |
template<class Data_T > | |
bool | writeVectorLayer (const std::string &partitionName, const std::string &layerName, typename Field< FIELD3D_VEC3_T< Data_T > >::Ptr layer) |
Writes a layer to a specific partition. The partition will be created if not specified. | |
template<class Data_T > | |
bool | writeVectorLayer (typename Field< FIELD3D_VEC3_T< Data_T > >::Ptr layer) |
Writes a layer to a specific partition. The field name and attribute name are used for partition and layer, respectively. | |
Private Member Functions | |
template<class Data_T > | |
bool | writeLayer (const std::string &partitionName, const std::string &layerName, bool isVectorLayer, typename Field< Data_T >::Ptr layer) |
Performs the actual writing of the layer to disk. | |
template<class Data_T > | |
bool | writeLayer (const std::string &partitionName, const std::string &layerName, bool isVectorLayer, typename Field< Data_T >::Ptr layer) |
Performs the actual writing of the layer to disk. | |
bool | writeMapping (hid_t partitionLocation, FieldMapping::Ptr mapping) |
Writes the mapping to the given hdf5 node. Mappings are assumed to be light-weight enough to be stored as plain attributes under a group. | |
bool | writeMapping (hid_t partitionLocation, FieldMapping::Ptr mapping) |
Writes the mapping to the given hdf5 node. Mappings are assumed to be light-weight enough to be stored as plain attributes under a group. | |
bool | writeMetadata (hid_t metadataGroup, FieldBase::Ptr layer) |
Writes metadata for this layer. | |
bool | writeMetadata (hid_t metadataGroup) |
Writes metadata for this file. | |
bool | writeMetadata (hid_t metadataGroup) |
Writes metadata for this file. | |
bool | writeMetadata (hid_t metadataGroup, FieldBase::Ptr layer) |
Writes metadata for this layer. |
Provides writing of .f3d (internally, hdf5) files.
Refer to using_files for examples of how to use this in your code.
Definition at line 596 of file Field3DFile.h.
Definition at line 602 of file Field3DFile.h.
{ OverwriteMode, FailOnExisting };
Definition at line 602 of file Field3DFile.h.
{ OverwriteMode, FailOnExisting };
Field3DOutputFile::Field3DOutputFile | ( | ) |
Definition at line 1193 of file Field3DFile.cpp.
{
// Empty
}
Field3DOutputFile::~Field3DOutputFile | ( | ) | [virtual] |
Definition at line 1200 of file Field3DFile.cpp.
{ }
Field3DOutputFile::Field3DOutputFile | ( | ) |
virtual Field3DOutputFile::~Field3DOutputFile | ( | ) | [virtual] |
bool Field3DOutputFile::writeScalarLayer | ( | const std::string & | layerName, |
typename Field< Data_T >::Ptr | layer | ||
) | [inline] |
Writes a scalar layer to the "Default" partition.
Definition at line 624 of file Field3DFile.h.
Referenced by createConcreteScalarField(), and main().
{ return writeScalarLayer<Data_T>(layerName, std::string("default"), layer); }
bool Field3DOutputFile::writeVectorLayer | ( | const std::string & | layerName, |
typename Field< FIELD3D_VEC3_T< Data_T > >::Ptr | layer | ||
) | [inline] |
Writes a vector layer to the "Default" partition.
Definition at line 630 of file Field3DFile.h.
Referenced by createConcreteVectorField(), and main().
{ return writeVectorLayer<Data_T>(layerName, std::string("default"), layer); }
bool Field3DOutputFile::writeScalarLayer | ( | const std::string & | partitionName, |
const std::string & | layerName, | ||
typename Field< Data_T >::Ptr | layer | ||
) |
Writes a layer to a specific partition. The partition will be created if not specified.
Definition at line 1453 of file Field3DFile.h.
{ return writeLayer<Data_T>(partitionName, layerName, false, field); }
bool Field3DOutputFile::writeScalarLayer | ( | typename Field< Data_T >::Ptr | layer | ) |
Writes a layer to a specific partition. The field name and attribute name are used for partition and layer, respectively.
Definition at line 1464 of file Field3DFile.h.
References FieldBase::attribute, FieldBase::name, Msg::print(), and Msg::SevWarning.
{ if (layer->name.size() == 0) { Msg::print(Msg::SevWarning, "Field3DOutputFile::writeScalarLayer: " "Tried to write a scalar layer with no name"); return false; } if (layer->attribute.size() == 0) { Msg::print(Msg::SevWarning, "Field3DOutputFile::writeScalarLayer: " "Tried to write a scalar layer with no attribute name"); return false; } return writeScalarLayer<Data_T>(layer->name, layer->attribute, layer); }
bool Field3DOutputFile::writeVectorLayer | ( | const std::string & | partitionName, |
const std::string & | layerName, | ||
typename Field< FIELD3D_VEC3_T< Data_T > >::Ptr | layer | ||
) |
Writes a layer to a specific partition. The partition will be created if not specified.
Definition at line 1484 of file Field3DFile.h.
{ return writeLayer<FIELD3D_VEC3_T<Data_T> >(partitionName, layerName, true, field); }
bool Field3DOutputFile::writeVectorLayer | ( | typename Field< FIELD3D_VEC3_T< Data_T > >::Ptr | layer | ) |
Writes a layer to a specific partition. The field name and attribute name are used for partition and layer, respectively.
Definition at line 1497 of file Field3DFile.h.
References Msg::print(), and Msg::SevWarning.
{ if (layer->name.size() == 0) { Msg::print(Msg::SevWarning, "Field3DOutputFile::writeVectorLayer: " "Tried to write a vector layer with no name"); return false; } if (layer->attribute.size() == 0) { Msg::print(Msg::SevWarning, "Field3DOutputFile::writeVectorLayer: " "Tried to write a vector layer with no attribute name"); return false; } return writeVectorLayer<Data_T>(layer->name, layer->attribute, layer); }
bool Field3DOutputFile::create | ( | const std::string & | filename, |
CreateMode | cm = OverwriteMode |
||
) |
Creates a .f3d file on disk.
Referenced by createConcreteScalarField(), createConcreteVectorField(), and main().
bool Field3DOutputFile::writeGlobalMetadata | ( | ) |
This routine is call if you want to write out global metadata to disk.
Definition at line 1449 of file Field3DFile.cpp.
References Hdf5Util::H5Base::id(), Field3DFileBase::m_file, Msg::print(), and Msg::SevWarning.
Referenced by writeGlobalMetadata().
{ // Add metadata group and write it out H5ScopedGcreate metadataGroup(m_file, "field3d_global_metadata"); if (metadataGroup.id() < 0) { Msg::print(Msg::SevWarning, "Error creating group: file metadata"); return false; } if (!writeMetadata(metadataGroup.id())) { Msg::print(Msg::SevWarning, "Error writing file metadata."); return false; } return true; }
bool Field3DOutputFile::writeGroupMembership | ( | ) |
This routine is called just before closing to write out any group membership to disk.
Definition at line 1469 of file Field3DFile.cpp.
References Field3DFileBase::m_file, Field3DFileBase::m_groupMembership, Msg::print(), Msg::SevWarning, and Hdf5Util::writeAttribute().
{ using namespace std; using namespace Hdf5Util; if (!m_groupMembership.size()) return true; H5ScopedGcreate group(m_file, "field3d_group_membership"); if (group < 0) { Msg::print(Msg::SevWarning, "Error creating field3d_group_membership group."); return false; } if (!writeAttribute(group, "is_field3d_group_membership", "1")) { Msg::print(Msg::SevWarning, "Failed to write field3d_group_membership attribute."); return false; } std::map<std::string, std::string>::const_iterator iter = m_groupMembership.begin(); std::map<std::string, std::string>::const_iterator iEnd = m_groupMembership.end(); for (; iter != iEnd; ++iter) { if (!writeAttribute(group, iter->first, iter->second)) { Msg::print(Msg::SevWarning, "Failed to write groupMembership string: "+ iter->first); return false; } } return true; }
bool Field3DOutputFile::writeMapping | ( | hid_t | partitionLocation, |
FieldMapping::Ptr | mapping | ||
) | [private] |
Writes the mapping to the given hdf5 node. Mappings are assumed to be light-weight enough to be stored as plain attributes under a group.
Definition at line 1265 of file Field3DFile.cpp.
References Hdf5Util::H5Base::id(), Msg::print(), Msg::SevWarning, and writeFieldMapping().
{ try { // Make a group under the partition to store the mapping data H5ScopedGcreate mappingGroup(partitionGroup, k_mappingStr); if (mappingGroup.id() < 0) throw CreateGroupException(k_mappingStr); // Let FieldMappingIO handle the rest if (!writeFieldMapping(mappingGroup.id(), mapping)) throw WriteMappingException(k_mappingStr); } catch (CreateGroupException &e) { Msg::print(Msg::SevWarning, "Couldn't create group: " + string(e.what()) ); throw WriteMappingException(k_mappingStr); } return true; }
bool Field3DOutputFile::writeLayer | ( | const std::string & | partitionName, |
const std::string & | layerName, | ||
bool | isVectorLayer, | ||
typename Field< Data_T >::Ptr | layer | ||
) | [private] |
Performs the actual writing of the layer to disk.
Definition at line 1279 of file Field3DFile.h.
References Field3DFileBase::intPartitionName(), Field3DFileBase::m_file, Field3DFileBase::m_partitions, FieldRes::mapping(), File::Layer::name, Field3DFileBase::partition(), Msg::print(), Msg::SevWarning, Hdf5Util::writeAttribute(), and writeField().
{ using namespace std; using namespace Exc; using namespace Hdf5Util; if (!field) { Msg::print(Msg::SevWarning, "Called writeLayer with null pointer. Ignoring..."); return false; } if (m_file < 0) { Msg::print(Msg::SevWarning, "Attempting to write layer without opening file first. "); return false; } string partitionName = intPartitionName(userPartitionName, layerName, field); // See if the partition already exists or if we need to make it --- File::Partition::Ptr part = partition(partitionName); if (!part) { File::Partition::Ptr newPart(new File::Partition); newPart->name = partitionName; H5ScopedGcreate partGroup(m_file, newPart->name.c_str()); if (partGroup.id() < 0) { Msg::print(Msg::SevWarning, "Error creating partition: " + newPart->name); return false; } m_partitions.push_back(newPart); // Pick up new pointer part = partition(partitionName); // Add mapping group to the partition try { if (!writeMapping(partGroup.id(), field->mapping())) { Msg::print(Msg::SevWarning, "writeMapping returned false for an unknown reason "); return false; } } catch (WriteMappingException &e) { Msg::print(Msg::SevWarning, "Couldn't write mapping for partition: " + partitionName); return false; } catch (...) { Msg::print(Msg::SevWarning, "Unknown error when writing mapping for partition: " + partitionName); return false; } // Set the mapping of the partition. Since all layers share their // partition's mapping, we can just pick this first one. All subsequent // additions to the same partition are checked to have the same mapping part->mapping = field->mapping(); // Tag node as partition // Create a version attribute on the root node if (!writeAttribute(partGroup.id(), "is_field3d_partition", "1")) { Msg::print(Msg::SevWarning, "Adding partition string."); return false; } } else { // If the partition already existed, we need to make sure that the layer // doesn't also exist if (!isVectorLayer) { if (part->scalarLayer(layerName)) { Msg::print(Msg::SevWarning, "Trying to add layer that already exists in file. Ignoring"); return false; } } else { if (part->vectorLayer(layerName)) { Msg::print(Msg::SevWarning, "Trying to add layer that already exists in file. Ignoring"); return false; } } } if (!field->mapping()) { Msg::print(Msg::SevWarning, "Couldn't add layer \"" + layerName + "\" to partition \"" + partitionName + "\" because the layer's mapping is null."); return false; } if (!part->mapping) { Msg::print(Msg::SevWarning, "Severe error - partition mapping is null: " + partitionName); return false; } // Check that the mapping matches what's already in the Partition if (!field->mapping()->isIdentical(part->mapping)) { Msg::print(Msg::SevWarning, "Couldn't add layer \"" + layerName + "\" to partition \"" + partitionName + "\" because mapping doesn't match"); return false; } // Open the partition H5ScopedGopen partGroup(m_file, part->name.c_str(), H5P_DEFAULT); // Build a Layer object --- File::Layer layer; layer.name = layerName; layer.parent = partitionName; // Add Layer to file --- H5ScopedGcreate layerGroup(partGroup.id(), layerName.c_str(), H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); if (layerGroup.id() < 0) { Msg::print(Msg::SevWarning, "Error creating layer: " + layerName); return false; } // Tag as layer if (!writeAttribute(layerGroup.id(), "class_type", "field3d_layer")) { Msg::print(Msg::SevWarning, "Error adding layer string."); return false; } // Add metadata group and write it out H5ScopedGcreate metadataGroup(layerGroup.id(), "metadata"); if (metadataGroup.id() < 0) { Msg::print(Msg::SevWarning, "Error creating group: metadata"); return false; } if (!writeMetadata(metadataGroup.id(), field)) { Msg::print(Msg::SevWarning, "Error writing metadata."); return false; } if (!writeField(layerGroup.id(), field)) { Msg::print(Msg::SevWarning, "Error writing layer: " + layer.name); return false; } // Add layer to partition --- if (isVectorLayer) part->addVectorLayer(layer); else part->addScalarLayer(layer); return true; }
bool Field3DOutputFile::writeMetadata | ( | hid_t | metadataGroup, |
FieldBase::Ptr | layer | ||
) | [private] |
Writes metadata for this layer.
Definition at line 1286 of file Field3DFile.cpp.
References FieldMetadata< CallBack_T >::floatMetadata(), FieldMetadata< CallBack_T >::intMetadata(), Msg::print(), Msg::SevWarning, FieldMetadata< CallBack_T >::strMetadata(), FieldMetadata< CallBack_T >::vecFloatMetadata(), FieldMetadata< CallBack_T >::vecIntMetadata(), and Hdf5Util::writeAttribute().
{ using namespace Hdf5Util; { FieldMetadata<FieldBase>::StrMetadata::const_iterator i = field->metadata().strMetadata().begin(); FieldMetadata<FieldBase>::StrMetadata::const_iterator end = field->metadata().strMetadata().end(); for (; i != end; ++i) { if (!writeAttribute(metadataGroup, i->first, i->second)) { Msg::print(Msg::SevWarning, "Writing attribute " + i->first ); return false; } } } { FieldMetadata<FieldBase>::IntMetadata::const_iterator i = field->metadata().intMetadata().begin(); FieldMetadata<FieldBase>::IntMetadata::const_iterator end = field->metadata().intMetadata().end(); for (; i != end; ++i) { if (!writeAttribute(metadataGroup, i->first, 1, i->second)) { Msg::print(Msg::SevWarning, "Writing attribute " + i->first); return false; } } } { FieldMetadata<FieldBase>::FloatMetadata::const_iterator i = field->metadata().floatMetadata().begin(); FieldMetadata<FieldBase>::FloatMetadata::const_iterator end = field->metadata().floatMetadata().end(); for (; i != end; ++i) { if (!writeAttribute(metadataGroup, i->first, 1, i->second)) { Msg::print(Msg::SevWarning, "Writing attribute " + i->first); return false; } } } { FieldMetadata<FieldBase>::VecIntMetadata::const_iterator i = field->metadata().vecIntMetadata().begin(); FieldMetadata<FieldBase>::VecIntMetadata::const_iterator end = field->metadata().vecIntMetadata().end(); for (; i != end; ++i) { if (!writeAttribute(metadataGroup, i->first, 3, i->second.x)) { Msg::print(Msg::SevWarning, "Writing attribute " + i->first); return false; } } } { FieldMetadata<FieldBase>::VecFloatMetadata::const_iterator i = field->metadata().vecFloatMetadata().begin(); FieldMetadata<FieldBase>::VecFloatMetadata::const_iterator end = field->metadata().vecFloatMetadata().end(); for (; i != end; ++i) { if (!writeAttribute(metadataGroup, i->first, 3, i->second.x)) { Msg::print(Msg::SevWarning, "Writing attribute " + i->first); return false; } } } return true; }
bool Field3DOutputFile::writeMetadata | ( | hid_t | metadataGroup | ) | [private] |
Writes metadata for this file.
Definition at line 1367 of file Field3DFile.cpp.
References FieldMetadata< CallBack_T >::floatMetadata(), FieldMetadata< CallBack_T >::intMetadata(), Field3DFileBase::metadata(), Msg::print(), Msg::SevWarning, FieldMetadata< CallBack_T >::strMetadata(), FieldMetadata< CallBack_T >::vecFloatMetadata(), FieldMetadata< CallBack_T >::vecIntMetadata(), and Hdf5Util::writeAttribute().
{ using namespace Hdf5Util; { FieldMetadata<Field3DFileBase>::StrMetadata::const_iterator i = metadata().strMetadata().begin(); FieldMetadata<Field3DFileBase>::StrMetadata::const_iterator end = metadata().strMetadata().end(); for (; i != end; ++i) { if (!writeAttribute(metadataGroup, i->first, i->second)) { Msg::print(Msg::SevWarning, "Writing attribute " + i->first ); return false; } } } { FieldMetadata<Field3DFileBase>::IntMetadata::const_iterator i = metadata().intMetadata().begin(); FieldMetadata<Field3DFileBase>::IntMetadata::const_iterator end = metadata().intMetadata().end(); for (; i != end; ++i) { if (!writeAttribute(metadataGroup, i->first, 1, i->second)) { Msg::print(Msg::SevWarning, "Writing attribute " + i->first); return false; } } } { FieldMetadata<Field3DFileBase>::FloatMetadata::const_iterator i = metadata().floatMetadata().begin(); FieldMetadata<Field3DFileBase>::FloatMetadata::const_iterator end = metadata().floatMetadata().end(); for (; i != end; ++i) { if (!writeAttribute(metadataGroup, i->first, 1, i->second)) { Msg::print(Msg::SevWarning, "Writing attribute " + i->first); return false; } } } { FieldMetadata<Field3DFileBase>::VecIntMetadata::const_iterator i = metadata().vecIntMetadata().begin(); FieldMetadata<Field3DFileBase>::VecIntMetadata::const_iterator end = metadata().vecIntMetadata().end(); for (; i != end; ++i) { if (!writeAttribute(metadataGroup, i->first, 3, i->second.x)) { Msg::print(Msg::SevWarning, "Writing attribute " + i->first); return false; } } } { FieldMetadata<Field3DFileBase>::VecFloatMetadata::const_iterator i = metadata().vecFloatMetadata().begin(); FieldMetadata<Field3DFileBase>::VecFloatMetadata::const_iterator end = metadata().vecFloatMetadata().end(); for (; i != end; ++i) { if (!writeAttribute(metadataGroup, i->first, 3, i->second.x)) { Msg::print(Msg::SevWarning, "Writing attribute " + i->first); return false; } } } return true; }
bool Field3DOutputFile::writeScalarLayer | ( | const std::string & | layerName, |
typename Field< Data_T >::Ptr | layer | ||
) | [inline] |
Writes a scalar layer to the "Default" partition.
Definition at line 624 of file Field3DFile.h.
{ return writeScalarLayer<Data_T>(layerName, std::string("default"), layer); }
bool Field3DOutputFile::writeVectorLayer | ( | const std::string & | layerName, |
typename Field< FIELD3D_VEC3_T< Data_T > >::Ptr | layer | ||
) | [inline] |
Writes a vector layer to the "Default" partition.
Definition at line 630 of file Field3DFile.h.
{ return writeVectorLayer<Data_T>(layerName, std::string("default"), layer); }
bool Field3DOutputFile::writeScalarLayer | ( | const std::string & | partitionName, |
const std::string & | layerName, | ||
typename Field< Data_T >::Ptr | layer | ||
) |
Writes a layer to a specific partition. The partition will be created if not specified.
bool Field3DOutputFile::writeScalarLayer | ( | typename Field< Data_T >::Ptr | layer | ) |
Writes a layer to a specific partition. The field name and attribute name are used for partition and layer, respectively.
bool Field3DOutputFile::writeVectorLayer | ( | const std::string & | partitionName, |
const std::string & | layerName, | ||
typename Field< FIELD3D_VEC3_T< Data_T > >::Ptr | layer | ||
) |
Writes a layer to a specific partition. The partition will be created if not specified.
bool Field3DOutputFile::writeVectorLayer | ( | typename Field< FIELD3D_VEC3_T< Data_T > >::Ptr | layer | ) |
Writes a layer to a specific partition. The field name and attribute name are used for partition and layer, respectively.
bool Field3DOutputFile::create | ( | const std::string & | filename, |
CreateMode | cm = OverwriteMode |
||
) |
Creates a .f3d file on disk.
bool Field3DOutputFile::writeGlobalMetadata | ( | ) |
This routine is call if you want to write out global metadata to disk.
bool Field3DOutputFile::writeGroupMembership | ( | ) |
This routine is called just before closing to write out any group membership to disk.
bool Field3DOutputFile::writeMapping | ( | hid_t | partitionLocation, |
FieldMapping::Ptr | mapping | ||
) | [private] |
Writes the mapping to the given hdf5 node. Mappings are assumed to be light-weight enough to be stored as plain attributes under a group.
bool Field3DOutputFile::writeLayer | ( | const std::string & | partitionName, |
const std::string & | layerName, | ||
bool | isVectorLayer, | ||
typename Field< Data_T >::Ptr | layer | ||
) | [private] |
Performs the actual writing of the layer to disk.
bool Field3DOutputFile::writeMetadata | ( | hid_t | metadataGroup, |
FieldBase::Ptr | layer | ||
) | [private] |
Writes metadata for this layer.
bool Field3DOutputFile::writeMetadata | ( | hid_t | metadataGroup | ) | [private] |
Writes metadata for this file.