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

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

Location:
trunk/ab5.0/abdev/BasicCompiler_Common
Files:
2 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() ){
  • trunk/ab5.0/abdev/BasicCompiler_Common/VariableOpe.cpp

    r649 r684  
    180180
    181181void GetWithName(char *buffer){
    182     extern WITHINFO WithInfo;
    183     int i;
    184 
     182    extern WithInfos withInfos;
    185183    buffer[0]=0;
    186     for(i=0;i<WithInfo.num;i++)
    187         lstrcat(buffer,WithInfo.ppName[i]);
     184    BOOST_FOREACH( const WithInfo &withInfo, withInfos )
     185    {
     186        lstrcat( buffer, withInfo.name.c_str() );
     187    }
    188188}
    189189
Note: See TracChangeset for help on using the changeset viewer.