00001 #ifndef _LCORE_HopClTypes_H_
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
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056 #ifdef __GNUG__
00057 # pragma interface
00058 #endif
00059
00060 #ifndef _LCORE_ClassTypes_H_
00061 # include <LCore/ClassTypes.h>
00062 #endif
00063
00064 #ifndef _LCORE_Programmers_H_
00065 # include <LCore/Programmers.h>
00066 #endif
00067
00068 #define _LCORE_HopClTypes_H_
00069
00070 namespace strmod {
00071 namespace lcore {
00072
00073 class LCore_ClassIdent;
00074
00075
00076 class EH_ClassNum : public ClassNum {
00077 protected:
00078 inline virtual const ClassIdent *i_GetIdent() const;
00079 inline EH_ClassNum(const ClassNum &clnum);
00080
00081 friend class EH_ClassIdent;
00082
00083 public:
00084 static const LCore_ClassIdent identifier;
00085
00086 inline virtual int AreYouA(const ClassIdent &cid) const;
00087
00088 enum EH0_Libraries { Container = 0, Common, ETurboVis, Accounting,
00089 FileIO, RecordID, StrMod, Net, LCore, ADT,
00090 Logger = 4083, MO_Entry, DriverFile, Journals, GMCs,
00091 User0, User1, User2, User3,
00092 User4, User5, User6, User7 = 4095};
00093
00094 inline U2Byte GetLibNum() const;
00095 inline U4Byte GetClNum() const;
00096
00097 inline EH_ClassNum(EH0_Libraries lnum, U4Byte cnum);
00098 };
00099
00100
00101
00102 class EH_ClassIdent : public ClassIdent {
00103 protected:
00104 inline virtual const ClassIdent *i_GetIdent() const;
00105
00106 public:
00107 static const LCore_ClassIdent identifier;
00108
00109 inline virtual int AreYouA(const ClassIdent &cid) const;
00110
00111 const EH_ClassNum GetClass() const { return(ClassIdent::GetClass()); }
00112
00113 inline EH_ClassIdent(EH_ClassNum cnum);
00114 };
00115
00116
00117
00118
00119
00120
00121 class LCore_ClassIdent : public EH_ClassIdent {
00122 protected:
00123 inline virtual const ClassIdent *i_GetIdent() const;
00124
00125 public:
00126 static const LCore_ClassIdent identifier;
00127
00128 inline virtual int AreYouA(const ClassIdent &cid) const;
00129
00130 inline LCore_ClassIdent(U4Byte cnum);
00131 };
00132
00133
00134
00135 inline const ClassIdent *EH_ClassNum::i_GetIdent() const
00136 {
00137 return(&identifier);
00138 }
00139
00140 inline int EH_ClassNum::AreYouA(const ClassIdent &cid) const
00141 {
00142 return((identifier == cid) || ClassNum::AreYouA(cid));
00143 }
00144
00145 inline U2Byte EH_ClassNum::GetLibNum() const
00146 {
00147 return((0xfff00000UL & ClassNum::GetClNum()) >> 20);
00148 }
00149
00150 inline U4Byte EH_ClassNum::GetClNum() const
00151 {
00152 return(0x000fffffUL & ClassNum::GetClNum());
00153 }
00154
00155 inline EH_ClassNum::EH_ClassNum(EH0_Libraries lnum, U4Byte cnum) :
00156 ClassNum((U4Byte(lnum & 0x0fffU) << 20) | (cnum & 0x000fffffUL))
00157 {
00158 }
00159
00160 inline EH_ClassNum::EH_ClassNum(const ClassNum &clnum) : ClassNum(clnum)
00161 {
00162 }
00163
00164
00165
00166 inline const ClassIdent *EH_ClassIdent::i_GetIdent() const
00167 {
00168 return(&identifier);
00169 }
00170
00171 inline int EH_ClassIdent::AreYouA(const ClassIdent &cid) const
00172 {
00173 return((identifier == cid) || ClassIdent::AreYouA(cid));
00174 }
00175
00176 inline EH_ClassIdent::EH_ClassIdent(EH_ClassNum cnum) :
00177 ClassIdent(EricMHopper_0, cnum)
00178 {
00179 }
00180
00181
00182
00183 inline const ClassIdent *LCore_ClassIdent::i_GetIdent() const
00184 {
00185 return(&identifier);
00186 }
00187
00188 inline int LCore_ClassIdent::AreYouA(const ClassIdent &cid) const
00189 {
00190 return((identifier == cid) || EH_ClassIdent::AreYouA(cid));
00191 }
00192
00193 inline LCore_ClassIdent::LCore_ClassIdent(U4Byte cnum) :
00194 EH_ClassIdent(EH_ClassNum(EH_ClassNum::LCore, cnum))
00195 {
00196 }
00197
00198 }
00199 }
00200
00201 #endif