|
#include<hgl/hgl.h>
#include<hgl/angelvm.h>
#include<hgl/FileStream.H>
#include<math.h>
#include<stdio.h>
using namespace hgl;
//--------------------------------------------------------------------------------------------------
void CreateAndSave()
{
char script[]= "void main()\n"
"{\n"
" test_value=sin(2);\n"
"}";
AngelVM vm; //定义虚拟机
float value;
FileStream fs; //定义文件流
vm.SetGlobalValue("float test_value",&value); //设定变量映射
vm.SetGlobalFunc("double sin(double)",sin); //设定函数映射,注意sin是标准C函数
vm.AddScript(script); //添加脚本并编译
fs.Open(L"1.bytecode",fomCreate); //创建文件
vm.SaveToStream(&fs); //将当前虚拟机程式按字节码保存到流
fs.Close();
}
//--------------------------------------------------------------------------------------------------
void LoadAndRun()
{
AngelVM vm;
float value;
FileStream fs;
vm.SetGlobalValue("float test_value",&value); //设定变量映射
vm.SetGlobalFunc("double sin(double)",sin); //设定函数映射,注意sin是标准C函数
fs.Open(L"1.bytecode",fomOpenRead); //打开文件
vm.LoadFromStream(&fs); //从流中加载字节码
fs.Close(); //关闭文件
vm.Run(); //运行虚拟机中的程式
printf("value=%f",value); //输出结果
}
void GameMain(char *)
{
CreateAndSave(); //创建并保存成字节码
LoadAndRun(); //加载字节码并运行
}
//-------------------------------------------------------------------------------------------------- |
|