40#include "config_hdf.h"
46#ifdef HAVE_SYS_PARAM_H
52#include "HDFSequence.h"
53#include "HDFStructure.h"
54#include <libdap/escaping.h>
56#include <libdap/Error.h>
61HDFSequence::HDFSequence(
const string &n,
const string &d)
66HDFSequence::~HDFSequence() =
default;
68BaseType *HDFSequence::ptr_duplicate()
70 return new HDFSequence(*
this);
75bool HDFSequence::read()
78 int status = read_tagref(-1, -1, err);
80 throw Error(unknown_error,
"Could not read from dataset.");
84bool HDFSequence::read_tagref(int32 , int32 ref,
int &err)
86 string hdf_file = dataset();
87 string hdf_name = this->name();
90 if (vd.name.size() == 0) {
91 hdfistream_vdata vin(hdf_file.c_str());
95 vin.seek(hdf_name.c_str());
105 if (row >= vd.fields[0].vals[0].size()) {
114 if (vd.fields.size() <= 0 || vd.fields[0].vals.size() <= 0) {
119 LoadSequenceFromVdata(
this, vd, row++);
127void HDFSequence::transfer_attributes(AttrTable *at)
130 Vars_iter var = var_begin();
131 while (var != var_end()) {
132 (*var)->transfer_attributes(at);
136 AttrTable *mine = at->get_attr_table(name());
139 mine->set_is_global_attribute(
false);
140 AttrTable::Attr_iter at_p = mine->attr_begin();
141 while (at_p != mine->attr_end()) {
142 if (mine->get_attr_type(at_p) == Attr_container)
143 get_attr_table().append_container(
new AttrTable(
144 *mine->get_attr_table(at_p)), mine->get_name(at_p));
146 get_attr_table().append_attr(mine->get_name(at_p),
147 mine->get_type(at_p), mine->get_attr_vector(at_p));