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

Lua的面向对象封装

2015-11-05 20:02 711 查看
版权声明:本文为 西风逍遥游 原创文章,转载请注明出处 西风世界 http://blog.csdn.net/xfxyy_sxfancy

lua这款简洁优雅的语言,非常受C/C++程序员喜欢。然而lua由于太过小巧,其接口过于类似汇编,使用困难,容易出错,也让人无可奈何。

随着C++11的推进,lua逐渐出现了诸多非常有特色的面向对象封装方式,经过封装后,接口非常的简单优雅,而且操作简便,深受C++程序员的欢迎。

OOLua简介

这是一款非常不错的跨平台lua封装库,主要应用的是C++03 中的模板元编程能力。

支持的lua版本也很广:

Rio Lua 5.1, 5.2 and 5.3 http://www.lua.org

LuaJIT 1.1.8 and 2.0 http://www.luajit.org/

安装有点困难,需要编译安装,而且他依赖几个不是很常见的库

Premake4 - 利用lua脚本的构建工具

Google Mock - 这三个是测试工具

Google Test

CppUnit

Ubuntu下还好,我是用apt-get一路安装下去的,Windows的用户可能就很悲剧了。Premake4源里面版本有点低,从网上下一个丢到usr/bin下就好:

sudo apt-get install google-mock
sudo apt-get install libgtest-dev
sudo apt-get install libcppunit*


然后到build_scripts目录下找对应的编译脚本执行就好了。

我们会在local_install目录下看到编译后的库和头文件目录

使用

OOLua库的使用非常简单,甚至他能自动将我们的C/C++函数转换成lua能调用的形式。

我们只需要将OOLUA_CFUNC宏将函数注册进来就可以了。

#include <stdio.h>
#include "oolua/oolua.h"

void say(char const* input) {
printf("%s\n", input);
}

OOLUA_CFUNC(say, l_say)

void hello_minimalist_function() {
using namespace OOLUA; //NOLINT(build/namespaces)
Script vm;
set_global(vm, "say", l_say);
run_chunk(vm, "say('Hello Lua')");
}

int main(int argc, char const *argv[])
{
hello_minimalist_function();
return 0;
}


文档

这个项目我觉得做的真的非常好,这是一个用C++元编程实现便捷操作的良好典范,而且更为重要的是,文档非常齐全,项目目录下就带有doxygen风格的HTML文档,查看起来非常方便。

更多的DSL实现请查阅文档中的介绍,可以看出,这款lua的封装,对于使用新版C++的朋友们,非常的合适。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息