File: HDFRefGroupGroup.hpp

package info (click to toggle)
pbseqlib 5.3.4%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 7,020 kB
  • sloc: cpp: 77,246; python: 331; sh: 103; makefile: 42
file content (74 lines) | stat: -rw-r--r-- 1,920 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#ifndef HDF_REF_GROUP_H_
#define HDF_REF_GROUP_H_

#include <hdf/HDFArray.hpp>
#include <hdf/HDFAtom.hpp>
#include <hdf/HDFGroup.hpp>
#include <pbdata/saf/RefGroup.hpp>

class HDFRefGroupGroup
{
public:
    HDFGroup refGroup;
    HDFArray<uint32_t> idArray;
    HDFStringArray pathArray;

    HDFArray<uint32_t> refInfoIdArray;

    ~HDFRefGroupGroup() { refGroup.Close(); }

    bool Create(HDFGroup &parent)
    {
        parent.AddGroup("RefGroup");
        if (refGroup.Initialize(parent.group, "RefGroup") == 0) {
            return 0;
        }
        idArray.Create(refGroup, "ID");
        pathArray.Create(refGroup, "Path");
        refInfoIdArray.Create(refGroup, "RefInfoID");
        return true;
    }

    int AddPath(std::string path, unsigned int refInfoId)
    {
        pathArray.Write(&path, 1);
        unsigned int numPath = pathArray.size();
        idArray.Write(&numPath, 1);
        refInfoIdArray.Write(&refInfoId, 1);
        return numPath;
    }

    int Initialize(HDFGroup &rootGroup)
    {
        refGroup.Initialize(rootGroup.group, "RefGroup");

        if (idArray.Initialize(refGroup, "ID") == 0) {
            return 0;
        }
        if (pathArray.Initialize(refGroup, "Path") == 0) {
            return 0;
        }
        if (refInfoIdArray.Initialize(refGroup, "RefInfoID") == 0) {
            return 0;
        }

        return 1;
    }

    void Read(RefGroup &refGroup)
    {
        int pathArrayNElem = pathArray.arrayLength;
        refGroup.path.resize(pathArrayNElem);
        pathArray.Read(0, pathArrayNElem, &refGroup.path[0]);

        int idArrayNElem = idArray.arrayLength;
        refGroup.id.resize(idArrayNElem);
        idArray.Read(0, idArrayNElem, &refGroup.id[0]);

        int refIDNElem = refInfoIdArray.arrayLength;
        refGroup.refInfoId.resize(refIDNElem);
        refInfoIdArray.Read(0, refIDNElem, &refGroup.refInfoId[0]);
    }
};

#endif