Changeset 75 in dev for BasicCompiler64/Opcode.h
- Timestamp:
- Mar 20, 2007, 4:36:16 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
BasicCompiler64/Opcode.h
r73 r75 251 251 252 252 //NumOpe.cpp 253 int NumOpe(int *pReg,const char *Command,int BaseType,LONG_PTR lpBaseIndex,LONG_PTR *plpIndex,BOOL *pbUseHeap=0); 253 bool NumOpe( int *pReg, 254 const char *Command, 255 const Type &baseType, 256 Type &resultType, 257 BOOL *pbUseHeap = NULL ); 254 258 255 259 //NumOpe_Arithmetic.cpp … … 286 290 //Compile_Set_Var.cpp 287 291 BOOL IsUse_r11(RELATIVE_VAR *pRelativeVar); 288 void SetStructVariableFromRax( LONG_PTR lpVarIndex,int CalcType,LONG_PTR lpCalcIndex,RELATIVE_VAR *pRelativeVar,BOOL bUseHeap);292 void SetStructVariableFromRax( const Type &varType, const Type &calcType, RELATIVE_VAR *pRelativeVar,BOOL bUseHeap); 289 293 void SetRealVariable(int VarType, int CalcType, RELATIVE_VAR *pRelativeVar); 290 294 void SetBooleanVariable(int type,RELATIVE_VAR *pRelative); … … 307 311 308 312 //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 ); 313 void Operator_New( const CClass &classObj, const char *objectSizeStr, const char *parameter,const Type &baseTypeInfo ); 311 314 void OpcodeDelete(const char *Parameter, bool isSweeping); 312 315 … … 314 317 void GetWithName(char *buffer); 315 318 void 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);319 bool GetVarOffset(bool isErrorEnabled,bool isWriteAccess,const char *NameBuffer,RELATIVE_VAR *pRelativeVar,Type &resultType,int *pss = NULL); 320 bool SetInitGlobalData(int offset,const Type &type,const int *SubScripts,char *InitBuf); 318 321 #define DIMFLAG_INITDEBUGVAR 0x01 319 322 #define DIMFLAG_NONCALL_CONSTRACTOR 0x02 320 323 #define DIMFLAG_STATIC 0x04 321 324 #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); 325 void dim(bool isRef, char *VarName,int *SubScripts,Type &type,char *InitBuf,char *ConstractParameter,DWORD dwFlags); 324 326 void SetVarPtrToReg(int reg,RELATIVE_VAR *pRelativeVar); 325 327 … … 333 335 class ParamImpl{ 334 336 char *Parms[255]; 335 TYPEINFO types[255];337 vector<Type> types; 336 338 int ParmsNum; 337 339 338 T YPEINFO ReturnTypeInfo;340 Type returnType; 339 341 340 342 //一時オブジェクト管理用 … … 345 347 public: 346 348 ParamImpl(const char *buffer); 347 ParamImpl(const P ARAMETER_INFO *pParamInfo, const int ParmNum);349 ParamImpl(const Parameters ¶ms); 348 350 ~ParamImpl(); 349 void SetReturnType( TYPEINFO *pTypeInfo);351 void SetReturnType( const Type &returnType ); 350 352 351 353 private: 352 BOOL _overload_check( Parameters ¶ms, TYPEINFO *pReturnTypeInfo,int overload_level);353 SubInfo *OverloadSolutionWithReturnType( const char *name, std::vector<SubInfo*> &subs );354 bool _overload_check( int level, const Parameters ¶ms, const Type &returnType ); 355 UserProc *OverloadSolutionWithReturnType( const char *name, std::vector<UserProc *> &subs ); 354 356 public: 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 ¶ms, int SecondParmNum = -1 ); 360 void MacroParameterSupport( const Parameters ¶ms ); 361 void SetStructParameter( int reg, const Type &baseType, const char *expression ); 362 void SetParameter( const string &procName, const Parameters ¶ms, int SecondParmNum = -1 ); 360 363 361 364 //一時オブジェクトパラメータの生成と破棄 362 int NewTempParameters( const char *FuncName,PARAMETER_INFO *ppi,int pi_num,int SecondParmNum);365 int NewTempParameters( const string &procName, const Parameters ¶ms, int SecondParmNum = -1 ); 363 366 void DeleteTempParameters(); 364 365 void SetParameter(const char *FuncName,PARAMETER_INFO *ppi,int pi_num,int SecondParmNum);366 367 367 368 void BackupParameter(int pi_num); … … 384 385 void AddLocalVarAddrSchedule(); 385 386 #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);387 bool Opcode_CallProcPtr(const char *variable, const char *lpszParms,ProcPointer *pProcPointer); 388 bool Opcode_CallProc(const char *Parameter,UserProc *pUserProc,DWORD dwFlags,const char *ObjectName,int RefType); 389 bool Opcode_CallDllProc( const char *lpszParms,DllProc *pDllProc); 389 390 390 391 //Compile_ProcOp.cpp … … 394 395 int GetFunctionType(int FuncNum); 395 396 int GetFunctionFromName(char *FuncName); 396 void Opcode_CallFunc( const char *Parameter, const int FuncNum, TYPEINFO &ReturnTypeInfo);397 bool Opcode_CallFunc( const char *Parameter, const int FuncNum, Type &ReturnTypeInfo, bool isCallOn = true ); 397 398 398 399 //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);400 void FreeTempObject(int reg,const CClass *pobj_c); 401 int CallOperatorProc(int idCalc, const Type &baseType, int *type_stack,LONG_PTR *index_stack,BOOL *bUseHeap,int &sp); 402 void CallCastOperatorProc(int reg,Type &calcType,BOOL bCalcUseHeap,const Type &toType); 403 void CallIndexerGetterProc(int reg,const CClass *pobj_Class,char *ObjectName,char *Parameter,Type &resultType); 403 404 404 405 //Compile_Statement.cpp … … 411 412 void OpcodeContinue(void); 412 413 void OpcodeExitSub(void); 413 void OpcodeSelect( char *Parameter);414 void OpcodeSelect( const char *Parameter ); 414 415 void OpcodeCase(char *Parameter); 415 416 void OpcodeGosub(char *Parameter); … … 512 513 void op_fld_ptr_esp(int type); 513 514 void op_zero_reg(int reg); 514 void op_call( SubInfo *psi);515 void op_call( D ECLAREINFO *pdi);515 void op_call( UserProc *pUserProc ); 516 void op_call( DllProc *pDllProc );
Note:
See TracChangeset
for help on using the changeset viewer.