Changeset 75 in dev for BasicCompiler32/Compile_Func.cpp


Ignore:
Timestamp:
Mar 20, 2007, 4:36:16 AM (17 years ago)
Author:
dai_9181
Message:

TYPEINFO→Typeへのリファクタリングを実施。64bitはほぼ完了。32bitが全般的に未完成。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • BasicCompiler32/Compile_Func.cpp

    r73 r75  
    207207    }
    208208
    209     TYPEINFO TypeInfo={type,lpIndex};
     209    Type TypeInfo={type,lpIndex};
    210210    if(IsStringObjectType(TypeInfo)){
    211211        //Stringオブジェクトの場合
     
    243243void Opcode_Func_AddressOf(const char *name){
    244244    extern int cp;
    245     SubInfo *psi;
     245    UserProc *pUserProc;
    246246
    247247    extern LONG_PTR ProcPtr_BaseIndex;
     
    249249        //左辺の型にのっとり、オーバーロードを解決
    250250
    251         std::vector<SubInfo *> subs;
     251        std::vector<UserProc *> subs;
    252252        GetOverloadSubHash( name, subs );
    253253        if( subs.size() == 0 ){
     
    257257
    258258        //オーバーロードを解決
    259         extern PROCPTRINFO *pProcPtrInfo;
    260         psi=OverloadSolution(name,subs,pProcPtrInfo[ProcPtr_BaseIndex].pParmInfo,pProcPtrInfo[ProcPtr_BaseIndex].ParmNum,NULL);
    261 
    262         if(!psi){
     259        extern ProcPointer **ppProcPtrInfo;
     260        pUserProc=OverloadSolution(name,subs,ppProcPtrInfo[ProcPtr_BaseIndex]->Params(), Type() );
     261
     262        if(!pUserProc){
    263263            SetError(27,name,cp);
    264264            return;
     
    266266    }
    267267    else{
    268         psi=GetSubHash(name);
    269         if(!psi){
     268        pUserProc=GetSubHash(name);
     269        if(!pUserProc){
    270270            SetError(27,name,cp);
    271271            return;
     
    273273    }
    274274
    275 
    276     if(psi->bVirtual){
     275    if( pUserProc->IsVirtual() ){
    277276        ///////////////////////////////
    278277        // 仮想関数の場合
     
    324323        OpBuffer[obp++]=(char)0x11;
    325324
    326         int i2 = pobj_c->GetFuncNumInVtbl( psi );
     325        int i2 = pobj_c->GetFuncNumInVtbl( pUserProc );
    327326
    328327        //mov eax,dword ptr[edx+func_index]
     
    339338        //mov eax,ProcAddr
    340339        OpBuffer[obp++]=(char)0xB8;
    341         pobj_SubAddrSchedule->add(psi,0);
     340        pobj_SubAddrSchedule->add(pUserProc,0);
    342341        obp+=sizeof(long);
    343342    }
    344343
    345     psi->bUse=1;
     344    pUserProc->Using();
    346345}
    347346void Opcode_Func_SizeOf(const char *Parameter){
     
    361360    op_mov_RV( REG_EAX, size );
    362361}
    363 void Opcode_Func_VarPtr( const char *Parameter, TYPEINFO &ReturnTypeInfo ){
     362void Opcode_Func_VarPtr( const char *Parameter, Type &ReturnTypeInfo ){
    364363    RELATIVE_VAR RelativeVar;
    365364
     
    439438}
    440439
    441 void Opcode_CallFunc( const char *Parameter, const int FuncNum, TYPEINFO &ReturnTypeInfo ){
     440void Opcode_CallFunc( const char *Parameter, const int FuncNum, Type &ReturnTypeInfo ){
    442441    switch(FuncNum){
    443442        case FUNC_FIX:
Note: See TracChangeset for help on using the changeset viewer.