Ignore:
Timestamp:
Jun 29, 2008, 2:08:44 AM (16 years ago)
Author:
dai_9181
Message:

#171への対応。テンプレート展開後のクラスメソッドの実装で、SizeOf(T)が正常値を返さない不具合を修正(特にTが4バイト未満の型場合)。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ab5.0/abdev/ab_common/src/Lexical/Class.cpp

    r640 r672  
    3030    int DestructorMemberSubIndex,
    3131    int vtblNum,
    32     int fixedAlignment )
     32    int fixedAlignment,
     33    const Types &expandedClassActualTypeParameters )
    3334    : ClassPrototype( symbol )
    3435    , importedNamespaces( importedNamespaces )
     
    4344    , vtblNum( vtblNum )
    4445    , fixedAlignment( fixedAlignment )
     46    , expandedClassActualTypeParameters( expandedClassActualTypeParameters )
    4547    , vtbl_offset( -1 )
    4648    , comVtblOffset( 0 )
     
    379381}
    380382
     383void CClass::ResolveExpandedClassActualTypeParameter( Type &type ) const
     384{
     385    if( !this->IsExpanded() )
     386    {
     387        _ASSERTE( false );
     388    }
     389
     390    if( !type.IsTypeParameter() )
     391    {
     392        // 型パラメータではない場合
     393        return;
     394    }
     395
     396    type = expandedClassActualTypeParameters[type.GetFormalTypeIndex()];
     397}
     398
    381399//サイズを取得
    382400int CClass::GetSize() const
Note: See TracChangeset for help on using the changeset viewer.