Ignore:
Timestamp:
Mar 8, 2007, 2:49:34 AM (17 years ago)
Author:
dai_9181
Message:

すべてのオブジェクトを参照型に切り替えた。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • BasicCompiler_Common/NumOpe_GetType.cpp

    r55 r64  
    255255}
    256256
     257int Operator_New_GetType(const char *Parameter,LONG_PTR *plpIndex,const TYPEINFO &baseTypeInfo ){
     258    char TypeName[VN_SIZE],CreateParameter[VN_SIZE],objectSizeStr[VN_SIZE];
     259    int i,i2;
     260
     261    i=0;
     262
     263    if(Parameter[0]=='['){
     264        i=GetStringInBracket(objectSizeStr,Parameter);
     265
     266        SlideString(objectSizeStr+1,-1);
     267        objectSizeStr[i-2]=0;
     268    }
     269    else objectSizeStr[0]=0;
     270
     271    for(i2=0;;i++,i2++){
     272        if(Parameter[i]=='('){
     273            TypeName[i2]=0;
     274
     275            //コンストラクタに渡すパラメータを取得
     276            i2=GetStringInPare(CreateParameter,Parameter+i);
     277            RemoveStringPare(CreateParameter);
     278            i+=i2;
     279            if(Parameter[i]!='\0'){
     280                SetError(42,NULL,cp);
     281                return 0;
     282            }
     283            break;
     284        }
     285        TypeName[i2]=Parameter[i];
     286        if(Parameter[i]=='\0'){
     287            CreateParameter[0]=0;
     288            break;
     289        }
     290    }
     291
     292    int type;
     293    type=GetTypeFixed(TypeName,plpIndex);
     294
     295    if( baseTypeInfo.type == DEF_OBJECT ){
     296        return DEF_OBJECT;
     297    }
     298    return DEF_PTR_OBJECT;
     299}
     300
    257301int NumOpe_GetType(char *Command,TYPEINFO *pBaseType,LONG_PTR *plpIndex){
    258302    extern int cp;
     
    265309    }
    266310
    267     if(Command[0]==1&&Command[1]==ESC_NEW){
     311    if(Command[0]==1&& Command[1]==ESC_NEW ){
    268312        //New演算子(オブジェクト生成)
    269         return DEF_PTR_OBJECT;
     313        return Operator_New_GetType(Command+2,plpIndex, *pBaseType );
    270314    }
    271315
     
    333377                        if(pBaseType->type==DEF_OBJECT){
    334378                            if(IsStringSubsituation(pBaseType->u.pobj_Class)
    335                                 || IsStringObjectType(pBaseType)){
     379                                || IsStringObjectType(*pBaseType)){
    336380                                //要求タイプがオブジェクトであり、Stringの受け入れが可能な場合
    337381                                extern CClass *pobj_StringClass;
     
    346390                    }
    347391
    348                     type[sp]=DEF_PTR_BYTE;
     392                    type[sp]=DEF_PTR_CHAR;
    349393                    bLiteralCalculation=0;
    350394                }
Note: See TracChangeset for help on using the changeset viewer.