WSAReader.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006 #include <iostream>
00007 #include <stdexcept>
00008
00009 #include "Datum.h"
00010 #include "WSAReader.h"
00011
00012 using namespace std;
00013
00014 WSAReader::WSAReader(const string& aDtdFileName)
00015 : FileObjectReader(),
00016 mBufferDtd(aDtdFileName),
00017 mBufferAry(0),
00018 mBufferSize(0),
00019 mIdPtr(0),
00020 mRaPtr(0),
00021 mDecPtr(0)
00022 {
00023 mBufferSize = mBufferDtd.getRecordSize();
00024
00025 try
00026 {
00027 mIdPtr = mBufferDtd.at(0);
00028 mRaPtr = mBufferDtd.at(1);
00029 mDecPtr = mBufferDtd.at(2);
00030 }
00031 catch (const exception &e)
00032 {
00033 cout << "Error in dtd file: " << aDtdFileName << endl;
00034 throw;
00035 }
00036
00037
00038 mBufferAry = new char[mBufferSize];
00039 }
00040
00041 WSAReader::~WSAReader()
00042 {
00043 delete mBufferAry;
00044 }
00045
00046 Object* WSAReader::read(FILE* aFilePtr)
00047 {
00048 Object* theObjectPtr = 0;
00049 double orthoSD = 0;
00050 double decSD = 0;
00051
00052 if (mBufferSize == fread(mBufferAry,
00053 sizeof(char),
00054 mBufferSize,
00055 aFilePtr))
00056 {
00057 theObjectPtr = new Datum(mIdPtr->extractBigIntFrom(mBufferAry),
00058 mRaPtr->extractDoubleFrom(mBufferAry),
00059 orthoSD,
00060 mDecPtr->extractDoubleFrom(mBufferAry),
00061 decSD);
00062 }
00063
00064 return theObjectPtr;
00065 }
00066