Changeset 68 in dev for BasicCompiler_Common


Ignore:
Timestamp:
Mar 12, 2007, 4:04:55 AM (17 years ago)
Author:
dai_9181
Message:

#84の対応(64bitでの動作確認はまだ)。
Stringクラスのコンストラクタにリテラル文字列が渡せないバグを修正。
STRING_IS_NOT_ALWAYS_UNICODEを暗黙的に定義するようにした(暫定対応)。

Location:
BasicCompiler_Common
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • BasicCompiler_Common/Class.cpp

    r67 r68  
    372372    //※オーバーライドされた関数を先にサーチする必要があるため、バックサーチを行う
    373373    for( int i=(int)methods.size()-1; i>=0; i-- ){
    374         char *temp;
    375         temp=methods[i]->psi->name;
     374        SUBINFO *psi = methods[i]->psi;
     375        char *temp = psi->name;
    376376        if(temp[0]==1&&temp[1]==ESC_OPERATOR){
    377377            if((BYTE)temp[2]==idOperatorCalc){
    378                 subs.push_back( methods[i]->psi );
     378                subs.push_back( psi );
    379379            }
    380380        }
  • BasicCompiler_Common/NumOpe_GetType.cpp

    r67 r68  
    376376                    if(pBaseType){
    377377                        if(pBaseType->type==DEF_OBJECT){
    378                             if(IsStringSubsituation(pBaseType->u.pobj_Class)
    379                                 || IsStringObjectType(*pBaseType)){
     378                            if(IsStringObjectType(*pBaseType)){
    380379                                //要求タイプがオブジェクトであり、Stringの受け入れが可能な場合
    381380                                extern CClass *pobj_StringClass;
     
    513512                        //////////
    514513
    515                         type[sp]=i2;
     514                        if(i2&FLAG_PTR){
     515                            //配列ポインタ
     516                            type[sp]=GetPtrType(i2^FLAG_PTR,index_stack[sp]);
     517                        }
     518                        else{
     519                            type[sp]=i2;
     520                        }
     521
    516522                        bLiteralCalculation=0;
    517523                        sp++;
  • BasicCompiler_Common/Variable.cpp

    r67 r68  
    211211
    212212    //文字型
    213     else if( lstrcmpi( TypeName, "Char" ) == 0 ) return DEF_CHAR;
     213    //else if( lstrcmpi( TypeName, "Char" ) == 0 ) return DEF_CHAR;
    214214
    215215    //bool型
     
    290290
    291291    //文字型
    292     else if(type==DEF_CHAR)             lstrcpy(name,"Char");
     292    //else if(type==DEF_CHAR)               lstrcpy(name,"Char");
    293293
    294294    //bool型
  • BasicCompiler_Common/preprocessor.cpp

    r67 r68  
    8484    }
    8585
     86    // TODO: 削除
     87    add( "__STRING_IS_NOT_ALWAYS_UNICODE" );
     88
    8689    char temporary[255];
    8790    sprintf(temporary,"_AB_VER%d",MAJOR_VER);
     
    166169}
    167170
    168 void preprocessor_ifdef(char *buffer,BOOL bndef){
     171void preprocessor_ifdef(char *buffer,bool isNot){
    169172    int i,i2,i3;
    170173    char temporary[VN_SIZE];
    171174
    172     if(bndef) i=lstrlen("#ifndef");
     175    if(isNot) i=lstrlen("#ifndef");
    173176    else i=lstrlen("#ifdef");
    174177    while(buffer[i]==' '||buffer[i]=='\t') i++;
     
    185188    if(pobj_define->check(temporary)) sw=1;
    186189
    187     if(bndef){
     190    if(isNot){
    188191        //#ifndefのとき(反対にする)
    189192        if(sw) sw=0;
     
    357360            }
    358361            else if(_memicmp(buffer+i,"#ifdef",6)==0){
    359                 preprocessor_ifdef(buffer+i,0);
     362                preprocessor_ifdef(buffer+i,false);
    360363                continue;
    361364            }
    362365            else if(_memicmp(buffer+i,"#ifndef",7)==0){
    363                 preprocessor_ifdef(buffer+i,1);
     366                preprocessor_ifdef(buffer+i,true);
    364367                continue;
    365368            }
Note: See TracChangeset for help on using the changeset viewer.