7 #include "HDFdataset.hxx"
8 #include "HDFcontainerObject.hxx"
9 #include "HDFexception.hxx"
13 HDFdataset::HDFdataset(char *name, HDFcontainerObject *father,hdf_type type,
14 hdf_size dim[], int dimsize)
15 : HDFinternalObject(name)
20 _fid = _father->GetId();
21 _father->AddSon(this);
24 _dim = new hdf_size[dimsize];
26 for (i=0;i<dimsize;i++)
29 _size = _size * _dim[i];
33 HDFdataset::HDFdataset(char *name,HDFcontainerObject *father)
34 : HDFinternalObject(name)
37 _fid = _father->GetId();
38 _father->AddSon(this);
45 HDFdataset::~HDFdataset()
50 void HDFdataset::CreateOnDisk()
52 if ((_id = HDFdatasetCreate(_fid,_name,_type,_dim,_ndim)) < 0)
53 throw HDFexception("Can't create dataset");
56 void HDFdataset::OpenOnDisk()
58 if ((_id = HDFdatasetOpen(_fid,_name)) < 0)
59 throw HDFexception("Can't open dataset");
62 void HDFdataset::CloseOnDisk()
66 if ((ret = HDFdatasetClose(_id)) < 0)
67 throw HDFexception("Can't close dataset");
71 void HDFdataset::WriteOnDisk(void *values)
75 if ((ret = HDFdatasetWrite(_id,values)) < 0)
76 throw HDFexception("Can't write dataset");
80 void HDFdataset::ReadFromDisk(void *values)
84 if ((ret = HDFdatasetRead(_id,values)) < 0)
85 throw HDFexception("Can't read dataset");
88 HDFcontainerObject *HDFdataset::GetFather()
93 hdf_type HDFdataset::GetType()
95 if (_type == HDF_NONE)
96 if ((_type = HDFdatasetGetType(_id)) == HDF_NONE)
97 throw HDFexception("Can't determine the type of data in the dataset");
102 int HDFdataset::nDim()
105 if ((_ndim = HDFdatasetGetnDim(_id)) < 0)
106 throw HDFexception("Can't determine the dataset dimensions number");
111 void HDFdataset::GetDim(hdf_size dim[])
120 ndim = HDFdatasetGetnDim(_id);
123 _dim = new hdf_size[ndim];
124 if ((ret == HDFdatasetGetDim(_id,_dim)) < 0)
125 throw HDFexception("Can't determine the size dimensions of the dataset ");
128 for (i=0;i<_ndim;i++)
132 int HDFdataset::GetSize()
138 if ((_size = HDFdatasetGetSize(_id)) < 0)
139 throw HDFexception("Can't determine the size of the dataset");
141 if (_type == HDF_NONE)
142 if ((_type = HDFdatasetGetType(_id)) == HDF_NONE)
143 throw HDFexception("Can't determine the size of the dataset");
159 _size = _size / size_type;
165 hdf_object_type HDFdataset::GetObjectType()