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/BasicCompiler64/Compile_ProcOp.cpp

    r331 r350  
    179179        UserProc::CompileStartForUserProc( pBackUserProc );
    180180        cp=BackCp;
     181    }
     182    else if( userProc.HasParentClass()
     183        && userProc.IsCastOperator()
     184        && userProc.ReturnType().IsInterface() )
     185    {
     186        // インターフェイス型にキャストするためのメソッド
     187
     188        int vtblMasterListIndex = userProc.GetParentClass().GetVtblMasterListIndex( &userProc.ReturnType().GetClass() );
     189
     190        char temporary[1024];
     191        sprintf( temporary,
     192            "Return New %s(ObjPtr( This ),Get_LONG_PTR( (Get_LONG_PTR( ObjPtr(This) ) + SizeOf(LONG_PTR)*%d) As VoidPtr ) As VoidPtr )",
     193            userProc.ReturnType().GetClass().GetName().c_str(),
     194            vtblMasterListIndex
     195        );
     196        MakeMiddleCode( temporary );
     197
     198        ChangeOpcode( temporary );
    181199    }
    182200    else{
Note: See TracChangeset for help on using the changeset viewer.