Ignore:
Timestamp:
Jul 13, 2008, 2:23:09 AM (16 years ago)
Author:
dai_9181
Message:

・WithInfo周りをリファクタリング。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ab5.0/abdev/BasicCompiler_Common/Compile.cpp

    r668 r684  
    1414
    1515//With情報
    16 WITHINFO WithInfo;
     16WithInfos withInfos;
    1717
    1818//デバッグ用行番号情報
     
    318318
    319319            case ESC_WITH:
    320                 extern WITHINFO WithInfo;
    321 
    322                 WithInfo.ppName=(char **)HeapReAlloc(hHeap,0,WithInfo.ppName,(WithInfo.num+1)*sizeof(char **));
    323                 WithInfo.ppName[WithInfo.num]=(char *)HeapAlloc(hHeap,0,lstrlen(Command+2)+1);
    324                 lstrcpy(WithInfo.ppName[WithInfo.num],Command+2);
    325 
    326                 WithInfo.pWithCp=(int *)HeapReAlloc(hHeap,0,WithInfo.pWithCp,(WithInfo.num+1)*sizeof(int));
    327                 WithInfo.pWithCp[WithInfo.num]=cp;
    328 
    329                 WithInfo.num++;
    330                 break;
     320                {
     321                    extern WithInfos withInfos;
     322                    withInfos.push_back( WithInfo( Command+2, cp ) );
     323                    break;
     324                }
    331325            case ESC_ENDWITH:
    332                 if(WithInfo.num<=0){
    333                     compiler.errorMessenger.Output(12,"End With",cp);
    334                     return;
    335                 }
    336                 WithInfo.num--;
    337                 HeapDefaultFree(WithInfo.ppName[WithInfo.num]);
    338                 break;
     326                {
     327                    extern WithInfos withInfos;
     328                    if( withInfos.size() <= 0 )
     329                    {
     330                        compiler.errorMessenger.Output(12,"End With",cp);
     331                        return;
     332                    }
     333
     334                    withInfos.pop_back();
     335                    break;
     336                }
    339337            case ESC_DECLARE:
    340338                if( compiler.IsLocalAreaCompiling() ){
Note: See TracChangeset for help on using the changeset viewer.