/usr/include/pbihdf/HDFRefInfoGroup.hpp is in libpbihdf-dev 0~20151014+gitbe5d1bf-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 75 76 77 78 79 80 81 82 83 84 | #ifndef _BLASR_HDF_REF_INFO_HPP_
#define _BLASR_HDF_REF_INFO_HPP_
#include "saf/RefInfo.hpp"
class HDFRefInfoGroup {
public:
HDFGroup refInfoGroup;
HDFStringArray fullNameArray;
HDFArray<uint32_t> idArray;
HDFArray<uint32_t> lengthArray;
HDFStringArray md5Array;
bool Create(HDFGroup &parent) {
parent.AddGroup("RefInfo");
if (refInfoGroup.Initialize(parent.group, "RefInfo") == 0) { return 0; }
fullNameArray.Create(refInfoGroup, "FullName");
idArray.Create(refInfoGroup, "ID");
lengthArray.Create(refInfoGroup, "Length");
md5Array.Create(refInfoGroup, "MD5");
return true;
}
void AddRefInfo(string &fullName, unsigned int id, unsigned int length, string md5) {
fullNameArray.Write(&fullName, 1);
idArray.Write(&id, 1);
lengthArray.Write(&length, 1);
md5Array.Write(&md5, 1);
}
unsigned int AddRefInfo(string &fullName, unsigned int length, string md5) {
unsigned int numRefs = fullNameArray.size();
unsigned int id = numRefs + 1; // refInfo Id is 1 based
assert(numRefs == idArray.size() &&
numRefs == lengthArray.size() &&
numRefs == md5Array.size());
AddRefInfo(fullName, id, length, md5);
return id;
}
int Initialize(HDFGroup &parentGroup) {
if (refInfoGroup.Initialize(parentGroup.group, "RefInfo") == 0) { return 0; }
if (fullNameArray.Initialize(refInfoGroup, "FullName") == 0) { return 0;}
if (idArray.Initialize(refInfoGroup,"ID") == 0) { return 0;}
if (lengthArray.Initialize(refInfoGroup, "Length") == 0) { return 0;}
if (md5Array.Initialize(refInfoGroup, "MD5") == 0) { return 0;}
return 1;
}
~HDFRefInfoGroup() {
refInfoGroup.Close();
}
void Read(RefInfo &refInfo) {
UInt nRow = fullNameArray.size();
refInfo.fullName.resize(nRow);
refInfo.id.resize(nRow);
refInfo.length.resize(nRow);
refInfo.md5.resize(nRow);
/*
if (refInfo.fullName.size() != refInfo.id.size() or
refInfo.id.size() != refInfo.length.size() or
refInfo.length.size() != refInfo.md5.size()) {
cout << "Error with the RefInfo group in a cmp.h5 file. The datasets " << endl
<< "are of different lengths but should be the same." << endl;
exit(1);
}
*/
int i;
for (i = 0; i < refInfo.fullName.size();i++) {
fullNameArray.Read(i,i+1,&refInfo.fullName[i]);
}
for (i = 0; i < refInfo.md5.size(); i++) {
md5Array.Read(i, i+1, &refInfo.md5[i]);
}
lengthArray.Read(0, refInfo.length.size(), &refInfo.length[0]);
idArray.Read(0, refInfo.id.size(), &refInfo.id[0]);
}
};
#endif
|