aboutsummaryrefslogtreecommitdiffstats
path: root/lib/sol2/docs/source/api/as_function.rst
diff options
context:
space:
mode:
authorAndy Belle-Isle <drumsetmonkey@gmail.com>2019-08-30 00:45:36 -0400
committerAndy Belle-Isle <drumsetmonkey@gmail.com>2019-08-30 00:45:36 -0400
commitdc2493e7525bb7633f697ef10f72b72b46222249 (patch)
tree9816755219e65d3f47fdce81c78f3736a7ddb8ab /lib/sol2/docs/source/api/as_function.rst
parent9d2b31797d0cfd130802b69261df2cd402e39b49 (diff)
Forget what I said, I just need to change git attributes to mark for vendor
Diffstat (limited to 'lib/sol2/docs/source/api/as_function.rst')
-rw-r--r--lib/sol2/docs/source/api/as_function.rst24
1 files changed, 24 insertions, 0 deletions
diff --git a/lib/sol2/docs/source/api/as_function.rst b/lib/sol2/docs/source/api/as_function.rst
new file mode 100644
index 0000000..65cff85
--- /dev/null
+++ b/lib/sol2/docs/source/api/as_function.rst
@@ -0,0 +1,24 @@
+as_function
+===========
+*make sure an object is pushed as a function*
+
+
+.. code-block:: cpp
+
+ template <typename Sig = sol::function_sig<>, typename... Args>
+ function_argumants<Sig, Args...> as_function ( Args&& ... );
+
+This function serves the purpose of ensuring that a callable struct (like a lambda) can be passed to the ``set( key, value )`` calls on :ref:`sol::table<set-value>` and be treated like a function binding instead of a userdata. It is recommended that one uses the :ref:`sol::table::set_function<set-function>` call instead, but if for some reason one must use ``set``, then ``as_function`` can help ensure a callable struct is handled like a lambda / callable, and not as just a userdata structure.
+
+This class can also make it so usertypes bind variable types as functions to for usertype bindings.
+
+.. literalinclude:: ../../../examples/source/docs/as_function.cpp
+ :linenos:
+
+
+Note that if you actually want a userdata, but you want it to be callable, you simply need to create a :ref:`sol::table::new_usertype<new-usertype>` and then bind the ``"__call"`` metamethod (or just use ``sol::meta_function::call`` :ref:`enumeration<meta_function_enum>`). This may or may not be done automatically for you, depending on whether or not the call operator is overloaded and such.
+
+Here's an example of binding a variable as a function to a usertype:
+
+.. literalinclude:: ../../../examples/source/docs/as_function_usertype_member_variable.cpp
+ :linenos: