Ignore:
Timestamp:
Aug 10, 2007, 9:20:45 PM (17 years ago)
Author:
dai_9181
Message:
 
File:
1 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;
Note: See TracChangeset for help on using the changeset viewer.