⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 opcodes.h

📁 在手机操作系统symbina上使用的一个脚本扩展语言的代码实现,可以参考用于自己的开发
💻 H
📖 第 1 页 / 共 3 页
字号:
// OPCODES.H
//
// Copyright (c) 1997-2000 Symbian Ltd. All rights reserved.

#include <oplr.h>

typedef void (*OPCODEFUNC)(CStack&, COplRuntime&, CFrame*);

class TOplRealFormat : public TRealFormat
	{
public:
	TOplRealFormat(TInt aUserFlags); /*{iRealFormat.iType|=KAllowThreeDigitExp;}*/ // implemented in NOT_YET.CPP
	TOplRealFormat(TInt aUserFlags,TInt aWidth);
	TOplRealFormat(TInt aUserFlags,TInt aWidth,TInt aPlaces);
	inline void SetType(TInt aType) {iType=(iType&KRealFormatTypeFlagsMask)|aType;};	// added by AnnW
//	inline TRealFormat RealFormat() const {return iRealFormat;}
//private:
//	TRealFormat iRealFormat;
	};

class OpCode
	{
private:
	static const OPCODEFUNC OpCodeTable[];

public:
	friend void COplRuntime::SequencerL();
	friend TInt COplRuntime::ErrorHandler();
#ifndef NO_SEQUENCER
	static void SimpleDirectRightSideInt(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void SimpleDirectRightSideLong(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void SimpleDirectRightSideFloat(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void SimpleDirectRightSideString(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void SimpleDirectLeftSideInt(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void SimpleDirectLeftSideLong(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void SimpleDirectLeftSideFloat(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void SimpleDirectLeftSideString(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void SimpleInDirectRightSideInt(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void SimpleInDirectRightSideLong(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void SimpleInDirectRightSideFloat(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void SimpleInDirectRightSideString(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void SimpleInDirectLeftSideInt(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void SimpleInDirectLeftSideLong(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void SimpleInDirectLeftSideFloat(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void SimpleInDirectLeftSideString(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	//10h
	static void ArrayDirectRightSideInt(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void ArrayDirectRightSideLong(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void ArrayDirectRightSideFloat(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void ArrayDirectRightSideString(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void ArrayDirectLeftSideInt(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void ArrayDirectLeftSideLong(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void ArrayDirectLeftSideFloat(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void ArrayDirectLeftSideString(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void ArrayInDirectRightSideInt(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void ArrayInDirectRightSideLong(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void ArrayInDirectRightSideFloat(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void ArrayInDirectRightSideString(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void ArrayInDirectLeftSideInt(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void ArrayInDirectLeftSideLong(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void ArrayInDirectLeftSideFloat(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void ArrayInDirectLeftSideString(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
#endif
	// 20h
	static void FieldRightSideInt(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void FieldRightSideLong(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void FieldRightSideFloat(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void FieldRightSideString(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void FieldLeftSide(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void ConstantInt(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void ConstantLong(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void ConstantFloat(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void ConstantString(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void IllegalOpCode(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);			// don't delete!
	static void CompareLessThanInt(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void CompareLessThanLong(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void CompareLessThanFloat(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void CompareLessThanString(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void CompareLessOrEqualInt(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void CompareLessOrEqualLong(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void CompareLessOrEqualFloat(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void CompareLessOrEqualString(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void CompareGreaterThanInt(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void CompareGreaterThanLong(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void CompareGreaterThanFloat(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void CompareGreaterThanString(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void CompareGreaterOrEqualInt(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void CompareGreaterOrEqualLong(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void CompareGreaterOrEqualFloat(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void CompareGreaterOrEqualString(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void CompareEqualInt(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void CompareEqualLong(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void CompareEqualFloat(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void CompareEqualString(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void CompareNotEqualInt(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void CompareNotEqualLong(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void CompareNotEqualFloat(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void CompareNotEqualString(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void AddInt(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void AddLong(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void AddFloat(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void AddString(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void SubtractInt(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void SubtractLong(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void SubtractFloat(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void StackByteAsWord(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void MultiplyInt(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void MultiplyLong(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void MultiplyFloat(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void RunProcedure(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void DivideInt(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void DivideLong(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void DivideFloat(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void CallFunction(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void PowerOfInt(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void PowerOfLong(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void PowerOfFloat(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void BranchIfFalse(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void AndInt(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void AndLong(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void AndFloat(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void StackByteAsLong(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void OrInt(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void OrLong(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void OrFloat(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void StackWordAsLong(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void NotInt(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void NotLong(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void NotFloat(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void Statement16(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void UnaryMinusInt(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void UnaryMinusLong(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void UnaryMinusFloat(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void CallProcByStringExpr(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void PercentLessThan(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);		// <%
	static void PercentGreaterThan(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);		// >%
	static void PercentAdd(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);				// +%
	static void PercentSubtract(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);		// -%
	// 70h
	static void PercentMultiply(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);		// *%
	static void PercentDivide(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);			// /%
	static void ZeroReturnInt(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void ZeroReturnLong(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void ZeroReturnFloat(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void NullReturnString(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void LongToInt(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void FloatToInt(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void FloatToLong(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void IntToLong(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void IntToFloat(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void LongToFloat(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void LongToUInt(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void FloatToUInt(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	// 80h
	static void DropInt(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void DropLong(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void DropFloat(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void DropString(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void AssignInt(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void AssignLong(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void AssignFloat(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void AssignString(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);
	static void PrintInt(CStack& aStack, COplRuntime& aRuntime, CFrame* aFramePtr);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -