Преглед изворни кода

docs: Add section Function Wrapping

Ole пре 9 година
родитељ
комит
a4115bfb71

+ 30 - 1
docs/mkdocs/wrapping.md

@@ -1,5 +1,34 @@
-# Function wrapping
+# General
 Luwra provides an easy way to turn any C or C++ function into a
 [lua_CFunction](http://www.lua.org/manual/5.3/manual.html#lua_CFunction) which can be used by the
 Lua VM. Note, all parameter types must be readable from the stack (`Value<T>::read` exists for all)
 and the return type must be pushable (`Value<T>::push` exists).
+
+## Wrap C/C++ functions
+Assuming you have a function similiar to this:
+
+```c++
+int my_function(const char* a, int b) {
+    return /* magic */;
+}
+```
+
+You can easily wrap it using the `LUWRA_WRAP` macro:
+
+```c++
+// Convert to lua_CFunction
+lua_CFunction cfun = LUWRA_WRAP(my_function);
+
+// Do something with it, for example set it as a Lua global function
+luwra::setGlobal(lua, "my_function", cfun);
+```
+
+**Note:** Do not provide the address of your function (e.g. `&my_function`) to any wrapping macro.
+The macros will take care of this themselves. You must provide only the name of the function.
+
+Calling the function from Lua is fairly straightforward:
+
+```lua
+local my_result = my_function("Hello World", 1337)
+print(my_result)
+```

+ 11 - 0
docs/output/advanced/index.html

@@ -83,6 +83,13 @@
             
             </ul>
         
+    </li>
+<li>
+          
+            <li>
+    <li class="toctree-l1 ">
+        <a class="" href="../wrapping/">Function Wrapping</a>
+        
     </li>
 <li>
           
@@ -162,6 +169,8 @@ function&lt;string(string, int)&gt; foo = /* magic */;
   
     <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
       
+        <a href="../wrapping/" class="btn btn-neutral float-right" title="Function Wrapping">Next <span class="icon icon-circle-arrow-right"></span></a>
+      
       
         <a href="../basics/" class="btn btn-neutral" title="Basic Stack Interaction"><span class="icon icon-circle-arrow-left"></span> Previous</a>
       
@@ -194,6 +203,8 @@ function&lt;string(string, int)&gt; foo = /* magic */;
         <span><a href="../basics/" style="color: #fcfcfc;">&laquo; Previous</a></span>
       
       
+        <span style="margin-left: 15px"><a href="../wrapping/" style="color: #fcfcfc">Next &raquo;</a></span>
+      
     </span>
 </div>
 

+ 7 - 0
docs/output/basics/index.html

@@ -88,6 +88,13 @@
     <li class="toctree-l1 ">
         <a class="" href="../advanced/">Advanced Stack Interaction</a>
         
+    </li>
+<li>
+          
+            <li>
+    <li class="toctree-l1 ">
+        <a class="" href="../wrapping/">Function Wrapping</a>
+        
     </li>
 <li>
           

+ 8 - 1
docs/output/index.html

@@ -82,6 +82,13 @@
     <li class="toctree-l1 ">
         <a class="" href="advanced/">Advanced Stack Interaction</a>
         
+    </li>
+<li>
+          
+            <li>
+    <li class="toctree-l1 ">
+        <a class="" href="wrapping/">Function Wrapping</a>
+        
     </li>
 <li>
           
@@ -179,5 +186,5 @@ your preference.</p>
 
 <!--
 MkDocs version : 0.15.3
-Build Date UTC : 2016-04-19 13:53:25.969814
+Build Date UTC : 2016-04-19 14:10:00.197827
 -->

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
docs/output/mkdocs/search_index.json


+ 7 - 0
docs/output/search.html

@@ -68,6 +68,13 @@
     <li class="toctree-l1 ">
         <a class="" href="advanced/">Advanced Stack Interaction</a>
         
+    </li>
+<li>
+          
+            <li>
+    <li class="toctree-l1 ">
+        <a class="" href="wrapping/">Function Wrapping</a>
+        
     </li>
 <li>
           

+ 8 - 0
docs/output/sitemap.xml

@@ -25,4 +25,12 @@
     </url>
     
 
+    
+    <url>
+     <loc>None/wrapping/</loc>
+     <lastmod>2016-04-19</lastmod>
+     <changefreq>daily</changefreq>
+    </url>
+    
+
 </urlset>

+ 199 - 0
docs/output/wrapping/index.html

@@ -0,0 +1,199 @@
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  
+  
+  <title>Function Wrapping - Luwra</title>
+  
+
+  <link rel="shortcut icon" href="../img/favicon.ico">
+
+  
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
+  <link rel="stylesheet" href="../css/highlight.css">
+
+  
+  <script>
+    // Current page data
+    var mkdocs_page_name = "Function Wrapping";
+    var mkdocs_page_input_path = "wrapping.md";
+    var mkdocs_page_url = "/wrapping/";
+  </script>
+  
+  <script src="../js/jquery-2.1.1.min.js"></script>
+  <script src="../js/modernizr-2.8.3.min.js"></script>
+  <script type="text/javascript" src="../js/highlight.pack.js"></script>
+  <script src="../js/theme.js"></script> 
+
+  
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
+      <div class="wy-side-nav-search">
+        <a href=".." class="icon icon-home"> Luwra</a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+        <ul class="current">
+          
+            <li>
+    <li class="toctree-l1 ">
+        <a class="" href="..">Home</a>
+        
+    </li>
+<li>
+          
+            <li>
+    <li class="toctree-l1 ">
+        <a class="" href="../basics/">Basic Stack Interaction</a>
+        
+    </li>
+<li>
+          
+            <li>
+    <li class="toctree-l1 ">
+        <a class="" href="../advanced/">Advanced Stack Interaction</a>
+        
+    </li>
+<li>
+          
+            <li>
+    <li class="toctree-l1 current">
+        <a class="current" href="./">Function Wrapping</a>
+        
+            <ul>
+            
+                <li class="toctree-l3"><a href="#general">General</a></li>
+                
+                    <li><a class="toctree-l4" href="#wrap-cc-functions">Wrap C/C++ functions</a></li>
+                
+            
+            </ul>
+        
+    </li>
+<li>
+          
+        </ul>
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+        <a href="..">Luwra</a>
+      </nav>
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="..">Docs</a> &raquo;</li>
+    
+      
+    
+    <li>Function Wrapping</li>
+    <li class="wy-breadcrumbs-aside">
+      
+        
+          <a href="https://github.com/vapourismo/luwra" class="icon icon-github"> Edit on GitHub</a>
+        
+      
+    </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            <div class="section">
+              
+                <h1 id="general">General</h1>
+<p>Luwra provides an easy way to turn any C or C++ function into a
+<a href="http://www.lua.org/manual/5.3/manual.html#lua_CFunction">lua_CFunction</a> which can be used by the
+Lua VM. Note, all parameter types must be readable from the stack (<code>Value&lt;T&gt;::read</code> exists for all)
+and the return type must be pushable (<code>Value&lt;T&gt;::push</code> exists).</p>
+<h2 id="wrap-cc-functions">Wrap C/C++ functions</h2>
+<p>Assuming you have a function similiar to this:</p>
+<pre><code class="c++">int my_function(const char* a, int b) {
+    return /* magic */;
+}
+</code></pre>
+
+<p>You can easily wrap it using the <code>LUWRA_WRAP</code> macro:</p>
+<pre><code class="c++">// Convert to lua_CFunction
+lua_CFunction cfun = LUWRA_WRAP(my_function);
+
+// Do something with it, for example set it as a Lua global function
+luwra::setGlobal(lua, &quot;my_function&quot;, cfun);
+</code></pre>
+
+<p><strong>Note:</strong> Do not provide the address of your function (e.g. <code>&amp;my_function</code>) to any wrapping macro.
+The macros will take care of this themselves. You must provide only the name of the function.</p>
+<p>Calling the function from Lua is fairly straightforward:</p>
+<pre><code class="lua">local my_result = my_function(&quot;Hello World&quot;, 1337)
+print(my_result)
+</code></pre>
+              
+            </div>
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+      
+        <a href="../advanced/" class="btn btn-neutral" title="Advanced Stack Interaction"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <!-- Copyright etc -->
+    
+  </div>
+
+  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+</footer>
+	  
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+
+<div class="rst-versions" role="note" style="cursor: pointer">
+    <span class="rst-current-version" data-toggle="rst-current-version">
+      
+          <a href="https://github.com/vapourismo/luwra" class="icon icon-github" style="float: left; color: #fcfcfc"> GitHub</a>
+      
+      
+        <span><a href="../advanced/" style="color: #fcfcfc;">&laquo; Previous</a></span>
+      
+      
+    </span>
+</div>
+
+</body>
+</html>

+ 1 - 0
mkdocs.yml

@@ -5,6 +5,7 @@ pages:
   - 'Home': index.md
   - 'Basic Stack Interaction': basics.md
   - 'Advanced Stack Interaction': advanced.md
+  - 'Function Wrapping': wrapping.md
 theme: readthedocs
 docs_dir: docs/mkdocs
 site_dir: docs/output

Неке датотеке нису приказане због велике количине промена