Changeset 128 in dev for BasicCompiler_Common/Class.cpp


Ignore:
Timestamp:
May 18, 2007, 4:42:36 AM (17 years ago)
Author:
dai_9181
Message:

Blittable型を導入した。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • BasicCompiler_Common/Class.cpp

    r127 r128  
    911911    char temporary[VN_SIZE];
    912912
     913    // Blittable型管理オブジェクトを初期化
     914    Smoothie::Meta::blittableTypes.clear();
     915
    913916    // 名前空間管理
    914917    NamespaceScopes &namespaceScopes = Smoothie::Lexical::liveingNamespaceScopes;
     
    971974
    972975                i+=2;
    973                 //アラインメント修飾子
     976                Type blittableType;
    974977                if(memicmp(basbuf+i,"Align(",6)==0){
     978                    //アラインメント修飾子
    975979                    i+=6;
    976980                    i=JumpStringInPare(basbuf,i)+1;
     981                }
     982                else if( memicmp( basbuf + i, "Blittable(", 10 ) == 0 ){
     983                    // Blittable修飾子
     984                    i+=10;
     985                    i+=GetStringInPare_RemovePare(temporary,basbuf+i)+1;
     986                    Type::StringToType( temporary, blittableType );
    977987                }
    978988
     
    10131023                    }
    10141024                }
     1025
     1026                // Blittable型の場合
     1027                if( !blittableType.IsNull() ){
     1028                    pClass->SetBlittableType( blittableType );
     1029
     1030                    // Blittable型として登録
     1031                    Smoothie::Meta::blittableTypes.push_back( BlittableType( blittableType, pClass ) );
     1032                }
    10151033        }
    10161034    }
     
    13441362            i+=2;
    13451363
    1346             //アラインメント修飾子
    13471364            int iAlign=0;
    13481365            if(memicmp(basbuf+i,"Align(",6)==0){
     1366                //アラインメント修飾子
    13491367                i+=6;
    13501368                i+=GetStringInPare_RemovePare(temporary,basbuf+i)+1;
     
    13531371                if(!(iAlign==1||iAlign==2||iAlign==4||iAlign==8||iAlign==16))
    13541372                    SetError(51,NULL,i);
     1373            }
     1374            else if( memicmp( basbuf + i, "Blittable(", 10 ) == 0 ){
     1375                // Blittable修飾子
     1376                i+=10;
     1377                i=JumpStringInPare(basbuf,i)+1;
    13551378            }
    13561379
     
    14161439                        goto InheritsError;
    14171440                    }
    1418                 }
    1419                 else if( memicmp( basbuf + i+1,"Blittable", 9 ) == 0 &&
    1420                     basbuf[i+10] == 1 && basbuf[i+11] == ESC_INHERITS ){
    1421                         // Blittable Inherits
    1422 
    1423                         for(i+=12,i2=0;;i++,i2++){
    1424                             if(IsCommandDelimitation(basbuf[i])){
    1425                                 temporary[i2]=0;
    1426                                 break;
    1427                             }
    1428                             temporary[i2]=basbuf[i];
    1429                         }
    1430 
    1431                         Type type;
    1432                         Type::StringToType( temporary, type );
    1433                         pobj_c->SetBlittableType( type );
    1434 
    14351441                }
    14361442
Note: See TracChangeset for help on using the changeset viewer.