source: dev/BasicCompiler_Common/Const.h@ 103

Last change on this file since 103 was 103, checked in by dai_9181, 17 years ago

名前空間機能をグローバル変数、定数と列挙型に適用。
一部、クラスの静的メンバと名前空間の相性が悪いコードが潜んでいるため、要改修

File size: 1.9 KB
RevLine 
[4]1
2
3//定数の基底クラス
[103]4class ConstBase{
5 const string name;
6 const NamespaceScopes namespaceScopes;
[4]7
8public:
9
[103]10 ConstBase( const NamespaceScopes &namespaceScopes, const string &name )
11 : namespaceScopes( namespaceScopes )
12 , name( name )
13 {
14 }
15 ~ConstBase()
16 {
17 }
[7]18
[103]19 const string &GetName() const
20 {
21 return name;
22 }
23
24 bool IsEqualSymbol( const NamespaceScopes &namespaceScopes, const string &name ) const;
25 bool IsEqualSymbol( const string &name ) const;
[4]26};
27
28//定数
[103]29class CConst:public ConstBase{
30 Type type;
[4]31 _int64 i64data;
[7]32
[4]33public:
[7]34 CConst *pNext;
[4]35
[103]36 CConst( const NamespaceScopes &namespaceScopes, const string &name, const Type &type, _int64 i64data);
37 CConst( const NamespaceScopes &namespaceScopes, const string &name, int value);
[4]38 ~CConst();
[7]39
[103]40 Type GetType();
[7]41 _int64 GetWholeData();
42 double GetDoubleData();
[4]43};
44
45//定数マクロ
[103]46class CConstMacro:public ConstBase{
[4]47 int ParmNum;
48 char **ppParm;
49public:
50
[103]51 CConstMacro( const NamespaceScopes &namespaceScopes, const string &name, char *Expression);
[4]52 ~CConstMacro();
53};
54
55//定数管理クラス
56class CDBConst{
[7]57 CConst **ppHash;
[4]58
59 CConstMacro **ppobj_Macro;
60 int NumOfMacro;
61
[7]62 //シングルトンクラスなので、プライベートに置く
[4]63 CDBConst();
64 ~CDBConst();
[7]65 void _free();
66 void Free();
[4]67
[7]68public:
69
70 void Init();
71
[103]72 void Add( const NamespaceScopes &namespaceScopes, char *buffer);
[7]73private:
[103]74 void AddConst( const string &name, CConst *newconst);
[7]75public:
[103]76 void AddConst( const NamespaceScopes &namespaceScopes, const string &name, char *Expression);
77 void AddConst( const NamespaceScopes &namespaceScopes, const string &name, int value);
[4]78
[7]79private:
[103]80 CConst *GetObjectPtr( const string &name );
[7]81public:
82
[103]83 int GetBasicType(char *Name);
[7]84 _int64 GetWholeData(char *Name);
85 double GetDoubleData(char *Name);
[103]86 bool IsStringPtr(char *Name);
[7]87
88
89 //シングルトンオブジェクト
90 static CDBConst obj;
[4]91};
Note: See TracBrowser for help on using the repository browser.