您的位置:首页 > 编程语言 > Lua

使用lua访问STL容器

2010-07-31 14:52 330 查看
最近在做项目时,需要在lua脚本中,对c++的一个容器进行遍历。查了半天的资料,没有一劳永逸的办法。只好使用了较鹾的办法。源码列出来了,等着板砖。

 

c++代码:

 

extern "C"

{

  #include "lua.h"

#include "lualib.h"

#include "luaxlib.h"

}

 

#pragma comment(lib,"lua51.lib")

#pragma comment(lib,"lua5.1.lib")

#pragma comment(lib,"tolua++.lib")

 

#define maxnum 10

 

std::vector<int> globalvec;

 

static int getmaxnum(Lua_state*L)

{

  size_t size = globalvec.size();

  lua_pushnumber(L,size);

  return 1;

}

 

static int getvalue(lua_State*L)

{

 size_t index= lua_tonumber(L,-1);

 

 if(index > globalvec.size()

{

  return 0;

}

 

lua_pushnumber(L,globalvec[index]);

return 1;

}

 

static int getvalue(unsigned int index)

{

   if(index >= globalvec.size())

   {

       return 0;

   }

  return globalvec[index];

}

 

static int testc()

{

  unsigned int index =0;

  while(index < globalvec.size())

{

    getval(index++);

}

}

main()

{

 

for(unsigned int i =0;i < maxnum;i ++)

{

   globalvec.push_back(i);

}

  L= lua_open();

 

luaopen_base(L):

luaL_ openlibs(L);

 

luaL_dofile(L,"test.lua");

lua_register(L,"getmaxindex",getmaxindex);

lua_register(L,"getvalue",getvalue);

 

LARGE_INTER startime1,starttime2,endtime1,endtime2;

LARGE_INTER frequency;

 

QueryPerformanceFrequency(&frequency);

QueryPerformanceCounter(&starttime1);

lua_getglobal(L,testfunc);

lua_call(L,0,0);

QueryPerformanceCounter(&endtime1);

 

QueryPerformanceCounter(&starttime2);

testc();

QueryPerformanceCounter(&endtime2);

 

float interval1 = (1000 * endtime1.QuardPart - 1000 *starttime1.QuardPart)/frequency.QuardPart;

 

float interval2 = (1000 * endtime2.QuardPart - 1000 * starttime.QuardPart)/frequencey.QuardPart;

 

lua_close(L):

 

return 1;

}

 

lua脚本:

function testfunc()

local index =0

local maxindex = getmaxindex()

local value =0

while index < maxindex do

   value = getvalue(index)

  index = index+1

  print(value)

end

 

最后测下来lua效果还不错,放心大胆的使用了

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  lua 脚本 function float c