Ignore:
Timestamp:
Jul 12, 2007, 2:58:26 AM (17 years ago)
Author:
dai_9181
Message:

コード全体のリファクタリングを実施

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/abdev/BasicCompiler_Common/VarList.cpp

    r182 r206  
     1#include "stdafx.h"
     2
    13#include <jenga/include/smoothie/Smoothie.h>
     4
     5#include <Compiler.h>
    26
    37#include "../BasicCompiler_Common/common.h"
     
    913HWND hVarTree_Global,hVarTree_Local,hVarTree_This;
    1014
    11 int VarList_Array(HWND hVarTree,HTREEITEM hParent,LONG_PTR offset,const Type &type,const int *SubScripts);
     15int VarList_Array(HWND hVarTree,HTREEITEM hParent,LONG_PTR offset,const Type &type,const Subscripts &subscripts);
    1216void VarList_Member(HWND hVarTree,HTREEITEM hParent,LONG_PTR pTopOffset,const CClass &objClass,BOOL bPtr);
    1317void VarList_Insert(HWND hVarTree,TV_INSERTSTRUCT *lptv,const char *VarName,const Type &type,LONG_PTR offset){
     
    180184        offset=objClass.GetMemberOffset( pMember->GetName().c_str(), &i2 );
    181185
    182         if(pMember->SubScripts[0]!=-1){
     186        if( pMember->GetSubscripts().size() > 0 ){
    183187            //構造体内の配列
    184188            sprintf(VarData,"%s %s(&H%X)",VarName,STRING_ARRAY,pTopOffset+offset);
     
    187191            hParent=TreeView_InsertItem(hVarTree,&tv);
    188192
    189             VarList_Array(hVarTree,hParent,
    190                 pTopOffset+offset,
     193            VarList_Array(
     194                hVarTree,
     195                hParent,
     196                pTopOffset + offset,
    191197                pMember->GetType(),
    192                 pMember->SubScripts);
     198                pMember->GetSubscripts()
     199            );
    193200        }
    194201        else{
     
    202209    }
    203210}
    204 int VarList_Array(HWND hVarTree,HTREEITEM hParent,LONG_PTR offset,const Type &type,const int *SubScripts ){
     211int VarList_Array(HWND hVarTree,HTREEITEM hParent,LONG_PTR offset,const Type &type, const Subscripts &subscripts ){
    205212    int i,i2,i3,ElementNum,MemCounter,UseCount[255];
    206213    char temporary[VN_SIZE],temp2[DIGIT_SIZE];
     
    213220    tv.item.pszText=temporary;
    214221
    215     for(i=0;i<255;i++){
    216         if(SubScripts[i]==-1) break;
     222    for(i=0;i<(int)subscripts.size();i++){
    217223        UseCount[i]=0;
    218224    }
     
    221227    while(1){
    222228        UseCount[i]++;
    223         for(ElementNum=0;SubScripts[i-ElementNum]<UseCount[i-ElementNum];ElementNum++){
     229        for(ElementNum=0;subscripts[i-ElementNum]<UseCount[i-ElementNum];ElementNum++){
    224230            UseCount[i-ElementNum]=0;
    225231            if(i-ElementNum-1<0) return MemCounter;
     
    268274    extern int MemPos_RWSection;
    269275
    270     BOOST_FOREACH( Variable *pVar, globalVars ){
     276    BOOST_FOREACH( Variable *pVar, compiler.GetMeta().GetGlobalVars() ){
    271277
    272278        //スコープ外の場合は無視
    273         if(pVar->ScopeLevel!=0){
    274             if(rva_to_real(pVar->ScopeStartAddress) <= pobj_dti->lplpObp[0]  &&
    275                 pobj_dti->lplpObp[0] < rva_to_real(pVar->ScopeEndAddress)){
     279        if(pVar->GetScopeLevel()!=0){
     280            if(rva_to_real(pVar->GetScopeStartAddress()) <= pobj_dti->lplpObp[0]  &&
     281                pobj_dti->lplpObp[0] < rva_to_real(pVar->GetScopeEndAddress())){
    276282                //範囲内
    277283            }
     
    304310                pVar->GetName().c_str(),
    305311                STRING_ARRAY,
    306                 ImageBase+MemPos_RWSection+pVar->offset);
     312                ImageBase+MemPos_RWSection+pVar->GetOffsetAddress());
    307313            tv.item.iImage=0;
    308314            tv.item.iSelectedImage=0;
    309315            hParent=TreeView_InsertItem(hVarTree_Global,&tv);
    310316
    311             VarList_Array(hVarTree_Global,hParent,
    312                 (LONG_PTR)(ImageBase+MemPos_RWSection+pVar->offset),
    313                 *pVar,
    314                 pVar->GetSubScriptsPtr());
     317            VarList_Array(
     318                hVarTree_Global,
     319                hParent,
     320                (LONG_PTR)(ImageBase+MemPos_RWSection + pVar->GetOffsetAddress()),
     321                pVar->GetType(),
     322                pVar->GetSubscripts()
     323            );
    315324        }
    316325        else{
     
    318327                &tv,
    319328                pVar->GetName().c_str(),
    320                 *pVar,
    321                 (LONG_PTR)(ImageBase+MemPos_RWSection+pVar->offset));
     329                pVar->GetType(),
     330                (LONG_PTR)(ImageBase+MemPos_RWSection+pVar->GetOffsetAddress()));
    322331        }
    323332    }
    324333}
    325334void RefreshLocalVar(void){
    326     int i2,i3,sw;
     335    int i2;
    327336    char temporary[VN_SIZE];
    328337    TV_INSERTSTRUCT tv;
     
    347356    if(pobj_dti->lplpSpBase[i2]==0) return;
    348357
    349     extern GlobalProc **ppSubHash;
    350     GlobalProc *pUserProc;
    351     for(i3=0,sw=0;i3<MAX_HASH;i3++){
    352         pUserProc=ppSubHash[i3];
    353         while(pUserProc){
    354             if(rva_to_real(pUserProc->beginOpAddress) <= pobj_dti->lplpObp[i2]  &&
    355                 pobj_dti->lplpObp[i2] < rva_to_real(pUserProc->endOpAddress)){
    356                 sw=1;
    357                 break;
    358             }
    359 
    360             pUserProc=pUserProc->pNextData;
    361         }
    362         if(sw) break;
     358    UserProc *pUserProc = NULL;
     359    compiler.GetMeta().GetUserProcs().Iterator_Reset();
     360    while( compiler.GetMeta().GetUserProcs().Iterator_HasNext() )
     361    {
     362        pUserProc = compiler.GetMeta().GetUserProcs().Iterator_GetNext();
     363        if(rva_to_real(pUserProc->GetBeginOpAddress()) <= pobj_dti->lplpObp[i2]  &&
     364            pobj_dti->lplpObp[i2] < rva_to_real(pUserProc->GetEndOpAddress())){
     365            break;
     366        }
    363367    }
    364368    if(!pUserProc) return;
    365369
    366     BOOST_FOREACH( Variable *pVar, pUserProc->localVars ){
     370    BOOST_FOREACH( Variable *pVar, pUserProc->GetLocalVars() ){
    367371
    368372        //スコープ外の場合は無視
    369         if(pVar->ScopeLevel!=0){
    370             if(rva_to_real(pVar->ScopeStartAddress) <= pobj_dti->lplpObp[i2]  &&
    371                 pobj_dti->lplpObp[i2] < rva_to_real(pVar->ScopeEndAddress)){
     373        if(pVar->GetScopeLevel()!=0){
     374            if(rva_to_real(pVar->GetScopeStartAddress()) <= pobj_dti->lplpObp[i2]  &&
     375                pobj_dti->lplpObp[i2] < rva_to_real(pVar->GetScopeEndAddress())){
    372376                //範囲内
    373377            }
     
    382386                pVar->GetName().c_str(),
    383387                STRING_ARRAY,
    384                 pobj_dti->lplpSpBase[i2]+pVar->offset);
     388                pobj_dti->lplpSpBase[i2]+pVar->GetOffsetAddress());
    385389            tv.item.iImage=0;
    386390            tv.item.iSelectedImage=0;
    387391            hParent=TreeView_InsertItem(hVarTree_Local,&tv);
    388392
    389             VarList_Array(hVarTree_Local,hParent,
    390                 pobj_dti->lplpSpBase[i2]+pVar->offset,
    391                 *pVar,
    392                 pVar->GetSubScriptsPtr());
     393            VarList_Array(
     394                hVarTree_Local,
     395                hParent,
     396                pobj_dti->lplpSpBase[i2] + pVar->GetOffsetAddress(),
     397                pVar->GetType(),
     398                pVar->GetSubscripts()
     399            );
    393400        }
    394401        else{
    395             offset=pobj_dti->lplpSpBase[i2]+pVar->offset;
     402            offset=pobj_dti->lplpSpBase[i2]+pVar->GetOffsetAddress();
    396403            if(pVar->IsRef()){
    397404                ReadProcessMemory(hDebugProcess,(void *)offset,&lpData,sizeof(LONG_PTR),&accessBytes);
     
    400407            VarList_Insert(hVarTree_Local,&tv,
    401408                pVar->GetName().c_str(),
    402                 *pVar,
     409                pVar->GetType(),
    403410                offset);
    404411        }
     
    416423    //Thisポインタを取得
    417424    LONG_PTR pThis;
    418     const Variable *pVar = pUserProc->localVars.Find( Symbol( "_System_LocalThis" ) );
     425    const Variable *pVar = pUserProc->GetLocalVars().Find( Symbol( "_System_LocalThis" ) );
    419426    if( !pVar ){
    420427        return;
    421428    }
    422     lpData=pobj_dti->lplpSpBase[i2]+pVar->offset;
     429    lpData=pobj_dti->lplpSpBase[i2]+pVar->GetOffsetAddress();
    423430    ReadProcessMemory(hDebugProcess,(void *)lpData,&pThis,sizeof(LONG_PTR),&accessBytes);
    424431
     
    426433        offset=pUserProc->GetParentClassPtr()->GetMemberOffset( pMember->GetName().c_str(),&i2);
    427434
    428         if(pMember->SubScripts[0]!=-1){
     435        if( pMember->GetSubscripts().size() > 0 ){
    429436            //配列
    430437            sprintf(temporary,"%s %s(&H%X)",
     
    436443            hParent=TreeView_InsertItem(hVarTree_This,&tv);
    437444
    438             VarList_Array(hVarTree_This,hParent,
    439                 pThis+offset,
     445            VarList_Array(
     446                hVarTree_This,
     447                hParent,
     448                pThis + offset,
    440449                pMember->GetType(),
    441                 pMember->SubScripts);
     450                pMember->GetSubscripts()
     451            );
    442452        }
    443453        else{
     
    590600
    591601    //プロシージャ コンボボックス
    592     extern GlobalProc **ppSubHash;
    593     GlobalProc *pUserProc;
    594     int sw;
    595602    SendMessage(hProcCombo,CB_RESETCONTENT,0,0);
    596603    for(i2=pobj_dti->iProcLevel;i2>=0;i2--){
    597         for(i3=0,sw=0;i3<MAX_HASH;i3++){
    598             pUserProc=ppSubHash[i3];
    599             while(pUserProc){
    600                 if(rva_to_real(pUserProc->beginOpAddress) <= pobj_dti->lplpObp[i2]  &&
    601                     pobj_dti->lplpObp[i2] < rva_to_real(pUserProc->endOpAddress)){
    602                         lstrcpy(temporary,pUserProc->GetName().c_str());
    603                         sw=1;
    604                         break;
    605                 }
    606                 pUserProc=pUserProc->pNextData;
    607             }
    608             if(sw) break;
     604
     605        UserProc *pUserProc = NULL;
     606        compiler.GetMeta().GetUserProcs().Iterator_Reset();
     607        while( compiler.GetMeta().GetUserProcs().Iterator_HasNext() )
     608        {
     609            pUserProc = compiler.GetMeta().GetUserProcs().Iterator_GetNext();
     610
     611            if(rva_to_real(pUserProc->GetBeginOpAddress()) <= pobj_dti->lplpObp[i2]  &&
     612                pobj_dti->lplpObp[i2] < rva_to_real(pUserProc->GetEndOpAddress()))
     613            {
     614                lstrcpy(temporary,pUserProc->GetName().c_str());
     615                break;
     616            }
    609617        }
    610618        if(!pUserProc){
     
    675683void InitVarList(DWORD dwThreadId){
    676684    extern HWND hDebugWnd;
    677     int i2,i3,i5;
     685    int i2,i5;
    678686    char temporary[255];
    679687
     
    703711    ///////////////////////////////////////////////
    704712
    705     int sw;
    706 
    707713    i2=(int)SendDlgItemMessage(hDebugWnd,IDC_PROCCOMBO,CB_GETCURSEL,0,0);
    708714    i2=pobj_dti->iProcLevel-i2;
    709715
    710716    if(pobj_dti->lplpSpBase[i2]){
    711         extern GlobalProc **ppSubHash;
    712         GlobalProc *pUserProc;
    713         for(i3=0,sw=0;i3<MAX_HASH;i3++){
    714             pUserProc=ppSubHash[i3];
    715             while(pUserProc){
    716                 if(rva_to_real(pUserProc->beginOpAddress) <= pobj_dti->lplpObp[i2]  &&
    717                     pobj_dti->lplpObp[i2] < rva_to_real(pUserProc->endOpAddress)){
    718                     sw=1;
    719                     break;
    720                 }
    721 
    722                 pUserProc=pUserProc->pNextData;
    723             }
    724             if(sw) break;
    725         }
    726 
     717
     718        UserProc *pUserProc = NULL;
     719        compiler.GetMeta().GetUserProcs().Iterator_Reset();
     720        while( compiler.GetMeta().GetUserProcs().Iterator_HasNext() )
     721        {
     722            pUserProc = compiler.GetMeta().GetUserProcs().Iterator_GetNext();
     723
     724            if(rva_to_real(pUserProc->GetBeginOpAddress()) <= pobj_dti->lplpObp[i2]  &&
     725                pobj_dti->lplpObp[i2] < rva_to_real(pUserProc->GetEndOpAddress())){
     726                break;
     727            }
     728        }
    727729
    728730        if(pUserProc){
    729             Smoothie::Temp::pCompilingClass = pUserProc->GetParentClassPtr();
     731            compiler.pCompilingClass = pUserProc->GetParentClassPtr();
    730732            UserProc::CompileStartForUserProc( pUserProc );
    731733        }
Note: See TracChangeset for help on using the changeset viewer.