Extension.hxx
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007 #ifndef EXTENSION_H
00008 #define EXTENSION_H
00009
00010 #include "Constants.h"
00011 #include "DataBuilder.hxx"
00012 #include "InsertData.hxx"
00013 #include "Logger.h"
00014 #include "TableInfo.h"
00015
00016
00017
00021 template<typename DataType>
00022 class Extension : public DataBuilder<DataType>
00023 {
00024 public:
00026 Extension(const TableInfo& aInfo)
00027 : mInfo(aInfo)
00028 { DataBuilder<DataType>::builderName = "Extension"; }
00029
00031 virtual ~Extension() {}
00032
00034 TableData<DataType>* build(FitsFile& fpix,
00035 FitsFile& fcat,
00036 int fileNo)
00037 {
00038 Logger log;
00039
00040 int numRows = fpix.getNumHdus() - 1;
00041 TableData<DataType>* data;
00042
00043
00044
00045 bool useEmptyCat = fcat.getFileName().find(DefaultValues::emptycatname)
00046 != string::npos;
00047
00048 if (numRows != fcat.getNumHdus()-1 and useEmptyCat == false)
00049 {
00050
00051 log.addSysInfo("in " + fpix.getFileName() + "," + fcat.getFileName() +
00052 " (pix and cat mismatch)");
00053 data = new TableData<DataType>(0, 0);
00054 }
00055 else
00056 {
00057 int numCols = mInfo.getNumAttributes();
00058 data = new TableData<DataType>(numCols, numRows);
00059
00060
00061 for (int rowNo = 0; rowNo < numRows; ++rowNo)
00062 {
00063 insertFitsPrimaryHeader(rowNo, fpix, mInfo, *data);
00064 }
00065
00066
00067 for (int rowNo = 0; rowNo < numRows; ++rowNo)
00068 {
00069 int hduNo = rowNo + 2;
00070 fpix.movabsHdu(hduNo);
00071 insertFitsExtensionHeader(rowNo, fpix, mInfo, *data);
00072
00073 if (useEmptyCat == false)
00074 {
00075 fcat.movabsHdu(hduNo);
00076 insertFitsExtensionHeader(rowNo, fcat, mInfo, *data);
00077 }
00078 }
00079 insertExtNum(fpix, mInfo, *data);
00080 }
00081 return data;
00082 }
00083
00084 private:
00085 TableInfo mInfo;
00086 };
00087
00088 #endif
00089
00090
00091
00092