Changeset 331 in dev for trunk/abdev/BasicCompiler_Common


Ignore:
Timestamp:
Sep 27, 2007, 1:47:46 AM (17 years ago)
Author:
dai_9181
Message:

AddressOfの左辺値を加味した処理を簡潔にした

Location:
trunk/abdev/BasicCompiler_Common
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/abdev/BasicCompiler_Common/BasicCompiler.h

    r266 r331  
    6161
    6262
    63 //関数ポインタのベース タイプ インデックス(左辺の関数ポインタのパラメータを参考に、オーバーロードを解決)
    64 LONG_PTR ProcPtr_BaseIndex;
    65 
    66 
    6763int cp;
    6864
  • trunk/abdev/BasicCompiler_Common/NumOpe_GetType.cpp

    r301 r331  
    301301}
    302302
    303 bool GetTermType( const char *term, Type &resultType, bool &isLiteral, bool *pIsClassName )
     303bool GetTermType( const char *term, const Type &baseType, Type &resultType, bool &isLiteral, bool *pIsClassName )
    304304{
    305305    char parameter[VN_SIZE];
     
    330330        bool isClassName = false;
    331331        Type leftType;
    332         if( GetTermType( termLeft, leftType, isLiteral, &isClassName ) ){
     332        if( GetTermType( termLeft, Type(), leftType, isLiteral, &isClassName ) ){
    333333            if( isClassName == false && compiler.GetObjectModule().meta.GetBlittableTypes().IsExist( leftType ) ){
    334334                // 左側のオブジェクト部分がBlittable型のとき
     
    340340                    temporary );
    341341
    342                 if( !GetTermType( termLeft, leftType, isLiteral, &isClassName ) ){
     342                if( !GetTermType( termLeft, Type(), leftType, isLiteral, &isClassName ) ){
    343343                    goto globalArea;
    344344                }
     
    446446            ////////////////
    447447
    448             if( !CallProc(idProc,pProc,procName,parameter, resultType, false ) ){
     448            if( !CallProc(idProc,pProc,procName,parameter, baseType, resultType, false ) ){
    449449                return false;
    450450            }
     
    716716
    717717                    bool isLiteral = true;
    718                     if( GetTermType( term, resultType, isLiteral ) ){
     718                    if( GetTermType( term, baseType, resultType, isLiteral ) ){
    719719                        type_stack[sp] = resultType.GetBasicType();
    720720                        index_stack[sp] = resultType.GetIndex();
  • trunk/abdev/BasicCompiler_Common/Object.cpp

    r276 r331  
    6060                temporary,
    6161                Parameter,
     62                Type(),         // baseTypeはなし
    6263                dummyType );
    6364
     
    7273            temporary,
    7374            Parameter,
     75            Type(),         // baseTypeはなし
    7476            dummyType );
    7577    }
  • trunk/abdev/BasicCompiler_Common/Subroutine.cpp

    r327 r331  
    115115}
    116116
    117 bool CallProc( int kind, const void *pProc, const char *fullCallName, const char *lpszParms, Type &resultType, bool isCallOn ){
    118 
     117bool CallProc( int kind, const void *pProc, const char *fullCallName, const char *lpszParms, const Type &baseType, Type &resultType, bool isCallOn )
     118{
    119119    //GetSubHash内でエラー提示が行われた場合
    120120    if(pProc==(Procedure *)-1){
     
    178178        int FuncId = (int)(_int64)pProc;
    179179
    180         if( !Opcode_CallFunc( lpszParms, FuncId, resultType, isCallOn ) ){
     180        if( !Opcode_CallFunc( lpszParms, FuncId, baseType, resultType, isCallOn ) ){
    181181            return false;
    182182        }
     
    212212        }
    213213
    214         return CallProc( PROC_DEFAULT, pInfo, tempName, lpszParms, resultType, isCallOn );
     214        return CallProc( PROC_DEFAULT, pInfo, tempName, lpszParms, baseType, resultType, isCallOn );
    215215    }
    216216    else{
  • trunk/abdev/BasicCompiler_Common/common.h

    r322 r331  
    347347int AutoBigCast(int BaseType,int CalcType);
    348348BOOL CheckCalcType(int idCalc,int *type,int sp);
    349 bool GetTermType( const char *term, Type &resultType, bool &isLiteral, bool *pIsClassName = NULL );
     349bool GetTermType( const char *term, const Type &baseType, Type &resultType, bool &isLiteral, bool *pIsClassName = NULL );
    350350bool NumOpe_GetType( const char *expression, const Type &baseType, Type &resultType, bool *pIsLiteralCalculation = NULL );
    351351
     
    354354int GetProc(char *name,void **ppInfo);
    355355void SplitObjectName(const char *name,char *ObjectName, ReferenceKind &referenceFind );
    356 bool CallProc( int kind, const void *pProc, const char *fullCallName, const char *lpszParms, Type &resultType, bool isCallOn = true );
     356bool CallProc( int kind, const void *pProc, const char *fullCallName, const char *lpszParms, const Type &baseType, Type &resultType, bool isCallOn = true );
    357357bool CallPropertyMethod( const char *variable, const char *rightSide, Type &resultType);
    358358bool GetReturnTypeOfPropertyMethod( const char *variable, const char *rightSide, Type &resultType );
Note: See TracChangeset for help on using the changeset viewer.