Changeset 64 in dev for BasicCompiler_Common/NumOpe_GetType.cpp
- Timestamp:
- Mar 8, 2007, 2:49:34 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
BasicCompiler_Common/NumOpe_GetType.cpp
r55 r64 255 255 } 256 256 257 int 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 257 301 int NumOpe_GetType(char *Command,TYPEINFO *pBaseType,LONG_PTR *plpIndex){ 258 302 extern int cp; … … 265 309 } 266 310 267 if(Command[0]==1&& Command[1]==ESC_NEW){311 if(Command[0]==1&& Command[1]==ESC_NEW ){ 268 312 //New演算子(オブジェクト生成) 269 return DEF_PTR_OBJECT;313 return Operator_New_GetType(Command+2,plpIndex, *pBaseType ); 270 314 } 271 315 … … 333 377 if(pBaseType->type==DEF_OBJECT){ 334 378 if(IsStringSubsituation(pBaseType->u.pobj_Class) 335 || IsStringObjectType( pBaseType)){379 || IsStringObjectType(*pBaseType)){ 336 380 //要求タイプがオブジェクトであり、Stringの受け入れが可能な場合 337 381 extern CClass *pobj_StringClass; … … 346 390 } 347 391 348 type[sp]=DEF_PTR_ BYTE;392 type[sp]=DEF_PTR_CHAR; 349 393 bLiteralCalculation=0; 350 394 }
Note:
See TracChangeset
for help on using the changeset viewer.