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

📄 assign.cpp

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

#include <e32std.h>
#include <opcodes.h>
#include <opldb.h>
#include "oplutil.h"

void OpCode::AssignInt(CStack& aStack, COplRuntime& aRuntime, CFrame* /*aFramePtr*/)
	{
	TInt16 integer=aStack.PopInt16();
	if (aStack.PopInt16()==KLeftSideField)
		{
		aRuntime.DbManager()->Assign(integer);
		return;
		}
	OplUtil::PutWord(&(aStack.PopRefInt16()),integer);
	}
	
void OpCode::AssignLong(CStack& aStack, COplRuntime& aRuntime, CFrame* /*aFramePtr*/)
	{
	TInt32 longInt=aStack.PopInt32();
	if (aStack.PopInt16()==KLeftSideField)
		{
		aRuntime.DbManager()->Assign(longInt);
		return;
		}		
	OplUtil::PutLong(&(aStack.PopRefInt32()),longInt);
	}

	
void OpCode::AssignFloat(CStack& aStack, COplRuntime& aRuntime, CFrame* /*aFramePtr*/)
	{
	TReal64 real=aStack.PopReal64();
	if (aStack.PopInt16()==KLeftSideField)
		{
		aRuntime.DbManager()->Assign(real);
		return;
		}		
	OplUtil::PutFloat(&aStack.PopRefReal64(),real);
	}
	
void OpCode::AssignString(CStack& aStack, COplRuntime& aRuntime, CFrame* /*aFramePtr*/)
	{
	TPtrC src(aStack.PopString());
	if (aStack.PopInt16()==KLeftSideField)
		{
		aRuntime.DbManager()->Assign(src);
		return;
		}
	TUint8* trg=(TUint8*)aStack.PopRefString();
	TUint16 len=(TUint16)src.Length();
	__ASSERT_ISALIGNED(trg);
	__ASSERT_DEBUG(len<=KOplMaxStrLen,AlignPanic(KErrOplAlignBadLength));
	if (len>aStack.PopInt16())
		User::Leave(KOplErrStrTooLong);
	*trg++=(TUint8)len;
	trg++; //skip lbc2
	Mem::Copy((TUint8*)trg,(TUint8*)src.Ptr(),len<<1);
	}

⌨️ 快捷键说明

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