improve docs a tiny bit more and prepare for release 3.0.3

This commit is contained in:
ThePhD 2019-07-04 11:29:11 -04:00
parent fd6feec382
commit d83e1a5637
No known key found for this signature in database
GPG Key ID: 1509DB1C0F702BFA
4 changed files with 25 additions and 23 deletions

View File

@ -8,7 +8,7 @@ Take this ``player`` struct in C++ in a header file:
.. literalinclude:: ../../../examples/source/usertype_advanced.cpp
:caption: player.hpp
:linenos:
:lines: 1-48
:lines: 8-51
It's a fairly minimal class, but we don't want to have to rewrite this with metatables in Lua. We want this to be part of Lua easily. The following is the Lua code that we'd like to have work properly:
@ -16,7 +16,7 @@ It's a fairly minimal class, but we don't want to have to rewrite this with meta
:caption: player_script.lua
:language: lua
:linenos:
:lines: 93-124
:lines: 97-127
To do this, you bind things using the ``new_usertype`` and method as shown below. These methods are on both :doc:`table<../api/table>` and :doc:`state(_view)<../api/state>`, but we're going to just use it on ``state``:
@ -24,7 +24,7 @@ To do this, you bind things using the ``new_usertype`` and method as shown below
:caption: main.cpp
:language: cpp
:linenos:
:lines: 1-3,5,7-9,53,55-86,136-137,142
:lines: 1-3,5,7-9,53,55-85,135-136,143-
There is one more method used in the script that is not in C++ or defined on the C++ code to bind a usertype, called ``brake``. Even if a method does not exist in C++, you can add methods to the *class table* in Lua:
@ -32,7 +32,7 @@ There is one more method used in the script that is not in C++ or defined on the
:caption: prelude_script.lua
:language: lua
:linenos:
:lines: 90-93
:lines: 89-92
That script should run fine now, and you can observe and play around with the values. Even more stuff :doc:`you can do<../api/usertype>` is described elsewhere, like initializer functions (private constructors / destructors support), "static" functions callable with ``name.my_function( ... )``, and overloaded member functions. You can even bind global variables (even by reference with ``std::ref``) with ``sol::var``. There's a lot to try out!

View File

@ -65,24 +65,23 @@ int main() {
lua["p2"] = player(0);
// make usertype metatable
lua.new_usertype<player>("player",
sol::usertype<player> player_type = lua.new_usertype<player>("player",
// 3 constructors
sol::constructors<player(), player(int), player(int, int)>(),
sol::constructors<player(), player(int), player(int, int)>());
// typical member function that returns a variable
"shoot", &player::shoot,
// typical member function
"boost", &player::boost,
// typical member function that returns a variable
player_type["shoot"] = &player::shoot;
// typical member function
player_type["boost"] = &player::boost;
// gets or set the value using member variable syntax
"hp", sol::property(&player::get_hp, &player::set_hp),
// gets or set the value using member variable syntax
player_type["hp"] = sol::property(&player::get_hp, &player::set_hp);
// read and write variable
"speed", &player::speed,
// can only read from, not write to
"bullets", sol::readonly(&player::bullets)
);
// read and write variable
player_type["speed"] = &player::speed;
// can only read from, not write to
// .set(foo, bar) is the same as [foo] = bar;
player_type.set("bullets", sol::readonly(&player::bullets));
// You can also add members to the code, defined in Lua!
// This lets you have a high degree of flexibility in the code
@ -138,5 +137,8 @@ p1:brake()
*/
lua.script(prelude_script);
lua.script(player_script);
std::cout << std::endl;
return 0;
}

View File

@ -20,8 +20,8 @@
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
// This file was generated with a script.
// Generated 2019-07-04 13:41:56.522945 UTC
// This header was generated with sol v3.0.2 (revision e440d7a)
// Generated 2019-07-04 15:28:54.820895 UTC
// This header was generated with sol v3.0.2 (revision fd6feec)
// https://github.com/ThePhD/sol2
#ifndef SOL_SINGLE_INCLUDE_FORWARD_HPP

View File

@ -20,8 +20,8 @@
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
// This file was generated with a script.
// Generated 2019-07-04 13:41:56.267639 UTC
// This header was generated with sol v3.0.2 (revision e440d7a)
// Generated 2019-07-04 15:28:54.552614 UTC
// This header was generated with sol v3.0.2 (revision fd6feec)
// https://github.com/ThePhD/sol2
#ifndef SOL_SINGLE_INCLUDE_HPP