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
00031 #ifndef CDATATYPE_H
00032 #define CDATATYPE_H
00033
00034 #include "cobject.h"
00035
00036 class CNode;
00037
00041 enum VarDataType_t {
00042 eNO_VAR_TYPE = 0,
00043 eREAL,
00044 eSHORTREAL,
00045 eREALTIME,
00046 eREG,
00047 eTIME,
00048 eLOGIC,
00049 eINTEGER,
00050 eBIT,
00051 eINT,
00052 eBYTE,
00053 eSHORTINT,
00054 eLONGINT,
00055 eDEVENT,
00056 };
00057 #if defined CDATATYPE_CC
00058
00061 const char* varDataTypeName[] = {
00062 "",
00063 "real",
00064 "shortreal",
00065 "realtime",
00066 "reg",
00067 "time",
00068 "logic",
00069 "integer",
00070 "bit",
00071 "int",
00072 "byte",
00073 "shortint",
00074 "longint",
00075 "event",
00076 };
00077 #else // CDATATYPE_CC
00078 extern const char* varDataTypeName[];
00079 #endif // CDATATYPE_CC
00080
00084 enum NodeType_t {
00085 eU,
00086 eR,
00087 eS,
00088 eE,
00089 eB
00090 };
00091
00095 class CDataType : public CObject
00096 {
00097 public:
00098 private:
00099 int const_;
00100 VarDataType_t varDataType;
00101 public:
00105 CDataType( VarDataType_t t );
00110 virtual CDataType* Clone( CObstack* heap ) = 0;
00115 virtual void SetVarDataType( VarDataType_t v ) { varDataType = v; }
00120 virtual VarDataType_t GetVarDataType() const { return varDataType; }
00126 virtual void SetConst( int v ) { const_ = v; }
00131 virtual int GetConst() const { return const_; }
00136 virtual int GetTwoState() const = 0;
00141 virtual int GetSigned() const = 0;
00146 virtual NodeType_t GetNodeType( void ) const = 0;
00151 virtual int IsPacked() const = 0;
00156 virtual CNode* GetPackedRange() const = 0;
00161 virtual void Dump( FILE* f ) const = 0;
00169 virtual void PreVisit1( int (*callback)(CNode*,void*), void* data ) =0;
00176 virtual void PostVisit1( void (*callback)(CNode*,void*), void* data ) = 0;
00185 virtual void PostSubVisit1( CNode* (*callback)(CNode*, void*), void* data ) = 0;
00186 protected:
00193 void Copy( CObstack* heap, const CDataType& o );
00194 private:
00195
00196
00197
00198 CDataType( const CDataType& o );
00199
00200 };
00201
00202 #endif // CDATATYPE_H
00203