GithubHelp home page GithubHelp logo

mrgreywater / sol2 Goto Github PK

View Code? Open in Web Editor NEW

This project forked from thephd/sol2

0.0 2.0 0.0 13.53 MB

Sol v2.0 - a C++ <-> Lua API wrapper with advanced features and top notch performance - is here, and it's great! Documentation:

Home Page: http://sol2.rtfd.io/

License: MIT License

Python 1.15% Shell 0.13% C++ 95.04% C 2.38% CMake 1.30%

sol2's Introduction

Sol 2.18

Join the chat at https://gitter.im/chat-sol2/Lobby

Build Status Documentation Status

Sol is a C++ library binding to Lua. It currently supports all Lua versions 5.1+ (LuaJIT 2.x included). Sol aims to be easy to use and easy to add to a project. The library is header-only for easy integration with projects.

Documentation

Find it here. A run-through kind of tutorial is here! The API documentation goes over most cases (particularly, the "api/usertype" and "api/proxy" and "api/function" sections) that should still get you off your feet and going, and there's an examples directory here as well.

Sneak Peek

#include <sol.hpp>
#include <cassert>

int main() {
    sol::state lua;
    int x = 0;
    lua.set_function("beep", [&x]{ ++x; });
    lua.script("beep()");
    assert(x == 1);
}
#include <sol.hpp>
#include <cassert>

struct vars {
    int boop = 0;
};

int main() {
    sol::state lua;
    lua.new_usertype<vars>("vars", "boop", &vars::boop);
    lua.script("beep = vars.new()\n"
               "beep.boop = 1");
    assert(lua.get<vars>("beep").boop == 1);
}

More examples are given in the examples directory.

Presentations

"A Sun For the Moon - A Zero-Overhead Lua Abstraction using C++"
ThePhD
Lua Workshop 2016 - Mashape, San Francisco, CA
Deck

Creating a single header

You can grab a single header out of the library here. For stable version, check the releases tab on github for a provided single header file for maximum ease of use. A script called single.py is provided in the repository if there's some bleeding edge change that hasn't been published on the releases page. You can run this script to create a single file version of the library so you can only include that part of it. Check single.py --help for more info.

Features

  • Fastest in the land (see: sol bar in graph).
  • Supports retrieval and setting of multiple types including std::string and std::map/unordered_map.
  • Lambda, function, and member function bindings are supported.
  • Intermediate type for checking if a variable exists.
  • Simple API that completely abstracts away the C stack API, including protected_function with the ability to use an error-handling function.
  • operator[]-style manipulation of tables
  • C++ type representations in lua userdata as usertypes with guaranteed cleanup.
  • Customization points to allow your C++ objects to be pushed and retrieved from Lua as multiple consecutive objects, or anything else you desire!
  • Overloaded function calls: my_function(1); my_function("Hello") in the same lua script route to different function calls based on parameters
  • Support for tables, nested tables, table iteration with table.for_each / begin() and end() iterators.

Supported Compilers

Sol makes use of C++11 and C++14 features. GCC 5.x.x and Clang 3.6.x (with std=c++1z and appropriate standard library) or higher should be able to compile without problems. However, the officially supported and CI-tested compilers are:

  • GCC 5.x.x+
  • Clang 3.6.x+
  • Visual Studio 2015 Community (Visual C++ 14.0)+

Please make sure you use the -std=c++1y, -std=c++14, -std=c++1z, -std=c++17 or better standard flags (some of these flags are the defaults in later versions of GCC 6+ and better).

Older compilers (GCC 4.9.x, Clang 3.4.x seem to be the lowest) can work with versions as late as v2.17.5, with the flag -std=c++14 or -std=c++1y.

License

Sol is distributed with an MIT License. You can see LICENSE.txt for more info.

sol2's People

Contributors

aaiyer avatar agjohnson avatar alkino avatar carloscm avatar chebee7i avatar cloudops-wstevens avatar danieloaks avatar ehough avatar ericholscher avatar gitter-badger avatar gl3n avatar ivoz avatar jodal avatar kami avatar mrgreywater avatar nava2 avatar orfeasz avatar peterhajdu avatar princesstrash avatar rapptz avatar raptorfactor avatar snide avatar the-fyp avatar thephd avatar titilambert avatar tony avatar wtfbbqhax avatar xuhdev avatar zhanghongyi avatar zwparchman avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.