Ignore:
Timestamp:
Oct 14, 2007, 9:41:03 PM (17 years ago)
Author:
dai_9181
Message:

インターフェイスを実装

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/abdev/BasicCompiler32/Compile_ProcOp.cpp

    r331 r350  
    258258        UserProc::CompileStartForUserProc( pBackUserProc );
    259259        cp=BackCp;
     260    }
     261    else if( userProc.HasParentClass()
     262        && userProc.IsCastOperator()
     263        && userProc.ReturnType().IsInterface() )
     264    {
     265        // インターフェイス型にキャストするためのメソッド
     266
     267        int vtblMasterListIndex = userProc.GetParentClass().GetVtblMasterListIndex( &userProc.ReturnType().GetClass() );
     268
     269        char temporary[1024];
     270        sprintf( temporary,
     271            "Return New %s(ObjPtr( This ),Get_LONG_PTR( (Get_LONG_PTR( ObjPtr(This) ) + SizeOf(LONG_PTR)*%d) As VoidPtr ) As VoidPtr )",
     272            userProc.ReturnType().GetClass().GetName().c_str(),
     273            vtblMasterListIndex
     274        );
     275        MakeMiddleCode( temporary );
     276
     277        ChangeOpcode( temporary );
    260278    }
    261279    else{
Note: See TracChangeset for help on using the changeset viewer.