Ignore:
Timestamp:
Mar 3, 2008, 6:33:29 PM (16 years ago)
Author:
dai_9181
Message:

クラス継承を行う際、dynamicMembersの中身をコピーする方式をやめ、基底クラスのものを参照するように修正した。

File:
1 edited

Legend:

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

    r393 r409  
    160160    TreeView_InsertItem(hVarTree,lptv);
    161161}
    162 void VarList_Member(HWND hVarTree,HTREEITEM hParent,LONG_PTR pTopOffset,const CClass &objClass,BOOL bPtr){
     162void VarList_Member(HWND hVarTree,HTREEITEM hParent,LONG_PTR pTopOffset,const CClass &objClass,BOOL bPtr)
     163{
    163164    char VarData[VN_SIZE],VarName[VN_SIZE];
     165    if( objClass.HasSuperClass() )
     166    {
     167        TV_INSERTSTRUCT tv;
     168
     169        memset(&tv,0,sizeof(TV_INSERTSTRUCT));
     170        tv.hInsertAfter=TVI_LAST;
     171        tv.item.mask=TVIF_TEXT|TVIF_IMAGE|TVIF_SELECTEDIMAGE;
     172        tv.hParent=hParent;
     173        tv.item.pszText=VarData;
     174
     175        // 基底クラス
     176        sprintf(tv.item.pszText,"Inherits %s",objClass.GetSuperClass().GetName().c_str());
     177        tv.item.iImage=1;
     178        tv.item.iSelectedImage=1;
     179        HTREEITEM hTempParent=TreeView_InsertItem(hVarTree,&tv);
     180
     181        VarList_Member(hVarTree,hTempParent,pTopOffset,objClass.GetSuperClass(),0);
     182    }
     183
    164184    TV_INSERTSTRUCT tv;
    165185
     
    181201
    182202        LONG_PTR offset;
    183         int i2;
    184         offset=objClass.GetMemberOffset( pMember->GetName().c_str(), &i2 );
     203        offset=objClass.GetMemberOffset( pMember->GetName().c_str() );
    185204
    186205        if( pMember->GetSubscripts().size() > 0 ){
     
    435454    ReadProcessMemory(hDebugProcess,(void *)lpData,&pThis,sizeof(LONG_PTR),&accessBytes);
    436455
     456    if( pUserProc->GetParentClassPtr()->HasSuperClass() )
     457    {
     458        TV_INSERTSTRUCT tv;
     459
     460        memset(&tv,0,sizeof(TV_INSERTSTRUCT));
     461        tv.hInsertAfter=TVI_LAST;
     462        tv.item.mask=TVIF_TEXT|TVIF_IMAGE|TVIF_SELECTEDIMAGE;
     463        tv.hParent=NULL;
     464        tv.item.pszText=temporary;
     465
     466        // 基底クラス
     467        sprintf(tv.item.pszText,"Inherits %s",pUserProc->GetParentClassPtr()->GetSuperClass().GetName().c_str());
     468        tv.item.iImage=1;
     469        tv.item.iSelectedImage=1;
     470        HTREEITEM hTempParent=TreeView_InsertItem(hVarTree_This,&tv);
     471
     472        VarList_Member(hVarTree_This,hTempParent,pThis,pUserProc->GetParentClassPtr()->GetSuperClass(),0);
     473    }
     474
    437475    BOOST_FOREACH( CMember *pMember, pUserProc->GetParentClassPtr()->GetDynamicMembers() ){
    438         offset=pUserProc->GetParentClassPtr()->GetMemberOffset( pMember->GetName().c_str(),&i2);
     476        offset=pUserProc->GetParentClassPtr()->GetMemberOffset( pMember->GetName().c_str());
    439477
    440478        if( pMember->GetSubscripts().size() > 0 ){
Note: See TracChangeset for help on using the changeset viewer.