00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef DIME_RECORD_H
00031 #define DIME_RECORD_H
00032
00033 #include <dime/Basic.h>
00034 #include <dime/Base.h>
00035 #include <stdio.h>
00036
00037 class dimeInput;
00038 class dimeOutput;
00039
00040 class DIME_DLL_API dimeRecord : public dimeBase
00041 {
00042 public:
00043 dimeRecord(const int group_code);
00044 virtual ~dimeRecord();
00045
00046 virtual void setValue(const dimeParam ¶m, dimeMemHandler * const memhandler = NULL) = 0;
00047 virtual void getValue(dimeParam ¶m) const = 0;
00048 virtual dimeRecord *copy(dimeMemHandler * const memhandler) const = 0;
00049
00050 void setGroupCode(const int group_code);
00051 int getGroupCode() const;
00052
00053
00054 public:
00055 virtual bool isEndOfSectionRecord() const;
00056 virtual bool isEndOfFileRecord() const;
00057 virtual int typeId() const = 0;
00058 virtual bool read(dimeInput * const in) = 0;
00059 virtual bool write(dimeOutput * const out);
00060 virtual void print() const {fprintf(stderr, "rec: %d\n", groupCode);}
00061
00062 public:
00063 static bool readRecordData(dimeInput * const in, const int group_code,
00064 dimeParam ¶m);
00065 static dimeRecord *readRecord(dimeInput * const in);
00066 static dimeRecord *createRecord(const int group_code,
00067 dimeMemHandler * const memhandler);
00068 static dimeRecord *createRecord(const int group_code,
00069 const dimeParam ¶m,
00070 dimeMemHandler * const memhandler);
00071 static int getRecordType(const int group_code);
00072
00073 protected:
00074 int groupCode;
00075
00076 };
00077
00078 #endif // ! DIME_RECORD_H
00079