Mercurial Hosting > luan
comparison website/src/manual.html.luan @ 418:455784e2227d
remove C documentation from manual
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Thu, 30 Apr 2015 21:52:20 -0600 |
parents | a40e99cf0b0b |
children | df95199ca4c0 |
comparison
equal
deleted
inserted
replaced
417:a40e99cf0b0b | 418:455784e2227d |
---|---|
1754 <p> | 1754 <p> |
1755 The loop creates ten closures | 1755 The loop creates ten closures |
1756 (that is, ten instances of the anonymous function). | 1756 (that is, ten instances of the anonymous function). |
1757 Each of these closures uses a different <tt>y</tt> variable, | 1757 Each of these closures uses a different <tt>y</tt> variable, |
1758 while all of them share the same <tt>x</tt>. | 1758 while all of them share the same <tt>x</tt>. |
1759 | |
1760 | |
1761 | |
1762 | |
1763 | |
1764 <h1>4 – <a name="4">The Application Program Interface</a></h1> | |
1765 | |
1766 <p> | |
1767 | |
1768 This section describes the C API for Lua, that is, | |
1769 the set of C functions available to the host program to communicate | |
1770 with Lua. | |
1771 All API functions and related types and constants | |
1772 are declared in the header file <a name="pdf-lua.h"><code>lua.h</code></a>. | |
1773 | |
1774 | |
1775 <p> | |
1776 Even when we use the term "function", | |
1777 any facility in the API may be provided as a macro instead. | |
1778 Except where stated otherwise, | |
1779 all such macros use each of their arguments exactly once | |
1780 (except for the first argument, which is always a Lua state), | |
1781 and so do not generate any hidden side-effects. | |
1782 | |
1783 | |
1784 <p> | |
1785 As in most C libraries, | |
1786 the Lua API functions do not check their arguments for validity or consistency. | |
1787 However, you can change this behavior by compiling Lua | |
1788 with the macro <a name="pdf-LUA_USE_APICHECK"><code>LUA_USE_APICHECK</code></a> defined. | |
1789 | |
1790 | |
1791 | |
1792 <h2>4.1 – <a name="4.1">The Stack</a></h2> | |
1793 | |
1794 <p> | |
1795 Lua uses a <em>virtual stack</em> to pass values to and from C. | |
1796 Each element in this stack represents a Lua value | |
1797 (<b>nil</b>, number, string, etc.). | |
1798 | |
1799 | |
1800 <p> | |
1801 Whenever Lua calls C, the called function gets a new stack, | |
1802 which is independent of previous stacks and of stacks of | |
1803 C functions that are still active. | |
1804 This stack initially contains any arguments to the C function | |
1805 and it is where the C function pushes its results | |
1806 to be returned to the caller (see <a href="#lua_CFunction"><code>lua_CFunction</code></a>). | |
1807 | |
1808 | |
1809 <p> | |
1810 For convenience, | |
1811 most query operations in the API do not follow a strict stack discipline. | |
1812 Instead, they can refer to any element in the stack | |
1813 by using an <em>index</em>: | |
1814 A positive index represents an absolute stack position | |
1815 (starting at 1); | |
1816 a negative index represents an offset relative to the top of the stack. | |
1817 More specifically, if the stack has <em>n</em> elements, | |
1818 then index 1 represents the first element | |
1819 (that is, the element that was pushed onto the stack first) | |
1820 and | |
1821 index <em>n</em> represents the last element; | |
1822 index -1 also represents the last element | |
1823 (that is, the element at the top) | |
1824 and index <em>-n</em> represents the first element. | |
1825 | |
1826 | |
1827 | |
1828 | |
1829 | |
1830 <h2>4.2 – <a name="4.2">Stack Size</a></h2> | |
1831 | |
1832 <p> | |
1833 When you interact with the Lua API, | |
1834 you are responsible for ensuring consistency. | |
1835 In particular, | |
1836 <em>you are responsible for controlling stack overflow</em>. | |
1837 You can use the function <a href="#lua_checkstack"><code>lua_checkstack</code></a> | |
1838 to ensure that the stack has enough space for pushing new elements. | |
1839 | |
1840 | |
1841 <p> | |
1842 Whenever Lua calls C, | |
1843 it ensures that the stack has space for | |
1844 at least <a name="pdf-LUA_MINSTACK"><code>LUA_MINSTACK</code></a> extra slots. | |
1845 <code>LUA_MINSTACK</code> is defined as 20, | |
1846 so that usually you do not have to worry about stack space | |
1847 unless your code has loops pushing elements onto the stack. | |
1848 | |
1849 | |
1850 <p> | |
1851 When you call a Lua function | |
1852 without a fixed number of results (see <a href="#lua_call"><code>lua_call</code></a>), | |
1853 Lua ensures that the stack has enough space for all results, | |
1854 but it does not ensure any extra space. | |
1855 So, before pushing anything in the stack after such a call | |
1856 you should use <a href="#lua_checkstack"><code>lua_checkstack</code></a>. | |
1857 | |
1858 | |
1859 | |
1860 | |
1861 | |
1862 <h2>4.3 – <a name="4.3">Valid and Acceptable Indices</a></h2> | |
1863 | |
1864 <p> | |
1865 Any function in the API that receives stack indices | |
1866 works only with <em>valid indices</em> or <em>acceptable indices</em>. | |
1867 | |
1868 | |
1869 <p> | |
1870 A <em>valid index</em> is an index that refers to a | |
1871 real position within the stack, that is, | |
1872 its position lies between 1 and the stack top | |
1873 (<code>1 ≤ abs(index) ≤ top</code>). | |
1874 | |
1875 Usually, functions that can modify the value at an index | |
1876 require valid indices. | |
1877 | |
1878 | |
1879 <p> | |
1880 Unless otherwise noted, | |
1881 any function that accepts valid indices also accepts <em>pseudo-indices</em>, | |
1882 which represent some Lua values that are accessible to C code | |
1883 but which are not in the stack. | |
1884 Pseudo-indices are used to access the registry | |
1885 and the upvalues of a C function (see <a href="#4.4">§4.4</a>). | |
1886 | |
1887 | |
1888 <p> | |
1889 Functions that do not need a specific stack position, | |
1890 but only a value in the stack (e.g., query functions), | |
1891 can be called with acceptable indices. | |
1892 An <em>acceptable index</em> can be any valid index, | |
1893 including the pseudo-indices, | |
1894 but it also can be any positive index after the stack top | |
1895 within the space allocated for the stack, | |
1896 that is, indices up to the stack size. | |
1897 (Note that 0 is never an acceptable index.) | |
1898 Except when noted otherwise, | |
1899 functions in the API work with acceptable indices. | |
1900 | |
1901 | |
1902 <p> | |
1903 Acceptable indices serve to avoid extra tests | |
1904 against the stack top when querying the stack. | |
1905 For instance, a C function can query its third argument | |
1906 without the need to first check whether there is a third argument, | |
1907 that is, without the need to check whether 3 is a valid index. | |
1908 | |
1909 | |
1910 <p> | |
1911 For functions that can be called with acceptable indices, | |
1912 any non-valid index is treated as if it | |
1913 contains a value of a virtual type <a name="pdf-LUA_TNONE"><code>LUA_TNONE</code></a>, | |
1914 which behaves like a nil value. | |
1915 | |
1916 | |
1917 | |
1918 | |
1919 | |
1920 <h2>4.4 – <a name="4.4">C Closures</a></h2> | |
1921 | |
1922 <p> | |
1923 When a C function is created, | |
1924 it is possible to associate some values with it, | |
1925 thus creating a <em>C closure</em> | |
1926 (see <a href="#lua_pushcclosure"><code>lua_pushcclosure</code></a>); | |
1927 these values are called <em>upvalues</em> and are | |
1928 accessible to the function whenever it is called. | |
1929 | |
1930 | |
1931 <p> | |
1932 Whenever a C function is called, | |
1933 its upvalues are located at specific pseudo-indices. | |
1934 These pseudo-indices are produced by the macro | |
1935 <a href="#lua_upvalueindex"><code>lua_upvalueindex</code></a>. | |
1936 The first value associated with a function is at position | |
1937 <code>lua_upvalueindex(1)</code>, and so on. | |
1938 Any access to <code>lua_upvalueindex(<em>n</em>)</code>, | |
1939 where <em>n</em> is greater than the number of upvalues of the | |
1940 current function (but not greater than 256), | |
1941 produces an acceptable but invalid index. | |
1942 | |
1943 | |
1944 | |
1945 | |
1946 | |
1947 <h2>4.5 – <a name="4.5">Registry</a></h2> | |
1948 | |
1949 <p> | |
1950 Lua provides a <em>registry</em>, | |
1951 a predefined table that can be used by any C code to | |
1952 store whatever Lua values it needs to store. | |
1953 The registry table is always located at pseudo-index | |
1954 <a name="pdf-LUA_REGISTRYINDEX"><code>LUA_REGISTRYINDEX</code></a>, | |
1955 which is a valid index. | |
1956 Any C library can store data into this table, | |
1957 but it must take care to choose keys | |
1958 that are different from those used | |
1959 by other libraries, to avoid collisions. | |
1960 Typically, you should use as key a string containing your library name, | |
1961 or a light userdata with the address of a C object in your code, | |
1962 or any Lua object created by your code. | |
1963 As with variable names, | |
1964 string keys starting with an underscore followed by | |
1965 uppercase letters are reserved for Lua. | |
1966 | |
1967 | |
1968 <p> | |
1969 The integer keys in the registry are used | |
1970 by the reference mechanism (see <a href="#luaL_ref"><code>luaL_ref</code></a>) | |
1971 and by some predefined values. | |
1972 Therefore, integer keys must not be used for other purposes. | |
1973 | |
1974 | |
1975 <p> | |
1976 When you create a new Lua state, | |
1977 its registry comes with some predefined values. | |
1978 These predefined values are indexed with integer keys | |
1979 defined as constants in <code>lua.h</code>. | |
1980 The following constants are defined: | |
1981 | |
1982 <ul> | |
1983 <li><b><a name="pdf-LUA_RIDX_MAINTHREAD"><code>LUA_RIDX_MAINTHREAD</code></a>: </b> At this index the registry has | |
1984 the main thread of the state. | |
1985 (The main thread is the one created together with the state.) | |
1986 </li> | |
1987 | |
1988 <li><b><a name="pdf-LUA_RIDX_GLOBALS"><code>LUA_RIDX_GLOBALS</code></a>: </b> At this index the registry has | |
1989 the global environment. | |
1990 </li> | |
1991 </ul> | |
1992 | |
1993 | |
1994 | |
1995 | |
1996 <h2>4.6 – <a name="4.6">Error Handling in C</a></h2> | |
1997 | |
1998 <p> | |
1999 Internally, Lua uses the C <code>longjmp</code> facility to handle errors. | |
2000 (Lua will use exceptions if you compile it as C++; | |
2001 search for <code>LUAI_THROW</code> in the source code for details.) | |
2002 When Lua faces any error | |
2003 (such as a memory allocation error, type errors, syntax errors, | |
2004 and runtime errors) | |
2005 it <em>raises</em> an error; | |
2006 that is, it does a long jump. | |
2007 A <em>protected environment</em> uses <code>setjmp</code> | |
2008 to set a recovery point; | |
2009 any error jumps to the most recent active recovery point. | |
2010 | |
2011 | |
2012 <p> | |
2013 If an error happens outside any protected environment, | |
2014 Lua calls a <em>panic function</em> (see <a href="#lua_atpanic"><code>lua_atpanic</code></a>) | |
2015 and then calls <code>abort</code>, | |
2016 thus exiting the host application. | |
2017 Your panic function can avoid this exit by | |
2018 never returning | |
2019 (e.g., doing a long jump to your own recovery point outside Lua). | |
2020 | |
2021 | |
2022 <p> | |
2023 The panic function runs as if it were a message handler (see <a href="#2.3">§2.3</a>); | |
2024 in particular, the error message is at the top of the stack. | |
2025 However, there is no guarantee about stack space. | |
2026 To push anything on the stack, | |
2027 the panic function must first check the available space (see <a href="#4.2">§4.2</a>). | |
2028 | |
2029 | |
2030 <p> | |
2031 Most functions in the API can raise an error, | |
2032 for instance due to a memory allocation error. | |
2033 The documentation for each function indicates whether | |
2034 it can raise errors. | |
2035 | |
2036 | |
2037 <p> | |
2038 Inside a C function you can raise an error by calling <a href="#lua_error"><code>lua_error</code></a>. | |
2039 | |
2040 | |
2041 | |
2042 | |
2043 | |
2044 <h2>4.7 – <a name="4.7">Handling Yields in C</a></h2> | |
2045 | |
2046 <p> | |
2047 Internally, Lua uses the C <code>longjmp</code> facility to yield a coroutine. | |
2048 Therefore, if a C function <code>foo</code> calls an API function | |
2049 and this API function yields | |
2050 (directly or indirectly by calling another function that yields), | |
2051 Lua cannot return to <code>foo</code> any more, | |
2052 because the <code>longjmp</code> removes its frame from the C stack. | |
2053 | |
2054 | |
2055 <p> | |
2056 To avoid this kind of problem, | |
2057 Lua raises an error whenever it tries to yield across an API call, | |
2058 except for three functions: | |
2059 <a href="#lua_yieldk"><code>lua_yieldk</code></a>, <a href="#lua_callk"><code>lua_callk</code></a>, and <a href="#lua_pcallk"><code>lua_pcallk</code></a>. | |
2060 All those functions receive a <em>continuation function</em> | |
2061 (as a parameter named <code>k</code>) to continue execution after a yield. | |
2062 | |
2063 | |
2064 <p> | |
2065 We need to set some terminology to explain continuations. | |
2066 We have a C function called from Lua which we will call | |
2067 the <em>original function</em>. | |
2068 This original function then calls one of those three functions in the C API, | |
2069 which we will call the <em>callee function</em>, | |
2070 that then yields the current thread. | |
2071 (This can happen when the callee function is <a href="#lua_yieldk"><code>lua_yieldk</code></a>, | |
2072 or when the callee function is either <a href="#lua_callk"><code>lua_callk</code></a> or <a href="#lua_pcallk"><code>lua_pcallk</code></a> | |
2073 and the function called by them yields.) | |
2074 | |
2075 | |
2076 <p> | |
2077 Suppose the running thread yields while executing the callee function. | |
2078 After the thread resumes, | |
2079 it eventually will finish running the callee function. | |
2080 However, | |
2081 the callee function cannot return to the original function, | |
2082 because its frame in the C stack was destroyed by the yield. | |
2083 Instead, Lua calls a <em>continuation function</em>, | |
2084 which was given as an argument to the callee function. | |
2085 As the name implies, | |
2086 the continuation function should continue the task | |
2087 of the original function. | |
2088 | |
2089 | |
2090 <p> | |
2091 As an illustration, consider the following function: | |
2092 | |
2093 <pre> | |
2094 int original_function (lua_State *L) { | |
2095 ... /* code 1 */ | |
2096 status = lua_pcall(L, n, m, h); /* calls Lua */ | |
2097 ... /* code 2 */ | |
2098 } | |
2099 </pre><p> | |
2100 Now we want to allow | |
2101 the Lua code being run by <a href="#lua_pcall"><code>lua_pcall</code></a> to yield. | |
2102 First, we can rewrite our function like here: | |
2103 | |
2104 <pre> | |
2105 int k (lua_State *L, int status, lua_KContext ctx) { | |
2106 ... /* code 2 */ | |
2107 } | |
2108 | |
2109 int original_function (lua_State *L) { | |
2110 ... /* code 1 */ | |
2111 return k(L, lua_pcall(L, n, m, h), ctx); | |
2112 } | |
2113 </pre><p> | |
2114 In the above code, | |
2115 the new function <code>k</code> is a | |
2116 <em>continuation function</em> (with type <a href="#lua_KFunction"><code>lua_KFunction</code></a>), | |
2117 which should do all the work that the original function | |
2118 was doing after calling <a href="#lua_pcall"><code>lua_pcall</code></a>. | |
2119 Now, we must inform Lua that it must call <code>k</code> if the Lua code | |
2120 being executed by <a href="#lua_pcall"><code>lua_pcall</code></a> gets interrupted in some way | |
2121 (errors or yielding), | |
2122 so we rewrite the code as here, | |
2123 replacing <a href="#lua_pcall"><code>lua_pcall</code></a> by <a href="#lua_pcallk"><code>lua_pcallk</code></a>: | |
2124 | |
2125 <pre> | |
2126 int original_function (lua_State *L) { | |
2127 ... /* code 1 */ | |
2128 return k(L, lua_pcallk(L, n, m, h, ctx2, k), ctx1); | |
2129 } | |
2130 </pre><p> | |
2131 Note the external, explicit call to the continuation: | |
2132 Lua will call the continuation only if needed, that is, | |
2133 in case of errors or resuming after a yield. | |
2134 If the called function returns normally without ever yielding, | |
2135 <a href="#lua_pcallk"><code>lua_pcallk</code></a> (and <a href="#lua_callk"><code>lua_callk</code></a>) will also return normally. | |
2136 (Of course, instead of calling the continuation in that case, | |
2137 you can do the equivalent work directly inside the original function.) | |
2138 | |
2139 | |
2140 <p> | |
2141 Besides the Lua state, | |
2142 the continuation function has two other parameters: | |
2143 the final status of the call plus the context value (<code>ctx</code>) that | |
2144 was passed originally to <a href="#lua_pcallk"><code>lua_pcallk</code></a>. | |
2145 (Lua does not use this context value; | |
2146 it only passes this value from the original function to the | |
2147 continuation function.) | |
2148 For <a href="#lua_pcallk"><code>lua_pcallk</code></a>, | |
2149 the status is the same value that would be returned by <a href="#lua_pcallk"><code>lua_pcallk</code></a>, | |
2150 except that it is <a href="#pdf-LUA_YIELD"><code>LUA_YIELD</code></a> when being executed after a yield | |
2151 (instead of <a href="#pdf-LUA_OK"><code>LUA_OK</code></a>). | |
2152 For <a href="#lua_yieldk"><code>lua_yieldk</code></a> and <a href="#lua_callk"><code>lua_callk</code></a>, | |
2153 the status is always <a href="#pdf-LUA_YIELD"><code>LUA_YIELD</code></a> when Lua calls the continuation. | |
2154 (For these two functions, | |
2155 Lua will not call the continuation in case of errors, | |
2156 because they do not handle errors.) | |
2157 Similarly, when using <a href="#lua_callk"><code>lua_callk</code></a>, | |
2158 you should call the continuation function | |
2159 with <a href="#pdf-LUA_OK"><code>LUA_OK</code></a> as the status. | |
2160 (For <a href="#lua_yieldk"><code>lua_yieldk</code></a>, there is not much point in calling | |
2161 directly the continuation function, | |
2162 because <a href="#lua_yieldk"><code>lua_yieldk</code></a> usually does not return.) | |
2163 | |
2164 | |
2165 <p> | |
2166 Lua treats the continuation function as if it were the original function. | |
2167 The continuation function receives the same Lua stack | |
2168 from the original function, | |
2169 in the same state it would be if the callee function had returned. | |
2170 (For instance, | |
2171 after a <a href="#lua_callk"><code>lua_callk</code></a> the function and its arguments are | |
2172 removed from the stack and replaced by the results from the call.) | |
2173 It also has the same upvalues. | |
2174 Whatever it returns is handled by Lua as if it were the return | |
2175 of the original function. | |
2176 | |
2177 | |
2178 | |
2179 | |
2180 | |
2181 <h2>4.8 – <a name="4.8">Functions and Types</a></h2> | |
2182 | |
2183 <p> | |
2184 Here we list all functions and types from the C API in | |
2185 alphabetical order. | |
2186 Each function has an indicator like this: | |
2187 <span class="apii">[-o, +p, <em>x</em>]</span> | |
2188 | |
2189 | |
2190 <p> | |
2191 The first field, <code>o</code>, | |
2192 is how many elements the function pops from the stack. | |
2193 The second field, <code>p</code>, | |
2194 is how many elements the function pushes onto the stack. | |
2195 (Any function always pushes its results after popping its arguments.) | |
2196 A field in the form <code>x|y</code> means the function can push (or pop) | |
2197 <code>x</code> or <code>y</code> elements, | |
2198 depending on the situation; | |
2199 an interrogation mark '<code>?</code>' means that | |
2200 we cannot know how many elements the function pops/pushes | |
2201 by looking only at its arguments | |
2202 (e.g., they may depend on what is on the stack). | |
2203 The third field, <code>x</code>, | |
2204 tells whether the function may raise errors: | |
2205 '<code>-</code>' means the function never raises any error; | |
2206 '<code>e</code>' means the function may raise errors; | |
2207 '<code>v</code>' means the function may raise an error on purpose. | |
2208 | |
2209 | |
2210 | |
2211 <hr><h3><a name="lua_absindex"><code>lua_absindex</code></a></h3><p> | |
2212 <span class="apii">[-0, +0, –]</span> | |
2213 <pre>int lua_absindex (lua_State *L, int idx);</pre> | |
2214 | |
2215 <p> | |
2216 Converts the acceptable index <code>idx</code> into an absolute index | |
2217 (that is, one that does not depend on the stack top). | |
2218 | |
2219 | |
2220 | |
2221 | |
2222 | |
2223 <hr><h3><a name="lua_Alloc"><code>lua_Alloc</code></a></h3> | |
2224 <pre>typedef void * (*lua_Alloc) (void *ud, | |
2225 void *ptr, | |
2226 size_t osize, | |
2227 size_t nsize);</pre> | |
2228 | |
2229 <p> | |
2230 The type of the memory-allocation function used by Lua states. | |
2231 The allocator function must provide a | |
2232 functionality similar to <code>realloc</code>, | |
2233 but not exactly the same. | |
2234 Its arguments are | |
2235 <code>ud</code>, an opaque pointer passed to <a href="#lua_newstate"><code>lua_newstate</code></a>; | |
2236 <code>ptr</code>, a pointer to the block being allocated/reallocated/freed; | |
2237 <code>osize</code>, the original size of the block or some code about what | |
2238 is being allocated; | |
2239 and <code>nsize</code>, the new size of the block. | |
2240 | |
2241 | |
2242 <p> | |
2243 When <code>ptr</code> is not <code>NULL</code>, | |
2244 <code>osize</code> is the size of the block pointed by <code>ptr</code>, | |
2245 that is, the size given when it was allocated or reallocated. | |
2246 | |
2247 | |
2248 <p> | |
2249 When <code>ptr</code> is <code>NULL</code>, | |
2250 <code>osize</code> encodes the kind of object that Lua is allocating. | |
2251 <code>osize</code> is any of | |
2252 <a href="#pdf-LUA_TSTRING"><code>LUA_TSTRING</code></a>, <a href="#pdf-LUA_TTABLE"><code>LUA_TTABLE</code></a>, <a href="#pdf-LUA_TFUNCTION"><code>LUA_TFUNCTION</code></a>, | |
2253 <a href="#pdf-LUA_TUSERDATA"><code>LUA_TUSERDATA</code></a>, or <a href="#pdf-LUA_TTHREAD"><code>LUA_TTHREAD</code></a> when (and only when) | |
2254 Lua is creating a new object of that type. | |
2255 When <code>osize</code> is some other value, | |
2256 Lua is allocating memory for something else. | |
2257 | |
2258 | |
2259 <p> | |
2260 Lua assumes the following behavior from the allocator function: | |
2261 | |
2262 | |
2263 <p> | |
2264 When <code>nsize</code> is zero, | |
2265 the allocator must behave like <code>free</code> | |
2266 and return <code>NULL</code>. | |
2267 | |
2268 | |
2269 <p> | |
2270 When <code>nsize</code> is not zero, | |
2271 the allocator must behave like <code>realloc</code>. | |
2272 The allocator returns <code>NULL</code> | |
2273 if and only if it cannot fulfill the request. | |
2274 Lua assumes that the allocator never fails when | |
2275 <code>osize >= nsize</code>. | |
2276 | |
2277 | |
2278 <p> | |
2279 Here is a simple implementation for the allocator function. | |
2280 It is used in the auxiliary library by <a href="#luaL_newstate"><code>luaL_newstate</code></a>. | |
2281 | |
2282 <pre> | |
2283 static void *l_alloc (void *ud, void *ptr, size_t osize, | |
2284 size_t nsize) { | |
2285 (void)ud; (void)osize; /* not used */ | |
2286 if (nsize == 0) { | |
2287 free(ptr); | |
2288 return NULL; | |
2289 } | |
2290 else | |
2291 return realloc(ptr, nsize); | |
2292 } | |
2293 </pre><p> | |
2294 Note that Standard C ensures | |
2295 that <code>free(NULL)</code> has no effect and that | |
2296 <code>realloc(NULL,size)</code> is equivalent to <code>malloc(size)</code>. | |
2297 This code assumes that <code>realloc</code> does not fail when shrinking a block. | |
2298 (Although Standard C does not ensure this behavior, | |
2299 it seems to be a safe assumption.) | |
2300 | |
2301 | |
2302 | |
2303 | |
2304 | |
2305 <hr><h3><a name="lua_arith"><code>lua_arith</code></a></h3><p> | |
2306 <span class="apii">[-(2|1), +1, <em>e</em>]</span> | |
2307 <pre>void lua_arith (lua_State *L, int op);</pre> | |
2308 | |
2309 <p> | |
2310 Performs an arithmetic or bitwise operation over the two values | |
2311 (or one, in the case of negations) | |
2312 at the top of the stack, | |
2313 with the value at the top being the second operand, | |
2314 pops these values, and pushes the result of the operation. | |
2315 The function follows the semantics of the corresponding Lua operator | |
2316 (that is, it may call metamethods). | |
2317 | |
2318 | |
2319 <p> | |
2320 The value of <code>op</code> must be one of the following constants: | |
2321 | |
2322 <ul> | |
2323 | |
2324 <li><b><a name="pdf-LUA_OPADD"><code>LUA_OPADD</code></a>: </b> performs addition (<code>+</code>)</li> | |
2325 <li><b><a name="pdf-LUA_OPSUB"><code>LUA_OPSUB</code></a>: </b> performs subtraction (<code>-</code>)</li> | |
2326 <li><b><a name="pdf-LUA_OPMUL"><code>LUA_OPMUL</code></a>: </b> performs multiplication (<code>*</code>)</li> | |
2327 <li><b><a name="pdf-LUA_OPDIV"><code>LUA_OPDIV</code></a>: </b> performs float division (<code>/</code>)</li> | |
2328 <li><b><a name="pdf-LUA_OPIDIV"><code>LUA_OPIDIV</code></a>: </b> performs floor division (<code>//</code>)</li> | |
2329 <li><b><a name="pdf-LUA_OPMOD"><code>LUA_OPMOD</code></a>: </b> performs modulo (<code>%</code>)</li> | |
2330 <li><b><a name="pdf-LUA_OPPOW"><code>LUA_OPPOW</code></a>: </b> performs exponentiation (<code>^</code>)</li> | |
2331 <li><b><a name="pdf-LUA_OPUNM"><code>LUA_OPUNM</code></a>: </b> performs mathematical negation (unary <code>-</code>)</li> | |
2332 <li><b><a name="pdf-LUA_OPBNOT"><code>LUA_OPBNOT</code></a>: </b> performs bitwise negation (<code>~</code>)</li> | |
2333 <li><b><a name="pdf-LUA_OPBAND"><code>LUA_OPBAND</code></a>: </b> performs bitwise and (<code>&</code>)</li> | |
2334 <li><b><a name="pdf-LUA_OPBOR"><code>LUA_OPBOR</code></a>: </b> performs bitwise or (<code>|</code>)</li> | |
2335 <li><b><a name="pdf-LUA_OPBXOR"><code>LUA_OPBXOR</code></a>: </b> performs bitwise exclusive or (<code>~</code>)</li> | |
2336 <li><b><a name="pdf-LUA_OPSHL"><code>LUA_OPSHL</code></a>: </b> performs left shift (<code><<</code>)</li> | |
2337 <li><b><a name="pdf-LUA_OPSHR"><code>LUA_OPSHR</code></a>: </b> performs right shift (<code>>></code>)</li> | |
2338 | |
2339 </ul> | |
2340 | |
2341 | |
2342 | |
2343 | |
2344 <hr><h3><a name="lua_atpanic"><code>lua_atpanic</code></a></h3><p> | |
2345 <span class="apii">[-0, +0, –]</span> | |
2346 <pre>lua_CFunction lua_atpanic (lua_State *L, lua_CFunction panicf);</pre> | |
2347 | |
2348 <p> | |
2349 Sets a new panic function and returns the old one (see <a href="#4.6">§4.6</a>). | |
2350 | |
2351 | |
2352 | |
2353 | |
2354 | |
2355 <hr><h3><a name="lua_call"><code>lua_call</code></a></h3><p> | |
2356 <span class="apii">[-(nargs+1), +nresults, <em>e</em>]</span> | |
2357 <pre>void lua_call (lua_State *L, int nargs, int nresults);</pre> | |
2358 | |
2359 <p> | |
2360 Calls a function. | |
2361 | |
2362 | |
2363 <p> | |
2364 To call a function you must use the following protocol: | |
2365 first, the function to be called is pushed onto the stack; | |
2366 then, the arguments to the function are pushed | |
2367 in direct order; | |
2368 that is, the first argument is pushed first. | |
2369 Finally you call <a href="#lua_call"><code>lua_call</code></a>; | |
2370 <code>nargs</code> is the number of arguments that you pushed onto the stack. | |
2371 All arguments and the function value are popped from the stack | |
2372 when the function is called. | |
2373 The function results are pushed onto the stack when the function returns. | |
2374 The number of results is adjusted to <code>nresults</code>, | |
2375 unless <code>nresults</code> is <a name="pdf-LUA_MULTRET"><code>LUA_MULTRET</code></a>. | |
2376 In this case, all results from the function are pushed. | |
2377 Lua takes care that the returned values fit into the stack space. | |
2378 The function results are pushed onto the stack in direct order | |
2379 (the first result is pushed first), | |
2380 so that after the call the last result is on the top of the stack. | |
2381 | |
2382 | |
2383 <p> | |
2384 Any error inside the called function is propagated upwards | |
2385 (with a <code>longjmp</code>). | |
2386 | |
2387 | |
2388 <p> | |
2389 The following example shows how the host program can do the | |
2390 equivalent to this Lua code: | |
2391 | |
2392 <pre> | |
2393 a = f("how", t.x, 14) | |
2394 </pre><p> | |
2395 Here it is in C: | |
2396 | |
2397 <pre> | |
2398 lua_getglobal(L, "f"); /* function to be called */ | |
2399 lua_pushliteral(L, "how"); /* 1st argument */ | |
2400 lua_getglobal(L, "t"); /* table to be indexed */ | |
2401 lua_getfield(L, -1, "x"); /* push result of t.x (2nd arg) */ | |
2402 lua_remove(L, -2); /* remove 't' from the stack */ | |
2403 lua_pushinteger(L, 14); /* 3rd argument */ | |
2404 lua_call(L, 3, 1); /* call 'f' with 3 arguments and 1 result */ | |
2405 lua_setglobal(L, "a"); /* set global 'a' */ | |
2406 </pre><p> | |
2407 Note that the code above is <em>balanced</em>: | |
2408 at its end, the stack is back to its original configuration. | |
2409 This is considered good programming practice. | |
2410 | |
2411 | |
2412 | |
2413 | |
2414 | |
2415 <hr><h3><a name="lua_callk"><code>lua_callk</code></a></h3><p> | |
2416 <span class="apii">[-(nargs + 1), +nresults, <em>e</em>]</span> | |
2417 <pre>void lua_callk (lua_State *L, | |
2418 int nargs, | |
2419 int nresults, | |
2420 lua_KContext ctx, | |
2421 lua_KFunction k);</pre> | |
2422 | |
2423 <p> | |
2424 This function behaves exactly like <a href="#lua_call"><code>lua_call</code></a>, | |
2425 but allows the called function to yield (see <a href="#4.7">§4.7</a>). | |
2426 | |
2427 | |
2428 | |
2429 | |
2430 | |
2431 <hr><h3><a name="lua_CFunction"><code>lua_CFunction</code></a></h3> | |
2432 <pre>typedef int (*lua_CFunction) (lua_State *L);</pre> | |
2433 | |
2434 <p> | |
2435 Type for C functions. | |
2436 | |
2437 | |
2438 <p> | |
2439 In order to communicate properly with Lua, | |
2440 a C function must use the following protocol, | |
2441 which defines the way parameters and results are passed: | |
2442 a C function receives its arguments from Lua in its stack | |
2443 in direct order (the first argument is pushed first). | |
2444 So, when the function starts, | |
2445 <code>lua_gettop(L)</code> returns the number of arguments received by the function. | |
2446 The first argument (if any) is at index 1 | |
2447 and its last argument is at index <code>lua_gettop(L)</code>. | |
2448 To return values to Lua, a C function just pushes them onto the stack, | |
2449 in direct order (the first result is pushed first), | |
2450 and returns the number of results. | |
2451 Any other value in the stack below the results will be properly | |
2452 discarded by Lua. | |
2453 Like a Lua function, a C function called by Lua can also return | |
2454 many results. | |
2455 | |
2456 | |
2457 <p> | |
2458 As an example, the following function receives a variable number | |
2459 of numerical arguments and returns their average and their sum: | |
2460 | |
2461 <pre> | |
2462 static int foo (lua_State *L) { | |
2463 int n = lua_gettop(L); /* number of arguments */ | |
2464 lua_Number sum = 0.0; | |
2465 int i; | |
2466 for (i = 1; i <= n; i++) { | |
2467 if (!lua_isnumber(L, i)) { | |
2468 lua_pushliteral(L, "incorrect argument"); | |
2469 lua_error(L); | |
2470 } | |
2471 sum += lua_tonumber(L, i); | |
2472 } | |
2473 lua_pushnumber(L, sum/n); /* first result */ | |
2474 lua_pushnumber(L, sum); /* second result */ | |
2475 return 2; /* number of results */ | |
2476 } | |
2477 </pre> | |
2478 | |
2479 | |
2480 | |
2481 | |
2482 <hr><h3><a name="lua_checkstack"><code>lua_checkstack</code></a></h3><p> | |
2483 <span class="apii">[-0, +0, –]</span> | |
2484 <pre>int lua_checkstack (lua_State *L, int n);</pre> | |
2485 | |
2486 <p> | |
2487 Ensures that the stack has space for at least <code>n</code> extra slots. | |
2488 It returns false if it cannot fulfill the request, | |
2489 either because it would cause the stack | |
2490 to be larger than a fixed maximum size | |
2491 (typically at least several thousand elements) or | |
2492 because it cannot allocate memory for the extra space. | |
2493 This function never shrinks the stack; | |
2494 if the stack is already larger than the new size, | |
2495 it is left unchanged. | |
2496 | |
2497 | |
2498 | |
2499 | |
2500 | |
2501 <hr><h3><a name="lua_close"><code>lua_close</code></a></h3><p> | |
2502 <span class="apii">[-0, +0, –]</span> | |
2503 <pre>void lua_close (lua_State *L);</pre> | |
2504 | |
2505 <p> | |
2506 Destroys all objects in the given Lua state | |
2507 (calling the corresponding garbage-collection metamethods, if any) | |
2508 and frees all dynamic memory used by this state. | |
2509 On several platforms, you may not need to call this function, | |
2510 because all resources are naturally released when the host program ends. | |
2511 On the other hand, long-running programs that create multiple states, | |
2512 such as daemons or web servers, | |
2513 will probably need to close states as soon as they are not needed. | |
2514 | |
2515 | |
2516 | |
2517 | |
2518 | |
2519 <hr><h3><a name="lua_compare"><code>lua_compare</code></a></h3><p> | |
2520 <span class="apii">[-0, +0, <em>e</em>]</span> | |
2521 <pre>int lua_compare (lua_State *L, int index1, int index2, int op);</pre> | |
2522 | |
2523 <p> | |
2524 Compares two Lua values. | |
2525 Returns 1 if the value at index <code>index1</code> satisfies <code>op</code> | |
2526 when compared with the value at index <code>index2</code>, | |
2527 following the semantics of the corresponding Lua operator | |
2528 (that is, it may call metamethods). | |
2529 Otherwise returns 0. | |
2530 Also returns 0 if any of the indices is not valid. | |
2531 | |
2532 | |
2533 <p> | |
2534 The value of <code>op</code> must be one of the following constants: | |
2535 | |
2536 <ul> | |
2537 | |
2538 <li><b><a name="pdf-LUA_OPEQ"><code>LUA_OPEQ</code></a>: </b> compares for equality (<code>==</code>)</li> | |
2539 <li><b><a name="pdf-LUA_OPLT"><code>LUA_OPLT</code></a>: </b> compares for less than (<code><</code>)</li> | |
2540 <li><b><a name="pdf-LUA_OPLE"><code>LUA_OPLE</code></a>: </b> compares for less or equal (<code><=</code>)</li> | |
2541 | |
2542 </ul> | |
2543 | |
2544 | |
2545 | |
2546 | |
2547 <hr><h3><a name="lua_concat"><code>lua_concat</code></a></h3><p> | |
2548 <span class="apii">[-n, +1, <em>e</em>]</span> | |
2549 <pre>void lua_concat (lua_State *L, int n);</pre> | |
2550 | |
2551 <p> | |
2552 Concatenates the <code>n</code> values at the top of the stack, | |
2553 pops them, and leaves the result at the top. | |
2554 If <code>n</code> is 1, the result is the single value on the stack | |
2555 (that is, the function does nothing); | |
2556 if <code>n</code> is 0, the result is the empty string. | |
2557 Concatenation is performed following the usual semantics of Lua | |
2558 (see <a href="#3.4.6">§3.4.6</a>). | |
2559 | |
2560 | |
2561 | |
2562 | |
2563 | |
2564 <hr><h3><a name="lua_copy"><code>lua_copy</code></a></h3><p> | |
2565 <span class="apii">[-0, +0, –]</span> | |
2566 <pre>void lua_copy (lua_State *L, int fromidx, int toidx);</pre> | |
2567 | |
2568 <p> | |
2569 Copies the element at index <code>fromidx</code> | |
2570 into the valid index <code>toidx</code>, | |
2571 replacing the value at that position. | |
2572 Values at other positions are not affected. | |
2573 | |
2574 | |
2575 | |
2576 | |
2577 | |
2578 <hr><h3><a name="lua_createtable"><code>lua_createtable</code></a></h3><p> | |
2579 <span class="apii">[-0, +1, <em>e</em>]</span> | |
2580 <pre>void lua_createtable (lua_State *L, int narr, int nrec);</pre> | |
2581 | |
2582 <p> | |
2583 Creates a new empty table and pushes it onto the stack. | |
2584 Parameter <code>narr</code> is a hint for how many elements the table | |
2585 will have as a sequence; | |
2586 parameter <code>nrec</code> is a hint for how many other elements | |
2587 the table will have. | |
2588 Lua may use these hints to preallocate memory for the new table. | |
2589 This pre-allocation is useful for performance when you know in advance | |
2590 how many elements the table will have. | |
2591 Otherwise you can use the function <a href="#lua_newtable"><code>lua_newtable</code></a>. | |
2592 | |
2593 | |
2594 | |
2595 | |
2596 | |
2597 <hr><h3><a name="lua_dump"><code>lua_dump</code></a></h3><p> | |
2598 <span class="apii">[-0, +0, <em>e</em>]</span> | |
2599 <pre>int lua_dump (lua_State *L, | |
2600 lua_Writer writer, | |
2601 void *data, | |
2602 int strip);</pre> | |
2603 | |
2604 <p> | |
2605 Dumps a function as a binary chunk. | |
2606 Receives a Lua function on the top of the stack | |
2607 and produces a binary chunk that, | |
2608 if loaded again, | |
2609 results in a function equivalent to the one dumped. | |
2610 As it produces parts of the chunk, | |
2611 <a href="#lua_dump"><code>lua_dump</code></a> calls function <code>writer</code> (see <a href="#lua_Writer"><code>lua_Writer</code></a>) | |
2612 with the given <code>data</code> | |
2613 to write them. | |
2614 | |
2615 | |
2616 <p> | |
2617 If <code>strip</code> is true, | |
2618 the binary representation is created without debug information | |
2619 about the function. | |
2620 | |
2621 | |
2622 <p> | |
2623 The value returned is the error code returned by the last | |
2624 call to the writer; | |
2625 0 means no errors. | |
2626 | |
2627 | |
2628 <p> | |
2629 This function does not pop the Lua function from the stack. | |
2630 | |
2631 | |
2632 | |
2633 | |
2634 | |
2635 <hr><h3><a name="lua_error"><code>lua_error</code></a></h3><p> | |
2636 <span class="apii">[-1, +0, <em>v</em>]</span> | |
2637 <pre>int lua_error (lua_State *L);</pre> | |
2638 | |
2639 <p> | |
2640 Generates a Lua error, | |
2641 using the value at the top of the stack as the error object. | |
2642 This function does a long jump, | |
2643 and therefore never returns | |
2644 (see <a href="#luaL_error"><code>luaL_error</code></a>). | |
2645 | |
2646 | |
2647 | |
2648 | |
2649 | |
2650 <hr><h3><a name="lua_gc"><code>lua_gc</code></a></h3><p> | |
2651 <span class="apii">[-0, +0, <em>e</em>]</span> | |
2652 <pre>int lua_gc (lua_State *L, int what, int data);</pre> | |
2653 | |
2654 <p> | |
2655 Controls the garbage collector. | |
2656 | |
2657 | |
2658 <p> | |
2659 This function performs several tasks, | |
2660 according to the value of the parameter <code>what</code>: | |
2661 | |
2662 <ul> | |
2663 | |
2664 <li><b><code>LUA_GCSTOP</code>: </b> | |
2665 stops the garbage collector. | |
2666 </li> | |
2667 | |
2668 <li><b><code>LUA_GCRESTART</code>: </b> | |
2669 restarts the garbage collector. | |
2670 </li> | |
2671 | |
2672 <li><b><code>LUA_GCCOLLECT</code>: </b> | |
2673 performs a full garbage-collection cycle. | |
2674 </li> | |
2675 | |
2676 <li><b><code>LUA_GCCOUNT</code>: </b> | |
2677 returns the current amount of memory (in Kbytes) in use by Lua. | |
2678 </li> | |
2679 | |
2680 <li><b><code>LUA_GCCOUNTB</code>: </b> | |
2681 returns the remainder of dividing the current amount of bytes of | |
2682 memory in use by Lua by 1024. | |
2683 </li> | |
2684 | |
2685 <li><b><code>LUA_GCSTEP</code>: </b> | |
2686 performs an incremental step of garbage collection. | |
2687 </li> | |
2688 | |
2689 <li><b><code>LUA_GCSETPAUSE</code>: </b> | |
2690 sets <code>data</code> as the new value | |
2691 for the <em>pause</em> of the collector (see <a href="#2.5">§2.5</a>) | |
2692 and returns the previous value of the pause. | |
2693 </li> | |
2694 | |
2695 <li><b><code>LUA_GCSETSTEPMUL</code>: </b> | |
2696 sets <code>data</code> as the new value for the <em>step multiplier</em> of | |
2697 the collector (see <a href="#2.5">§2.5</a>) | |
2698 and returns the previous value of the step multiplier. | |
2699 </li> | |
2700 | |
2701 <li><b><code>LUA_GCISRUNNING</code>: </b> | |
2702 returns a boolean that tells whether the collector is running | |
2703 (i.e., not stopped). | |
2704 </li> | |
2705 | |
2706 </ul> | |
2707 | |
2708 <p> | |
2709 For more details about these options, | |
2710 see <a href="#pdf-collectgarbage"><code>collectgarbage</code></a>. | |
2711 | |
2712 | |
2713 | |
2714 | |
2715 | |
2716 <hr><h3><a name="lua_getallocf"><code>lua_getallocf</code></a></h3><p> | |
2717 <span class="apii">[-0, +0, –]</span> | |
2718 <pre>lua_Alloc lua_getallocf (lua_State *L, void **ud);</pre> | |
2719 | |
2720 <p> | |
2721 Returns the memory-allocation function of a given state. | |
2722 If <code>ud</code> is not <code>NULL</code>, Lua stores in <code>*ud</code> the | |
2723 opaque pointer given when the memory-allocator function was set. | |
2724 | |
2725 | |
2726 | |
2727 | |
2728 | |
2729 <hr><h3><a name="lua_getfield"><code>lua_getfield</code></a></h3><p> | |
2730 <span class="apii">[-0, +1, <em>e</em>]</span> | |
2731 <pre>int lua_getfield (lua_State *L, int index, const char *k);</pre> | |
2732 | |
2733 <p> | |
2734 Pushes onto the stack the value <code>t[k]</code>, | |
2735 where <code>t</code> is the value at the given index. | |
2736 As in Lua, this function may trigger a metamethod | |
2737 for the "index" event (see <a href="#2.4">§2.4</a>). | |
2738 | |
2739 | |
2740 <p> | |
2741 Returns the type of the pushed value. | |
2742 | |
2743 | |
2744 | |
2745 | |
2746 | |
2747 <hr><h3><a name="lua_getextraspace"><code>lua_getextraspace</code></a></h3><p> | |
2748 <span class="apii">[-0, +0, –]</span> | |
2749 <pre>void *lua_getextraspace (lua_State *L);</pre> | |
2750 | |
2751 <p> | |
2752 Returns a pointer to a raw memory area associated with the | |
2753 given Lua state. | |
2754 The application can use this area for any purpose; | |
2755 Lua does not use it for anything. | |
2756 | |
2757 | |
2758 <p> | |
2759 Each new thread has this area initialized with a copy | |
2760 of the area of the main thread. | |
2761 | |
2762 | |
2763 <p> | |
2764 By default, this area has the size of a pointer to void, | |
2765 but you can recompile Lua with a different size for this area. | |
2766 (See <code>LUA_EXTRASPACE</code> in <code>luaconf.h</code>.) | |
2767 | |
2768 | |
2769 | |
2770 | |
2771 | |
2772 <hr><h3><a name="lua_getglobal"><code>lua_getglobal</code></a></h3><p> | |
2773 <span class="apii">[-0, +1, <em>e</em>]</span> | |
2774 <pre>int lua_getglobal (lua_State *L, const char *name);</pre> | |
2775 | |
2776 <p> | |
2777 Pushes onto the stack the value of the global <code>name</code>. | |
2778 Returns the type of that value. | |
2779 | |
2780 | |
2781 | |
2782 | |
2783 | |
2784 <hr><h3><a name="lua_geti"><code>lua_geti</code></a></h3><p> | |
2785 <span class="apii">[-0, +1, <em>e</em>]</span> | |
2786 <pre>int lua_geti (lua_State *L, int index, lua_Integer i);</pre> | |
2787 | |
2788 <p> | |
2789 Pushes onto the stack the value <code>t[i]</code>, | |
2790 where <code>t</code> is the value at the given index. | |
2791 As in Lua, this function may trigger a metamethod | |
2792 for the "index" event (see <a href="#2.4">§2.4</a>). | |
2793 | |
2794 | |
2795 <p> | |
2796 Returns the type of the pushed value. | |
2797 | |
2798 | |
2799 | |
2800 | |
2801 | |
2802 <hr><h3><a name="lua_getmetatable"><code>lua_getmetatable</code></a></h3><p> | |
2803 <span class="apii">[-0, +(0|1), –]</span> | |
2804 <pre>int lua_getmetatable (lua_State *L, int index);</pre> | |
2805 | |
2806 <p> | |
2807 If the value at the given index has a metatable, | |
2808 the function pushes that metatable onto the stack and returns 1. | |
2809 Otherwise, | |
2810 the function returns 0 and pushes nothing on the stack. | |
2811 | |
2812 | |
2813 | |
2814 | |
2815 | |
2816 <hr><h3><a name="lua_gettable"><code>lua_gettable</code></a></h3><p> | |
2817 <span class="apii">[-1, +1, <em>e</em>]</span> | |
2818 <pre>int lua_gettable (lua_State *L, int index);</pre> | |
2819 | |
2820 <p> | |
2821 Pushes onto the stack the value <code>t[k]</code>, | |
2822 where <code>t</code> is the value at the given index | |
2823 and <code>k</code> is the value at the top of the stack. | |
2824 | |
2825 | |
2826 <p> | |
2827 This function pops the key from the stack, | |
2828 pushing the resulting value in its place. | |
2829 As in Lua, this function may trigger a metamethod | |
2830 for the "index" event (see <a href="#2.4">§2.4</a>). | |
2831 | |
2832 | |
2833 <p> | |
2834 Returns the type of the pushed value. | |
2835 | |
2836 | |
2837 | |
2838 | |
2839 | |
2840 <hr><h3><a name="lua_gettop"><code>lua_gettop</code></a></h3><p> | |
2841 <span class="apii">[-0, +0, –]</span> | |
2842 <pre>int lua_gettop (lua_State *L);</pre> | |
2843 | |
2844 <p> | |
2845 Returns the index of the top element in the stack. | |
2846 Because indices start at 1, | |
2847 this result is equal to the number of elements in the stack; | |
2848 in particular, 0 means an empty stack. | |
2849 | |
2850 | |
2851 | |
2852 | |
2853 | |
2854 <hr><h3><a name="lua_getuservalue"><code>lua_getuservalue</code></a></h3><p> | |
2855 <span class="apii">[-0, +1, –]</span> | |
2856 <pre>int lua_getuservalue (lua_State *L, int index);</pre> | |
2857 | |
2858 <p> | |
2859 Pushes onto the stack the Lua value associated with the userdata | |
2860 at the given index. | |
2861 | |
2862 | |
2863 <p> | |
2864 Returns the type of the pushed value. | |
2865 | |
2866 | |
2867 | |
2868 | |
2869 | |
2870 <hr><h3><a name="lua_insert"><code>lua_insert</code></a></h3><p> | |
2871 <span class="apii">[-1, +1, –]</span> | |
2872 <pre>void lua_insert (lua_State *L, int index);</pre> | |
2873 | |
2874 <p> | |
2875 Moves the top element into the given valid index, | |
2876 shifting up the elements above this index to open space. | |
2877 This function cannot be called with a pseudo-index, | |
2878 because a pseudo-index is not an actual stack position. | |
2879 | |
2880 | |
2881 | |
2882 | |
2883 | |
2884 <hr><h3><a name="lua_Integer"><code>lua_Integer</code></a></h3> | |
2885 <pre>typedef ... lua_Integer;</pre> | |
2886 | |
2887 <p> | |
2888 The type of integers in Lua. | |
2889 | |
2890 | |
2891 <p> | |
2892 By default this type is <code>long long</code>, | |
2893 (usually a 64-bit two-complement integer), | |
2894 but that can be changed to <code>long</code> or <code>int</code> | |
2895 (usually a 32-bit two-complement integer). | |
2896 (See <code>LUA_INT</code> in <code>luaconf.h</code>.) | |
2897 | |
2898 | |
2899 <p> | |
2900 Lua also defines the constants | |
2901 <a name="pdf-LUA_MININTEGER"><code>LUA_MININTEGER</code></a> and <a name="pdf-LUA_MAXINTEGER"><code>LUA_MAXINTEGER</code></a>, | |
2902 with the minimum and the maximum values that fit in this type. | |
2903 | |
2904 | |
2905 | |
2906 | |
2907 | |
2908 <hr><h3><a name="lua_isboolean"><code>lua_isboolean</code></a></h3><p> | |
2909 <span class="apii">[-0, +0, –]</span> | |
2910 <pre>int lua_isboolean (lua_State *L, int index);</pre> | |
2911 | |
2912 <p> | |
2913 Returns 1 if the value at the given index is a boolean, | |
2914 and 0 otherwise. | |
2915 | |
2916 | |
2917 | |
2918 | |
2919 | |
2920 <hr><h3><a name="lua_iscfunction"><code>lua_iscfunction</code></a></h3><p> | |
2921 <span class="apii">[-0, +0, –]</span> | |
2922 <pre>int lua_iscfunction (lua_State *L, int index);</pre> | |
2923 | |
2924 <p> | |
2925 Returns 1 if the value at the given index is a C function, | |
2926 and 0 otherwise. | |
2927 | |
2928 | |
2929 | |
2930 | |
2931 | |
2932 <hr><h3><a name="lua_isfunction"><code>lua_isfunction</code></a></h3><p> | |
2933 <span class="apii">[-0, +0, –]</span> | |
2934 <pre>int lua_isfunction (lua_State *L, int index);</pre> | |
2935 | |
2936 <p> | |
2937 Returns 1 if the value at the given index is a function | |
2938 (either C or Lua), and 0 otherwise. | |
2939 | |
2940 | |
2941 | |
2942 | |
2943 | |
2944 <hr><h3><a name="lua_isinteger"><code>lua_isinteger</code></a></h3><p> | |
2945 <span class="apii">[-0, +0, –]</span> | |
2946 <pre>int lua_isinteger (lua_State *L, int index);</pre> | |
2947 | |
2948 <p> | |
2949 Returns 1 if the value at the given index is an integer | |
2950 (that is, the value is a number and is represented as an integer), | |
2951 and 0 otherwise. | |
2952 | |
2953 | |
2954 | |
2955 | |
2956 | |
2957 <hr><h3><a name="lua_islightuserdata"><code>lua_islightuserdata</code></a></h3><p> | |
2958 <span class="apii">[-0, +0, –]</span> | |
2959 <pre>int lua_islightuserdata (lua_State *L, int index);</pre> | |
2960 | |
2961 <p> | |
2962 Returns 1 if the value at the given index is a light userdata, | |
2963 and 0 otherwise. | |
2964 | |
2965 | |
2966 | |
2967 | |
2968 | |
2969 <hr><h3><a name="lua_isnil"><code>lua_isnil</code></a></h3><p> | |
2970 <span class="apii">[-0, +0, –]</span> | |
2971 <pre>int lua_isnil (lua_State *L, int index);</pre> | |
2972 | |
2973 <p> | |
2974 Returns 1 if the value at the given index is <b>nil</b>, | |
2975 and 0 otherwise. | |
2976 | |
2977 | |
2978 | |
2979 | |
2980 | |
2981 <hr><h3><a name="lua_isnone"><code>lua_isnone</code></a></h3><p> | |
2982 <span class="apii">[-0, +0, –]</span> | |
2983 <pre>int lua_isnone (lua_State *L, int index);</pre> | |
2984 | |
2985 <p> | |
2986 Returns 1 if the given index is not valid, | |
2987 and 0 otherwise. | |
2988 | |
2989 | |
2990 | |
2991 | |
2992 | |
2993 <hr><h3><a name="lua_isnoneornil"><code>lua_isnoneornil</code></a></h3><p> | |
2994 <span class="apii">[-0, +0, –]</span> | |
2995 <pre>int lua_isnoneornil (lua_State *L, int index);</pre> | |
2996 | |
2997 <p> | |
2998 Returns 1 if the given index is not valid | |
2999 or if the value at this index is <b>nil</b>, | |
3000 and 0 otherwise. | |
3001 | |
3002 | |
3003 | |
3004 | |
3005 | |
3006 <hr><h3><a name="lua_isnumber"><code>lua_isnumber</code></a></h3><p> | |
3007 <span class="apii">[-0, +0, –]</span> | |
3008 <pre>int lua_isnumber (lua_State *L, int index);</pre> | |
3009 | |
3010 <p> | |
3011 Returns 1 if the value at the given index is a number | |
3012 or a string convertible to a number, | |
3013 and 0 otherwise. | |
3014 | |
3015 | |
3016 | |
3017 | |
3018 | |
3019 <hr><h3><a name="lua_isstring"><code>lua_isstring</code></a></h3><p> | |
3020 <span class="apii">[-0, +0, –]</span> | |
3021 <pre>int lua_isstring (lua_State *L, int index);</pre> | |
3022 | |
3023 <p> | |
3024 Returns 1 if the value at the given index is a string | |
3025 or a number (which is always convertible to a string), | |
3026 and 0 otherwise. | |
3027 | |
3028 | |
3029 | |
3030 | |
3031 | |
3032 <hr><h3><a name="lua_istable"><code>lua_istable</code></a></h3><p> | |
3033 <span class="apii">[-0, +0, –]</span> | |
3034 <pre>int lua_istable (lua_State *L, int index);</pre> | |
3035 | |
3036 <p> | |
3037 Returns 1 if the value at the given index is a table, | |
3038 and 0 otherwise. | |
3039 | |
3040 | |
3041 | |
3042 | |
3043 | |
3044 <hr><h3><a name="lua_isthread"><code>lua_isthread</code></a></h3><p> | |
3045 <span class="apii">[-0, +0, –]</span> | |
3046 <pre>int lua_isthread (lua_State *L, int index);</pre> | |
3047 | |
3048 <p> | |
3049 Returns 1 if the value at the given index is a thread, | |
3050 and 0 otherwise. | |
3051 | |
3052 | |
3053 | |
3054 | |
3055 | |
3056 <hr><h3><a name="lua_isuserdata"><code>lua_isuserdata</code></a></h3><p> | |
3057 <span class="apii">[-0, +0, –]</span> | |
3058 <pre>int lua_isuserdata (lua_State *L, int index);</pre> | |
3059 | |
3060 <p> | |
3061 Returns 1 if the value at the given index is a userdata | |
3062 (either full or light), and 0 otherwise. | |
3063 | |
3064 | |
3065 | |
3066 | |
3067 | |
3068 <hr><h3><a name="lua_isyieldable"><code>lua_isyieldable</code></a></h3><p> | |
3069 <span class="apii">[-0, +0, –]</span> | |
3070 <pre>int lua_isyieldable (lua_State *L);</pre> | |
3071 | |
3072 <p> | |
3073 Returns 1 if the given coroutine can yield, | |
3074 and 0 otherwise. | |
3075 | |
3076 | |
3077 | |
3078 | |
3079 | |
3080 <hr><h3><a name="lua_KContext"><code>lua_KContext</code></a></h3> | |
3081 <pre>typedef ... lua_KContext;</pre> | |
3082 | |
3083 <p> | |
3084 The type for continuation-function contexts. | |
3085 It must be a numerical type. | |
3086 This type is defined as <code>intptr_t</code> | |
3087 when <code>intptr_t</code> is available, | |
3088 so that it can store pointers too. | |
3089 Otherwise, it is defined as <code>ptrdiff_t</code>. | |
3090 | |
3091 | |
3092 | |
3093 | |
3094 | |
3095 <hr><h3><a name="lua_KFunction"><code>lua_KFunction</code></a></h3> | |
3096 <pre>typedef int (*lua_KFunction) (lua_State *L, int status, lua_KContext ctx);</pre> | |
3097 | |
3098 <p> | |
3099 Type for continuation functions (see <a href="#4.7">§4.7</a>). | |
3100 | |
3101 | |
3102 | |
3103 | |
3104 | |
3105 <hr><h3><a name="lua_len"><code>lua_len</code></a></h3><p> | |
3106 <span class="apii">[-0, +1, <em>e</em>]</span> | |
3107 <pre>void lua_len (lua_State *L, int index);</pre> | |
3108 | |
3109 <p> | |
3110 Returns the length of the value at the given index. | |
3111 It is equivalent to the '<code>#</code>' operator in Lua (see <a href="#3.4.7">§3.4.7</a>) and | |
3112 may trigger a metamethod for the "length" event (see <a href="#2.4">§2.4</a>). | |
3113 The result is pushed on the stack. | |
3114 | |
3115 | |
3116 | |
3117 | |
3118 | |
3119 <hr><h3><a name="lua_load"><code>lua_load</code></a></h3><p> | |
3120 <span class="apii">[-0, +1, –]</span> | |
3121 <pre>int lua_load (lua_State *L, | |
3122 lua_Reader reader, | |
3123 void *data, | |
3124 const char *chunkname, | |
3125 const char *mode);</pre> | |
3126 | |
3127 <p> | |
3128 Loads a Lua chunk without running it. | |
3129 If there are no errors, | |
3130 <code>lua_load</code> pushes the compiled chunk as a Lua | |
3131 function on top of the stack. | |
3132 Otherwise, it pushes an error message. | |
3133 | |
3134 | |
3135 <p> | |
3136 The return values of <code>lua_load</code> are: | |
3137 | |
3138 <ul> | |
3139 | |
3140 <li><b><a href="#pdf-LUA_OK"><code>LUA_OK</code></a>: </b> no errors;</li> | |
3141 | |
3142 <li><b><a name="pdf-LUA_ERRSYNTAX"><code>LUA_ERRSYNTAX</code></a>: </b> | |
3143 syntax error during precompilation;</li> | |
3144 | |
3145 <li><b><a href="#pdf-LUA_ERRMEM"><code>LUA_ERRMEM</code></a>: </b> | |
3146 memory allocation error;</li> | |
3147 | |
3148 <li><b><a href="#pdf-LUA_ERRGCMM"><code>LUA_ERRGCMM</code></a>: </b> | |
3149 error while running a <code>__gc</code> metamethod. | |
3150 (This error has no relation with the chunk being loaded. | |
3151 It is generated by the garbage collector.) | |
3152 </li> | |
3153 | |
3154 </ul> | |
3155 | |
3156 <p> | |
3157 The <code>lua_load</code> function uses a user-supplied <code>reader</code> function | |
3158 to read the chunk (see <a href="#lua_Reader"><code>lua_Reader</code></a>). | |
3159 The <code>data</code> argument is an opaque value passed to the reader function. | |
3160 | |
3161 | |
3162 <p> | |
3163 The <code>chunkname</code> argument gives a name to the chunk, | |
3164 which is used for error messages and in debug information (see <a href="#4.9">§4.9</a>). | |
3165 | |
3166 | |
3167 <p> | |
3168 <code>lua_load</code> automatically detects whether the chunk is text or binary | |
3169 and loads it accordingly (see program <code>luac</code>). | |
3170 The string <code>mode</code> works as in function <a href="#pdf-load"><code>load</code></a>, | |
3171 with the addition that | |
3172 a <code>NULL</code> value is equivalent to the string "<code>bt</code>". | |
3173 | |
3174 | |
3175 <p> | |
3176 <code>lua_load</code> uses the stack internally, | |
3177 so the reader function must always leave the stack | |
3178 unmodified when returning. | |
3179 | |
3180 | |
3181 <p> | |
3182 If the resulting function has upvalues, | |
3183 its first upvalue is set to the value of the global environment | |
3184 stored at index <code>LUA_RIDX_GLOBALS</code> in the registry (see <a href="#4.5">§4.5</a>). | |
3185 When loading main chunks, | |
3186 this upvalue will be the <code>_ENV</code> variable (see <a href="#2.2">§2.2</a>). | |
3187 Other upvalues are initialized with <b>nil</b>. | |
3188 | |
3189 | |
3190 | |
3191 | |
3192 | |
3193 <hr><h3><a name="lua_newstate"><code>lua_newstate</code></a></h3><p> | |
3194 <span class="apii">[-0, +0, –]</span> | |
3195 <pre>lua_State *lua_newstate (lua_Alloc f, void *ud);</pre> | |
3196 | |
3197 <p> | |
3198 Creates a new thread running in a new, independent state. | |
3199 Returns <code>NULL</code> if it cannot create the thread or the state | |
3200 (due to lack of memory). | |
3201 The argument <code>f</code> is the allocator function; | |
3202 Lua does all memory allocation for this state through this function. | |
3203 The second argument, <code>ud</code>, is an opaque pointer that Lua | |
3204 passes to the allocator in every call. | |
3205 | |
3206 | |
3207 | |
3208 | |
3209 | |
3210 <hr><h3><a name="lua_newtable"><code>lua_newtable</code></a></h3><p> | |
3211 <span class="apii">[-0, +1, <em>e</em>]</span> | |
3212 <pre>void lua_newtable (lua_State *L);</pre> | |
3213 | |
3214 <p> | |
3215 Creates a new empty table and pushes it onto the stack. | |
3216 It is equivalent to <code>lua_createtable(L, 0, 0)</code>. | |
3217 | |
3218 | |
3219 | |
3220 | |
3221 | |
3222 <hr><h3><a name="lua_newthread"><code>lua_newthread</code></a></h3><p> | |
3223 <span class="apii">[-0, +1, <em>e</em>]</span> | |
3224 <pre>lua_State *lua_newthread (lua_State *L);</pre> | |
3225 | |
3226 <p> | |
3227 Creates a new thread, pushes it on the stack, | |
3228 and returns a pointer to a <a href="#lua_State"><code>lua_State</code></a> that represents this new thread. | |
3229 The new thread returned by this function shares with the original thread | |
3230 its global environment, | |
3231 but has an independent execution stack. | |
3232 | |
3233 | |
3234 <p> | |
3235 There is no explicit function to close or to destroy a thread. | |
3236 Threads are subject to garbage collection, | |
3237 like any Lua object. | |
3238 | |
3239 | |
3240 | |
3241 | |
3242 | |
3243 <hr><h3><a name="lua_newuserdata"><code>lua_newuserdata</code></a></h3><p> | |
3244 <span class="apii">[-0, +1, <em>e</em>]</span> | |
3245 <pre>void *lua_newuserdata (lua_State *L, size_t size);</pre> | |
3246 | |
3247 <p> | |
3248 This function allocates a new block of memory with the given size, | |
3249 pushes onto the stack a new full userdata with the block address, | |
3250 and returns this address. | |
3251 The host program can freely use this memory. | |
3252 | |
3253 | |
3254 | |
3255 | |
3256 | |
3257 <hr><h3><a name="lua_next"><code>lua_next</code></a></h3><p> | |
3258 <span class="apii">[-1, +(2|0), <em>e</em>]</span> | |
3259 <pre>int lua_next (lua_State *L, int index);</pre> | |
3260 | |
3261 <p> | |
3262 Pops a key from the stack, | |
3263 and pushes a key–value pair from the table at the given index | |
3264 (the "next" pair after the given key). | |
3265 If there are no more elements in the table, | |
3266 then <a href="#lua_next"><code>lua_next</code></a> returns 0 (and pushes nothing). | |
3267 | |
3268 | |
3269 <p> | |
3270 A typical traversal looks like this: | |
3271 | |
3272 <pre> | |
3273 /* table is in the stack at index 't' */ | |
3274 lua_pushnil(L); /* first key */ | |
3275 while (lua_next(L, t) != 0) { | |
3276 /* uses 'key' (at index -2) and 'value' (at index -1) */ | |
3277 printf("%s - %s\n", | |
3278 lua_typename(L, lua_type(L, -2)), | |
3279 lua_typename(L, lua_type(L, -1))); | |
3280 /* removes 'value'; keeps 'key' for next iteration */ | |
3281 lua_pop(L, 1); | |
3282 } | |
3283 </pre> | |
3284 | |
3285 <p> | |
3286 While traversing a table, | |
3287 do not call <a href="#lua_tolstring"><code>lua_tolstring</code></a> directly on a key, | |
3288 unless you know that the key is actually a string. | |
3289 Recall that <a href="#lua_tolstring"><code>lua_tolstring</code></a> may change | |
3290 the value at the given index; | |
3291 this confuses the next call to <a href="#lua_next"><code>lua_next</code></a>. | |
3292 | |
3293 | |
3294 <p> | |
3295 See function <a href="#pdf-next"><code>next</code></a> for the caveats of modifying | |
3296 the table during its traversal. | |
3297 | |
3298 | |
3299 | |
3300 | |
3301 | |
3302 <hr><h3><a name="lua_Number"><code>lua_Number</code></a></h3> | |
3303 <pre>typedef double lua_Number;</pre> | |
3304 | |
3305 <p> | |
3306 The type of floats in Lua. | |
3307 | |
3308 | |
3309 <p> | |
3310 By default this type is double, | |
3311 but that can be changed to a single float. | |
3312 (See <code>LUA_REAL</code> in <code>luaconf.h</code>.) | |
3313 | |
3314 | |
3315 | |
3316 | |
3317 | |
3318 <hr><h3><a name="lua_numbertointeger"><code>lua_numbertointeger</code></a></h3> | |
3319 <pre>int lua_numbertointeger (lua_Number n, lua_Integer *p);</pre> | |
3320 | |
3321 <p> | |
3322 Converts a Lua float to a Lua integer. | |
3323 This macro assumes that <code>n</code> has an integral value. | |
3324 If that value is within the range of Lua integers, | |
3325 it is converted to an integer and assigned to <code>*p</code>. | |
3326 The macro results in a boolean indicating whether the | |
3327 conversion was successful. | |
3328 (Note that this range test can be tricky to do | |
3329 correctly without this macro, | |
3330 due to roundings.) | |
3331 | |
3332 | |
3333 <p> | |
3334 This macro may evaluate its arguments more than once. | |
3335 | |
3336 | |
3337 | |
3338 | |
3339 | |
3340 <hr><h3><a name="lua_pcall"><code>lua_pcall</code></a></h3><p> | |
3341 <span class="apii">[-(nargs + 1), +(nresults|1), –]</span> | |
3342 <pre>int lua_pcall (lua_State *L, int nargs, int nresults, int msgh);</pre> | |
3343 | |
3344 <p> | |
3345 Calls a function in protected mode. | |
3346 | |
3347 | |
3348 <p> | |
3349 Both <code>nargs</code> and <code>nresults</code> have the same meaning as | |
3350 in <a href="#lua_call"><code>lua_call</code></a>. | |
3351 If there are no errors during the call, | |
3352 <a href="#lua_pcall"><code>lua_pcall</code></a> behaves exactly like <a href="#lua_call"><code>lua_call</code></a>. | |
3353 However, if there is any error, | |
3354 <a href="#lua_pcall"><code>lua_pcall</code></a> catches it, | |
3355 pushes a single value on the stack (the error message), | |
3356 and returns an error code. | |
3357 Like <a href="#lua_call"><code>lua_call</code></a>, | |
3358 <a href="#lua_pcall"><code>lua_pcall</code></a> always removes the function | |
3359 and its arguments from the stack. | |
3360 | |
3361 | |
3362 <p> | |
3363 If <code>msgh</code> is 0, | |
3364 then the error message returned on the stack | |
3365 is exactly the original error message. | |
3366 Otherwise, <code>msgh</code> is the stack index of a | |
3367 <em>message handler</em>. | |
3368 (In the current implementation, this index cannot be a pseudo-index.) | |
3369 In case of runtime errors, | |
3370 this function will be called with the error message | |
3371 and its return value will be the message | |
3372 returned on the stack by <a href="#lua_pcall"><code>lua_pcall</code></a>. | |
3373 | |
3374 | |
3375 <p> | |
3376 Typically, the message handler is used to add more debug | |
3377 information to the error message, such as a stack traceback. | |
3378 Such information cannot be gathered after the return of <a href="#lua_pcall"><code>lua_pcall</code></a>, | |
3379 since by then the stack has unwound. | |
3380 | |
3381 | |
3382 <p> | |
3383 The <a href="#lua_pcall"><code>lua_pcall</code></a> function returns one of the following constants | |
3384 (defined in <code>lua.h</code>): | |
3385 | |
3386 <ul> | |
3387 | |
3388 <li><b><a name="pdf-LUA_OK"><code>LUA_OK</code></a> (0): </b> | |
3389 success.</li> | |
3390 | |
3391 <li><b><a name="pdf-LUA_ERRRUN"><code>LUA_ERRRUN</code></a>: </b> | |
3392 a runtime error. | |
3393 </li> | |
3394 | |
3395 <li><b><a name="pdf-LUA_ERRMEM"><code>LUA_ERRMEM</code></a>: </b> | |
3396 memory allocation error. | |
3397 For such errors, Lua does not call the message handler. | |
3398 </li> | |
3399 | |
3400 <li><b><a name="pdf-LUA_ERRERR"><code>LUA_ERRERR</code></a>: </b> | |
3401 error while running the message handler. | |
3402 </li> | |
3403 | |
3404 <li><b><a name="pdf-LUA_ERRGCMM"><code>LUA_ERRGCMM</code></a>: </b> | |
3405 error while running a <code>__gc</code> metamethod. | |
3406 (This error typically has no relation with the function being called.) | |
3407 </li> | |
3408 | |
3409 </ul> | |
3410 | |
3411 | |
3412 | |
3413 | |
3414 <hr><h3><a name="lua_pcallk"><code>lua_pcallk</code></a></h3><p> | |
3415 <span class="apii">[-(nargs + 1), +(nresults|1), –]</span> | |
3416 <pre>int lua_pcallk (lua_State *L, | |
3417 int nargs, | |
3418 int nresults, | |
3419 int msgh, | |
3420 lua_KContext ctx, | |
3421 lua_KFunction k);</pre> | |
3422 | |
3423 <p> | |
3424 This function behaves exactly like <a href="#lua_pcall"><code>lua_pcall</code></a>, | |
3425 but allows the called function to yield (see <a href="#4.7">§4.7</a>). | |
3426 | |
3427 | |
3428 | |
3429 | |
3430 | |
3431 <hr><h3><a name="lua_pop"><code>lua_pop</code></a></h3><p> | |
3432 <span class="apii">[-n, +0, –]</span> | |
3433 <pre>void lua_pop (lua_State *L, int n);</pre> | |
3434 | |
3435 <p> | |
3436 Pops <code>n</code> elements from the stack. | |
3437 | |
3438 | |
3439 | |
3440 | |
3441 | |
3442 <hr><h3><a name="lua_pushboolean"><code>lua_pushboolean</code></a></h3><p> | |
3443 <span class="apii">[-0, +1, –]</span> | |
3444 <pre>void lua_pushboolean (lua_State *L, int b);</pre> | |
3445 | |
3446 <p> | |
3447 Pushes a boolean value with value <code>b</code> onto the stack. | |
3448 | |
3449 | |
3450 | |
3451 | |
3452 | |
3453 <hr><h3><a name="lua_pushcclosure"><code>lua_pushcclosure</code></a></h3><p> | |
3454 <span class="apii">[-n, +1, <em>e</em>]</span> | |
3455 <pre>void lua_pushcclosure (lua_State *L, lua_CFunction fn, int n);</pre> | |
3456 | |
3457 <p> | |
3458 Pushes a new C closure onto the stack. | |
3459 | |
3460 | |
3461 <p> | |
3462 When a C function is created, | |
3463 it is possible to associate some values with it, | |
3464 thus creating a C closure (see <a href="#4.4">§4.4</a>); | |
3465 these values are then accessible to the function whenever it is called. | |
3466 To associate values with a C function, | |
3467 first these values must be pushed onto the stack | |
3468 (when there are multiple values, the first value is pushed first). | |
3469 Then <a href="#lua_pushcclosure"><code>lua_pushcclosure</code></a> | |
3470 is called to create and push the C function onto the stack, | |
3471 with the argument <code>n</code> telling how many values will be | |
3472 associated with the function. | |
3473 <a href="#lua_pushcclosure"><code>lua_pushcclosure</code></a> also pops these values from the stack. | |
3474 | |
3475 | |
3476 <p> | |
3477 The maximum value for <code>n</code> is 255. | |
3478 | |
3479 | |
3480 <p> | |
3481 When <code>n</code> is zero, | |
3482 this function creates a <em>light C function</em>, | |
3483 which is just a pointer to the C function. | |
3484 In that case, it never raises a memory error. | |
3485 | |
3486 | |
3487 | |
3488 | |
3489 | |
3490 <hr><h3><a name="lua_pushcfunction"><code>lua_pushcfunction</code></a></h3><p> | |
3491 <span class="apii">[-0, +1, –]</span> | |
3492 <pre>void lua_pushcfunction (lua_State *L, lua_CFunction f);</pre> | |
3493 | |
3494 <p> | |
3495 Pushes a C function onto the stack. | |
3496 This function receives a pointer to a C function | |
3497 and pushes onto the stack a Lua value of type <code>function</code> that, | |
3498 when called, invokes the corresponding C function. | |
3499 | |
3500 | |
3501 <p> | |
3502 Any function to be registered in Lua must | |
3503 follow the correct protocol to receive its parameters | |
3504 and return its results (see <a href="#lua_CFunction"><code>lua_CFunction</code></a>). | |
3505 | |
3506 | |
3507 <p> | |
3508 <code>lua_pushcfunction</code> is defined as a macro: | |
3509 | |
3510 <pre> | |
3511 #define lua_pushcfunction(L,f) lua_pushcclosure(L,f,0) | |
3512 </pre><p> | |
3513 Note that <code>f</code> is used twice. | |
3514 | |
3515 | |
3516 | |
3517 | |
3518 | |
3519 <hr><h3><a name="lua_pushfstring"><code>lua_pushfstring</code></a></h3><p> | |
3520 <span class="apii">[-0, +1, <em>e</em>]</span> | |
3521 <pre>const char *lua_pushfstring (lua_State *L, const char *fmt, ...);</pre> | |
3522 | |
3523 <p> | |
3524 Pushes onto the stack a formatted string | |
3525 and returns a pointer to this string. | |
3526 It is similar to the ISO C function <code>sprintf</code>, | |
3527 but has some important differences: | |
3528 | |
3529 <ul> | |
3530 | |
3531 <li> | |
3532 You do not have to allocate space for the result: | |
3533 the result is a Lua string and Lua takes care of memory allocation | |
3534 (and deallocation, through garbage collection). | |
3535 </li> | |
3536 | |
3537 <li> | |
3538 The conversion specifiers are quite restricted. | |
3539 There are no flags, widths, or precisions. | |
3540 The conversion specifiers can only be | |
3541 '<code>%%</code>' (inserts the character '<code>%</code>'), | |
3542 '<code>%s</code>' (inserts a zero-terminated string, with no size restrictions), | |
3543 '<code>%f</code>' (inserts a <a href="#lua_Number"><code>lua_Number</code></a>), | |
3544 '<code>%L</code>' (inserts a <a href="#lua_Integer"><code>lua_Integer</code></a>), | |
3545 '<code>%p</code>' (inserts a pointer as a hexadecimal numeral), | |
3546 '<code>%d</code>' (inserts an <code>int</code>), | |
3547 '<code>%c</code>' (inserts an <code>int</code> as a one-byte character), and | |
3548 '<code>%U</code>' (inserts a <code>long int</code> as a UTF-8 byte sequence). | |
3549 </li> | |
3550 | |
3551 </ul> | |
3552 | |
3553 | |
3554 | |
3555 | |
3556 <hr><h3><a name="lua_pushglobaltable"><code>lua_pushglobaltable</code></a></h3><p> | |
3557 <span class="apii">[-0, +1, –]</span> | |
3558 <pre>void lua_pushglobaltable (lua_State *L);</pre> | |
3559 | |
3560 <p> | |
3561 Pushes the global environment onto the stack. | |
3562 | |
3563 | |
3564 | |
3565 | |
3566 | |
3567 <hr><h3><a name="lua_pushinteger"><code>lua_pushinteger</code></a></h3><p> | |
3568 <span class="apii">[-0, +1, –]</span> | |
3569 <pre>void lua_pushinteger (lua_State *L, lua_Integer n);</pre> | |
3570 | |
3571 <p> | |
3572 Pushes an integer with value <code>n</code> onto the stack. | |
3573 | |
3574 | |
3575 | |
3576 | |
3577 | |
3578 <hr><h3><a name="lua_pushlightuserdata"><code>lua_pushlightuserdata</code></a></h3><p> | |
3579 <span class="apii">[-0, +1, –]</span> | |
3580 <pre>void lua_pushlightuserdata (lua_State *L, void *p);</pre> | |
3581 | |
3582 <p> | |
3583 Pushes a light userdata onto the stack. | |
3584 | |
3585 | |
3586 <p> | |
3587 Userdata represent C values in Lua. | |
3588 A <em>light userdata</em> represents a pointer, a <code>void*</code>. | |
3589 It is a value (like a number): | |
3590 you do not create it, it has no individual metatable, | |
3591 and it is not collected (as it was never created). | |
3592 A light userdata is equal to "any" | |
3593 light userdata with the same C address. | |
3594 | |
3595 | |
3596 | |
3597 | |
3598 | |
3599 <hr><h3><a name="lua_pushliteral"><code>lua_pushliteral</code></a></h3><p> | |
3600 <span class="apii">[-0, +1, <em>e</em>]</span> | |
3601 <pre>const char *lua_pushliteral (lua_State *L, const char *s);</pre> | |
3602 | |
3603 <p> | |
3604 This macro is equivalent to <a href="#lua_pushlstring"><code>lua_pushlstring</code></a>, | |
3605 but can be used only when <code>s</code> is a literal string. | |
3606 It automatically provides the string length. | |
3607 | |
3608 | |
3609 | |
3610 | |
3611 | |
3612 <hr><h3><a name="lua_pushlstring"><code>lua_pushlstring</code></a></h3><p> | |
3613 <span class="apii">[-0, +1, <em>e</em>]</span> | |
3614 <pre>const char *lua_pushlstring (lua_State *L, const char *s, size_t len);</pre> | |
3615 | |
3616 <p> | |
3617 Pushes the string pointed to by <code>s</code> with size <code>len</code> | |
3618 onto the stack. | |
3619 Lua makes (or reuses) an internal copy of the given string, | |
3620 so the memory at <code>s</code> can be freed or reused immediately after | |
3621 the function returns. | |
3622 The string can contain any binary data, | |
3623 including embedded zeros. | |
3624 | |
3625 | |
3626 <p> | |
3627 Returns a pointer to the internal copy of the string. | |
3628 | |
3629 | |
3630 | |
3631 | |
3632 | |
3633 <hr><h3><a name="lua_pushnil"><code>lua_pushnil</code></a></h3><p> | |
3634 <span class="apii">[-0, +1, –]</span> | |
3635 <pre>void lua_pushnil (lua_State *L);</pre> | |
3636 | |
3637 <p> | |
3638 Pushes a nil value onto the stack. | |
3639 | |
3640 | |
3641 | |
3642 | |
3643 | |
3644 <hr><h3><a name="lua_pushnumber"><code>lua_pushnumber</code></a></h3><p> | |
3645 <span class="apii">[-0, +1, –]</span> | |
3646 <pre>void lua_pushnumber (lua_State *L, lua_Number n);</pre> | |
3647 | |
3648 <p> | |
3649 Pushes a float with value <code>n</code> onto the stack. | |
3650 | |
3651 | |
3652 | |
3653 | |
3654 | |
3655 <hr><h3><a name="lua_pushstring"><code>lua_pushstring</code></a></h3><p> | |
3656 <span class="apii">[-0, +1, <em>e</em>]</span> | |
3657 <pre>const char *lua_pushstring (lua_State *L, const char *s);</pre> | |
3658 | |
3659 <p> | |
3660 Pushes the zero-terminated string pointed to by <code>s</code> | |
3661 onto the stack. | |
3662 Lua makes (or reuses) an internal copy of the given string, | |
3663 so the memory at <code>s</code> can be freed or reused immediately after | |
3664 the function returns. | |
3665 | |
3666 | |
3667 <p> | |
3668 Returns a pointer to the internal copy of the string. | |
3669 | |
3670 | |
3671 <p> | |
3672 If <code>s</code> is <code>NULL</code>, pushes <b>nil</b> and returns <code>NULL</code>. | |
3673 | |
3674 | |
3675 | |
3676 | |
3677 | |
3678 <hr><h3><a name="lua_pushthread"><code>lua_pushthread</code></a></h3><p> | |
3679 <span class="apii">[-0, +1, –]</span> | |
3680 <pre>int lua_pushthread (lua_State *L);</pre> | |
3681 | |
3682 <p> | |
3683 Pushes the thread represented by <code>L</code> onto the stack. | |
3684 Returns 1 if this thread is the main thread of its state. | |
3685 | |
3686 | |
3687 | |
3688 | |
3689 | |
3690 <hr><h3><a name="lua_pushvalue"><code>lua_pushvalue</code></a></h3><p> | |
3691 <span class="apii">[-0, +1, –]</span> | |
3692 <pre>void lua_pushvalue (lua_State *L, int index);</pre> | |
3693 | |
3694 <p> | |
3695 Pushes a copy of the element at the given index | |
3696 onto the stack. | |
3697 | |
3698 | |
3699 | |
3700 | |
3701 | |
3702 <hr><h3><a name="lua_pushvfstring"><code>lua_pushvfstring</code></a></h3><p> | |
3703 <span class="apii">[-0, +1, <em>e</em>]</span> | |
3704 <pre>const char *lua_pushvfstring (lua_State *L, | |
3705 const char *fmt, | |
3706 va_list argp);</pre> | |
3707 | |
3708 <p> | |
3709 Equivalent to <a href="#lua_pushfstring"><code>lua_pushfstring</code></a>, except that it receives a <code>va_list</code> | |
3710 instead of a variable number of arguments. | |
3711 | |
3712 | |
3713 | |
3714 | |
3715 | |
3716 <hr><h3><a name="lua_rawequal"><code>lua_rawequal</code></a></h3><p> | |
3717 <span class="apii">[-0, +0, –]</span> | |
3718 <pre>int lua_rawequal (lua_State *L, int index1, int index2);</pre> | |
3719 | |
3720 <p> | |
3721 Returns 1 if the two values in indices <code>index1</code> and | |
3722 <code>index2</code> are primitively equal | |
3723 (that is, without calling metamethods). | |
3724 Otherwise returns 0. | |
3725 Also returns 0 if any of the indices are not valid. | |
3726 | |
3727 | |
3728 | |
3729 | |
3730 | |
3731 <hr><h3><a name="lua_rawget"><code>lua_rawget</code></a></h3><p> | |
3732 <span class="apii">[-1, +1, –]</span> | |
3733 <pre>int lua_rawget (lua_State *L, int index);</pre> | |
3734 | |
3735 <p> | |
3736 Similar to <a href="#lua_gettable"><code>lua_gettable</code></a>, but does a raw access | |
3737 (i.e., without metamethods). | |
3738 | |
3739 | |
3740 | |
3741 | |
3742 | |
3743 <hr><h3><a name="lua_rawgeti"><code>lua_rawgeti</code></a></h3><p> | |
3744 <span class="apii">[-0, +1, –]</span> | |
3745 <pre>int lua_rawgeti (lua_State *L, int index, lua_Integer n);</pre> | |
3746 | |
3747 <p> | |
3748 Pushes onto the stack the value <code>t[n]</code>, | |
3749 where <code>t</code> is the table at the given index. | |
3750 The access is raw; | |
3751 that is, it does not invoke metamethods. | |
3752 | |
3753 | |
3754 <p> | |
3755 Returns the type of the pushed value. | |
3756 | |
3757 | |
3758 | |
3759 | |
3760 | |
3761 <hr><h3><a name="lua_rawgetp"><code>lua_rawgetp</code></a></h3><p> | |
3762 <span class="apii">[-0, +1, –]</span> | |
3763 <pre>int lua_rawgetp (lua_State *L, int index, const void *p);</pre> | |
3764 | |
3765 <p> | |
3766 Pushes onto the stack the value <code>t[k]</code>, | |
3767 where <code>t</code> is the table at the given index and | |
3768 <code>k</code> is the pointer <code>p</code> represented as a light userdata. | |
3769 The access is raw; | |
3770 that is, it does not invoke metamethods. | |
3771 | |
3772 | |
3773 <p> | |
3774 Returns the type of the pushed value. | |
3775 | |
3776 | |
3777 | |
3778 | |
3779 | |
3780 <hr><h3><a name="lua_rawlen"><code>lua_rawlen</code></a></h3><p> | |
3781 <span class="apii">[-0, +0, –]</span> | |
3782 <pre>size_t lua_rawlen (lua_State *L, int index);</pre> | |
3783 | |
3784 <p> | |
3785 Returns the raw "length" of the value at the given index: | |
3786 for strings, this is the string length; | |
3787 for tables, this is the result of the length operator ('<code>#</code>') | |
3788 with no metamethods; | |
3789 for userdata, this is the size of the block of memory allocated | |
3790 for the userdata; | |
3791 for other values, it is 0. | |
3792 | |
3793 | |
3794 | |
3795 | |
3796 | |
3797 <hr><h3><a name="lua_rawset"><code>lua_rawset</code></a></h3><p> | |
3798 <span class="apii">[-2, +0, <em>e</em>]</span> | |
3799 <pre>void lua_rawset (lua_State *L, int index);</pre> | |
3800 | |
3801 <p> | |
3802 Similar to <a href="#lua_settable"><code>lua_settable</code></a>, but does a raw assignment | |
3803 (i.e., without metamethods). | |
3804 | |
3805 | |
3806 | |
3807 | |
3808 | |
3809 <hr><h3><a name="lua_rawseti"><code>lua_rawseti</code></a></h3><p> | |
3810 <span class="apii">[-1, +0, <em>e</em>]</span> | |
3811 <pre>void lua_rawseti (lua_State *L, int index, lua_Integer i);</pre> | |
3812 | |
3813 <p> | |
3814 Does the equivalent of <code>t[i] = v</code>, | |
3815 where <code>t</code> is the table at the given index | |
3816 and <code>v</code> is the value at the top of the stack. | |
3817 | |
3818 | |
3819 <p> | |
3820 This function pops the value from the stack. | |
3821 The assignment is raw; | |
3822 that is, it does not invoke metamethods. | |
3823 | |
3824 | |
3825 | |
3826 | |
3827 | |
3828 <hr><h3><a name="lua_rawsetp"><code>lua_rawsetp</code></a></h3><p> | |
3829 <span class="apii">[-1, +0, <em>e</em>]</span> | |
3830 <pre>void lua_rawsetp (lua_State *L, int index, const void *p);</pre> | |
3831 | |
3832 <p> | |
3833 Does the equivalent of <code>t[k] = v</code>, | |
3834 where <code>t</code> is the table at the given index, | |
3835 <code>k</code> is the pointer <code>p</code> represented as a light userdata, | |
3836 and <code>v</code> is the value at the top of the stack. | |
3837 | |
3838 | |
3839 <p> | |
3840 This function pops the value from the stack. | |
3841 The assignment is raw; | |
3842 that is, it does not invoke metamethods. | |
3843 | |
3844 | |
3845 | |
3846 | |
3847 | |
3848 <hr><h3><a name="lua_Reader"><code>lua_Reader</code></a></h3> | |
3849 <pre>typedef const char * (*lua_Reader) (lua_State *L, | |
3850 void *data, | |
3851 size_t *size);</pre> | |
3852 | |
3853 <p> | |
3854 The reader function used by <a href="#lua_load"><code>lua_load</code></a>. | |
3855 Every time it needs another piece of the chunk, | |
3856 <a href="#lua_load"><code>lua_load</code></a> calls the reader, | |
3857 passing along its <code>data</code> parameter. | |
3858 The reader must return a pointer to a block of memory | |
3859 with a new piece of the chunk | |
3860 and set <code>size</code> to the block size. | |
3861 The block must exist until the reader function is called again. | |
3862 To signal the end of the chunk, | |
3863 the reader must return <code>NULL</code> or set <code>size</code> to zero. | |
3864 The reader function may return pieces of any size greater than zero. | |
3865 | |
3866 | |
3867 | |
3868 | |
3869 | |
3870 <hr><h3><a name="lua_register"><code>lua_register</code></a></h3><p> | |
3871 <span class="apii">[-0, +0, <em>e</em>]</span> | |
3872 <pre>void lua_register (lua_State *L, const char *name, lua_CFunction f);</pre> | |
3873 | |
3874 <p> | |
3875 Sets the C function <code>f</code> as the new value of global <code>name</code>. | |
3876 It is defined as a macro: | |
3877 | |
3878 <pre> | |
3879 #define lua_register(L,n,f) \ | |
3880 (lua_pushcfunction(L, f), lua_setglobal(L, n)) | |
3881 </pre> | |
3882 | |
3883 | |
3884 | |
3885 | |
3886 <hr><h3><a name="lua_remove"><code>lua_remove</code></a></h3><p> | |
3887 <span class="apii">[-1, +0, –]</span> | |
3888 <pre>void lua_remove (lua_State *L, int index);</pre> | |
3889 | |
3890 <p> | |
3891 Removes the element at the given valid index, | |
3892 shifting down the elements above this index to fill the gap. | |
3893 This function cannot be called with a pseudo-index, | |
3894 because a pseudo-index is not an actual stack position. | |
3895 | |
3896 | |
3897 | |
3898 | |
3899 | |
3900 <hr><h3><a name="lua_replace"><code>lua_replace</code></a></h3><p> | |
3901 <span class="apii">[-1, +0, –]</span> | |
3902 <pre>void lua_replace (lua_State *L, int index);</pre> | |
3903 | |
3904 <p> | |
3905 Moves the top element into the given valid index | |
3906 without shifting any element | |
3907 (therefore replacing the value at the given index), | |
3908 and then pops the top element. | |
3909 | |
3910 | |
3911 | |
3912 | |
3913 | |
3914 <hr><h3><a name="lua_resume"><code>lua_resume</code></a></h3><p> | |
3915 <span class="apii">[-?, +?, –]</span> | |
3916 <pre>int lua_resume (lua_State *L, lua_State *from, int nargs);</pre> | |
3917 | |
3918 <p> | |
3919 Starts and resumes a coroutine in a given thread. | |
3920 | |
3921 | |
3922 <p> | |
3923 To start a coroutine, | |
3924 you push onto the thread stack the main function plus any arguments; | |
3925 then you call <a href="#lua_resume"><code>lua_resume</code></a>, | |
3926 with <code>nargs</code> being the number of arguments. | |
3927 This call returns when the coroutine suspends or finishes its execution. | |
3928 When it returns, the stack contains all values passed to <a href="#lua_yield"><code>lua_yield</code></a>, | |
3929 or all values returned by the body function. | |
3930 <a href="#lua_resume"><code>lua_resume</code></a> returns | |
3931 <a href="#pdf-LUA_YIELD"><code>LUA_YIELD</code></a> if the coroutine yields, | |
3932 <a href="#pdf-LUA_OK"><code>LUA_OK</code></a> if the coroutine finishes its execution | |
3933 without errors, | |
3934 or an error code in case of errors (see <a href="#lua_pcall"><code>lua_pcall</code></a>). | |
3935 | |
3936 | |
3937 <p> | |
3938 In case of errors, | |
3939 the stack is not unwound, | |
3940 so you can use the debug API over it. | |
3941 The error message is on the top of the stack. | |
3942 | |
3943 | |
3944 <p> | |
3945 To resume a coroutine, | |
3946 you remove any results from the last <a href="#lua_yield"><code>lua_yield</code></a>, | |
3947 put on its stack only the values to | |
3948 be passed as results from <code>yield</code>, | |
3949 and then call <a href="#lua_resume"><code>lua_resume</code></a>. | |
3950 | |
3951 | |
3952 <p> | |
3953 The parameter <code>from</code> represents the coroutine that is resuming <code>L</code>. | |
3954 If there is no such coroutine, | |
3955 this parameter can be <code>NULL</code>. | |
3956 | |
3957 | |
3958 | |
3959 | |
3960 | |
3961 <hr><h3><a name="lua_rotate"><code>lua_rotate</code></a></h3><p> | |
3962 <span class="apii">[-0, +0, –]</span> | |
3963 <pre>void lua_rotate (lua_State *L, int idx, int n);</pre> | |
3964 | |
3965 <p> | |
3966 Rotates the stack elements from <code>idx</code> to the top <code>n</code> positions | |
3967 in the direction of the top, for a positive <code>n</code>, | |
3968 or <code>-n</code> positions in the direction of the bottom, | |
3969 for a negative <code>n</code>. | |
3970 The absolute value of <code>n</code> must not be greater than the size | |
3971 of the slice being rotated. | |
3972 | |
3973 | |
3974 | |
3975 | |
3976 | |
3977 <hr><h3><a name="lua_setallocf"><code>lua_setallocf</code></a></h3><p> | |
3978 <span class="apii">[-0, +0, –]</span> | |
3979 <pre>void lua_setallocf (lua_State *L, lua_Alloc f, void *ud);</pre> | |
3980 | |
3981 <p> | |
3982 Changes the allocator function of a given state to <code>f</code> | |
3983 with user data <code>ud</code>. | |
3984 | |
3985 | |
3986 | |
3987 | |
3988 | |
3989 <hr><h3><a name="lua_setfield"><code>lua_setfield</code></a></h3><p> | |
3990 <span class="apii">[-1, +0, <em>e</em>]</span> | |
3991 <pre>void lua_setfield (lua_State *L, int index, const char *k);</pre> | |
3992 | |
3993 <p> | |
3994 Does the equivalent to <code>t[k] = v</code>, | |
3995 where <code>t</code> is the value at the given index | |
3996 and <code>v</code> is the value at the top of the stack. | |
3997 | |
3998 | |
3999 <p> | |
4000 This function pops the value from the stack. | |
4001 As in Lua, this function may trigger a metamethod | |
4002 for the "newindex" event (see <a href="#2.4">§2.4</a>). | |
4003 | |
4004 | |
4005 | |
4006 | |
4007 | |
4008 <hr><h3><a name="lua_setglobal"><code>lua_setglobal</code></a></h3><p> | |
4009 <span class="apii">[-1, +0, <em>e</em>]</span> | |
4010 <pre>void lua_setglobal (lua_State *L, const char *name);</pre> | |
4011 | |
4012 <p> | |
4013 Pops a value from the stack and | |
4014 sets it as the new value of global <code>name</code>. | |
4015 | |
4016 | |
4017 | |
4018 | |
4019 | |
4020 <hr><h3><a name="lua_seti"><code>lua_seti</code></a></h3><p> | |
4021 <span class="apii">[-1, +0, <em>e</em>]</span> | |
4022 <pre>void lua_seti (lua_State *L, int index, lua_Integer n);</pre> | |
4023 | |
4024 <p> | |
4025 Does the equivalent to <code>t[n] = v</code>, | |
4026 where <code>t</code> is the value at the given index | |
4027 and <code>v</code> is the value at the top of the stack. | |
4028 | |
4029 | |
4030 <p> | |
4031 This function pops the value from the stack. | |
4032 As in Lua, this function may trigger a metamethod | |
4033 for the "newindex" event (see <a href="#2.4">§2.4</a>). | |
4034 | |
4035 | |
4036 | |
4037 | |
4038 | |
4039 <hr><h3><a name="lua_setmetatable"><code>lua_setmetatable</code></a></h3><p> | |
4040 <span class="apii">[-1, +0, –]</span> | |
4041 <pre>void lua_setmetatable (lua_State *L, int index);</pre> | |
4042 | |
4043 <p> | |
4044 Pops a table from the stack and | |
4045 sets it as the new metatable for the value at the given index. | |
4046 | |
4047 | |
4048 | |
4049 | |
4050 | |
4051 <hr><h3><a name="lua_settable"><code>lua_settable</code></a></h3><p> | |
4052 <span class="apii">[-2, +0, <em>e</em>]</span> | |
4053 <pre>void lua_settable (lua_State *L, int index);</pre> | |
4054 | |
4055 <p> | |
4056 Does the equivalent to <code>t[k] = v</code>, | |
4057 where <code>t</code> is the value at the given index, | |
4058 <code>v</code> is the value at the top of the stack, | |
4059 and <code>k</code> is the value just below the top. | |
4060 | |
4061 | |
4062 <p> | |
4063 This function pops both the key and the value from the stack. | |
4064 As in Lua, this function may trigger a metamethod | |
4065 for the "newindex" event (see <a href="#2.4">§2.4</a>). | |
4066 | |
4067 | |
4068 | |
4069 | |
4070 | |
4071 <hr><h3><a name="lua_settop"><code>lua_settop</code></a></h3><p> | |
4072 <span class="apii">[-?, +?, –]</span> | |
4073 <pre>void lua_settop (lua_State *L, int index);</pre> | |
4074 | |
4075 <p> | |
4076 Accepts any index, or 0, | |
4077 and sets the stack top to this index. | |
4078 If the new top is larger than the old one, | |
4079 then the new elements are filled with <b>nil</b>. | |
4080 If <code>index</code> is 0, then all stack elements are removed. | |
4081 | |
4082 | |
4083 | |
4084 | |
4085 | |
4086 <hr><h3><a name="lua_setuservalue"><code>lua_setuservalue</code></a></h3><p> | |
4087 <span class="apii">[-1, +0, –]</span> | |
4088 <pre>void lua_setuservalue (lua_State *L, int index);</pre> | |
4089 | |
4090 <p> | |
4091 Pops a value from the stack and sets it as | |
4092 the new value associated to the userdata at the given index. | |
4093 | |
4094 | |
4095 | |
4096 | |
4097 | |
4098 <hr><h3><a name="lua_State"><code>lua_State</code></a></h3> | |
4099 <pre>typedef struct lua_State lua_State;</pre> | |
4100 | |
4101 <p> | |
4102 An opaque structure that points to a thread and indirectly | |
4103 (through the thread) to the whole state of a Lua interpreter. | |
4104 The Lua library is fully reentrant: | |
4105 it has no global variables. | |
4106 All information about a state is accessible through this structure. | |
4107 | |
4108 | |
4109 <p> | |
4110 A pointer to this structure must be passed as the first argument to | |
4111 every function in the library, except to <a href="#lua_newstate"><code>lua_newstate</code></a>, | |
4112 which creates a Lua state from scratch. | |
4113 | |
4114 | |
4115 | |
4116 | |
4117 | |
4118 <hr><h3><a name="lua_status"><code>lua_status</code></a></h3><p> | |
4119 <span class="apii">[-0, +0, –]</span> | |
4120 <pre>int lua_status (lua_State *L);</pre> | |
4121 | |
4122 <p> | |
4123 Returns the status of the thread <code>L</code>. | |
4124 | |
4125 | |
4126 <p> | |
4127 The status can be 0 (<a href="#pdf-LUA_OK"><code>LUA_OK</code></a>) for a normal thread, | |
4128 an error code if the thread finished the execution | |
4129 of a <a href="#lua_resume"><code>lua_resume</code></a> with an error, | |
4130 or <a name="pdf-LUA_YIELD"><code>LUA_YIELD</code></a> if the thread is suspended. | |
4131 | |
4132 | |
4133 <p> | |
4134 You can only call functions in threads with status <a href="#pdf-LUA_OK"><code>LUA_OK</code></a>. | |
4135 You can resume threads with status <a href="#pdf-LUA_OK"><code>LUA_OK</code></a> | |
4136 (to start a new coroutine) or <a href="#pdf-LUA_YIELD"><code>LUA_YIELD</code></a> | |
4137 (to resume a coroutine). | |
4138 | |
4139 | |
4140 | |
4141 | |
4142 | |
4143 <hr><h3><a name="lua_stringtonumber"><code>lua_stringtonumber</code></a></h3><p> | |
4144 <span class="apii">[-0, +1, –]</span> | |
4145 <pre>size_t lua_stringtonumber (lua_State *L, const char *s);</pre> | |
4146 | |
4147 <p> | |
4148 Converts the zero-terminated string <code>s</code> to a number, | |
4149 pushes that number into the stack, | |
4150 and returns the total size of the string, | |
4151 that is, its length plus one. | |
4152 The conversion can result in an integer or a float, | |
4153 according to the lexical conventions of Lua (see <a href="#3.1">§3.1</a>). | |
4154 The string may have leading and trailing spaces and a sign. | |
4155 If the string is not a valid numeral, | |
4156 returns 0 and pushes nothing. | |
4157 (Note that the result can be used as a boolean, | |
4158 true if the conversion succeeds.) | |
4159 | |
4160 | |
4161 | |
4162 | |
4163 | |
4164 <hr><h3><a name="lua_toboolean"><code>lua_toboolean</code></a></h3><p> | |
4165 <span class="apii">[-0, +0, –]</span> | |
4166 <pre>int lua_toboolean (lua_State *L, int index);</pre> | |
4167 | |
4168 <p> | |
4169 Converts the Lua value at the given index to a C boolean | |
4170 value (0 or 1). | |
4171 Like all tests in Lua, | |
4172 <a href="#lua_toboolean"><code>lua_toboolean</code></a> returns true for any Lua value | |
4173 different from <b>false</b> and <b>nil</b>; | |
4174 otherwise it returns false. | |
4175 (If you want to accept only actual boolean values, | |
4176 use <a href="#lua_isboolean"><code>lua_isboolean</code></a> to test the value's type.) | |
4177 | |
4178 | |
4179 | |
4180 | |
4181 | |
4182 <hr><h3><a name="lua_tocfunction"><code>lua_tocfunction</code></a></h3><p> | |
4183 <span class="apii">[-0, +0, –]</span> | |
4184 <pre>lua_CFunction lua_tocfunction (lua_State *L, int index);</pre> | |
4185 | |
4186 <p> | |
4187 Converts a value at the given index to a C function. | |
4188 That value must be a C function; | |
4189 otherwise, returns <code>NULL</code>. | |
4190 | |
4191 | |
4192 | |
4193 | |
4194 | |
4195 <hr><h3><a name="lua_tointeger"><code>lua_tointeger</code></a></h3><p> | |
4196 <span class="apii">[-0, +0, –]</span> | |
4197 <pre>lua_Integer lua_tointeger (lua_State *L, int index);</pre> | |
4198 | |
4199 <p> | |
4200 Equivalent to <a href="#lua_tointegerx"><code>lua_tointegerx</code></a> with <code>isnum</code> equal to <code>NULL</code>. | |
4201 | |
4202 | |
4203 | |
4204 | |
4205 | |
4206 <hr><h3><a name="lua_tointegerx"><code>lua_tointegerx</code></a></h3><p> | |
4207 <span class="apii">[-0, +0, –]</span> | |
4208 <pre>lua_Integer lua_tointegerx (lua_State *L, int index, int *isnum);</pre> | |
4209 | |
4210 <p> | |
4211 Converts the Lua value at the given index | |
4212 to the signed integral type <a href="#lua_Integer"><code>lua_Integer</code></a>. | |
4213 The Lua value must be an integer, | |
4214 or a number or string convertible to an integer (see <a href="#3.4.3">§3.4.3</a>); | |
4215 otherwise, <code>lua_tointegerx</code> returns 0. | |
4216 | |
4217 | |
4218 <p> | |
4219 If <code>isnum</code> is not <code>NULL</code>, | |
4220 its referent is assigned a boolean value that | |
4221 indicates whether the operation succeeded. | |
4222 | |
4223 | |
4224 | |
4225 | |
4226 | |
4227 <hr><h3><a name="lua_tolstring"><code>lua_tolstring</code></a></h3><p> | |
4228 <span class="apii">[-0, +0, <em>e</em>]</span> | |
4229 <pre>const char *lua_tolstring (lua_State *L, int index, size_t *len);</pre> | |
4230 | |
4231 <p> | |
4232 Converts the Lua value at the given index to a C string. | |
4233 If <code>len</code> is not <code>NULL</code>, | |
4234 it also sets <code>*len</code> with the string length. | |
4235 The Lua value must be a string or a number; | |
4236 otherwise, the function returns <code>NULL</code>. | |
4237 If the value is a number, | |
4238 then <code>lua_tolstring</code> also | |
4239 <em>changes the actual value in the stack to a string</em>. | |
4240 (This change confuses <a href="#lua_next"><code>lua_next</code></a> | |
4241 when <code>lua_tolstring</code> is applied to keys during a table traversal.) | |
4242 | |
4243 | |
4244 <p> | |
4245 <code>lua_tolstring</code> returns a fully aligned pointer | |
4246 to a string inside the Lua state. | |
4247 This string always has a zero ('<code>\0</code>') | |
4248 after its last character (as in C), | |
4249 but can contain other zeros in its body. | |
4250 | |
4251 | |
4252 <p> | |
4253 Because Lua has garbage collection, | |
4254 there is no guarantee that the pointer returned by <code>lua_tolstring</code> | |
4255 will be valid after the corresponding Lua value is removed from the stack. | |
4256 | |
4257 | |
4258 | |
4259 | |
4260 | |
4261 <hr><h3><a name="lua_tonumber"><code>lua_tonumber</code></a></h3><p> | |
4262 <span class="apii">[-0, +0, –]</span> | |
4263 <pre>lua_Number lua_tonumber (lua_State *L, int index);</pre> | |
4264 | |
4265 <p> | |
4266 Equivalent to <a href="#lua_tonumberx"><code>lua_tonumberx</code></a> with <code>isnum</code> equal to <code>NULL</code>. | |
4267 | |
4268 | |
4269 | |
4270 | |
4271 | |
4272 <hr><h3><a name="lua_tonumberx"><code>lua_tonumberx</code></a></h3><p> | |
4273 <span class="apii">[-0, +0, –]</span> | |
4274 <pre>lua_Number lua_tonumberx (lua_State *L, int index, int *isnum);</pre> | |
4275 | |
4276 <p> | |
4277 Converts the Lua value at the given index | |
4278 to the C type <a href="#lua_Number"><code>lua_Number</code></a> (see <a href="#lua_Number"><code>lua_Number</code></a>). | |
4279 The Lua value must be a number or a string convertible to a number | |
4280 (see <a href="#3.4.3">§3.4.3</a>); | |
4281 otherwise, <a href="#lua_tonumberx"><code>lua_tonumberx</code></a> returns 0. | |
4282 | |
4283 | |
4284 <p> | |
4285 If <code>isnum</code> is not <code>NULL</code>, | |
4286 its referent is assigned a boolean value that | |
4287 indicates whether the operation succeeded. | |
4288 | |
4289 | |
4290 | |
4291 | |
4292 | |
4293 <hr><h3><a name="lua_topointer"><code>lua_topointer</code></a></h3><p> | |
4294 <span class="apii">[-0, +0, –]</span> | |
4295 <pre>const void *lua_topointer (lua_State *L, int index);</pre> | |
4296 | |
4297 <p> | |
4298 Converts the value at the given index to a generic | |
4299 C pointer (<code>void*</code>). | |
4300 The value can be a userdata, a table, a thread, or a function; | |
4301 otherwise, <code>lua_topointer</code> returns <code>NULL</code>. | |
4302 Different objects will give different pointers. | |
4303 There is no way to convert the pointer back to its original value. | |
4304 | |
4305 | |
4306 <p> | |
4307 Typically this function is used only for debug information. | |
4308 | |
4309 | |
4310 | |
4311 | |
4312 | |
4313 <hr><h3><a name="lua_tostring"><code>lua_tostring</code></a></h3><p> | |
4314 <span class="apii">[-0, +0, <em>e</em>]</span> | |
4315 <pre>const char *lua_tostring (lua_State *L, int index);</pre> | |
4316 | |
4317 <p> | |
4318 Equivalent to <a href="#lua_tolstring"><code>lua_tolstring</code></a> with <code>len</code> equal to <code>NULL</code>. | |
4319 | |
4320 | |
4321 | |
4322 | |
4323 | |
4324 <hr><h3><a name="lua_tothread"><code>lua_tothread</code></a></h3><p> | |
4325 <span class="apii">[-0, +0, –]</span> | |
4326 <pre>lua_State *lua_tothread (lua_State *L, int index);</pre> | |
4327 | |
4328 <p> | |
4329 Converts the value at the given index to a Lua thread | |
4330 (represented as <code>lua_State*</code>). | |
4331 This value must be a thread; | |
4332 otherwise, the function returns <code>NULL</code>. | |
4333 | |
4334 | |
4335 | |
4336 | |
4337 | |
4338 <hr><h3><a name="lua_touserdata"><code>lua_touserdata</code></a></h3><p> | |
4339 <span class="apii">[-0, +0, –]</span> | |
4340 <pre>void *lua_touserdata (lua_State *L, int index);</pre> | |
4341 | |
4342 <p> | |
4343 If the value at the given index is a full userdata, | |
4344 returns its block address. | |
4345 If the value is a light userdata, | |
4346 returns its pointer. | |
4347 Otherwise, returns <code>NULL</code>. | |
4348 | |
4349 | |
4350 | |
4351 | |
4352 | |
4353 <hr><h3><a name="lua_type"><code>lua_type</code></a></h3><p> | |
4354 <span class="apii">[-0, +0, –]</span> | |
4355 <pre>int lua_type (lua_State *L, int index);</pre> | |
4356 | |
4357 <p> | |
4358 Returns the type of the value in the given valid index, | |
4359 or <code>LUA_TNONE</code> for a non-valid (but acceptable) index. | |
4360 The types returned by <a href="#lua_type"><code>lua_type</code></a> are coded by the following constants | |
4361 defined in <code>lua.h</code>: | |
4362 <a name="pdf-LUA_TNIL"><code>LUA_TNIL</code></a>, | |
4363 <a name="pdf-LUA_TNUMBER"><code>LUA_TNUMBER</code></a>, | |
4364 <a name="pdf-LUA_TBOOLEAN"><code>LUA_TBOOLEAN</code></a>, | |
4365 <a name="pdf-LUA_TSTRING"><code>LUA_TSTRING</code></a>, | |
4366 <a name="pdf-LUA_TTABLE"><code>LUA_TTABLE</code></a>, | |
4367 <a name="pdf-LUA_TFUNCTION"><code>LUA_TFUNCTION</code></a>, | |
4368 <a name="pdf-LUA_TUSERDATA"><code>LUA_TUSERDATA</code></a>, | |
4369 <a name="pdf-LUA_TTHREAD"><code>LUA_TTHREAD</code></a>, | |
4370 and | |
4371 <a name="pdf-LUA_TLIGHTUSERDATA"><code>LUA_TLIGHTUSERDATA</code></a>. | |
4372 | |
4373 | |
4374 | |
4375 | |
4376 | |
4377 <hr><h3><a name="lua_typename"><code>lua_typename</code></a></h3><p> | |
4378 <span class="apii">[-0, +0, –]</span> | |
4379 <pre>const char *lua_typename (lua_State *L, int tp);</pre> | |
4380 | |
4381 <p> | |
4382 Returns the name of the type encoded by the value <code>tp</code>, | |
4383 which must be one the values returned by <a href="#lua_type"><code>lua_type</code></a>. | |
4384 | |
4385 | |
4386 | |
4387 | |
4388 | |
4389 <hr><h3><a name="lua_Unsigned"><code>lua_Unsigned</code></a></h3> | |
4390 <pre>typedef ... lua_Unsigned;</pre> | |
4391 | |
4392 <p> | |
4393 The unsigned version of <a href="#lua_Integer"><code>lua_Integer</code></a>. | |
4394 | |
4395 | |
4396 | |
4397 | |
4398 | |
4399 <hr><h3><a name="lua_upvalueindex"><code>lua_upvalueindex</code></a></h3><p> | |
4400 <span class="apii">[-0, +0, –]</span> | |
4401 <pre>int lua_upvalueindex (int i);</pre> | |
4402 | |
4403 <p> | |
4404 Returns the pseudo-index that represents the <code>i</code>-th upvalue of | |
4405 the running function (see <a href="#4.4">§4.4</a>). | |
4406 | |
4407 | |
4408 | |
4409 | |
4410 | |
4411 <hr><h3><a name="lua_version"><code>lua_version</code></a></h3><p> | |
4412 <span class="apii">[-0, +0, <em>v</em>]</span> | |
4413 <pre>const lua_Number *lua_version (lua_State *L);</pre> | |
4414 | |
4415 <p> | |
4416 Returns the address of the version number stored in the Lua core. | |
4417 When called with a valid <a href="#lua_State"><code>lua_State</code></a>, | |
4418 returns the address of the version used to create that state. | |
4419 When called with <code>NULL</code>, | |
4420 returns the address of the version running the call. | |
4421 | |
4422 | |
4423 | |
4424 | |
4425 | |
4426 <hr><h3><a name="lua_Writer"><code>lua_Writer</code></a></h3> | |
4427 <pre>typedef int (*lua_Writer) (lua_State *L, | |
4428 const void* p, | |
4429 size_t sz, | |
4430 void* ud);</pre> | |
4431 | |
4432 <p> | |
4433 The type of the writer function used by <a href="#lua_dump"><code>lua_dump</code></a>. | |
4434 Every time it produces another piece of chunk, | |
4435 <a href="#lua_dump"><code>lua_dump</code></a> calls the writer, | |
4436 passing along the buffer to be written (<code>p</code>), | |
4437 its size (<code>sz</code>), | |
4438 and the <code>data</code> parameter supplied to <a href="#lua_dump"><code>lua_dump</code></a>. | |
4439 | |
4440 | |
4441 <p> | |
4442 The writer returns an error code: | |
4443 0 means no errors; | |
4444 any other value means an error and stops <a href="#lua_dump"><code>lua_dump</code></a> from | |
4445 calling the writer again. | |
4446 | |
4447 | |
4448 | |
4449 | |
4450 | |
4451 <hr><h3><a name="lua_xmove"><code>lua_xmove</code></a></h3><p> | |
4452 <span class="apii">[-?, +?, –]</span> | |
4453 <pre>void lua_xmove (lua_State *from, lua_State *to, int n);</pre> | |
4454 | |
4455 <p> | |
4456 Exchange values between different threads of the same state. | |
4457 | |
4458 | |
4459 <p> | |
4460 This function pops <code>n</code> values from the stack <code>from</code>, | |
4461 and pushes them onto the stack <code>to</code>. | |
4462 | |
4463 | |
4464 | |
4465 | |
4466 | |
4467 <hr><h3><a name="lua_yield"><code>lua_yield</code></a></h3><p> | |
4468 <span class="apii">[-?, +?, <em>e</em>]</span> | |
4469 <pre>int lua_yield (lua_State *L, int nresults);</pre> | |
4470 | |
4471 <p> | |
4472 This function is equivalent to <a href="#lua_yieldk"><code>lua_yieldk</code></a>, | |
4473 but it has no continuation (see <a href="#4.7">§4.7</a>). | |
4474 Therefore, when the thread resumes, | |
4475 it continues the function that called | |
4476 the function calling <code>lua_yield</code>. | |
4477 | |
4478 | |
4479 | |
4480 | |
4481 | |
4482 <hr><h3><a name="lua_yieldk"><code>lua_yieldk</code></a></h3><p> | |
4483 <span class="apii">[-?, +?, <em>e</em>]</span> | |
4484 <pre>int lua_yieldk (lua_State *L, | |
4485 int nresults, | |
4486 lua_KContext ctx, | |
4487 lua_KFunction k);</pre> | |
4488 | |
4489 <p> | |
4490 Yields a coroutine (thread). | |
4491 | |
4492 | |
4493 <p> | |
4494 When a C function calls <a href="#lua_yieldk"><code>lua_yieldk</code></a>, | |
4495 the running coroutine suspends its execution, | |
4496 and the call to <a href="#lua_resume"><code>lua_resume</code></a> that started this coroutine returns. | |
4497 The parameter <code>nresults</code> is the number of values from the stack | |
4498 that will be passed as results to <a href="#lua_resume"><code>lua_resume</code></a>. | |
4499 | |
4500 | |
4501 <p> | |
4502 When the coroutine is resumed again, | |
4503 Lua calls the given continuation function <code>k</code> to continue | |
4504 the execution of the C function that yielded (see <a href="#4.7">§4.7</a>). | |
4505 This continuation function receives the same stack | |
4506 from the previous function, | |
4507 with the <code>n</code> results removed and | |
4508 replaced by the arguments passed to <a href="#lua_resume"><code>lua_resume</code></a>. | |
4509 Moreover, | |
4510 the continuation function receives the value <code>ctx</code> | |
4511 that was passed to <a href="#lua_yieldk"><code>lua_yieldk</code></a>. | |
4512 | |
4513 | |
4514 <p> | |
4515 Usually, this function does not return; | |
4516 when the coroutine eventually resumes, | |
4517 it continues executing the continuation function. | |
4518 However, there is one special case, | |
4519 which is when this function is called | |
4520 from inside a line hook (see <a href="#4.9">§4.9</a>). | |
4521 In that case, <code>lua_yieldk</code> should be called with no continuation | |
4522 (probably in the form of <a href="#lua_yield"><code>lua_yield</code></a>), | |
4523 and the hook should return immediately after the call. | |
4524 Lua will yield and, | |
4525 when the coroutine resumes again, | |
4526 it will continue the normal execution | |
4527 of the (Lua) function that triggered the hook. | |
4528 | |
4529 | |
4530 <p> | |
4531 This function can raise an error if it is called from a thread | |
4532 with a pending C call with no continuation function, | |
4533 or it is called from a thread that is not running inside a resume | |
4534 (e.g., the main thread). | |
4535 | |
4536 | |
4537 | |
4538 | |
4539 | |
4540 | |
4541 | |
4542 <h2>4.9 – <a name="4.9">The Debug Interface</a></h2> | |
4543 | |
4544 <p> | |
4545 Lua has no built-in debugging facilities. | |
4546 Instead, it offers a special interface | |
4547 by means of functions and <em>hooks</em>. | |
4548 This interface allows the construction of different | |
4549 kinds of debuggers, profilers, and other tools | |
4550 that need "inside information" from the interpreter. | |
4551 | |
4552 | |
4553 | |
4554 <hr><h3><a name="lua_Debug"><code>lua_Debug</code></a></h3> | |
4555 <pre>typedef struct lua_Debug { | |
4556 int event; | |
4557 const char *name; /* (n) */ | |
4558 const char *namewhat; /* (n) */ | |
4559 const char *what; /* (S) */ | |
4560 const char *source; /* (S) */ | |
4561 int currentline; /* (l) */ | |
4562 int linedefined; /* (S) */ | |
4563 int lastlinedefined; /* (S) */ | |
4564 unsigned char nups; /* (u) number of upvalues */ | |
4565 unsigned char nparams; /* (u) number of parameters */ | |
4566 char isvararg; /* (u) */ | |
4567 char istailcall; /* (t) */ | |
4568 char short_src[LUA_IDSIZE]; /* (S) */ | |
4569 /* private part */ | |
4570 <em>other fields</em> | |
4571 } lua_Debug;</pre> | |
4572 | |
4573 <p> | |
4574 A structure used to carry different pieces of | |
4575 information about a function or an activation record. | |
4576 <a href="#lua_getstack"><code>lua_getstack</code></a> fills only the private part | |
4577 of this structure, for later use. | |
4578 To fill the other fields of <a href="#lua_Debug"><code>lua_Debug</code></a> with useful information, | |
4579 call <a href="#lua_getinfo"><code>lua_getinfo</code></a>. | |
4580 | |
4581 | |
4582 <p> | |
4583 The fields of <a href="#lua_Debug"><code>lua_Debug</code></a> have the following meaning: | |
4584 | |
4585 <ul> | |
4586 | |
4587 <li><b><code>source</code>: </b> | |
4588 the name of the chunk that created the function. | |
4589 If <code>source</code> starts with a '<code>@</code>', | |
4590 it means that the function was defined in a file where | |
4591 the file name follows the '<code>@</code>'. | |
4592 If <code>source</code> starts with a '<code>=</code>', | |
4593 the remainder of its contents describe the source in a user-dependent manner. | |
4594 Otherwise, | |
4595 the function was defined in a string where | |
4596 <code>source</code> is that string. | |
4597 </li> | |
4598 | |
4599 <li><b><code>short_src</code>: </b> | |
4600 a "printable" version of <code>source</code>, to be used in error messages. | |
4601 </li> | |
4602 | |
4603 <li><b><code>linedefined</code>: </b> | |
4604 the line number where the definition of the function starts. | |
4605 </li> | |
4606 | |
4607 <li><b><code>lastlinedefined</code>: </b> | |
4608 the line number where the definition of the function ends. | |
4609 </li> | |
4610 | |
4611 <li><b><code>what</code>: </b> | |
4612 the string <code>"Lua"</code> if the function is a Lua function, | |
4613 <code>"C"</code> if it is a C function, | |
4614 <code>"main"</code> if it is the main part of a chunk. | |
4615 </li> | |
4616 | |
4617 <li><b><code>currentline</code>: </b> | |
4618 the current line where the given function is executing. | |
4619 When no line information is available, | |
4620 <code>currentline</code> is set to -1. | |
4621 </li> | |
4622 | |
4623 <li><b><code>name</code>: </b> | |
4624 a reasonable name for the given function. | |
4625 Because functions in Lua are first-class values, | |
4626 they do not have a fixed name: | |
4627 some functions can be the value of multiple global variables, | |
4628 while others can be stored only in a table field. | |
4629 The <code>lua_getinfo</code> function checks how the function was | |
4630 called to find a suitable name. | |
4631 If it cannot find a name, | |
4632 then <code>name</code> is set to <code>NULL</code>. | |
4633 </li> | |
4634 | |
4635 <li><b><code>namewhat</code>: </b> | |
4636 explains the <code>name</code> field. | |
4637 The value of <code>namewhat</code> can be | |
4638 <code>"global"</code>, <code>"local"</code>, <code>"method"</code>, | |
4639 <code>"field"</code>, <code>"upvalue"</code>, or <code>""</code> (the empty string), | |
4640 according to how the function was called. | |
4641 (Lua uses the empty string when no other option seems to apply.) | |
4642 </li> | |
4643 | |
4644 <li><b><code>istailcall</code>: </b> | |
4645 true if this function invocation was called by a tail call. | |
4646 In this case, the caller of this level is not in the stack. | |
4647 </li> | |
4648 | |
4649 <li><b><code>nups</code>: </b> | |
4650 the number of upvalues of the function. | |
4651 </li> | |
4652 | |
4653 <li><b><code>nparams</code>: </b> | |
4654 the number of fixed parameters of the function | |
4655 (always 0 for C functions). | |
4656 </li> | |
4657 | |
4658 <li><b><code>isvararg</code>: </b> | |
4659 true if the function is a vararg function | |
4660 (always true for C functions). | |
4661 </li> | |
4662 | |
4663 </ul> | |
4664 | |
4665 | |
4666 | |
4667 | |
4668 <hr><h3><a name="lua_gethook"><code>lua_gethook</code></a></h3><p> | |
4669 <span class="apii">[-0, +0, –]</span> | |
4670 <pre>lua_Hook lua_gethook (lua_State *L);</pre> | |
4671 | |
4672 <p> | |
4673 Returns the current hook function. | |
4674 | |
4675 | |
4676 | |
4677 | |
4678 | |
4679 <hr><h3><a name="lua_gethookcount"><code>lua_gethookcount</code></a></h3><p> | |
4680 <span class="apii">[-0, +0, –]</span> | |
4681 <pre>int lua_gethookcount (lua_State *L);</pre> | |
4682 | |
4683 <p> | |
4684 Returns the current hook count. | |
4685 | |
4686 | |
4687 | |
4688 | |
4689 | |
4690 <hr><h3><a name="lua_gethookmask"><code>lua_gethookmask</code></a></h3><p> | |
4691 <span class="apii">[-0, +0, –]</span> | |
4692 <pre>int lua_gethookmask (lua_State *L);</pre> | |
4693 | |
4694 <p> | |
4695 Returns the current hook mask. | |
4696 | |
4697 | |
4698 | |
4699 | |
4700 | |
4701 <hr><h3><a name="lua_getinfo"><code>lua_getinfo</code></a></h3><p> | |
4702 <span class="apii">[-(0|1), +(0|1|2), <em>e</em>]</span> | |
4703 <pre>int lua_getinfo (lua_State *L, const char *what, lua_Debug *ar);</pre> | |
4704 | |
4705 <p> | |
4706 Gets information about a specific function or function invocation. | |
4707 | |
4708 | |
4709 <p> | |
4710 To get information about a function invocation, | |
4711 the parameter <code>ar</code> must be a valid activation record that was | |
4712 filled by a previous call to <a href="#lua_getstack"><code>lua_getstack</code></a> or | |
4713 given as argument to a hook (see <a href="#lua_Hook"><code>lua_Hook</code></a>). | |
4714 | |
4715 | |
4716 <p> | |
4717 To get information about a function you push it onto the stack | |
4718 and start the <code>what</code> string with the character '<code>></code>'. | |
4719 (In that case, | |
4720 <code>lua_getinfo</code> pops the function from the top of the stack.) | |
4721 For instance, to know in which line a function <code>f</code> was defined, | |
4722 you can write the following code: | |
4723 | |
4724 <pre> | |
4725 lua_Debug ar; | |
4726 lua_getglobal(L, "f"); /* get global 'f' */ | |
4727 lua_getinfo(L, ">S", &ar); | |
4728 printf("%d\n", ar.linedefined); | |
4729 </pre> | |
4730 | |
4731 <p> | |
4732 Each character in the string <code>what</code> | |
4733 selects some fields of the structure <code>ar</code> to be filled or | |
4734 a value to be pushed on the stack: | |
4735 | |
4736 <ul> | |
4737 | |
4738 <li><b>'<code>n</code>': </b> fills in the field <code>name</code> and <code>namewhat</code>; | |
4739 </li> | |
4740 | |
4741 <li><b>'<code>S</code>': </b> | |
4742 fills in the fields <code>source</code>, <code>short_src</code>, | |
4743 <code>linedefined</code>, <code>lastlinedefined</code>, and <code>what</code>; | |
4744 </li> | |
4745 | |
4746 <li><b>'<code>l</code>': </b> fills in the field <code>currentline</code>; | |
4747 </li> | |
4748 | |
4749 <li><b>'<code>t</code>': </b> fills in the field <code>istailcall</code>; | |
4750 </li> | |
4751 | |
4752 <li><b>'<code>u</code>': </b> fills in the fields | |
4753 <code>nups</code>, <code>nparams</code>, and <code>isvararg</code>; | |
4754 </li> | |
4755 | |
4756 <li><b>'<code>f</code>': </b> | |
4757 pushes onto the stack the function that is | |
4758 running at the given level; | |
4759 </li> | |
4760 | |
4761 <li><b>'<code>L</code>': </b> | |
4762 pushes onto the stack a table whose indices are the | |
4763 numbers of the lines that are valid on the function. | |
4764 (A <em>valid line</em> is a line with some associated code, | |
4765 that is, a line where you can put a break point. | |
4766 Non-valid lines include empty lines and comments.) | |
4767 | |
4768 | |
4769 <p> | |
4770 If this option is given together with option '<code>f</code>', | |
4771 its table is pushed after the function. | |
4772 </li> | |
4773 | |
4774 </ul> | |
4775 | |
4776 <p> | |
4777 This function returns 0 on error | |
4778 (for instance, an invalid option in <code>what</code>). | |
4779 | |
4780 | |
4781 | |
4782 | |
4783 | |
4784 <hr><h3><a name="lua_getlocal"><code>lua_getlocal</code></a></h3><p> | |
4785 <span class="apii">[-0, +(0|1), –]</span> | |
4786 <pre>const char *lua_getlocal (lua_State *L, const lua_Debug *ar, int n);</pre> | |
4787 | |
4788 <p> | |
4789 Gets information about a local variable of | |
4790 a given activation record or a given function. | |
4791 | |
4792 | |
4793 <p> | |
4794 In the first case, | |
4795 the parameter <code>ar</code> must be a valid activation record that was | |
4796 filled by a previous call to <a href="#lua_getstack"><code>lua_getstack</code></a> or | |
4797 given as argument to a hook (see <a href="#lua_Hook"><code>lua_Hook</code></a>). | |
4798 The index <code>n</code> selects which local variable to inspect; | |
4799 see <a href="#pdf-debug.getlocal"><code>debug.getlocal</code></a> for details about variable indices | |
4800 and names. | |
4801 | |
4802 | |
4803 <p> | |
4804 <a href="#lua_getlocal"><code>lua_getlocal</code></a> pushes the variable's value onto the stack | |
4805 and returns its name. | |
4806 | |
4807 | |
4808 <p> | |
4809 In the second case, <code>ar</code> must be <code>NULL</code> and the function | |
4810 to be inspected must be at the top of the stack. | |
4811 In this case, only parameters of Lua functions are visible | |
4812 (as there is no information about what variables are active) | |
4813 and no values are pushed onto the stack. | |
4814 | |
4815 | |
4816 <p> | |
4817 Returns <code>NULL</code> (and pushes nothing) | |
4818 when the index is greater than | |
4819 the number of active local variables. | |
4820 | |
4821 | |
4822 | |
4823 | |
4824 | |
4825 <hr><h3><a name="lua_getstack"><code>lua_getstack</code></a></h3><p> | |
4826 <span class="apii">[-0, +0, –]</span> | |
4827 <pre>int lua_getstack (lua_State *L, int level, lua_Debug *ar);</pre> | |
4828 | |
4829 <p> | |
4830 Gets information about the interpreter runtime stack. | |
4831 | |
4832 | |
4833 <p> | |
4834 This function fills parts of a <a href="#lua_Debug"><code>lua_Debug</code></a> structure with | |
4835 an identification of the <em>activation record</em> | |
4836 of the function executing at a given level. | |
4837 Level 0 is the current running function, | |
4838 whereas level <em>n+1</em> is the function that has called level <em>n</em> | |
4839 (except for tail calls, which do not count on the stack). | |
4840 When there are no errors, <a href="#lua_getstack"><code>lua_getstack</code></a> returns 1; | |
4841 when called with a level greater than the stack depth, | |
4842 it returns 0. | |
4843 | |
4844 | |
4845 | |
4846 | |
4847 | |
4848 <hr><h3><a name="lua_getupvalue"><code>lua_getupvalue</code></a></h3><p> | |
4849 <span class="apii">[-0, +(0|1), –]</span> | |
4850 <pre>const char *lua_getupvalue (lua_State *L, int funcindex, int n);</pre> | |
4851 | |
4852 <p> | |
4853 Gets information about a closure's upvalue. | |
4854 (For Lua functions, | |
4855 upvalues are the external local variables that the function uses, | |
4856 and that are consequently included in its closure.) | |
4857 <a href="#lua_getupvalue"><code>lua_getupvalue</code></a> gets the index <code>n</code> of an upvalue, | |
4858 pushes the upvalue's value onto the stack, | |
4859 and returns its name. | |
4860 <code>funcindex</code> points to the closure in the stack. | |
4861 (Upvalues have no particular order, | |
4862 as they are active through the whole function. | |
4863 So, they are numbered in an arbitrary order.) | |
4864 | |
4865 | |
4866 <p> | |
4867 Returns <code>NULL</code> (and pushes nothing) | |
4868 when the index is greater than the number of upvalues. | |
4869 For C functions, this function uses the empty string <code>""</code> | |
4870 as a name for all upvalues. | |
4871 | |
4872 | |
4873 | |
4874 | |
4875 | |
4876 <hr><h3><a name="lua_Hook"><code>lua_Hook</code></a></h3> | |
4877 <pre>typedef void (*lua_Hook) (lua_State *L, lua_Debug *ar);</pre> | |
4878 | |
4879 <p> | |
4880 Type for debugging hook functions. | |
4881 | |
4882 | |
4883 <p> | |
4884 Whenever a hook is called, its <code>ar</code> argument has its field | |
4885 <code>event</code> set to the specific event that triggered the hook. | |
4886 Lua identifies these events with the following constants: | |
4887 <a name="pdf-LUA_HOOKCALL"><code>LUA_HOOKCALL</code></a>, <a name="pdf-LUA_HOOKRET"><code>LUA_HOOKRET</code></a>, | |
4888 <a name="pdf-LUA_HOOKTAILCALL"><code>LUA_HOOKTAILCALL</code></a>, <a name="pdf-LUA_HOOKLINE"><code>LUA_HOOKLINE</code></a>, | |
4889 and <a name="pdf-LUA_HOOKCOUNT"><code>LUA_HOOKCOUNT</code></a>. | |
4890 Moreover, for line events, the field <code>currentline</code> is also set. | |
4891 To get the value of any other field in <code>ar</code>, | |
4892 the hook must call <a href="#lua_getinfo"><code>lua_getinfo</code></a>. | |
4893 | |
4894 | |
4895 <p> | |
4896 For call events, <code>event</code> can be <code>LUA_HOOKCALL</code>, | |
4897 the normal value, or <code>LUA_HOOKTAILCALL</code>, for a tail call; | |
4898 in this case, there will be no corresponding return event. | |
4899 | |
4900 | |
4901 <p> | |
4902 While Lua is running a hook, it disables other calls to hooks. | |
4903 Therefore, if a hook calls back Lua to execute a function or a chunk, | |
4904 this execution occurs without any calls to hooks. | |
4905 | |
4906 | |
4907 <p> | |
4908 Hook functions cannot have continuations, | |
4909 that is, they cannot call <a href="#lua_yieldk"><code>lua_yieldk</code></a>, | |
4910 <a href="#lua_pcallk"><code>lua_pcallk</code></a>, or <a href="#lua_callk"><code>lua_callk</code></a> with a non-null <code>k</code>. | |
4911 | |
4912 | |
4913 <p> | |
4914 Hook functions can yield under the following conditions: | |
4915 Only count and line events can yield | |
4916 and they cannot yield any value; | |
4917 to yield a hook function must finish its execution | |
4918 calling <a href="#lua_yield"><code>lua_yield</code></a> with <code>nresults</code> equal to zero. | |
4919 | |
4920 | |
4921 | |
4922 | |
4923 | |
4924 <hr><h3><a name="lua_sethook"><code>lua_sethook</code></a></h3><p> | |
4925 <span class="apii">[-0, +0, –]</span> | |
4926 <pre>void lua_sethook (lua_State *L, lua_Hook f, int mask, int count);</pre> | |
4927 | |
4928 <p> | |
4929 Sets the debugging hook function. | |
4930 | |
4931 | |
4932 <p> | |
4933 Argument <code>f</code> is the hook function. | |
4934 <code>mask</code> specifies on which events the hook will be called: | |
4935 it is formed by a bitwise or of the constants | |
4936 <a name="pdf-LUA_MASKCALL"><code>LUA_MASKCALL</code></a>, | |
4937 <a name="pdf-LUA_MASKRET"><code>LUA_MASKRET</code></a>, | |
4938 <a name="pdf-LUA_MASKLINE"><code>LUA_MASKLINE</code></a>, | |
4939 and <a name="pdf-LUA_MASKCOUNT"><code>LUA_MASKCOUNT</code></a>. | |
4940 The <code>count</code> argument is only meaningful when the mask | |
4941 includes <code>LUA_MASKCOUNT</code>. | |
4942 For each event, the hook is called as explained below: | |
4943 | |
4944 <ul> | |
4945 | |
4946 <li><b>The call hook: </b> is called when the interpreter calls a function. | |
4947 The hook is called just after Lua enters the new function, | |
4948 before the function gets its arguments. | |
4949 </li> | |
4950 | |
4951 <li><b>The return hook: </b> is called when the interpreter returns from a function. | |
4952 The hook is called just before Lua leaves the function. | |
4953 There is no standard way to access the values | |
4954 to be returned by the function. | |
4955 </li> | |
4956 | |
4957 <li><b>The line hook: </b> is called when the interpreter is about to | |
4958 start the execution of a new line of code, | |
4959 or when it jumps back in the code (even to the same line). | |
4960 (This event only happens while Lua is executing a Lua function.) | |
4961 </li> | |
4962 | |
4963 <li><b>The count hook: </b> is called after the interpreter executes every | |
4964 <code>count</code> instructions. | |
4965 (This event only happens while Lua is executing a Lua function.) | |
4966 </li> | |
4967 | |
4968 </ul> | |
4969 | |
4970 <p> | |
4971 A hook is disabled by setting <code>mask</code> to zero. | |
4972 | |
4973 | |
4974 | |
4975 | |
4976 | |
4977 <hr><h3><a name="lua_setlocal"><code>lua_setlocal</code></a></h3><p> | |
4978 <span class="apii">[-(0|1), +0, –]</span> | |
4979 <pre>const char *lua_setlocal (lua_State *L, const lua_Debug *ar, int n);</pre> | |
4980 | |
4981 <p> | |
4982 Sets the value of a local variable of a given activation record. | |
4983 Parameters <code>ar</code> and <code>n</code> are as in <a href="#lua_getlocal"><code>lua_getlocal</code></a> | |
4984 (see <a href="#lua_getlocal"><code>lua_getlocal</code></a>). | |
4985 <a href="#lua_setlocal"><code>lua_setlocal</code></a> assigns the value at the top of the stack | |
4986 to the variable and returns its name. | |
4987 It also pops the value from the stack. | |
4988 | |
4989 | |
4990 <p> | |
4991 Returns <code>NULL</code> (and pops nothing) | |
4992 when the index is greater than | |
4993 the number of active local variables. | |
4994 | |
4995 | |
4996 | |
4997 | |
4998 | |
4999 <hr><h3><a name="lua_setupvalue"><code>lua_setupvalue</code></a></h3><p> | |
5000 <span class="apii">[-(0|1), +0, –]</span> | |
5001 <pre>const char *lua_setupvalue (lua_State *L, int funcindex, int n);</pre> | |
5002 | |
5003 <p> | |
5004 Sets the value of a closure's upvalue. | |
5005 It assigns the value at the top of the stack | |
5006 to the upvalue and returns its name. | |
5007 It also pops the value from the stack. | |
5008 Parameters <code>funcindex</code> and <code>n</code> are as in the <a href="#lua_getupvalue"><code>lua_getupvalue</code></a> | |
5009 (see <a href="#lua_getupvalue"><code>lua_getupvalue</code></a>). | |
5010 | |
5011 | |
5012 <p> | |
5013 Returns <code>NULL</code> (and pops nothing) | |
5014 when the index is greater than the number of upvalues. | |
5015 | |
5016 | |
5017 | |
5018 | |
5019 | |
5020 <hr><h3><a name="lua_upvalueid"><code>lua_upvalueid</code></a></h3><p> | |
5021 <span class="apii">[-0, +0, –]</span> | |
5022 <pre>void *lua_upvalueid (lua_State *L, int funcindex, int n);</pre> | |
5023 | |
5024 <p> | |
5025 Returns a unique identifier for the upvalue numbered <code>n</code> | |
5026 from the closure at index <code>funcindex</code>. | |
5027 Parameters <code>funcindex</code> and <code>n</code> are as in the <a href="#lua_getupvalue"><code>lua_getupvalue</code></a> | |
5028 (see <a href="#lua_getupvalue"><code>lua_getupvalue</code></a>) | |
5029 (but <code>n</code> cannot be greater than the number of upvalues). | |
5030 | |
5031 | |
5032 <p> | |
5033 These unique identifiers allow a program to check whether different | |
5034 closures share upvalues. | |
5035 Lua closures that share an upvalue | |
5036 (that is, that access a same external local variable) | |
5037 will return identical ids for those upvalue indices. | |
5038 | |
5039 | |
5040 | |
5041 | |
5042 | |
5043 <hr><h3><a name="lua_upvaluejoin"><code>lua_upvaluejoin</code></a></h3><p> | |
5044 <span class="apii">[-0, +0, –]</span> | |
5045 <pre>void lua_upvaluejoin (lua_State *L, int funcindex1, int n1, | |
5046 int funcindex2, int n2);</pre> | |
5047 | |
5048 <p> | |
5049 Make the <code>n1</code>-th upvalue of the Lua closure at index <code>funcindex1</code> | |
5050 refer to the <code>n2</code>-th upvalue of the Lua closure at index <code>funcindex2</code>. | |
5051 | |
5052 | |
5053 | |
5054 | |
5055 | |
5056 | |
5057 | |
5058 <h1>5 – <a name="5">The Auxiliary Library</a></h1> | |
5059 | |
5060 <p> | |
5061 | |
5062 The <em>auxiliary library</em> provides several convenient functions | |
5063 to interface C with Lua. | |
5064 While the basic API provides the primitive functions for all | |
5065 interactions between C and Lua, | |
5066 the auxiliary library provides higher-level functions for some | |
5067 common tasks. | |
5068 | |
5069 | |
5070 <p> | |
5071 All functions and types from the auxiliary library | |
5072 are defined in header file <code>lauxlib.h</code> and | |
5073 have a prefix <code>luaL_</code>. | |
5074 | |
5075 | |
5076 <p> | |
5077 All functions in the auxiliary library are built on | |
5078 top of the basic API, | |
5079 and so they provide nothing that cannot be done with that API. | |
5080 Nevertheless, the use of the auxiliary library ensures | |
5081 more consistency to your code. | |
5082 | |
5083 | |
5084 <p> | |
5085 Several functions in the auxiliary library use internally some | |
5086 extra stack slots. | |
5087 When a function in the auxiliary library uses less than five slots, | |
5088 it does not check the stack size; | |
5089 it simply assumes that there are enough slots. | |
5090 | |
5091 | |
5092 <p> | |
5093 Several functions in the auxiliary library are used to | |
5094 check C function arguments. | |
5095 Because the error message is formatted for arguments | |
5096 (e.g., "<code>bad argument #1</code>"), | |
5097 you should not use these functions for other stack values. | |
5098 | |
5099 | |
5100 <p> | |
5101 Functions called <code>luaL_check*</code> | |
5102 always raise an error if the check is not satisfied. | |
5103 | |
5104 | |
5105 | |
5106 <h2>5.1 – <a name="5.1">Functions and Types</a></h2> | |
5107 | |
5108 <p> | |
5109 Here we list all functions and types from the auxiliary library | |
5110 in alphabetical order. | |
5111 | |
5112 | |
5113 | |
5114 <hr><h3><a name="luaL_addchar"><code>luaL_addchar</code></a></h3><p> | |
5115 <span class="apii">[-?, +?, <em>e</em>]</span> | |
5116 <pre>void luaL_addchar (luaL_Buffer *B, char c);</pre> | |
5117 | |
5118 <p> | |
5119 Adds the byte <code>c</code> to the buffer <code>B</code> | |
5120 (see <a href="#luaL_Buffer"><code>luaL_Buffer</code></a>). | |
5121 | |
5122 | |
5123 | |
5124 | |
5125 | |
5126 <hr><h3><a name="luaL_addlstring"><code>luaL_addlstring</code></a></h3><p> | |
5127 <span class="apii">[-?, +?, <em>e</em>]</span> | |
5128 <pre>void luaL_addlstring (luaL_Buffer *B, const char *s, size_t l);</pre> | |
5129 | |
5130 <p> | |
5131 Adds the string pointed to by <code>s</code> with length <code>l</code> to | |
5132 the buffer <code>B</code> | |
5133 (see <a href="#luaL_Buffer"><code>luaL_Buffer</code></a>). | |
5134 The string can contain embedded zeros. | |
5135 | |
5136 | |
5137 | |
5138 | |
5139 | |
5140 <hr><h3><a name="luaL_addsize"><code>luaL_addsize</code></a></h3><p> | |
5141 <span class="apii">[-?, +?, <em>e</em>]</span> | |
5142 <pre>void luaL_addsize (luaL_Buffer *B, size_t n);</pre> | |
5143 | |
5144 <p> | |
5145 Adds to the buffer <code>B</code> (see <a href="#luaL_Buffer"><code>luaL_Buffer</code></a>) | |
5146 a string of length <code>n</code> previously copied to the | |
5147 buffer area (see <a href="#luaL_prepbuffer"><code>luaL_prepbuffer</code></a>). | |
5148 | |
5149 | |
5150 | |
5151 | |
5152 | |
5153 <hr><h3><a name="luaL_addstring"><code>luaL_addstring</code></a></h3><p> | |
5154 <span class="apii">[-?, +?, <em>e</em>]</span> | |
5155 <pre>void luaL_addstring (luaL_Buffer *B, const char *s);</pre> | |
5156 | |
5157 <p> | |
5158 Adds the zero-terminated string pointed to by <code>s</code> | |
5159 to the buffer <code>B</code> | |
5160 (see <a href="#luaL_Buffer"><code>luaL_Buffer</code></a>). | |
5161 | |
5162 | |
5163 | |
5164 | |
5165 | |
5166 <hr><h3><a name="luaL_addvalue"><code>luaL_addvalue</code></a></h3><p> | |
5167 <span class="apii">[-1, +?, <em>e</em>]</span> | |
5168 <pre>void luaL_addvalue (luaL_Buffer *B);</pre> | |
5169 | |
5170 <p> | |
5171 Adds the value at the top of the stack | |
5172 to the buffer <code>B</code> | |
5173 (see <a href="#luaL_Buffer"><code>luaL_Buffer</code></a>). | |
5174 Pops the value. | |
5175 | |
5176 | |
5177 <p> | |
5178 This is the only function on string buffers that can (and must) | |
5179 be called with an extra element on the stack, | |
5180 which is the value to be added to the buffer. | |
5181 | |
5182 | |
5183 | |
5184 | |
5185 | |
5186 <hr><h3><a name="luaL_argcheck"><code>luaL_argcheck</code></a></h3><p> | |
5187 <span class="apii">[-0, +0, <em>v</em>]</span> | |
5188 <pre>void luaL_argcheck (lua_State *L, | |
5189 int cond, | |
5190 int arg, | |
5191 const char *extramsg);</pre> | |
5192 | |
5193 <p> | |
5194 Checks whether <code>cond</code> is true. | |
5195 If it is not, raises an error with a standard message (see <a href="#luaL_argerror"><code>luaL_argerror</code></a>). | |
5196 | |
5197 | |
5198 | |
5199 | |
5200 | |
5201 <hr><h3><a name="luaL_argerror"><code>luaL_argerror</code></a></h3><p> | |
5202 <span class="apii">[-0, +0, <em>v</em>]</span> | |
5203 <pre>int luaL_argerror (lua_State *L, int arg, const char *extramsg);</pre> | |
5204 | |
5205 <p> | |
5206 Raises an error reporting a problem with argument <code>arg</code> | |
5207 of the C function that called it, | |
5208 using a standard message | |
5209 that includes <code>extramsg</code> as a comment: | |
5210 | |
5211 <pre> | |
5212 bad argument #<em>arg</em> to '<em>funcname</em>' (<em>extramsg</em>) | |
5213 </pre><p> | |
5214 This function never returns. | |
5215 | |
5216 | |
5217 | |
5218 | |
5219 | |
5220 <hr><h3><a name="luaL_Buffer"><code>luaL_Buffer</code></a></h3> | |
5221 <pre>typedef struct luaL_Buffer luaL_Buffer;</pre> | |
5222 | |
5223 <p> | |
5224 Type for a <em>string buffer</em>. | |
5225 | |
5226 | |
5227 <p> | |
5228 A string buffer allows C code to build Lua strings piecemeal. | |
5229 Its pattern of use is as follows: | |
5230 | |
5231 <ul> | |
5232 | |
5233 <li>First declare a variable <code>b</code> of type <a href="#luaL_Buffer"><code>luaL_Buffer</code></a>.</li> | |
5234 | |
5235 <li>Then initialize it with a call <code>luaL_buffinit(L, &b)</code>.</li> | |
5236 | |
5237 <li> | |
5238 Then add string pieces to the buffer calling any of | |
5239 the <code>luaL_add*</code> functions. | |
5240 </li> | |
5241 | |
5242 <li> | |
5243 Finish by calling <code>luaL_pushresult(&b)</code>. | |
5244 This call leaves the final string on the top of the stack. | |
5245 </li> | |
5246 | |
5247 </ul> | |
5248 | |
5249 <p> | |
5250 If you know beforehand the total size of the resulting string, | |
5251 you can use the buffer like this: | |
5252 | |
5253 <ul> | |
5254 | |
5255 <li>First declare a variable <code>b</code> of type <a href="#luaL_Buffer"><code>luaL_Buffer</code></a>.</li> | |
5256 | |
5257 <li>Then initialize it and preallocate a space of | |
5258 size <code>sz</code> with a call <code>luaL_buffinitsize(L, &b, sz)</code>.</li> | |
5259 | |
5260 <li>Then copy the string into that space.</li> | |
5261 | |
5262 <li> | |
5263 Finish by calling <code>luaL_pushresultsize(&b, sz)</code>, | |
5264 where <code>sz</code> is the total size of the resulting string | |
5265 copied into that space. | |
5266 </li> | |
5267 | |
5268 </ul> | |
5269 | |
5270 <p> | |
5271 During its normal operation, | |
5272 a string buffer uses a variable number of stack slots. | |
5273 So, while using a buffer, you cannot assume that you know where | |
5274 the top of the stack is. | |
5275 You can use the stack between successive calls to buffer operations | |
5276 as long as that use is balanced; | |
5277 that is, | |
5278 when you call a buffer operation, | |
5279 the stack is at the same level | |
5280 it was immediately after the previous buffer operation. | |
5281 (The only exception to this rule is <a href="#luaL_addvalue"><code>luaL_addvalue</code></a>.) | |
5282 After calling <a href="#luaL_pushresult"><code>luaL_pushresult</code></a> the stack is back to its | |
5283 level when the buffer was initialized, | |
5284 plus the final string on its top. | |
5285 | |
5286 | |
5287 | |
5288 | |
5289 | |
5290 <hr><h3><a name="luaL_buffinit"><code>luaL_buffinit</code></a></h3><p> | |
5291 <span class="apii">[-0, +0, –]</span> | |
5292 <pre>void luaL_buffinit (lua_State *L, luaL_Buffer *B);</pre> | |
5293 | |
5294 <p> | |
5295 Initializes a buffer <code>B</code>. | |
5296 This function does not allocate any space; | |
5297 the buffer must be declared as a variable | |
5298 (see <a href="#luaL_Buffer"><code>luaL_Buffer</code></a>). | |
5299 | |
5300 | |
5301 | |
5302 | |
5303 | |
5304 <hr><h3><a name="luaL_buffinitsize"><code>luaL_buffinitsize</code></a></h3><p> | |
5305 <span class="apii">[-?, +?, <em>e</em>]</span> | |
5306 <pre>char *luaL_buffinitsize (lua_State *L, luaL_Buffer *B, size_t sz);</pre> | |
5307 | |
5308 <p> | |
5309 Equivalent to the sequence | |
5310 <a href="#luaL_buffinit"><code>luaL_buffinit</code></a>, <a href="#luaL_prepbuffsize"><code>luaL_prepbuffsize</code></a>. | |
5311 | |
5312 | |
5313 | |
5314 | |
5315 | |
5316 <hr><h3><a name="luaL_callmeta"><code>luaL_callmeta</code></a></h3><p> | |
5317 <span class="apii">[-0, +(0|1), <em>e</em>]</span> | |
5318 <pre>int luaL_callmeta (lua_State *L, int obj, const char *e);</pre> | |
5319 | |
5320 <p> | |
5321 Calls a metamethod. | |
5322 | |
5323 | |
5324 <p> | |
5325 If the object at index <code>obj</code> has a metatable and this | |
5326 metatable has a field <code>e</code>, | |
5327 this function calls this field passing the object as its only argument. | |
5328 In this case this function returns true and pushes onto the | |
5329 stack the value returned by the call. | |
5330 If there is no metatable or no metamethod, | |
5331 this function returns false (without pushing any value on the stack). | |
5332 | |
5333 | |
5334 | |
5335 | |
5336 | |
5337 <hr><h3><a name="luaL_checkany"><code>luaL_checkany</code></a></h3><p> | |
5338 <span class="apii">[-0, +0, <em>v</em>]</span> | |
5339 <pre>void luaL_checkany (lua_State *L, int arg);</pre> | |
5340 | |
5341 <p> | |
5342 Checks whether the function has an argument | |
5343 of any type (including <b>nil</b>) at position <code>arg</code>. | |
5344 | |
5345 | |
5346 | |
5347 | |
5348 | |
5349 <hr><h3><a name="luaL_checkinteger"><code>luaL_checkinteger</code></a></h3><p> | |
5350 <span class="apii">[-0, +0, <em>v</em>]</span> | |
5351 <pre>lua_Integer luaL_checkinteger (lua_State *L, int arg);</pre> | |
5352 | |
5353 <p> | |
5354 Checks whether the function argument <code>arg</code> is an integer | |
5355 (or can be converted to an integer) | |
5356 and returns this integer cast to a <a href="#lua_Integer"><code>lua_Integer</code></a>. | |
5357 | |
5358 | |
5359 | |
5360 | |
5361 | |
5362 <hr><h3><a name="luaL_checklstring"><code>luaL_checklstring</code></a></h3><p> | |
5363 <span class="apii">[-0, +0, <em>v</em>]</span> | |
5364 <pre>const char *luaL_checklstring (lua_State *L, int arg, size_t *l);</pre> | |
5365 | |
5366 <p> | |
5367 Checks whether the function argument <code>arg</code> is a string | |
5368 and returns this string; | |
5369 if <code>l</code> is not <code>NULL</code> fills <code>*l</code> | |
5370 with the string's length. | |
5371 | |
5372 | |
5373 <p> | |
5374 This function uses <a href="#lua_tolstring"><code>lua_tolstring</code></a> to get its result, | |
5375 so all conversions and caveats of that function apply here. | |
5376 | |
5377 | |
5378 | |
5379 | |
5380 | |
5381 <hr><h3><a name="luaL_checknumber"><code>luaL_checknumber</code></a></h3><p> | |
5382 <span class="apii">[-0, +0, <em>v</em>]</span> | |
5383 <pre>lua_Number luaL_checknumber (lua_State *L, int arg);</pre> | |
5384 | |
5385 <p> | |
5386 Checks whether the function argument <code>arg</code> is a number | |
5387 and returns this number. | |
5388 | |
5389 | |
5390 | |
5391 | |
5392 | |
5393 <hr><h3><a name="luaL_checkoption"><code>luaL_checkoption</code></a></h3><p> | |
5394 <span class="apii">[-0, +0, <em>v</em>]</span> | |
5395 <pre>int luaL_checkoption (lua_State *L, | |
5396 int arg, | |
5397 const char *def, | |
5398 const char *const lst[]);</pre> | |
5399 | |
5400 <p> | |
5401 Checks whether the function argument <code>arg</code> is a string and | |
5402 searches for this string in the array <code>lst</code> | |
5403 (which must be NULL-terminated). | |
5404 Returns the index in the array where the string was found. | |
5405 Raises an error if the argument is not a string or | |
5406 if the string cannot be found. | |
5407 | |
5408 | |
5409 <p> | |
5410 If <code>def</code> is not <code>NULL</code>, | |
5411 the function uses <code>def</code> as a default value when | |
5412 there is no argument <code>arg</code> or when this argument is <b>nil</b>. | |
5413 | |
5414 | |
5415 <p> | |
5416 This is a useful function for mapping strings to C enums. | |
5417 (The usual convention in Lua libraries is | |
5418 to use strings instead of numbers to select options.) | |
5419 | |
5420 | |
5421 | |
5422 | |
5423 | |
5424 <hr><h3><a name="luaL_checkstack"><code>luaL_checkstack</code></a></h3><p> | |
5425 <span class="apii">[-0, +0, <em>v</em>]</span> | |
5426 <pre>void luaL_checkstack (lua_State *L, int sz, const char *msg);</pre> | |
5427 | |
5428 <p> | |
5429 Grows the stack size to <code>top + sz</code> elements, | |
5430 raising an error if the stack cannot grow to that size. | |
5431 <code>msg</code> is an additional text to go into the error message | |
5432 (or <code>NULL</code> for no additional text). | |
5433 | |
5434 | |
5435 | |
5436 | |
5437 | |
5438 <hr><h3><a name="luaL_checkstring"><code>luaL_checkstring</code></a></h3><p> | |
5439 <span class="apii">[-0, +0, <em>v</em>]</span> | |
5440 <pre>const char *luaL_checkstring (lua_State *L, int arg);</pre> | |
5441 | |
5442 <p> | |
5443 Checks whether the function argument <code>arg</code> is a string | |
5444 and returns this string. | |
5445 | |
5446 | |
5447 <p> | |
5448 This function uses <a href="#lua_tolstring"><code>lua_tolstring</code></a> to get its result, | |
5449 so all conversions and caveats of that function apply here. | |
5450 | |
5451 | |
5452 | |
5453 | |
5454 | |
5455 <hr><h3><a name="luaL_checktype"><code>luaL_checktype</code></a></h3><p> | |
5456 <span class="apii">[-0, +0, <em>v</em>]</span> | |
5457 <pre>void luaL_checktype (lua_State *L, int arg, int t);</pre> | |
5458 | |
5459 <p> | |
5460 Checks whether the function argument <code>arg</code> has type <code>t</code>. | |
5461 See <a href="#lua_type"><code>lua_type</code></a> for the encoding of types for <code>t</code>. | |
5462 | |
5463 | |
5464 | |
5465 | |
5466 | |
5467 <hr><h3><a name="luaL_checkudata"><code>luaL_checkudata</code></a></h3><p> | |
5468 <span class="apii">[-0, +0, <em>v</em>]</span> | |
5469 <pre>void *luaL_checkudata (lua_State *L, int arg, const char *tname);</pre> | |
5470 | |
5471 <p> | |
5472 Checks whether the function argument <code>arg</code> is a userdata | |
5473 of the type <code>tname</code> (see <a href="#luaL_newmetatable"><code>luaL_newmetatable</code></a>) and | |
5474 returns the userdata address (see <a href="#lua_touserdata"><code>lua_touserdata</code></a>). | |
5475 | |
5476 | |
5477 | |
5478 | |
5479 | |
5480 <hr><h3><a name="luaL_checkversion"><code>luaL_checkversion</code></a></h3><p> | |
5481 <span class="apii">[-0, +0, –]</span> | |
5482 <pre>void luaL_checkversion (lua_State *L);</pre> | |
5483 | |
5484 <p> | |
5485 Checks whether the core running the call, | |
5486 the core that created the Lua state, | |
5487 and the code making the call are all using the same version of Lua. | |
5488 Also checks whether the core running the call | |
5489 and the core that created the Lua state | |
5490 are using the same address space. | |
5491 | |
5492 | |
5493 | |
5494 | |
5495 | |
5496 <hr><h3><a name="luaL_dofile"><code>luaL_dofile</code></a></h3><p> | |
5497 <span class="apii">[-0, +?, <em>e</em>]</span> | |
5498 <pre>int luaL_dofile (lua_State *L, const char *filename);</pre> | |
5499 | |
5500 <p> | |
5501 Loads and runs the given file. | |
5502 It is defined as the following macro: | |
5503 | |
5504 <pre> | |
5505 (luaL_loadfile(L, filename) || lua_pcall(L, 0, LUA_MULTRET, 0)) | |
5506 </pre><p> | |
5507 It returns false if there are no errors | |
5508 or true in case of errors. | |
5509 | |
5510 | |
5511 | |
5512 | |
5513 | |
5514 <hr><h3><a name="luaL_dostring"><code>luaL_dostring</code></a></h3><p> | |
5515 <span class="apii">[-0, +?, –]</span> | |
5516 <pre>int luaL_dostring (lua_State *L, const char *str);</pre> | |
5517 | |
5518 <p> | |
5519 Loads and runs the given string. | |
5520 It is defined as the following macro: | |
5521 | |
5522 <pre> | |
5523 (luaL_loadstring(L, str) || lua_pcall(L, 0, LUA_MULTRET, 0)) | |
5524 </pre><p> | |
5525 It returns false if there are no errors | |
5526 or true in case of errors. | |
5527 | |
5528 | |
5529 | |
5530 | |
5531 | |
5532 <hr><h3><a name="luaL_error"><code>luaL_error</code></a></h3><p> | |
5533 <span class="apii">[-0, +0, <em>v</em>]</span> | |
5534 <pre>int luaL_error (lua_State *L, const char *fmt, ...);</pre> | |
5535 | |
5536 <p> | |
5537 Raises an error. | |
5538 The error message format is given by <code>fmt</code> | |
5539 plus any extra arguments, | |
5540 following the same rules of <a href="#lua_pushfstring"><code>lua_pushfstring</code></a>. | |
5541 It also adds at the beginning of the message the file name and | |
5542 the line number where the error occurred, | |
5543 if this information is available. | |
5544 | |
5545 | |
5546 <p> | |
5547 This function never returns, | |
5548 but it is an idiom to use it in C functions | |
5549 as <code>return luaL_error(<em>args</em>)</code>. | |
5550 | |
5551 | |
5552 | |
5553 | |
5554 | |
5555 <hr><h3><a name="luaL_execresult"><code>luaL_execresult</code></a></h3><p> | |
5556 <span class="apii">[-0, +3, <em>e</em>]</span> | |
5557 <pre>int luaL_execresult (lua_State *L, int stat);</pre> | |
5558 | |
5559 <p> | |
5560 This function produces the return values for | |
5561 process-related functions in the standard library | |
5562 (<a href="#pdf-os.execute"><code>os.execute</code></a> and <a href="#pdf-io.close"><code>io.close</code></a>). | |
5563 | |
5564 | |
5565 | |
5566 | |
5567 | |
5568 <hr><h3><a name="luaL_fileresult"><code>luaL_fileresult</code></a></h3><p> | |
5569 <span class="apii">[-0, +(1|3), <em>e</em>]</span> | |
5570 <pre>int luaL_fileresult (lua_State *L, int stat, const char *fname);</pre> | |
5571 | |
5572 <p> | |
5573 This function produces the return values for | |
5574 file-related functions in the standard library | |
5575 (<a href="#pdf-io.open"><code>io.open</code></a>, <a href="#pdf-os.rename"><code>os.rename</code></a>, <a href="#pdf-file:seek"><code>file:seek</code></a>, etc.). | |
5576 | |
5577 | |
5578 | |
5579 | |
5580 | |
5581 <hr><h3><a name="luaL_getmetafield"><code>luaL_getmetafield</code></a></h3><p> | |
5582 <span class="apii">[-0, +(0|1), <em>e</em>]</span> | |
5583 <pre>int luaL_getmetafield (lua_State *L, int obj, const char *e);</pre> | |
5584 | |
5585 <p> | |
5586 Pushes onto the stack the field <code>e</code> from the metatable | |
5587 of the object at index <code>obj</code> and returns the type of pushed value. | |
5588 If the object does not have a metatable, | |
5589 or if the metatable does not have this field, | |
5590 pushes nothing and returns <code>LUA_TNIL</code>. | |
5591 | |
5592 | |
5593 | |
5594 | |
5595 | |
5596 <hr><h3><a name="luaL_getmetatable"><code>luaL_getmetatable</code></a></h3><p> | |
5597 <span class="apii">[-0, +1, –]</span> | |
5598 <pre>int luaL_getmetatable (lua_State *L, const char *tname);</pre> | |
5599 | |
5600 <p> | |
5601 Pushes onto the stack the metatable associated with name <code>tname</code> | |
5602 in the registry (see <a href="#luaL_newmetatable"><code>luaL_newmetatable</code></a>). | |
5603 If there is no metatable associated with <code>tname</code>, | |
5604 returns false and pushes <b>nil</b>. | |
5605 | |
5606 | |
5607 | |
5608 | |
5609 | |
5610 <hr><h3><a name="luaL_getsubtable"><code>luaL_getsubtable</code></a></h3><p> | |
5611 <span class="apii">[-0, +1, <em>e</em>]</span> | |
5612 <pre>int luaL_getsubtable (lua_State *L, int idx, const char *fname);</pre> | |
5613 | |
5614 <p> | |
5615 Ensures that the value <code>t[fname]</code>, | |
5616 where <code>t</code> is the value at index <code>idx</code>, | |
5617 is a table, | |
5618 and pushes that table onto the stack. | |
5619 Returns true if it finds a previous table there | |
5620 and false if it creates a new table. | |
5621 | |
5622 | |
5623 | |
5624 | |
5625 | |
5626 <hr><h3><a name="luaL_gsub"><code>luaL_gsub</code></a></h3><p> | |
5627 <span class="apii">[-0, +1, <em>e</em>]</span> | |
5628 <pre>const char *luaL_gsub (lua_State *L, | |
5629 const char *s, | |
5630 const char *p, | |
5631 const char *r);</pre> | |
5632 | |
5633 <p> | |
5634 Creates a copy of string <code>s</code> by replacing | |
5635 any occurrence of the string <code>p</code> | |
5636 with the string <code>r</code>. | |
5637 Pushes the resulting string on the stack and returns it. | |
5638 | |
5639 | |
5640 | |
5641 | |
5642 | |
5643 <hr><h3><a name="luaL_len"><code>luaL_len</code></a></h3><p> | |
5644 <span class="apii">[-0, +0, <em>e</em>]</span> | |
5645 <pre>lua_Integer luaL_len (lua_State *L, int index);</pre> | |
5646 | |
5647 <p> | |
5648 Returns the "length" of the value at the given index | |
5649 as a number; | |
5650 it is equivalent to the '<code>#</code>' operator in Lua (see <a href="#3.4.7">§3.4.7</a>). | |
5651 Raises an error if the result of the operation is not an integer. | |
5652 (This case only can happen through metamethods.) | |
5653 | |
5654 | |
5655 | |
5656 | |
5657 | |
5658 <hr><h3><a name="luaL_loadbuffer"><code>luaL_loadbuffer</code></a></h3><p> | |
5659 <span class="apii">[-0, +1, –]</span> | |
5660 <pre>int luaL_loadbuffer (lua_State *L, | |
5661 const char *buff, | |
5662 size_t sz, | |
5663 const char *name);</pre> | |
5664 | |
5665 <p> | |
5666 Equivalent to <a href="#luaL_loadbufferx"><code>luaL_loadbufferx</code></a> with <code>mode</code> equal to <code>NULL</code>. | |
5667 | |
5668 | |
5669 | |
5670 | |
5671 | |
5672 <hr><h3><a name="luaL_loadbufferx"><code>luaL_loadbufferx</code></a></h3><p> | |
5673 <span class="apii">[-0, +1, –]</span> | |
5674 <pre>int luaL_loadbufferx (lua_State *L, | |
5675 const char *buff, | |
5676 size_t sz, | |
5677 const char *name, | |
5678 const char *mode);</pre> | |
5679 | |
5680 <p> | |
5681 Loads a buffer as a Lua chunk. | |
5682 This function uses <a href="#lua_load"><code>lua_load</code></a> to load the chunk in the | |
5683 buffer pointed to by <code>buff</code> with size <code>sz</code>. | |
5684 | |
5685 | |
5686 <p> | |
5687 This function returns the same results as <a href="#lua_load"><code>lua_load</code></a>. | |
5688 <code>name</code> is the chunk name, | |
5689 used for debug information and error messages. | |
5690 The string <code>mode</code> works as in function <a href="#lua_load"><code>lua_load</code></a>. | |
5691 | |
5692 | |
5693 | |
5694 | |
5695 | |
5696 <hr><h3><a name="luaL_loadfile"><code>luaL_loadfile</code></a></h3><p> | |
5697 <span class="apii">[-0, +1, <em>e</em>]</span> | |
5698 <pre>int luaL_loadfile (lua_State *L, const char *filename);</pre> | |
5699 | |
5700 <p> | |
5701 Equivalent to <a href="#luaL_loadfilex"><code>luaL_loadfilex</code></a> with <code>mode</code> equal to <code>NULL</code>. | |
5702 | |
5703 | |
5704 | |
5705 | |
5706 | |
5707 <hr><h3><a name="luaL_loadfilex"><code>luaL_loadfilex</code></a></h3><p> | |
5708 <span class="apii">[-0, +1, <em>e</em>]</span> | |
5709 <pre>int luaL_loadfilex (lua_State *L, const char *filename, | |
5710 const char *mode);</pre> | |
5711 | |
5712 <p> | |
5713 Loads a file as a Lua chunk. | |
5714 This function uses <a href="#lua_load"><code>lua_load</code></a> to load the chunk in the file | |
5715 named <code>filename</code>. | |
5716 If <code>filename</code> is <code>NULL</code>, | |
5717 then it loads from the standard input. | |
5718 The first line in the file is ignored if it starts with a <code>#</code>. | |
5719 | |
5720 | |
5721 <p> | |
5722 The string <code>mode</code> works as in function <a href="#lua_load"><code>lua_load</code></a>. | |
5723 | |
5724 | |
5725 <p> | |
5726 This function returns the same results as <a href="#lua_load"><code>lua_load</code></a>, | |
5727 but it has an extra error code <a name="pdf-LUA_ERRFILE"><code>LUA_ERRFILE</code></a> | |
5728 if it cannot open/read the file or the file has a wrong mode. | |
5729 | |
5730 | |
5731 <p> | |
5732 As <a href="#lua_load"><code>lua_load</code></a>, this function only loads the chunk; | |
5733 it does not run it. | |
5734 | |
5735 | |
5736 | |
5737 | |
5738 | |
5739 <hr><h3><a name="luaL_loadstring"><code>luaL_loadstring</code></a></h3><p> | |
5740 <span class="apii">[-0, +1, –]</span> | |
5741 <pre>int luaL_loadstring (lua_State *L, const char *s);</pre> | |
5742 | |
5743 <p> | |
5744 Loads a string as a Lua chunk. | |
5745 This function uses <a href="#lua_load"><code>lua_load</code></a> to load the chunk in | |
5746 the zero-terminated string <code>s</code>. | |
5747 | |
5748 | |
5749 <p> | |
5750 This function returns the same results as <a href="#lua_load"><code>lua_load</code></a>. | |
5751 | |
5752 | |
5753 <p> | |
5754 Also as <a href="#lua_load"><code>lua_load</code></a>, this function only loads the chunk; | |
5755 it does not run it. | |
5756 | |
5757 | |
5758 | |
5759 | |
5760 | |
5761 <hr><h3><a name="luaL_newlib"><code>luaL_newlib</code></a></h3><p> | |
5762 <span class="apii">[-0, +1, <em>e</em>]</span> | |
5763 <pre>void luaL_newlib (lua_State *L, const luaL_Reg l[]);</pre> | |
5764 | |
5765 <p> | |
5766 Creates a new table and registers there | |
5767 the functions in list <code>l</code>. | |
5768 | |
5769 | |
5770 <p> | |
5771 It is implemented as the following macro: | |
5772 | |
5773 <pre> | |
5774 (luaL_newlibtable(L,l), luaL_setfuncs(L,l,0)) | |
5775 </pre><p> | |
5776 The array <code>l</code> must be the actual array, | |
5777 not a pointer to it. | |
5778 | |
5779 | |
5780 | |
5781 | |
5782 | |
5783 <hr><h3><a name="luaL_newlibtable"><code>luaL_newlibtable</code></a></h3><p> | |
5784 <span class="apii">[-0, +1, <em>e</em>]</span> | |
5785 <pre>void luaL_newlibtable (lua_State *L, const luaL_Reg l[]);</pre> | |
5786 | |
5787 <p> | |
5788 Creates a new table with a size optimized | |
5789 to store all entries in the array <code>l</code> | |
5790 (but does not actually store them). | |
5791 It is intended to be used in conjunction with <a href="#luaL_setfuncs"><code>luaL_setfuncs</code></a> | |
5792 (see <a href="#luaL_newlib"><code>luaL_newlib</code></a>). | |
5793 | |
5794 | |
5795 <p> | |
5796 It is implemented as a macro. | |
5797 The array <code>l</code> must be the actual array, | |
5798 not a pointer to it. | |
5799 | |
5800 | |
5801 | |
5802 | |
5803 | |
5804 <hr><h3><a name="luaL_newmetatable"><code>luaL_newmetatable</code></a></h3><p> | |
5805 <span class="apii">[-0, +1, <em>e</em>]</span> | |
5806 <pre>int luaL_newmetatable (lua_State *L, const char *tname);</pre> | |
5807 | |
5808 <p> | |
5809 If the registry already has the key <code>tname</code>, | |
5810 returns 0. | |
5811 Otherwise, | |
5812 creates a new table to be used as a metatable for userdata, | |
5813 adds to this new table the pair <code>__name = tname</code>, | |
5814 adds to the registry the pair <code>[tname] = new table</code>, | |
5815 and returns 1. | |
5816 (The entry <code>__name</code> is used by some error-reporting functions.) | |
5817 | |
5818 | |
5819 <p> | |
5820 In both cases pushes onto the stack the final value associated | |
5821 with <code>tname</code> in the registry. | |
5822 | |
5823 | |
5824 | |
5825 | |
5826 | |
5827 <hr><h3><a name="luaL_newstate"><code>luaL_newstate</code></a></h3><p> | |
5828 <span class="apii">[-0, +0, –]</span> | |
5829 <pre>lua_State *luaL_newstate (void);</pre> | |
5830 | |
5831 <p> | |
5832 Creates a new Lua state. | |
5833 It calls <a href="#lua_newstate"><code>lua_newstate</code></a> with an | |
5834 allocator based on the standard C <code>realloc</code> function | |
5835 and then sets a panic function (see <a href="#4.6">§4.6</a>) that prints | |
5836 an error message to the standard error output in case of fatal | |
5837 errors. | |
5838 | |
5839 | |
5840 <p> | |
5841 Returns the new state, | |
5842 or <code>NULL</code> if there is a memory allocation error. | |
5843 | |
5844 | |
5845 | |
5846 | |
5847 | |
5848 <hr><h3><a name="luaL_openlibs"><code>luaL_openlibs</code></a></h3><p> | |
5849 <span class="apii">[-0, +0, <em>e</em>]</span> | |
5850 <pre>void luaL_openlibs (lua_State *L);</pre> | |
5851 | |
5852 <p> | |
5853 Opens all standard Lua libraries into the given state. | |
5854 | |
5855 | |
5856 | |
5857 | |
5858 | |
5859 <hr><h3><a name="luaL_optinteger"><code>luaL_optinteger</code></a></h3><p> | |
5860 <span class="apii">[-0, +0, <em>v</em>]</span> | |
5861 <pre>lua_Integer luaL_optinteger (lua_State *L, | |
5862 int arg, | |
5863 lua_Integer d);</pre> | |
5864 | |
5865 <p> | |
5866 If the function argument <code>arg</code> is an integer | |
5867 (or convertible to an integer), | |
5868 returns this integer. | |
5869 If this argument is absent or is <b>nil</b>, | |
5870 returns <code>d</code>. | |
5871 Otherwise, raises an error. | |
5872 | |
5873 | |
5874 | |
5875 | |
5876 | |
5877 <hr><h3><a name="luaL_optlstring"><code>luaL_optlstring</code></a></h3><p> | |
5878 <span class="apii">[-0, +0, <em>v</em>]</span> | |
5879 <pre>const char *luaL_optlstring (lua_State *L, | |
5880 int arg, | |
5881 const char *d, | |
5882 size_t *l);</pre> | |
5883 | |
5884 <p> | |
5885 If the function argument <code>arg</code> is a string, | |
5886 returns this string. | |
5887 If this argument is absent or is <b>nil</b>, | |
5888 returns <code>d</code>. | |
5889 Otherwise, raises an error. | |
5890 | |
5891 | |
5892 <p> | |
5893 If <code>l</code> is not <code>NULL</code>, | |
5894 fills the position <code>*l</code> with the result's length. | |
5895 | |
5896 | |
5897 | |
5898 | |
5899 | |
5900 <hr><h3><a name="luaL_optnumber"><code>luaL_optnumber</code></a></h3><p> | |
5901 <span class="apii">[-0, +0, <em>v</em>]</span> | |
5902 <pre>lua_Number luaL_optnumber (lua_State *L, int arg, lua_Number d);</pre> | |
5903 | |
5904 <p> | |
5905 If the function argument <code>arg</code> is a number, | |
5906 returns this number. | |
5907 If this argument is absent or is <b>nil</b>, | |
5908 returns <code>d</code>. | |
5909 Otherwise, raises an error. | |
5910 | |
5911 | |
5912 | |
5913 | |
5914 | |
5915 <hr><h3><a name="luaL_optstring"><code>luaL_optstring</code></a></h3><p> | |
5916 <span class="apii">[-0, +0, <em>v</em>]</span> | |
5917 <pre>const char *luaL_optstring (lua_State *L, | |
5918 int arg, | |
5919 const char *d);</pre> | |
5920 | |
5921 <p> | |
5922 If the function argument <code>arg</code> is a string, | |
5923 returns this string. | |
5924 If this argument is absent or is <b>nil</b>, | |
5925 returns <code>d</code>. | |
5926 Otherwise, raises an error. | |
5927 | |
5928 | |
5929 | |
5930 | |
5931 | |
5932 <hr><h3><a name="luaL_prepbuffer"><code>luaL_prepbuffer</code></a></h3><p> | |
5933 <span class="apii">[-?, +?, <em>e</em>]</span> | |
5934 <pre>char *luaL_prepbuffer (luaL_Buffer *B);</pre> | |
5935 | |
5936 <p> | |
5937 Equivalent to <a href="#luaL_prepbuffsize"><code>luaL_prepbuffsize</code></a> | |
5938 with the predefined size <a name="pdf-LUAL_BUFFERSIZE"><code>LUAL_BUFFERSIZE</code></a>. | |
5939 | |
5940 | |
5941 | |
5942 | |
5943 | |
5944 <hr><h3><a name="luaL_prepbuffsize"><code>luaL_prepbuffsize</code></a></h3><p> | |
5945 <span class="apii">[-?, +?, <em>e</em>]</span> | |
5946 <pre>char *luaL_prepbuffsize (luaL_Buffer *B, size_t sz);</pre> | |
5947 | |
5948 <p> | |
5949 Returns an address to a space of size <code>sz</code> | |
5950 where you can copy a string to be added to buffer <code>B</code> | |
5951 (see <a href="#luaL_Buffer"><code>luaL_Buffer</code></a>). | |
5952 After copying the string into this space you must call | |
5953 <a href="#luaL_addsize"><code>luaL_addsize</code></a> with the size of the string to actually add | |
5954 it to the buffer. | |
5955 | |
5956 | |
5957 | |
5958 | |
5959 | |
5960 <hr><h3><a name="luaL_pushresult"><code>luaL_pushresult</code></a></h3><p> | |
5961 <span class="apii">[-?, +1, <em>e</em>]</span> | |
5962 <pre>void luaL_pushresult (luaL_Buffer *B);</pre> | |
5963 | |
5964 <p> | |
5965 Finishes the use of buffer <code>B</code> leaving the final string on | |
5966 the top of the stack. | |
5967 | |
5968 | |
5969 | |
5970 | |
5971 | |
5972 <hr><h3><a name="luaL_pushresultsize"><code>luaL_pushresultsize</code></a></h3><p> | |
5973 <span class="apii">[-?, +1, <em>e</em>]</span> | |
5974 <pre>void luaL_pushresultsize (luaL_Buffer *B, size_t sz);</pre> | |
5975 | |
5976 <p> | |
5977 Equivalent to the sequence <a href="#luaL_addsize"><code>luaL_addsize</code></a>, <a href="#luaL_pushresult"><code>luaL_pushresult</code></a>. | |
5978 | |
5979 | |
5980 | |
5981 | |
5982 | |
5983 <hr><h3><a name="luaL_ref"><code>luaL_ref</code></a></h3><p> | |
5984 <span class="apii">[-1, +0, <em>e</em>]</span> | |
5985 <pre>int luaL_ref (lua_State *L, int t);</pre> | |
5986 | |
5987 <p> | |
5988 Creates and returns a <em>reference</em>, | |
5989 in the table at index <code>t</code>, | |
5990 for the object at the top of the stack (and pops the object). | |
5991 | |
5992 | |
5993 <p> | |
5994 A reference is a unique integer key. | |
5995 As long as you do not manually add integer keys into table <code>t</code>, | |
5996 <a href="#luaL_ref"><code>luaL_ref</code></a> ensures the uniqueness of the key it returns. | |
5997 You can retrieve an object referred by reference <code>r</code> | |
5998 by calling <code>lua_rawgeti(L, t, r)</code>. | |
5999 Function <a href="#luaL_unref"><code>luaL_unref</code></a> frees a reference and its associated object. | |
6000 | |
6001 | |
6002 <p> | |
6003 If the object at the top of the stack is <b>nil</b>, | |
6004 <a href="#luaL_ref"><code>luaL_ref</code></a> returns the constant <a name="pdf-LUA_REFNIL"><code>LUA_REFNIL</code></a>. | |
6005 The constant <a name="pdf-LUA_NOREF"><code>LUA_NOREF</code></a> is guaranteed to be different | |
6006 from any reference returned by <a href="#luaL_ref"><code>luaL_ref</code></a>. | |
6007 | |
6008 | |
6009 | |
6010 | |
6011 | |
6012 <hr><h3><a name="luaL_Reg"><code>luaL_Reg</code></a></h3> | |
6013 <pre>typedef struct luaL_Reg { | |
6014 const char *name; | |
6015 lua_CFunction func; | |
6016 } luaL_Reg;</pre> | |
6017 | |
6018 <p> | |
6019 Type for arrays of functions to be registered by | |
6020 <a href="#luaL_setfuncs"><code>luaL_setfuncs</code></a>. | |
6021 <code>name</code> is the function name and <code>func</code> is a pointer to | |
6022 the function. | |
6023 Any array of <a href="#luaL_Reg"><code>luaL_Reg</code></a> must end with a sentinel entry | |
6024 in which both <code>name</code> and <code>func</code> are <code>NULL</code>. | |
6025 | |
6026 | |
6027 | |
6028 | |
6029 | |
6030 <hr><h3><a name="luaL_requiref"><code>luaL_requiref</code></a></h3><p> | |
6031 <span class="apii">[-0, +1, <em>e</em>]</span> | |
6032 <pre>void luaL_requiref (lua_State *L, const char *modname, | |
6033 lua_CFunction openf, int glb);</pre> | |
6034 | |
6035 <p> | |
6036 If <code>modname</code> is not already present in <a href="#pdf-package.loaded"><code>package.loaded</code></a>, | |
6037 calls function <code>openf</code> with string <code>modname</code> as an argument | |
6038 and sets the call result in <code>package.loaded[modname]</code>, | |
6039 as if that function has been called through <a href="#pdf-require"><code>require</code></a>. | |
6040 | |
6041 | |
6042 <p> | |
6043 If <code>glb</code> is true, | |
6044 also stores the module into global <code>modname</code>. | |
6045 | |
6046 | |
6047 <p> | |
6048 Leaves a copy of the module on the stack. | |
6049 | |
6050 | |
6051 | |
6052 | |
6053 | |
6054 <hr><h3><a name="luaL_setfuncs"><code>luaL_setfuncs</code></a></h3><p> | |
6055 <span class="apii">[-nup, +0, <em>e</em>]</span> | |
6056 <pre>void luaL_setfuncs (lua_State *L, const luaL_Reg *l, int nup);</pre> | |
6057 | |
6058 <p> | |
6059 Registers all functions in the array <code>l</code> | |
6060 (see <a href="#luaL_Reg"><code>luaL_Reg</code></a>) into the table on the top of the stack | |
6061 (below optional upvalues, see next). | |
6062 | |
6063 | |
6064 <p> | |
6065 When <code>nup</code> is not zero, | |
6066 all functions are created sharing <code>nup</code> upvalues, | |
6067 which must be previously pushed on the stack | |
6068 on top of the library table. | |
6069 These values are popped from the stack after the registration. | |
6070 | |
6071 | |
6072 | |
6073 | |
6074 | |
6075 <hr><h3><a name="luaL_setmetatable"><code>luaL_setmetatable</code></a></h3><p> | |
6076 <span class="apii">[-0, +0, –]</span> | |
6077 <pre>void luaL_setmetatable (lua_State *L, const char *tname);</pre> | |
6078 | |
6079 <p> | |
6080 Sets the metatable of the object at the top of the stack | |
6081 as the metatable associated with name <code>tname</code> | |
6082 in the registry (see <a href="#luaL_newmetatable"><code>luaL_newmetatable</code></a>). | |
6083 | |
6084 | |
6085 | |
6086 | |
6087 | |
6088 <hr><h3><a name="luaL_Stream"><code>luaL_Stream</code></a></h3> | |
6089 <pre>typedef struct luaL_Stream { | |
6090 FILE *f; | |
6091 lua_CFunction closef; | |
6092 } luaL_Stream;</pre> | |
6093 | |
6094 <p> | |
6095 The standard representation for file handles, | |
6096 which is used by the standard I/O library. | |
6097 | |
6098 | |
6099 <p> | |
6100 A file handle is implemented as a full userdata, | |
6101 with a metatable called <code>LUA_FILEHANDLE</code> | |
6102 (where <code>LUA_FILEHANDLE</code> is a macro with the actual metatable's name). | |
6103 The metatable is created by the I/O library | |
6104 (see <a href="#luaL_newmetatable"><code>luaL_newmetatable</code></a>). | |
6105 | |
6106 | |
6107 <p> | |
6108 This userdata must start with the structure <code>luaL_Stream</code>; | |
6109 it can contain other data after this initial structure. | |
6110 Field <code>f</code> points to the corresponding C stream | |
6111 (or it can be <code>NULL</code> to indicate an incompletely created handle). | |
6112 Field <code>closef</code> points to a Lua function | |
6113 that will be called to close the stream | |
6114 when the handle is closed or collected; | |
6115 this function receives the file handle as its sole argument and | |
6116 must return either <b>true</b> (in case of success) | |
6117 or <b>nil</b> plus an error message (in case of error). | |
6118 Once Lua calls this field, | |
6119 the field value is changed to <code>NULL</code> | |
6120 to signal that the handle is closed. | |
6121 | |
6122 | |
6123 | |
6124 | |
6125 | |
6126 <hr><h3><a name="luaL_testudata"><code>luaL_testudata</code></a></h3><p> | |
6127 <span class="apii">[-0, +0, <em>e</em>]</span> | |
6128 <pre>void *luaL_testudata (lua_State *L, int arg, const char *tname);</pre> | |
6129 | |
6130 <p> | |
6131 This function works like <a href="#luaL_checkudata"><code>luaL_checkudata</code></a>, | |
6132 except that, when the test fails, | |
6133 it returns <code>NULL</code> instead of raising an error. | |
6134 | |
6135 | |
6136 | |
6137 | |
6138 | |
6139 <hr><h3><a name="luaL_tolstring"><code>luaL_tolstring</code></a></h3><p> | |
6140 <span class="apii">[-0, +1, <em>e</em>]</span> | |
6141 <pre>const char *luaL_tolstring (lua_State *L, int idx, size_t *len);</pre> | |
6142 | |
6143 <p> | |
6144 Converts any Lua value at the given index to a C string | |
6145 in a reasonable format. | |
6146 The resulting string is pushed onto the stack and also | |
6147 returned by the function. | |
6148 If <code>len</code> is not <code>NULL</code>, | |
6149 the function also sets <code>*len</code> with the string length. | |
6150 | |
6151 | |
6152 <p> | |
6153 If the value has a metatable with a <code>"__tostring"</code> field, | |
6154 then <code>luaL_tolstring</code> calls the corresponding metamethod | |
6155 with the value as argument, | |
6156 and uses the result of the call as its result. | |
6157 | |
6158 | |
6159 | |
6160 | |
6161 | |
6162 <hr><h3><a name="luaL_traceback"><code>luaL_traceback</code></a></h3><p> | |
6163 <span class="apii">[-0, +1, <em>e</em>]</span> | |
6164 <pre>void luaL_traceback (lua_State *L, lua_State *L1, const char *msg, | |
6165 int level);</pre> | |
6166 | |
6167 <p> | |
6168 Creates and pushes a traceback of the stack <code>L1</code>. | |
6169 If <code>msg</code> is not <code>NULL</code> it is appended | |
6170 at the beginning of the traceback. | |
6171 The <code>level</code> parameter tells at which level | |
6172 to start the traceback. | |
6173 | |
6174 | |
6175 | |
6176 | |
6177 | |
6178 <hr><h3><a name="luaL_typename"><code>luaL_typename</code></a></h3><p> | |
6179 <span class="apii">[-0, +0, –]</span> | |
6180 <pre>const char *luaL_typename (lua_State *L, int index);</pre> | |
6181 | |
6182 <p> | |
6183 Returns the name of the type of the value at the given index. | |
6184 | |
6185 | |
6186 | |
6187 | |
6188 | |
6189 <hr><h3><a name="luaL_unref"><code>luaL_unref</code></a></h3><p> | |
6190 <span class="apii">[-0, +0, –]</span> | |
6191 <pre>void luaL_unref (lua_State *L, int t, int ref);</pre> | |
6192 | |
6193 <p> | |
6194 Releases reference <code>ref</code> from the table at index <code>t</code> | |
6195 (see <a href="#luaL_ref"><code>luaL_ref</code></a>). | |
6196 The entry is removed from the table, | |
6197 so that the referred object can be collected. | |
6198 The reference <code>ref</code> is also freed to be used again. | |
6199 | |
6200 | |
6201 <p> | |
6202 If <code>ref</code> is <a href="#pdf-LUA_NOREF"><code>LUA_NOREF</code></a> or <a href="#pdf-LUA_REFNIL"><code>LUA_REFNIL</code></a>, | |
6203 <a href="#luaL_unref"><code>luaL_unref</code></a> does nothing. | |
6204 | |
6205 | |
6206 | |
6207 | |
6208 | |
6209 <hr><h3><a name="luaL_where"><code>luaL_where</code></a></h3><p> | |
6210 <span class="apii">[-0, +1, <em>e</em>]</span> | |
6211 <pre>void luaL_where (lua_State *L, int lvl);</pre> | |
6212 | |
6213 <p> | |
6214 Pushes onto the stack a string identifying the current position | |
6215 of the control at level <code>lvl</code> in the call stack. | |
6216 Typically this string has the following format: | |
6217 | |
6218 <pre> | |
6219 <em>chunkname</em>:<em>currentline</em>: | |
6220 </pre><p> | |
6221 Level 0 is the running function, | |
6222 level 1 is the function that called the running function, | |
6223 etc. | |
6224 | |
6225 | |
6226 <p> | |
6227 This function is used to build a prefix for error messages. | |
6228 | |
6229 | |
6230 | 1759 |
6231 | 1760 |
6232 | 1761 |
6233 | 1762 |
6234 | 1763 |