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_CLASS_H
00031 #define DIME_CLASS_H
00032
00033 #include <dime/Base.h>
00034 #include <dime/Basic.h>
00035 #include <dime/util/Array.h>
00036 #include <dime/util/Linear.h>
00037 #include <dime/RecordHolder.h>
00038
00039 class dimeInput;
00040 class dimeMemHandler;
00041 class dimeOutput;
00042
00043 class DIME_DLL_API dimeClass : public dimeRecordHolder
00044 {
00045 friend class dimeClassesSection;
00046 friend class dimeModel;
00047
00048 public:
00049 dimeClass();
00050 virtual ~dimeClass();
00051
00052 virtual const char *getDxfClassName() const = 0;
00053 virtual dimeClass *copy(dimeModel * const model) const = 0;
00054 virtual bool read(dimeInput * const in);
00055 virtual bool write(dimeOutput * const out);
00056 virtual bool isOfType(const int thetypeid) const;
00057 virtual int countRecords() const;
00058
00059 const char *getClassName() const;
00060 const char *getApplicationName() const;
00061 int32 getVersionNumber() const;
00062 int8 getFlag280() const;
00063 int8 getFlag281() const;
00064
00065 void setClassName(const char * const classname,
00066 dimeMemHandler * const memhandler = NULL);
00067 void setApplicationName(const char * const appname,
00068 dimeMemHandler * const memhandler = NULL);
00069 void setVersionNumber(const int32 v);
00070 void setFlag280(const int8 flag);
00071 void setFlag281(const int8 flag);
00072
00073 protected:
00074 virtual bool handleRecord(const int groupcode,
00075 const dimeParam ¶m,
00076 dimeMemHandler * const memhandler);
00077
00078 public:
00079 static dimeClass *createClass(const char * const name,
00080 dimeMemHandler * const memhandler = NULL);
00081 protected:
00082 bool copyRecords(dimeClass * const newclass, dimeModel * const model) const;
00083
00084 private:
00085 char *className;
00086 char *appName;
00087 int32 versionNumber;
00088 int8 flag1;
00089 int8 flag2;
00090
00091 };
00092
00093 inline const char *
00094 dimeClass::getClassName() const
00095 {
00096 return this->className;
00097 }
00098
00099 inline const char *
00100 dimeClass::getApplicationName() const
00101 {
00102 return this->appName;
00103 }
00104
00105 inline int32
00106 dimeClass::getVersionNumber() const
00107 {
00108 return this->versionNumber;
00109 }
00110
00111 inline int8
00112 dimeClass::getFlag280() const
00113 {
00114 return this->flag1;
00115 }
00116
00117 inline int8
00118 dimeClass::getFlag281() const
00119 {
00120 return this->flag2;
00121 }
00122
00123 inline void
00124 dimeClass::setVersionNumber(const int32 v)
00125 {
00126 this->versionNumber = v;
00127 }
00128
00129 inline void
00130 dimeClass::setFlag280(const int8 flag)
00131 {
00132 this->flag1 = flag;
00133 }
00134
00135 inline void
00136 dimeClass::setFlag281(const int8 flag)
00137 {
00138 this->flag2 = flag;
00139 }
00140
00141 #endif // ! DIME_CLASS_H
00142