Ignore:
Timestamp:
Aug 25, 2008, 5:26:44 PM (16 years ago)
Author:
イグトランス (egtra)
Message:

改行コード変換などを高速化

Location:
trunk/ab5.0/abdev/BasicCompiler_Common
Files:
3 edited

Legend:

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

    r465 r735  
    77void ChangeReturnCode(char *buffer)
    88{
    9     int i;
    10 
    119    bool isMustChange = false;
    12     for( i=0; ; i++ ){
     10    for( int i=0; ; i++ ){
    1311        if( buffer[i] == '\0' ){
    1412            break;
     
    5351#endif
    5452
    55     //改行コードのCRLFをLFに変換
    56     for(int i=0,i2=0;;i++,i2++){
    57         if(buffer[i]=='\r'&&buffer[i+1]=='\n') i++;
    58         buffer[i2]=buffer[i];
    59         if(buffer[i]=='\0') break;
    60     }
     53    ChangeReturnCodeImpl(buffer);
    6154}
    6255void DeleteComment(char *buffer){   //注釈「'」の取り除き
    6356    int i,i2,i3,IsStr;
    64     char *temporary;
    65     temporary=(char *)GlobalAlloc(GMEM_FIXED,lstrlen(buffer)+1);
     57    char *temporary=(char *)HeapAlloc(hHeap,HEAP_ZERO_MEMORY,lstrlen(buffer)+1);
    6658    for(i=0,i2=0,i3=0,IsStr=0;;i++,i2++){
    6759        if(buffer[i]=='\"') IsStr^=1;
    6860        if(buffer[i]=='\n'||buffer[i]=='\0'){
    69             i2--;
    70             while(temporary[i2]==' '||temporary[i2]=='\t') i2--;
    71             i2++;
     61            if(i2 > 0){
     62                i2--;
     63                while(temporary[i2]==' '||temporary[i2]=='\t') i2--;
     64                i2++;
     65            }
    7266
    7367            if(i3){
     
    10599    }
    106100    lstrcpy(buffer,temporary);
    107     GlobalFree(temporary);
     101    HeapDefaultFree(temporary);
    108102}
    109103void CheckParenthesis(char *buffer){
     
    237231    return 1;
    238232}
     233
     234inline int FindLineEnd(char const *basbuf, int i2){
     235    for(;;i2++){
     236        if(basbuf[i2]=='\n'||basbuf[i2]=='\0') break;
     237    }
     238    return i2;
     239}
     240
    239241void DirectiveCheck(void){
    240242    extern char *basbuf;
     
    273275                compiler.staticLibraryFilePaths.push_back( temporary );
    274276
    275                 for(;;i2++){
    276                     if(basbuf[i2]=='\n'||basbuf[i2]=='\0') break;
    277                 }
     277                i2 = FindLineEnd(basbuf, i2);
    278278                SlideString(basbuf+i2,i-i2);
    279279            }
     
    284284                compiler.SetCoreMark( true );
    285285
    286                 for(;;i2++){
    287                     if(basbuf[i2]=='\n'||basbuf[i2]=='\0') break;
    288                 }
     286                i2 = FindLineEnd(basbuf, i2);
    289287                SlideString(basbuf+i2,i-i2);
    290288            }
     
    292290                //#noprompt
    293291                //旧機能なので、無視
    294                 for(;;i2++){
    295                     if(basbuf[i2]=='\n'||basbuf[i2]=='\0') break;
    296                 }
     292                i2 = FindLineEnd(basbuf, i2);
    297293                SlideString(basbuf+i2,i-i2);
    298294            }
     
    300296                //#strict
    301297                //旧機能なので、無視
    302                 for(;;i2++){
    303                     if(basbuf[i2]=='\n'||basbuf[i2]=='\0') break;
    304                 }
     298                i2 = FindLineEnd(basbuf, i2);
    305299                SlideString(basbuf+i2,i-i2);
    306300            }
     
    308302                //#struct code
    309303                //旧機能なので、無視
    310                 for(;;i2++){
    311                     if(basbuf[i2]=='\n'||basbuf[i2]=='\0') break;
    312                 }
     304                i2 = FindLineEnd(basbuf, i2);
    313305                SlideString(basbuf+i2,i-i2);
    314306            }
     
    332324                lstrcpy(ResourceFileName,temporary);
    333325
    334                 for(;;i2++){
    335                     if(basbuf[i2]=='\n'||basbuf[i2]=='\0') break;
    336                 }
     326                i2 = FindLineEnd(basbuf, i2);
    337327                SlideString(basbuf+i2,i-i2);
    338328            }
  • trunk/ab5.0/abdev/BasicCompiler_Common/src/Compiler.cpp

    r720 r735  
    346346        tempType.PtrLevelDown();
    347347
    348         return (std::string)"*" + TypeToString( tempType );
     348        return '*' + TypeToString( tempType );
    349349    }
    350350    else if( type.IsObject() || type.IsStruct() )
     
    370370                    if( actualGenericTypesName.size() )
    371371                    {
    372                         actualGenericTypesName += ",";
     372                        actualGenericTypesName += ',';
    373373                    }
    374374                    actualGenericTypesName += typeParameter.ToString();
    375375                }
    376376
    377                 result += "<" + actualGenericTypesName + ">";
     377                result += '<' + actualGenericTypesName + '>';
    378378            }
    379379
  • trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_Delegate.cpp

    r708 r735  
    142142        if( dg.GetNamespaceScopes().size() )
    143143        {
    144             std::string namespaceScopesCommandStr = "";
    145             std::string endNamespaceScopesCommandStr = "";
     144            std::string namespaceScopesCommandStr;
     145            std::string endNamespaceScopesCommandStr;
    146146            BOOST_FOREACH( const std::string &namespaceStr, dg.GetNamespaceScopes() )
    147147            {
    148148                if( namespaceScopesCommandStr.size() )
    149149                {
    150                     namespaceScopesCommandStr += ":";
    151                     endNamespaceScopesCommandStr += ":";
     150                    namespaceScopesCommandStr += ':';
     151                    endNamespaceScopesCommandStr += ':';
    152152                }
    153153                namespaceScopesCommandStr += "Namespace " + namespaceStr;
Note: See TracChangeset for help on using the changeset viewer.