Changeset 380 in dev for trunk/abdev/BasicCompiler_Common


Ignore:
Timestamp:
Dec 18, 2007, 2:51:10 AM (17 years ago)
Author:
dai_9181
Message:

Foreachに対応。
ジェネリクスインターフェイスに対応。

Location:
trunk/abdev/BasicCompiler_Common
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/abdev/BasicCompiler_Common/include/ver.h

    r371 r380  
    66// バージョン付加文字列
    77#ifdef _AMD64_
    8 #define VER_INFO        "(x64) (rev.382)"
     8#define VER_INFO        "(x64) (rev.396)"
    99#else
    10 #define VER_INFO        "(rev.382)"
     10#define VER_INFO        "(rev.396)"
    1111#endif
  • trunk/abdev/BasicCompiler_Common/src/Class.cpp

    r379 r380  
    12271227    }
    12281228
     1229    std::vector<const CClass *> classes;
    12291230    const CClass *pClass = GetHashArrayElement( name.c_str() );
    12301231    while( pClass )
     
    12321233        if( pClass->IsEqualSymbol( namespaceScopes, name ) ){
    12331234            //名前空間とクラス名が一致した
    1234             return pClass;
     1235            classes.push_back( pClass );
    12351236        }
    12361237        pClass = pClass->GetChainNext();
     1238    }
     1239    if( classes.size() > 0 )
     1240    {
     1241        // 複数の名前空間の中に同一のクラス名が存在する場合があるので、アクセス可能で尚且つ階層が一番深いものをチョイスする
     1242        pClass = classes.front();
     1243
     1244        BOOST_FOREACH( const CClass *pTempClass, classes )
     1245        {
     1246            if( pClass->GetNamespaceScopes().size() < pTempClass->GetNamespaceScopes().size() )
     1247            {
     1248                pClass = pTempClass;
     1249            }
     1250        }
     1251
     1252        return pClass;
    12371253    }
    12381254
Note: See TracChangeset for help on using the changeset viewer.