mirror of
https://github.com/ThePhD/sol2.git
synced 2024-03-22 13:10:44 +08:00
115 lines
2.4 KiB
ReStructuredText
115 lines
2.4 KiB
ReStructuredText
.. Sol documentation master file, created by
|
|
sphinx-quickstart on Mon Feb 29 21:49:51 2016.
|
|
You can adapt this file completely to your liking, but it should at least
|
|
contain the root `toctree` directive.
|
|
|
|
Sol 2.3
|
|
=======
|
|
a fast, simple C++ and Lua Binding
|
|
----------------------------------
|
|
|
|
When you need to hit the ground running with Lua and C++, `Sol`_ is the go-to framework for high-performance binding with an easy to use API.
|
|
|
|
.. image:: https://travis-ci.org/ThePhD/sol2.svg?branch=develop
|
|
:target: https://travis-ci.org/ThePhD/sol2
|
|
:alt: build status
|
|
|
|
get going:
|
|
----------
|
|
|
|
.. toctree::
|
|
:maxdepth: 1
|
|
:name: mastertoc
|
|
|
|
tutorial/all-the-things
|
|
tutorial/tutorial-top
|
|
api/api-top
|
|
features
|
|
benchmarks
|
|
safety
|
|
exceptions
|
|
rtti
|
|
licenses
|
|
origin
|
|
|
|
|
|
"I need feature X, maybe you have it?"
|
|
--------------------------------------
|
|
Take a look at the :doc:`Features<features>` page: it links to much of the API. You can also just straight up browse the :doc:`api<api/api-top>` or ease in with the :doc:`tutorials<tutorial/tutorial-top>`. Don't see a feature you want? Send inquiries for support for a particular abstraction to the `issues`_ tracker.
|
|
|
|
|
|
the basics:
|
|
-----------
|
|
|
|
.. note::
|
|
More examples can be found in the `examples directory`_
|
|
|
|
|
|
.. code-block:: c++
|
|
:caption: functions
|
|
:linenos:
|
|
|
|
#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);
|
|
|
|
sol::function beep = lua["beep"];
|
|
beep();
|
|
assert(x == 2);
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
.. code-block:: c++
|
|
:caption: linking C++ structures to Lua
|
|
:linenos:
|
|
|
|
#include <sol.hpp>
|
|
#include <cassert>
|
|
|
|
struct vars {
|
|
int boop = 0;
|
|
|
|
int bop () const {
|
|
return boop + 1;
|
|
}
|
|
};
|
|
|
|
int main() {
|
|
sol::state lua;
|
|
lua.new_usertype<vars>("vars",
|
|
"boop", &vars::boop
|
|
"bop", &vars::bop);
|
|
lua.script("beep = vars.new()\n"
|
|
"beep.boop = 1\n"
|
|
"bopvalue = beep:bop()");
|
|
|
|
vars& beep = lua["beep"];
|
|
int bopvalue = lua["bopvalue"];
|
|
|
|
assert(beep.boop == 1);
|
|
assert(lua.get<vars>("beep").boop == 1);
|
|
assert(beep.bop() == 2);
|
|
assert(bopvalue == 2);
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
Indices and tables
|
|
==================
|
|
|
|
* :ref:`genindex`
|
|
* :ref:`search`
|
|
|
|
.. _Sol: https://github.com/ThePhD/sol2
|
|
.. _issues: https://github.com/ThePhD/sol2/issues
|
|
.. _examples directory: https://github.com/ThePhD/sol2/tree/develop/examples |