diff --git a/docs/source/tutorial/cxx-in-lua.rst b/docs/source/tutorial/cxx-in-lua.rst index 32ca1865..ccbd12fe 100644 --- a/docs/source/tutorial/cxx-in-lua.rst +++ b/docs/source/tutorial/cxx-in-lua.rst @@ -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! diff --git a/examples/source/usertype_advanced.cpp b/examples/source/usertype_advanced.cpp index 9bec34ec..af6fe66f 100644 --- a/examples/source/usertype_advanced.cpp +++ b/examples/source/usertype_advanced.cpp @@ -65,25 +65,24 @@ int main() { lua["p2"] = player(0); // make usertype metatable - lua.new_usertype("player", - + sol::usertype player_type = lua.new_usertype("player", // 3 constructors - sol::constructors(), + sol::constructors()); - // 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 + 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)); - // read and write variable - "speed", &player::speed, - // can only read from, not write to - "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 std::string prelude_script = R"( @@ -138,5 +137,8 @@ p1:brake() */ lua.script(prelude_script); lua.script(player_script); + std::cout << std::endl; + + return 0; } diff --git a/single/include/sol/forward.hpp b/single/include/sol/forward.hpp index 485af190..12066dbc 100644 --- a/single/include/sol/forward.hpp +++ b/single/include/sol/forward.hpp @@ -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 diff --git a/single/include/sol/sol.hpp b/single/include/sol/sol.hpp index 77101c1b..310dfb12 100644 --- a/single/include/sol/sol.hpp +++ b/single/include/sol/sol.hpp @@ -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