40 #include "config_hdf.h"
46 #ifdef HAVE_SYS_PARAM_H
47 #include <sys/param.h>
52 #include "HDFSequence.h"
53 #include "HDFStructure.h"
61 HDFSequence::HDFSequence(
const string &n,
const string &d)
62 : Sequence(n, d), row(0)
66 HDFSequence::~HDFSequence()
70 BaseType *HDFSequence::ptr_duplicate()
77 bool HDFSequence::read()
80 int status = read_tagref(-1, -1, err);
82 throw Error(unknown_error,
"Could not read from dataset.");
86 bool HDFSequence::read_tagref(int32 , int32 ref,
int &err)
88 string hdf_file = dataset();
89 string hdf_name = this->name();
92 if (vd.name.length() == 0) {
97 vin.seek(hdf_name.c_str());
107 if (row >= vd.fields[0].vals[0].size()) {
116 if (vd.fields.size() <= 0 || vd.fields[0].vals.size() <= 0) {
121 LoadSequenceFromVdata(
this, vd, row++);
129 void HDFSequence::transfer_attributes(AttrTable *at)
132 Vars_iter var = var_begin();
133 while (var != var_end()) {
134 (*var)->transfer_attributes(at);
138 AttrTable *mine = at->get_attr_table(name());
141 mine->set_is_global_attribute(
false);
142 AttrTable::Attr_iter at_p = mine->attr_begin();
143 while (at_p != mine->attr_end()) {
144 if (mine->get_attr_type(at_p) == Attr_container)
145 get_attr_table().append_container(
new AttrTable(
146 *mine->get_attr_table(at_p)), mine->get_name(at_p));
148 get_attr_table().append_attr(mine->get_name(at_p),
149 mine->get_type(at_p), mine->get_attr_vector(at_p));