summaryrefslogtreecommitdiff
path: root/doc/ext_ffi_semantics.html
diff options
context:
space:
mode:
Diffstat (limited to 'doc/ext_ffi_semantics.html')
-rw-r--r--doc/ext_ffi_semantics.html23
1 files changed, 11 insertions, 12 deletions
diff --git a/doc/ext_ffi_semantics.html b/doc/ext_ffi_semantics.html
index 69dfc2ca..8c7bd478 100644
--- a/doc/ext_ffi_semantics.html
+++ b/doc/ext_ffi_semantics.html
@@ -66,9 +66,9 @@ and its interaction with both Lua and C code.
66</p> 66</p>
67<p> 67<p>
68Given that the FFI library is designed to interface with C&nbsp;code 68Given that the FFI library is designed to interface with C&nbsp;code
69and that declarations can be written in plain C&nbsp;syntax, it 69and that declarations can be written in plain C&nbsp;syntax, <b>it
70closely follows the C&nbsp;language semantics, wherever possible. Some 70closely follows the C&nbsp;language semantics</b>, wherever possible.
71minor concessions are needed for smoother interoperation with Lua 71Some minor concessions are needed for smoother interoperation with Lua
72language semantics. 72language semantics.
73</p> 73</p>
74<p> 74<p>
@@ -83,9 +83,8 @@ background.
83Please note: this is the first public release of the FFI library. This 83Please note: this is the first public release of the FFI library. This
84does not comprise the final specification for the FFI semantics, yet. 84does not comprise the final specification for the FFI semantics, yet.
85Some of the semantics may need to be changed, based on feedback from 85Some of the semantics may need to be changed, based on feedback from
86developers. Please <a href="contact.html">report</a> any problems 86developers. Please <a href="contact.html">report</a> any problems you
87you've encountered or any improvements you'd like to see &mdash; thank 87may encounter or any improvements you'd like to see &mdash; thank you!
88you!
89</p> 88</p>
90 89
91<h2 id="clang">C Language Support</h2> 90<h2 id="clang">C Language Support</h2>
@@ -204,7 +203,7 @@ The following C&nbsp;features are <b>not</b> supported:
204default to an <tt>int</tt> type.</li> 203default to an <tt>int</tt> type.</li>
205 204
206<li>Old-style empty function declarations (K&amp;R) are not allowed. 205<li>Old-style empty function declarations (K&amp;R) are not allowed.
207All C&nbsp;functions must have a proper protype declaration. A 206All C&nbsp;functions must have a proper prototype declaration. A
208function declared without parameters (<tt>int&nbsp;foo();</tt>) is 207function declared without parameters (<tt>int&nbsp;foo();</tt>) is
209treated as a function taking zero arguments, like in C++.</li> 208treated as a function taking zero arguments, like in C++.</li>
210 209
@@ -312,7 +311,7 @@ C&nbsp;type of the destination, the
312are applied. 311are applied.
313</p> 312</p>
314<p> 313<p>
315Reference types are immutable after initialization ("no reseating of 314Reference types are immutable after initialization ("no re-seating of
316references"). For initialization purposes or when passing values to 315references"). For initialization purposes or when passing values to
317reference parameters, they are treated like pointers. Note that unlike 316reference parameters, they are treated like pointers. Note that unlike
318in C++, there's no way to implement automatic reference generation of 317in C++, there's no way to implement automatic reference generation of
@@ -652,8 +651,8 @@ variable argument part of vararg C&nbsp;function use
652<a href="#convert_vararg">special conversion rules</a>. This 651<a href="#convert_vararg">special conversion rules</a>. This
653C&nbsp;function is called and the return value (if any) is 652C&nbsp;function is called and the return value (if any) is
654<a href="#convert_tolua">converted to a Lua object</a>.<br> 653<a href="#convert_tolua">converted to a Lua object</a>.<br>
655On Windows/x86 systems, <tt>stdcall</tt> functions are automatically 654On Windows/x86 systems, <tt>__stdcall</tt> functions are automatically
656detected and a function declared as <tt>cdecl</tt> (the default) is 655detected and a function declared as <tt>__cdecl</tt> (the default) is
657silently fixed up after the first call.</li> 656silently fixed up after the first call.</li>
658 657
659</ul> 658</ul>
@@ -790,7 +789,7 @@ local s = ffi.new("foo_t", a)
790Similar rules apply for Lua strings which are implicitly converted to 789Similar rules apply for Lua strings which are implicitly converted to
791<tt>"const&nbsp;char&nbsp;*"</tt>: the string object itself must be 790<tt>"const&nbsp;char&nbsp;*"</tt>: the string object itself must be
792referenced somewhere or it'll be garbage collected eventually. The 791referenced somewhere or it'll be garbage collected eventually. The
793pointer will then point to stale data, which may have already beeen 792pointer will then point to stale data, which may have already been
794overwritten. Note that <em>string literals</em> are automatically kept 793overwritten. Note that <em>string literals</em> are automatically kept
795alive as long as the function containing it (actually its prototype) 794alive as long as the function containing it (actually its prototype)
796is not garbage collected. 795is not garbage collected.
@@ -951,7 +950,7 @@ storing and initializing them are supported, yet.</li>
951<li>The <tt>volatile</tt> type qualifier is currently ignored by 950<li>The <tt>volatile</tt> type qualifier is currently ignored by
952compiled code.</li> 951compiled code.</li>
953<li><a href="ext_ffi_api.html#ffi_cdef"><tt>ffi.cdef</tt></a> silently 952<li><a href="ext_ffi_api.html#ffi_cdef"><tt>ffi.cdef</tt></a> silently
954ignores all redeclarations.</li> 953ignores all re-declarations.</li>
955</ul> 954</ul>
956<p> 955<p>
957The JIT compiler already handles a large subset of all FFI operations. 956The JIT compiler already handles a large subset of all FFI operations.