|
@@ -0,0 +1,57 @@
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#include <hdf4cpp/hdf.h>
|
|
|
+#include <iostream>
|
|
|
+
|
|
|
+using namespace hdf4cpp;
|
|
|
+
|
|
|
+int main() {
|
|
|
+
|
|
|
+ HdfFile file(TEST_DATA_PATH "small_test.hdf");
|
|
|
+
|
|
|
+ HdfItem item = file.get("DataWithAttributes");
|
|
|
+
|
|
|
+ if (item.getType() == SDATA) {
|
|
|
+ std::cout << "Yes, the type is SData\n";
|
|
|
+ } else {
|
|
|
+ std::cerr << "Type missmatch\n";
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ std::vector<float32> vec;
|
|
|
+ item.read(vec);
|
|
|
+ std::cout << "The whole data: ";
|
|
|
+ for (const auto &value : vec) {
|
|
|
+ std::cout << value << ' ';
|
|
|
+ }
|
|
|
+ std::cout << std::endl;
|
|
|
+
|
|
|
+
|
|
|
+ std::vector<Range> ranges;
|
|
|
+ std::vector<int32> dims = item.getDims();
|
|
|
+ for (const auto &dim : dims) {
|
|
|
+ if (dim >= 1) {
|
|
|
+ ranges.push_back(Range(0, dim - 1));
|
|
|
+ } else {
|
|
|
+ ranges.push_back(Range(0, dim));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ item.read(vec, ranges);
|
|
|
+ std::cout << "Data in the range [0, dim-1) if it's possible, else [0, dim): ";
|
|
|
+ for (const auto &value : vec) {
|
|
|
+ std::cout << value << ' ';
|
|
|
+ }
|
|
|
+ std::cout << std::endl;
|
|
|
+
|
|
|
+
|
|
|
+ HdfAttribute attribute = item.getAttribute("Integers");
|
|
|
+ std::vector<int32> integers;
|
|
|
+ attribute.get(integers);
|
|
|
+ std::cout << "The 'Integers' attribute data: ";
|
|
|
+ for (const auto &integer : integers) {
|
|
|
+ std::cout << integer << ' ';
|
|
|
+ }
|
|
|
+ std::cout << std::endl;
|
|
|
+}
|