Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/Tomasu/LuaGlue

C++11 Lua 5.2 Binding Library
https://github.com/Tomasu/LuaGlue

Last synced: 18 days ago
JSON representation

C++11 Lua 5.2 Binding Library

Awesome Lists containing this project

README

        

LuaGlue
=======

![Coverity Status](https://scan.coverity.com/projects/2848/badge.svg)
[Coverity Status](https://scan.coverity.com/projects/2848)

LuaGlue is a C++11 template based binding library.

It is contained entirely in headers, with no code to link to.

License: Zlib

example
-------

Lua Code:
```lua
local test = Foo.new(333);
test:abc(1,2,3);

print("ONE: "..Foo.ONE);
print("TWO: "..Foo.TWO);
print("THREE: "..Foo.THREE);
```

C++ Code
```cpp
#include

class Foo
{
public:
Foo(int i) { printf("ctor! %i\n", i); }
~Foo();

int abc(int a, int b, int c) { printf("%i:%i:%i\n", a,b,c); return 143; }
static void aaa() { printf("aaa!\n"); }
};

int main(int, char **)
{
LuaGlue state;

state.
Class("Foo").
ctor("new").
method("abc", &Foo::abc).
method("aaa", &Foo::aaa).
constants( { { "ONE", 1 }, { "TWO", 2.0 }, { "THREE", "three" } } ).
end().open().glue();

if(!state.doFile("foo.lua"))
{
printf("failed to dofile: foo.lua\n");
printf("err: %s\n", state.lastError().c_str());
}

return 0;
}
```

CHANGES
=======

Aug 20 2014
-----------

Large refactor finished. A large amount of internal structure and code changed.
Repo forks may break or fail to merge.

Passing Lua Values like tables, functions and basic types is supported through
a new LuaGlueLuaValue type. For those times when you want a table or just don't
care what type is passed to a C/C++ function from lua.

FUTURE
======

- Pending name change, and large API break to add namespaces.

LICENSE
=======

> Copyright (c) 2013 Thomas Fjellstrom
>
> This software is provided 'as-is', without any express or implied
> warranty. In no event will the authors be held liable for any damages
> arising from the use of this software.

> Permission is granted to anyone to use this software for any purpose,
> including commercial applications, and to alter it and redistribute it
> freely, subject to the following restrictions:
>
> 1. The origin of this software must not be misrepresented; you must not
> claim that you wrote the original software. If you use this software
> in a product, an acknowledgment in the product documentation would be
> appreciated but is not required.
>
> 2. Altered source versions must be plainly marked as such, and must not be
> misrepresented as being the original software.
>
> 3. This notice may not be removed or altered from any source
> distribution.