Changeset 75 in dev for BasicCompiler32/VarList.cpp


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

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • BasicCompiler32/VarList.cpp

    r73 r75  
    348348    if(pobj_dti->lplpSpBase[i2]==0) return;
    349349
    350     extern SubInfo **ppSubHash;
    351     SubInfo *psi;
     350    extern UserProc **ppSubHash;
     351    UserProc *pUserProc;
    352352    for(i3=0,sw=0;i3<MAX_HASH;i3++){
    353         psi=ppSubHash[i3];
    354         while(psi){
    355             if(rva_to_real(psi->CompileAddress) <= pobj_dti->lplpObp[i2]  &&
    356                 pobj_dti->lplpObp[i2] < rva_to_real(psi->EndOpAddr)){
     353        pUserProc=ppSubHash[i3];
     354        while(pUserProc){
     355            if(rva_to_real(pUserProc->beginOpAddress) <= pobj_dti->lplpObp[i2]  &&
     356                pobj_dti->lplpObp[i2] < rva_to_real(pUserProc->endOpAddress)){
    357357                sw=1;
    358358                break;
    359359            }
    360360
    361             psi=psi->pNextData;
     361            pUserProc=pUserProc->pNextData;
    362362        }
    363363        if(sw) break;
    364364    }
    365     if(!psi) return;
    366 
    367     for(i=0;i<psi->VarNum;i++){
    368         VARIABLE *pVar=&psi->pVar[i];
     365    if(!pUserProc) return;
     366
     367    for(i=0;i<pUserProc->VarNum;i++){
     368        VARIABLE *pVar=&pUserProc->pVar[i];
    369369
    370370        //スコープ外の場合は無視
     
    416416
    417417    TreeView_DeleteAllItems(hVarTree_This);
    418     if(!psi->pobj_ParentClass) return;
     418    if(!pUserProc->GetParentClassPtr()) return;
    419419
    420420    //Thisポインタを取得
    421421    LONG_PTR pThis;
    422     for(i=0;i<psi->VarNum;i++){
    423         if(lstrcmp(psi->pVar[i].name,"_System_LocalThis")==0) break;
    424     }
    425     if(i==psi->VarNum) return;
    426     lpData=pobj_dti->lplpSpBase[i2]+psi->pVar[i].offset;
     422    for(i=0;i<pUserProc->VarNum;i++){
     423        if(lstrcmp(pUserProc->pVar[i].name,"_System_LocalThis")==0) break;
     424    }
     425    if(i==pUserProc->VarNum) return;
     426    lpData=pobj_dti->lplpSpBase[i2]+pUserProc->pVar[i].offset;
    427427    ReadProcessMemory(hDebugProcess,(void *)lpData,&pThis,sizeof(LONG_PTR),&lpAccBytes);
    428428
    429     for(i=0;i<psi->pobj_ParentClass->iMemberNum;i++){
    430         offset = psi->pobj_ParentClass->GetMemberOffset( psi->pobj_ParentClass->ppobj_Member[i]->name, &i2 );
    431 
    432         if(psi->pobj_ParentClass->ppobj_Member[i]->SubScripts[0]!=-1){
     429    for(i=0;i<pUserProc->GetParentClassPtr()->iMemberNum;i++){
     430        offset = pUserProc->GetParentClassPtr()->GetMemberOffset( pUserProc->GetParentClassPtr()->ppobj_Member[i]->name, &i2 );
     431
     432        if(pUserProc->GetParentClassPtr()->ppobj_Member[i]->SubScripts[0]!=-1){
    433433            //配列
    434434            sprintf(temporary,"%s %s(&H%X)",
    435                 psi->pobj_ParentClass->ppobj_Member[i]->name,
     435                pUserProc->GetParentClassPtr()->ppobj_Member[i]->name,
    436436                STRING_ARRAY,
    437437                offset);
     
    442442            VarList_Array(hVarTree_This,hParent,
    443443                pThis+offset,
    444                 psi->pobj_ParentClass->ppobj_Member[i]->TypeInfo.type,
    445                 psi->pobj_ParentClass->ppobj_Member[i]->SubScripts,
    446                 psi->pobj_ParentClass->ppobj_Member[i]->TypeInfo.u.lpIndex);
     444                pUserProc->GetParentClassPtr()->ppobj_Member[i]->TypeInfo.type,
     445                pUserProc->GetParentClassPtr()->ppobj_Member[i]->SubScripts,
     446                pUserProc->GetParentClassPtr()->ppobj_Member[i]->TypeInfo.u.lpIndex);
    447447        }
    448448        else{
    449449            VarList_Insert(hVarTree_This,&tv,
    450                 psi->pobj_ParentClass->ppobj_Member[i]->name,
    451                 psi->pobj_ParentClass->ppobj_Member[i]->TypeInfo.type,
     450                pUserProc->GetParentClassPtr()->ppobj_Member[i]->name,
     451                pUserProc->GetParentClassPtr()->ppobj_Member[i]->TypeInfo.type,
    452452                pThis+offset,
    453                 psi->pobj_ParentClass->ppobj_Member[i]->TypeInfo.u.lpIndex);
     453                pUserProc->GetParentClassPtr()->ppobj_Member[i]->TypeInfo.u.lpIndex);
    454454        }
    455455    }
     
    583583
    584584    //プロシージャ コンボボックス
    585     extern SubInfo **ppSubHash;
    586     SubInfo *psi;
     585    extern UserProc **ppSubHash;
     586    UserProc *pUserProc;
    587587    int sw;
    588588    SendMessage(hProcCombo,CB_RESETCONTENT,0,0);
    589589    for(i2=pobj_dti->iProcLevel;i2>=0;i2--){
    590590        for(i3=0,sw=0;i3<MAX_HASH;i3++){
    591             psi=ppSubHash[i3];
    592             while(psi){
    593                 if(rva_to_real(psi->CompileAddress) <= pobj_dti->lplpObp[i2]  &&
    594                     pobj_dti->lplpObp[i2] < rva_to_real(psi->EndOpAddr)){
    595                     lstrcpy(temporary,psi->name);
     591            pUserProc=ppSubHash[i3];
     592            while(pUserProc){
     593                if(rva_to_real(pUserProc->beginOpAddress) <= pobj_dti->lplpObp[i2]  &&
     594                    pobj_dti->lplpObp[i2] < rva_to_real(pUserProc->endOpAddress)){
     595                    lstrcpy(temporary,pUserProc->GetName().c_str());
    596596                    sw=1;
    597597                    break;
    598598                }
    599                 psi=psi->pNextData;
     599                pUserProc=pUserProc->pNextData;
    600600            }
    601601            if(sw) break;
    602602        }
    603         if(!psi){
     603        if(!pUserProc){
    604604            if(i2==0){
    605605                lstrcpy(temporary,"Global");
     
    706706
    707707    if(pobj_dti->lplpSpBase[i2]){
    708         extern SubInfo **ppSubHash;
    709         SubInfo *psi;
     708        extern UserProc **ppSubHash;
     709        UserProc *pUserProc;
    710710        for(i3=0,sw=0;i3<MAX_HASH;i3++){
    711             psi=ppSubHash[i3];
    712             while(psi){
    713                 if(rva_to_real(psi->CompileAddress) <= pobj_dti->lplpObp[i2]  &&
    714                     pobj_dti->lplpObp[i2] < rva_to_real(psi->EndOpAddr)){
     711            pUserProc=ppSubHash[i3];
     712            while(pUserProc){
     713                if(rva_to_real(pUserProc->beginOpAddress) <= pobj_dti->lplpObp[i2]  &&
     714                    pobj_dti->lplpObp[i2] < rva_to_real(pUserProc->endOpAddress)){
    715715                    sw=1;
    716716                    break;
    717717                }
    718718
    719                 psi=psi->pNextData;
     719                pUserProc=pUserProc->pNextData;
    720720            }
    721721            if(sw) break;
     
    723723
    724724
    725         if(psi){
    726             LocalVar=psi->pVar;
    727             MaxLocalVarNum=psi->VarNum;
    728 
    729             pobj_CompilingClass=psi->pobj_ParentClass;
     725        if(pUserProc){
     726            LocalVar=pUserProc->pVar;
     727            MaxLocalVarNum=pUserProc->VarNum;
     728
     729            pobj_CompilingClass=pUserProc->GetParentClassPtr();
    730730        }
    731731    }
Note: See TracChangeset for help on using the changeset viewer.