diff options
author | Mike Pall <mike> | 2011-02-11 01:21:46 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2011-02-11 01:21:46 +0100 |
commit | a5aade2fa9ff89f9f3c4a91261071299de0d0fa4 (patch) | |
tree | d253cfe022944c9754ebe43810a73c141130f058 /doc/ext_ffi_api.html | |
parent | a2f9f1f831c77b19433b9f8858b9c1db0e421800 (diff) | |
download | luajit2-a5aade2fa9ff89f9f3c4a91261071299de0d0fa4.tar.gz |
FFI: Finish FFI docs.
Diffstat (limited to 'doc/ext_ffi_api.html')
-rw-r--r-- | doc/ext_ffi_api.html | 49 |
1 files changed, 41 insertions, 8 deletions
diff --git a/doc/ext_ffi_api.html b/doc/ext_ffi_api.html index 7c2e53dd..9bedd52e 100644 --- a/doc/ext_ffi_api.html +++ b/doc/ext_ffi_api.html @@ -38,8 +38,6 @@ td.abiparam { font-weight: bold; width: 6em; } </li><li> <a class="current" href="ext_ffi_api.html">ffi.* API</a> </li><li> -<a href="ext_ffi_int64.html">64 bit Integers</a> -</li><li> <a href="ext_ffi_semantics.html">FFI Semantics</a> </li></ul> </li><li> @@ -106,7 +104,7 @@ follows: </p> <pre class="code"> ffi.cdef[[ -<span style="color:#00a000;font-weight:bold;">typedef struct foo { int a, b; } foo_t; // Declare a struct and typedef. +<span style="color:#00a000;">typedef struct foo { int a, b; } foo_t; // Declare a struct and typedef. int dofoo(foo_t *f, int n); /* Declare an external C function. */</span> ]] </pre> @@ -237,12 +235,8 @@ rules</a>. </p> <p> This functions is mainly useful to override the pointer compatibility -rules or to convert pointers to addresses or vice versa. For maximum -portability you should convert a pointer to its address as follows: +checks or to convert pointers to addresses or vice versa. </p> -<pre class="code"> -local addr = tonumber(ffi.cast("intptr_t", ptr)) -</pre> <h2 id="info">C Type Information</h2> <p> @@ -383,6 +377,45 @@ Contains the target OS name. Same contents as Contains the target architecture name. Same contents as <a href="ext_jit.html#jit_arch"><tt>jit.arch</tt></a>. </p> + +<h2 id="extended">Extended Standard Library Functions</h2> +<p> +The following standard library functions have been extended to work +with cdata objects: +</p> + +<h3 id="tonumber"><tt>n = tonumber(cdata)</tt></h3> +<p> +Converts a number cdata object to a <tt>double</tt> and returns it as +a Lua number. This is particularly useful for boxed 64 bit +integer values. Caveat: this conversion may incur a precision loss. +</p> + +<h3 id="tostring"><tt>s = tostring(cdata)</tt></h3> +<p> +Returns a string representation of the value of 64 bit integers +(<tt><b>"</b>nnn<b>LL"</b></tt> or <tt><b>"</b>nnn<b>ULL"</b></tt>) or +complex numbers (<tt><b>"</b>re±im<b>i"</b></tt>). Otherwise +returns a string representation of the C type of a ctype object +(<tt><b>"ctype<</b>type<b>>"</b></tt>) or a cdata object +(<tt><b>"cdata<</b>type<b>>: </b>address"</tt>). +</p> + +<h2 id="literals">Extensions to the Lua Parser</h2> +<p> +The parser for Lua source code treats numeric literals with the +suffixes <tt>LL</tt> or <tt>ULL</tt> as signed or unsigned 64 bit +integers. Case doesn't matter, but uppercase is recommended for +readability. It handles both decimal (<tt>42LL</tt>) and hexadecimal +(<tt>0x2aLL</tt>) literals. +</p> +<p> +The imaginary part of complex numbers can be specified by suffixing +number literals with <tt>i</tt> or <tt>I</tt>, e.g. <tt>12.5i</tt>. +Caveat: you'll need to use <tt>1i</tt> to get an imaginary part with +the value one, since <tt>i</tt> itself still refers to a variable +named <tt>i</tt>. +</p> <br class="flush"> </div> <div id="foot"> |