1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
#include <hdf/HDFData.hpp>
using namespace H5;
H5Location *HDFData::GetObject() { return &dataset; }
HDFData::HDFData(CommonFG *_container, const std::string &_datasetName)
{
container = _container;
datasetName = _datasetName;
fileDataSpaceInitialized = false;
isInitialized = false;
}
HDFData::HDFData()
{
container = NULL;
fileDataSpaceInitialized = false;
isInitialized = false;
}
bool HDFData::IsInitialized() const { return isInitialized; }
//
// Allow derived classes to be initialized generically.
//
int HDFData::Initialize(HDFGroup &parentGroup, const std::string &datasetName)
{
(void)(parentGroup);
(void)(datasetName);
std::cout << "ERROR! Only a subclass should call this." << std::endl;
std::exit(EXIT_FAILURE);
}
int HDFData::BaseInitializeDataset(CommonFG &hdfFile, const std::string &_datasetName)
{
dataset = hdfFile.openDataSet(_datasetName.c_str());
isInitialized = true;
fileDataSpaceInitialized = true;
return 1;
}
int HDFData::InitializeDataset(HDFGroup &group, const std::string &_datasetName)
{
return InitializeDataset(group.group, _datasetName);
}
int HDFData::InitializeDataset(CommonFG &hdfFile, const std::string &_datasetName)
{
try {
datasetName = _datasetName;
dataset = hdfFile.openDataSet(_datasetName.c_str());
isInitialized = true;
fileDataSpaceInitialized = true;
} catch (FileIException &e) {
std::cerr << e.getDetailMsg() << std::endl;
return 0;
} catch (GroupIException &e) {
std::cerr << e.getDetailMsg() << std::endl;
return 0;
} catch (H5::Exception &e) {
std::cerr << e.getDetailMsg() << std::endl;
return 0;
}
return 1;
}
void HDFData::Close()
{
if (isInitialized) {
dataspace.close();
dataset.close();
isInitialized = false;
}
}
|