123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- #ifndef HDF4CPP_HDFFILE_H
- #define HDF4CPP_HDFFILE_H
- #include <string>
- #include <vector>
- #include <hdf4cpp/HdfObject.h>
- namespace hdf4cpp {
- class HdfItem;
- class HdfAttribute;
- class HdfFile : public HdfObject {
- public:
- HdfFile(const std::string &path);
- HdfFile(const HdfFile &file) = delete;
- HdfFile(HdfFile &&file);
- HdfFile &operator=(const HdfFile &file) = delete;
- HdfFile &operator=(HdfFile &&file);
- ~HdfFile();
- int32 getSId() const;
- int32 getVId() const;
-
-
-
- HdfItem get(const std::string &name) const;
-
-
- std::vector<HdfItem> getAll(const std::string &name) const;
-
-
- HdfAttribute getAttribute(const std::string &name) const;
- class Iterator;
- Iterator begin() const;
- Iterator end() const;
- private:
- int32 getDatasetId(const std::string &name) const;
- int32 getGroupId(const std::string &name) const;
- int32 getDataId(const std::string &name) const;
- std::vector<int32> getDatasetIds(const std::string &name) const;
- std::vector<int32> getGroupDataIds(const std::string &name) const;
- int32 sId;
- int32 vId;
- std::vector<std::pair<int32, Type>> loneRefs;
- };
- class HdfFile::Iterator : public HdfObject, public std::iterator<std::bidirectional_iterator_tag, HdfItem> {
- public:
- Iterator(const HdfFile *file, int32 index, const HdfDestroyerChain &chain)
- : HdfObject(HFILE, ITERATOR, chain)
- , file(file)
- , index(index) {
- }
- bool operator!=(const Iterator &it) {
- return index != it.index;
- }
- bool operator==(const Iterator &it) {
- return index == it.index;
- }
- Iterator &operator++() {
- ++index;
- return *this;
- }
- Iterator operator++(int) {
- Iterator it(*this);
- ++index;
- return it;
- }
- Iterator &operator--() {
- --index;
- return *this;
- }
- Iterator operator--(int) {
- Iterator it(*this);
- --index;
- return it;
- }
- HdfItem operator*();
- private:
- const HdfFile *file;
- int32 index;
- };
- }
- #endif
|