std::string H5Attribute::dump(std::map<haddr_t, std::string> & alreadyVisited, const unsigned int indentLevel) const { std::ostringstream os; const H5Type & type = const_cast<H5Attribute *>(this)->getDataType(); const H5Dataspace & space = const_cast<H5Attribute *>(this)->getSpace(); H5Data * data = 0; try { data = &const_cast<H5Attribute *>(this)->getData(); } catch (const H5Exception & /*e*/) { } os << H5Object::getIndentString(indentLevel) << "ATTRIBUTE \"" << getName() << "\" {" << std::endl << type.dump(alreadyVisited, indentLevel + 1) << space.dump(alreadyVisited, indentLevel + 1); if (data) { os << data->dump(alreadyVisited, indentLevel + 1); } else { os << H5Object::getIndentString(indentLevel + 1) << _("Error in retrieving data.") << std::endl; } os << H5Object::getIndentString(indentLevel) << "}" << std::endl; delete &type; delete &space; if (data) { delete data; } return os.str(); }
std::string H5Dataset::dump(std::map<haddr_t, std::string> & alreadyVisited, const unsigned int indentLevel) const { std::ostringstream os; haddr_t addr = this->getAddr(); std::map<haddr_t, std::string>::iterator it = alreadyVisited.find(addr); if (it != alreadyVisited.end()) { os << H5Object::getIndentString(indentLevel) << "DATASET \"" << getName() << "\" {" << std::endl << H5Object::getIndentString(indentLevel + 1) << "HARDLINK \"" << it->second << "\"" << std::endl << H5Object::getIndentString(indentLevel) << "}" << std::endl; return os.str(); } else { alreadyVisited.insert(std::pair<haddr_t, std::string>(addr, getCompletePath())); } const H5Type & type = const_cast<H5Dataset *>(this)->getDataType(); const H5Dataspace & space = const_cast<H5Dataset *>(this)->getSpace(); const H5AttributesList & attrs = const_cast<H5Dataset *>(this)->getAttributes(); const H5Dataset::H5Layout & layout = const_cast<H5Dataset *>(this)->getLayout(); H5Data * data = 0; try { data = &const_cast<H5Dataset *>(this)->getData(); } catch (const H5Exception & /*e*/) { } os << H5Object::getIndentString(indentLevel) << "DATASET \"" << getName() << "\" {" << std::endl << type.dump(alreadyVisited, indentLevel + 1) << space.dump(alreadyVisited, indentLevel + 1) << layout.dump(alreadyVisited, indentLevel + 1); if (data) { os << data->dump(alreadyVisited, indentLevel + 1); } else { os << H5Object::getIndentString(indentLevel + 1) << _("Error in retrieving data.") << std::endl; } os << attrs.dump(alreadyVisited, indentLevel + 1) << H5Object::getIndentString(indentLevel) << "}" << std::endl; delete &type; delete &space; if (data) { delete data; } delete &attrs; delete &layout; return os.str(); }