Ignore:
Timestamp:
Jul 12, 2007, 2:58:26 AM (17 years ago)
Author:
dai_9181
Message:

コード全体のリファクタリングを実施

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/abdev/BasicCompiler64/NumOpe.cpp

    r198 r206  
     1#include "stdafx.h"
     2
    13#include <jenga/include/smoothie/Smoothie.h>
    24#include <jenga/include/smoothie/LexicalAnalysis.h>
     
    164166    // 動的メソッドを検索
    165167    ///////////////////////////////////////////////////////////////////
    166     vector<UserProc *> userProcs;
     168    vector<const UserProc *> userProcs;
    167169
    168170    char methodName[VN_SIZE], lpPtrOffset[VN_SIZE], parameter[VN_SIZE], dummy[1];
    169     CClass::RefType refType;
     171    ReferenceKind refType;
    170172    lstrcpy( methodName, member );
    171173    GetVarFormatString(methodName,parameter,lpPtrOffset,dummy,refType);
    172174
    173175    objClass.GetMethods().Enum( methodName, userProcs );
    174     UserProc *pUserProc;
    175176    if(userProcs.size()){
    176177        //オーバーロードを解決
    177         pUserProc=OverloadSolutionWithStrParam(termFull,userProcs,parameter,termLeft);
     178        const UserProc *pUserProc = OverloadSolutionWithStrParam(termFull,userProcs,parameter,termLeft);
    178179
    179180        if( pUserProc ){
     
    245246    // パース
    246247    char member[VN_SIZE];
    247     CClass::RefType refType;
    248     if( CClass::SplitName( termFull, termLeft, member, refType ) ){
     248    ReferenceKind refType;
     249    if( SplitMemberName( termFull, termLeft, member, refType ) ){
    249250        ///////////////////////////////////////////////////////////////////
    250251        // オブジェクトとメンバに分解できるとき
     
    309310    if(lstrcmpi(termFull,"This")==0 && isProcedureCallOnly == false ){
    310311        //Thisオブジェクト
    311         resultType.SetType( DEF_OBJECT, Smoothie::Temp::pCompilingClass );
     312        resultType.SetType( DEF_OBJECT, compiler.pCompilingClass );
    312313
    313314        SetThisPtrToReg( UseReg );
     
    385386            return true;
    386387        }
    387         else if(GetConstCalcBuffer(procName,parameter,temporary)){
    388             /////////////////////////
    389             // マクロ関数
    390             /////////////////////////
    391 
    392             //閉じカッコ")"に続く文字がNULLでないときはエラーにする
    393             if(termFull[i2+1+i4+1]!='\0') SetError(42,NULL,cp);
    394 
    395             //マクロ関数の場合
    396             NumOpe(&UseReg,temporary,Type(),resultType);
    397 
    398             if(!IS_LITERAL(resultType.GetIndex())){
    399                 //リテラル値ではなかったとき
    400                 isLiteral = false;
    401             }
    402 
    403             return true;
     388
     389        ConstMacro *pConstMacro = compiler.GetMeta().GetGlobalConstMacros().Find( procName );
     390        if( pConstMacro )
     391        {
     392            if( pConstMacro->GetCalcBuffer( parameter, temporary ) )
     393            {
     394                /////////////////////////
     395                // マクロ関数
     396                /////////////////////////
     397
     398                //閉じカッコ")"に続く文字がNULLでないときはエラーにする
     399                if(termFull[i2+1+i4+1]!='\0') SetError(42,NULL,cp);
     400
     401                //マクロ関数の場合
     402                NumOpe(&UseReg, temporary,Type(),resultType);
     403
     404                if(!IS_LITERAL(resultType.GetIndex())){
     405                    //リテラル値ではなかったとき
     406                    isLiteral = false;
     407                }
     408
     409                return true;
     410            }
    404411        }
    405412    }
     
    905912                    //////////////
    906913
    907                     i3 = CDBConst::obj.GetBasicType(term);
     914                    i3 = compiler.GetMeta().GetGlobalConsts().GetBasicType(term);
    908915                    if(i3){
    909                         if( CDBConst::obj.IsStringPtr( term ) ){
     916                        if( compiler.GetMeta().GetGlobalConsts().IsStringPtr( term ) ){
    910917                            //リテラル文字列
    911918
    912                             double dbl = CDBConst::obj.GetDoubleData(term);
     919                            double dbl = compiler.GetMeta().GetGlobalConsts().GetDoubleData(term);
    913920                            memcpy(&i64data,&dbl,sizeof(double));
    914921
     
    924931                        if(IsRealNumberType(i3)){
    925932                            //実数
    926                             double dbl = CDBConst::obj.GetDoubleData(term);
     933                            double dbl = compiler.GetMeta().GetGlobalConsts().GetDoubleData(term);
    927934                            memcpy(&i64data,&dbl,sizeof(double));
    928935                            goto Literal;
     
    930937                        else if(IsWholeNumberType(i3)){
    931938                            //整数
    932                             i64data = CDBConst::obj.GetWholeData(term);
     939                            i64data = compiler.GetMeta().GetGlobalConsts().GetWholeData(term);
    933940                            goto Literal;
    934941                        }
Note: See TracChangeset for help on using the changeset viewer.