You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
AppFlow/FITK_Interface/FITKInterfaceIOHDF5/FITKInterfaceHDF5AdaptorMat...

62 lines
2.4 KiB
C++

#include "FITKInterfaceHDF5AdaptorMaterialAssign.h"
#include "FITK_Interface/FITKInterfaceIO/FITKAbstractHDF5Reader.h"
#include "FITK_Interface/FITKInterfaceIO/FITKAbstractHDF5Writer.h"
#include "FITK_Interface/FITKInterfacePhysics/FITKAbstractMaterial.h"
#include "FITK_Interface/FITKInterfacePhysics/FITKAbstractSection.h"
#include "FITK_Interface/FITKInterfacePhysics/FITKSectionAssign.h"
#include "FITK_Interface/FITKInterfacePhysics/FITKMaterialAssign.h"
namespace IO
{
QString FITKInterfaceHDF5AdaptorMaterialAssign::getAdaptorClass()
{
return "FITKInterfaceHDF5AdaptorSection";
}
bool FITKInterfaceHDF5AdaptorMaterialAssign::adaptR()
{
auto materialAssign = dynamic_cast<Interface::FITKMaterialAssign*>(_dataObj);
if (!_reader || !_h5Group || !materialAssign) return false;
bool isR = true;
isR &= readMaterialAssign(materialAssign, *_h5Group);
return isR;
}
bool FITKInterfaceHDF5AdaptorMaterialAssign::adaptW()
{
auto materialAssign = dynamic_cast<Interface::FITKMaterialAssign*>(_dataObj);
if (!_writer || !_h5Group || !materialAssign) return false;
bool isW = true;
isW &= writeMaterialAssign(materialAssign, *_h5Group);
return isW;
}
bool FITKInterfaceHDF5AdaptorMaterialAssign::readMaterialAssign(Interface::FITKMaterialAssign* assign, H5::Group& h5Group)
{
if (!assign || h5Group.getLocId() == -1) return false;
if (!h5Group.exists("MaterialID")) return false;
if (!h5Group.exists("ModelID")) return false;
int MaterialID = readIntAttribute(h5Group, "MaterialID");
int ModelID = readIntAttribute(h5Group, "ModelID");
assign->assign(MaterialID, ModelID);
return readDataObject(assign, h5Group);
}
bool FITKInterfaceHDF5AdaptorMaterialAssign::writeMaterialAssign(Interface::FITKMaterialAssign* assign, H5::Group& h5Group)
{
if (!assign || h5Group.getLocId() == -1) return false;
int MaterialID = assign->getMaterialID();
int ModelID = assign->getModelID();
std::string groupName = createParentAttribute(assign, h5Group);
if (groupName.empty()) return false;
_h5CreateGroup = h5Group.createGroup(groupName);
writeIntAttribute(_h5CreateGroup, "MaterialID", &MaterialID);
writeIntAttribute(_h5CreateGroup, "ModelID", &ModelID);
return writeDataObject(assign, _h5CreateGroup);
}
}