Changeset 128 in dev for BasicCompiler64/NumOpe.cpp
- Timestamp:
- May 18, 2007, 4:42:36 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
BasicCompiler64/NumOpe.cpp
r122 r128 224 224 return false; 225 225 } 226 bool TermOpe( const char *term, const Type &baseType, Type &resultType, bool &isLiteral, BOOL *pbUseHeap, bool *pIsClassName, bool isProcedureCallOnly ){226 bool TermOpe( const char *term, const Type &baseType, Type &resultType, bool &isLiteral, BOOL *pbUseHeap, bool isWantObject, bool *pIsClassName, bool isProcedureCallOnly ){ 227 227 char parameter[VN_SIZE]; 228 228 … … 252 252 bool isClassName = false; 253 253 Type leftType; 254 if( !TermOpe( termLeft, baseType, leftType, isLiteral, pbUseHeap, &isClassName ) ){ 254 if( GetTermType( termLeft, leftType, isLiteral, &isClassName ) ){ 255 if( isClassName == false && Smoothie::Meta::blittableTypes.IsExist( leftType ) ){ 256 // 左側のオブジェクト部分がBlittable型のとき 257 258 char temporary[VN_SIZE]; 259 lstrcpy( temporary, termLeft ); 260 sprintf( termLeft, "%s(%s)", 261 Smoothie::Meta::blittableTypes.Find( leftType ).GetCreateStaticMethodFullName().c_str(), 262 temporary ); 263 } 264 } 265 266 if( !TermOpe( termLeft, baseType, leftType, isLiteral, pbUseHeap, true, &isClassName ) ){ 255 267 goto globalArea; 256 268 } … … 705 717 //型名 706 718 if( Type::StringToType( term, resultType ) ){ 719 720 if( resultType.IsObject() ){ 721 if( resultType.GetClass().IsBlittableType() ){ 722 // Blittable型のときは基本型として扱う 723 // ※ただし、コンパイル中のメソッドがBlittable型クラスに属していないこと 724 if( UserProc::IsLocalAreaCompiling() 725 && UserProc::CompilingUserProc().HasParentClass() 726 && UserProc::CompilingUserProc().GetParentClass().IsBlittableType() ) 727 { 728 // コンパイル中のメソッドがBlittable型クラスに属している 729 } 730 else{ 731 resultType = resultType.GetClass().GetBlittableType(); 732 } 733 } 734 } 735 707 736 resultType.SetBasicType( resultType.GetBasicType() | FLAG_CAST ); 708 737 }
Note:
See TracChangeset
for help on using the changeset viewer.