Ignore:
Timestamp:
Feb 11, 2011, 10:05:14 PM (14 years ago)
Author:
イグトランス (egtra)
Message:

Hashmapの実装にunorderedを用いるよう変更

Location:
branches/egtra/ab5.0/abdev/BasicCompiler_Common
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • branches/egtra/ab5.0/abdev/BasicCompiler_Common/Debug.cpp

    r798 r803  
    276276UserProc *GetSubFromObp(ULONG_PTR pos)
    277277{
    278     compiler.GetObjectModule().meta.GetUserProcs().Iterator_Reset();
    279     while( compiler.GetObjectModule().meta.GetUserProcs().Iterator_HasNext() )
     278    foreach (auto pUserProc, compiler.GetObjectModule().meta.GetUserProcs())
    280279    {
    281         UserProc *pUserProc = compiler.GetObjectModule().meta.GetUserProcs().Iterator_GetNext();
    282 
    283280        if(rva_to_real(pUserProc->GetBeginOpAddress()) <= pos  &&
    284281            pos < rva_to_real(pUserProc->GetEndOpAddress()))
  • branches/egtra/ab5.0/abdev/BasicCompiler_Common/Diagnose.cpp

    r750 r803  
    3434        int codeSizeOfGlobalProc = 0;
    3535        int codeSizeOfClassMethod = 0;
    36         compiler.GetObjectModule().meta.GetUserProcs().Iterator_Reset();
    37         while( compiler.GetObjectModule().meta.GetUserProcs().Iterator_HasNext() )
     36        foreach (auto pUserProc, compiler.GetObjectModule().meta.GetUserProcs())
    3837        {
    39             UserProc *pUserProc = compiler.GetObjectModule().meta.GetUserProcs().Iterator_GetNext();
    4038            if( pUserProc->IsCompiled() ){
    4139                if( pUserProc->HasParentClass() ){
     
    6058        int codeSizeOfEnum = 0;
    6159
    62         // イテレータをリセット
    63         compiler.GetObjectModule().meta.GetClasses().Iterator_Reset();
    64 
    65         while( compiler.GetObjectModule().meta.GetClasses().Iterator_HasNext() ){
     60        foreach (auto pClass, compiler.GetObjectModule().meta.GetClasses())
     61        {
    6662            int codeSizeOfClass = 0;
    6763
    68             CClass &objClass = *compiler.GetObjectModule().meta.GetClasses().Iterator_GetNext();
     64            CClass &objClass = *pClass;
    6965
    7066            if( !objClass.IsEnum() ){
     
    9995        ///////////////////////////////////////////////////////////////////
    10096
    101         // イテレータをリセット
    102         compiler.GetObjectModule().meta.GetClasses().Iterator_Reset();
    103 
    104         while( compiler.GetObjectModule().meta.GetClasses().Iterator_HasNext() ){
     97        foreach (auto pClass, compiler.GetObjectModule().meta.GetClasses())
     98        {
    10599            int codeSizeOfClass = 0;
    106100
    107             CClass &objClass = *compiler.GetObjectModule().meta.GetClasses().Iterator_GetNext();
     101            CClass &objClass = *pClass;
    108102
    109103            // 動的メソッド
  • branches/egtra/ab5.0/abdev/BasicCompiler_Common/Subroutine.cpp

    r751 r803  
    319319
    320320bool IsNeedProcCompile(){
    321     compiler.GetObjectModule().meta.GetUserProcs().Iterator_Reset();
    322     while( compiler.GetObjectModule().meta.GetUserProcs().Iterator_HasNext() )
    323     {
    324         UserProc *pUserProc = compiler.GetObjectModule().meta.GetUserProcs().Iterator_GetNext();
     321    foreach (auto pUserProc, compiler.GetObjectModule().meta.GetUserProcs())
     322    {
    325323        if( pUserProc->IsUsing() && pUserProc->IsCompiled() == false ){
    326324            return true;
     
    385383
    386384repeat:
    387     compiler.GetObjectModule().meta.GetUserProcs().Iterator_Reset();
    388     while( compiler.GetObjectModule().meta.GetUserProcs().Iterator_HasNext() )
    389     {
    390         UserProc *pUserProc = compiler.GetObjectModule().meta.GetUserProcs().Iterator_GetNext();
     385    foreach (auto pUserProc, compiler.GetObjectModule().meta.GetUserProcs())
     386    {
    391387        CompileBufferInProcedure( *pUserProc );
    392388    }
     
    410406            //プロシージャコンパイルによって、プロシージャコンパイルが必要になる場合
    411407
    412             compiler.GetObjectModule().meta.GetUserProcs().Iterator_Reset();
    413             while( compiler.GetObjectModule().meta.GetUserProcs().Iterator_HasNext() )
     408            foreach(auto pUserProc, compiler.GetObjectModule().meta.GetUserProcs())
    414409            {
    415                 UserProc *pUserProc = compiler.GetObjectModule().meta.GetUserProcs().Iterator_GetNext();
    416410                CompileBufferInProcedure( *pUserProc );
    417411            }
  • branches/egtra/ab5.0/abdev/BasicCompiler_Common/VarList.cpp

    r763 r803  
    11#include "stdafx.h"
    22
     3#include <boost/range/algorithm.hpp>
    34#include <Compiler.h>
    45
     
    411412    if(pobj_dti->lplpSpBase[i2]==0) return;
    412413
    413     UserProc *pUserProc = NULL;
    414     compiler.GetObjectModule().meta.GetUserProcs().Iterator_Reset();
    415     while( compiler.GetObjectModule().meta.GetUserProcs().Iterator_HasNext() )
     414    auto const& t = compiler.GetObjectModule().meta.GetUserProcs();
     415    auto it = boost::find_if<boost::return_found>(t, [&](UserProc *pUserProc) -> bool {
     416        return rva_to_real(pUserProc->GetBeginOpAddress()) <= pobj_dti->lplpObp[i2] &&
     417            pobj_dti->lplpObp[i2] < rva_to_real(pUserProc->GetEndOpAddress());
     418    });
     419    if (it == boost::end(t))
    416420    {
    417         pUserProc = compiler.GetObjectModule().meta.GetUserProcs().Iterator_GetNext();
    418         if(rva_to_real(pUserProc->GetBeginOpAddress()) <= pobj_dti->lplpObp[i2]  &&
    419             pobj_dti->lplpObp[i2] < rva_to_real(pUserProc->GetEndOpAddress())){
    420             break;
    421         }
    422     }
    423     if(!pUserProc) return;
     421        return;
     422    }
     423    UserProc *pUserProc = *it;
    424424
    425425    foreach( Variable *pVar, pUserProc->GetLocalVars() ){
     
    696696    //プロシージャ コンボボックス
    697697    SendMessage(hProcCombo,CB_RESETCONTENT,0,0);
    698     for(i2=pobj_dti->iProcLevel;i2>=0;i2--){
    699 
     698    for(i2=pobj_dti->iProcLevel;i2>=0;i2--)
     699    {
     700        auto const& t = compiler.GetObjectModule().meta.GetUserProcs();
     701        auto it = boost::find_if<boost::return_found>(t, [&](UserProc* p) {
     702            return rva_to_real(p->GetBeginOpAddress()) <= pobj_dti->lplpObp[i2] &&
     703                pobj_dti->lplpObp[i2] < rva_to_real(p->GetEndOpAddress());
     704        });
    700705        UserProc *pUserProc = NULL;
    701         compiler.GetObjectModule().meta.GetUserProcs().Iterator_Reset();
    702         while( compiler.GetObjectModule().meta.GetUserProcs().Iterator_HasNext() )
     706        if (it != boost::end(t))
    703707        {
    704             pUserProc = compiler.GetObjectModule().meta.GetUserProcs().Iterator_GetNext();
    705 
    706             if(rva_to_real(pUserProc->GetBeginOpAddress()) <= pobj_dti->lplpObp[i2]  &&
    707                 pobj_dti->lplpObp[i2] < rva_to_real(pUserProc->GetEndOpAddress()))
    708             {
    709                 lstrcpy(temporary,pUserProc->GetName().c_str());
    710                 break;
    711             }
     708            pUserProc = *it;
     709            lstrcpy(temporary, pUserProc->GetName().c_str());
    712710        }
    713711        if(!pUserProc){
     
    811809    i2=pobj_dti->iProcLevel-i2;
    812810
    813     if(pobj_dti->lplpSpBase[i2]){
    814 
    815         UserProc *pUserProc = NULL;
    816         compiler.GetObjectModule().meta.GetUserProcs().Iterator_Reset();
    817         while( compiler.GetObjectModule().meta.GetUserProcs().Iterator_HasNext() )
     811    if(pobj_dti->lplpSpBase[i2])
     812    {
     813        auto const& t = compiler.GetObjectModule().meta.GetUserProcs();
     814        auto it = boost::find_if<boost::return_found>(t, [&](UserProc* p) {
     815            return rva_to_real(p->GetBeginOpAddress()) <= pobj_dti->lplpObp[i2] &&
     816                pobj_dti->lplpObp[i2] < rva_to_real(p->GetEndOpAddress());
     817        });
     818
     819        if (it != boost::end(t))
    818820        {
    819             pUserProc = compiler.GetObjectModule().meta.GetUserProcs().Iterator_GetNext();
    820 
    821             if(rva_to_real(pUserProc->GetBeginOpAddress()) <= pobj_dti->lplpObp[i2]  &&
    822                 pobj_dti->lplpObp[i2] < rva_to_real(pUserProc->GetEndOpAddress())){
    823                 break;
    824             }
    825         }
    826 
    827         if(pUserProc){
    828             compiler.StartProcedureCompile( pUserProc );
     821            compiler.StartProcedureCompile(*it);
    829822        }
    830823    }
  • branches/egtra/ab5.0/abdev/BasicCompiler_Common/hash.cpp

    r598 r803  
    3333
    3434    // ハッシュ値を取得
    35     DllProc *pDllProc = compiler.GetObjectModule().meta.GetDllProcs().GetHashArrayElement( simpleName );
    36     while(pDllProc){
     35    foreach (auto pDllProc, compiler.GetObjectModule().meta.GetDllProcs().GetHashArrayElement(simpleName))
     36    {
    3737        if( pDllProc->IsEqualSymbol( LexicalAnalyzer::FullNameToSymbol( fullName ) ) ){
    3838            return pDllProc;
    3939        }
    40 
    41         pDllProc=pDllProc->GetChainNext();
    4240    }
    4341
  • branches/egtra/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_Class.cpp

    r750 r803  
    13481348    delete pobj_LoopRefCheck;
    13491349    pobj_LoopRefCheck=0;
    1350 
    1351     // イテレータの準備
    1352     classes.Iterator_Init();
    13531350}
    13541351
     
    14121409
    14131410    compiler.GetObjectModule().meta.GetUserProcs().Put( pUserProc );
    1414     compiler.GetObjectModule().meta.GetUserProcs().Iterator_Init();
    14151411
    14161412    LexicalAnalyzer::AddMethod(
  • branches/egtra/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_Const.cpp

    r637 r803  
    206206        }
    207207    }
    208 
    209     // イテレータを初期化
    210     compiler.GetObjectModule().meta.GetGlobalConsts().Iterator_Init();
    211     compiler.GetObjectModule().meta.GetGlobalConstMacros().Iterator_Init();
    212208}
    213209
  • branches/egtra/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_Delegate.cpp

    r750 r803  
    127127    Jenga::Common::SourceTemplate sourceTemplate( ActiveBasic::Common::Environment::GetAbdevSystemDirPath() + "\\templates\\delegate_class.tab" );
    128128
    129     delegates.Iterator_Reset();
    130     while( delegates.Iterator_HasNext() )
    131     {
    132         const Delegate &dg = *delegates.Iterator_GetNext();
     129    foreach (auto pDelegate, delegates)
     130    {
     131        const Delegate &dg = *pDelegate;
    133132
    134133        if( dg.IsExternal() )
     
    263262void LexicalAnalyzer::RefleshDelegatesParameterAndReturnType( Delegates &delegates )
    264263{
    265     delegates.Iterator_Reset();
    266     while( delegates.Iterator_HasNext() )
    267     {
    268         Delegate &dg = *delegates.Iterator_GetNext();
    269         RefleshDelegateParameterAndReturnType( dg );
    270     }
    271 }
     264    foreach (auto *pDelegate, delegates)
     265    {
     266        RefleshDelegateParameterAndReturnType(*pDelegate);
     267    }
     268}
  • branches/egtra/ab5.0/abdev/BasicCompiler_Common/src/Linker.cpp

    r750 r803  
    257257    nativeCode.PutEx( masterObjectModule.globalNativeCode );
    258258
    259     masterObjectModule.meta.GetUserProcs().Iterator_Reset();
    260     while( masterObjectModule.meta.GetUserProcs().Iterator_HasNext() )
    261     {
    262         const UserProc *pUserProc = masterObjectModule.meta.GetUserProcs().Iterator_GetNext();
    263 
     259    foreach (auto pUserProc, masterObjectModule.meta.GetUserProcs())
     260    {
    264261        if( pUserProc->GetNativeCode().GetSize() > 0 )
    265262        {
  • branches/egtra/ab5.0/abdev/BasicCompiler_Common/src/ProcedureGenerator.cpp

    r750 r803  
    1818    int back_cp=cp;
    1919
    20     classes.Iterator_Reset();
    21     while(classes.Iterator_HasNext()){
    22         CClass &objClass = *classes.Iterator_GetNext();
     20    foreach(auto pClass, classes)
     21    {
     22        CClass &objClass = *pClass;
    2323        if( objClass.IsExternal() )
    2424        {
     
    8383    ////////////////////////////////////////////////////////////////////
    8484
    85     // イテレータをリセット
    86     classes.Iterator_Reset();
    87 
    88     while( classes.Iterator_HasNext() ){
    89         const CClass &objClass = *classes.Iterator_GetNext();
     85    foreach (auto pClass, classes)
     86    {
     87        const CClass &objClass = *pClass;
    9088
    9189        if( !objClass.IsUsing() ){
     
    152150    ChangeOpcode( temporary );
    153151
    154     // イテレータをリセット
    155     classes.Iterator_Reset();
    156 
    157     while( classes.Iterator_HasNext() ){
    158         const CClass &objClass = *classes.Iterator_GetNext();
     152    foreach (auto pClass, classes)
     153    {
     154        const CClass &objClass = *pClass;
    159155
    160156        if( !objClass.IsUsing() ){
  • branches/egtra/ab5.0/abdev/BasicCompiler_Common/src/VtblGenerator.cpp

    r750 r803  
    9393void VtblGenerator::GenerateVTablesForAllClasses( Classes &classes )
    9494{
    95     classes.Iterator_Reset();
    96     while( classes.Iterator_HasNext() )
     95    foreach (auto pClass, classes)
    9796    {
    98         CClass *pClass = classes.Iterator_GetNext();
    9997        GenerateFullVTables( *pClass );
    10098
     
    177175void VtblGenerator::ActionVtblScheduleForAllClasses( Classes &classes, LONG_PTR ImageBase, LONG_PTR MemPos_CodeSection, LONG_PTR MemPos_DataSection )
    178176{
    179     classes.Iterator_Reset();
    180     while( classes.Iterator_HasNext() )
     177    foreach(auto pClass, classes)
    181178    {
    182         CClass *pClass = classes.Iterator_GetNext();
    183179        ActionVtblSchedule( *pClass, ImageBase, MemPos_CodeSection, MemPos_DataSection );
    184180
Note: See TracChangeset for help on using the changeset viewer.