Changeset 172 in dev for trunk/jenga


Ignore:
Timestamp:
Jun 19, 2007, 4:02:00 AM (17 years ago)
Author:
dai_9181
Message:
 
Location:
trunk/jenga
Files:
2 added
1 deleted
9 edited

Legend:

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

    r171 r172  
    138138        return dynamicMembers;
    139139    }
     140    const Members &GetStaticMembers() const
     141    {
     142        return staticMembers;
     143    }
     144    Members &GetDynamicMembers()
     145    {
     146        return dynamicMembers;
     147    }
     148    Members &GetStaticMembers()
     149    {
     150        return staticMembers;
     151    }
    140152
    141153    const Methods &GetMethods() const
     
    144156    }
    145157    const Methods &GetStaticMethods() const
     158    {
     159        return staticMethods;
     160    }
     161    Methods &GetMethods()
     162    {
     163        return methods;
     164    }
     165    Methods &GetStaticMethods()
    146166    {
    147167        return staticMethods;
     
    266286};
    267287
     288#define MAX_CLASS_HASH 65535
    268289class Classes
    269290{
     291    int hash(const char *name) const;
     292    void DestroyClass(CClass *pobj_c);
     293public:
     294    CClass *pobj_ClassHash[MAX_CLASS_HASH];
     295
     296    Classes();
     297    ~Classes();
     298
     299    const CClass *Find( const string &fullName ) const;
     300    const CClass *Find( const NamespaceScopes &namespaceScopes, const string &name ) const;
     301
     302    CClass *AddClass( const NamespaceScopes &namespaceScopes, const NamespaceScopesCollection &importedNamespaces, const char *name,int nowLine);
     303
     304    void ActionVtblSchedule(LONG_PTR ImageBase, LONG_PTR MemPos_CodeSection);
     305
     306private:
     307    void AddMethod(CClass *pobj_c, Prototype::Accessibility accessibility, BOOL bStatic, bool isConst, bool isAbstract,
     308        bool isVirtual, bool isOverride, char *buffer, int nowLine);
     309    BOOL MemberVar_LoopRefCheck(const CClass &objClass);
     310public:
     311    void GetAllClassInfo(void);
     312    void Compile_System_InitializeUserTypes();
     313
     314
     315    /////////////////////////////
     316    // 特殊クラス
     317    /////////////////////////////
     318    CClass *pStringClass;
     319    CClass *pObjectClass;
     320    CClass *GetStringClassPtr() const;
     321    CClass *GetObjectClassPtr() const;
     322
     323
     324    /////////////////////////////
     325    // 現在コンパイル中の情報
     326    /////////////////////////////
     327private:
     328    const CClass *pCompilingClass;
     329    const CMethod *pCompilingMethod;
     330public:
     331    //コンパイル開始の通知を受け取るメソッド
     332    void StartCompile( UserProc *pUserProc );
     333
     334    //現在コンパイル中のメソッド情報を取得
     335    const CClass *GetNowCompilingClass() const;
     336    const CMethod *GetNowCompilingMethodInfo();
     337
     338
     339    /////////////////////
     340    // イテレータ
     341    /////////////////////
     342private:
     343    CClass **ppobj_IteClass;
     344    int iIteMaxNum;
     345    int iIteNextNum;
     346public:
     347    void Iterator_Init(void);
     348    void Iterator_Reset(void);
     349    BOOL Iterator_HasNext(void);
     350    CClass *Iterator_GetNext(void);
     351    int Iterator_GetMaxCount(void);
    270352};
  • trunk/jenga/include/smoothie/ObjectModule.h

    r170 r172  
    44#include "Namespace.h"
    55#include "Procedure.h"
     6#include "Class.h"
    67
    78// プロジェクト中に存在するメタ情報
     
    1213
    1314    // クラス
     15    Classes classes;
    1416
    1517    // TypeDef
  • trunk/jenga/include/smoothie/Smoothie.h

    r170 r172  
    33#include "Source.h"
    44#include "ObjectModule.h"
    5 #include "LexicalScoping.h"
    65
    76class Smoothie{
     
    1312        static BasicSource source;
    1413        static NamespaceScopes liveingNamespaceScopes;
    15         static CLexicalScopes lexicalScopes;
    1614    };
    1715
     
    2119        // 現在インポートされている名前空間
    2220        static NamespaceScopesCollection importedNamespaces;
     21
     22        static const CClass *pCompilingClass;
    2323    };
    2424
  • trunk/jenga/include/smoothie/SmoothieException.h

    r170 r172  
    2222    {
    2323    }
     24    SmoothieException()
     25        : errorCode( 300 )
     26        , keyword( "" )
     27        , nowLine( -1 )
     28    {
     29    }
    2430
    2531    int GetErrorCode() const
  • trunk/jenga/include/smoothie/Type.h

    r170 r172  
    103103    bool IsBoolean() const;
    104104
     105    static bool IsPointer( int basicType );
    105106    bool IsPointer() const;
    106107    bool IsSigned() const;
  • trunk/jenga/include/smoothie/Variable.h

    r170 r172  
    139139
    140140    int source_code_address;
     141
     142
     143    static int GetSubScriptCounts(const int *ss){
     144        // 配列の要素数を取得
     145        int i,i2;
     146        for(i=0,i2=1;i<255;i++){
     147            if(ss[i]==-1) break;
     148            i2*=ss[i]+1;
     149        }
     150        return i2;
     151    }
    141152};
    142153
  • trunk/jenga/projects/smoothie/smoothie.vcproj

    r171 r172  
    5959            <Tool
    6060                Name="VCLibrarianTool"
     61                OutputFile="..\..\lib\amd64\$(ProjectName)d.lib"
    6162            />
    6263            <Tool
     
    118119            <Tool
    119120                Name="VCLibrarianTool"
     121                OutputFile="..\..\lib\amd64\$(ProjectName).lib"
    120122            />
    121123            <Tool
     
    177179            <Tool
    178180                Name="VCLibrarianTool"
     181                OutputFile="..\..\lib\x86\$(ProjectName)d.lib"
    179182            />
    180183            <Tool
     
    238241            <Tool
    239242                Name="VCLibrarianTool"
     243                OutputFile="..\..\lib\x86\$(ProjectName)d.lib"
    240244            />
    241245            <Tool
     
    265269            >
    266270            <File
     271                RelativePath="..\..\src\smoothie\Class.cpp"
     272                >
     273            </File>
     274            <File
    267275                RelativePath="..\..\src\smoothie\Method.cpp"
    268276                >
     
    286294            <File
    287295                RelativePath="..\..\src\smoothie\Symbol.cpp"
     296                >
     297            </File>
     298            <File
     299                RelativePath="..\..\src\smoothie\Type.cpp"
    288300                >
    289301            </File>
     
    303315            </File>
    304316            <File
    305                 RelativePath="..\..\include\smoothie\LexicalScoping.h"
    306                 >
    307             </File>
    308             <File
    309317                RelativePath="..\..\include\smoothie\Member.h"
    310318                >
  • trunk/jenga/src/smoothie/Method.cpp

    r170 r172  
    1 #include <jenga/include/smoothie/Method.h>
     1#include <jenga/include/smoothie/Class.h>
    22
    33
  • trunk/jenga/src/smoothie/Smoothie.cpp

    r170 r172  
    66Meta Smoothie::meta;
    77NamespaceScopesCollection Smoothie::Temp::importedNamespaces;
     8const CClass *Smoothie::Temp::pCompilingClass = NULL;
    89
    910bool Smoothie::isFullCompile = false;
Note: See TracChangeset for help on using the changeset viewer.