185 lines
3.5 KiB
C++
185 lines
3.5 KiB
C++
#ifndef _WORKSHT_RECORD_HPP_
|
|
#define _WORKSHT_RECORD_HPP_
|
|
#ifndef _COMMON_WINDOWS_HPP_
|
|
#include <common/windows.hpp>
|
|
#endif
|
|
#ifndef _COMMON_STRING_HPP_
|
|
#include <common/string.hpp>
|
|
#endif
|
|
#ifndef _FILEIO_FILEIO_HPP_
|
|
#include <fileio/fileio.hpp>
|
|
#endif
|
|
|
|
class Record
|
|
{
|
|
public:
|
|
enum RecordType{Split=0x04,Sync=0x05,Win1=0x07,Win2=0x09,ColW2=0x0A,Name=0x0B,QRange=0x19,PRange=0x1A,
|
|
SRange=0x1B,KRange1=0x1D,KRange2=0x23,Footer=0x25,Header=0x26,Setup=0x27,Margins=0x28,Titles=0x2A,
|
|
Graph=0x2D,NGraph=0x2E,Bof=0x00,Eof=0x01,CalcMode=0x02,CalcOrder=0x03,Range=0x06,ColW1=0x08,Blank=0x0C,
|
|
Integer=0x0D,Number=0x0E,Label=0x0F,Formula=0x10,Table=0x18,FRange=0x1C,HRange=0x20,Protec=0x24,
|
|
LabelFmt=0x29,CalcCount=0x2F,UnFormatted=0x30,CursorW12=0x31};
|
|
Record(void);
|
|
Record(const Record &someRecord);
|
|
Record(RecordType type,WORD length);
|
|
virtual ~Record();
|
|
Record &operator=(const Record &someRecord);
|
|
BOOL operator==(const Record &someRecord);
|
|
operator String(void)const;
|
|
RecordType type(void)const;
|
|
void type(RecordType type);
|
|
WORD length(void)const;
|
|
void length(WORD length);
|
|
bool read(FileIO &inFile);
|
|
bool write(FileIO &outFile);
|
|
String toString(void)const;
|
|
private:
|
|
RecordType mRecordType;
|
|
WORD mRecordLength;
|
|
};
|
|
|
|
inline
|
|
Record::Record(void)
|
|
: mRecordType(Eof), mRecordLength(0)
|
|
{
|
|
}
|
|
|
|
inline
|
|
Record::Record(RecordType type,WORD length)
|
|
: mRecordType(type), mRecordLength(length)
|
|
{
|
|
}
|
|
|
|
inline
|
|
Record::Record(const Record &someRecord)
|
|
{
|
|
*this=someRecord;
|
|
}
|
|
|
|
inline
|
|
Record::~Record()
|
|
{
|
|
}
|
|
|
|
inline
|
|
Record &Record::operator=(const Record &someRecord)
|
|
{
|
|
type(someRecord.type());
|
|
length(someRecord.length());
|
|
return *this;
|
|
}
|
|
|
|
inline
|
|
BOOL Record::operator==(const Record &someRecord)
|
|
{
|
|
return (type()==someRecord.type()&&
|
|
length()==someRecord.length());
|
|
}
|
|
|
|
inline
|
|
Record::operator String(void)const
|
|
{
|
|
switch(type())
|
|
{
|
|
case Split :
|
|
return "Split";
|
|
case Sync :
|
|
return "Sync";
|
|
case Win1 :
|
|
return "Win1";
|
|
case Win2 :
|
|
return "Win2";
|
|
case ColW2 :
|
|
return "ColW2";
|
|
case Name :
|
|
return "Name";
|
|
case QRange :
|
|
return "QRange";
|
|
case PRange :
|
|
return "PRange";
|
|
case SRange :
|
|
return "SRange";
|
|
case KRange1 :
|
|
return "KRange1";
|
|
case KRange2 :
|
|
return "KRange2";
|
|
case Footer :
|
|
return "Footer";
|
|
case Header :
|
|
return "Header";
|
|
case Setup :
|
|
return "Setup";
|
|
case Margins :
|
|
return "Margins";
|
|
case Titles :
|
|
return "Titles";
|
|
case Graph :
|
|
return "Graph";
|
|
case NGraph :
|
|
return "NGraph";
|
|
case Bof :
|
|
return "Bof";
|
|
case Eof :
|
|
return "Eof";
|
|
case CalcMode :
|
|
return "CalcMode";
|
|
case CalcOrder :
|
|
return "CalcOrder";
|
|
case Range :
|
|
return "Range";
|
|
case ColW1 :
|
|
return "ColW1";
|
|
case Blank :
|
|
return "Blank";
|
|
case Integer :
|
|
return "Integer";
|
|
case Number :
|
|
return "Number";
|
|
case Label :
|
|
return "Label";
|
|
case Formula :
|
|
return "Formula";
|
|
case Table :
|
|
return "Table";
|
|
case FRange :
|
|
return "FRange";
|
|
case HRange :
|
|
return "HRange";
|
|
case Protec :
|
|
return "Protec";
|
|
case LabelFmt :
|
|
return "LabelFmt";
|
|
case CalcCount :
|
|
return "CalcCount";
|
|
case UnFormatted :
|
|
return "Unformatted";
|
|
case CursorW12 :
|
|
return "CursorW12";
|
|
default :
|
|
return "Unknown";
|
|
}
|
|
}
|
|
|
|
inline
|
|
Record::RecordType Record::type(void)const
|
|
{
|
|
return mRecordType;
|
|
}
|
|
|
|
inline
|
|
void Record::type(RecordType type)
|
|
{
|
|
mRecordType=type;
|
|
}
|
|
|
|
inline
|
|
WORD Record::length(void)const
|
|
{
|
|
return mRecordLength;
|
|
}
|
|
|
|
inline
|
|
void Record::length(WORD length)
|
|
{
|
|
mRecordLength=length;
|
|
}
|
|
#endif |