Changeset 140 in dev for BasicCompiler_Common/VarList.cpp


Ignore:
Timestamp:
Jun 15, 2007, 4:00:25 AM (17 years ago)
Author:
dai_9181
Message:

traceログ機能を搭載
動的メンバをstl::vectorにまとめた
シンボルをクラス化した

File:
1 edited

Legend:

Unmodified
Added
Removed
  • BasicCompiler_Common/VarList.cpp

    r137 r140  
    155155}
    156156void VarList_Member(HWND hVarTree,HTREEITEM hParent,LONG_PTR pTopOffset,const CClass &objClass,BOOL bPtr){
    157     int i;
    158157    char VarData[VN_SIZE],VarName[VN_SIZE];
    159158    TV_INSERTSTRUCT tv;
     
    165164    tv.item.pszText=VarData;
    166165
    167     for(i=0;i<objClass.iMemberNum;i++){
     166    BOOST_FOREACH( CMember *pMember, objClass.GetDynamicMembers() ){
    168167        if(bPtr){
    169168            lstrcpy(VarName,"->");
    170             lstrcat(VarName,objClass.ppobj_Member[i]->GetName().c_str());
     169            lstrcat(VarName,pMember->GetName().c_str());
    171170        }
    172171        else{
    173172            lstrcpy(VarName,".");
    174             lstrcat(VarName,objClass.ppobj_Member[i]->GetName().c_str());
     173            lstrcat(VarName,pMember->GetName().c_str());
    175174        }
    176175
    177176        LONG_PTR offset;
    178177        int i2;
    179         offset=objClass.GetMemberOffset( objClass.ppobj_Member[i]->GetName().c_str(), &i2 );
    180 
    181         if(objClass.ppobj_Member[i]->SubScripts[0]!=-1){
     178        offset=objClass.GetMemberOffset( pMember->GetName().c_str(), &i2 );
     179
     180        if(pMember->SubScripts[0]!=-1){
    182181            //構造体内の配列
    183182            sprintf(VarData,"%s %s(&H%X)",VarName,STRING_ARRAY,pTopOffset+offset);
     
    188187            VarList_Array(hVarTree,hParent,
    189188                pTopOffset+offset,
    190                 objClass.ppobj_Member[i]->GetType(),
    191                 objClass.ppobj_Member[i]->SubScripts);
     189                pMember->GetType(),
     190                pMember->SubScripts);
    192191        }
    193192        else{
     
    196195                &tv,
    197196                VarName,
    198                 objClass.ppobj_Member[i]->GetType(),
     197                pMember->GetType(),
    199198                pTopOffset+offset);
    200199        }
     
    323322}
    324323void RefreshLocalVar(void){
    325     int i,i2,i3,sw;
     324    int i2,i3,sw;
    326325    char temporary[VN_SIZE];
    327326    TV_INSERTSTRUCT tv;
     
    415414    //Thisポインタを取得
    416415    LONG_PTR pThis;
    417     const Variable *pVar = pUserProc->localVars.Find( "_System_LocalThis" );
     416    const Variable *pVar = pUserProc->localVars.Find( Symbol( "_System_LocalThis" ) );
    418417    if( !pVar ){
    419418        return;
     
    422421    ReadProcessMemory(hDebugProcess,(void *)lpData,&pThis,sizeof(LONG_PTR),&accessBytes);
    423422
    424     for(i=0;i<pUserProc->GetParentClassPtr()->iMemberNum;i++){
    425         offset=pUserProc->GetParentClassPtr()->GetMemberOffset( pUserProc->GetParentClassPtr()->ppobj_Member[i]->GetName().c_str(),&i2);
    426 
    427         if(pUserProc->GetParentClassPtr()->ppobj_Member[i]->SubScripts[0]!=-1){
     423    BOOST_FOREACH( CMember *pMember, pUserProc->GetParentClassPtr()->GetDynamicMembers() ){
     424        offset=pUserProc->GetParentClassPtr()->GetMemberOffset( pMember->GetName().c_str(),&i2);
     425
     426        if(pMember->SubScripts[0]!=-1){
    428427            //配列
    429428            sprintf(temporary,"%s %s(&H%X)",
    430                 pUserProc->GetParentClassPtr()->ppobj_Member[i]->GetName().c_str(),
     429                pMember->GetName().c_str(),
    431430                STRING_ARRAY,
    432431                (ULONG_PTR)offset);
     
    437436            VarList_Array(hVarTree_This,hParent,
    438437                pThis+offset,
    439                 pUserProc->GetParentClassPtr()->ppobj_Member[i]->GetType(),
    440                 pUserProc->GetParentClassPtr()->ppobj_Member[i]->SubScripts);
     438                pMember->GetType(),
     439                pMember->SubScripts);
    441440        }
    442441        else{
    443442            VarList_Insert(hVarTree_This,&tv,
    444                 pUserProc->GetParentClassPtr()->ppobj_Member[i]->GetName().c_str(),
    445                 pUserProc->GetParentClassPtr()->ppobj_Member[i]->GetType(),
     443                pMember->GetName().c_str(),
     444                pMember->GetType(),
    446445                pThis+offset);
    447446        }
Note: See TracChangeset for help on using the changeset viewer.