Changeset 128 in dev for BasicCompiler32/NumOpe.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
  • BasicCompiler32/NumOpe.cpp

    r122 r128  
    227227    return false;
    228228}
    229 bool TermOpe( const char *term, const Type &baseType, Type &resultType, bool &isLiteral, BOOL *pbUseHeap, bool *pIsClassName, bool isProcedureCallOnly ){
     229bool TermOpe( const char *term, const Type &baseType, Type &resultType, bool &isLiteral, BOOL *pbUseHeap, bool isWantObject, bool *pIsClassName, bool isProcedureCallOnly ){
    230230    char parameter[VN_SIZE];
    231231
     
    255255        bool isClassName = false;
    256256        Type leftType;
    257         if( !TermOpe( termLeft, baseType, leftType, isLiteral, pbUseHeap, &isClassName ) ){
     257        if( GetTermType( termLeft, leftType, isLiteral, &isClassName ) ){
     258            if( isClassName == false && Smoothie::Meta::blittableTypes.IsExist( leftType ) ){
     259                // 左側のオブジェクト部分がBlittable型のとき
     260
     261                char temporary[VN_SIZE];
     262                lstrcpy( temporary, termLeft );
     263                sprintf( termLeft, "%s(%s)",
     264                    Smoothie::Meta::blittableTypes.Find( leftType ).GetCreateStaticMethodFullName().c_str(),
     265                    temporary );
     266            }
     267        }
     268
     269        if( !TermOpe( termLeft, baseType, leftType, isLiteral, pbUseHeap, true, &isClassName ) ){
    258270            goto globalArea;
    259271        }
Note: See TracChangeset for help on using the changeset viewer.