Changeset 181 in dev for trunk/jenga/include/smoothie


Ignore:
Timestamp:
Jun 24, 2007, 2:05:40 PM (17 years ago)
Author:
dai_9181
Message:
 
Location:
trunk/jenga/include/smoothie
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/jenga/include/smoothie/Class.h

    r180 r181  
    4646    };
    4747
    48 private:
     48protected:
    4949    ClassType classType;
    5050
    5151    bool isReady;
    52     void Readed(){
    53         isReady = true;
    54     }
    55     bool IsReady() const{
    56         return isReady;
    57     }
    5852
    5953    // importされている名前空間
     
    9084    CClass( const NamespaceScopes &namespaceScopes, const NamespaceScopesCollection &importedNamespaces, const string &name );
    9185    ~CClass();
     86
     87    void Readed(){
     88        isReady = true;
     89    }
     90    bool IsReady() const{
     91        return isReady;
     92    }
    9293
    9394    const NamespaceScopesCollection &GetImportedNamespaces() const
     
    126127    }
    127128
    128     //継承させる
    129     bool Inherits( const char *inheritNames, int nowLine );
    130     bool InheritsClass( const CClass &inheritsClass, int nowLine );
    131     bool InheritsInterface( const CClass &inheritsClass, int nowLine );
    132 
    133     //メンバ、メソッドの追加
    134     void AddMember( Prototype::Accessibility accessibility, bool idConst, bool isRef, char *buffer );
    135     void AddStaticMember( Prototype::Accessibility accessibility, bool isConst, bool isRef, char *buffer, int nowLine );
     129    // 継承させる
     130    virtual bool Inherits( const char *inheritNames, int nowLine ) = 0;
     131    virtual bool InheritsClass( const CClass &inheritsClass, int nowLine ) = 0;
     132    virtual bool InheritsInterface( const CClass &inheritsClass, int nowLine ) = 0;
     133
     134    virtual void AddMember( Prototype::Accessibility accessibility, bool idConst, bool isRef, char *buffer, int nowLine ) = 0;
     135    virtual void AddStaticMember( Prototype::Accessibility accessibility, bool isConst, bool isRef, char *buffer, int nowLine ) = 0;
     136
     137    virtual void AddMethod(CClass *pobj_c, Prototype::Accessibility accessibility, BOOL bStatic, bool isConst, bool isAbstract,
     138        bool isVirtual, bool isOverride, char *buffer, int nowLine) = 0;
    136139
    137140    //重複チェック
     
    173176    }
    174177
    175     //デフォルト コンストラクタ メソッドを取得
     178    //デフォルト コンストラクタ
    176179    const CMethod *GetConstructorMethod() const;
     180    void SetConstructorMemberSubIndex( int constructorMemberSubIndex )
     181    {
     182        this->ConstructorMemberSubIndex = constructorMemberSubIndex;
     183    }
    177184
    178185    //デストラクタ メソッドを取得
    179186    const CMethod *GetDestructorMethod() const;
     187    void SetDestructorMemberSubIndex( int destructorMemberSubIndex )
     188    {
     189        this->DestructorMemberSubIndex = destructorMemberSubIndex;
     190    }
    180191
    181192    // vtblに存在する仮想関数の数
     
    209220
    210221    //vtbl
    211 private:
     222protected:
    212223    mutable long vtbl_offset;
    213224public:
    214225    int GetFuncNumInVtbl( const UserProc *pUserProc ) const;
    215     LONG_PTR GetVtblGlobalOffset(void) const;
    216     void ActionVtblSchedule(LONG_PTR ImageBase, LONG_PTR MemPos_CodeSection);
     226    virtual LONG_PTR GetVtblGlobalOffset(void) const = 0;
     227    virtual void ActionVtblSchedule(LONG_PTR ImageBase, LONG_PTR MemPos_CodeSection) = 0;
    217228    bool IsAbstract() const;
    218229
     
    306317    const CClass *Find( const NamespaceScopes &namespaceScopes, const string &name ) const;
    307318
    308     CClass *AddClass( const NamespaceScopes &namespaceScopes, const NamespaceScopesCollection &importedNamespaces, const char *name,int nowLine);
     319    virtual CClass *Create( const NamespaceScopes &namespaceScopes, const NamespaceScopesCollection &importedNamespaces, const char *name) = 0;
     320    CClass *Add( const NamespaceScopes &namespaceScopes, const NamespaceScopesCollection &importedNamespaces, const char *name,int nowLine);
    309321
    310322    void ActionVtblSchedule(LONG_PTR ImageBase, LONG_PTR MemPos_CodeSection);
    311323
    312 private:
    313     void AddMethod(CClass *pobj_c, Prototype::Accessibility accessibility, BOOL bStatic, bool isConst, bool isAbstract,
    314         bool isVirtual, bool isOverride, char *buffer, int nowLine);
    315     BOOL MemberVar_LoopRefCheck(const CClass &objClass);
    316324public:
    317325
    318326    // 実体収集
    319327    virtual void CollectClassesForNameOnly( const BasicSource &source ) = 0;
     328    virtual void GetClass_recur(const char *lpszInheritsClass) = 0;
    320329    virtual void GetAllClassInfo() = 0;
    321330    virtual void Compile_System_InitializeUserTypes() = 0;
  • trunk/jenga/include/smoothie/LexicalScoping.h

    r174 r181  
    4444    int level;
    4545
    46     CScope *SearchScope( SCOPE_TYPE TypeOfStatement );
    47 
    4846    virtual CScope *CreateScope( int level, int addr, SCOPE_TYPE TypeOfStatement ) = 0;
    4947public:
     
    5755    void Start( int addr, SCOPE_TYPE TypeOfStatement );
    5856
    59     //スコープを終了
     57    // スコープを終了
    6058    void End();
    6159
    62     //スコープ抜け出しステートメント
    63     void Break();
     60    // スコープを検索
     61    CScope *SearchScope( SCOPE_TYPE TypeOfStatement );
    6462
    6563    int GetNowLevel(void);
  • trunk/jenga/include/smoothie/Member.h

    r180 r181  
    5353    }
    5454
    55     CMember( Prototype::Accessibility accessibility, const string &name, const Type &type, bool isConst )
     55    CMember( Prototype::Accessibility accessibility, const string &name, const Type &type, bool isConst, const string &initializeExpression, const string &constructParameter )
    5656        : MemberPrototype( accessibility )
    5757        , name( name )
    5858        , type( type )
    5959        , isConst( isConst )
     60        , initializeExpression( initializeExpression )
     61        , constructParameter( constructParameter )
    6062    {
    6163    }
  • trunk/jenga/include/smoothie/ObjectModule.h

    r180 r181  
    99class Meta{
    1010    Classes *pClasses;
     11    ProcPointers *pProcPointers;
    1112public:
    1213
    13     Meta( Classes *pNewClasses )
     14    Meta( Classes *pNewClasses, ProcPointers *pNewProcPointers )
    1415        : pClasses( pNewClasses )
     16        , pProcPointers( pNewProcPointers )
    1517    {
    1618    }
     
    1820    {
    1921        delete pClasses;
     22        delete pProcPointers;
    2023    }
    2124
     
    2831        return *pClasses;
    2932    }
     33    void SetClasses( Classes *pClasses )
     34    {
     35        this->pClasses = pClasses;
     36    }
    3037
    3138    // TypeDef
     
    3340
    3441    // 関数ポインタ
    35     vector<ProcPointer *> procPointers;
     42    ProcPointers &GetProcPointers()
     43    {
     44        return *pProcPointers;
     45    }
    3646
    3747    // blittable型
  • trunk/jenga/include/smoothie/Parameter.h

    r170 r181  
    11#pragma once
    22
     3#include <string>
     4#include <vector>
     5
    36#include "Type.h"
    4 
    57#include "BasicFixed.h"
    68
    79class Parameter : public Type
    810{
    9     string varName;
     11    std::string varName;
    1012    bool isRef;
    1113    bool isArray;
    1214    int subScripts[MAX_ARRAYDIM];
    1315
    14     const string initValue;
     16    const std::string initValue;
    1517
    1618public:
    17     Parameter( const string &varName, const Type &type, bool isRef = false, const string initValue = "" ):
     19    Parameter( const std::string &varName, const Type &type, bool isRef = false, const std::string initValue = "" ):
    1820        Type( type ),
    1921        varName( varName ),
     
    4345    }
    4446
    45     const string &GetVarName() const
     47    const std::string &GetVarName() const
    4648    {
    4749        return varName;
     
    5961    }
    6062
    61     const string &GetInitValue() const
     63    const std::string &GetInitValue() const
    6264    {
    6365        return initValue;
     
    8991};
    9092
    91 class Parameters : public vector<Parameter *>
     93class Parameters : public std::vector<Parameter *>
    9294{
    9395public:
  • trunk/jenga/include/smoothie/Procedure.h

    r170 r181  
    9494    string _paramStr;
    9595
    96 private:
     96protected:
    9797    bool isMacro;
    9898
     
    113113
    114114public:
     115
     116    void Serialize( bool isRead )
     117    {
     118
     119    }
    115120
    116121    UserProc( const string &name, Kind kind, bool isMacro, bool isCdecl, bool isExport ):
     
    127132    {
    128133    }
    129     ~UserProc();
     134    ~UserProc()
     135    {
     136        BOOST_FOREACH( Parameter *pParam, realParams ){
     137            delete pParam;
     138        }
     139    }
    130140
    131141    string GetFullName() const;
     
    136146    }
    137147
    138     virtual bool SetParamsAndReturnType( const char *sourceOfParams, int nowLine, bool isStatic );
     148    virtual bool SetParamsAndReturnType( const char *sourceOfParams, int nowLine, bool isStatic ) = 0;
    139149
    140150    int GetSecondParmNum() const
     
    246256        return *pCompilingUserProc;
    247257    }
    248 };
    249 
    250 class GlobalProc : public UserProc
    251 {
    252     const NamespaceScopes namespaceScopes;
    253     const NamespaceScopesCollection importedNamespaces;
    254 public:
    255     // ハッシュリスト用
    256     GlobalProc *pNextData;
    257 
    258     GlobalProc( const NamespaceScopes &namespaceScopes, const NamespaceScopesCollection &importedNamespaces, const string &name, Kind kind, bool isMacro, bool isCdecl, bool isExport ):
    259       UserProc( name, kind, isMacro, isCdecl, isExport ),
    260       namespaceScopes( namespaceScopes ),
    261       importedNamespaces( importedNamespaces ),
    262       pNextData( NULL )
    263     {}
    264     ~GlobalProc(){}
    265 /*
    266     GlobalProc *Create( const NamespaceScopes &namespaceScopes, char *buffer,int nowLine );
    267     bool AddGlobalProc( const NamespaceScopes &namespaceScopes, char *buffer,int nowLine );
    268 */
    269     virtual const NamespaceScopes &GetNamespaceScopes() const;
    270     virtual const NamespaceScopesCollection &GetImportedNamespaces() const
    271     {
    272         return importedNamespaces;
    273     }
    274 
    275     virtual bool IsEqualSymbol( const NamespaceScopes &namespaceScopes, const string &name ) const;
    276     virtual bool IsEqualSymbol( const GlobalProc &globalProc ) const;
    277     virtual bool IsEqualSymbol( const string &name ) const;
    278258};
    279259
     
    309289    }
    310290
    311     virtual bool SetParamsAndReturnType( const char *sourceOfParams, int nowLine );
     291    virtual bool SetParamsAndReturnType( const char *sourceOfParams, int nowLine ) = 0;
    312292
    313293    const string &GetDllFileName() const
     
    339319    ~ProcPointer(){}
    340320
    341     virtual bool SetParamsAndReturnType( const char *sourceOfParams, int nowLine );
    342 };
     321    virtual bool SetParamsAndReturnType( const char *sourceOfParams, int nowLine ) = 0;
     322};
     323class ProcPointers : public vector<ProcPointer *>
     324{
     325public:
     326    ProcPointers()
     327    {
     328    }
     329    ~ProcPointers()
     330    {
     331    }
     332
     333    virtual int Add( const string &typeExpression ) = 0;
     334};
  • trunk/jenga/include/smoothie/Smoothie.h

    r174 r181  
    66
    77class Smoothie{
     8    static bool isUnicode;
     9
     10    static Meta meta;
    811public:
     12
     13    static bool IsUnicode()
     14    {
     15        return isUnicode;
     16    }
     17    static void SetUnicodeMark( bool isUnicode )
     18    {
     19        Smoothie::isUnicode = isUnicode;
     20    }
     21
     22    static Meta &GetMeta()
     23    {
     24        return meta;
     25    }
    926
    1027    class Lexical{
     
    1229        static string baseProjectDirPath;
    1330        static BasicSource source;
    14         static NamespaceScopes liveingNamespaceScopes;
    1531    };
    1632
     
    1834    class Temp{
    1935    public:
     36        // 現在の名前空間
     37        static NamespaceScopes liveingNamespaceScopes;
     38
    2039        // 現在インポートされている名前空間
    2140        static NamespaceScopesCollection importedNamespaces;
     
    2847    };
    2948
    30     // プロジェクト中に存在するメタ情報
    31     static Meta meta;
    32 
    3349    static bool isFullCompile;
    3450};
  • trunk/jenga/include/smoothie/SmoothieException.h

    r172 r181  
    1414        , keyword( keyword )
    1515        , nowLine( nowLine )
     16    {
     17    }
     18    SmoothieException( int errorCode, const std::string &keyword )
     19        : errorCode( errorCode )
     20        , keyword( keyword )
     21        , nowLine( -1 )
    1622    {
    1723    }
Note: See TracChangeset for help on using the changeset viewer.