Changeset 75 in dev for BasicCompiler64/Opcode.h


Ignore:
Timestamp:
Mar 20, 2007, 4:36:16 AM (17 years ago)
Author:
dai_9181
Message:

TYPEINFO→Typeへのリファクタリングを実施。64bitはほぼ完了。32bitが全般的に未完成。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • BasicCompiler64/Opcode.h

    r73 r75  
    251251
    252252//NumOpe.cpp
    253 int NumOpe(int *pReg,const char *Command,int BaseType,LONG_PTR lpBaseIndex,LONG_PTR *plpIndex,BOOL *pbUseHeap=0);
     253bool NumOpe( int *pReg,
     254           const char *Command,
     255           const Type &baseType,
     256           Type &resultType,
     257           BOOL *pbUseHeap = NULL );
    254258
    255259//NumOpe_Arithmetic.cpp
     
    286290//Compile_Set_Var.cpp
    287291BOOL IsUse_r11(RELATIVE_VAR *pRelativeVar);
    288 void SetStructVariableFromRax(LONG_PTR lpVarIndex,int CalcType,LONG_PTR lpCalcIndex,RELATIVE_VAR *pRelativeVar,BOOL bUseHeap);
     292void SetStructVariableFromRax( const Type &varType, const Type &calcType, RELATIVE_VAR *pRelativeVar,BOOL bUseHeap);
    289293void SetRealVariable(int VarType, int CalcType, RELATIVE_VAR *pRelativeVar);
    290294void SetBooleanVariable(int type,RELATIVE_VAR *pRelative);
     
    307311
    308312//Compile_Object.cpp
    309 void Operator_New( CClass &classObj, const char *objectSizeStr, const char *parameter,const TYPEINFO &baseTypeInfo );
    310 int Operator_New(const char *Parameter,LONG_PTR *plpIndex,const TYPEINFO &baseTypeInfo );
     313void Operator_New( const CClass &classObj, const char *objectSizeStr, const char *parameter,const Type &baseTypeInfo );
    311314void OpcodeDelete(const char *Parameter, bool isSweeping);
    312315
     
    314317void GetWithName(char *buffer);
    315318void SetThisPtrToReg(int reg);
    316 BOOL GetVarOffset(bool isErrorEnabled,bool isWriteAccess,const char *NameBuffer,int *pType,RELATIVE_VAR *pRelativeVar,LONG_PTR *plpIndex,int *pss=0);
    317 BOOL SetInitGlobalData(int offset,int type,LONG_PTR lpIndex,int *SubScripts,char *InitBuf);
     319bool GetVarOffset(bool isErrorEnabled,bool isWriteAccess,const char *NameBuffer,RELATIVE_VAR *pRelativeVar,Type &resultType,int *pss = NULL);
     320bool SetInitGlobalData(int offset,const Type &type,const int *SubScripts,char *InitBuf);
    318321#define DIMFLAG_INITDEBUGVAR            0x01
    319322#define DIMFLAG_NONCALL_CONSTRACTOR     0x02
    320323#define DIMFLAG_STATIC                  0x04
    321324#define DIMFLAG_CONST                   0x08
    322 void dim(bool isRef, char *VarName,int *SubScripts,TYPEINFO &TypeInfo,int TypeSize,char *InitBuf,char *ConstractParameter,DWORD dwFlags);
    323 void OpcodeDim(char *Parameter,DWORD dwFlag);
     325void dim(bool isRef, char *VarName,int *SubScripts,Type &type,char *InitBuf,char *ConstractParameter,DWORD dwFlags);
    324326void SetVarPtrToReg(int reg,RELATIVE_VAR *pRelativeVar);
    325327
     
    333335class ParamImpl{
    334336    char *Parms[255];
    335     TYPEINFO types[255];
     337    vector<Type> types;
    336338    int ParmsNum;
    337339
    338     TYPEINFO ReturnTypeInfo;
     340    Type returnType;
    339341
    340342    //一時オブジェクト管理用
     
    345347public:
    346348    ParamImpl(const char *buffer);
    347     ParamImpl(const PARAMETER_INFO *pParamInfo, const int ParmNum);
     349    ParamImpl(const Parameters &params);
    348350    ~ParamImpl();
    349     void SetReturnType(TYPEINFO *pTypeInfo);
     351    void SetReturnType( const Type &returnType );
    350352
    351353private:
    352     BOOL _overload_check( Parameters &params, TYPEINFO *pReturnTypeInfo,int overload_level);
    353     SubInfo *OverloadSolutionWithReturnType( const char *name, std::vector<SubInfo *> &subs );
     354    bool _overload_check( int level, const Parameters &params, const Type &returnType );
     355    UserProc *OverloadSolutionWithReturnType( const char *name, std::vector<UserProc *> &subs );
    354356public:
    355     SubInfo *OverloadSolution( const char *name, std::vector<SubInfo *> &subs );
    356 
    357     BOOL ErrorCheck(const char *FuncName,PARAMETER_INFO *ppi,int pi_num,int SecondParmNum);
    358     void MacroParameterSupport(PARAMETER_INFO *ppi);
    359     void SetStructParameter(int reg,CClass *pobj_Class,LPSTR Parameter);
     357    UserProc *OverloadSolution( const char *name, std::vector<UserProc *> &subs );
     358
     359    bool ErrorCheck( const string &procName, const Parameters &params, int SecondParmNum = -1 );
     360    void MacroParameterSupport( const Parameters &params );
     361    void SetStructParameter( int reg, const Type &baseType, const char *expression );
     362    void SetParameter( const string &procName, const Parameters &params, int SecondParmNum = -1 );
    360363
    361364    //一時オブジェクトパラメータの生成と破棄
    362     int NewTempParameters( const char *FuncName,PARAMETER_INFO *ppi,int pi_num,int SecondParmNum );
     365    int NewTempParameters( const string &procName, const Parameters &params, int SecondParmNum = -1 );
    363366    void DeleteTempParameters();
    364 
    365     void SetParameter(const char *FuncName,PARAMETER_INFO *ppi,int pi_num,int SecondParmNum);
    366367
    367368    void BackupParameter(int pi_num);
     
    384385void AddLocalVarAddrSchedule();
    385386#define PROCFLAG_NEW    1
    386 int Opcode_CallProcPtr(char *variable,char *Parameter,PROCPTRINFO *pi,LONG_PTR *plpIndex);
    387 void Opcode_CallProc(const char *Parameter,SubInfo *psi,DWORD dwFlags,char *ObjectName,int RefType);
    388 int Opcode_CallDllProc(char *Parameter,DECLAREINFO *pdi,LONG_PTR *plpIndex);
     387bool Opcode_CallProcPtr(const char *variable, const char *lpszParms,ProcPointer *pProcPointer);
     388bool Opcode_CallProc(const char *Parameter,UserProc *pUserProc,DWORD dwFlags,const char *ObjectName,int RefType);
     389bool Opcode_CallDllProc( const char *lpszParms,DllProc *pDllProc);
    389390
    390391//Compile_ProcOp.cpp
     
    394395int GetFunctionType(int FuncNum);
    395396int GetFunctionFromName(char *FuncName);
    396 void Opcode_CallFunc( const char *Parameter, const int FuncNum, TYPEINFO &ReturnTypeInfo );
     397bool Opcode_CallFunc( const char *Parameter, const int FuncNum, Type &ReturnTypeInfo, bool isCallOn = true );
    397398
    398399//OperatorProc.cpp
    399 void FreeTempObject(int reg,CClass *pobj_c);
    400 int CallOperatorProc(int idCalc,TYPEINFO *pBaseTypeInfo,int *type,LONG_PTR *index_stack,BOOL *bUseHeap,int &sp);
    401 void CallCastOperatorProc(int reg,int &CalcType,LONG_PTR &lpCalcIndex,BOOL bCalcUseHeap,int ToType,LONG_PTR lpToIndex);
    402 void CallIndexerGetterProc(int reg,CClass *pobj_Class,char *ObjectName,char *Parameter,TYPEINFO &RetTypeInfo);
     400void FreeTempObject(int reg,const CClass *pobj_c);
     401int CallOperatorProc(int idCalc, const Type &baseType, int *type_stack,LONG_PTR *index_stack,BOOL *bUseHeap,int &sp);
     402void CallCastOperatorProc(int reg,Type &calcType,BOOL bCalcUseHeap,const Type &toType);
     403void CallIndexerGetterProc(int reg,const CClass *pobj_Class,char *ObjectName,char *Parameter,Type &resultType);
    403404
    404405//Compile_Statement.cpp
     
    411412void OpcodeContinue(void);
    412413void OpcodeExitSub(void);
    413 void OpcodeSelect(char *Parameter);
     414void OpcodeSelect( const char *Parameter );
    414415void OpcodeCase(char *Parameter);
    415416void OpcodeGosub(char *Parameter);
     
    512513void op_fld_ptr_esp(int type);
    513514void op_zero_reg(int reg);
    514 void op_call( SubInfo *psi );
    515 void op_call( DECLAREINFO *pdi );
     515void op_call( UserProc *pUserProc );
     516void op_call( DllProc *pDllProc );
Note: See TracChangeset for help on using the changeset viewer.