70 std::vector<std::uint64_t> _alup;
71 std::vector<std::uint64_t> _aend;
72 std::vector<std::uint64_t> _blup;
73 std::vector<std::uint64_t> _bend;
77 std::vector<std::array<std::int64_t,3>> _lodsizes;
78 std::vector<std::int64_t> _alphaoffsets;
79 std::vector<std::int64_t> _brickoffsets;
80 std::int64_t _bytesperalpha;
81 std::int64_t _bytesperbrick;
85 virtual void dump(std::ostream& out,
const std::string& prefix =
"");
86 virtual void read(
const std::shared_ptr<FileADT>& file, std::int64_t offset, std::int64_t size);
87 virtual void byteswap();
95 std::int64_t offset_in_file;
96 std::int64_t size_in_file;
97 std::uint32_t raw_constant;
101 , offset_in_file(offset)
103 , raw_constant(constant)
109 static std::vector<std::uint64_t> calcLookupSize(
110 const std::vector<std::uint64_t>& lookup,
111 std::int64_t eof, std::int64_t maxsize);
113 static LutInfo getAlphaFilePosition(
114 std::int64_t i, std::int64_t j, std::int64_t lod,
115 const std::vector<std::array<std::int64_t,3>>& lodsizes,
116 const std::vector<std::int64_t>& alphaoffsets,
117 const std::vector<std::uint64_t>& alup,
118 std::int64_t bytesperalpha);
120 static LutInfo getBrickFilePosition(
121 std::int64_t i, std::int64_t j, std::int64_t k, std::int64_t lod,
122 const std::vector<std::array<std::int64_t,3>>& lodsizes,
123 const std::vector<std::int64_t>& brickoffsets,
124 const std::vector<std::uint64_t>& blup,
125 const std::vector<std::uint64_t>& bend,
126 std::int64_t bytesperbrick);
128 static void setBrickFilePosition(
129 std::int64_t i, std::int64_t j, std::int64_t k, std::int64_t lod,
131 const std::vector<std::array<std::int64_t,3>>& lodsizes,
132 const std::vector<std::int64_t>& brickoffsets,
133 std::vector<std::uint64_t>* blup,
134 std::vector<std::uint64_t>* bend);
138 static std::string _formatPosition(
139 std::int64_t i, std::int64_t j, std::int64_t k, std::int64_t lod);
141 static void _validatePosition(
142 std::int64_t i, std::int64_t j, std::int64_t k, std::int64_t lod,
143 const std::vector<std::array<std::int64_t,3>>& lodsizes);
145 static std::int64_t _getLookupIndex(
146 std::int64_t i, std::int64_t j, std::int64_t k, std::int64_t lod,
147 const std::vector<std::array<std::int64_t,3>>& lodsizes,
148 const std::vector<std::int64_t>& offsets);
150 static std::int64_t _getAlphaLookupIndex(
151 std::int64_t i, std::int64_t j, std::int64_t lod,
152 const std::vector<std::array<std::int64_t,3>>& lodsizes,
153 const std::vector<std::int64_t>& alphaoffsets);
155 static std::int64_t _getBrickLookupIndex(
156 std::int64_t i, std::int64_t j, std::int64_t k, std::int64_t lod,
157 const std::vector<std::array<std::int64_t,3>>& lodsizes,
158 const std::vector<std::int64_t>& brickoffsets);
160 static std::pair<std::int64_t, std::int64_t> _getBegAndSize(
162 const std::vector<std::uint64_t>& lup,
163 const std::vector<std::uint64_t>& end,
164 std::int64_t maxsize);