Changeset 55 in dev for BasicCompiler_Common/Variable.cpp


Ignore:
Timestamp:
Feb 13, 2007, 3:14:57 AM (17 years ago)
Author:
dai_9181
Message:

・コマンドラインオプション "/unicode" に対応。
・Unicode文字セットを使用する場合に "UNICODE" が自動的に#defineされるようにしました。
・SByte型(8ビット符号付き整数型)を追加。
・Char型を文字型に変更。
・プロジェクトオプションから「Unicode文字セットを使用する」チェックを選択できるようにしました。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • BasicCompiler_Common/Variable.cpp

    r51 r55  
    2727BOOL IsSignedType(int type){
    2828    switch(type){
    29         case DEF_CHAR:
     29        case DEF_SBYTE:
    3030        case DEF_INTEGER:
    3131        case DEF_LONG:
     
    3333        case DEF_SINGLE:
    3434        case DEF_DOUBLE:
     35        case DEF_CHAR:
    3536            return 1;
    3637        default:
     
    4142BOOL IsNaturalWholeNumberType(int type){
    4243    switch(type){
    43         case DEF_CHAR:
     44        case DEF_SBYTE:
    4445        case DEF_BYTE:
    4546        case DEF_INTEGER:
     
    4950        case DEF_INT64:
    5051        case DEF_QWORD:
     52        case DEF_CHAR:
    5153            return 1;
    5254        default:
     
    8991    switch(type){
    9092        case DEF_BYTE:
    91             return DEF_CHAR;
     93            return DEF_SBYTE;
    9294        case DEF_WORD:
    9395            return DEF_INTEGER;
     
    108110int GetUnsignedType(int type){
    109111    switch(type){
    110         case DEF_CHAR:
     112        case DEF_SBYTE:
    111113            return DEF_BYTE;
    112114        case DEF_INTEGER:
     
    116118        case DEF_INT64:
    117119            return DEF_QWORD;
     120        case DEF_CHAR:
     121            if( isUnicode ) return DEF_WORD;
     122            return DEF_BYTE;
    118123    }
    119124    return type;
     
    136141    else if(type==DEF_INTEGER||type==DEF_WORD)
    137142        return sizeof(WORD);
    138     else if(type==DEF_CHAR||type==DEF_BYTE || type == DEF_BOOLEAN)
     143    else if(type==DEF_SBYTE||type==DEF_BYTE || type == DEF_BOOLEAN)
    139144        return sizeof(BYTE);
    140145
     
    142147    else if(type==DEF_DOUBLE)       return sizeof(double);
    143148    else if(type==DEF_SINGLE)       return sizeof(float);
     149
     150    //文字型
     151    else if( type == DEF_CHAR ){
     152        if( isUnicode ) return sizeof( WORD );
     153        return sizeof( BYTE );
     154    }
    144155
    145156    //ポインタ型
     
    178189
    179190    //整数型
    180     if(lstrcmpi(TypeName,"Char")==0)            return DEF_CHAR;
     191    if(lstrcmpi(TypeName,"SByte")==0)           return DEF_SBYTE;
    181192    else if(lstrcmpi(TypeName,"Byte")==0)       return DEF_BYTE;
    182193    else if(lstrcmpi(TypeName,"Integer")==0)    return DEF_INTEGER;
     
    191202    else if(lstrcmpi(TypeName,"Double")==0)     return DEF_DOUBLE;
    192203
     204    //文字型
     205    else if( lstrcmpi( TypeName, "Char" ) == 0 ) return DEF_CHAR;
     206
    193207    //bool型
    194208    else if( lstrcmpi( TypeName, "Boolean" ) == 0 ) return DEF_BOOLEAN;
     
    248262
    249263    //整数型
    250     if(type==DEF_CHAR)              lstrcpy(name,"Char");
     264    if(type==DEF_SBYTE)             lstrcpy(name,"SByte");
    251265    else if(type==DEF_BYTE)         lstrcpy(name,"Byte");
    252266    else if(type==DEF_INTEGER)      lstrcpy(name,"Integer");
     
    260274    else if(type==DEF_SINGLE)       lstrcpy(name,"Single");
    261275    else if(type==DEF_DOUBLE)       lstrcpy(name,"Double");
     276
     277    //文字型
     278    else if(type==DEF_CHAR)             lstrcpy(name,"Char");
    262279
    263280    //bool型
Note: See TracChangeset for help on using the changeset viewer.