Ignore:
Timestamp:
Sep 7, 2007, 3:15:41 AM (17 years ago)
Author:
dai_9181
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/abdev/BasicCompiler64/Compile_Var.cpp

    r308 r316  
    191191    return true;
    192192}
    193 bool _member_offset(bool isErrorEnabled, bool isWriteAccess, const CClass &objClass, const char *member, RELATIVE_VAR *pRelativeVar, Type &resultType, BOOL bPrivateAccess){
     193bool _member_offset(bool isErrorEnabled, bool isWriteAccess, const Type &classType, const char *member, RELATIVE_VAR *pRelativeVar, Type &resultType, BOOL bPrivateAccess)
     194{
     195    const CClass &objClass = classType.GetClass();
    194196
    195197    //////////////////////////////////////
     
    252254    resultType = pMember->GetType();
    253255
     256    // 型パラメータを解決
     257    ResolveFormalGenericTypeParameter( resultType, classType );
     258
    254259    //ポインタ変数の場合
    255260    if( resultType.IsPointer() ){
     
    352357            isErrorEnabled,
    353358            isWriteAccess,
    354             pMember->GetType().GetClass(),
     359            pMember->GetType(),
    355360            NestMember,
    356361            pRelativeVar,
     
    441446            pSubscripts = &pVar->GetSubscripts();
    442447            bConst = pVar->IsConst();
     448
     449            /////////////////////////////////////////////////////////
     450            // ☆★☆ ジェネリクスサポート ☆★☆
     451
     452            if( resultType.IsTypeParameter() )
     453            {
     454                // 型パラメータだったとき
     455
     456                int ptrLevel = PTR_LEVEL( resultType.GetBasicType() );
     457
     458                // TODO: ベースオブジェクト(指定されていないときはObjectクラス)にセットする
     459                resultType.SetBasicType( DEF_OBJECT );
     460
     461                for( int i=0; i<ptrLevel; i++ )
     462                {
     463                    resultType.PtrLevelUp();
     464                }
     465            }
     466
     467            //
     468            /////////////////////////////////////////////////////////
    443469
    444470            goto ok;
     
    498524            isErrorEnabled,
    499525            isWriteAccess,
    500             *compiler.pCompilingClass,
     526            Type( DEF_OBJECT, *compiler.pCompilingClass ),
    501527            variable,
    502528            pRelativeVar,
     
    727753            isErrorEnabled,
    728754            isWriteAccess,
    729             resultType.GetClass(),
     755            resultType,
    730756            member,pRelativeVar,resultType,0)) return false;
    731757
Note: See TracChangeset for help on using the changeset viewer.