3 #ifndef SZA_UTIL_ARCHIVEREADER_H
4 #define SZA_UTIL_ARCHIVEREADER_H
25 #include "carma/szaarrayutils/arcfile.h"
26 #include "carma/szaarrayutils/arraymap.h"
46 enum ArchiveTransposeType {
75 return (currFrame_ > stopFrame_);
87 struct ArchiveRegister {
95 DataType::Type outputType_;
102 ArrRegMap* arregmap_;
108 std::vector<Range<unsigned> > byteRanges_;
113 std::vector<Range<unsigned> > slotRanges_;
118 std::vector<Range<unsigned> > elementRanges_;
123 unsigned nTotalBytes_;
141 std::valarray<unsigned char> buf_;
152 std::valarray<unsigned int> inInds_;
153 std::valarray<unsigned int> outInds_;
158 ARC_CONV_FN(*convFn_);
159 ARC_PRINT_FN(*printFn_);
164 std::vector<RegCal::RegCalSlot> regCalSlots_;
168 ArchiveTransposeType transpose_;
172 std::ostringstream strVal_;
176 void convertVals(
unsigned iFrame,
unsigned nFrame);
180 void printVals(std::ostringstream& os);
189 ArchiveRegister(RegDescription& desc);
191 void initialize(RegDescription& desc, DataType::Type outputType,
192 ArchiveTransposeType transpose,
int width,
int prec,
193 bool convert=
true,
bool read=
false);
195 void operator=(RegDescription& desc);
197 ArchiveRegister(
const ArchiveRegister& reg);
199 ArchiveRegister(ArchiveRegister& reg);
201 void operator=(
const ArchiveRegister& reg);
203 void operator=(ArchiveRegister& reg);
207 void setInputIndices(std::valarray<unsigned int>& inds);
209 void setOutputIndices(std::valarray<unsigned int>& inds);
211 void setExternalMemory(
void* rePtr,
void* imPtr,
void* args);
215 friend std::ostream& operator<<(std::ostream& os,
216 ArchiveReader::ArchiveRegister& reg);
223 struct ArchiveByteRange {
224 ArchiveRegister* reg_;
226 unsigned byteOffsetFromStartOfFrame_;
237 void initialize(
bool memMap,
bool convert,
bool read);
239 ArchiveReader(
bool memMap=
false,
bool convert=
true,
bool read=
false);
240 ArchiveReader(std::string arcDir, std::string calFile,
241 std::string startUtc, std::string stopUtc,
242 bool memMap=
false,
bool convert=
true,
bool read=
false);
247 ArchiveReader(
const ArchiveReader& objToBeCopied);
252 ArchiveReader(ArchiveReader& objToBeCopied);
257 void operator=(
const ArchiveReader& objToBeAssigned);
262 void operator=(ArchiveReader& objToBeAssigned);
267 friend std::ostream& operator<<(std::ostream& os, ArchiveReader& obj);
272 virtual ~ArchiveReader();
281 void setArchiveDirectory(std::string arcDir);
285 unsigned countFrames();
287 unsigned readTimeStamps();
289 void setCalFile(std::string calFile);
291 void setDates(std::string startUtc, std::string stopUtc);
293 bool readNextFrame();
295 bool updateArrayMap();
297 void updateRegisterCalibration();
299 void updateRegSelection();
301 void updateValidityRegister();
303 void updateRegBufPtrCache(
unsigned nByteRanges);
305 void readFirstArrayMap();
307 void printAddresses();
309 bool regIsValid(ArchiveReader::ArchiveRegister& reg,
unsigned iEl);
316 static ArchiveReader::Format formats_[];
322 ArchiveRegister* validityRegister_;
323 BitMask validityBitMask_;
334 std::string calFile_;
337 std::vector<ArchiveByteRange> byteRanges_;
345 std::string startUtc_;
346 std::string stopUtc_;
349 std::vector<ArchiveReader::ArchiveFile> fileList_;
350 std::vector<ArchiveReader::ArchiveFile>::iterator currFile_;
353 ArchiveFileHandler handler_;
359 std::vector<bool> regSpecValid_;
360 std::vector<std::string> regSpecs_;
361 std::vector<std::string> formatSpecs_;
362 std::vector<ArchiveTransposeType> transposeTypes_;
363 std::vector<int> widths_;
364 std::vector<int> precs_;
372 void printRegsSize();
374 std::vector<ArchiveRegister>& getRegs();
375 std::vector<RegDescription>& getRegDescs();
379 std::vector<ArchiveRegister> regs_;
380 std::vector<DataType::Type> formatTypes_;
381 std::vector<RegDescription> regDescs_;
385 static bool compArchiveFile(ArchiveReader::ArchiveFile f1,
386 ArchiveReader::ArchiveFile f2);
388 static bool compArchiveByteRange(ArchiveByteRange r1, ArchiveByteRange r2);
390 static DataType::Type parseFormat(std::string format);
392 bool unique(ArchiveRegister& reg);
394 void checkFirstFile();
398 void addRegister(std::string regSpec);
399 void addRegisterOnly(std::string regSpec);
401 bool stageNextFile();
403 void resetToBeginning();
410 void printRegs(std::ostringstream& os, TimeVal* refVal = 0);
414 std::vector<RegDescription> selectedRegs();
416 std::vector<DataType::Type> selectedFormats();
425 #endif // End #ifndef SZA_UTIL_ARCHIVEREADER_H
Tagged: Tue Mar 6 16:39:02 PST 2012.
Tagged: Sat Jan 31 23:42:25 NZDT 2009.
Tagged: Mon Sep 27 21:37:46 UTC 2004.
Tagged: Thu Jan 29 23:10:35 NZDT 2009.