Ignore:
Timestamp:
Aug 10, 2007, 9:20:45 PM (17 years ago)
Author:
dai_9181
Message:
 
Location:
trunk/abdev/BasicCompiler_Common/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/abdev/BasicCompiler_Common/src/Class.cpp

    r270 r272  
    219219    if( !isInheritsClass ){
    220220        // クラスを一つも継承していないとき
    221         const CClass *pObjectClass = compiler.GetObjectModule().meta.GetClasses().Find("Object");
    222         if( !pObjectClass ){
    223             SmoothieException::Throw(106,"Object",i);
    224             return false;
    225         }
    226 
    227         if( !InheritsClass( *pObjectClass, nowLine ) ){
     221        if( !InheritsClass( *compiler.GetObjectModule().meta.GetClasses().GetObjectClassPtr(), nowLine ) ){
    228222            return false;
    229223        }
     
    763757bool Classes::Insert( CClass *pClass )
    764758{
    765     // キャッシュしておくクラス
    766     if( pClass->GetName() == "String" )
    767     {
    768         pStringClass=pClass;
    769     }
    770     else if( pClass->GetName() == "Object" )
    771     {
    772         pObjectClass = pClass;
    773     }
    774 
    775759    /////////////////////////////////
    776760    // ハッシュデータに追加
     
    804788    int i, i2;
    805789    char temporary[VN_SIZE];
    806 
    807     // Blittable型管理オブジェクトを初期化
    808     compiler.GetObjectModule().meta.GetBlittableTypes().clear();
    809790
    810791    // 名前空間管理
     
    953934    while(this->Iterator_HasNext()){
    954935        CClass &objClass = *this->Iterator_GetNext();
     936        if( objClass.isTargetObjectModule == false )
     937        {
     938            // 静的リンクライブラリの場合は飛ばす(既にインスタンスが定義済みであるため)
     939            continue;
     940        }
    955941
    956942        // 名前空間をセット
     
    16531639}
    16541640
    1655 CClass *Classes::GetStringClassPtr() const
     1641const CClass *Classes::GetStringClassPtr() const
    16561642{
    16571643    if( !pStringClass ){
    1658         SmoothieException::Throw();
    1659         return NULL;
     1644        // キャッシュしておく
     1645        pStringClass = this->Find( NamespaceScopes( "System" ), "String" );
     1646
     1647        if( !pStringClass )
     1648        {
     1649            SmoothieException::Throw();
     1650        }
     1651        return pStringClass;
    16601652    }
    16611653    return pStringClass;
    16621654}
    1663 CClass *Classes::GetObjectClassPtr() const
     1655const CClass *Classes::GetObjectClassPtr() const
    16641656{
    16651657    if( !pObjectClass ){
    1666         SmoothieException::Throw();
    1667         return NULL;
     1658        // キャッシュしておく
     1659        pObjectClass = this->Find( NamespaceScopes( "System" ), "Object" );
     1660
     1661        if( !pObjectClass )
     1662        {
     1663            SmoothieException::Throw();
     1664        }
     1665        return pObjectClass;
    16681666    }
    16691667    return pObjectClass;
  • trunk/abdev/BasicCompiler_Common/src/Meta.cpp

    r271 r272  
    22
    33#include <Compiler.h>
     4
     5void Meta::Clear()
     6{
     7    // 名前空間
     8    namespaceScopesCollection.clear();
     9
     10    // 関数・メソッド
     11    userProcs.Clear();
     12
     13    // DLL関数
     14    dllProcs.Clear();
     15
     16    // クラス
     17    classesImpl.Clear();
     18
     19    // グローバル変数
     20    globalVars.Clear();
     21
     22    // グローバル定数
     23    globalConsts.Clear();
     24
     25    // グローバル定数マクロ
     26    globalConstMacros.Clear();
     27
     28    // blittable型
     29    blittableTypes.clear();
     30
     31    // TypeDef
     32    typeDefs.clear();
     33
     34    // 関数ポインタ
     35    procPointers.Clear();
     36}
    437
    538void Meta::StaticLink( Meta &meta )
  • trunk/abdev/BasicCompiler_Common/src/TypeDef.cpp

    r206 r272  
    142142}
    143143
    144 void TypeDefCollection::Init(){
    145     // 初期化
    146     clear();
     144void TypeDefCollection::CollectTypeDefs(){
    147145
    148146    // 名前空間管理
Note: See TracChangeset for help on using the changeset viewer.