xref: /freebsd/contrib/lua/doc/manual.html (revision 9768746b)
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<HTML>
3<HEAD>
4<TITLE>Lua 5.4 Reference Manual</TITLE>
5<LINK REL="stylesheet" TYPE="text/css" HREF="lua.css">
6<LINK REL="stylesheet" TYPE="text/css" HREF="manual.css">
7<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=iso-8859-1">
8</HEAD>
9
10<BODY>
11
12<H1>
13<A HREF="http://www.lua.org/"><IMG SRC="logo.gif" ALT="Lua"></A>
14Lua 5.4 Reference Manual
15</H1>
16
17<P>
18by Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes
19
20<P>
21<SMALL>
22Copyright &copy; 2020&ndash;2022 Lua.org, PUC-Rio.
23Freely available under the terms of the
24<a href="http://www.lua.org/license.html">Lua license</a>.
25</SMALL>
26
27<DIV CLASS="menubar">
28<A HREF="contents.html#contents">contents</A>
29&middot;
30<A HREF="contents.html#index">index</A>
31&middot;
32<A HREF="http://www.lua.org/manual/">other versions</A>
33</DIV>
34
35<!-- ====================================================================== -->
36<p>
37
38<!-- $Id: manual.of $ -->
39
40
41
42
43<h1>1 &ndash; <a name="1">Introduction</a></h1>
44
45<p>
46Lua is a powerful, efficient, lightweight, embeddable scripting language.
47It supports procedural programming,
48object-oriented programming, functional programming,
49data-driven programming, and data description.
50
51
52<p>
53Lua combines simple procedural syntax with powerful data description
54constructs based on associative arrays and extensible semantics.
55Lua is dynamically typed,
56runs by interpreting bytecode with a register-based
57virtual machine,
58and has automatic memory management with
59a generational garbage collection,
60making it ideal for configuration, scripting,
61and rapid prototyping.
62
63
64<p>
65Lua is implemented as a library, written in <em>clean C</em>,
66the common subset of Standard&nbsp;C and C++.
67The Lua distribution includes a host program called <code>lua</code>,
68which uses the Lua library to offer a complete,
69standalone Lua interpreter,
70for interactive or batch use.
71Lua is intended to be used both as a powerful, lightweight,
72embeddable scripting language for any program that needs one,
73and as a powerful but lightweight and efficient stand-alone language.
74
75
76<p>
77As an extension language, Lua has no notion of a "main" program:
78it works <em>embedded</em> in a host client,
79called the <em>embedding program</em> or simply the <em>host</em>.
80(Frequently, this host is the stand-alone <code>lua</code> program.)
81The host program can invoke functions to execute a piece of Lua code,
82can write and read Lua variables,
83and can register C&nbsp;functions to be called by Lua code.
84Through the use of C&nbsp;functions, Lua can be augmented to cope with
85a wide range of different domains,
86thus creating customized programming languages sharing a syntactical framework.
87
88
89<p>
90Lua is free software,
91and is provided as usual with no guarantees,
92as stated in its license.
93The implementation described in this manual is available
94at Lua's official web site, <code>www.lua.org</code>.
95
96
97<p>
98Like any other reference manual,
99this document is dry in places.
100For a discussion of the decisions behind the design of Lua,
101see the technical papers available at Lua's web site.
102For a detailed introduction to programming in Lua,
103see Roberto's book, <em>Programming in Lua</em>.
104
105
106
107<h1>2 &ndash; <a name="2">Basic Concepts</a></h1>
108
109
110
111<p>
112This section describes the basic concepts of the language.
113
114
115
116
117
118<h2>2.1 &ndash; <a name="2.1">Values and Types</a></h2>
119
120<p>
121Lua is a dynamically typed language.
122This means that
123variables do not have types; only values do.
124There are no type definitions in the language.
125All values carry their own type.
126
127
128<p>
129All values in Lua are first-class values.
130This means that all values can be stored in variables,
131passed as arguments to other functions, and returned as results.
132
133
134<p>
135There are eight basic types in Lua:
136<em>nil</em>, <em>boolean</em>, <em>number</em>,
137<em>string</em>, <em>function</em>, <em>userdata</em>,
138<em>thread</em>, and <em>table</em>.
139The type <em>nil</em> has one single value, <b>nil</b>,
140whose main property is to be different from any other value;
141it often represents the absence of a useful value.
142The type <em>boolean</em> has two values, <b>false</b> and <b>true</b>.
143Both <b>nil</b> and <b>false</b> make a condition false;
144they are collectively called <em>false values</em>.
145Any other value makes a condition true.
146Despite its name,
147<b>false</b> is frequently used as an alternative to <b>nil</b>,
148with the key difference that <b>false</b> behaves
149like a regular value in a table,
150while a <b>nil</b> in a table represents an absent key.
151
152
153<p>
154The type <em>number</em> represents both
155integer numbers and real (floating-point) numbers,
156using two subtypes: <em>integer</em> and <em>float</em>.
157Standard Lua uses 64-bit integers and double-precision (64-bit) floats,
158but you can also compile Lua so that it
159uses 32-bit integers and/or single-precision (32-bit) floats.
160The option with 32 bits for both integers and floats
161is particularly attractive
162for small machines and embedded systems.
163(See macro <code>LUA_32BITS</code> in file <code>luaconf.h</code>.)
164
165
166<p>
167Unless stated otherwise,
168any overflow when manipulating integer values <em>wrap around</em>,
169according to the usual rules of two-complement arithmetic.
170(In other words,
171the actual result is the unique representable integer
172that is equal modulo <em>2<sup>n</sup></em> to the mathematical result,
173where <em>n</em> is the number of bits of the integer type.)
174
175
176<p>
177Lua has explicit rules about when each subtype is used,
178but it also converts between them automatically as needed (see <a href="#3.4.3">&sect;3.4.3</a>).
179Therefore,
180the programmer may choose to mostly ignore the difference
181between integers and floats
182or to assume complete control over the representation of each number.
183
184
185<p>
186The type <em>string</em> represents immutable sequences of bytes.
187
188Lua is 8-bit clean:
189strings can contain any 8-bit value,
190including embedded zeros ('<code>\0</code>').
191Lua is also encoding-agnostic;
192it makes no assumptions about the contents of a string.
193The length of any string in Lua must fit in a Lua integer.
194
195
196<p>
197Lua can call (and manipulate) functions written in Lua and
198functions written in C (see <a href="#3.4.10">&sect;3.4.10</a>).
199Both are represented by the type <em>function</em>.
200
201
202<p>
203The type <em>userdata</em> is provided to allow arbitrary C&nbsp;data to
204be stored in Lua variables.
205A userdata value represents a block of raw memory.
206There are two kinds of userdata:
207<em>full userdata</em>,
208which is an object with a block of memory managed by Lua,
209and <em>light userdata</em>,
210which is simply a C&nbsp;pointer value.
211Userdata has no predefined operations in Lua,
212except assignment and identity test.
213By using <em>metatables</em>,
214the programmer can define operations for full userdata values
215(see <a href="#2.4">&sect;2.4</a>).
216Userdata values cannot be created or modified in Lua,
217only through the C&nbsp;API.
218This guarantees the integrity of data owned by
219the host program and C&nbsp;libraries.
220
221
222<p>
223The type <em>thread</em> represents independent threads of execution
224and it is used to implement coroutines (see <a href="#2.6">&sect;2.6</a>).
225Lua threads are not related to operating-system threads.
226Lua supports coroutines on all systems,
227even those that do not support threads natively.
228
229
230<p>
231The type <em>table</em> implements associative arrays,
232that is, arrays that can have as indices not only numbers,
233but any Lua value except <b>nil</b> and NaN.
234(<em>Not a Number</em> is a special floating-point value
235used by the IEEE 754 standard to represent
236undefined numerical results, such as <code>0/0</code>.)
237Tables can be <em>heterogeneous</em>;
238that is, they can contain values of all types (except <b>nil</b>).
239Any key associated to the value <b>nil</b> is not considered part of the table.
240Conversely, any key that is not part of a table has
241an associated value <b>nil</b>.
242
243
244<p>
245Tables are the sole data-structuring mechanism in Lua;
246they can be used to represent ordinary arrays, lists,
247symbol tables, sets, records, graphs, trees, etc.
248To represent records, Lua uses the field name as an index.
249The language supports this representation by
250providing <code>a.name</code> as syntactic sugar for <code>a["name"]</code>.
251There are several convenient ways to create tables in Lua
252(see <a href="#3.4.9">&sect;3.4.9</a>).
253
254
255<p>
256Like indices,
257the values of table fields can be of any type.
258In particular,
259because functions are first-class values,
260table fields can contain functions.
261Thus tables can also carry <em>methods</em> (see <a href="#3.4.11">&sect;3.4.11</a>).
262
263
264<p>
265The indexing of tables follows
266the definition of raw equality in the language.
267The expressions <code>a[i]</code> and <code>a[j]</code>
268denote the same table element
269if and only if <code>i</code> and <code>j</code> are raw equal
270(that is, equal without metamethods).
271In particular, floats with integral values
272are equal to their respective integers
273(e.g., <code>1.0 == 1</code>).
274To avoid ambiguities,
275any float used as a key that is equal to an integer
276is converted to that integer.
277For instance, if you write <code>a[2.0] = true</code>,
278the actual key inserted into the table will be the integer <code>2</code>.
279
280
281<p>
282Tables, functions, threads, and (full) userdata values are <em>objects</em>:
283variables do not actually <em>contain</em> these values,
284only <em>references</em> to them.
285Assignment, parameter passing, and function returns
286always manipulate references to such values;
287these operations do not imply any kind of copy.
288
289
290<p>
291The library function <a href="#pdf-type"><code>type</code></a> returns a string describing the type
292of a given value (see <a href="#pdf-type"><code>type</code></a>).
293
294
295
296
297
298<h2>2.2 &ndash; <a name="2.2">Environments and the Global Environment</a></h2>
299
300<p>
301As we will discuss further in <a href="#3.2">&sect;3.2</a> and <a href="#3.3.3">&sect;3.3.3</a>,
302any reference to a free name
303(that is, a name not bound to any declaration) <code>var</code>
304is syntactically translated to <code>_ENV.var</code>.
305Moreover, every chunk is compiled in the scope of
306an external local variable named <code>_ENV</code> (see <a href="#3.3.2">&sect;3.3.2</a>),
307so <code>_ENV</code> itself is never a free name in a chunk.
308
309
310<p>
311Despite the existence of this external <code>_ENV</code> variable and
312the translation of free names,
313<code>_ENV</code> is a completely regular name.
314In particular,
315you can define new variables and parameters with that name.
316Each reference to a free name uses the <code>_ENV</code> that is
317visible at that point in the program,
318following the usual visibility rules of Lua (see <a href="#3.5">&sect;3.5</a>).
319
320
321<p>
322Any table used as the value of <code>_ENV</code> is called an <em>environment</em>.
323
324
325<p>
326Lua keeps a distinguished environment called the <em>global environment</em>.
327This value is kept at a special index in the C registry (see <a href="#4.3">&sect;4.3</a>).
328In Lua, the global variable <a href="#pdf-_G"><code>_G</code></a> is initialized with this same value.
329(<a href="#pdf-_G"><code>_G</code></a> is never used internally,
330so changing its value will affect only your own code.)
331
332
333<p>
334When Lua loads a chunk,
335the default value for its <code>_ENV</code> variable
336is the global environment (see <a href="#pdf-load"><code>load</code></a>).
337Therefore, by default,
338free names in Lua code refer to entries in the global environment
339and, therefore, they are also called <em>global variables</em>.
340Moreover, all standard libraries are loaded in the global environment
341and some functions there operate on that environment.
342You can use <a href="#pdf-load"><code>load</code></a> (or <a href="#pdf-loadfile"><code>loadfile</code></a>)
343to load a chunk with a different environment.
344(In C, you have to load the chunk and then change the value
345of its first upvalue; see <a href="#lua_setupvalue"><code>lua_setupvalue</code></a>.)
346
347
348
349
350
351<h2>2.3 &ndash; <a name="2.3">Error Handling</a></h2>
352
353<p>
354Several operations in Lua can <em>raise</em> an error.
355An error interrupts the normal flow of the program,
356which can continue by <em>catching</em> the error.
357
358
359<p>
360Lua code can explicitly raise an error by calling the
361<a href="#pdf-error"><code>error</code></a> function.
362(This function never returns.)
363
364
365<p>
366To catch errors in Lua,
367you can do a <em>protected call</em>,
368using <a href="#pdf-pcall"><code>pcall</code></a> (or <a href="#pdf-xpcall"><code>xpcall</code></a>).
369The function <a href="#pdf-pcall"><code>pcall</code></a> calls a given function in <em>protected mode</em>.
370Any error while running the function stops its execution,
371and control returns immediately to <code>pcall</code>,
372which returns a status code.
373
374
375<p>
376Because Lua is an embedded extension language,
377Lua code starts running by a call
378from C&nbsp;code in the host program.
379(When you use Lua standalone,
380the <code>lua</code> application is the host program.)
381Usually, this call is protected;
382so, when an otherwise unprotected error occurs during
383the compilation or execution of a Lua chunk,
384control returns to the host,
385which can take appropriate measures,
386such as printing an error message.
387
388
389<p>
390Whenever there is an error,
391an <em>error object</em>
392is propagated with information about the error.
393Lua itself only generates errors whose error object is a string,
394but programs may generate errors with
395any value as the error object.
396It is up to the Lua program or its host to handle such error objects.
397For historical reasons,
398an error object is often called an <em>error message</em>,
399even though it does not have to be a string.
400
401
402<p>
403When you use <a href="#pdf-xpcall"><code>xpcall</code></a> (or <a href="#lua_pcall"><code>lua_pcall</code></a>, in C)
404you may give a <em>message handler</em>
405to be called in case of errors.
406This function is called with the original error object
407and returns a new error object.
408It is called before the error unwinds the stack,
409so that it can gather more information about the error,
410for instance by inspecting the stack and creating a stack traceback.
411This message handler is still protected by the protected call;
412so, an error inside the message handler
413will call the message handler again.
414If this loop goes on for too long,
415Lua breaks it and returns an appropriate message.
416The message handler is called only for regular runtime errors.
417It is not called for memory-allocation errors
418nor for errors while running finalizers or other message handlers.
419
420
421<p>
422Lua also offers a system of <em>warnings</em> (see <a href="#pdf-warn"><code>warn</code></a>).
423Unlike errors, warnings do not interfere
424in any way with program execution.
425They typically only generate a message to the user,
426although this behavior can be adapted from C (see <a href="#lua_setwarnf"><code>lua_setwarnf</code></a>).
427
428
429
430
431
432<h2>2.4 &ndash; <a name="2.4">Metatables and Metamethods</a></h2>
433
434<p>
435Every value in Lua can have a <em>metatable</em>.
436This <em>metatable</em> is an ordinary Lua table
437that defines the behavior of the original value
438under certain events.
439You can change several aspects of the behavior
440of a value by setting specific fields in its metatable.
441For instance, when a non-numeric value is the operand of an addition,
442Lua checks for a function in the field <code>__add</code> of the value's metatable.
443If it finds one,
444Lua calls this function to perform the addition.
445
446
447<p>
448The key for each event in a metatable is a string
449with the event name prefixed by two underscores;
450the corresponding value is called a <em>metavalue</em>.
451For most events, the metavalue must be a function,
452which is then called a <em>metamethod</em>.
453In the previous example, the key is the string "<code>__add</code>"
454and the metamethod is the function that performs the addition.
455Unless stated otherwise,
456a metamethod may in fact be any callable value,
457which is either a function or a value with a <code>__call</code> metamethod.
458
459
460<p>
461You can query the metatable of any value
462using the <a href="#pdf-getmetatable"><code>getmetatable</code></a> function.
463Lua queries metamethods in metatables using a raw access (see <a href="#pdf-rawget"><code>rawget</code></a>).
464
465
466<p>
467You can replace the metatable of tables
468using the <a href="#pdf-setmetatable"><code>setmetatable</code></a> function.
469You cannot change the metatable of other types from Lua code,
470except by using the debug library (<a href="#6.10">&sect;6.10</a>).
471
472
473<p>
474Tables and full userdata have individual metatables,
475although multiple tables and userdata can share their metatables.
476Values of all other types share one single metatable per type;
477that is, there is one single metatable for all numbers,
478one for all strings, etc.
479By default, a value has no metatable,
480but the string library sets a metatable for the string type (see <a href="#6.4">&sect;6.4</a>).
481
482
483<p>
484A detailed list of operations controlled by metatables is given next.
485Each event is identified by its corresponding key.
486By convention, all metatable keys used by Lua are composed by
487two underscores followed by lowercase Latin letters.
488
489
490
491<ul>
492
493<li><b><code>__add</code>: </b>
494the addition (<code>+</code>) operation.
495If any operand for an addition is not a number,
496Lua will try to call a metamethod.
497It starts by checking the first operand (even if it is a number);
498if that operand does not define a metamethod for <code>__add</code>,
499then Lua will check the second operand.
500If Lua can find a metamethod,
501it calls the metamethod with the two operands as arguments,
502and the result of the call
503(adjusted to one value)
504is the result of the operation.
505Otherwise, if no metamethod is found,
506Lua raises an error.
507</li>
508
509<li><b><code>__sub</code>: </b>
510the subtraction (<code>-</code>) operation.
511Behavior similar to the addition operation.
512</li>
513
514<li><b><code>__mul</code>: </b>
515the multiplication (<code>*</code>) operation.
516Behavior similar to the addition operation.
517</li>
518
519<li><b><code>__div</code>: </b>
520the division (<code>/</code>) operation.
521Behavior similar to the addition operation.
522</li>
523
524<li><b><code>__mod</code>: </b>
525the modulo (<code>%</code>) operation.
526Behavior similar to the addition operation.
527</li>
528
529<li><b><code>__pow</code>: </b>
530the exponentiation (<code>^</code>) operation.
531Behavior similar to the addition operation.
532</li>
533
534<li><b><code>__unm</code>: </b>
535the negation (unary <code>-</code>) operation.
536Behavior similar to the addition operation.
537</li>
538
539<li><b><code>__idiv</code>: </b>
540the floor division (<code>//</code>) operation.
541Behavior similar to the addition operation.
542</li>
543
544<li><b><code>__band</code>: </b>
545the bitwise AND (<code>&amp;</code>) operation.
546Behavior similar to the addition operation,
547except that Lua will try a metamethod
548if any operand is neither an integer
549nor a float coercible to an integer (see <a href="#3.4.3">&sect;3.4.3</a>).
550</li>
551
552<li><b><code>__bor</code>: </b>
553the bitwise OR (<code>|</code>) operation.
554Behavior similar to the bitwise AND operation.
555</li>
556
557<li><b><code>__bxor</code>: </b>
558the bitwise exclusive OR (binary <code>~</code>) operation.
559Behavior similar to the bitwise AND operation.
560</li>
561
562<li><b><code>__bnot</code>: </b>
563the bitwise NOT (unary <code>~</code>) operation.
564Behavior similar to the bitwise AND operation.
565</li>
566
567<li><b><code>__shl</code>: </b>
568the bitwise left shift (<code>&lt;&lt;</code>) operation.
569Behavior similar to the bitwise AND operation.
570</li>
571
572<li><b><code>__shr</code>: </b>
573the bitwise right shift (<code>&gt;&gt;</code>) operation.
574Behavior similar to the bitwise AND operation.
575</li>
576
577<li><b><code>__concat</code>: </b>
578the concatenation (<code>..</code>) operation.
579Behavior similar to the addition operation,
580except that Lua will try a metamethod
581if any operand is neither a string nor a number
582(which is always coercible to a string).
583</li>
584
585<li><b><code>__len</code>: </b>
586the length (<code>#</code>) operation.
587If the object is not a string,
588Lua will try its metamethod.
589If there is a metamethod,
590Lua calls it with the object as argument,
591and the result of the call
592(always adjusted to one value)
593is the result of the operation.
594If there is no metamethod but the object is a table,
595then Lua uses the table length operation (see <a href="#3.4.7">&sect;3.4.7</a>).
596Otherwise, Lua raises an error.
597</li>
598
599<li><b><code>__eq</code>: </b>
600the equal (<code>==</code>) operation.
601Behavior similar to the addition operation,
602except that Lua will try a metamethod only when the values
603being compared are either both tables or both full userdata
604and they are not primitively equal.
605The result of the call is always converted to a boolean.
606</li>
607
608<li><b><code>__lt</code>: </b>
609the less than (<code>&lt;</code>) operation.
610Behavior similar to the addition operation,
611except that Lua will try a metamethod only when the values
612being compared are neither both numbers nor both strings.
613Moreover, the result of the call is always converted to a boolean.
614</li>
615
616<li><b><code>__le</code>: </b>
617the less equal (<code>&lt;=</code>) operation.
618Behavior similar to the less than operation.
619</li>
620
621<li><b><code>__index</code>: </b>
622The indexing access operation <code>table[key]</code>.
623This event happens when <code>table</code> is not a table or
624when <code>key</code> is not present in <code>table</code>.
625The metavalue is looked up in the metatable of <code>table</code>.
626
627
628<p>
629The metavalue for this event can be either a function, a table,
630or any value with an <code>__index</code> metavalue.
631If it is a function,
632it is called with <code>table</code> and <code>key</code> as arguments,
633and the result of the call
634(adjusted to one value)
635is the result of the operation.
636Otherwise,
637the final result is the result of indexing this metavalue with <code>key</code>.
638This indexing is regular, not raw,
639and therefore can trigger another <code>__index</code> metavalue.
640</li>
641
642<li><b><code>__newindex</code>: </b>
643The indexing assignment <code>table[key] = value</code>.
644Like the index event,
645this event happens when <code>table</code> is not a table or
646when <code>key</code> is not present in <code>table</code>.
647The metavalue is looked up in the metatable of <code>table</code>.
648
649
650<p>
651Like with indexing,
652the metavalue for this event can be either a function, a table,
653or any value with an <code>__newindex</code> metavalue.
654If it is a function,
655it is called with <code>table</code>, <code>key</code>, and <code>value</code> as arguments.
656Otherwise,
657Lua repeats the indexing assignment over this metavalue
658with the same key and value.
659This assignment is regular, not raw,
660and therefore can trigger another <code>__newindex</code> metavalue.
661
662
663<p>
664Whenever a <code>__newindex</code> metavalue is invoked,
665Lua does not perform the primitive assignment.
666If needed,
667the metamethod itself can call <a href="#pdf-rawset"><code>rawset</code></a>
668to do the assignment.
669</li>
670
671<li><b><code>__call</code>: </b>
672The call operation <code>func(args)</code>.
673This event happens when Lua tries to call a non-function value
674(that is, <code>func</code> is not a function).
675The metamethod is looked up in <code>func</code>.
676If present,
677the metamethod is called with <code>func</code> as its first argument,
678followed by the arguments of the original call (<code>args</code>).
679All results of the call
680are the results of the operation.
681This is the only metamethod that allows multiple results.
682</li>
683
684</ul>
685
686<p>
687In addition to the previous list,
688the interpreter also respects the following keys in metatables:
689<code>__gc</code> (see <a href="#2.5.3">&sect;2.5.3</a>),
690<code>__close</code> (see <a href="#3.3.8">&sect;3.3.8</a>),
691<code>__mode</code> (see <a href="#2.5.4">&sect;2.5.4</a>),
692and <code>__name</code>.
693(The entry <code>__name</code>,
694when it contains a string,
695may be used by <a href="#pdf-tostring"><code>tostring</code></a> and in error messages.)
696
697
698<p>
699For the unary operators (negation, length, and bitwise NOT),
700the metamethod is computed and called with a dummy second operand,
701equal to the first one.
702This extra operand is only to simplify Lua's internals
703(by making these operators behave like a binary operation)
704and may be removed in future versions.
705For most uses this extra operand is irrelevant.
706
707
708<p>
709Because metatables are regular tables,
710they can contain arbitrary fields,
711not only the event names defined above.
712Some functions in the standard library
713(e.g., <a href="#pdf-tostring"><code>tostring</code></a>)
714use other fields in metatables for their own purposes.
715
716
717<p>
718It is a good practice to add all needed metamethods to a table
719before setting it as a metatable of some object.
720In particular, the <code>__gc</code> metamethod works only when this order
721is followed (see <a href="#2.5.3">&sect;2.5.3</a>).
722It is also a good practice to set the metatable of an object
723right after its creation.
724
725
726
727
728
729<h2>2.5 &ndash; <a name="2.5">Garbage Collection</a></h2>
730
731
732
733<p>
734Lua performs automatic memory management.
735This means that
736you do not have to worry about allocating memory for new objects
737or freeing it when the objects are no longer needed.
738Lua manages memory automatically by running
739a <em>garbage collector</em> to collect all <em>dead</em> objects.
740All memory used by Lua is subject to automatic management:
741strings, tables, userdata, functions, threads, internal structures, etc.
742
743
744<p>
745An object is considered <em>dead</em>
746as soon as the collector can be sure the object
747will not be accessed again in the normal execution of the program.
748("Normal execution" here excludes finalizers,
749which can resurrect dead objects (see <a href="#2.5.3">&sect;2.5.3</a>),
750and excludes also operations using the debug library.)
751Note that the time when the collector can be sure that an object
752is dead may not coincide with the programmer's expectations.
753The only guarantees are that Lua will not collect an object
754that may still be accessed in the normal execution of the program,
755and it will eventually collect an object
756that is inaccessible from Lua.
757(Here,
758<em>inaccessible from Lua</em> means that neither a variable nor
759another live object refer to the object.)
760Because Lua has no knowledge about C&nbsp;code,
761it never collects objects accessible through the registry (see <a href="#4.3">&sect;4.3</a>),
762which includes the global environment (see <a href="#2.2">&sect;2.2</a>).
763
764
765<p>
766The garbage collector (GC) in Lua can work in two modes:
767incremental and generational.
768
769
770<p>
771The default GC mode with the default parameters
772are adequate for most uses.
773However, programs that waste a large proportion of their time
774allocating and freeing memory can benefit from other settings.
775Keep in mind that the GC behavior is non-portable
776both across platforms and across different Lua releases;
777therefore, optimal settings are also non-portable.
778
779
780<p>
781You can change the GC mode and parameters by calling
782<a href="#lua_gc"><code>lua_gc</code></a> in&nbsp;C
783or <a href="#pdf-collectgarbage"><code>collectgarbage</code></a> in Lua.
784You can also use these functions to control
785the collector directly (e.g., to stop and restart it).
786
787
788
789
790
791<h3>2.5.1 &ndash; <a name="2.5.1">Incremental Garbage Collection</a></h3>
792
793<p>
794In incremental mode,
795each GC cycle performs a mark-and-sweep collection in small steps
796interleaved with the program's execution.
797In this mode,
798the collector uses three numbers to control its garbage-collection cycles:
799the <em>garbage-collector pause</em>,
800the <em>garbage-collector step multiplier</em>,
801and the <em>garbage-collector step size</em>.
802
803
804<p>
805The garbage-collector pause
806controls how long the collector waits before starting a new cycle.
807The collector starts a new cycle when the use of memory
808hits <em>n%</em> of the use after the previous collection.
809Larger values make the collector less aggressive.
810Values equal to or less than 100 mean the collector will not wait to
811start a new cycle.
812A value of 200 means that the collector waits for the total memory in use
813to double before starting a new cycle.
814The default value is 200; the maximum value is 1000.
815
816
817<p>
818The garbage-collector step multiplier
819controls the speed of the collector relative to
820memory allocation,
821that is,
822how many elements it marks or sweeps for each
823kilobyte of memory allocated.
824Larger values make the collector more aggressive but also increase
825the size of each incremental step.
826You should not use values less than 100,
827because they make the collector too slow and
828can result in the collector never finishing a cycle.
829The default value is 100;  the maximum value is 1000.
830
831
832<p>
833The garbage-collector step size controls the
834size of each incremental step,
835specifically how many bytes the interpreter allocates
836before performing a step.
837This parameter is logarithmic:
838A value of <em>n</em> means the interpreter will allocate <em>2<sup>n</sup></em>
839bytes between steps and perform equivalent work during the step.
840A large value (e.g., 60) makes the collector a stop-the-world
841(non-incremental) collector.
842The default value is 13,
843which means steps of approximately 8&nbsp;Kbytes.
844
845
846
847
848
849<h3>2.5.2 &ndash; <a name="2.5.2">Generational Garbage Collection</a></h3>
850
851<p>
852In generational mode,
853the collector does frequent <em>minor</em> collections,
854which traverses only objects recently created.
855If after a minor collection the use of memory is still above a limit,
856the collector does a stop-the-world <em>major</em> collection,
857which traverses all objects.
858The generational mode uses two parameters:
859the <em>minor multiplier</em> and the <em>the major multiplier</em>.
860
861
862<p>
863The minor multiplier controls the frequency of minor collections.
864For a minor multiplier <em>x</em>,
865a new minor collection will be done when memory
866grows <em>x%</em> larger than the memory in use after the previous major
867collection.
868For instance, for a multiplier of 20,
869the collector will do a minor collection when the use of memory
870gets 20% larger than the use after the previous major collection.
871The default value is 20; the maximum value is 200.
872
873
874<p>
875The major multiplier controls the frequency of major collections.
876For a major multiplier <em>x</em>,
877a new major collection will be done when memory
878grows <em>x%</em> larger than the memory in use after the previous major
879collection.
880For instance, for a multiplier of 100,
881the collector will do a major collection when the use of memory
882gets larger than twice the use after the previous collection.
883The default value is 100; the maximum value is 1000.
884
885
886
887
888
889<h3>2.5.3 &ndash; <a name="2.5.3">Garbage-Collection Metamethods</a></h3>
890
891<p>
892You can set garbage-collector metamethods for tables
893and, using the C&nbsp;API,
894for full userdata (see <a href="#2.4">&sect;2.4</a>).
895These metamethods, called <em>finalizers</em>,
896are called when the garbage collector detects that the
897corresponding table or userdata is dead.
898Finalizers allow you to coordinate Lua's garbage collection
899with external resource management such as closing files,
900network or database connections,
901or freeing your own memory.
902
903
904<p>
905For an object (table or userdata) to be finalized when collected,
906you must <em>mark</em> it for finalization.
907
908You mark an object for finalization when you set its metatable
909and the metatable has a <code>__gc</code> metamethod.
910Note that if you set a metatable without a <code>__gc</code> field
911and later create that field in the metatable,
912the object will not be marked for finalization.
913
914
915<p>
916When a marked object becomes dead,
917it is not collected immediately by the garbage collector.
918Instead, Lua puts it in a list.
919After the collection,
920Lua goes through that list.
921For each object in the list,
922it checks the object's <code>__gc</code> metamethod:
923If it is present,
924Lua calls it with the object as its single argument.
925
926
927<p>
928At the end of each garbage-collection cycle,
929the finalizers are called in
930the reverse order that the objects were marked for finalization,
931among those collected in that cycle;
932that is, the first finalizer to be called is the one associated
933with the object marked last in the program.
934The execution of each finalizer may occur at any point during
935the execution of the regular code.
936
937
938<p>
939Because the object being collected must still be used by the finalizer,
940that object (and other objects accessible only through it)
941must be <em>resurrected</em> by Lua.
942Usually, this resurrection is transient,
943and the object memory is freed in the next garbage-collection cycle.
944However, if the finalizer stores the object in some global place
945(e.g., a global variable),
946then the resurrection is permanent.
947Moreover, if the finalizer marks a finalizing object for finalization again,
948its finalizer will be called again in the next cycle where the
949object is dead.
950In any case,
951the object memory is freed only in a GC cycle where
952the object is dead and not marked for finalization.
953
954
955<p>
956When you close a state (see <a href="#lua_close"><code>lua_close</code></a>),
957Lua calls the finalizers of all objects marked for finalization,
958following the reverse order that they were marked.
959If any finalizer marks objects for collection during that phase,
960these marks have no effect.
961
962
963<p>
964Finalizers cannot yield nor run the garbage collector.
965Because they can run in unpredictable times,
966it is good practice to restrict each finalizer
967to the minimum necessary to properly release
968its associated resource.
969
970
971<p>
972Any error while running a finalizer generates a warning;
973the error is not propagated.
974
975
976
977
978
979<h3>2.5.4 &ndash; <a name="2.5.4">Weak Tables</a></h3>
980
981<p>
982A <em>weak table</em> is a table whose elements are
983<em>weak references</em>.
984A weak reference is ignored by the garbage collector.
985In other words,
986if the only references to an object are weak references,
987then the garbage collector will collect that object.
988
989
990<p>
991A weak table can have weak keys, weak values, or both.
992A table with weak values allows the collection of its values,
993but prevents the collection of its keys.
994A table with both weak keys and weak values allows the collection of
995both keys and values.
996In any case, if either the key or the value is collected,
997the whole pair is removed from the table.
998The weakness of a table is controlled by the
999<code>__mode</code> field of its metatable.
1000This metavalue, if present, must be one of the following strings:
1001"<code>k</code>", for a table with weak keys;
1002"<code>v</code>", for a table with weak values;
1003or "<code>kv</code>", for a table with both weak keys and values.
1004
1005
1006<p>
1007A table with weak keys and strong values
1008is also called an <em>ephemeron table</em>.
1009In an ephemeron table,
1010a value is considered reachable only if its key is reachable.
1011In particular,
1012if the only reference to a key comes through its value,
1013the pair is removed.
1014
1015
1016<p>
1017Any change in the weakness of a table may take effect only
1018at the next collect cycle.
1019In particular, if you change the weakness to a stronger mode,
1020Lua may still collect some items from that table
1021before the change takes effect.
1022
1023
1024<p>
1025Only objects that have an explicit construction
1026are removed from weak tables.
1027Values, such as numbers and light C&nbsp;functions,
1028are not subject to garbage collection,
1029and therefore are not removed from weak tables
1030(unless their associated values are collected).
1031Although strings are subject to garbage collection,
1032they do not have an explicit construction and
1033their equality is by value;
1034they behave more like values than like objects.
1035Therefore, they are not removed from weak tables.
1036
1037
1038<p>
1039Resurrected objects
1040(that is, objects being finalized
1041and objects accessible only through objects being finalized)
1042have a special behavior in weak tables.
1043They are removed from weak values before running their finalizers,
1044but are removed from weak keys only in the next collection
1045after running their finalizers, when such objects are actually freed.
1046This behavior allows the finalizer to access properties
1047associated with the object through weak tables.
1048
1049
1050<p>
1051If a weak table is among the resurrected objects in a collection cycle,
1052it may not be properly cleared until the next cycle.
1053
1054
1055
1056
1057
1058
1059
1060<h2>2.6 &ndash; <a name="2.6">Coroutines</a></h2>
1061
1062<p>
1063Lua supports coroutines,
1064also called <em>collaborative multithreading</em>.
1065A coroutine in Lua represents an independent thread of execution.
1066Unlike threads in multithread systems, however,
1067a coroutine only suspends its execution by explicitly calling
1068a yield function.
1069
1070
1071<p>
1072You create a coroutine by calling <a href="#pdf-coroutine.create"><code>coroutine.create</code></a>.
1073Its sole argument is a function
1074that is the main function of the coroutine.
1075The <code>create</code> function only creates a new coroutine and
1076returns a handle to it (an object of type <em>thread</em>);
1077it does not start the coroutine.
1078
1079
1080<p>
1081You execute a coroutine by calling <a href="#pdf-coroutine.resume"><code>coroutine.resume</code></a>.
1082When you first call <a href="#pdf-coroutine.resume"><code>coroutine.resume</code></a>,
1083passing as its first argument
1084a thread returned by <a href="#pdf-coroutine.create"><code>coroutine.create</code></a>,
1085the coroutine starts its execution by
1086calling its main function.
1087Extra arguments passed to <a href="#pdf-coroutine.resume"><code>coroutine.resume</code></a> are passed
1088as arguments to that function.
1089After the coroutine starts running,
1090it runs until it terminates or <em>yields</em>.
1091
1092
1093<p>
1094A coroutine can terminate its execution in two ways:
1095normally, when its main function returns
1096(explicitly or implicitly, after the last instruction);
1097and abnormally, if there is an unprotected error.
1098In case of normal termination,
1099<a href="#pdf-coroutine.resume"><code>coroutine.resume</code></a> returns <b>true</b>,
1100plus any values returned by the coroutine main function.
1101In case of errors, <a href="#pdf-coroutine.resume"><code>coroutine.resume</code></a> returns <b>false</b>
1102plus the error object.
1103In this case, the coroutine does not unwind its stack,
1104so that it is possible to inspect it after the error
1105with the debug API.
1106
1107
1108<p>
1109A coroutine yields by calling <a href="#pdf-coroutine.yield"><code>coroutine.yield</code></a>.
1110When a coroutine yields,
1111the corresponding <a href="#pdf-coroutine.resume"><code>coroutine.resume</code></a> returns immediately,
1112even if the yield happens inside nested function calls
1113(that is, not in the main function,
1114but in a function directly or indirectly called by the main function).
1115In the case of a yield, <a href="#pdf-coroutine.resume"><code>coroutine.resume</code></a> also returns <b>true</b>,
1116plus any values passed to <a href="#pdf-coroutine.yield"><code>coroutine.yield</code></a>.
1117The next time you resume the same coroutine,
1118it continues its execution from the point where it yielded,
1119with the call to <a href="#pdf-coroutine.yield"><code>coroutine.yield</code></a> returning any extra
1120arguments passed to <a href="#pdf-coroutine.resume"><code>coroutine.resume</code></a>.
1121
1122
1123<p>
1124Like <a href="#pdf-coroutine.create"><code>coroutine.create</code></a>,
1125the <a href="#pdf-coroutine.wrap"><code>coroutine.wrap</code></a> function also creates a coroutine,
1126but instead of returning the coroutine itself,
1127it returns a function that, when called, resumes the coroutine.
1128Any arguments passed to this function
1129go as extra arguments to <a href="#pdf-coroutine.resume"><code>coroutine.resume</code></a>.
1130<a href="#pdf-coroutine.wrap"><code>coroutine.wrap</code></a> returns all the values returned by <a href="#pdf-coroutine.resume"><code>coroutine.resume</code></a>,
1131except the first one (the boolean error code).
1132Unlike <a href="#pdf-coroutine.resume"><code>coroutine.resume</code></a>,
1133the function created by <a href="#pdf-coroutine.wrap"><code>coroutine.wrap</code></a>
1134propagates any error to the caller.
1135In this case,
1136the function also closes the coroutine (see <a href="#pdf-coroutine.close"><code>coroutine.close</code></a>).
1137
1138
1139<p>
1140As an example of how coroutines work,
1141consider the following code:
1142
1143<pre>
1144     function foo (a)
1145       print("foo", a)
1146       return coroutine.yield(2*a)
1147     end
1148
1149     co = coroutine.create(function (a,b)
1150           print("co-body", a, b)
1151           local r = foo(a+1)
1152           print("co-body", r)
1153           local r, s = coroutine.yield(a+b, a-b)
1154           print("co-body", r, s)
1155           return b, "end"
1156     end)
1157
1158     print("main", coroutine.resume(co, 1, 10))
1159     print("main", coroutine.resume(co, "r"))
1160     print("main", coroutine.resume(co, "x", "y"))
1161     print("main", coroutine.resume(co, "x", "y"))
1162</pre><p>
1163When you run it, it produces the following output:
1164
1165<pre>
1166     co-body 1       10
1167     foo     2
1168     main    true    4
1169     co-body r
1170     main    true    11      -9
1171     co-body x       y
1172     main    true    10      end
1173     main    false   cannot resume dead coroutine
1174</pre>
1175
1176<p>
1177You can also create and manipulate coroutines through the C API:
1178see functions <a href="#lua_newthread"><code>lua_newthread</code></a>, <a href="#lua_resume"><code>lua_resume</code></a>,
1179and <a href="#lua_yield"><code>lua_yield</code></a>.
1180
1181
1182
1183
1184
1185<h1>3 &ndash; <a name="3">The Language</a></h1>
1186
1187
1188
1189<p>
1190This section describes the lexis, the syntax, and the semantics of Lua.
1191In other words,
1192this section describes
1193which tokens are valid,
1194how they can be combined,
1195and what their combinations mean.
1196
1197
1198<p>
1199Language constructs will be explained using the usual extended BNF notation,
1200in which
1201{<em>a</em>}&nbsp;means&nbsp;0 or more <em>a</em>'s, and
1202[<em>a</em>]&nbsp;means an optional <em>a</em>.
1203Non-terminals are shown like non-terminal,
1204keywords are shown like <b>kword</b>,
1205and other terminal symbols are shown like &lsquo;<b>=</b>&rsquo;.
1206The complete syntax of Lua can be found in <a href="#9">&sect;9</a>
1207at the end of this manual.
1208
1209
1210
1211
1212
1213<h2>3.1 &ndash; <a name="3.1">Lexical Conventions</a></h2>
1214
1215<p>
1216Lua is a free-form language.
1217It ignores spaces and comments between lexical elements (tokens),
1218except as delimiters between two tokens.
1219In source code,
1220Lua recognizes as spaces the standard ASCII whitespace
1221characters space, form feed, newline,
1222carriage return, horizontal tab, and vertical tab.
1223
1224
1225<p>
1226<em>Names</em>
1227(also called <em>identifiers</em>)
1228in Lua can be any string of Latin letters,
1229Arabic-Indic digits, and underscores,
1230not beginning with a digit and
1231not being a reserved word.
1232Identifiers are used to name variables, table fields, and labels.
1233
1234
1235<p>
1236The following <em>keywords</em> are reserved
1237and cannot be used as names:
1238
1239
1240<pre>
1241     and       break     do        else      elseif    end
1242     false     for       function  goto      if        in
1243     local     nil       not       or        repeat    return
1244     then      true      until     while
1245</pre>
1246
1247<p>
1248Lua is a case-sensitive language:
1249<code>and</code> is a reserved word, but <code>And</code> and <code>AND</code>
1250are two different, valid names.
1251As a convention,
1252programs should avoid creating
1253names that start with an underscore followed by
1254one or more uppercase letters (such as <a href="#pdf-_VERSION"><code>_VERSION</code></a>).
1255
1256
1257<p>
1258The following strings denote other tokens:
1259
1260<pre>
1261     +     -     *     /     %     ^     #
1262     &amp;     ~     |     &lt;&lt;    &gt;&gt;    //
1263     ==    ~=    &lt;=    &gt;=    &lt;     &gt;     =
1264     (     )     {     }     [     ]     ::
1265     ;     :     ,     .     ..    ...
1266</pre>
1267
1268<p>
1269A <em>short literal string</em>
1270can be delimited by matching single or double quotes,
1271and can contain the following C-like escape sequences:
1272'<code>\a</code>' (bell),
1273'<code>\b</code>' (backspace),
1274'<code>\f</code>' (form feed),
1275'<code>\n</code>' (newline),
1276'<code>\r</code>' (carriage return),
1277'<code>\t</code>' (horizontal tab),
1278'<code>\v</code>' (vertical tab),
1279'<code>\\</code>' (backslash),
1280'<code>\"</code>' (quotation mark [double quote]),
1281and '<code>\'</code>' (apostrophe [single quote]).
1282A backslash followed by a line break
1283results in a newline in the string.
1284The escape sequence '<code>\z</code>' skips the following span
1285of whitespace characters,
1286including line breaks;
1287it is particularly useful to break and indent a long literal string
1288into multiple lines without adding the newlines and spaces
1289into the string contents.
1290A short literal string cannot contain unescaped line breaks
1291nor escapes not forming a valid escape sequence.
1292
1293
1294<p>
1295We can specify any byte in a short literal string,
1296including embedded zeros,
1297by its numeric value.
1298This can be done
1299with the escape sequence <code>\x<em>XX</em></code>,
1300where <em>XX</em> is a sequence of exactly two hexadecimal digits,
1301or with the escape sequence <code>\<em>ddd</em></code>,
1302where <em>ddd</em> is a sequence of up to three decimal digits.
1303(Note that if a decimal escape sequence is to be followed by a digit,
1304it must be expressed using exactly three digits.)
1305
1306
1307<p>
1308The UTF-8 encoding of a Unicode character
1309can be inserted in a literal string with
1310the escape sequence <code>\u{<em>XXX</em>}</code>
1311(with mandatory enclosing braces),
1312where <em>XXX</em> is a sequence of one or more hexadecimal digits
1313representing the character code point.
1314This code point can be any value less than <em>2<sup>31</sup></em>.
1315(Lua uses the original UTF-8 specification here,
1316which is not restricted to valid Unicode code points.)
1317
1318
1319<p>
1320Literal strings can also be defined using a long format
1321enclosed by <em>long brackets</em>.
1322We define an <em>opening long bracket of level <em>n</em></em> as an opening
1323square bracket followed by <em>n</em> equal signs followed by another
1324opening square bracket.
1325So, an opening long bracket of level&nbsp;0 is written as <code>[[</code>,
1326an opening long bracket of level&nbsp;1 is written as <code>[=[</code>,
1327and so on.
1328A <em>closing long bracket</em> is defined similarly;
1329for instance,
1330a closing long bracket of level&nbsp;4 is written as  <code>]====]</code>.
1331A <em>long literal</em> starts with an opening long bracket of any level and
1332ends at the first closing long bracket of the same level.
1333It can contain any text except a closing bracket of the same level.
1334Literals in this bracketed form can run for several lines,
1335do not interpret any escape sequences,
1336and ignore long brackets of any other level.
1337Any kind of end-of-line sequence
1338(carriage return, newline, carriage return followed by newline,
1339or newline followed by carriage return)
1340is converted to a simple newline.
1341When the opening long bracket is immediately followed by a newline,
1342the newline is not included in the string.
1343
1344
1345<p>
1346As an example, in a system using ASCII
1347(in which '<code>a</code>' is coded as&nbsp;97,
1348newline is coded as&nbsp;10, and '<code>1</code>' is coded as&nbsp;49),
1349the five literal strings below denote the same string:
1350
1351<pre>
1352     a = 'alo\n123"'
1353     a = "alo\n123\""
1354     a = '\97lo\10\04923"'
1355     a = [[alo
1356     123"]]
1357     a = [==[
1358     alo
1359     123"]==]
1360</pre>
1361
1362<p>
1363Any byte in a literal string not
1364explicitly affected by the previous rules represents itself.
1365However, Lua opens files for parsing in text mode,
1366and the system's file functions may have problems with
1367some control characters.
1368So, it is safer to represent
1369binary data as a quoted literal with
1370explicit escape sequences for the non-text characters.
1371
1372
1373<p>
1374A <em>numeric constant</em> (or <em>numeral</em>)
1375can be written with an optional fractional part
1376and an optional decimal exponent,
1377marked by a letter '<code>e</code>' or '<code>E</code>'.
1378Lua also accepts hexadecimal constants,
1379which start with <code>0x</code> or <code>0X</code>.
1380Hexadecimal constants also accept an optional fractional part
1381plus an optional binary exponent,
1382marked by a letter '<code>p</code>' or '<code>P</code>'.
1383
1384
1385<p>
1386A numeric constant with a radix point or an exponent
1387denotes a float;
1388otherwise,
1389if its value fits in an integer or it is a hexadecimal constant,
1390it denotes an integer;
1391otherwise (that is, a decimal integer numeral that overflows),
1392it denotes a float.
1393Hexadecimal numerals with neither a radix point nor an exponent
1394always denote an integer value;
1395if the value overflows, it <em>wraps around</em>
1396to fit into a valid integer.
1397
1398
1399<p>
1400Examples of valid integer constants are
1401
1402<pre>
1403     3   345   0xff   0xBEBADA
1404</pre><p>
1405Examples of valid float constants are
1406
1407<pre>
1408     3.0     3.1416     314.16e-2     0.31416E1     34e1
1409     0x0.1E  0xA23p-4   0X1.921FB54442D18P+1
1410</pre>
1411
1412<p>
1413A <em>comment</em> starts with a double hyphen (<code>--</code>)
1414anywhere outside a string.
1415If the text immediately after <code>--</code> is not an opening long bracket,
1416the comment is a <em>short comment</em>,
1417which runs until the end of the line.
1418Otherwise, it is a <em>long comment</em>,
1419which runs until the corresponding closing long bracket.
1420
1421
1422
1423
1424
1425<h2>3.2 &ndash; <a name="3.2">Variables</a></h2>
1426
1427<p>
1428Variables are places that store values.
1429There are three kinds of variables in Lua:
1430global variables, local variables, and table fields.
1431
1432
1433<p>
1434A single name can denote a global variable or a local variable
1435(or a function's formal parameter,
1436which is a particular kind of local variable):
1437
1438<pre>
1439	var ::= Name
1440</pre><p>
1441Name denotes identifiers (see <a href="#3.1">&sect;3.1</a>).
1442
1443
1444<p>
1445Any variable name is assumed to be global unless explicitly declared
1446as a local (see <a href="#3.3.7">&sect;3.3.7</a>).
1447Local variables are <em>lexically scoped</em>:
1448local variables can be freely accessed by functions
1449defined inside their scope (see <a href="#3.5">&sect;3.5</a>).
1450
1451
1452<p>
1453Before the first assignment to a variable, its value is <b>nil</b>.
1454
1455
1456<p>
1457Square brackets are used to index a table:
1458
1459<pre>
1460	var ::= prefixexp &lsquo;<b>[</b>&rsquo; exp &lsquo;<b>]</b>&rsquo;
1461</pre><p>
1462The meaning of accesses to table fields can be changed via metatables
1463(see <a href="#2.4">&sect;2.4</a>).
1464
1465
1466<p>
1467The syntax <code>var.Name</code> is just syntactic sugar for
1468<code>var["Name"]</code>:
1469
1470<pre>
1471	var ::= prefixexp &lsquo;<b>.</b>&rsquo; Name
1472</pre>
1473
1474<p>
1475An access to a global variable <code>x</code>
1476is equivalent to <code>_ENV.x</code>.
1477Due to the way that chunks are compiled,
1478the variable <code>_ENV</code> itself is never global (see <a href="#2.2">&sect;2.2</a>).
1479
1480
1481
1482
1483
1484<h2>3.3 &ndash; <a name="3.3">Statements</a></h2>
1485
1486
1487
1488<p>
1489Lua supports an almost conventional set of statements,
1490similar to those in other conventional languages.
1491This set includes
1492blocks, assignments, control structures, function calls,
1493and variable declarations.
1494
1495
1496
1497
1498
1499<h3>3.3.1 &ndash; <a name="3.3.1">Blocks</a></h3>
1500
1501<p>
1502A block is a list of statements,
1503which are executed sequentially:
1504
1505<pre>
1506	block ::= {stat}
1507</pre><p>
1508Lua has <em>empty statements</em>
1509that allow you to separate statements with semicolons,
1510start a block with a semicolon
1511or write two semicolons in sequence:
1512
1513<pre>
1514	stat ::= &lsquo;<b>;</b>&rsquo;
1515</pre>
1516
1517<p>
1518Both function calls and assignments
1519can start with an open parenthesis.
1520This possibility leads to an ambiguity in Lua's grammar.
1521Consider the following fragment:
1522
1523<pre>
1524     a = b + c
1525     (print or io.write)('done')
1526</pre><p>
1527The grammar could see this fragment in two ways:
1528
1529<pre>
1530     a = b + c(print or io.write)('done')
1531
1532     a = b + c; (print or io.write)('done')
1533</pre><p>
1534The current parser always sees such constructions
1535in the first way,
1536interpreting the open parenthesis
1537as the start of the arguments to a call.
1538To avoid this ambiguity,
1539it is a good practice to always precede with a semicolon
1540statements that start with a parenthesis:
1541
1542<pre>
1543     ;(print or io.write)('done')
1544</pre>
1545
1546<p>
1547A block can be explicitly delimited to produce a single statement:
1548
1549<pre>
1550	stat ::= <b>do</b> block <b>end</b>
1551</pre><p>
1552Explicit blocks are useful
1553to control the scope of variable declarations.
1554Explicit blocks are also sometimes used to
1555add a <b>return</b> statement in the middle
1556of another block (see <a href="#3.3.4">&sect;3.3.4</a>).
1557
1558
1559
1560
1561
1562<h3>3.3.2 &ndash; <a name="3.3.2">Chunks</a></h3>
1563
1564<p>
1565The unit of compilation of Lua is called a <em>chunk</em>.
1566Syntactically,
1567a chunk is simply a block:
1568
1569<pre>
1570	chunk ::= block
1571</pre>
1572
1573<p>
1574Lua handles a chunk as the body of an anonymous function
1575with a variable number of arguments
1576(see <a href="#3.4.11">&sect;3.4.11</a>).
1577As such, chunks can define local variables,
1578receive arguments, and return values.
1579Moreover, such anonymous function is compiled as in the
1580scope of an external local variable called <code>_ENV</code> (see <a href="#2.2">&sect;2.2</a>).
1581The resulting function always has <code>_ENV</code> as its only external variable,
1582even if it does not use that variable.
1583
1584
1585<p>
1586A chunk can be stored in a file or in a string inside the host program.
1587To execute a chunk,
1588Lua first <em>loads</em> it,
1589precompiling the chunk's code into instructions for a virtual machine,
1590and then Lua executes the compiled code
1591with an interpreter for the virtual machine.
1592
1593
1594<p>
1595Chunks can also be precompiled into binary form;
1596see the program <code>luac</code> and the function <a href="#pdf-string.dump"><code>string.dump</code></a> for details.
1597Programs in source and compiled forms are interchangeable;
1598Lua automatically detects the file type and acts accordingly (see <a href="#pdf-load"><code>load</code></a>).
1599
1600
1601
1602
1603
1604<h3>3.3.3 &ndash; <a name="3.3.3">Assignment</a></h3>
1605
1606<p>
1607Lua allows multiple assignments.
1608Therefore, the syntax for assignment
1609defines a list of variables on the left side
1610and a list of expressions on the right side.
1611The elements in both lists are separated by commas:
1612
1613<pre>
1614	stat ::= varlist &lsquo;<b>=</b>&rsquo; explist
1615	varlist ::= var {&lsquo;<b>,</b>&rsquo; var}
1616	explist ::= exp {&lsquo;<b>,</b>&rsquo; exp}
1617</pre><p>
1618Expressions are discussed in <a href="#3.4">&sect;3.4</a>.
1619
1620
1621<p>
1622Before the assignment,
1623the list of values is <em>adjusted</em> to the length of
1624the list of variables.
1625If there are more values than needed,
1626the excess values are thrown away.
1627If there are fewer values than needed,
1628the list is extended with <b>nil</b>'s.
1629If the list of expressions ends with a function call,
1630then all values returned by that call enter the list of values,
1631before the adjustment
1632(except when the call is enclosed in parentheses; see <a href="#3.4">&sect;3.4</a>).
1633
1634
1635<p>
1636If a variable is both assigned and read
1637inside a multiple assignment,
1638Lua ensures all reads get the value of the variable
1639before the assignment.
1640Thus the code
1641
1642<pre>
1643     i = 3
1644     i, a[i] = i+1, 20
1645</pre><p>
1646sets <code>a[3]</code> to 20, without affecting <code>a[4]</code>
1647because the <code>i</code> in <code>a[i]</code> is evaluated (to 3)
1648before it is assigned&nbsp;4.
1649Similarly, the line
1650
1651<pre>
1652     x, y = y, x
1653</pre><p>
1654exchanges the values of <code>x</code> and <code>y</code>,
1655and
1656
1657<pre>
1658     x, y, z = y, z, x
1659</pre><p>
1660cyclically permutes the values of <code>x</code>, <code>y</code>, and <code>z</code>.
1661
1662
1663<p>
1664Note that this guarantee covers only accesses
1665syntactically inside the assignment statement.
1666If a function or a metamethod called during the assignment
1667changes the value of a variable,
1668Lua gives no guarantees about the order of that access.
1669
1670
1671<p>
1672An assignment to a global name <code>x = val</code>
1673is equivalent to the assignment
1674<code>_ENV.x = val</code> (see <a href="#2.2">&sect;2.2</a>).
1675
1676
1677<p>
1678The meaning of assignments to table fields and
1679global variables (which are actually table fields, too)
1680can be changed via metatables (see <a href="#2.4">&sect;2.4</a>).
1681
1682
1683
1684
1685
1686<h3>3.3.4 &ndash; <a name="3.3.4">Control Structures</a></h3><p>
1687The control structures
1688<b>if</b>, <b>while</b>, and <b>repeat</b> have the usual meaning and
1689familiar syntax:
1690
1691
1692
1693
1694<pre>
1695	stat ::= <b>while</b> exp <b>do</b> block <b>end</b>
1696	stat ::= <b>repeat</b> block <b>until</b> exp
1697	stat ::= <b>if</b> exp <b>then</b> block {<b>elseif</b> exp <b>then</b> block} [<b>else</b> block] <b>end</b>
1698</pre><p>
1699Lua also has a <b>for</b> statement, in two flavors (see <a href="#3.3.5">&sect;3.3.5</a>).
1700
1701
1702<p>
1703The condition expression of a
1704control structure can return any value.
1705Both <b>false</b> and <b>nil</b> test false.
1706All values different from <b>nil</b> and <b>false</b> test true.
1707In particular, the number 0 and the empty string also test true.
1708
1709
1710<p>
1711In the <b>repeat</b>&ndash;<b>until</b> loop,
1712the inner block does not end at the <b>until</b> keyword,
1713but only after the condition.
1714So, the condition can refer to local variables
1715declared inside the loop block.
1716
1717
1718<p>
1719The <b>goto</b> statement transfers the program control to a label.
1720For syntactical reasons,
1721labels in Lua are considered statements too:
1722
1723
1724
1725<pre>
1726	stat ::= <b>goto</b> Name
1727	stat ::= label
1728	label ::= &lsquo;<b>::</b>&rsquo; Name &lsquo;<b>::</b>&rsquo;
1729</pre>
1730
1731<p>
1732A label is visible in the entire block where it is defined,
1733except inside nested functions.
1734A goto may jump to any visible label as long as it does not
1735enter into the scope of a local variable.
1736A label should not be declared
1737where a label with the same name is visible,
1738even if this other label has been declared in an enclosing block.
1739
1740
1741<p>
1742Labels and empty statements are called <em>void statements</em>,
1743as they perform no actions.
1744
1745
1746<p>
1747The <b>break</b> statement terminates the execution of a
1748<b>while</b>, <b>repeat</b>, or <b>for</b> loop,
1749skipping to the next statement after the loop:
1750
1751
1752<pre>
1753	stat ::= <b>break</b>
1754</pre><p>
1755A <b>break</b> ends the innermost enclosing loop.
1756
1757
1758<p>
1759The <b>return</b> statement is used to return values
1760from a function or a chunk
1761(which is handled as an anonymous function).
1762
1763Functions can return more than one value,
1764so the syntax for the <b>return</b> statement is
1765
1766<pre>
1767	stat ::= <b>return</b> [explist] [&lsquo;<b>;</b>&rsquo;]
1768</pre>
1769
1770<p>
1771The <b>return</b> statement can only be written
1772as the last statement of a block.
1773If it is necessary to <b>return</b> in the middle of a block,
1774then an explicit inner block can be used,
1775as in the idiom <code>do return end</code>,
1776because now <b>return</b> is the last statement in its (inner) block.
1777
1778
1779
1780
1781
1782<h3>3.3.5 &ndash; <a name="3.3.5">For Statement</a></h3>
1783
1784<p>
1785
1786The <b>for</b> statement has two forms:
1787one numerical and one generic.
1788
1789
1790
1791<h4>The numerical <b>for</b> loop</h4>
1792
1793<p>
1794The numerical <b>for</b> loop repeats a block of code while a
1795control variable goes through an arithmetic progression.
1796It has the following syntax:
1797
1798<pre>
1799	stat ::= <b>for</b> Name &lsquo;<b>=</b>&rsquo; exp &lsquo;<b>,</b>&rsquo; exp [&lsquo;<b>,</b>&rsquo; exp] <b>do</b> block <b>end</b>
1800</pre><p>
1801The given identifier (Name) defines the control variable,
1802which is a new variable local to the loop body (<em>block</em>).
1803
1804
1805<p>
1806The loop starts by evaluating once the three control expressions.
1807Their values are called respectively
1808the <em>initial value</em>, the <em>limit</em>, and the <em>step</em>.
1809If the step is absent, it defaults to&nbsp;1.
1810
1811
1812<p>
1813If both the initial value and the step are integers,
1814the loop is done with integers;
1815note that the limit may not be an integer.
1816Otherwise, the three values are converted to
1817floats and the loop is done with floats.
1818Beware of floating-point accuracy in this case.
1819
1820
1821<p>
1822After that initialization,
1823the loop body is repeated with the value of the control variable
1824going through an arithmetic progression,
1825starting at the initial value,
1826with a common difference given by the step.
1827A negative step makes a decreasing sequence;
1828a step equal to zero raises an error.
1829The loop continues while the value is less than
1830or equal to the limit
1831(greater than or equal to for a negative step).
1832If the initial value is already greater than the limit
1833(or less than, if the step is negative),
1834the body is not executed.
1835
1836
1837<p>
1838For integer loops,
1839the control variable never wraps around;
1840instead, the loop ends in case of an overflow.
1841
1842
1843<p>
1844You should not change the value of the control variable
1845during the loop.
1846If you need its value after the loop,
1847assign it to another variable before exiting the loop.
1848
1849
1850
1851
1852
1853<h4>The generic <b>for</b> loop</h4>
1854
1855<p>
1856The generic <b>for</b> statement works over functions,
1857called <em>iterators</em>.
1858On each iteration, the iterator function is called to produce a new value,
1859stopping when this new value is <b>nil</b>.
1860The generic <b>for</b> loop has the following syntax:
1861
1862<pre>
1863	stat ::= <b>for</b> namelist <b>in</b> explist <b>do</b> block <b>end</b>
1864	namelist ::= Name {&lsquo;<b>,</b>&rsquo; Name}
1865</pre><p>
1866A <b>for</b> statement like
1867
1868<pre>
1869     for <em>var_1</em>, &middot;&middot;&middot;, <em>var_n</em> in <em>explist</em> do <em>body</em> end
1870</pre><p>
1871works as follows.
1872
1873
1874<p>
1875The names <em>var_i</em> declare loop variables local to the loop body.
1876The first of these variables is the <em>control variable</em>.
1877
1878
1879<p>
1880The loop starts by evaluating <em>explist</em>
1881to produce four values:
1882an <em>iterator function</em>,
1883a <em>state</em>,
1884an initial value for the control variable,
1885and a <em>closing value</em>.
1886
1887
1888<p>
1889Then, at each iteration,
1890Lua calls the iterator function with two arguments:
1891the state and the control variable.
1892The results from this call are then assigned to the loop variables,
1893following the rules of multiple assignments (see <a href="#3.3.3">&sect;3.3.3</a>).
1894If the control variable becomes <b>nil</b>,
1895the loop terminates.
1896Otherwise, the body is executed and the loop goes
1897to the next iteration.
1898
1899
1900<p>
1901The closing value behaves like a
1902to-be-closed variable (see <a href="#3.3.8">&sect;3.3.8</a>),
1903which can be used to release resources when the loop ends.
1904Otherwise, it does not interfere with the loop.
1905
1906
1907<p>
1908You should not change the value of the control variable
1909during the loop.
1910
1911
1912
1913
1914
1915
1916
1917<h3>3.3.6 &ndash; <a name="3.3.6">Function Calls as Statements</a></h3><p>
1918To allow possible side-effects,
1919function calls can be executed as statements:
1920
1921<pre>
1922	stat ::= functioncall
1923</pre><p>
1924In this case, all returned values are thrown away.
1925Function calls are explained in <a href="#3.4.10">&sect;3.4.10</a>.
1926
1927
1928
1929
1930
1931<h3>3.3.7 &ndash; <a name="3.3.7">Local Declarations</a></h3><p>
1932Local variables can be declared anywhere inside a block.
1933The declaration can include an initialization:
1934
1935<pre>
1936	stat ::= <b>local</b> attnamelist [&lsquo;<b>=</b>&rsquo; explist]
1937	attnamelist ::=  Name attrib {&lsquo;<b>,</b>&rsquo; Name attrib}
1938</pre><p>
1939If present, an initial assignment has the same semantics
1940of a multiple assignment (see <a href="#3.3.3">&sect;3.3.3</a>).
1941Otherwise, all variables are initialized with <b>nil</b>.
1942
1943
1944<p>
1945Each variable name may be postfixed by an attribute
1946(a name between angle brackets):
1947
1948<pre>
1949	attrib ::= [&lsquo;<b>&lt;</b>&rsquo; Name &lsquo;<b>&gt;</b>&rsquo;]
1950</pre><p>
1951There are two possible attributes:
1952<code>const</code>, which declares a constant variable,
1953that is, a variable that cannot be assigned to
1954after its initialization;
1955and <code>close</code>, which declares a to-be-closed variable (see <a href="#3.3.8">&sect;3.3.8</a>).
1956A list of variables can contain at most one to-be-closed variable.
1957
1958
1959<p>
1960A chunk is also a block (see <a href="#3.3.2">&sect;3.3.2</a>),
1961and so local variables can be declared in a chunk outside any explicit block.
1962
1963
1964<p>
1965The visibility rules for local variables are explained in <a href="#3.5">&sect;3.5</a>.
1966
1967
1968
1969
1970
1971<h3>3.3.8 &ndash; <a name="3.3.8">To-be-closed Variables</a></h3>
1972
1973<p>
1974A to-be-closed variable behaves like a constant local variable,
1975except that its value is <em>closed</em> whenever the variable
1976goes out of scope, including normal block termination,
1977exiting its block by <b>break</b>/<b>goto</b>/<b>return</b>,
1978or exiting by an error.
1979
1980
1981<p>
1982Here, to <em>close</em> a value means
1983to call its <code>__close</code> metamethod.
1984When calling the metamethod,
1985the value itself is passed as the first argument
1986and the error object that caused the exit (if any)
1987is passed as a second argument;
1988if there was no error, the second argument is <b>nil</b>.
1989
1990
1991<p>
1992The value assigned to a to-be-closed variable
1993must have a <code>__close</code> metamethod
1994or be a false value.
1995(<b>nil</b> and <b>false</b> are ignored as to-be-closed values.)
1996
1997
1998<p>
1999If several to-be-closed variables go out of scope at the same event,
2000they are closed in the reverse order that they were declared.
2001
2002
2003<p>
2004If there is any error while running a closing method,
2005that error is handled like an error in the regular code
2006where the variable was defined.
2007After an error,
2008the other pending closing methods will still be called.
2009
2010
2011<p>
2012If a coroutine yields and is never resumed again,
2013some variables may never go out of scope,
2014and therefore they will never be closed.
2015(These variables are the ones created inside the coroutine
2016and in scope at the point where the coroutine yielded.)
2017Similarly, if a coroutine ends with an error,
2018it does not unwind its stack,
2019so it does not close any variable.
2020In both cases,
2021you can either use finalizers
2022or call <a href="#pdf-coroutine.close"><code>coroutine.close</code></a> to close the variables.
2023However, if the coroutine was created
2024through <a href="#pdf-coroutine.wrap"><code>coroutine.wrap</code></a>,
2025then its corresponding function will close the coroutine
2026in case of errors.
2027
2028
2029
2030
2031
2032
2033
2034<h2>3.4 &ndash; <a name="3.4">Expressions</a></h2>
2035
2036
2037
2038<p>
2039The basic expressions in Lua are the following:
2040
2041<pre>
2042	exp ::= prefixexp
2043	exp ::= <b>nil</b> | <b>false</b> | <b>true</b>
2044	exp ::= Numeral
2045	exp ::= LiteralString
2046	exp ::= functiondef
2047	exp ::= tableconstructor
2048	exp ::= &lsquo;<b>...</b>&rsquo;
2049	exp ::= exp binop exp
2050	exp ::= unop exp
2051	prefixexp ::= var | functioncall | &lsquo;<b>(</b>&rsquo; exp &lsquo;<b>)</b>&rsquo;
2052</pre>
2053
2054<p>
2055Numerals and literal strings are explained in <a href="#3.1">&sect;3.1</a>;
2056variables are explained in <a href="#3.2">&sect;3.2</a>;
2057function definitions are explained in <a href="#3.4.11">&sect;3.4.11</a>;
2058function calls are explained in <a href="#3.4.10">&sect;3.4.10</a>;
2059table constructors are explained in <a href="#3.4.9">&sect;3.4.9</a>.
2060Vararg expressions,
2061denoted by three dots ('<code>...</code>'), can only be used when
2062directly inside a vararg function;
2063they are explained in <a href="#3.4.11">&sect;3.4.11</a>.
2064
2065
2066<p>
2067Binary operators comprise arithmetic operators (see <a href="#3.4.1">&sect;3.4.1</a>),
2068bitwise operators (see <a href="#3.4.2">&sect;3.4.2</a>),
2069relational operators (see <a href="#3.4.4">&sect;3.4.4</a>), logical operators (see <a href="#3.4.5">&sect;3.4.5</a>),
2070and the concatenation operator (see <a href="#3.4.6">&sect;3.4.6</a>).
2071Unary operators comprise the unary minus (see <a href="#3.4.1">&sect;3.4.1</a>),
2072the unary bitwise NOT (see <a href="#3.4.2">&sect;3.4.2</a>),
2073the unary logical <b>not</b> (see <a href="#3.4.5">&sect;3.4.5</a>),
2074and the unary <em>length operator</em> (see <a href="#3.4.7">&sect;3.4.7</a>).
2075
2076
2077<p>
2078Both function calls and vararg expressions can result in multiple values.
2079If a function call is used as a statement (see <a href="#3.3.6">&sect;3.3.6</a>),
2080then its return list is adjusted to zero elements,
2081thus discarding all returned values.
2082If an expression is used as the last (or the only) element
2083of a list of expressions,
2084then no adjustment is made
2085(unless the expression is enclosed in parentheses).
2086In all other contexts,
2087Lua adjusts the result list to one element,
2088either discarding all values except the first one
2089or adding a single <b>nil</b> if there are no values.
2090
2091
2092<p>
2093Here are some examples:
2094
2095<pre>
2096     f()                -- adjusted to 0 results
2097     g(f(), x)          -- f() is adjusted to 1 result
2098     g(x, f())          -- g gets x plus all results from f()
2099     a,b,c = f(), x     -- f() is adjusted to 1 result (c gets nil)
2100     a,b = ...          -- a gets the first vararg argument, b gets
2101                        -- the second (both a and b can get nil if there
2102                        -- is no corresponding vararg argument)
2103
2104     a,b,c = x, f()     -- f() is adjusted to 2 results
2105     a,b,c = f()        -- f() is adjusted to 3 results
2106     return f()         -- returns all results from f()
2107     return ...         -- returns all received vararg arguments
2108     return x,y,f()     -- returns x, y, and all results from f()
2109     {f()}              -- creates a list with all results from f()
2110     {...}              -- creates a list with all vararg arguments
2111     {f(), nil}         -- f() is adjusted to 1 result
2112</pre>
2113
2114<p>
2115Any expression enclosed in parentheses always results in only one value.
2116Thus,
2117<code>(f(x,y,z))</code> is always a single value,
2118even if <code>f</code> returns several values.
2119(The value of <code>(f(x,y,z))</code> is the first value returned by <code>f</code>
2120or <b>nil</b> if <code>f</code> does not return any values.)
2121
2122
2123
2124
2125
2126<h3>3.4.1 &ndash; <a name="3.4.1">Arithmetic Operators</a></h3><p>
2127Lua supports the following arithmetic operators:
2128
2129<ul>
2130<li><b><code>+</code>: </b>addition</li>
2131<li><b><code>-</code>: </b>subtraction</li>
2132<li><b><code>*</code>: </b>multiplication</li>
2133<li><b><code>/</code>: </b>float division</li>
2134<li><b><code>//</code>: </b>floor division</li>
2135<li><b><code>%</code>: </b>modulo</li>
2136<li><b><code>^</code>: </b>exponentiation</li>
2137<li><b><code>-</code>: </b>unary minus</li>
2138</ul>
2139
2140<p>
2141With the exception of exponentiation and float division,
2142the arithmetic operators work as follows:
2143If both operands are integers,
2144the operation is performed over integers and the result is an integer.
2145Otherwise, if both operands are numbers,
2146then they are converted to floats,
2147the operation is performed following the machine's rules
2148for floating-point arithmetic
2149(usually the IEEE 754 standard),
2150and the result is a float.
2151(The string library coerces strings to numbers in
2152arithmetic operations; see <a href="#3.4.3">&sect;3.4.3</a> for details.)
2153
2154
2155<p>
2156Exponentiation and float division (<code>/</code>)
2157always convert their operands to floats
2158and the result is always a float.
2159Exponentiation uses the ISO&nbsp;C function <code>pow</code>,
2160so that it works for non-integer exponents too.
2161
2162
2163<p>
2164Floor division (<code>//</code>) is a division
2165that rounds the quotient towards minus infinity,
2166resulting in the floor of the division of its operands.
2167
2168
2169<p>
2170Modulo is defined as the remainder of a division
2171that rounds the quotient towards minus infinity (floor division).
2172
2173
2174<p>
2175In case of overflows in integer arithmetic,
2176all operations <em>wrap around</em>.
2177
2178
2179
2180<h3>3.4.2 &ndash; <a name="3.4.2">Bitwise Operators</a></h3><p>
2181Lua supports the following bitwise operators:
2182
2183<ul>
2184<li><b><code>&amp;</code>: </b>bitwise AND</li>
2185<li><b><code>&#124;</code>: </b>bitwise OR</li>
2186<li><b><code>~</code>: </b>bitwise exclusive OR</li>
2187<li><b><code>&gt;&gt;</code>: </b>right shift</li>
2188<li><b><code>&lt;&lt;</code>: </b>left shift</li>
2189<li><b><code>~</code>: </b>unary bitwise NOT</li>
2190</ul>
2191
2192<p>
2193All bitwise operations convert its operands to integers
2194(see <a href="#3.4.3">&sect;3.4.3</a>),
2195operate on all bits of those integers,
2196and result in an integer.
2197
2198
2199<p>
2200Both right and left shifts fill the vacant bits with zeros.
2201Negative displacements shift to the other direction;
2202displacements with absolute values equal to or higher than
2203the number of bits in an integer
2204result in zero (as all bits are shifted out).
2205
2206
2207
2208
2209
2210<h3>3.4.3 &ndash; <a name="3.4.3">Coercions and Conversions</a></h3><p>
2211Lua provides some automatic conversions between some
2212types and representations at run time.
2213Bitwise operators always convert float operands to integers.
2214Exponentiation and float division
2215always convert integer operands to floats.
2216All other arithmetic operations applied to mixed numbers
2217(integers and floats) convert the integer operand to a float.
2218The C API also converts both integers to floats and
2219floats to integers, as needed.
2220Moreover, string concatenation accepts numbers as arguments,
2221besides strings.
2222
2223
2224<p>
2225In a conversion from integer to float,
2226if the integer value has an exact representation as a float,
2227that is the result.
2228Otherwise,
2229the conversion gets the nearest higher or
2230the nearest lower representable value.
2231This kind of conversion never fails.
2232
2233
2234<p>
2235The conversion from float to integer
2236checks whether the float has an exact representation as an integer
2237(that is, the float has an integral value and
2238it is in the range of integer representation).
2239If it does, that representation is the result.
2240Otherwise, the conversion fails.
2241
2242
2243<p>
2244Several places in Lua coerce strings to numbers when necessary.
2245In particular,
2246the string library sets metamethods that try to coerce
2247strings to numbers in all arithmetic operations.
2248If the conversion fails,
2249the library calls the metamethod of the other operand
2250(if present) or it raises an error.
2251Note that bitwise operators do not do this coercion.
2252
2253
2254<p>
2255Nonetheless, it is always a good practice not to rely on these
2256implicit coercions, as they are not always applied;
2257in particular, <code>"1"==1</code> is false and <code>"1"&lt;1</code> raises an error
2258(see <a href="#3.4.4">&sect;3.4.4</a>).
2259These coercions exist mainly for compatibility and may be removed
2260in future versions of the language.
2261
2262
2263<p>
2264A string is converted to an integer or a float
2265following its syntax and the rules of the Lua lexer.
2266The string may have also leading and trailing whitespaces and a sign.
2267All conversions from strings to numbers
2268accept both a dot and the current locale mark
2269as the radix character.
2270(The Lua lexer, however, accepts only a dot.)
2271If the string is not a valid numeral,
2272the conversion fails.
2273If necessary, the result of this first step is then converted
2274to a specific number subtype following the previous rules
2275for conversions between floats and integers.
2276
2277
2278<p>
2279The conversion from numbers to strings uses a
2280non-specified human-readable format.
2281To convert numbers to strings in any specific way,
2282use the function <a href="#pdf-string.format"><code>string.format</code></a>.
2283
2284
2285
2286
2287
2288<h3>3.4.4 &ndash; <a name="3.4.4">Relational Operators</a></h3><p>
2289Lua supports the following relational operators:
2290
2291<ul>
2292<li><b><code>==</code>: </b>equality</li>
2293<li><b><code>~=</code>: </b>inequality</li>
2294<li><b><code>&lt;</code>: </b>less than</li>
2295<li><b><code>&gt;</code>: </b>greater than</li>
2296<li><b><code>&lt;=</code>: </b>less or equal</li>
2297<li><b><code>&gt;=</code>: </b>greater or equal</li>
2298</ul><p>
2299These operators always result in <b>false</b> or <b>true</b>.
2300
2301
2302<p>
2303Equality (<code>==</code>) first compares the type of its operands.
2304If the types are different, then the result is <b>false</b>.
2305Otherwise, the values of the operands are compared.
2306Strings are equal if they have the same byte content.
2307Numbers are equal if they denote the same mathematical value.
2308
2309
2310<p>
2311Tables, userdata, and threads
2312are compared by reference:
2313two objects are considered equal only if they are the same object.
2314Every time you create a new object
2315(a table, a userdata, or a thread),
2316this new object is different from any previously existing object.
2317A function is always equal to itself.
2318Functions with any detectable difference
2319(different behavior, different definition) are always different.
2320Functions created at different times but with no detectable differences
2321may be classified as equal or not
2322(depending on internal caching details).
2323
2324
2325<p>
2326You can change the way that Lua compares tables and userdata
2327by using the <code>__eq</code> metamethod (see <a href="#2.4">&sect;2.4</a>).
2328
2329
2330<p>
2331Equality comparisons do not convert strings to numbers
2332or vice versa.
2333Thus, <code>"0"==0</code> evaluates to <b>false</b>,
2334and <code>t[0]</code> and <code>t["0"]</code> denote different
2335entries in a table.
2336
2337
2338<p>
2339The operator <code>~=</code> is exactly the negation of equality (<code>==</code>).
2340
2341
2342<p>
2343The order operators work as follows.
2344If both arguments are numbers,
2345then they are compared according to their mathematical values,
2346regardless of their subtypes.
2347Otherwise, if both arguments are strings,
2348then their values are compared according to the current locale.
2349Otherwise, Lua tries to call the <code>__lt</code> or the <code>__le</code>
2350metamethod (see <a href="#2.4">&sect;2.4</a>).
2351A comparison <code>a &gt; b</code> is translated to <code>b &lt; a</code>
2352and <code>a &gt;= b</code> is translated to <code>b &lt;= a</code>.
2353
2354
2355<p>
2356Following the IEEE 754 standard,
2357the special value NaN is considered neither less than,
2358nor equal to, nor greater than any value, including itself.
2359
2360
2361
2362
2363
2364<h3>3.4.5 &ndash; <a name="3.4.5">Logical Operators</a></h3><p>
2365The logical operators in Lua are
2366<b>and</b>, <b>or</b>, and <b>not</b>.
2367Like the control structures (see <a href="#3.3.4">&sect;3.3.4</a>),
2368all logical operators consider both <b>false</b> and <b>nil</b> as false
2369and anything else as true.
2370
2371
2372<p>
2373The negation operator <b>not</b> always returns <b>false</b> or <b>true</b>.
2374The conjunction operator <b>and</b> returns its first argument
2375if this value is <b>false</b> or <b>nil</b>;
2376otherwise, <b>and</b> returns its second argument.
2377The disjunction operator <b>or</b> returns its first argument
2378if this value is different from <b>nil</b> and <b>false</b>;
2379otherwise, <b>or</b> returns its second argument.
2380Both <b>and</b> and <b>or</b> use short-circuit evaluation;
2381that is,
2382the second operand is evaluated only if necessary.
2383Here are some examples:
2384
2385<pre>
2386     10 or 20            --&gt; 10
2387     10 or error()       --&gt; 10
2388     nil or "a"          --&gt; "a"
2389     nil and 10          --&gt; nil
2390     false and error()   --&gt; false
2391     false and nil       --&gt; false
2392     false or nil        --&gt; nil
2393     10 and 20           --&gt; 20
2394</pre>
2395
2396
2397
2398
2399<h3>3.4.6 &ndash; <a name="3.4.6">Concatenation</a></h3><p>
2400The string concatenation operator in Lua is
2401denoted by two dots ('<code>..</code>').
2402If both operands are strings or numbers,
2403then the numbers are converted to strings
2404in a non-specified format (see <a href="#3.4.3">&sect;3.4.3</a>).
2405Otherwise, the <code>__concat</code> metamethod is called (see <a href="#2.4">&sect;2.4</a>).
2406
2407
2408
2409
2410
2411<h3>3.4.7 &ndash; <a name="3.4.7">The Length Operator</a></h3>
2412
2413<p>
2414The length operator is denoted by the unary prefix operator <code>#</code>.
2415
2416
2417<p>
2418The length of a string is its number of bytes.
2419(That is the usual meaning of string length when each
2420character is one byte.)
2421
2422
2423<p>
2424The length operator applied on a table
2425returns a border in that table.
2426A <em>border</em> in a table <code>t</code> is any non-negative integer
2427that satisfies the following condition:
2428
2429<pre>
2430     (border == 0 or t[border] ~= nil) and
2431     (t[border + 1] == nil or border == math.maxinteger)
2432</pre><p>
2433In words,
2434a border is any positive integer index present in the table
2435that is followed by an absent index,
2436plus two limit cases:
2437zero, when index 1 is absent;
2438and the maximum value for an integer, when that index is present.
2439Note that keys that are not positive integers
2440do not interfere with borders.
2441
2442
2443<p>
2444A table with exactly one border is called a <em>sequence</em>.
2445For instance, the table <code>{10, 20, 30, 40, 50}</code> is a sequence,
2446as it has only one border (5).
2447The table <code>{10, 20, 30, nil, 50}</code> has two borders (3 and 5),
2448and therefore it is not a sequence.
2449(The <b>nil</b> at index 4 is called a <em>hole</em>.)
2450The table <code>{nil, 20, 30, nil, nil, 60, nil}</code>
2451has three borders (0, 3, and 6),
2452so it is not a sequence, too.
2453The table <code>{}</code> is a sequence with border 0.
2454
2455
2456<p>
2457When <code>t</code> is a sequence,
2458<code>#t</code> returns its only border,
2459which corresponds to the intuitive notion of the length of the sequence.
2460When <code>t</code> is not a sequence,
2461<code>#t</code> can return any of its borders.
2462(The exact one depends on details of
2463the internal representation of the table,
2464which in turn can depend on how the table was populated and
2465the memory addresses of its non-numeric keys.)
2466
2467
2468<p>
2469The computation of the length of a table
2470has a guaranteed worst time of <em>O(log n)</em>,
2471where <em>n</em> is the largest integer key in the table.
2472
2473
2474<p>
2475A program can modify the behavior of the length operator for
2476any value but strings through the <code>__len</code> metamethod (see <a href="#2.4">&sect;2.4</a>).
2477
2478
2479
2480
2481
2482<h3>3.4.8 &ndash; <a name="3.4.8">Precedence</a></h3><p>
2483Operator precedence in Lua follows the table below,
2484from lower to higher priority:
2485
2486<pre>
2487     or
2488     and
2489     &lt;     &gt;     &lt;=    &gt;=    ~=    ==
2490     |
2491     ~
2492     &amp;
2493     &lt;&lt;    &gt;&gt;
2494     ..
2495     +     -
2496     *     /     //    %
2497     unary operators (not   #     -     ~)
2498     ^
2499</pre><p>
2500As usual,
2501you can use parentheses to change the precedences of an expression.
2502The concatenation ('<code>..</code>') and exponentiation ('<code>^</code>')
2503operators are right associative.
2504All other binary operators are left associative.
2505
2506
2507
2508
2509
2510<h3>3.4.9 &ndash; <a name="3.4.9">Table Constructors</a></h3><p>
2511Table constructors are expressions that create tables.
2512Every time a constructor is evaluated, a new table is created.
2513A constructor can be used to create an empty table
2514or to create a table and initialize some of its fields.
2515The general syntax for constructors is
2516
2517<pre>
2518	tableconstructor ::= &lsquo;<b>{</b>&rsquo; [fieldlist] &lsquo;<b>}</b>&rsquo;
2519	fieldlist ::= field {fieldsep field} [fieldsep]
2520	field ::= &lsquo;<b>[</b>&rsquo; exp &lsquo;<b>]</b>&rsquo; &lsquo;<b>=</b>&rsquo; exp | Name &lsquo;<b>=</b>&rsquo; exp | exp
2521	fieldsep ::= &lsquo;<b>,</b>&rsquo; | &lsquo;<b>;</b>&rsquo;
2522</pre>
2523
2524<p>
2525Each field of the form <code>[exp1] = exp2</code> adds to the new table an entry
2526with key <code>exp1</code> and value <code>exp2</code>.
2527A field of the form <code>name = exp</code> is equivalent to
2528<code>["name"] = exp</code>.
2529Fields of the form <code>exp</code> are equivalent to
2530<code>[i] = exp</code>, where <code>i</code> are consecutive integers
2531starting with 1;
2532fields in the other formats do not affect this counting.
2533For example,
2534
2535<pre>
2536     a = { [f(1)] = g; "x", "y"; x = 1, f(x), [30] = 23; 45 }
2537</pre><p>
2538is equivalent to
2539
2540<pre>
2541     do
2542       local t = {}
2543       t[f(1)] = g
2544       t[1] = "x"         -- 1st exp
2545       t[2] = "y"         -- 2nd exp
2546       t.x = 1            -- t["x"] = 1
2547       t[3] = f(x)        -- 3rd exp
2548       t[30] = 23
2549       t[4] = 45          -- 4th exp
2550       a = t
2551     end
2552</pre>
2553
2554<p>
2555The order of the assignments in a constructor is undefined.
2556(This order would be relevant only when there are repeated keys.)
2557
2558
2559<p>
2560If the last field in the list has the form <code>exp</code>
2561and the expression is a function call or a vararg expression,
2562then all values returned by this expression enter the list consecutively
2563(see <a href="#3.4.10">&sect;3.4.10</a>).
2564
2565
2566<p>
2567The field list can have an optional trailing separator,
2568as a convenience for machine-generated code.
2569
2570
2571
2572
2573
2574<h3>3.4.10 &ndash; <a name="3.4.10">Function Calls</a></h3><p>
2575A function call in Lua has the following syntax:
2576
2577<pre>
2578	functioncall ::= prefixexp args
2579</pre><p>
2580In a function call,
2581first prefixexp and args are evaluated.
2582If the value of prefixexp has type <em>function</em>,
2583then this function is called
2584with the given arguments.
2585Otherwise, if present,
2586the prefixexp <code>__call</code> metamethod is called:
2587its first argument is the value of prefixexp,
2588followed by the original call arguments
2589(see <a href="#2.4">&sect;2.4</a>).
2590
2591
2592<p>
2593The form
2594
2595<pre>
2596	functioncall ::= prefixexp &lsquo;<b>:</b>&rsquo; Name args
2597</pre><p>
2598can be used to emulate methods.
2599A call <code>v:name(<em>args</em>)</code>
2600is syntactic sugar for <code>v.name(v,<em>args</em>)</code>,
2601except that <code>v</code> is evaluated only once.
2602
2603
2604<p>
2605Arguments have the following syntax:
2606
2607<pre>
2608	args ::= &lsquo;<b>(</b>&rsquo; [explist] &lsquo;<b>)</b>&rsquo;
2609	args ::= tableconstructor
2610	args ::= LiteralString
2611</pre><p>
2612All argument expressions are evaluated before the call.
2613A call of the form <code>f{<em>fields</em>}</code> is
2614syntactic sugar for <code>f({<em>fields</em>})</code>;
2615that is, the argument list is a single new table.
2616A call of the form <code>f'<em>string</em>'</code>
2617(or <code>f"<em>string</em>"</code> or <code>f[[<em>string</em>]]</code>)
2618is syntactic sugar for <code>f('<em>string</em>')</code>;
2619that is, the argument list is a single literal string.
2620
2621
2622<p>
2623A call of the form <code>return <em>functioncall</em></code> not in the
2624scope of a to-be-closed variable is called a <em>tail call</em>.
2625Lua implements <em>proper tail calls</em>
2626(or <em>proper tail recursion</em>):
2627in a tail call,
2628the called function reuses the stack entry of the calling function.
2629Therefore, there is no limit on the number of nested tail calls that
2630a program can execute.
2631However, a tail call erases any debug information about the
2632calling function.
2633Note that a tail call only happens with a particular syntax,
2634where the <b>return</b> has one single function call as argument,
2635and it is outside the scope of any to-be-closed variable.
2636This syntax makes the calling function return exactly
2637the returns of the called function,
2638without any intervening action.
2639So, none of the following examples are tail calls:
2640
2641<pre>
2642     return (f(x))        -- results adjusted to 1
2643     return 2 * f(x)      -- result multiplied by 2
2644     return x, f(x)       -- additional results
2645     f(x); return         -- results discarded
2646     return x or f(x)     -- results adjusted to 1
2647</pre>
2648
2649
2650
2651
2652<h3>3.4.11 &ndash; <a name="3.4.11">Function Definitions</a></h3>
2653
2654<p>
2655The syntax for function definition is
2656
2657<pre>
2658	functiondef ::= <b>function</b> funcbody
2659	funcbody ::= &lsquo;<b>(</b>&rsquo; [parlist] &lsquo;<b>)</b>&rsquo; block <b>end</b>
2660</pre>
2661
2662<p>
2663The following syntactic sugar simplifies function definitions:
2664
2665<pre>
2666	stat ::= <b>function</b> funcname funcbody
2667	stat ::= <b>local</b> <b>function</b> Name funcbody
2668	funcname ::= Name {&lsquo;<b>.</b>&rsquo; Name} [&lsquo;<b>:</b>&rsquo; Name]
2669</pre><p>
2670The statement
2671
2672<pre>
2673     function f () <em>body</em> end
2674</pre><p>
2675translates to
2676
2677<pre>
2678     f = function () <em>body</em> end
2679</pre><p>
2680The statement
2681
2682<pre>
2683     function t.a.b.c.f () <em>body</em> end
2684</pre><p>
2685translates to
2686
2687<pre>
2688     t.a.b.c.f = function () <em>body</em> end
2689</pre><p>
2690The statement
2691
2692<pre>
2693     local function f () <em>body</em> end
2694</pre><p>
2695translates to
2696
2697<pre>
2698     local f; f = function () <em>body</em> end
2699</pre><p>
2700not to
2701
2702<pre>
2703     local f = function () <em>body</em> end
2704</pre><p>
2705(This only makes a difference when the body of the function
2706contains references to <code>f</code>.)
2707
2708
2709<p>
2710A function definition is an executable expression,
2711whose value has type <em>function</em>.
2712When Lua precompiles a chunk,
2713all its function bodies are precompiled too,
2714but they are not created yet.
2715Then, whenever Lua executes the function definition,
2716the function is <em>instantiated</em> (or <em>closed</em>).
2717This function instance, or <em>closure</em>,
2718is the final value of the expression.
2719
2720
2721<p>
2722Parameters act as local variables that are
2723initialized with the argument values:
2724
2725<pre>
2726	parlist ::= namelist [&lsquo;<b>,</b>&rsquo; &lsquo;<b>...</b>&rsquo;] | &lsquo;<b>...</b>&rsquo;
2727</pre><p>
2728When a Lua function is called,
2729it adjusts its list of arguments to
2730the length of its list of parameters,
2731unless the function is a <em>vararg function</em>,
2732which is indicated by three dots ('<code>...</code>')
2733at the end of its parameter list.
2734A vararg function does not adjust its argument list;
2735instead, it collects all extra arguments and supplies them
2736to the function through a <em>vararg expression</em>,
2737which is also written as three dots.
2738The value of this expression is a list of all actual extra arguments,
2739similar to a function with multiple results.
2740If a vararg expression is used inside another expression
2741or in the middle of a list of expressions,
2742then its return list is adjusted to one element.
2743If the expression is used as the last element of a list of expressions,
2744then no adjustment is made
2745(unless that last expression is enclosed in parentheses).
2746
2747
2748<p>
2749As an example, consider the following definitions:
2750
2751<pre>
2752     function f(a, b) end
2753     function g(a, b, ...) end
2754     function r() return 1,2,3 end
2755</pre><p>
2756Then, we have the following mapping from arguments to parameters and
2757to the vararg expression:
2758
2759<pre>
2760     CALL             PARAMETERS
2761
2762     f(3)             a=3, b=nil
2763     f(3, 4)          a=3, b=4
2764     f(3, 4, 5)       a=3, b=4
2765     f(r(), 10)       a=1, b=10
2766     f(r())           a=1, b=2
2767
2768     g(3)             a=3, b=nil, ... --&gt;  (nothing)
2769     g(3, 4)          a=3, b=4,   ... --&gt;  (nothing)
2770     g(3, 4, 5, 8)    a=3, b=4,   ... --&gt;  5  8
2771     g(5, r())        a=5, b=1,   ... --&gt;  2  3
2772</pre>
2773
2774<p>
2775Results are returned using the <b>return</b> statement (see <a href="#3.3.4">&sect;3.3.4</a>).
2776If control reaches the end of a function
2777without encountering a <b>return</b> statement,
2778then the function returns with no results.
2779
2780
2781<p>
2782
2783There is a system-dependent limit on the number of values
2784that a function may return.
2785This limit is guaranteed to be greater than 1000.
2786
2787
2788<p>
2789The <em>colon</em> syntax
2790is used to emulate <em>methods</em>,
2791adding an implicit extra parameter <code>self</code> to the function.
2792Thus, the statement
2793
2794<pre>
2795     function t.a.b.c:f (<em>params</em>) <em>body</em> end
2796</pre><p>
2797is syntactic sugar for
2798
2799<pre>
2800     t.a.b.c.f = function (self, <em>params</em>) <em>body</em> end
2801</pre>
2802
2803
2804
2805
2806
2807
2808<h2>3.5 &ndash; <a name="3.5">Visibility Rules</a></h2>
2809
2810<p>
2811
2812Lua is a lexically scoped language.
2813The scope of a local variable begins at the first statement after
2814its declaration and lasts until the last non-void statement
2815of the innermost block that includes the declaration.
2816Consider the following example:
2817
2818<pre>
2819     x = 10                -- global variable
2820     do                    -- new block
2821       local x = x         -- new 'x', with value 10
2822       print(x)            --&gt; 10
2823       x = x+1
2824       do                  -- another block
2825         local x = x+1     -- another 'x'
2826         print(x)          --&gt; 12
2827       end
2828       print(x)            --&gt; 11
2829     end
2830     print(x)              --&gt; 10  (the global one)
2831</pre>
2832
2833<p>
2834Notice that, in a declaration like <code>local x = x</code>,
2835the new <code>x</code> being declared is not in scope yet,
2836and so the second <code>x</code> refers to the outside variable.
2837
2838
2839<p>
2840Because of the lexical scoping rules,
2841local variables can be freely accessed by functions
2842defined inside their scope.
2843A local variable used by an inner function is called an <em>upvalue</em>
2844(or <em>external local variable</em>, or simply <em>external variable</em>)
2845inside the inner function.
2846
2847
2848<p>
2849Notice that each execution of a <b>local</b> statement
2850defines new local variables.
2851Consider the following example:
2852
2853<pre>
2854     a = {}
2855     local x = 20
2856     for i = 1, 10 do
2857       local y = 0
2858       a[i] = function () y = y + 1; return x + y end
2859     end
2860</pre><p>
2861The loop creates ten closures
2862(that is, ten instances of the anonymous function).
2863Each of these closures uses a different <code>y</code> variable,
2864while all of them share the same <code>x</code>.
2865
2866
2867
2868
2869
2870<h1>4 &ndash; <a name="4">The Application Program Interface</a></h1>
2871
2872
2873
2874<p>
2875
2876This section describes the C&nbsp;API for Lua, that is,
2877the set of C&nbsp;functions available to the host program to communicate
2878with Lua.
2879All API functions and related types and constants
2880are declared in the header file <a name="pdf-lua.h"><code>lua.h</code></a>.
2881
2882
2883<p>
2884Even when we use the term "function",
2885any facility in the API may be provided as a macro instead.
2886Except where stated otherwise,
2887all such macros use each of their arguments exactly once
2888(except for the first argument, which is always a Lua state),
2889and so do not generate any hidden side-effects.
2890
2891
2892<p>
2893As in most C&nbsp;libraries,
2894the Lua API functions do not check their arguments
2895for validity or consistency.
2896However, you can change this behavior by compiling Lua
2897with the macro <a name="pdf-LUA_USE_APICHECK"><code>LUA_USE_APICHECK</code></a> defined.
2898
2899
2900<p>
2901The Lua library is fully reentrant:
2902it has no global variables.
2903It keeps all information it needs in a dynamic structure,
2904called the <em>Lua state</em>.
2905
2906
2907<p>
2908Each Lua state has one or more threads,
2909which correspond to independent, cooperative lines of execution.
2910The type <a href="#lua_State"><code>lua_State</code></a> (despite its name) refers to a thread.
2911(Indirectly, through the thread, it also refers to the
2912Lua state associated to the thread.)
2913
2914
2915<p>
2916A pointer to a thread must be passed as the first argument to
2917every function in the library, except to <a href="#lua_newstate"><code>lua_newstate</code></a>,
2918which creates a Lua state from scratch and returns a pointer
2919to the <em>main thread</em> in the new state.
2920
2921
2922
2923
2924
2925<h2>4.1 &ndash; <a name="4.1">The Stack</a></h2>
2926
2927
2928
2929<p>
2930Lua uses a <em>virtual stack</em> to pass values to and from C.
2931Each element in this stack represents a Lua value
2932(<b>nil</b>, number, string, etc.).
2933Functions in the API can access this stack through the
2934Lua state parameter that they receive.
2935
2936
2937<p>
2938Whenever Lua calls C, the called function gets a new stack,
2939which is independent of previous stacks and of stacks of
2940C&nbsp;functions that are still active.
2941This stack initially contains any arguments to the C&nbsp;function
2942and it is where the C&nbsp;function can store temporary
2943Lua values and must push its results
2944to be returned to the caller (see <a href="#lua_CFunction"><code>lua_CFunction</code></a>).
2945
2946
2947<p>
2948For convenience,
2949most query operations in the API do not follow a strict stack discipline.
2950Instead, they can refer to any element in the stack
2951by using an <em>index</em>:
2952A positive index represents an absolute stack position,
2953starting at&nbsp;1 as the bottom of the stack;
2954a negative index represents an offset relative to the top of the stack.
2955More specifically, if the stack has <em>n</em> elements,
2956then index&nbsp;1 represents the first element
2957(that is, the element that was pushed onto the stack first)
2958and
2959index&nbsp;<em>n</em> represents the last element;
2960index&nbsp;-1 also represents the last element
2961(that is, the element at the&nbsp;top)
2962and index <em>-n</em> represents the first element.
2963
2964
2965
2966
2967
2968<h3>4.1.1 &ndash; <a name="4.1.1">Stack Size</a></h3>
2969
2970<p>
2971When you interact with the Lua API,
2972you are responsible for ensuring consistency.
2973In particular,
2974<em>you are responsible for controlling stack overflow</em>.
2975When you call any API function,
2976you must ensure the stack has enough room to accommodate the results.
2977
2978
2979<p>
2980There is one exception to the above rule:
2981When you call a Lua function
2982without a fixed number of results (see <a href="#lua_call"><code>lua_call</code></a>),
2983Lua ensures that the stack has enough space for all results.
2984However, it does not ensure any extra space.
2985So, before pushing anything on the stack after such a call
2986you should use <a href="#lua_checkstack"><code>lua_checkstack</code></a>.
2987
2988
2989<p>
2990Whenever Lua calls C,
2991it ensures that the stack has space for
2992at least <a name="pdf-LUA_MINSTACK"><code>LUA_MINSTACK</code></a> extra elements;
2993that is, you can safely push up to <code>LUA_MINSTACK</code> values into it.
2994<code>LUA_MINSTACK</code> is defined as 20,
2995so that usually you do not have to worry about stack space
2996unless your code has loops pushing elements onto the stack.
2997Whenever necessary,
2998you can use the function <a href="#lua_checkstack"><code>lua_checkstack</code></a>
2999to ensure that the stack has enough space for pushing new elements.
3000
3001
3002
3003
3004
3005<h3>4.1.2 &ndash; <a name="4.1.2">Valid and Acceptable Indices</a></h3>
3006
3007<p>
3008Any function in the API that receives stack indices
3009works only with <em>valid indices</em> or <em>acceptable indices</em>.
3010
3011
3012<p>
3013A <em>valid index</em> is an index that refers to a
3014position that stores a modifiable Lua value.
3015It comprises stack indices between&nbsp;1 and the stack top
3016(<code>1 &le; abs(index) &le; top</code>)
3017
3018plus <em>pseudo-indices</em>,
3019which represent some positions that are accessible to C&nbsp;code
3020but that are not in the stack.
3021Pseudo-indices are used to access the registry (see <a href="#4.3">&sect;4.3</a>)
3022and the upvalues of a C&nbsp;function (see <a href="#4.2">&sect;4.2</a>).
3023
3024
3025<p>
3026Functions that do not need a specific mutable position,
3027but only a value (e.g., query functions),
3028can be called with acceptable indices.
3029An <em>acceptable index</em> can be any valid index,
3030but it also can be any positive index after the stack top
3031within the space allocated for the stack,
3032that is, indices up to the stack size.
3033(Note that 0 is never an acceptable index.)
3034Indices to upvalues (see <a href="#4.2">&sect;4.2</a>) greater than the real number
3035of upvalues in the current C&nbsp;function are also acceptable (but invalid).
3036Except when noted otherwise,
3037functions in the API work with acceptable indices.
3038
3039
3040<p>
3041Acceptable indices serve to avoid extra tests
3042against the stack top when querying the stack.
3043For instance, a C&nbsp;function can query its third argument
3044without the need to check whether there is a third argument,
3045that is, without the need to check whether 3 is a valid index.
3046
3047
3048<p>
3049For functions that can be called with acceptable indices,
3050any non-valid index is treated as if it
3051contains a value of a virtual type <a name="pdf-LUA_TNONE"><code>LUA_TNONE</code></a>,
3052which behaves like a nil value.
3053
3054
3055
3056
3057
3058<h3>4.1.3 &ndash; <a name="4.1.3">Pointers to strings</a></h3>
3059
3060<p>
3061Several functions in the API return pointers (<code>const char*</code>)
3062to Lua strings in the stack.
3063(See <a href="#lua_pushfstring"><code>lua_pushfstring</code></a>, <a href="#lua_pushlstring"><code>lua_pushlstring</code></a>,
3064<a href="#lua_pushstring"><code>lua_pushstring</code></a>, and <a href="#lua_tolstring"><code>lua_tolstring</code></a>.
3065See also <a href="#luaL_checklstring"><code>luaL_checklstring</code></a>, <a href="#luaL_checkstring"><code>luaL_checkstring</code></a>,
3066and <a href="#luaL_tolstring"><code>luaL_tolstring</code></a> in the auxiliary library.)
3067
3068
3069<p>
3070In general,
3071Lua's garbage collection can free or move internal memory
3072and then invalidate pointers to internal strings.
3073To allow a safe use of these pointers,
3074The API guarantees that any pointer to a string in a stack index
3075is valid while the string value at that index is not removed from the stack.
3076(It can be moved to another index, though.)
3077When the index is a pseudo-index (referring to an upvalue),
3078the pointer is valid while the corresponding call is active and
3079the corresponding upvalue is not modified.
3080
3081
3082<p>
3083Some functions in the debug interface
3084also return pointers to strings,
3085namely <a href="#lua_getlocal"><code>lua_getlocal</code></a>, <a href="#lua_getupvalue"><code>lua_getupvalue</code></a>,
3086<a href="#lua_setlocal"><code>lua_setlocal</code></a>, and <a href="#lua_setupvalue"><code>lua_setupvalue</code></a>.
3087For these functions, the pointer is guaranteed to
3088be valid while the caller function is active and
3089the given closure (if one was given) is in the stack.
3090
3091
3092<p>
3093Except for these guarantees,
3094the garbage collector is free to invalidate
3095any pointer to internal strings.
3096
3097
3098
3099
3100
3101
3102
3103<h2>4.2 &ndash; <a name="4.2">C Closures</a></h2>
3104
3105<p>
3106When a C&nbsp;function is created,
3107it is possible to associate some values with it,
3108thus creating a <em>C&nbsp;closure</em>
3109(see <a href="#lua_pushcclosure"><code>lua_pushcclosure</code></a>);
3110these values are called <em>upvalues</em> and are
3111accessible to the function whenever it is called.
3112
3113
3114<p>
3115Whenever a C&nbsp;function is called,
3116its upvalues are located at specific pseudo-indices.
3117These pseudo-indices are produced by the macro
3118<a href="#lua_upvalueindex"><code>lua_upvalueindex</code></a>.
3119The first upvalue associated with a function is at index
3120<code>lua_upvalueindex(1)</code>, and so on.
3121Any access to <code>lua_upvalueindex(<em>n</em>)</code>,
3122where <em>n</em> is greater than the number of upvalues of the
3123current function
3124(but not greater than 256,
3125which is one plus the maximum number of upvalues in a closure),
3126produces an acceptable but invalid index.
3127
3128
3129<p>
3130A C&nbsp;closure can also change the values
3131of its corresponding upvalues.
3132
3133
3134
3135
3136
3137<h2>4.3 &ndash; <a name="4.3">Registry</a></h2>
3138
3139<p>
3140Lua provides a <em>registry</em>,
3141a predefined table that can be used by any C&nbsp;code to
3142store whatever Lua values it needs to store.
3143The registry table is always accessible at pseudo-index
3144<a name="pdf-LUA_REGISTRYINDEX"><code>LUA_REGISTRYINDEX</code></a>.
3145Any C&nbsp;library can store data into this table,
3146but it must take care to choose keys
3147that are different from those used
3148by other libraries, to avoid collisions.
3149Typically, you should use as key a string containing your library name,
3150or a light userdata with the address of a C&nbsp;object in your code,
3151or any Lua object created by your code.
3152As with variable names,
3153string keys starting with an underscore followed by
3154uppercase letters are reserved for Lua.
3155
3156
3157<p>
3158The integer keys in the registry are used
3159by the reference mechanism (see <a href="#luaL_ref"><code>luaL_ref</code></a>)
3160and by some predefined values.
3161Therefore, integer keys in the registry
3162must not be used for other purposes.
3163
3164
3165<p>
3166When you create a new Lua state,
3167its registry comes with some predefined values.
3168These predefined values are indexed with integer keys
3169defined as constants in <code>lua.h</code>.
3170The following constants are defined:
3171
3172<ul>
3173<li><b><a name="pdf-LUA_RIDX_MAINTHREAD"><code>LUA_RIDX_MAINTHREAD</code></a>: </b> At this index the registry has
3174the main thread of the state.
3175(The main thread is the one created together with the state.)
3176</li>
3177
3178<li><b><a name="pdf-LUA_RIDX_GLOBALS"><code>LUA_RIDX_GLOBALS</code></a>: </b> At this index the registry has
3179the global environment.
3180</li>
3181</ul>
3182
3183
3184
3185
3186<h2>4.4 &ndash; <a name="4.4">Error Handling in C</a></h2>
3187
3188
3189
3190<p>
3191Internally, Lua uses the C <code>longjmp</code> facility to handle errors.
3192(Lua will use exceptions if you compile it as C++;
3193search for <code>LUAI_THROW</code> in the source code for details.)
3194When Lua faces any error,
3195such as a memory allocation error or a type error,
3196it <em>raises</em> an error;
3197that is, it does a long jump.
3198A <em>protected environment</em> uses <code>setjmp</code>
3199to set a recovery point;
3200any error jumps to the most recent active recovery point.
3201
3202
3203<p>
3204Inside a C&nbsp;function you can raise an error explicitly
3205by calling <a href="#lua_error"><code>lua_error</code></a>.
3206
3207
3208<p>
3209Most functions in the API can raise an error,
3210for instance due to a memory allocation error.
3211The documentation for each function indicates whether
3212it can raise errors.
3213
3214
3215<p>
3216If an error happens outside any protected environment,
3217Lua calls a <em>panic function</em> (see <a href="#lua_atpanic"><code>lua_atpanic</code></a>)
3218and then calls <code>abort</code>,
3219thus exiting the host application.
3220Your panic function can avoid this exit by
3221never returning
3222(e.g., doing a long jump to your own recovery point outside Lua).
3223
3224
3225<p>
3226The panic function,
3227as its name implies,
3228is a mechanism of last resort.
3229Programs should avoid it.
3230As a general rule,
3231when a C&nbsp;function is called by Lua with a Lua state,
3232it can do whatever it wants on that Lua state,
3233as it should be already protected.
3234However,
3235when C code operates on other Lua states
3236(e.g., a Lua-state argument to the function,
3237a Lua state stored in the registry, or
3238the result of <a href="#lua_newthread"><code>lua_newthread</code></a>),
3239it should use them only in API calls that cannot raise errors.
3240
3241
3242<p>
3243The panic function runs as if it were a message handler (see <a href="#2.3">&sect;2.3</a>);
3244in particular, the error object is on the top of the stack.
3245However, there is no guarantee about stack space.
3246To push anything on the stack,
3247the panic function must first check the available space (see <a href="#4.1.1">&sect;4.1.1</a>).
3248
3249
3250
3251
3252
3253<h3>4.4.1 &ndash; <a name="4.4.1">Status Codes</a></h3>
3254
3255<p>
3256Several functions that report errors in the API use the following
3257status codes to indicate different kinds of errors or other conditions:
3258
3259<ul>
3260
3261<li><b><a name="pdf-LUA_OK"><code>LUA_OK</code></a> (0): </b> no errors.</li>
3262
3263<li><b><a name="pdf-LUA_ERRRUN"><code>LUA_ERRRUN</code></a>: </b> a runtime error.</li>
3264
3265<li><b><a name="pdf-LUA_ERRMEM"><code>LUA_ERRMEM</code></a>: </b>
3266memory allocation error.
3267For such errors, Lua does not call the message handler.
3268</li>
3269
3270<li><b><a name="pdf-LUA_ERRERR"><code>LUA_ERRERR</code></a>: </b> error while running the message handler.</li>
3271
3272<li><b><a name="pdf-LUA_ERRSYNTAX"><code>LUA_ERRSYNTAX</code></a>: </b> syntax error during precompilation.</li>
3273
3274<li><b><a name="pdf-LUA_YIELD"><code>LUA_YIELD</code></a>: </b> the thread (coroutine) yields.</li>
3275
3276<li><b><a name="pdf-LUA_ERRFILE"><code>LUA_ERRFILE</code></a>: </b> a file-related error;
3277e.g., it cannot open or read the file.</li>
3278
3279</ul><p>
3280These constants are defined in the header file <code>lua.h</code>.
3281
3282
3283
3284
3285
3286
3287
3288<h2>4.5 &ndash; <a name="4.5">Handling Yields in C</a></h2>
3289
3290<p>
3291Internally, Lua uses the C <code>longjmp</code> facility to yield a coroutine.
3292Therefore, if a C&nbsp;function <code>foo</code> calls an API function
3293and this API function yields
3294(directly or indirectly by calling another function that yields),
3295Lua cannot return to <code>foo</code> any more,
3296because the <code>longjmp</code> removes its frame from the C&nbsp;stack.
3297
3298
3299<p>
3300To avoid this kind of problem,
3301Lua raises an error whenever it tries to yield across an API call,
3302except for three functions:
3303<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>.
3304All those functions receive a <em>continuation function</em>
3305(as a parameter named <code>k</code>) to continue execution after a yield.
3306
3307
3308<p>
3309We need to set some terminology to explain continuations.
3310We have a C&nbsp;function called from Lua which we will call
3311the <em>original function</em>.
3312This original function then calls one of those three functions in the C API,
3313which we will call the <em>callee function</em>,
3314that then yields the current thread.
3315This can happen when the callee function is <a href="#lua_yieldk"><code>lua_yieldk</code></a>,
3316or 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>
3317and the function called by them yields.
3318
3319
3320<p>
3321Suppose the running thread yields while executing the callee function.
3322After the thread resumes,
3323it eventually will finish running the callee function.
3324However,
3325the callee function cannot return to the original function,
3326because its frame in the C&nbsp;stack was destroyed by the yield.
3327Instead, Lua calls a <em>continuation function</em>,
3328which was given as an argument to the callee function.
3329As the name implies,
3330the continuation function should continue the task
3331of the original function.
3332
3333
3334<p>
3335As an illustration, consider the following function:
3336
3337<pre>
3338     int original_function (lua_State *L) {
3339       ...     /* code 1 */
3340       status = lua_pcall(L, n, m, h);  /* calls Lua */
3341       ...     /* code 2 */
3342     }
3343</pre><p>
3344Now we want to allow
3345the Lua code being run by <a href="#lua_pcall"><code>lua_pcall</code></a> to yield.
3346First, we can rewrite our function like here:
3347
3348<pre>
3349     int k (lua_State *L, int status, lua_KContext ctx) {
3350       ...  /* code 2 */
3351     }
3352
3353     int original_function (lua_State *L) {
3354       ...     /* code 1 */
3355       return k(L, lua_pcall(L, n, m, h), ctx);
3356     }
3357</pre><p>
3358In the above code,
3359the new function <code>k</code> is a
3360<em>continuation function</em> (with type <a href="#lua_KFunction"><code>lua_KFunction</code></a>),
3361which should do all the work that the original function
3362was doing after calling <a href="#lua_pcall"><code>lua_pcall</code></a>.
3363Now, we must inform Lua that it must call <code>k</code> if the Lua code
3364being executed by <a href="#lua_pcall"><code>lua_pcall</code></a> gets interrupted in some way
3365(errors or yielding),
3366so we rewrite the code as here,
3367replacing <a href="#lua_pcall"><code>lua_pcall</code></a> by <a href="#lua_pcallk"><code>lua_pcallk</code></a>:
3368
3369<pre>
3370     int original_function (lua_State *L) {
3371       ...     /* code 1 */
3372       return k(L, lua_pcallk(L, n, m, h, ctx2, k), ctx1);
3373     }
3374</pre><p>
3375Note the external, explicit call to the continuation:
3376Lua will call the continuation only if needed, that is,
3377in case of errors or resuming after a yield.
3378If the called function returns normally without ever yielding,
3379<a href="#lua_pcallk"><code>lua_pcallk</code></a> (and <a href="#lua_callk"><code>lua_callk</code></a>) will also return normally.
3380(Of course, instead of calling the continuation in that case,
3381you can do the equivalent work directly inside the original function.)
3382
3383
3384<p>
3385Besides the Lua state,
3386the continuation function has two other parameters:
3387the final status of the call and the context value (<code>ctx</code>) that
3388was passed originally to <a href="#lua_pcallk"><code>lua_pcallk</code></a>.
3389Lua does not use this context value;
3390it only passes this value from the original function to the
3391continuation function.
3392For <a href="#lua_pcallk"><code>lua_pcallk</code></a>,
3393the status is the same value that would be returned by <a href="#lua_pcallk"><code>lua_pcallk</code></a>,
3394except that it is <a href="#pdf-LUA_YIELD"><code>LUA_YIELD</code></a> when being executed after a yield
3395(instead of <a href="#pdf-LUA_OK"><code>LUA_OK</code></a>).
3396For <a href="#lua_yieldk"><code>lua_yieldk</code></a> and <a href="#lua_callk"><code>lua_callk</code></a>,
3397the status is always <a href="#pdf-LUA_YIELD"><code>LUA_YIELD</code></a> when Lua calls the continuation.
3398(For these two functions,
3399Lua will not call the continuation in case of errors,
3400because they do not handle errors.)
3401Similarly, when using <a href="#lua_callk"><code>lua_callk</code></a>,
3402you should call the continuation function
3403with <a href="#pdf-LUA_OK"><code>LUA_OK</code></a> as the status.
3404(For <a href="#lua_yieldk"><code>lua_yieldk</code></a>, there is not much point in calling
3405directly the continuation function,
3406because <a href="#lua_yieldk"><code>lua_yieldk</code></a> usually does not return.)
3407
3408
3409<p>
3410Lua treats the continuation function as if it were the original function.
3411The continuation function receives the same Lua stack
3412from the original function,
3413in the same state it would be if the callee function had returned.
3414(For instance,
3415after a <a href="#lua_callk"><code>lua_callk</code></a> the function and its arguments are
3416removed from the stack and replaced by the results from the call.)
3417It also has the same upvalues.
3418Whatever it returns is handled by Lua as if it were the return
3419of the original function.
3420
3421
3422
3423
3424
3425<h2>4.6 &ndash; <a name="4.6">Functions and Types</a></h2>
3426
3427<p>
3428Here we list all functions and types from the C&nbsp;API in
3429alphabetical order.
3430Each function has an indicator like this:
3431<span class="apii">[-o, +p, <em>x</em>]</span>
3432
3433
3434<p>
3435The first field, <code>o</code>,
3436is how many elements the function pops from the stack.
3437The second field, <code>p</code>,
3438is how many elements the function pushes onto the stack.
3439(Any function always pushes its results after popping its arguments.)
3440A field in the form <code>x|y</code> means the function can push (or pop)
3441<code>x</code> or <code>y</code> elements,
3442depending on the situation;
3443an interrogation mark '<code>?</code>' means that
3444we cannot know how many elements the function pops/pushes
3445by looking only at its arguments.
3446(For instance, they may depend on what is in the stack.)
3447The third field, <code>x</code>,
3448tells whether the function may raise errors:
3449'<code>-</code>' means the function never raises any error;
3450'<code>m</code>' means the function may raise only out-of-memory errors;
3451'<code>v</code>' means the function may raise the errors explained in the text;
3452'<code>e</code>' means the function can run arbitrary Lua code,
3453either directly or through metamethods,
3454and therefore may raise any errors.
3455
3456
3457
3458<hr><h3><a name="lua_absindex"><code>lua_absindex</code></a></h3><p>
3459<span class="apii">[-0, +0, &ndash;]</span>
3460<pre>int lua_absindex (lua_State *L, int idx);</pre>
3461
3462<p>
3463Converts the acceptable index <code>idx</code>
3464into an equivalent absolute index
3465(that is, one that does not depend on the stack size).
3466
3467
3468
3469
3470
3471<hr><h3><a name="lua_Alloc"><code>lua_Alloc</code></a></h3>
3472<pre>typedef void * (*lua_Alloc) (void *ud,
3473                             void *ptr,
3474                             size_t osize,
3475                             size_t nsize);</pre>
3476
3477<p>
3478The type of the memory-allocation function used by Lua states.
3479The allocator function must provide a
3480functionality similar to <code>realloc</code>,
3481but not exactly the same.
3482Its arguments are
3483<code>ud</code>, an opaque pointer passed to <a href="#lua_newstate"><code>lua_newstate</code></a>;
3484<code>ptr</code>, a pointer to the block being allocated/reallocated/freed;
3485<code>osize</code>, the original size of the block or some code about what
3486is being allocated;
3487and <code>nsize</code>, the new size of the block.
3488
3489
3490<p>
3491When <code>ptr</code> is not <code>NULL</code>,
3492<code>osize</code> is the size of the block pointed by <code>ptr</code>,
3493that is, the size given when it was allocated or reallocated.
3494
3495
3496<p>
3497When <code>ptr</code> is <code>NULL</code>,
3498<code>osize</code> encodes the kind of object that Lua is allocating.
3499<code>osize</code> is any of
3500<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>,
3501<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)
3502Lua is creating a new object of that type.
3503When <code>osize</code> is some other value,
3504Lua is allocating memory for something else.
3505
3506
3507<p>
3508Lua assumes the following behavior from the allocator function:
3509
3510
3511<p>
3512When <code>nsize</code> is zero,
3513the allocator must behave like <code>free</code>
3514and then return <code>NULL</code>.
3515
3516
3517<p>
3518When <code>nsize</code> is not zero,
3519the allocator must behave like <code>realloc</code>.
3520In particular, the allocator returns <code>NULL</code>
3521if and only if it cannot fulfill the request.
3522
3523
3524<p>
3525Here is a simple implementation for the allocator function.
3526It is used in the auxiliary library by <a href="#luaL_newstate"><code>luaL_newstate</code></a>.
3527
3528<pre>
3529     static void *l_alloc (void *ud, void *ptr, size_t osize,
3530                                                size_t nsize) {
3531       (void)ud;  (void)osize;  /* not used */
3532       if (nsize == 0) {
3533         free(ptr);
3534         return NULL;
3535       }
3536       else
3537         return realloc(ptr, nsize);
3538     }
3539</pre><p>
3540Note that Standard&nbsp;C ensures
3541that <code>free(NULL)</code> has no effect and that
3542<code>realloc(NULL,size)</code> is equivalent to <code>malloc(size)</code>.
3543
3544
3545
3546
3547
3548<hr><h3><a name="lua_arith"><code>lua_arith</code></a></h3><p>
3549<span class="apii">[-(2|1), +1, <em>e</em>]</span>
3550<pre>void lua_arith (lua_State *L, int op);</pre>
3551
3552<p>
3553Performs an arithmetic or bitwise operation over the two values
3554(or one, in the case of negations)
3555at the top of the stack,
3556with the value on the top being the second operand,
3557pops these values, and pushes the result of the operation.
3558The function follows the semantics of the corresponding Lua operator
3559(that is, it may call metamethods).
3560
3561
3562<p>
3563The value of <code>op</code> must be one of the following constants:
3564
3565<ul>
3566
3567<li><b><a name="pdf-LUA_OPADD"><code>LUA_OPADD</code></a>: </b> performs addition (<code>+</code>)</li>
3568<li><b><a name="pdf-LUA_OPSUB"><code>LUA_OPSUB</code></a>: </b> performs subtraction (<code>-</code>)</li>
3569<li><b><a name="pdf-LUA_OPMUL"><code>LUA_OPMUL</code></a>: </b> performs multiplication (<code>*</code>)</li>
3570<li><b><a name="pdf-LUA_OPDIV"><code>LUA_OPDIV</code></a>: </b> performs float division (<code>/</code>)</li>
3571<li><b><a name="pdf-LUA_OPIDIV"><code>LUA_OPIDIV</code></a>: </b> performs floor division (<code>//</code>)</li>
3572<li><b><a name="pdf-LUA_OPMOD"><code>LUA_OPMOD</code></a>: </b> performs modulo (<code>%</code>)</li>
3573<li><b><a name="pdf-LUA_OPPOW"><code>LUA_OPPOW</code></a>: </b> performs exponentiation (<code>^</code>)</li>
3574<li><b><a name="pdf-LUA_OPUNM"><code>LUA_OPUNM</code></a>: </b> performs mathematical negation (unary <code>-</code>)</li>
3575<li><b><a name="pdf-LUA_OPBNOT"><code>LUA_OPBNOT</code></a>: </b> performs bitwise NOT (<code>~</code>)</li>
3576<li><b><a name="pdf-LUA_OPBAND"><code>LUA_OPBAND</code></a>: </b> performs bitwise AND (<code>&amp;</code>)</li>
3577<li><b><a name="pdf-LUA_OPBOR"><code>LUA_OPBOR</code></a>: </b> performs bitwise OR (<code>|</code>)</li>
3578<li><b><a name="pdf-LUA_OPBXOR"><code>LUA_OPBXOR</code></a>: </b> performs bitwise exclusive OR (<code>~</code>)</li>
3579<li><b><a name="pdf-LUA_OPSHL"><code>LUA_OPSHL</code></a>: </b> performs left shift (<code>&lt;&lt;</code>)</li>
3580<li><b><a name="pdf-LUA_OPSHR"><code>LUA_OPSHR</code></a>: </b> performs right shift (<code>&gt;&gt;</code>)</li>
3581
3582</ul>
3583
3584
3585
3586
3587<hr><h3><a name="lua_atpanic"><code>lua_atpanic</code></a></h3><p>
3588<span class="apii">[-0, +0, &ndash;]</span>
3589<pre>lua_CFunction lua_atpanic (lua_State *L, lua_CFunction panicf);</pre>
3590
3591<p>
3592Sets a new panic function and returns the old one (see <a href="#4.4">&sect;4.4</a>).
3593
3594
3595
3596
3597
3598<hr><h3><a name="lua_call"><code>lua_call</code></a></h3><p>
3599<span class="apii">[-(nargs+1), +nresults, <em>e</em>]</span>
3600<pre>void lua_call (lua_State *L, int nargs, int nresults);</pre>
3601
3602<p>
3603Calls a function.
3604Like regular Lua calls,
3605<code>lua_call</code> respects the <code>__call</code> metamethod.
3606So, here the word "function"
3607means any callable value.
3608
3609
3610<p>
3611To do a call you must use the following protocol:
3612first, the function to be called is pushed onto the stack;
3613then, the arguments to the call are pushed
3614in direct order;
3615that is, the first argument is pushed first.
3616Finally you call <a href="#lua_call"><code>lua_call</code></a>;
3617<code>nargs</code> is the number of arguments that you pushed onto the stack.
3618When the function returns,
3619all arguments and the function value are popped
3620and the call results are pushed onto the stack.
3621The number of results is adjusted to <code>nresults</code>,
3622unless <code>nresults</code> is <a name="pdf-LUA_MULTRET"><code>LUA_MULTRET</code></a>.
3623In this case, all results from the function are pushed;
3624Lua takes care that the returned values fit into the stack space,
3625but it does not ensure any extra space in the stack.
3626The function results are pushed onto the stack in direct order
3627(the first result is pushed first),
3628so that after the call the last result is on the top of the stack.
3629
3630
3631<p>
3632Any error while calling and running the function is propagated upwards
3633(with a <code>longjmp</code>).
3634
3635
3636<p>
3637The following example shows how the host program can do the
3638equivalent to this Lua code:
3639
3640<pre>
3641     a = f("how", t.x, 14)
3642</pre><p>
3643Here it is in&nbsp;C:
3644
3645<pre>
3646     lua_getglobal(L, "f");                  /* function to be called */
3647     lua_pushliteral(L, "how");                       /* 1st argument */
3648     lua_getglobal(L, "t");                    /* table to be indexed */
3649     lua_getfield(L, -1, "x");        /* push result of t.x (2nd arg) */
3650     lua_remove(L, -2);                  /* remove 't' from the stack */
3651     lua_pushinteger(L, 14);                          /* 3rd argument */
3652     lua_call(L, 3, 1);     /* call 'f' with 3 arguments and 1 result */
3653     lua_setglobal(L, "a");                         /* set global 'a' */
3654</pre><p>
3655Note that the code above is <em>balanced</em>:
3656at its end, the stack is back to its original configuration.
3657This is considered good programming practice.
3658
3659
3660
3661
3662
3663<hr><h3><a name="lua_callk"><code>lua_callk</code></a></h3><p>
3664<span class="apii">[-(nargs + 1), +nresults, <em>e</em>]</span>
3665<pre>void lua_callk (lua_State *L,
3666                int nargs,
3667                int nresults,
3668                lua_KContext ctx,
3669                lua_KFunction k);</pre>
3670
3671<p>
3672This function behaves exactly like <a href="#lua_call"><code>lua_call</code></a>,
3673but allows the called function to yield (see <a href="#4.5">&sect;4.5</a>).
3674
3675
3676
3677
3678
3679<hr><h3><a name="lua_CFunction"><code>lua_CFunction</code></a></h3>
3680<pre>typedef int (*lua_CFunction) (lua_State *L);</pre>
3681
3682<p>
3683Type for C&nbsp;functions.
3684
3685
3686<p>
3687In order to communicate properly with Lua,
3688a C&nbsp;function must use the following protocol,
3689which defines the way parameters and results are passed:
3690a C&nbsp;function receives its arguments from Lua in its stack
3691in direct order (the first argument is pushed first).
3692So, when the function starts,
3693<code>lua_gettop(L)</code> returns the number of arguments received by the function.
3694The first argument (if any) is at index 1
3695and its last argument is at index <code>lua_gettop(L)</code>.
3696To return values to Lua, a C&nbsp;function just pushes them onto the stack,
3697in direct order (the first result is pushed first),
3698and returns in C the number of results.
3699Any other value in the stack below the results will be properly
3700discarded by Lua.
3701Like a Lua function, a C&nbsp;function called by Lua can also return
3702many results.
3703
3704
3705<p>
3706As an example, the following function receives a variable number
3707of numeric arguments and returns their average and their sum:
3708
3709<pre>
3710     static int foo (lua_State *L) {
3711       int n = lua_gettop(L);    /* number of arguments */
3712       lua_Number sum = 0.0;
3713       int i;
3714       for (i = 1; i &lt;= n; i++) {
3715         if (!lua_isnumber(L, i)) {
3716           lua_pushliteral(L, "incorrect argument");
3717           lua_error(L);
3718         }
3719         sum += lua_tonumber(L, i);
3720       }
3721       lua_pushnumber(L, sum/n);        /* first result */
3722       lua_pushnumber(L, sum);         /* second result */
3723       return 2;                   /* number of results */
3724     }
3725</pre>
3726
3727
3728
3729
3730<hr><h3><a name="lua_checkstack"><code>lua_checkstack</code></a></h3><p>
3731<span class="apii">[-0, +0, &ndash;]</span>
3732<pre>int lua_checkstack (lua_State *L, int n);</pre>
3733
3734<p>
3735Ensures that the stack has space for at least <code>n</code> extra elements,
3736that is, that you can safely push up to <code>n</code> values into it.
3737It returns false if it cannot fulfill the request,
3738either because it would cause the stack
3739to be greater than a fixed maximum size
3740(typically at least several thousand elements) or
3741because it cannot allocate memory for the extra space.
3742This function never shrinks the stack;
3743if the stack already has space for the extra elements,
3744it is left unchanged.
3745
3746
3747
3748
3749
3750<hr><h3><a name="lua_close"><code>lua_close</code></a></h3><p>
3751<span class="apii">[-0, +0, &ndash;]</span>
3752<pre>void lua_close (lua_State *L);</pre>
3753
3754<p>
3755Close all active to-be-closed variables in the main thread,
3756release all objects in the given Lua state
3757(calling the corresponding garbage-collection metamethods, if any),
3758and frees all dynamic memory used by this state.
3759
3760
3761<p>
3762On several platforms, you may not need to call this function,
3763because all resources are naturally released when the host program ends.
3764On the other hand, long-running programs that create multiple states,
3765such as daemons or web servers,
3766will probably need to close states as soon as they are not needed.
3767
3768
3769
3770
3771
3772<hr><h3><a name="lua_closeslot"><code>lua_closeslot</code></a></h3><p>
3773<span class="apii">[-0, +0, <em>e</em>]</span>
3774<pre>void lua_closeslot (lua_State *L, int index);</pre>
3775
3776<p>
3777Close the to-be-closed slot at the given index and set its value to <b>nil</b>.
3778The index must be the last index previously marked to be closed
3779(see <a href="#lua_toclose"><code>lua_toclose</code></a>) that is still active (that is, not closed yet).
3780
3781
3782<p>
3783A <code>__close</code> metamethod cannot yield
3784when called through this function.
3785
3786
3787<p>
3788(Exceptionally, this function was introduced in release 5.4.3.
3789It is not present in previous 5.4 releases.)
3790
3791
3792
3793
3794
3795<hr><h3><a name="lua_compare"><code>lua_compare</code></a></h3><p>
3796<span class="apii">[-0, +0, <em>e</em>]</span>
3797<pre>int lua_compare (lua_State *L, int index1, int index2, int op);</pre>
3798
3799<p>
3800Compares two Lua values.
3801Returns 1 if the value at index <code>index1</code> satisfies <code>op</code>
3802when compared with the value at index <code>index2</code>,
3803following the semantics of the corresponding Lua operator
3804(that is, it may call metamethods).
3805Otherwise returns&nbsp;0.
3806Also returns&nbsp;0 if any of the indices is not valid.
3807
3808
3809<p>
3810The value of <code>op</code> must be one of the following constants:
3811
3812<ul>
3813
3814<li><b><a name="pdf-LUA_OPEQ"><code>LUA_OPEQ</code></a>: </b> compares for equality (<code>==</code>)</li>
3815<li><b><a name="pdf-LUA_OPLT"><code>LUA_OPLT</code></a>: </b> compares for less than (<code>&lt;</code>)</li>
3816<li><b><a name="pdf-LUA_OPLE"><code>LUA_OPLE</code></a>: </b> compares for less or equal (<code>&lt;=</code>)</li>
3817
3818</ul>
3819
3820
3821
3822
3823<hr><h3><a name="lua_concat"><code>lua_concat</code></a></h3><p>
3824<span class="apii">[-n, +1, <em>e</em>]</span>
3825<pre>void lua_concat (lua_State *L, int n);</pre>
3826
3827<p>
3828Concatenates the <code>n</code> values at the top of the stack,
3829pops them, and leaves the result on the top.
3830If <code>n</code>&nbsp;is&nbsp;1, the result is the single value on the stack
3831(that is, the function does nothing);
3832if <code>n</code> is 0, the result is the empty string.
3833Concatenation is performed following the usual semantics of Lua
3834(see <a href="#3.4.6">&sect;3.4.6</a>).
3835
3836
3837
3838
3839
3840<hr><h3><a name="lua_copy"><code>lua_copy</code></a></h3><p>
3841<span class="apii">[-0, +0, &ndash;]</span>
3842<pre>void lua_copy (lua_State *L, int fromidx, int toidx);</pre>
3843
3844<p>
3845Copies the element at index <code>fromidx</code>
3846into the valid index <code>toidx</code>,
3847replacing the value at that position.
3848Values at other positions are not affected.
3849
3850
3851
3852
3853
3854<hr><h3><a name="lua_createtable"><code>lua_createtable</code></a></h3><p>
3855<span class="apii">[-0, +1, <em>m</em>]</span>
3856<pre>void lua_createtable (lua_State *L, int narr, int nrec);</pre>
3857
3858<p>
3859Creates a new empty table and pushes it onto the stack.
3860Parameter <code>narr</code> is a hint for how many elements the table
3861will have as a sequence;
3862parameter <code>nrec</code> is a hint for how many other elements
3863the table will have.
3864Lua may use these hints to preallocate memory for the new table.
3865This preallocation may help performance when you know in advance
3866how many elements the table will have.
3867Otherwise you can use the function <a href="#lua_newtable"><code>lua_newtable</code></a>.
3868
3869
3870
3871
3872
3873<hr><h3><a name="lua_dump"><code>lua_dump</code></a></h3><p>
3874<span class="apii">[-0, +0, &ndash;]</span>
3875<pre>int lua_dump (lua_State *L,
3876                        lua_Writer writer,
3877                        void *data,
3878                        int strip);</pre>
3879
3880<p>
3881Dumps a function as a binary chunk.
3882Receives a Lua function on the top of the stack
3883and produces a binary chunk that,
3884if loaded again,
3885results in a function equivalent to the one dumped.
3886As it produces parts of the chunk,
3887<a href="#lua_dump"><code>lua_dump</code></a> calls function <code>writer</code> (see <a href="#lua_Writer"><code>lua_Writer</code></a>)
3888with the given <code>data</code>
3889to write them.
3890
3891
3892<p>
3893If <code>strip</code> is true,
3894the binary representation may not include all debug information
3895about the function,
3896to save space.
3897
3898
3899<p>
3900The value returned is the error code returned by the last
3901call to the writer;
39020&nbsp;means no errors.
3903
3904
3905<p>
3906This function does not pop the Lua function from the stack.
3907
3908
3909
3910
3911
3912<hr><h3><a name="lua_error"><code>lua_error</code></a></h3><p>
3913<span class="apii">[-1, +0, <em>v</em>]</span>
3914<pre>int lua_error (lua_State *L);</pre>
3915
3916<p>
3917Raises a Lua error,
3918using the value on the top of the stack as the error object.
3919This function does a long jump,
3920and therefore never returns
3921(see <a href="#luaL_error"><code>luaL_error</code></a>).
3922
3923
3924
3925
3926
3927<hr><h3><a name="lua_gc"><code>lua_gc</code></a></h3><p>
3928<span class="apii">[-0, +0, &ndash;]</span>
3929<pre>int lua_gc (lua_State *L, int what, ...);</pre>
3930
3931<p>
3932Controls the garbage collector.
3933
3934
3935<p>
3936This function performs several tasks,
3937according to the value of the parameter <code>what</code>.
3938For options that need extra arguments,
3939they are listed after the option.
3940
3941<ul>
3942
3943<li><b><code>LUA_GCCOLLECT</code>: </b>
3944Performs a full garbage-collection cycle.
3945</li>
3946
3947<li><b><code>LUA_GCSTOP</code>: </b>
3948Stops the garbage collector.
3949</li>
3950
3951<li><b><code>LUA_GCRESTART</code>: </b>
3952Restarts the garbage collector.
3953</li>
3954
3955<li><b><code>LUA_GCCOUNT</code>: </b>
3956Returns the current amount of memory (in Kbytes) in use by Lua.
3957</li>
3958
3959<li><b><code>LUA_GCCOUNTB</code>: </b>
3960Returns the remainder of dividing the current amount of bytes of
3961memory in use by Lua by 1024.
3962</li>
3963
3964<li><b><code>LUA_GCSTEP</code> <code>(int stepsize)</code>: </b>
3965Performs an incremental step of garbage collection,
3966corresponding to the allocation of <code>stepsize</code> Kbytes.
3967</li>
3968
3969<li><b><code>LUA_GCISRUNNING</code>: </b>
3970Returns a boolean that tells whether the collector is running
3971(i.e., not stopped).
3972</li>
3973
3974<li><b><code>LUA_GCINC</code> (int pause, int stepmul, stepsize): </b>
3975Changes the collector to incremental mode
3976with the given parameters (see <a href="#2.5.1">&sect;2.5.1</a>).
3977Returns the previous mode (<code>LUA_GCGEN</code> or <code>LUA_GCINC</code>).
3978</li>
3979
3980<li><b><code>LUA_GCGEN</code> (int minormul, int majormul): </b>
3981Changes the collector to generational mode
3982with the given parameters (see <a href="#2.5.2">&sect;2.5.2</a>).
3983Returns the previous mode (<code>LUA_GCGEN</code> or <code>LUA_GCINC</code>).
3984</li>
3985
3986</ul><p>
3987For more details about these options,
3988see <a href="#pdf-collectgarbage"><code>collectgarbage</code></a>.
3989
3990
3991<p>
3992This function should not be called by a finalizer.
3993
3994
3995
3996
3997
3998<hr><h3><a name="lua_getallocf"><code>lua_getallocf</code></a></h3><p>
3999<span class="apii">[-0, +0, &ndash;]</span>
4000<pre>lua_Alloc lua_getallocf (lua_State *L, void **ud);</pre>
4001
4002<p>
4003Returns the memory-allocation function of a given state.
4004If <code>ud</code> is not <code>NULL</code>, Lua stores in <code>*ud</code> the
4005opaque pointer given when the memory-allocator function was set.
4006
4007
4008
4009
4010
4011<hr><h3><a name="lua_getfield"><code>lua_getfield</code></a></h3><p>
4012<span class="apii">[-0, +1, <em>e</em>]</span>
4013<pre>int lua_getfield (lua_State *L, int index, const char *k);</pre>
4014
4015<p>
4016Pushes onto the stack the value <code>t[k]</code>,
4017where <code>t</code> is the value at the given index.
4018As in Lua, this function may trigger a metamethod
4019for the "index" event (see <a href="#2.4">&sect;2.4</a>).
4020
4021
4022<p>
4023Returns the type of the pushed value.
4024
4025
4026
4027
4028
4029<hr><h3><a name="lua_getextraspace"><code>lua_getextraspace</code></a></h3><p>
4030<span class="apii">[-0, +0, &ndash;]</span>
4031<pre>void *lua_getextraspace (lua_State *L);</pre>
4032
4033<p>
4034Returns a pointer to a raw memory area associated with the
4035given Lua state.
4036The application can use this area for any purpose;
4037Lua does not use it for anything.
4038
4039
4040<p>
4041Each new thread has this area initialized with a copy
4042of the area of the main thread.
4043
4044
4045<p>
4046By default, this area has the size of a pointer to void,
4047but you can recompile Lua with a different size for this area.
4048(See <code>LUA_EXTRASPACE</code> in <code>luaconf.h</code>.)
4049
4050
4051
4052
4053
4054<hr><h3><a name="lua_getglobal"><code>lua_getglobal</code></a></h3><p>
4055<span class="apii">[-0, +1, <em>e</em>]</span>
4056<pre>int lua_getglobal (lua_State *L, const char *name);</pre>
4057
4058<p>
4059Pushes onto the stack the value of the global <code>name</code>.
4060Returns the type of that value.
4061
4062
4063
4064
4065
4066<hr><h3><a name="lua_geti"><code>lua_geti</code></a></h3><p>
4067<span class="apii">[-0, +1, <em>e</em>]</span>
4068<pre>int lua_geti (lua_State *L, int index, lua_Integer i);</pre>
4069
4070<p>
4071Pushes onto the stack the value <code>t[i]</code>,
4072where <code>t</code> is the value at the given index.
4073As in Lua, this function may trigger a metamethod
4074for the "index" event (see <a href="#2.4">&sect;2.4</a>).
4075
4076
4077<p>
4078Returns the type of the pushed value.
4079
4080
4081
4082
4083
4084<hr><h3><a name="lua_getmetatable"><code>lua_getmetatable</code></a></h3><p>
4085<span class="apii">[-0, +(0|1), &ndash;]</span>
4086<pre>int lua_getmetatable (lua_State *L, int index);</pre>
4087
4088<p>
4089If the value at the given index has a metatable,
4090the function pushes that metatable onto the stack and returns&nbsp;1.
4091Otherwise,
4092the function returns&nbsp;0 and pushes nothing on the stack.
4093
4094
4095
4096
4097
4098<hr><h3><a name="lua_gettable"><code>lua_gettable</code></a></h3><p>
4099<span class="apii">[-1, +1, <em>e</em>]</span>
4100<pre>int lua_gettable (lua_State *L, int index);</pre>
4101
4102<p>
4103Pushes onto the stack the value <code>t[k]</code>,
4104where <code>t</code> is the value at the given index
4105and <code>k</code> is the value on the top of the stack.
4106
4107
4108<p>
4109This function pops the key from the stack,
4110pushing the resulting value in its place.
4111As in Lua, this function may trigger a metamethod
4112for the "index" event (see <a href="#2.4">&sect;2.4</a>).
4113
4114
4115<p>
4116Returns the type of the pushed value.
4117
4118
4119
4120
4121
4122<hr><h3><a name="lua_gettop"><code>lua_gettop</code></a></h3><p>
4123<span class="apii">[-0, +0, &ndash;]</span>
4124<pre>int lua_gettop (lua_State *L);</pre>
4125
4126<p>
4127Returns the index of the top element in the stack.
4128Because indices start at&nbsp;1,
4129this result is equal to the number of elements in the stack;
4130in particular, 0&nbsp;means an empty stack.
4131
4132
4133
4134
4135
4136<hr><h3><a name="lua_getiuservalue"><code>lua_getiuservalue</code></a></h3><p>
4137<span class="apii">[-0, +1, &ndash;]</span>
4138<pre>int lua_getiuservalue (lua_State *L, int index, int n);</pre>
4139
4140<p>
4141Pushes onto the stack the <code>n</code>-th user value associated with the
4142full userdata at the given index and
4143returns the type of the pushed value.
4144
4145
4146<p>
4147If the userdata does not have that value,
4148pushes <b>nil</b> and returns <a href="#pdf-LUA_TNONE"><code>LUA_TNONE</code></a>.
4149
4150
4151
4152
4153
4154<hr><h3><a name="lua_insert"><code>lua_insert</code></a></h3><p>
4155<span class="apii">[-1, +1, &ndash;]</span>
4156<pre>void lua_insert (lua_State *L, int index);</pre>
4157
4158<p>
4159Moves the top element into the given valid index,
4160shifting up the elements above this index to open space.
4161This function cannot be called with a pseudo-index,
4162because a pseudo-index is not an actual stack position.
4163
4164
4165
4166
4167
4168<hr><h3><a name="lua_Integer"><code>lua_Integer</code></a></h3>
4169<pre>typedef ... lua_Integer;</pre>
4170
4171<p>
4172The type of integers in Lua.
4173
4174
4175<p>
4176By default this type is <code>long long</code>,
4177(usually a 64-bit two-complement integer),
4178but that can be changed to <code>long</code> or <code>int</code>
4179(usually a 32-bit two-complement integer).
4180(See <code>LUA_INT_TYPE</code> in <code>luaconf.h</code>.)
4181
4182
4183<p>
4184Lua also defines the constants
4185<a name="pdf-LUA_MININTEGER"><code>LUA_MININTEGER</code></a> and <a name="pdf-LUA_MAXINTEGER"><code>LUA_MAXINTEGER</code></a>,
4186with the minimum and the maximum values that fit in this type.
4187
4188
4189
4190
4191
4192<hr><h3><a name="lua_isboolean"><code>lua_isboolean</code></a></h3><p>
4193<span class="apii">[-0, +0, &ndash;]</span>
4194<pre>int lua_isboolean (lua_State *L, int index);</pre>
4195
4196<p>
4197Returns 1 if the value at the given index is a boolean,
4198and 0&nbsp;otherwise.
4199
4200
4201
4202
4203
4204<hr><h3><a name="lua_iscfunction"><code>lua_iscfunction</code></a></h3><p>
4205<span class="apii">[-0, +0, &ndash;]</span>
4206<pre>int lua_iscfunction (lua_State *L, int index);</pre>
4207
4208<p>
4209Returns 1 if the value at the given index is a C&nbsp;function,
4210and 0&nbsp;otherwise.
4211
4212
4213
4214
4215
4216<hr><h3><a name="lua_isfunction"><code>lua_isfunction</code></a></h3><p>
4217<span class="apii">[-0, +0, &ndash;]</span>
4218<pre>int lua_isfunction (lua_State *L, int index);</pre>
4219
4220<p>
4221Returns 1 if the value at the given index is a function
4222(either C or Lua), and 0&nbsp;otherwise.
4223
4224
4225
4226
4227
4228<hr><h3><a name="lua_isinteger"><code>lua_isinteger</code></a></h3><p>
4229<span class="apii">[-0, +0, &ndash;]</span>
4230<pre>int lua_isinteger (lua_State *L, int index);</pre>
4231
4232<p>
4233Returns 1 if the value at the given index is an integer
4234(that is, the value is a number and is represented as an integer),
4235and 0&nbsp;otherwise.
4236
4237
4238
4239
4240
4241<hr><h3><a name="lua_islightuserdata"><code>lua_islightuserdata</code></a></h3><p>
4242<span class="apii">[-0, +0, &ndash;]</span>
4243<pre>int lua_islightuserdata (lua_State *L, int index);</pre>
4244
4245<p>
4246Returns 1 if the value at the given index is a light userdata,
4247and 0&nbsp;otherwise.
4248
4249
4250
4251
4252
4253<hr><h3><a name="lua_isnil"><code>lua_isnil</code></a></h3><p>
4254<span class="apii">[-0, +0, &ndash;]</span>
4255<pre>int lua_isnil (lua_State *L, int index);</pre>
4256
4257<p>
4258Returns 1 if the value at the given index is <b>nil</b>,
4259and 0&nbsp;otherwise.
4260
4261
4262
4263
4264
4265<hr><h3><a name="lua_isnone"><code>lua_isnone</code></a></h3><p>
4266<span class="apii">[-0, +0, &ndash;]</span>
4267<pre>int lua_isnone (lua_State *L, int index);</pre>
4268
4269<p>
4270Returns 1 if the given index is not valid,
4271and 0&nbsp;otherwise.
4272
4273
4274
4275
4276
4277<hr><h3><a name="lua_isnoneornil"><code>lua_isnoneornil</code></a></h3><p>
4278<span class="apii">[-0, +0, &ndash;]</span>
4279<pre>int lua_isnoneornil (lua_State *L, int index);</pre>
4280
4281<p>
4282Returns 1 if the given index is not valid
4283or if the value at this index is <b>nil</b>,
4284and 0&nbsp;otherwise.
4285
4286
4287
4288
4289
4290<hr><h3><a name="lua_isnumber"><code>lua_isnumber</code></a></h3><p>
4291<span class="apii">[-0, +0, &ndash;]</span>
4292<pre>int lua_isnumber (lua_State *L, int index);</pre>
4293
4294<p>
4295Returns 1 if the value at the given index is a number
4296or a string convertible to a number,
4297and 0&nbsp;otherwise.
4298
4299
4300
4301
4302
4303<hr><h3><a name="lua_isstring"><code>lua_isstring</code></a></h3><p>
4304<span class="apii">[-0, +0, &ndash;]</span>
4305<pre>int lua_isstring (lua_State *L, int index);</pre>
4306
4307<p>
4308Returns 1 if the value at the given index is a string
4309or a number (which is always convertible to a string),
4310and 0&nbsp;otherwise.
4311
4312
4313
4314
4315
4316<hr><h3><a name="lua_istable"><code>lua_istable</code></a></h3><p>
4317<span class="apii">[-0, +0, &ndash;]</span>
4318<pre>int lua_istable (lua_State *L, int index);</pre>
4319
4320<p>
4321Returns 1 if the value at the given index is a table,
4322and 0&nbsp;otherwise.
4323
4324
4325
4326
4327
4328<hr><h3><a name="lua_isthread"><code>lua_isthread</code></a></h3><p>
4329<span class="apii">[-0, +0, &ndash;]</span>
4330<pre>int lua_isthread (lua_State *L, int index);</pre>
4331
4332<p>
4333Returns 1 if the value at the given index is a thread,
4334and 0&nbsp;otherwise.
4335
4336
4337
4338
4339
4340<hr><h3><a name="lua_isuserdata"><code>lua_isuserdata</code></a></h3><p>
4341<span class="apii">[-0, +0, &ndash;]</span>
4342<pre>int lua_isuserdata (lua_State *L, int index);</pre>
4343
4344<p>
4345Returns 1 if the value at the given index is a userdata
4346(either full or light), and 0&nbsp;otherwise.
4347
4348
4349
4350
4351
4352<hr><h3><a name="lua_isyieldable"><code>lua_isyieldable</code></a></h3><p>
4353<span class="apii">[-0, +0, &ndash;]</span>
4354<pre>int lua_isyieldable (lua_State *L);</pre>
4355
4356<p>
4357Returns 1 if the given coroutine can yield,
4358and 0&nbsp;otherwise.
4359
4360
4361
4362
4363
4364<hr><h3><a name="lua_KContext"><code>lua_KContext</code></a></h3>
4365<pre>typedef ... lua_KContext;</pre>
4366
4367<p>
4368The type for continuation-function contexts.
4369It must be a numeric type.
4370This type is defined as <code>intptr_t</code>
4371when <code>intptr_t</code> is available,
4372so that it can store pointers too.
4373Otherwise, it is defined as <code>ptrdiff_t</code>.
4374
4375
4376
4377
4378
4379<hr><h3><a name="lua_KFunction"><code>lua_KFunction</code></a></h3>
4380<pre>typedef int (*lua_KFunction) (lua_State *L, int status, lua_KContext ctx);</pre>
4381
4382<p>
4383Type for continuation functions (see <a href="#4.5">&sect;4.5</a>).
4384
4385
4386
4387
4388
4389<hr><h3><a name="lua_len"><code>lua_len</code></a></h3><p>
4390<span class="apii">[-0, +1, <em>e</em>]</span>
4391<pre>void lua_len (lua_State *L, int index);</pre>
4392
4393<p>
4394Returns the length of the value at the given index.
4395It is equivalent to the '<code>#</code>' operator in Lua (see <a href="#3.4.7">&sect;3.4.7</a>) and
4396may trigger a metamethod for the "length" event (see <a href="#2.4">&sect;2.4</a>).
4397The result is pushed on the stack.
4398
4399
4400
4401
4402
4403<hr><h3><a name="lua_load"><code>lua_load</code></a></h3><p>
4404<span class="apii">[-0, +1, &ndash;]</span>
4405<pre>int lua_load (lua_State *L,
4406              lua_Reader reader,
4407              void *data,
4408              const char *chunkname,
4409              const char *mode);</pre>
4410
4411<p>
4412Loads a Lua chunk without running it.
4413If there are no errors,
4414<code>lua_load</code> pushes the compiled chunk as a Lua
4415function on top of the stack.
4416Otherwise, it pushes an error message.
4417
4418
4419<p>
4420The <code>lua_load</code> function uses a user-supplied <code>reader</code> function
4421to read the chunk (see <a href="#lua_Reader"><code>lua_Reader</code></a>).
4422The <code>data</code> argument is an opaque value passed to the reader function.
4423
4424
4425<p>
4426The <code>chunkname</code> argument gives a name to the chunk,
4427which is used for error messages and in debug information (see <a href="#4.7">&sect;4.7</a>).
4428
4429
4430<p>
4431<code>lua_load</code> automatically detects whether the chunk is text or binary
4432and loads it accordingly (see program <code>luac</code>).
4433The string <code>mode</code> works as in function <a href="#pdf-load"><code>load</code></a>,
4434with the addition that
4435a <code>NULL</code> value is equivalent to the string "<code>bt</code>".
4436
4437
4438<p>
4439<code>lua_load</code> uses the stack internally,
4440so the reader function must always leave the stack
4441unmodified when returning.
4442
4443
4444<p>
4445<code>lua_load</code> can return
4446<a href="#pdf-LUA_OK"><code>LUA_OK</code></a>, <a href="#pdf-LUA_ERRSYNTAX"><code>LUA_ERRSYNTAX</code></a>, or <a href="#pdf-LUA_ERRMEM"><code>LUA_ERRMEM</code></a>.
4447The function may also return other values corresponding to
4448errors raised by the read function (see <a href="#4.4.1">&sect;4.4.1</a>).
4449
4450
4451<p>
4452If the resulting function has upvalues,
4453its first upvalue is set to the value of the global environment
4454stored at index <code>LUA_RIDX_GLOBALS</code> in the registry (see <a href="#4.3">&sect;4.3</a>).
4455When loading main chunks,
4456this upvalue will be the <code>_ENV</code> variable (see <a href="#2.2">&sect;2.2</a>).
4457Other upvalues are initialized with <b>nil</b>.
4458
4459
4460
4461
4462
4463<hr><h3><a name="lua_newstate"><code>lua_newstate</code></a></h3><p>
4464<span class="apii">[-0, +0, &ndash;]</span>
4465<pre>lua_State *lua_newstate (lua_Alloc f, void *ud);</pre>
4466
4467<p>
4468Creates a new independent state and returns its main thread.
4469Returns <code>NULL</code> if it cannot create the state
4470(due to lack of memory).
4471The argument <code>f</code> is the allocator function;
4472Lua will do all memory allocation for this state
4473through this function (see <a href="#lua_Alloc"><code>lua_Alloc</code></a>).
4474The second argument, <code>ud</code>, is an opaque pointer that Lua
4475passes to the allocator in every call.
4476
4477
4478
4479
4480
4481<hr><h3><a name="lua_newtable"><code>lua_newtable</code></a></h3><p>
4482<span class="apii">[-0, +1, <em>m</em>]</span>
4483<pre>void lua_newtable (lua_State *L);</pre>
4484
4485<p>
4486Creates a new empty table and pushes it onto the stack.
4487It is equivalent to <code>lua_createtable(L, 0, 0)</code>.
4488
4489
4490
4491
4492
4493<hr><h3><a name="lua_newthread"><code>lua_newthread</code></a></h3><p>
4494<span class="apii">[-0, +1, <em>m</em>]</span>
4495<pre>lua_State *lua_newthread (lua_State *L);</pre>
4496
4497<p>
4498Creates a new thread, pushes it on the stack,
4499and returns a pointer to a <a href="#lua_State"><code>lua_State</code></a> that represents this new thread.
4500The new thread returned by this function shares with the original thread
4501its global environment,
4502but has an independent execution stack.
4503
4504
4505<p>
4506Threads are subject to garbage collection,
4507like any Lua object.
4508
4509
4510
4511
4512
4513<hr><h3><a name="lua_newuserdatauv"><code>lua_newuserdatauv</code></a></h3><p>
4514<span class="apii">[-0, +1, <em>m</em>]</span>
4515<pre>void *lua_newuserdatauv (lua_State *L, size_t size, int nuvalue);</pre>
4516
4517<p>
4518This function creates and pushes on the stack a new full userdata,
4519with <code>nuvalue</code> associated Lua values, called <code>user values</code>,
4520plus an associated block of raw memory with <code>size</code> bytes.
4521(The user values can be set and read with the functions
4522<a href="#lua_setiuservalue"><code>lua_setiuservalue</code></a> and <a href="#lua_getiuservalue"><code>lua_getiuservalue</code></a>.)
4523
4524
4525<p>
4526The function returns the address of the block of memory.
4527Lua ensures that this address is valid as long as
4528the corresponding userdata is alive (see <a href="#2.5">&sect;2.5</a>).
4529Moreover, if the userdata is marked for finalization (see <a href="#2.5.3">&sect;2.5.3</a>),
4530its address is valid at least until the call to its finalizer.
4531
4532
4533
4534
4535
4536<hr><h3><a name="lua_next"><code>lua_next</code></a></h3><p>
4537<span class="apii">[-1, +(2|0), <em>v</em>]</span>
4538<pre>int lua_next (lua_State *L, int index);</pre>
4539
4540<p>
4541Pops a key from the stack,
4542and pushes a key&ndash;value pair from the table at the given index,
4543the "next" pair after the given key.
4544If there are no more elements in the table,
4545then <a href="#lua_next"><code>lua_next</code></a> returns 0 and pushes nothing.
4546
4547
4548<p>
4549A typical table traversal looks like this:
4550
4551<pre>
4552     /* table is in the stack at index 't' */
4553     lua_pushnil(L);  /* first key */
4554     while (lua_next(L, t) != 0) {
4555       /* uses 'key' (at index -2) and 'value' (at index -1) */
4556       printf("%s - %s\n",
4557              lua_typename(L, lua_type(L, -2)),
4558              lua_typename(L, lua_type(L, -1)));
4559       /* removes 'value'; keeps 'key' for next iteration */
4560       lua_pop(L, 1);
4561     }
4562</pre>
4563
4564<p>
4565While traversing a table,
4566avoid calling <a href="#lua_tolstring"><code>lua_tolstring</code></a> directly on a key,
4567unless you know that the key is actually a string.
4568Recall that <a href="#lua_tolstring"><code>lua_tolstring</code></a> may change
4569the value at the given index;
4570this confuses the next call to <a href="#lua_next"><code>lua_next</code></a>.
4571
4572
4573<p>
4574This function may raise an error if the given key
4575is neither <b>nil</b> nor present in the table.
4576See function <a href="#pdf-next"><code>next</code></a> for the caveats of modifying
4577the table during its traversal.
4578
4579
4580
4581
4582
4583<hr><h3><a name="lua_Number"><code>lua_Number</code></a></h3>
4584<pre>typedef ... lua_Number;</pre>
4585
4586<p>
4587The type of floats in Lua.
4588
4589
4590<p>
4591By default this type is double,
4592but that can be changed to a single float or a long double.
4593(See <code>LUA_FLOAT_TYPE</code> in <code>luaconf.h</code>.)
4594
4595
4596
4597
4598
4599<hr><h3><a name="lua_numbertointeger"><code>lua_numbertointeger</code></a></h3>
4600<pre>int lua_numbertointeger (lua_Number n, lua_Integer *p);</pre>
4601
4602<p>
4603Tries to convert a Lua float to a Lua integer;
4604the float <code>n</code> must have an integral value.
4605If that value is within the range of Lua integers,
4606it is converted to an integer and assigned to <code>*p</code>.
4607The macro results in a boolean indicating whether the
4608conversion was successful.
4609(Note that this range test can be tricky to do
4610correctly without this macro, due to rounding.)
4611
4612
4613<p>
4614This macro may evaluate its arguments more than once.
4615
4616
4617
4618
4619
4620<hr><h3><a name="lua_pcall"><code>lua_pcall</code></a></h3><p>
4621<span class="apii">[-(nargs + 1), +(nresults|1), &ndash;]</span>
4622<pre>int lua_pcall (lua_State *L, int nargs, int nresults, int msgh);</pre>
4623
4624<p>
4625Calls a function (or a callable object) in protected mode.
4626
4627
4628<p>
4629Both <code>nargs</code> and <code>nresults</code> have the same meaning as
4630in <a href="#lua_call"><code>lua_call</code></a>.
4631If there are no errors during the call,
4632<a href="#lua_pcall"><code>lua_pcall</code></a> behaves exactly like <a href="#lua_call"><code>lua_call</code></a>.
4633However, if there is any error,
4634<a href="#lua_pcall"><code>lua_pcall</code></a> catches it,
4635pushes a single value on the stack (the error object),
4636and returns an error code.
4637Like <a href="#lua_call"><code>lua_call</code></a>,
4638<a href="#lua_pcall"><code>lua_pcall</code></a> always removes the function
4639and its arguments from the stack.
4640
4641
4642<p>
4643If <code>msgh</code> is 0,
4644then the error object returned on the stack
4645is exactly the original error object.
4646Otherwise, <code>msgh</code> is the stack index of a
4647<em>message handler</em>.
4648(This index cannot be a pseudo-index.)
4649In case of runtime errors,
4650this handler will be called with the error object
4651and its return value will be the object
4652returned on the stack by <a href="#lua_pcall"><code>lua_pcall</code></a>.
4653
4654
4655<p>
4656Typically, the message handler is used to add more debug
4657information to the error object, such as a stack traceback.
4658Such information cannot be gathered after the return of <a href="#lua_pcall"><code>lua_pcall</code></a>,
4659since by then the stack has unwound.
4660
4661
4662<p>
4663The <a href="#lua_pcall"><code>lua_pcall</code></a> function returns one of the following status codes:
4664<a href="#pdf-LUA_OK"><code>LUA_OK</code></a>, <a href="#pdf-LUA_ERRRUN"><code>LUA_ERRRUN</code></a>, <a href="#pdf-LUA_ERRMEM"><code>LUA_ERRMEM</code></a>, or <a href="#pdf-LUA_ERRERR"><code>LUA_ERRERR</code></a>.
4665
4666
4667
4668
4669
4670<hr><h3><a name="lua_pcallk"><code>lua_pcallk</code></a></h3><p>
4671<span class="apii">[-(nargs + 1), +(nresults|1), &ndash;]</span>
4672<pre>int lua_pcallk (lua_State *L,
4673                int nargs,
4674                int nresults,
4675                int msgh,
4676                lua_KContext ctx,
4677                lua_KFunction k);</pre>
4678
4679<p>
4680This function behaves exactly like <a href="#lua_pcall"><code>lua_pcall</code></a>,
4681except that it allows the called function to yield (see <a href="#4.5">&sect;4.5</a>).
4682
4683
4684
4685
4686
4687<hr><h3><a name="lua_pop"><code>lua_pop</code></a></h3><p>
4688<span class="apii">[-n, +0, <em>e</em>]</span>
4689<pre>void lua_pop (lua_State *L, int n);</pre>
4690
4691<p>
4692Pops <code>n</code> elements from the stack.
4693It is implemented as a macro over <a href="#lua_settop"><code>lua_settop</code></a>.
4694
4695
4696
4697
4698
4699<hr><h3><a name="lua_pushboolean"><code>lua_pushboolean</code></a></h3><p>
4700<span class="apii">[-0, +1, &ndash;]</span>
4701<pre>void lua_pushboolean (lua_State *L, int b);</pre>
4702
4703<p>
4704Pushes a boolean value with value <code>b</code> onto the stack.
4705
4706
4707
4708
4709
4710<hr><h3><a name="lua_pushcclosure"><code>lua_pushcclosure</code></a></h3><p>
4711<span class="apii">[-n, +1, <em>m</em>]</span>
4712<pre>void lua_pushcclosure (lua_State *L, lua_CFunction fn, int n);</pre>
4713
4714<p>
4715Pushes a new C&nbsp;closure onto the stack.
4716This function receives a pointer to a C&nbsp;function
4717and pushes onto the stack a Lua value of type <code>function</code> that,
4718when called, invokes the corresponding C&nbsp;function.
4719The parameter <code>n</code> tells how many upvalues this function will have
4720(see <a href="#4.2">&sect;4.2</a>).
4721
4722
4723<p>
4724Any function to be callable by Lua must
4725follow the correct protocol to receive its parameters
4726and return its results (see <a href="#lua_CFunction"><code>lua_CFunction</code></a>).
4727
4728
4729<p>
4730When a C&nbsp;function is created,
4731it is possible to associate some values with it,
4732the so called upvalues;
4733these upvalues are then accessible to the function whenever it is called.
4734This association is called a C&nbsp;closure (see <a href="#4.2">&sect;4.2</a>).
4735To create a C&nbsp;closure,
4736first the initial values for its upvalues must be pushed onto the stack.
4737(When there are multiple upvalues, the first value is pushed first.)
4738Then <a href="#lua_pushcclosure"><code>lua_pushcclosure</code></a>
4739is called to create and push the C&nbsp;function onto the stack,
4740with the argument <code>n</code> telling how many values will be
4741associated with the function.
4742<a href="#lua_pushcclosure"><code>lua_pushcclosure</code></a> also pops these values from the stack.
4743
4744
4745<p>
4746The maximum value for <code>n</code> is 255.
4747
4748
4749<p>
4750When <code>n</code> is zero,
4751this function creates a <em>light C&nbsp;function</em>,
4752which is just a pointer to the C&nbsp;function.
4753In that case, it never raises a memory error.
4754
4755
4756
4757
4758
4759<hr><h3><a name="lua_pushcfunction"><code>lua_pushcfunction</code></a></h3><p>
4760<span class="apii">[-0, +1, &ndash;]</span>
4761<pre>void lua_pushcfunction (lua_State *L, lua_CFunction f);</pre>
4762
4763<p>
4764Pushes a C&nbsp;function onto the stack.
4765This function is equivalent to <a href="#lua_pushcclosure"><code>lua_pushcclosure</code></a> with no upvalues.
4766
4767
4768
4769
4770
4771<hr><h3><a name="lua_pushfstring"><code>lua_pushfstring</code></a></h3><p>
4772<span class="apii">[-0, +1, <em>v</em>]</span>
4773<pre>const char *lua_pushfstring (lua_State *L, const char *fmt, ...);</pre>
4774
4775<p>
4776Pushes onto the stack a formatted string
4777and returns a pointer to this string (see <a href="#4.1.3">&sect;4.1.3</a>).
4778It is similar to the ISO&nbsp;C function <code>sprintf</code>,
4779but has two important differences.
4780First,
4781you do not have to allocate space for the result;
4782the result is a Lua string and Lua takes care of memory allocation
4783(and deallocation, through garbage collection).
4784Second,
4785the conversion specifiers are quite restricted.
4786There are no flags, widths, or precisions.
4787The conversion specifiers can only be
4788'<code>%%</code>' (inserts the character '<code>%</code>'),
4789'<code>%s</code>' (inserts a zero-terminated string, with no size restrictions),
4790'<code>%f</code>' (inserts a <a href="#lua_Number"><code>lua_Number</code></a>),
4791'<code>%I</code>' (inserts a <a href="#lua_Integer"><code>lua_Integer</code></a>),
4792'<code>%p</code>' (inserts a pointer),
4793'<code>%d</code>' (inserts an <code>int</code>),
4794'<code>%c</code>' (inserts an <code>int</code> as a one-byte character), and
4795'<code>%U</code>' (inserts a <code>long int</code> as a UTF-8 byte sequence).
4796
4797
4798<p>
4799This function may raise errors due to memory overflow
4800or an invalid conversion specifier.
4801
4802
4803
4804
4805
4806<hr><h3><a name="lua_pushglobaltable"><code>lua_pushglobaltable</code></a></h3><p>
4807<span class="apii">[-0, +1, &ndash;]</span>
4808<pre>void lua_pushglobaltable (lua_State *L);</pre>
4809
4810<p>
4811Pushes the global environment onto the stack.
4812
4813
4814
4815
4816
4817<hr><h3><a name="lua_pushinteger"><code>lua_pushinteger</code></a></h3><p>
4818<span class="apii">[-0, +1, &ndash;]</span>
4819<pre>void lua_pushinteger (lua_State *L, lua_Integer n);</pre>
4820
4821<p>
4822Pushes an integer with value <code>n</code> onto the stack.
4823
4824
4825
4826
4827
4828<hr><h3><a name="lua_pushlightuserdata"><code>lua_pushlightuserdata</code></a></h3><p>
4829<span class="apii">[-0, +1, &ndash;]</span>
4830<pre>void lua_pushlightuserdata (lua_State *L, void *p);</pre>
4831
4832<p>
4833Pushes a light userdata onto the stack.
4834
4835
4836<p>
4837Userdata represent C&nbsp;values in Lua.
4838A <em>light userdata</em> represents a pointer, a <code>void*</code>.
4839It is a value (like a number):
4840you do not create it, it has no individual metatable,
4841and it is not collected (as it was never created).
4842A light userdata is equal to "any"
4843light userdata with the same C&nbsp;address.
4844
4845
4846
4847
4848
4849<hr><h3><a name="lua_pushliteral"><code>lua_pushliteral</code></a></h3><p>
4850<span class="apii">[-0, +1, <em>m</em>]</span>
4851<pre>const char *lua_pushliteral (lua_State *L, const char *s);</pre>
4852
4853<p>
4854This macro is equivalent to <a href="#lua_pushstring"><code>lua_pushstring</code></a>,
4855but should be used only when <code>s</code> is a literal string.
4856(Lua may optimize this case.)
4857
4858
4859
4860
4861
4862<hr><h3><a name="lua_pushlstring"><code>lua_pushlstring</code></a></h3><p>
4863<span class="apii">[-0, +1, <em>m</em>]</span>
4864<pre>const char *lua_pushlstring (lua_State *L, const char *s, size_t len);</pre>
4865
4866<p>
4867Pushes the string pointed to by <code>s</code> with size <code>len</code>
4868onto the stack.
4869Lua will make or reuse an internal copy of the given string,
4870so the memory at <code>s</code> can be freed or reused immediately after
4871the function returns.
4872The string can contain any binary data,
4873including embedded zeros.
4874
4875
4876<p>
4877Returns a pointer to the internal copy of the string (see <a href="#4.1.3">&sect;4.1.3</a>).
4878
4879
4880
4881
4882
4883<hr><h3><a name="lua_pushnil"><code>lua_pushnil</code></a></h3><p>
4884<span class="apii">[-0, +1, &ndash;]</span>
4885<pre>void lua_pushnil (lua_State *L);</pre>
4886
4887<p>
4888Pushes a nil value onto the stack.
4889
4890
4891
4892
4893
4894<hr><h3><a name="lua_pushnumber"><code>lua_pushnumber</code></a></h3><p>
4895<span class="apii">[-0, +1, &ndash;]</span>
4896<pre>void lua_pushnumber (lua_State *L, lua_Number n);</pre>
4897
4898<p>
4899Pushes a float with value <code>n</code> onto the stack.
4900
4901
4902
4903
4904
4905<hr><h3><a name="lua_pushstring"><code>lua_pushstring</code></a></h3><p>
4906<span class="apii">[-0, +1, <em>m</em>]</span>
4907<pre>const char *lua_pushstring (lua_State *L, const char *s);</pre>
4908
4909<p>
4910Pushes the zero-terminated string pointed to by <code>s</code>
4911onto the stack.
4912Lua will make or reuse an internal copy of the given string,
4913so the memory at <code>s</code> can be freed or reused immediately after
4914the function returns.
4915
4916
4917<p>
4918Returns a pointer to the internal copy of the string (see <a href="#4.1.3">&sect;4.1.3</a>).
4919
4920
4921<p>
4922If <code>s</code> is <code>NULL</code>, pushes <b>nil</b> and returns <code>NULL</code>.
4923
4924
4925
4926
4927
4928<hr><h3><a name="lua_pushthread"><code>lua_pushthread</code></a></h3><p>
4929<span class="apii">[-0, +1, &ndash;]</span>
4930<pre>int lua_pushthread (lua_State *L);</pre>
4931
4932<p>
4933Pushes the thread represented by <code>L</code> onto the stack.
4934Returns 1 if this thread is the main thread of its state.
4935
4936
4937
4938
4939
4940<hr><h3><a name="lua_pushvalue"><code>lua_pushvalue</code></a></h3><p>
4941<span class="apii">[-0, +1, &ndash;]</span>
4942<pre>void lua_pushvalue (lua_State *L, int index);</pre>
4943
4944<p>
4945Pushes a copy of the element at the given index
4946onto the stack.
4947
4948
4949
4950
4951
4952<hr><h3><a name="lua_pushvfstring"><code>lua_pushvfstring</code></a></h3><p>
4953<span class="apii">[-0, +1, <em>v</em>]</span>
4954<pre>const char *lua_pushvfstring (lua_State *L,
4955                              const char *fmt,
4956                              va_list argp);</pre>
4957
4958<p>
4959Equivalent to <a href="#lua_pushfstring"><code>lua_pushfstring</code></a>, except that it receives a <code>va_list</code>
4960instead of a variable number of arguments.
4961
4962
4963
4964
4965
4966<hr><h3><a name="lua_rawequal"><code>lua_rawequal</code></a></h3><p>
4967<span class="apii">[-0, +0, &ndash;]</span>
4968<pre>int lua_rawequal (lua_State *L, int index1, int index2);</pre>
4969
4970<p>
4971Returns 1 if the two values in indices <code>index1</code> and
4972<code>index2</code> are primitively equal
4973(that is, equal without calling the <code>__eq</code> metamethod).
4974Otherwise returns&nbsp;0.
4975Also returns&nbsp;0 if any of the indices are not valid.
4976
4977
4978
4979
4980
4981<hr><h3><a name="lua_rawget"><code>lua_rawget</code></a></h3><p>
4982<span class="apii">[-1, +1, &ndash;]</span>
4983<pre>int lua_rawget (lua_State *L, int index);</pre>
4984
4985<p>
4986Similar to <a href="#lua_gettable"><code>lua_gettable</code></a>, but does a raw access
4987(i.e., without metamethods).
4988
4989
4990
4991
4992
4993<hr><h3><a name="lua_rawgeti"><code>lua_rawgeti</code></a></h3><p>
4994<span class="apii">[-0, +1, &ndash;]</span>
4995<pre>int lua_rawgeti (lua_State *L, int index, lua_Integer n);</pre>
4996
4997<p>
4998Pushes onto the stack the value <code>t[n]</code>,
4999where <code>t</code> is the table at the given index.
5000The access is raw,
5001that is, it does not use the <code>__index</code> metavalue.
5002
5003
5004<p>
5005Returns the type of the pushed value.
5006
5007
5008
5009
5010
5011<hr><h3><a name="lua_rawgetp"><code>lua_rawgetp</code></a></h3><p>
5012<span class="apii">[-0, +1, &ndash;]</span>
5013<pre>int lua_rawgetp (lua_State *L, int index, const void *p);</pre>
5014
5015<p>
5016Pushes onto the stack the value <code>t[k]</code>,
5017where <code>t</code> is the table at the given index and
5018<code>k</code> is the pointer <code>p</code> represented as a light userdata.
5019The access is raw;
5020that is, it does not use the <code>__index</code> metavalue.
5021
5022
5023<p>
5024Returns the type of the pushed value.
5025
5026
5027
5028
5029
5030<hr><h3><a name="lua_rawlen"><code>lua_rawlen</code></a></h3><p>
5031<span class="apii">[-0, +0, &ndash;]</span>
5032<pre>lua_Unsigned lua_rawlen (lua_State *L, int index);</pre>
5033
5034<p>
5035Returns the raw "length" of the value at the given index:
5036for strings, this is the string length;
5037for tables, this is the result of the length operator ('<code>#</code>')
5038with no metamethods;
5039for userdata, this is the size of the block of memory allocated
5040for the userdata.
5041For other values, this call returns&nbsp;0.
5042
5043
5044
5045
5046
5047<hr><h3><a name="lua_rawset"><code>lua_rawset</code></a></h3><p>
5048<span class="apii">[-2, +0, <em>m</em>]</span>
5049<pre>void lua_rawset (lua_State *L, int index);</pre>
5050
5051<p>
5052Similar to <a href="#lua_settable"><code>lua_settable</code></a>, but does a raw assignment
5053(i.e., without metamethods).
5054
5055
5056
5057
5058
5059<hr><h3><a name="lua_rawseti"><code>lua_rawseti</code></a></h3><p>
5060<span class="apii">[-1, +0, <em>m</em>]</span>
5061<pre>void lua_rawseti (lua_State *L, int index, lua_Integer i);</pre>
5062
5063<p>
5064Does the equivalent of <code>t[i] = v</code>,
5065where <code>t</code> is the table at the given index
5066and <code>v</code> is the value on the top of the stack.
5067
5068
5069<p>
5070This function pops the value from the stack.
5071The assignment is raw,
5072that is, it does not use the <code>__newindex</code> metavalue.
5073
5074
5075
5076
5077
5078<hr><h3><a name="lua_rawsetp"><code>lua_rawsetp</code></a></h3><p>
5079<span class="apii">[-1, +0, <em>m</em>]</span>
5080<pre>void lua_rawsetp (lua_State *L, int index, const void *p);</pre>
5081
5082<p>
5083Does the equivalent of <code>t[p] = v</code>,
5084where <code>t</code> is the table at the given index,
5085<code>p</code> is encoded as a light userdata,
5086and <code>v</code> is the value on the top of the stack.
5087
5088
5089<p>
5090This function pops the value from the stack.
5091The assignment is raw,
5092that is, it does not use the <code>__newindex</code> metavalue.
5093
5094
5095
5096
5097
5098<hr><h3><a name="lua_Reader"><code>lua_Reader</code></a></h3>
5099<pre>typedef const char * (*lua_Reader) (lua_State *L,
5100                                    void *data,
5101                                    size_t *size);</pre>
5102
5103<p>
5104The reader function used by <a href="#lua_load"><code>lua_load</code></a>.
5105Every time <a href="#lua_load"><code>lua_load</code></a> needs another piece of the chunk,
5106it calls the reader,
5107passing along its <code>data</code> parameter.
5108The reader must return a pointer to a block of memory
5109with a new piece of the chunk
5110and set <code>size</code> to the block size.
5111The block must exist until the reader function is called again.
5112To signal the end of the chunk,
5113the reader must return <code>NULL</code> or set <code>size</code> to zero.
5114The reader function may return pieces of any size greater than zero.
5115
5116
5117
5118
5119
5120<hr><h3><a name="lua_register"><code>lua_register</code></a></h3><p>
5121<span class="apii">[-0, +0, <em>e</em>]</span>
5122<pre>void lua_register (lua_State *L, const char *name, lua_CFunction f);</pre>
5123
5124<p>
5125Sets the C&nbsp;function <code>f</code> as the new value of global <code>name</code>.
5126It is defined as a macro:
5127
5128<pre>
5129     #define lua_register(L,n,f) \
5130            (lua_pushcfunction(L, f), lua_setglobal(L, n))
5131</pre>
5132
5133
5134
5135
5136<hr><h3><a name="lua_remove"><code>lua_remove</code></a></h3><p>
5137<span class="apii">[-1, +0, &ndash;]</span>
5138<pre>void lua_remove (lua_State *L, int index);</pre>
5139
5140<p>
5141Removes the element at the given valid index,
5142shifting down the elements above this index to fill the gap.
5143This function cannot be called with a pseudo-index,
5144because a pseudo-index is not an actual stack position.
5145
5146
5147
5148
5149
5150<hr><h3><a name="lua_replace"><code>lua_replace</code></a></h3><p>
5151<span class="apii">[-1, +0, &ndash;]</span>
5152<pre>void lua_replace (lua_State *L, int index);</pre>
5153
5154<p>
5155Moves the top element into the given valid index
5156without shifting any element
5157(therefore replacing the value at that given index),
5158and then pops the top element.
5159
5160
5161
5162
5163
5164<hr><h3><a name="lua_resetthread"><code>lua_resetthread</code></a></h3><p>
5165<span class="apii">[-0, +?, &ndash;]</span>
5166<pre>int lua_resetthread (lua_State *L);</pre>
5167
5168<p>
5169Resets a thread, cleaning its call stack and closing all pending
5170to-be-closed variables.
5171Returns a status code:
5172<a href="#pdf-LUA_OK"><code>LUA_OK</code></a> for no errors in the thread
5173(either the original error that stopped the thread or
5174errors in closing methods),
5175or an error status otherwise.
5176In case of error,
5177leaves the error object on the top of the stack.
5178
5179
5180
5181
5182
5183<hr><h3><a name="lua_resume"><code>lua_resume</code></a></h3><p>
5184<span class="apii">[-?, +?, &ndash;]</span>
5185<pre>int lua_resume (lua_State *L, lua_State *from, int nargs,
5186                          int *nresults);</pre>
5187
5188<p>
5189Starts and resumes a coroutine in the given thread <code>L</code>.
5190
5191
5192<p>
5193To start a coroutine,
5194you push the main function plus any arguments
5195onto the empty stack of the thread.
5196then you call <a href="#lua_resume"><code>lua_resume</code></a>,
5197with <code>nargs</code> being the number of arguments.
5198This call returns when the coroutine suspends or finishes its execution.
5199When it returns,
5200<code>*nresults</code> is updated and
5201the top of the stack contains
5202the <code>*nresults</code> values passed to <a href="#lua_yield"><code>lua_yield</code></a>
5203or returned by the body function.
5204<a href="#lua_resume"><code>lua_resume</code></a> returns
5205<a href="#pdf-LUA_YIELD"><code>LUA_YIELD</code></a> if the coroutine yields,
5206<a href="#pdf-LUA_OK"><code>LUA_OK</code></a> if the coroutine finishes its execution
5207without errors,
5208or an error code in case of errors (see <a href="#4.4.1">&sect;4.4.1</a>).
5209In case of errors,
5210the error object is on the top of the stack.
5211
5212
5213<p>
5214To resume a coroutine,
5215you remove the <code>*nresults</code> yielded values from its stack,
5216push the values to be passed as results from <code>yield</code>,
5217and then call <a href="#lua_resume"><code>lua_resume</code></a>.
5218
5219
5220<p>
5221The parameter <code>from</code> represents the coroutine that is resuming <code>L</code>.
5222If there is no such coroutine,
5223this parameter can be <code>NULL</code>.
5224
5225
5226
5227
5228
5229<hr><h3><a name="lua_rotate"><code>lua_rotate</code></a></h3><p>
5230<span class="apii">[-0, +0, &ndash;]</span>
5231<pre>void lua_rotate (lua_State *L, int idx, int n);</pre>
5232
5233<p>
5234Rotates the stack elements between the valid index <code>idx</code>
5235and the top of the stack.
5236The elements are rotated <code>n</code> positions in the direction of the top,
5237for a positive <code>n</code>,
5238or <code>-n</code> positions in the direction of the bottom,
5239for a negative <code>n</code>.
5240The absolute value of <code>n</code> must not be greater than the size
5241of the slice being rotated.
5242This function cannot be called with a pseudo-index,
5243because a pseudo-index is not an actual stack position.
5244
5245
5246
5247
5248
5249<hr><h3><a name="lua_setallocf"><code>lua_setallocf</code></a></h3><p>
5250<span class="apii">[-0, +0, &ndash;]</span>
5251<pre>void lua_setallocf (lua_State *L, lua_Alloc f, void *ud);</pre>
5252
5253<p>
5254Changes the allocator function of a given state to <code>f</code>
5255with user data <code>ud</code>.
5256
5257
5258
5259
5260
5261<hr><h3><a name="lua_setfield"><code>lua_setfield</code></a></h3><p>
5262<span class="apii">[-1, +0, <em>e</em>]</span>
5263<pre>void lua_setfield (lua_State *L, int index, const char *k);</pre>
5264
5265<p>
5266Does the equivalent to <code>t[k] = v</code>,
5267where <code>t</code> is the value at the given index
5268and <code>v</code> is the value on the top of the stack.
5269
5270
5271<p>
5272This function pops the value from the stack.
5273As in Lua, this function may trigger a metamethod
5274for the "newindex" event (see <a href="#2.4">&sect;2.4</a>).
5275
5276
5277
5278
5279
5280<hr><h3><a name="lua_setglobal"><code>lua_setglobal</code></a></h3><p>
5281<span class="apii">[-1, +0, <em>e</em>]</span>
5282<pre>void lua_setglobal (lua_State *L, const char *name);</pre>
5283
5284<p>
5285Pops a value from the stack and
5286sets it as the new value of global <code>name</code>.
5287
5288
5289
5290
5291
5292<hr><h3><a name="lua_seti"><code>lua_seti</code></a></h3><p>
5293<span class="apii">[-1, +0, <em>e</em>]</span>
5294<pre>void lua_seti (lua_State *L, int index, lua_Integer n);</pre>
5295
5296<p>
5297Does the equivalent to <code>t[n] = v</code>,
5298where <code>t</code> is the value at the given index
5299and <code>v</code> is the value on the top of the stack.
5300
5301
5302<p>
5303This function pops the value from the stack.
5304As in Lua, this function may trigger a metamethod
5305for the "newindex" event (see <a href="#2.4">&sect;2.4</a>).
5306
5307
5308
5309
5310
5311<hr><h3><a name="lua_setiuservalue"><code>lua_setiuservalue</code></a></h3><p>
5312<span class="apii">[-1, +0, &ndash;]</span>
5313<pre>int lua_setiuservalue (lua_State *L, int index, int n);</pre>
5314
5315<p>
5316Pops a value from the stack and sets it as
5317the new <code>n</code>-th user value associated to the
5318full userdata at the given index.
5319Returns 0 if the userdata does not have that value.
5320
5321
5322
5323
5324
5325<hr><h3><a name="lua_setmetatable"><code>lua_setmetatable</code></a></h3><p>
5326<span class="apii">[-1, +0, &ndash;]</span>
5327<pre>int lua_setmetatable (lua_State *L, int index);</pre>
5328
5329<p>
5330Pops a table or <b>nil</b> from the stack and
5331sets that value as the new metatable for the value at the given index.
5332(<b>nil</b> means no metatable.)
5333
5334
5335<p>
5336(For historical reasons, this function returns an <code>int</code>,
5337which now is always 1.)
5338
5339
5340
5341
5342
5343<hr><h3><a name="lua_settable"><code>lua_settable</code></a></h3><p>
5344<span class="apii">[-2, +0, <em>e</em>]</span>
5345<pre>void lua_settable (lua_State *L, int index);</pre>
5346
5347<p>
5348Does the equivalent to <code>t[k] = v</code>,
5349where <code>t</code> is the value at the given index,
5350<code>v</code> is the value on the top of the stack,
5351and <code>k</code> is the value just below the top.
5352
5353
5354<p>
5355This function pops both the key and the value from the stack.
5356As in Lua, this function may trigger a metamethod
5357for the "newindex" event (see <a href="#2.4">&sect;2.4</a>).
5358
5359
5360
5361
5362
5363<hr><h3><a name="lua_settop"><code>lua_settop</code></a></h3><p>
5364<span class="apii">[-?, +?, <em>e</em>]</span>
5365<pre>void lua_settop (lua_State *L, int index);</pre>
5366
5367<p>
5368Accepts any index, or&nbsp;0,
5369and sets the stack top to this index.
5370If the new top is greater than the old one,
5371then the new elements are filled with <b>nil</b>.
5372If <code>index</code> is&nbsp;0, then all stack elements are removed.
5373
5374
5375<p>
5376This function can run arbitrary code when removing an index
5377marked as to-be-closed from the stack.
5378
5379
5380
5381
5382
5383<hr><h3><a name="lua_setwarnf"><code>lua_setwarnf</code></a></h3><p>
5384<span class="apii">[-0, +0, &ndash;]</span>
5385<pre>void lua_setwarnf (lua_State *L, lua_WarnFunction f, void *ud);</pre>
5386
5387<p>
5388Sets the warning function to be used by Lua to emit warnings
5389(see <a href="#lua_WarnFunction"><code>lua_WarnFunction</code></a>).
5390The <code>ud</code> parameter sets the value <code>ud</code> passed to
5391the warning function.
5392
5393
5394
5395
5396
5397<hr><h3><a name="lua_State"><code>lua_State</code></a></h3>
5398<pre>typedef struct lua_State lua_State;</pre>
5399
5400<p>
5401An opaque structure that points to a thread and indirectly
5402(through the thread) to the whole state of a Lua interpreter.
5403The Lua library is fully reentrant:
5404it has no global variables.
5405All information about a state is accessible through this structure.
5406
5407
5408<p>
5409A pointer to this structure must be passed as the first argument to
5410every function in the library, except to <a href="#lua_newstate"><code>lua_newstate</code></a>,
5411which creates a Lua state from scratch.
5412
5413
5414
5415
5416
5417<hr><h3><a name="lua_status"><code>lua_status</code></a></h3><p>
5418<span class="apii">[-0, +0, &ndash;]</span>
5419<pre>int lua_status (lua_State *L);</pre>
5420
5421<p>
5422Returns the status of the thread <code>L</code>.
5423
5424
5425<p>
5426The status can be <a href="#pdf-LUA_OK"><code>LUA_OK</code></a> for a normal thread,
5427an error code if the thread finished the execution
5428of a <a href="#lua_resume"><code>lua_resume</code></a> with an error,
5429or <a href="#pdf-LUA_YIELD"><code>LUA_YIELD</code></a> if the thread is suspended.
5430
5431
5432<p>
5433You can call functions only in threads with status <a href="#pdf-LUA_OK"><code>LUA_OK</code></a>.
5434You can resume threads with status <a href="#pdf-LUA_OK"><code>LUA_OK</code></a>
5435(to start a new coroutine) or <a href="#pdf-LUA_YIELD"><code>LUA_YIELD</code></a>
5436(to resume a coroutine).
5437
5438
5439
5440
5441
5442<hr><h3><a name="lua_stringtonumber"><code>lua_stringtonumber</code></a></h3><p>
5443<span class="apii">[-0, +1, &ndash;]</span>
5444<pre>size_t lua_stringtonumber (lua_State *L, const char *s);</pre>
5445
5446<p>
5447Converts the zero-terminated string <code>s</code> to a number,
5448pushes that number into the stack,
5449and returns the total size of the string,
5450that is, its length plus one.
5451The conversion can result in an integer or a float,
5452according to the lexical conventions of Lua (see <a href="#3.1">&sect;3.1</a>).
5453The string may have leading and trailing whitespaces and a sign.
5454If the string is not a valid numeral,
5455returns 0 and pushes nothing.
5456(Note that the result can be used as a boolean,
5457true if the conversion succeeds.)
5458
5459
5460
5461
5462
5463<hr><h3><a name="lua_toboolean"><code>lua_toboolean</code></a></h3><p>
5464<span class="apii">[-0, +0, &ndash;]</span>
5465<pre>int lua_toboolean (lua_State *L, int index);</pre>
5466
5467<p>
5468Converts the Lua value at the given index to a C&nbsp;boolean
5469value (0&nbsp;or&nbsp;1).
5470Like all tests in Lua,
5471<a href="#lua_toboolean"><code>lua_toboolean</code></a> returns true for any Lua value
5472different from <b>false</b> and <b>nil</b>;
5473otherwise it returns false.
5474(If you want to accept only actual boolean values,
5475use <a href="#lua_isboolean"><code>lua_isboolean</code></a> to test the value's type.)
5476
5477
5478
5479
5480
5481<hr><h3><a name="lua_tocfunction"><code>lua_tocfunction</code></a></h3><p>
5482<span class="apii">[-0, +0, &ndash;]</span>
5483<pre>lua_CFunction lua_tocfunction (lua_State *L, int index);</pre>
5484
5485<p>
5486Converts a value at the given index to a C&nbsp;function.
5487That value must be a C&nbsp;function;
5488otherwise, returns <code>NULL</code>.
5489
5490
5491
5492
5493
5494<hr><h3><a name="lua_toclose"><code>lua_toclose</code></a></h3><p>
5495<span class="apii">[-0, +0, <em>m</em>]</span>
5496<pre>void lua_toclose (lua_State *L, int index);</pre>
5497
5498<p>
5499Marks the given index in the stack as a
5500to-be-closed slot (see <a href="#3.3.8">&sect;3.3.8</a>).
5501Like a to-be-closed variable in Lua,
5502the value at that slot in the stack will be closed
5503when it goes out of scope.
5504Here, in the context of a C function,
5505to go out of scope means that the running function returns to Lua,
5506or there is an error,
5507or the slot is removed from the stack through
5508<a href="#lua_settop"><code>lua_settop</code></a> or <a href="#lua_pop"><code>lua_pop</code></a>,
5509or there is a call to <a href="#lua_closeslot"><code>lua_closeslot</code></a>.
5510A slot marked as to-be-closed should not be removed from the stack
5511by any other function in the API except <a href="#lua_settop"><code>lua_settop</code></a> or <a href="#lua_pop"><code>lua_pop</code></a>,
5512unless previously deactivated by <a href="#lua_closeslot"><code>lua_closeslot</code></a>.
5513
5514
5515<p>
5516This function should not be called for an index
5517that is equal to or below an active to-be-closed slot.
5518
5519
5520<p>
5521Note that, both in case of errors and of a regular return,
5522by the time the <code>__close</code> metamethod runs,
5523the C&nbsp;stack was already unwound,
5524so that any automatic C&nbsp;variable declared in the calling function
5525(e.g., a buffer) will be out of scope.
5526
5527
5528
5529
5530
5531<hr><h3><a name="lua_tointeger"><code>lua_tointeger</code></a></h3><p>
5532<span class="apii">[-0, +0, &ndash;]</span>
5533<pre>lua_Integer lua_tointeger (lua_State *L, int index);</pre>
5534
5535<p>
5536Equivalent to <a href="#lua_tointegerx"><code>lua_tointegerx</code></a> with <code>isnum</code> equal to <code>NULL</code>.
5537
5538
5539
5540
5541
5542<hr><h3><a name="lua_tointegerx"><code>lua_tointegerx</code></a></h3><p>
5543<span class="apii">[-0, +0, &ndash;]</span>
5544<pre>lua_Integer lua_tointegerx (lua_State *L, int index, int *isnum);</pre>
5545
5546<p>
5547Converts the Lua value at the given index
5548to the signed integral type <a href="#lua_Integer"><code>lua_Integer</code></a>.
5549The Lua value must be an integer,
5550or a number or string convertible to an integer (see <a href="#3.4.3">&sect;3.4.3</a>);
5551otherwise, <code>lua_tointegerx</code> returns&nbsp;0.
5552
5553
5554<p>
5555If <code>isnum</code> is not <code>NULL</code>,
5556its referent is assigned a boolean value that
5557indicates whether the operation succeeded.
5558
5559
5560
5561
5562
5563<hr><h3><a name="lua_tolstring"><code>lua_tolstring</code></a></h3><p>
5564<span class="apii">[-0, +0, <em>m</em>]</span>
5565<pre>const char *lua_tolstring (lua_State *L, int index, size_t *len);</pre>
5566
5567<p>
5568Converts the Lua value at the given index to a C&nbsp;string.
5569If <code>len</code> is not <code>NULL</code>,
5570it sets <code>*len</code> with the string length.
5571The Lua value must be a string or a number;
5572otherwise, the function returns <code>NULL</code>.
5573If the value is a number,
5574then <code>lua_tolstring</code> also
5575<em>changes the actual value in the stack to a string</em>.
5576(This change confuses <a href="#lua_next"><code>lua_next</code></a>
5577when <code>lua_tolstring</code> is applied to keys during a table traversal.)
5578
5579
5580<p>
5581<code>lua_tolstring</code> returns a pointer
5582to a string inside the Lua state (see <a href="#4.1.3">&sect;4.1.3</a>).
5583This string always has a zero ('<code>\0</code>')
5584after its last character (as in&nbsp;C),
5585but can contain other zeros in its body.
5586
5587
5588
5589
5590
5591<hr><h3><a name="lua_tonumber"><code>lua_tonumber</code></a></h3><p>
5592<span class="apii">[-0, +0, &ndash;]</span>
5593<pre>lua_Number lua_tonumber (lua_State *L, int index);</pre>
5594
5595<p>
5596Equivalent to <a href="#lua_tonumberx"><code>lua_tonumberx</code></a> with <code>isnum</code> equal to <code>NULL</code>.
5597
5598
5599
5600
5601
5602<hr><h3><a name="lua_tonumberx"><code>lua_tonumberx</code></a></h3><p>
5603<span class="apii">[-0, +0, &ndash;]</span>
5604<pre>lua_Number lua_tonumberx (lua_State *L, int index, int *isnum);</pre>
5605
5606<p>
5607Converts the Lua value at the given index
5608to the C&nbsp;type <a href="#lua_Number"><code>lua_Number</code></a> (see <a href="#lua_Number"><code>lua_Number</code></a>).
5609The Lua value must be a number or a string convertible to a number
5610(see <a href="#3.4.3">&sect;3.4.3</a>);
5611otherwise, <a href="#lua_tonumberx"><code>lua_tonumberx</code></a> returns&nbsp;0.
5612
5613
5614<p>
5615If <code>isnum</code> is not <code>NULL</code>,
5616its referent is assigned a boolean value that
5617indicates whether the operation succeeded.
5618
5619
5620
5621
5622
5623<hr><h3><a name="lua_topointer"><code>lua_topointer</code></a></h3><p>
5624<span class="apii">[-0, +0, &ndash;]</span>
5625<pre>const void *lua_topointer (lua_State *L, int index);</pre>
5626
5627<p>
5628Converts the value at the given index to a generic
5629C&nbsp;pointer (<code>void*</code>).
5630The value can be a userdata, a table, a thread, a string, or a function;
5631otherwise, <code>lua_topointer</code> returns <code>NULL</code>.
5632Different objects will give different pointers.
5633There is no way to convert the pointer back to its original value.
5634
5635
5636<p>
5637Typically this function is used only for hashing and debug information.
5638
5639
5640
5641
5642
5643<hr><h3><a name="lua_tostring"><code>lua_tostring</code></a></h3><p>
5644<span class="apii">[-0, +0, <em>m</em>]</span>
5645<pre>const char *lua_tostring (lua_State *L, int index);</pre>
5646
5647<p>
5648Equivalent to <a href="#lua_tolstring"><code>lua_tolstring</code></a> with <code>len</code> equal to <code>NULL</code>.
5649
5650
5651
5652
5653
5654<hr><h3><a name="lua_tothread"><code>lua_tothread</code></a></h3><p>
5655<span class="apii">[-0, +0, &ndash;]</span>
5656<pre>lua_State *lua_tothread (lua_State *L, int index);</pre>
5657
5658<p>
5659Converts the value at the given index to a Lua thread
5660(represented as <code>lua_State*</code>).
5661This value must be a thread;
5662otherwise, the function returns <code>NULL</code>.
5663
5664
5665
5666
5667
5668<hr><h3><a name="lua_touserdata"><code>lua_touserdata</code></a></h3><p>
5669<span class="apii">[-0, +0, &ndash;]</span>
5670<pre>void *lua_touserdata (lua_State *L, int index);</pre>
5671
5672<p>
5673If the value at the given index is a full userdata,
5674returns its memory-block address.
5675If the value is a light userdata,
5676returns its value (a pointer).
5677Otherwise, returns <code>NULL</code>.
5678
5679
5680
5681
5682
5683<hr><h3><a name="lua_type"><code>lua_type</code></a></h3><p>
5684<span class="apii">[-0, +0, &ndash;]</span>
5685<pre>int lua_type (lua_State *L, int index);</pre>
5686
5687<p>
5688Returns the type of the value in the given valid index,
5689or <code>LUA_TNONE</code> for a non-valid but acceptable index.
5690The types returned by <a href="#lua_type"><code>lua_type</code></a> are coded by the following constants
5691defined in <code>lua.h</code>:
5692<a name="pdf-LUA_TNIL"><code>LUA_TNIL</code></a>,
5693<a name="pdf-LUA_TNUMBER"><code>LUA_TNUMBER</code></a>,
5694<a name="pdf-LUA_TBOOLEAN"><code>LUA_TBOOLEAN</code></a>,
5695<a name="pdf-LUA_TSTRING"><code>LUA_TSTRING</code></a>,
5696<a name="pdf-LUA_TTABLE"><code>LUA_TTABLE</code></a>,
5697<a name="pdf-LUA_TFUNCTION"><code>LUA_TFUNCTION</code></a>,
5698<a name="pdf-LUA_TUSERDATA"><code>LUA_TUSERDATA</code></a>,
5699<a name="pdf-LUA_TTHREAD"><code>LUA_TTHREAD</code></a>,
5700and
5701<a name="pdf-LUA_TLIGHTUSERDATA"><code>LUA_TLIGHTUSERDATA</code></a>.
5702
5703
5704
5705
5706
5707<hr><h3><a name="lua_typename"><code>lua_typename</code></a></h3><p>
5708<span class="apii">[-0, +0, &ndash;]</span>
5709<pre>const char *lua_typename (lua_State *L, int tp);</pre>
5710
5711<p>
5712Returns the name of the type encoded by the value <code>tp</code>,
5713which must be one the values returned by <a href="#lua_type"><code>lua_type</code></a>.
5714
5715
5716
5717
5718
5719<hr><h3><a name="lua_Unsigned"><code>lua_Unsigned</code></a></h3>
5720<pre>typedef ... lua_Unsigned;</pre>
5721
5722<p>
5723The unsigned version of <a href="#lua_Integer"><code>lua_Integer</code></a>.
5724
5725
5726
5727
5728
5729<hr><h3><a name="lua_upvalueindex"><code>lua_upvalueindex</code></a></h3><p>
5730<span class="apii">[-0, +0, &ndash;]</span>
5731<pre>int lua_upvalueindex (int i);</pre>
5732
5733<p>
5734Returns the pseudo-index that represents the <code>i</code>-th upvalue of
5735the running function (see <a href="#4.2">&sect;4.2</a>).
5736<code>i</code> must be in the range <em>[1,256]</em>.
5737
5738
5739
5740
5741
5742<hr><h3><a name="lua_version"><code>lua_version</code></a></h3><p>
5743<span class="apii">[-0, +0, &ndash;]</span>
5744<pre>lua_Number lua_version (lua_State *L);</pre>
5745
5746<p>
5747Returns the version number of this core.
5748
5749
5750
5751
5752
5753<hr><h3><a name="lua_WarnFunction"><code>lua_WarnFunction</code></a></h3>
5754<pre>typedef void (*lua_WarnFunction) (void *ud, const char *msg, int tocont);</pre>
5755
5756<p>
5757The type of warning functions, called by Lua to emit warnings.
5758The first parameter is an opaque pointer
5759set by <a href="#lua_setwarnf"><code>lua_setwarnf</code></a>.
5760The second parameter is the warning message.
5761The third parameter is a boolean that
5762indicates whether the message is
5763to be continued by the message in the next call.
5764
5765
5766<p>
5767See <a href="#pdf-warn"><code>warn</code></a> for more details about warnings.
5768
5769
5770
5771
5772
5773<hr><h3><a name="lua_warning"><code>lua_warning</code></a></h3><p>
5774<span class="apii">[-0, +0, &ndash;]</span>
5775<pre>void lua_warning (lua_State *L, const char *msg, int tocont);</pre>
5776
5777<p>
5778Emits a warning with the given message.
5779A message in a call with <code>tocont</code> true should be
5780continued in another call to this function.
5781
5782
5783<p>
5784See <a href="#pdf-warn"><code>warn</code></a> for more details about warnings.
5785
5786
5787
5788
5789
5790<hr><h3><a name="lua_Writer"><code>lua_Writer</code></a></h3>
5791<pre>typedef int (*lua_Writer) (lua_State *L,
5792                           const void* p,
5793                           size_t sz,
5794                           void* ud);</pre>
5795
5796<p>
5797The type of the writer function used by <a href="#lua_dump"><code>lua_dump</code></a>.
5798Every time <a href="#lua_dump"><code>lua_dump</code></a> produces another piece of chunk,
5799it calls the writer,
5800passing along the buffer to be written (<code>p</code>),
5801its size (<code>sz</code>),
5802and the <code>ud</code> parameter supplied to <a href="#lua_dump"><code>lua_dump</code></a>.
5803
5804
5805<p>
5806The writer returns an error code:
58070&nbsp;means no errors;
5808any other value means an error and stops <a href="#lua_dump"><code>lua_dump</code></a> from
5809calling the writer again.
5810
5811
5812
5813
5814
5815<hr><h3><a name="lua_xmove"><code>lua_xmove</code></a></h3><p>
5816<span class="apii">[-?, +?, &ndash;]</span>
5817<pre>void lua_xmove (lua_State *from, lua_State *to, int n);</pre>
5818
5819<p>
5820Exchange values between different threads of the same state.
5821
5822
5823<p>
5824This function pops <code>n</code> values from the stack <code>from</code>,
5825and pushes them onto the stack <code>to</code>.
5826
5827
5828
5829
5830
5831<hr><h3><a name="lua_yield"><code>lua_yield</code></a></h3><p>
5832<span class="apii">[-?, +?, <em>v</em>]</span>
5833<pre>int lua_yield (lua_State *L, int nresults);</pre>
5834
5835<p>
5836This function is equivalent to <a href="#lua_yieldk"><code>lua_yieldk</code></a>,
5837but it has no continuation (see <a href="#4.5">&sect;4.5</a>).
5838Therefore, when the thread resumes,
5839it continues the function that called
5840the function calling <code>lua_yield</code>.
5841To avoid surprises,
5842this function should be called only in a tail call.
5843
5844
5845
5846
5847
5848<hr><h3><a name="lua_yieldk"><code>lua_yieldk</code></a></h3><p>
5849<span class="apii">[-?, +?, <em>v</em>]</span>
5850<pre>int lua_yieldk (lua_State *L,
5851                int nresults,
5852                lua_KContext ctx,
5853                lua_KFunction k);</pre>
5854
5855<p>
5856Yields a coroutine (thread).
5857
5858
5859<p>
5860When a C&nbsp;function calls <a href="#lua_yieldk"><code>lua_yieldk</code></a>,
5861the running coroutine suspends its execution,
5862and the call to <a href="#lua_resume"><code>lua_resume</code></a> that started this coroutine returns.
5863The parameter <code>nresults</code> is the number of values from the stack
5864that will be passed as results to <a href="#lua_resume"><code>lua_resume</code></a>.
5865
5866
5867<p>
5868When the coroutine is resumed again,
5869Lua calls the given continuation function <code>k</code> to continue
5870the execution of the C&nbsp;function that yielded (see <a href="#4.5">&sect;4.5</a>).
5871This continuation function receives the same stack
5872from the previous function,
5873with the <code>n</code> results removed and
5874replaced by the arguments passed to <a href="#lua_resume"><code>lua_resume</code></a>.
5875Moreover,
5876the continuation function receives the value <code>ctx</code>
5877that was passed to <a href="#lua_yieldk"><code>lua_yieldk</code></a>.
5878
5879
5880<p>
5881Usually, this function does not return;
5882when the coroutine eventually resumes,
5883it continues executing the continuation function.
5884However, there is one special case,
5885which is when this function is called
5886from inside a line or a count hook (see <a href="#4.7">&sect;4.7</a>).
5887In that case, <code>lua_yieldk</code> should be called with no continuation
5888(probably in the form of <a href="#lua_yield"><code>lua_yield</code></a>) and no results,
5889and the hook should return immediately after the call.
5890Lua will yield and,
5891when the coroutine resumes again,
5892it will continue the normal execution
5893of the (Lua) function that triggered the hook.
5894
5895
5896<p>
5897This function can raise an error if it is called from a thread
5898with a pending C call with no continuation function
5899(what is called a <em>C-call boundary</em>),
5900or it is called from a thread that is not running inside a resume
5901(typically the main thread).
5902
5903
5904
5905
5906
5907
5908
5909<h2>4.7 &ndash; <a name="4.7">The Debug Interface</a></h2>
5910
5911<p>
5912Lua has no built-in debugging facilities.
5913Instead, it offers a special interface
5914by means of functions and <em>hooks</em>.
5915This interface allows the construction of different
5916kinds of debuggers, profilers, and other tools
5917that need "inside information" from the interpreter.
5918
5919
5920
5921<hr><h3><a name="lua_Debug"><code>lua_Debug</code></a></h3>
5922<pre>typedef struct lua_Debug {
5923  int event;
5924  const char *name;           /* (n) */
5925  const char *namewhat;       /* (n) */
5926  const char *what;           /* (S) */
5927  const char *source;         /* (S) */
5928  size_t srclen;              /* (S) */
5929  int currentline;            /* (l) */
5930  int linedefined;            /* (S) */
5931  int lastlinedefined;        /* (S) */
5932  unsigned char nups;         /* (u) number of upvalues */
5933  unsigned char nparams;      /* (u) number of parameters */
5934  char isvararg;              /* (u) */
5935  char istailcall;            /* (t) */
5936  unsigned short ftransfer;   /* (r) index of first value transferred */
5937  unsigned short ntransfer;   /* (r) number of transferred values */
5938  char short_src[LUA_IDSIZE]; /* (S) */
5939  /* private part */
5940  <em>other fields</em>
5941} lua_Debug;</pre>
5942
5943<p>
5944A structure used to carry different pieces of
5945information about a function or an activation record.
5946<a href="#lua_getstack"><code>lua_getstack</code></a> fills only the private part
5947of this structure, for later use.
5948To fill the other fields of <a href="#lua_Debug"><code>lua_Debug</code></a> with useful information,
5949you must call <a href="#lua_getinfo"><code>lua_getinfo</code></a> with an appropriate parameter.
5950(Specifically, to get a field,
5951you must add the letter between parentheses in the field's comment
5952to the parameter <code>what</code> of <a href="#lua_getinfo"><code>lua_getinfo</code></a>.)
5953
5954
5955<p>
5956The fields of <a href="#lua_Debug"><code>lua_Debug</code></a> have the following meaning:
5957
5958<ul>
5959
5960<li><b><code>source</code>: </b>
5961the source of the chunk that created the function.
5962If <code>source</code> starts with a '<code>@</code>',
5963it means that the function was defined in a file where
5964the file name follows the '<code>@</code>'.
5965If <code>source</code> starts with a '<code>=</code>',
5966the remainder of its contents describes the source in a user-dependent manner.
5967Otherwise,
5968the function was defined in a string where
5969<code>source</code> is that string.
5970</li>
5971
5972<li><b><code>srclen</code>: </b>
5973The length of the string <code>source</code>.
5974</li>
5975
5976<li><b><code>short_src</code>: </b>
5977a "printable" version of <code>source</code>, to be used in error messages.
5978</li>
5979
5980<li><b><code>linedefined</code>: </b>
5981the line number where the definition of the function starts.
5982</li>
5983
5984<li><b><code>lastlinedefined</code>: </b>
5985the line number where the definition of the function ends.
5986</li>
5987
5988<li><b><code>what</code>: </b>
5989the string <code>"Lua"</code> if the function is a Lua function,
5990<code>"C"</code> if it is a C&nbsp;function,
5991<code>"main"</code> if it is the main part of a chunk.
5992</li>
5993
5994<li><b><code>currentline</code>: </b>
5995the current line where the given function is executing.
5996When no line information is available,
5997<code>currentline</code> is set to -1.
5998</li>
5999
6000<li><b><code>name</code>: </b>
6001a reasonable name for the given function.
6002Because functions in Lua are first-class values,
6003they do not have a fixed name:
6004some functions can be the value of multiple global variables,
6005while others can be stored only in a table field.
6006The <code>lua_getinfo</code> function checks how the function was
6007called to find a suitable name.
6008If it cannot find a name,
6009then <code>name</code> is set to <code>NULL</code>.
6010</li>
6011
6012<li><b><code>namewhat</code>: </b>
6013explains the <code>name</code> field.
6014The value of <code>namewhat</code> can be
6015<code>"global"</code>, <code>"local"</code>, <code>"method"</code>,
6016<code>"field"</code>, <code>"upvalue"</code>, or <code>""</code> (the empty string),
6017according to how the function was called.
6018(Lua uses the empty string when no other option seems to apply.)
6019</li>
6020
6021<li><b><code>istailcall</code>: </b>
6022true if this function invocation was called by a tail call.
6023In this case, the caller of this level is not in the stack.
6024</li>
6025
6026<li><b><code>nups</code>: </b>
6027the number of upvalues of the function.
6028</li>
6029
6030<li><b><code>nparams</code>: </b>
6031the number of parameters of the function
6032(always 0&nbsp;for C&nbsp;functions).
6033</li>
6034
6035<li><b><code>isvararg</code>: </b>
6036true if the function is a vararg function
6037(always true for C&nbsp;functions).
6038</li>
6039
6040<li><b><code>ftransfer</code>: </b>
6041the index in the stack of the first value being "transferred",
6042that is, parameters in a call or return values in a return.
6043(The other values are in consecutive indices.)
6044Using this index, you can access and modify these values
6045through <a href="#lua_getlocal"><code>lua_getlocal</code></a> and <a href="#lua_setlocal"><code>lua_setlocal</code></a>.
6046This field is only meaningful during a
6047call hook, denoting the first parameter,
6048or a return hook, denoting the first value being returned.
6049(For call hooks, this value is always 1.)
6050</li>
6051
6052<li><b><code>ntransfer</code>: </b>
6053The number of values being transferred (see previous item).
6054(For calls of Lua functions,
6055this value is always equal to <code>nparams</code>.)
6056</li>
6057
6058</ul>
6059
6060
6061
6062
6063<hr><h3><a name="lua_gethook"><code>lua_gethook</code></a></h3><p>
6064<span class="apii">[-0, +0, &ndash;]</span>
6065<pre>lua_Hook lua_gethook (lua_State *L);</pre>
6066
6067<p>
6068Returns the current hook function.
6069
6070
6071
6072
6073
6074<hr><h3><a name="lua_gethookcount"><code>lua_gethookcount</code></a></h3><p>
6075<span class="apii">[-0, +0, &ndash;]</span>
6076<pre>int lua_gethookcount (lua_State *L);</pre>
6077
6078<p>
6079Returns the current hook count.
6080
6081
6082
6083
6084
6085<hr><h3><a name="lua_gethookmask"><code>lua_gethookmask</code></a></h3><p>
6086<span class="apii">[-0, +0, &ndash;]</span>
6087<pre>int lua_gethookmask (lua_State *L);</pre>
6088
6089<p>
6090Returns the current hook mask.
6091
6092
6093
6094
6095
6096<hr><h3><a name="lua_getinfo"><code>lua_getinfo</code></a></h3><p>
6097<span class="apii">[-(0|1), +(0|1|2), <em>m</em>]</span>
6098<pre>int lua_getinfo (lua_State *L, const char *what, lua_Debug *ar);</pre>
6099
6100<p>
6101Gets information about a specific function or function invocation.
6102
6103
6104<p>
6105To get information about a function invocation,
6106the parameter <code>ar</code> must be a valid activation record that was
6107filled by a previous call to <a href="#lua_getstack"><code>lua_getstack</code></a> or
6108given as argument to a hook (see <a href="#lua_Hook"><code>lua_Hook</code></a>).
6109
6110
6111<p>
6112To get information about a function, you push it onto the stack
6113and start the <code>what</code> string with the character '<code>&gt;</code>'.
6114(In that case,
6115<code>lua_getinfo</code> pops the function from the top of the stack.)
6116For instance, to know in which line a function <code>f</code> was defined,
6117you can write the following code:
6118
6119<pre>
6120     lua_Debug ar;
6121     lua_getglobal(L, "f");  /* get global 'f' */
6122     lua_getinfo(L, "&gt;S", &amp;ar);
6123     printf("%d\n", ar.linedefined);
6124</pre>
6125
6126<p>
6127Each character in the string <code>what</code>
6128selects some fields of the structure <code>ar</code> to be filled or
6129a value to be pushed on the stack.
6130(These characters are also documented in the declaration of
6131the structure <a href="#lua_Debug"><code>lua_Debug</code></a>,
6132between parentheses in the comments following each field.)
6133
6134<ul>
6135
6136<li><b>'<code>f</code>': </b>
6137pushes onto the stack the function that is
6138running at the given level;
6139</li>
6140
6141<li><b>'<code>l</code>': </b> fills in the field <code>currentline</code>;
6142</li>
6143
6144<li><b>'<code>n</code>': </b> fills in the fields <code>name</code> and <code>namewhat</code>;
6145</li>
6146
6147<li><b>'<code>r</code>': </b> fills in the fields <code>ftransfer</code> and <code>ntransfer</code>;
6148</li>
6149
6150<li><b>'<code>S</code>': </b>
6151fills in the fields <code>source</code>, <code>short_src</code>,
6152<code>linedefined</code>, <code>lastlinedefined</code>, and <code>what</code>;
6153</li>
6154
6155<li><b>'<code>t</code>': </b> fills in the field <code>istailcall</code>;
6156</li>
6157
6158<li><b>'<code>u</code>': </b> fills in the fields
6159<code>nups</code>, <code>nparams</code>, and <code>isvararg</code>;
6160</li>
6161
6162<li><b>'<code>L</code>': </b>
6163pushes onto the stack a table whose indices are
6164the lines on the function with some associated code,
6165that is, the lines where you can put a break point.
6166(Lines with no code include empty lines and comments.)
6167If this option is given together with option '<code>f</code>',
6168its table is pushed after the function.
6169This is the only option that can raise a memory error.
6170</li>
6171
6172</ul>
6173
6174<p>
6175This function returns 0 to signal an invalid option in <code>what</code>;
6176even then the valid options are handled correctly.
6177
6178
6179
6180
6181
6182<hr><h3><a name="lua_getlocal"><code>lua_getlocal</code></a></h3><p>
6183<span class="apii">[-0, +(0|1), &ndash;]</span>
6184<pre>const char *lua_getlocal (lua_State *L, const lua_Debug *ar, int n);</pre>
6185
6186<p>
6187Gets information about a local variable or a temporary value
6188of a given activation record or a given function.
6189
6190
6191<p>
6192In the first case,
6193the parameter <code>ar</code> must be a valid activation record that was
6194filled by a previous call to <a href="#lua_getstack"><code>lua_getstack</code></a> or
6195given as argument to a hook (see <a href="#lua_Hook"><code>lua_Hook</code></a>).
6196The index <code>n</code> selects which local variable to inspect;
6197see <a href="#pdf-debug.getlocal"><code>debug.getlocal</code></a> for details about variable indices
6198and names.
6199
6200
6201<p>
6202<a href="#lua_getlocal"><code>lua_getlocal</code></a> pushes the variable's value onto the stack
6203and returns its name.
6204
6205
6206<p>
6207In the second case, <code>ar</code> must be <code>NULL</code> and the function
6208to be inspected must be on the top of the stack.
6209In this case, only parameters of Lua functions are visible
6210(as there is no information about what variables are active)
6211and no values are pushed onto the stack.
6212
6213
6214<p>
6215Returns <code>NULL</code> (and pushes nothing)
6216when the index is greater than
6217the number of active local variables.
6218
6219
6220
6221
6222
6223<hr><h3><a name="lua_getstack"><code>lua_getstack</code></a></h3><p>
6224<span class="apii">[-0, +0, &ndash;]</span>
6225<pre>int lua_getstack (lua_State *L, int level, lua_Debug *ar);</pre>
6226
6227<p>
6228Gets information about the interpreter runtime stack.
6229
6230
6231<p>
6232This function fills parts of a <a href="#lua_Debug"><code>lua_Debug</code></a> structure with
6233an identification of the <em>activation record</em>
6234of the function executing at a given level.
6235Level&nbsp;0 is the current running function,
6236whereas level <em>n+1</em> is the function that has called level <em>n</em>
6237(except for tail calls, which do not count in the stack).
6238When called with a level greater than the stack depth,
6239<a href="#lua_getstack"><code>lua_getstack</code></a> returns 0;
6240otherwise it returns 1.
6241
6242
6243
6244
6245
6246<hr><h3><a name="lua_getupvalue"><code>lua_getupvalue</code></a></h3><p>
6247<span class="apii">[-0, +(0|1), &ndash;]</span>
6248<pre>const char *lua_getupvalue (lua_State *L, int funcindex, int n);</pre>
6249
6250<p>
6251Gets information about the <code>n</code>-th upvalue
6252of the closure at index <code>funcindex</code>.
6253It pushes the upvalue's value onto the stack
6254and returns its name.
6255Returns <code>NULL</code> (and pushes nothing)
6256when the index <code>n</code> is greater than the number of upvalues.
6257
6258
6259<p>
6260See <a href="#pdf-debug.getupvalue"><code>debug.getupvalue</code></a> for more information about upvalues.
6261
6262
6263
6264
6265
6266<hr><h3><a name="lua_Hook"><code>lua_Hook</code></a></h3>
6267<pre>typedef void (*lua_Hook) (lua_State *L, lua_Debug *ar);</pre>
6268
6269<p>
6270Type for debugging hook functions.
6271
6272
6273<p>
6274Whenever a hook is called, its <code>ar</code> argument has its field
6275<code>event</code> set to the specific event that triggered the hook.
6276Lua identifies these events with the following constants:
6277<a name="pdf-LUA_HOOKCALL"><code>LUA_HOOKCALL</code></a>, <a name="pdf-LUA_HOOKRET"><code>LUA_HOOKRET</code></a>,
6278<a name="pdf-LUA_HOOKTAILCALL"><code>LUA_HOOKTAILCALL</code></a>, <a name="pdf-LUA_HOOKLINE"><code>LUA_HOOKLINE</code></a>,
6279and <a name="pdf-LUA_HOOKCOUNT"><code>LUA_HOOKCOUNT</code></a>.
6280Moreover, for line events, the field <code>currentline</code> is also set.
6281To get the value of any other field in <code>ar</code>,
6282the hook must call <a href="#lua_getinfo"><code>lua_getinfo</code></a>.
6283
6284
6285<p>
6286For call events, <code>event</code> can be <code>LUA_HOOKCALL</code>,
6287the normal value, or <code>LUA_HOOKTAILCALL</code>, for a tail call;
6288in this case, there will be no corresponding return event.
6289
6290
6291<p>
6292While Lua is running a hook, it disables other calls to hooks.
6293Therefore, if a hook calls back Lua to execute a function or a chunk,
6294this execution occurs without any calls to hooks.
6295
6296
6297<p>
6298Hook functions cannot have continuations,
6299that is, they cannot call <a href="#lua_yieldk"><code>lua_yieldk</code></a>,
6300<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>.
6301
6302
6303<p>
6304Hook functions can yield under the following conditions:
6305Only count and line events can yield;
6306to yield, a hook function must finish its execution
6307calling <a href="#lua_yield"><code>lua_yield</code></a> with <code>nresults</code> equal to zero
6308(that is, with no values).
6309
6310
6311
6312
6313
6314<hr><h3><a name="lua_sethook"><code>lua_sethook</code></a></h3><p>
6315<span class="apii">[-0, +0, &ndash;]</span>
6316<pre>void lua_sethook (lua_State *L, lua_Hook f, int mask, int count);</pre>
6317
6318<p>
6319Sets the debugging hook function.
6320
6321
6322<p>
6323Argument <code>f</code> is the hook function.
6324<code>mask</code> specifies on which events the hook will be called:
6325it is formed by a bitwise OR of the constants
6326<a name="pdf-LUA_MASKCALL"><code>LUA_MASKCALL</code></a>,
6327<a name="pdf-LUA_MASKRET"><code>LUA_MASKRET</code></a>,
6328<a name="pdf-LUA_MASKLINE"><code>LUA_MASKLINE</code></a>,
6329and <a name="pdf-LUA_MASKCOUNT"><code>LUA_MASKCOUNT</code></a>.
6330The <code>count</code> argument is only meaningful when the mask
6331includes <code>LUA_MASKCOUNT</code>.
6332For each event, the hook is called as explained below:
6333
6334<ul>
6335
6336<li><b>The call hook: </b> is called when the interpreter calls a function.
6337The hook is called just after Lua enters the new function.
6338</li>
6339
6340<li><b>The return hook: </b> is called when the interpreter returns from a function.
6341The hook is called just before Lua leaves the function.
6342</li>
6343
6344<li><b>The line hook: </b> is called when the interpreter is about to
6345start the execution of a new line of code,
6346or when it jumps back in the code (even to the same line).
6347This event only happens while Lua is executing a Lua function.
6348</li>
6349
6350<li><b>The count hook: </b> is called after the interpreter executes every
6351<code>count</code> instructions.
6352This event only happens while Lua is executing a Lua function.
6353</li>
6354
6355</ul>
6356
6357<p>
6358Hooks are disabled by setting <code>mask</code> to zero.
6359
6360
6361
6362
6363
6364<hr><h3><a name="lua_setlocal"><code>lua_setlocal</code></a></h3><p>
6365<span class="apii">[-(0|1), +0, &ndash;]</span>
6366<pre>const char *lua_setlocal (lua_State *L, const lua_Debug *ar, int n);</pre>
6367
6368<p>
6369Sets the value of a local variable of a given activation record.
6370It assigns the value on the top of the stack
6371to the variable and returns its name.
6372It also pops the value from the stack.
6373
6374
6375<p>
6376Returns <code>NULL</code> (and pops nothing)
6377when the index is greater than
6378the number of active local variables.
6379
6380
6381<p>
6382Parameters <code>ar</code> and <code>n</code> are as in the function <a href="#lua_getlocal"><code>lua_getlocal</code></a>.
6383
6384
6385
6386
6387
6388<hr><h3><a name="lua_setupvalue"><code>lua_setupvalue</code></a></h3><p>
6389<span class="apii">[-(0|1), +0, &ndash;]</span>
6390<pre>const char *lua_setupvalue (lua_State *L, int funcindex, int n);</pre>
6391
6392<p>
6393Sets the value of a closure's upvalue.
6394It assigns the value on the top of the stack
6395to the upvalue and returns its name.
6396It also pops the value from the stack.
6397
6398
6399<p>
6400Returns <code>NULL</code> (and pops nothing)
6401when the index <code>n</code> is greater than the number of upvalues.
6402
6403
6404<p>
6405Parameters <code>funcindex</code> and <code>n</code> are as in
6406the function <a href="#lua_getupvalue"><code>lua_getupvalue</code></a>.
6407
6408
6409
6410
6411
6412<hr><h3><a name="lua_upvalueid"><code>lua_upvalueid</code></a></h3><p>
6413<span class="apii">[-0, +0, &ndash;]</span>
6414<pre>void *lua_upvalueid (lua_State *L, int funcindex, int n);</pre>
6415
6416<p>
6417Returns a unique identifier for the upvalue numbered <code>n</code>
6418from the closure at index <code>funcindex</code>.
6419
6420
6421<p>
6422These unique identifiers allow a program to check whether different
6423closures share upvalues.
6424Lua closures that share an upvalue
6425(that is, that access a same external local variable)
6426will return identical ids for those upvalue indices.
6427
6428
6429<p>
6430Parameters <code>funcindex</code> and <code>n</code> are as in
6431the function <a href="#lua_getupvalue"><code>lua_getupvalue</code></a>,
6432but <code>n</code> cannot be greater than the number of upvalues.
6433
6434
6435
6436
6437
6438<hr><h3><a name="lua_upvaluejoin"><code>lua_upvaluejoin</code></a></h3><p>
6439<span class="apii">[-0, +0, &ndash;]</span>
6440<pre>void lua_upvaluejoin (lua_State *L, int funcindex1, int n1,
6441                                    int funcindex2, int n2);</pre>
6442
6443<p>
6444Make the <code>n1</code>-th upvalue of the Lua closure at index <code>funcindex1</code>
6445refer to the <code>n2</code>-th upvalue of the Lua closure at index <code>funcindex2</code>.
6446
6447
6448
6449
6450
6451
6452
6453<h1>5 &ndash; <a name="5">The Auxiliary Library</a></h1>
6454
6455
6456
6457<p>
6458
6459The <em>auxiliary library</em> provides several convenient functions
6460to interface C with Lua.
6461While the basic API provides the primitive functions for all
6462interactions between C and Lua,
6463the auxiliary library provides higher-level functions for some
6464common tasks.
6465
6466
6467<p>
6468All functions and types from the auxiliary library
6469are defined in header file <code>lauxlib.h</code> and
6470have a prefix <code>luaL_</code>.
6471
6472
6473<p>
6474All functions in the auxiliary library are built on
6475top of the basic API,
6476and so they provide nothing that cannot be done with that API.
6477Nevertheless, the use of the auxiliary library ensures
6478more consistency to your code.
6479
6480
6481<p>
6482Several functions in the auxiliary library use internally some
6483extra stack slots.
6484When a function in the auxiliary library uses less than five slots,
6485it does not check the stack size;
6486it simply assumes that there are enough slots.
6487
6488
6489<p>
6490Several functions in the auxiliary library are used to
6491check C&nbsp;function arguments.
6492Because the error message is formatted for arguments
6493(e.g., "<code>bad argument #1</code>"),
6494you should not use these functions for other stack values.
6495
6496
6497<p>
6498Functions called <code>luaL_check*</code>
6499always raise an error if the check is not satisfied.
6500
6501
6502
6503
6504
6505<h2>5.1 &ndash; <a name="5.1">Functions and Types</a></h2>
6506
6507<p>
6508Here we list all functions and types from the auxiliary library
6509in alphabetical order.
6510
6511
6512
6513<hr><h3><a name="luaL_addchar"><code>luaL_addchar</code></a></h3><p>
6514<span class="apii">[-?, +?, <em>m</em>]</span>
6515<pre>void luaL_addchar (luaL_Buffer *B, char c);</pre>
6516
6517<p>
6518Adds the byte <code>c</code> to the buffer <code>B</code>
6519(see <a href="#luaL_Buffer"><code>luaL_Buffer</code></a>).
6520
6521
6522
6523
6524
6525<hr><h3><a name="luaL_addgsub"><code>luaL_addgsub</code></a></h3><p>
6526<span class="apii">[-?, +?, <em>m</em>]</span>
6527<pre>const void luaL_addgsub (luaL_Buffer *B, const char *s,
6528                         const char *p, const char *r);</pre>
6529
6530<p>
6531Adds a copy of the string <code>s</code> to the buffer <code>B</code> (see <a href="#luaL_Buffer"><code>luaL_Buffer</code></a>),
6532replacing any occurrence of the string <code>p</code>
6533with the string <code>r</code>.
6534
6535
6536
6537
6538
6539<hr><h3><a name="luaL_addlstring"><code>luaL_addlstring</code></a></h3><p>
6540<span class="apii">[-?, +?, <em>m</em>]</span>
6541<pre>void luaL_addlstring (luaL_Buffer *B, const char *s, size_t l);</pre>
6542
6543<p>
6544Adds the string pointed to by <code>s</code> with length <code>l</code> to
6545the buffer <code>B</code>
6546(see <a href="#luaL_Buffer"><code>luaL_Buffer</code></a>).
6547The string can contain embedded zeros.
6548
6549
6550
6551
6552
6553<hr><h3><a name="luaL_addsize"><code>luaL_addsize</code></a></h3><p>
6554<span class="apii">[-?, +?, &ndash;]</span>
6555<pre>void luaL_addsize (luaL_Buffer *B, size_t n);</pre>
6556
6557<p>
6558Adds to the buffer <code>B</code>
6559a string of length <code>n</code> previously copied to the
6560buffer area (see <a href="#luaL_prepbuffer"><code>luaL_prepbuffer</code></a>).
6561
6562
6563
6564
6565
6566<hr><h3><a name="luaL_addstring"><code>luaL_addstring</code></a></h3><p>
6567<span class="apii">[-?, +?, <em>m</em>]</span>
6568<pre>void luaL_addstring (luaL_Buffer *B, const char *s);</pre>
6569
6570<p>
6571Adds the zero-terminated string pointed to by <code>s</code>
6572to the buffer <code>B</code>
6573(see <a href="#luaL_Buffer"><code>luaL_Buffer</code></a>).
6574
6575
6576
6577
6578
6579<hr><h3><a name="luaL_addvalue"><code>luaL_addvalue</code></a></h3><p>
6580<span class="apii">[-?, +?, <em>m</em>]</span>
6581<pre>void luaL_addvalue (luaL_Buffer *B);</pre>
6582
6583<p>
6584Adds the value on the top of the stack
6585to the buffer <code>B</code>
6586(see <a href="#luaL_Buffer"><code>luaL_Buffer</code></a>).
6587Pops the value.
6588
6589
6590<p>
6591This is the only function on string buffers that can (and must)
6592be called with an extra element on the stack,
6593which is the value to be added to the buffer.
6594
6595
6596
6597
6598
6599<hr><h3><a name="luaL_argcheck"><code>luaL_argcheck</code></a></h3><p>
6600<span class="apii">[-0, +0, <em>v</em>]</span>
6601<pre>void luaL_argcheck (lua_State *L,
6602                    int cond,
6603                    int arg,
6604                    const char *extramsg);</pre>
6605
6606<p>
6607Checks whether <code>cond</code> is true.
6608If it is not, raises an error with a standard message (see <a href="#luaL_argerror"><code>luaL_argerror</code></a>).
6609
6610
6611
6612
6613
6614<hr><h3><a name="luaL_argerror"><code>luaL_argerror</code></a></h3><p>
6615<span class="apii">[-0, +0, <em>v</em>]</span>
6616<pre>int luaL_argerror (lua_State *L, int arg, const char *extramsg);</pre>
6617
6618<p>
6619Raises an error reporting a problem with argument <code>arg</code>
6620of the C&nbsp;function that called it,
6621using a standard message
6622that includes <code>extramsg</code> as a comment:
6623
6624<pre>
6625     bad argument #<em>arg</em> to '<em>funcname</em>' (<em>extramsg</em>)
6626</pre><p>
6627This function never returns.
6628
6629
6630
6631
6632
6633<hr><h3><a name="luaL_argexpected"><code>luaL_argexpected</code></a></h3><p>
6634<span class="apii">[-0, +0, <em>v</em>]</span>
6635<pre>void luaL_argexpected (lua_State *L,
6636                       int cond,
6637                       int arg,
6638                       const char *tname);</pre>
6639
6640<p>
6641Checks whether <code>cond</code> is true.
6642If it is not, raises an error about the type of the argument <code>arg</code>
6643with a standard message (see <a href="#luaL_typeerror"><code>luaL_typeerror</code></a>).
6644
6645
6646
6647
6648
6649<hr><h3><a name="luaL_Buffer"><code>luaL_Buffer</code></a></h3>
6650<pre>typedef struct luaL_Buffer luaL_Buffer;</pre>
6651
6652<p>
6653Type for a <em>string buffer</em>.
6654
6655
6656<p>
6657A string buffer allows C&nbsp;code to build Lua strings piecemeal.
6658Its pattern of use is as follows:
6659
6660<ul>
6661
6662<li>First declare a variable <code>b</code> of type <a href="#luaL_Buffer"><code>luaL_Buffer</code></a>.</li>
6663
6664<li>Then initialize it with a call <code>luaL_buffinit(L, &amp;b)</code>.</li>
6665
6666<li>
6667Then add string pieces to the buffer calling any of
6668the <code>luaL_add*</code> functions.
6669</li>
6670
6671<li>
6672Finish by calling <code>luaL_pushresult(&amp;b)</code>.
6673This call leaves the final string on the top of the stack.
6674</li>
6675
6676</ul>
6677
6678<p>
6679If you know beforehand the maximum size of the resulting string,
6680you can use the buffer like this:
6681
6682<ul>
6683
6684<li>First declare a variable <code>b</code> of type <a href="#luaL_Buffer"><code>luaL_Buffer</code></a>.</li>
6685
6686<li>Then initialize it and preallocate a space of
6687size <code>sz</code> with a call <code>luaL_buffinitsize(L, &amp;b, sz)</code>.</li>
6688
6689<li>Then produce the string into that space.</li>
6690
6691<li>
6692Finish by calling <code>luaL_pushresultsize(&amp;b, sz)</code>,
6693where <code>sz</code> is the total size of the resulting string
6694copied into that space (which may be less than or
6695equal to the preallocated size).
6696</li>
6697
6698</ul>
6699
6700<p>
6701During its normal operation,
6702a string buffer uses a variable number of stack slots.
6703So, while using a buffer, you cannot assume that you know where
6704the top of the stack is.
6705You can use the stack between successive calls to buffer operations
6706as long as that use is balanced;
6707that is,
6708when you call a buffer operation,
6709the stack is at the same level
6710it was immediately after the previous buffer operation.
6711(The only exception to this rule is <a href="#luaL_addvalue"><code>luaL_addvalue</code></a>.)
6712After calling <a href="#luaL_pushresult"><code>luaL_pushresult</code></a>,
6713the stack is back to its level when the buffer was initialized,
6714plus the final string on its top.
6715
6716
6717
6718
6719
6720<hr><h3><a name="luaL_buffaddr"><code>luaL_buffaddr</code></a></h3><p>
6721<span class="apii">[-0, +0, &ndash;]</span>
6722<pre>char *luaL_buffaddr (luaL_Buffer *B);</pre>
6723
6724<p>
6725Returns the address of the current content of buffer <code>B</code>
6726(see <a href="#luaL_Buffer"><code>luaL_Buffer</code></a>).
6727Note that any addition to the buffer may invalidate this address.
6728
6729
6730
6731
6732
6733<hr><h3><a name="luaL_buffinit"><code>luaL_buffinit</code></a></h3><p>
6734<span class="apii">[-0, +?, &ndash;]</span>
6735<pre>void luaL_buffinit (lua_State *L, luaL_Buffer *B);</pre>
6736
6737<p>
6738Initializes a buffer <code>B</code>
6739(see <a href="#luaL_Buffer"><code>luaL_Buffer</code></a>).
6740This function does not allocate any space;
6741the buffer must be declared as a variable.
6742
6743
6744
6745
6746
6747<hr><h3><a name="luaL_bufflen"><code>luaL_bufflen</code></a></h3><p>
6748<span class="apii">[-0, +0, &ndash;]</span>
6749<pre>size_t luaL_bufflen (luaL_Buffer *B);</pre>
6750
6751<p>
6752Returns the length of the current content of buffer <code>B</code>
6753(see <a href="#luaL_Buffer"><code>luaL_Buffer</code></a>).
6754
6755
6756
6757
6758
6759<hr><h3><a name="luaL_buffinitsize"><code>luaL_buffinitsize</code></a></h3><p>
6760<span class="apii">[-?, +?, <em>m</em>]</span>
6761<pre>char *luaL_buffinitsize (lua_State *L, luaL_Buffer *B, size_t sz);</pre>
6762
6763<p>
6764Equivalent to the sequence
6765<a href="#luaL_buffinit"><code>luaL_buffinit</code></a>, <a href="#luaL_prepbuffsize"><code>luaL_prepbuffsize</code></a>.
6766
6767
6768
6769
6770
6771<hr><h3><a name="luaL_buffsub"><code>luaL_buffsub</code></a></h3><p>
6772<span class="apii">[-?, +?, &ndash;]</span>
6773<pre>void luaL_buffsub (luaL_Buffer *B, int n);</pre>
6774
6775<p>
6776Removes <code>n</code> bytes from the the buffer <code>B</code>
6777(see <a href="#luaL_Buffer"><code>luaL_Buffer</code></a>).
6778The buffer must have at least that many bytes.
6779
6780
6781
6782
6783
6784<hr><h3><a name="luaL_callmeta"><code>luaL_callmeta</code></a></h3><p>
6785<span class="apii">[-0, +(0|1), <em>e</em>]</span>
6786<pre>int luaL_callmeta (lua_State *L, int obj, const char *e);</pre>
6787
6788<p>
6789Calls a metamethod.
6790
6791
6792<p>
6793If the object at index <code>obj</code> has a metatable and this
6794metatable has a field <code>e</code>,
6795this function calls this field passing the object as its only argument.
6796In this case this function returns true and pushes onto the
6797stack the value returned by the call.
6798If there is no metatable or no metamethod,
6799this function returns false without pushing any value on the stack.
6800
6801
6802
6803
6804
6805<hr><h3><a name="luaL_checkany"><code>luaL_checkany</code></a></h3><p>
6806<span class="apii">[-0, +0, <em>v</em>]</span>
6807<pre>void luaL_checkany (lua_State *L, int arg);</pre>
6808
6809<p>
6810Checks whether the function has an argument
6811of any type (including <b>nil</b>) at position <code>arg</code>.
6812
6813
6814
6815
6816
6817<hr><h3><a name="luaL_checkinteger"><code>luaL_checkinteger</code></a></h3><p>
6818<span class="apii">[-0, +0, <em>v</em>]</span>
6819<pre>lua_Integer luaL_checkinteger (lua_State *L, int arg);</pre>
6820
6821<p>
6822Checks whether the function argument <code>arg</code> is an integer
6823(or can be converted to an integer)
6824and returns this integer.
6825
6826
6827
6828
6829
6830<hr><h3><a name="luaL_checklstring"><code>luaL_checklstring</code></a></h3><p>
6831<span class="apii">[-0, +0, <em>v</em>]</span>
6832<pre>const char *luaL_checklstring (lua_State *L, int arg, size_t *l);</pre>
6833
6834<p>
6835Checks whether the function argument <code>arg</code> is a string
6836and returns this string;
6837if <code>l</code> is not <code>NULL</code> fills its referent
6838with the string's length.
6839
6840
6841<p>
6842This function uses <a href="#lua_tolstring"><code>lua_tolstring</code></a> to get its result,
6843so all conversions and caveats of that function apply here.
6844
6845
6846
6847
6848
6849<hr><h3><a name="luaL_checknumber"><code>luaL_checknumber</code></a></h3><p>
6850<span class="apii">[-0, +0, <em>v</em>]</span>
6851<pre>lua_Number luaL_checknumber (lua_State *L, int arg);</pre>
6852
6853<p>
6854Checks whether the function argument <code>arg</code> is a number
6855and returns this number converted to a <code>lua_Number</code>.
6856
6857
6858
6859
6860
6861<hr><h3><a name="luaL_checkoption"><code>luaL_checkoption</code></a></h3><p>
6862<span class="apii">[-0, +0, <em>v</em>]</span>
6863<pre>int luaL_checkoption (lua_State *L,
6864                      int arg,
6865                      const char *def,
6866                      const char *const lst[]);</pre>
6867
6868<p>
6869Checks whether the function argument <code>arg</code> is a string and
6870searches for this string in the array <code>lst</code>
6871(which must be NULL-terminated).
6872Returns the index in the array where the string was found.
6873Raises an error if the argument is not a string or
6874if the string cannot be found.
6875
6876
6877<p>
6878If <code>def</code> is not <code>NULL</code>,
6879the function uses <code>def</code> as a default value when
6880there is no argument <code>arg</code> or when this argument is <b>nil</b>.
6881
6882
6883<p>
6884This is a useful function for mapping strings to C&nbsp;enums.
6885(The usual convention in Lua libraries is
6886to use strings instead of numbers to select options.)
6887
6888
6889
6890
6891
6892<hr><h3><a name="luaL_checkstack"><code>luaL_checkstack</code></a></h3><p>
6893<span class="apii">[-0, +0, <em>v</em>]</span>
6894<pre>void luaL_checkstack (lua_State *L, int sz, const char *msg);</pre>
6895
6896<p>
6897Grows the stack size to <code>top + sz</code> elements,
6898raising an error if the stack cannot grow to that size.
6899<code>msg</code> is an additional text to go into the error message
6900(or <code>NULL</code> for no additional text).
6901
6902
6903
6904
6905
6906<hr><h3><a name="luaL_checkstring"><code>luaL_checkstring</code></a></h3><p>
6907<span class="apii">[-0, +0, <em>v</em>]</span>
6908<pre>const char *luaL_checkstring (lua_State *L, int arg);</pre>
6909
6910<p>
6911Checks whether the function argument <code>arg</code> is a string
6912and returns this string.
6913
6914
6915<p>
6916This function uses <a href="#lua_tolstring"><code>lua_tolstring</code></a> to get its result,
6917so all conversions and caveats of that function apply here.
6918
6919
6920
6921
6922
6923<hr><h3><a name="luaL_checktype"><code>luaL_checktype</code></a></h3><p>
6924<span class="apii">[-0, +0, <em>v</em>]</span>
6925<pre>void luaL_checktype (lua_State *L, int arg, int t);</pre>
6926
6927<p>
6928Checks whether the function argument <code>arg</code> has type <code>t</code>.
6929See <a href="#lua_type"><code>lua_type</code></a> for the encoding of types for <code>t</code>.
6930
6931
6932
6933
6934
6935<hr><h3><a name="luaL_checkudata"><code>luaL_checkudata</code></a></h3><p>
6936<span class="apii">[-0, +0, <em>v</em>]</span>
6937<pre>void *luaL_checkudata (lua_State *L, int arg, const char *tname);</pre>
6938
6939<p>
6940Checks whether the function argument <code>arg</code> is a userdata
6941of the type <code>tname</code> (see <a href="#luaL_newmetatable"><code>luaL_newmetatable</code></a>) and
6942returns the userdata's memory-block address (see <a href="#lua_touserdata"><code>lua_touserdata</code></a>).
6943
6944
6945
6946
6947
6948<hr><h3><a name="luaL_checkversion"><code>luaL_checkversion</code></a></h3><p>
6949<span class="apii">[-0, +0, <em>v</em>]</span>
6950<pre>void luaL_checkversion (lua_State *L);</pre>
6951
6952<p>
6953Checks whether the code making the call and the Lua library being called
6954are using the same version of Lua and the same numeric types.
6955
6956
6957
6958
6959
6960<hr><h3><a name="luaL_dofile"><code>luaL_dofile</code></a></h3><p>
6961<span class="apii">[-0, +?, <em>m</em>]</span>
6962<pre>int luaL_dofile (lua_State *L, const char *filename);</pre>
6963
6964<p>
6965Loads and runs the given file.
6966It is defined as the following macro:
6967
6968<pre>
6969     (luaL_loadfile(L, filename) || lua_pcall(L, 0, LUA_MULTRET, 0))
6970</pre><p>
6971It returns <a href="#pdf-LUA_OK"><code>LUA_OK</code></a> if there are no errors,
6972or an error code in case of errors (see <a href="#4.4.1">&sect;4.4.1</a>).
6973
6974
6975
6976
6977
6978<hr><h3><a name="luaL_dostring"><code>luaL_dostring</code></a></h3><p>
6979<span class="apii">[-0, +?, &ndash;]</span>
6980<pre>int luaL_dostring (lua_State *L, const char *str);</pre>
6981
6982<p>
6983Loads and runs the given string.
6984It is defined as the following macro:
6985
6986<pre>
6987     (luaL_loadstring(L, str) || lua_pcall(L, 0, LUA_MULTRET, 0))
6988</pre><p>
6989It returns <a href="#pdf-LUA_OK"><code>LUA_OK</code></a> if there are no errors,
6990or an error code in case of errors (see <a href="#4.4.1">&sect;4.4.1</a>).
6991
6992
6993
6994
6995
6996<hr><h3><a name="luaL_error"><code>luaL_error</code></a></h3><p>
6997<span class="apii">[-0, +0, <em>v</em>]</span>
6998<pre>int luaL_error (lua_State *L, const char *fmt, ...);</pre>
6999
7000<p>
7001Raises an error.
7002The error message format is given by <code>fmt</code>
7003plus any extra arguments,
7004following the same rules of <a href="#lua_pushfstring"><code>lua_pushfstring</code></a>.
7005It also adds at the beginning of the message the file name and
7006the line number where the error occurred,
7007if this information is available.
7008
7009
7010<p>
7011This function never returns,
7012but it is an idiom to use it in C&nbsp;functions
7013as <code>return luaL_error(<em>args</em>)</code>.
7014
7015
7016
7017
7018
7019<hr><h3><a name="luaL_execresult"><code>luaL_execresult</code></a></h3><p>
7020<span class="apii">[-0, +3, <em>m</em>]</span>
7021<pre>int luaL_execresult (lua_State *L, int stat);</pre>
7022
7023<p>
7024This function produces the return values for
7025process-related functions in the standard library
7026(<a href="#pdf-os.execute"><code>os.execute</code></a> and <a href="#pdf-io.close"><code>io.close</code></a>).
7027
7028
7029
7030
7031
7032<hr><h3><a name="luaL_fileresult"><code>luaL_fileresult</code></a></h3><p>
7033<span class="apii">[-0, +(1|3), <em>m</em>]</span>
7034<pre>int luaL_fileresult (lua_State *L, int stat, const char *fname);</pre>
7035
7036<p>
7037This function produces the return values for
7038file-related functions in the standard library
7039(<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.).
7040
7041
7042
7043
7044
7045<hr><h3><a name="luaL_getmetafield"><code>luaL_getmetafield</code></a></h3><p>
7046<span class="apii">[-0, +(0|1), <em>m</em>]</span>
7047<pre>int luaL_getmetafield (lua_State *L, int obj, const char *e);</pre>
7048
7049<p>
7050Pushes onto the stack the field <code>e</code> from the metatable
7051of the object at index <code>obj</code> and returns the type of the pushed value.
7052If the object does not have a metatable,
7053or if the metatable does not have this field,
7054pushes nothing and returns <code>LUA_TNIL</code>.
7055
7056
7057
7058
7059
7060<hr><h3><a name="luaL_getmetatable"><code>luaL_getmetatable</code></a></h3><p>
7061<span class="apii">[-0, +1, <em>m</em>]</span>
7062<pre>int luaL_getmetatable (lua_State *L, const char *tname);</pre>
7063
7064<p>
7065Pushes onto the stack the metatable associated with the name <code>tname</code>
7066in the registry (see <a href="#luaL_newmetatable"><code>luaL_newmetatable</code></a>),
7067or <b>nil</b> if there is no metatable associated with that name.
7068Returns the type of the pushed value.
7069
7070
7071
7072
7073
7074<hr><h3><a name="luaL_getsubtable"><code>luaL_getsubtable</code></a></h3><p>
7075<span class="apii">[-0, +1, <em>e</em>]</span>
7076<pre>int luaL_getsubtable (lua_State *L, int idx, const char *fname);</pre>
7077
7078<p>
7079Ensures that the value <code>t[fname]</code>,
7080where <code>t</code> is the value at index <code>idx</code>,
7081is a table,
7082and pushes that table onto the stack.
7083Returns true if it finds a previous table there
7084and false if it creates a new table.
7085
7086
7087
7088
7089
7090<hr><h3><a name="luaL_gsub"><code>luaL_gsub</code></a></h3><p>
7091<span class="apii">[-0, +1, <em>m</em>]</span>
7092<pre>const char *luaL_gsub (lua_State *L,
7093                       const char *s,
7094                       const char *p,
7095                       const char *r);</pre>
7096
7097<p>
7098Creates a copy of string <code>s</code>,
7099replacing any occurrence of the string <code>p</code>
7100with the string <code>r</code>.
7101Pushes the resulting string on the stack and returns it.
7102
7103
7104
7105
7106
7107<hr><h3><a name="luaL_len"><code>luaL_len</code></a></h3><p>
7108<span class="apii">[-0, +0, <em>e</em>]</span>
7109<pre>lua_Integer luaL_len (lua_State *L, int index);</pre>
7110
7111<p>
7112Returns the "length" of the value at the given index
7113as a number;
7114it is equivalent to the '<code>#</code>' operator in Lua (see <a href="#3.4.7">&sect;3.4.7</a>).
7115Raises an error if the result of the operation is not an integer.
7116(This case can only happen through metamethods.)
7117
7118
7119
7120
7121
7122<hr><h3><a name="luaL_loadbuffer"><code>luaL_loadbuffer</code></a></h3><p>
7123<span class="apii">[-0, +1, &ndash;]</span>
7124<pre>int luaL_loadbuffer (lua_State *L,
7125                     const char *buff,
7126                     size_t sz,
7127                     const char *name);</pre>
7128
7129<p>
7130Equivalent to <a href="#luaL_loadbufferx"><code>luaL_loadbufferx</code></a> with <code>mode</code> equal to <code>NULL</code>.
7131
7132
7133
7134
7135
7136<hr><h3><a name="luaL_loadbufferx"><code>luaL_loadbufferx</code></a></h3><p>
7137<span class="apii">[-0, +1, &ndash;]</span>
7138<pre>int luaL_loadbufferx (lua_State *L,
7139                      const char *buff,
7140                      size_t sz,
7141                      const char *name,
7142                      const char *mode);</pre>
7143
7144<p>
7145Loads a buffer as a Lua chunk.
7146This function uses <a href="#lua_load"><code>lua_load</code></a> to load the chunk in the
7147buffer pointed to by <code>buff</code> with size <code>sz</code>.
7148
7149
7150<p>
7151This function returns the same results as <a href="#lua_load"><code>lua_load</code></a>.
7152<code>name</code> is the chunk name,
7153used for debug information and error messages.
7154The string <code>mode</code> works as in the function <a href="#lua_load"><code>lua_load</code></a>.
7155
7156
7157
7158
7159
7160<hr><h3><a name="luaL_loadfile"><code>luaL_loadfile</code></a></h3><p>
7161<span class="apii">[-0, +1, <em>m</em>]</span>
7162<pre>int luaL_loadfile (lua_State *L, const char *filename);</pre>
7163
7164<p>
7165Equivalent to <a href="#luaL_loadfilex"><code>luaL_loadfilex</code></a> with <code>mode</code> equal to <code>NULL</code>.
7166
7167
7168
7169
7170
7171<hr><h3><a name="luaL_loadfilex"><code>luaL_loadfilex</code></a></h3><p>
7172<span class="apii">[-0, +1, <em>m</em>]</span>
7173<pre>int luaL_loadfilex (lua_State *L, const char *filename,
7174                                            const char *mode);</pre>
7175
7176<p>
7177Loads a file as a Lua chunk.
7178This function uses <a href="#lua_load"><code>lua_load</code></a> to load the chunk in the file
7179named <code>filename</code>.
7180If <code>filename</code> is <code>NULL</code>,
7181then it loads from the standard input.
7182The first line in the file is ignored if it starts with a <code>#</code>.
7183
7184
7185<p>
7186The string <code>mode</code> works as in the function <a href="#lua_load"><code>lua_load</code></a>.
7187
7188
7189<p>
7190This function returns the same results as <a href="#lua_load"><code>lua_load</code></a>
7191or <a href="#pdf-LUA_ERRFILE"><code>LUA_ERRFILE</code></a> for file-related errors.
7192
7193
7194<p>
7195As <a href="#lua_load"><code>lua_load</code></a>, this function only loads the chunk;
7196it does not run it.
7197
7198
7199
7200
7201
7202<hr><h3><a name="luaL_loadstring"><code>luaL_loadstring</code></a></h3><p>
7203<span class="apii">[-0, +1, &ndash;]</span>
7204<pre>int luaL_loadstring (lua_State *L, const char *s);</pre>
7205
7206<p>
7207Loads a string as a Lua chunk.
7208This function uses <a href="#lua_load"><code>lua_load</code></a> to load the chunk in
7209the zero-terminated string <code>s</code>.
7210
7211
7212<p>
7213This function returns the same results as <a href="#lua_load"><code>lua_load</code></a>.
7214
7215
7216<p>
7217Also as <a href="#lua_load"><code>lua_load</code></a>, this function only loads the chunk;
7218it does not run it.
7219
7220
7221
7222
7223
7224<hr><h3><a name="luaL_newlib"><code>luaL_newlib</code></a></h3><p>
7225<span class="apii">[-0, +1, <em>m</em>]</span>
7226<pre>void luaL_newlib (lua_State *L, const luaL_Reg l[]);</pre>
7227
7228<p>
7229Creates a new table and registers there
7230the functions in the list <code>l</code>.
7231
7232
7233<p>
7234It is implemented as the following macro:
7235
7236<pre>
7237     (luaL_newlibtable(L,l), luaL_setfuncs(L,l,0))
7238</pre><p>
7239The array <code>l</code> must be the actual array,
7240not a pointer to it.
7241
7242
7243
7244
7245
7246<hr><h3><a name="luaL_newlibtable"><code>luaL_newlibtable</code></a></h3><p>
7247<span class="apii">[-0, +1, <em>m</em>]</span>
7248<pre>void luaL_newlibtable (lua_State *L, const luaL_Reg l[]);</pre>
7249
7250<p>
7251Creates a new table with a size optimized
7252to store all entries in the array <code>l</code>
7253(but does not actually store them).
7254It is intended to be used in conjunction with <a href="#luaL_setfuncs"><code>luaL_setfuncs</code></a>
7255(see <a href="#luaL_newlib"><code>luaL_newlib</code></a>).
7256
7257
7258<p>
7259It is implemented as a macro.
7260The array <code>l</code> must be the actual array,
7261not a pointer to it.
7262
7263
7264
7265
7266
7267<hr><h3><a name="luaL_newmetatable"><code>luaL_newmetatable</code></a></h3><p>
7268<span class="apii">[-0, +1, <em>m</em>]</span>
7269<pre>int luaL_newmetatable (lua_State *L, const char *tname);</pre>
7270
7271<p>
7272If the registry already has the key <code>tname</code>,
7273returns 0.
7274Otherwise,
7275creates a new table to be used as a metatable for userdata,
7276adds to this new table the pair <code>__name = tname</code>,
7277adds to the registry the pair <code>[tname] = new table</code>,
7278and returns 1.
7279
7280
7281<p>
7282In both cases,
7283the function pushes onto the stack the final value associated
7284with <code>tname</code> in the registry.
7285
7286
7287
7288
7289
7290<hr><h3><a name="luaL_newstate"><code>luaL_newstate</code></a></h3><p>
7291<span class="apii">[-0, +0, &ndash;]</span>
7292<pre>lua_State *luaL_newstate (void);</pre>
7293
7294<p>
7295Creates a new Lua state.
7296It calls <a href="#lua_newstate"><code>lua_newstate</code></a> with an
7297allocator based on the standard&nbsp;C allocation functions
7298and then sets a warning function and a panic function (see <a href="#4.4">&sect;4.4</a>)
7299that print messages to the standard error output.
7300
7301
7302<p>
7303Returns the new state,
7304or <code>NULL</code> if there is a memory allocation error.
7305
7306
7307
7308
7309
7310<hr><h3><a name="luaL_openlibs"><code>luaL_openlibs</code></a></h3><p>
7311<span class="apii">[-0, +0, <em>e</em>]</span>
7312<pre>void luaL_openlibs (lua_State *L);</pre>
7313
7314<p>
7315Opens all standard Lua libraries into the given state.
7316
7317
7318
7319
7320
7321<hr><h3><a name="luaL_opt"><code>luaL_opt</code></a></h3><p>
7322<span class="apii">[-0, +0, &ndash;]</span>
7323<pre>T luaL_opt (L, func, arg, dflt);</pre>
7324
7325<p>
7326This macro is defined as follows:
7327
7328<pre>
7329     (lua_isnoneornil(L,(arg)) ? (dflt) : func(L,(arg)))
7330</pre><p>
7331In words, if the argument <code>arg</code> is nil or absent,
7332the macro results in the default <code>dflt</code>.
7333Otherwise, it results in the result of calling <code>func</code>
7334with the state <code>L</code> and the argument index <code>arg</code> as
7335arguments.
7336Note that it evaluates the expression <code>dflt</code> only if needed.
7337
7338
7339
7340
7341
7342<hr><h3><a name="luaL_optinteger"><code>luaL_optinteger</code></a></h3><p>
7343<span class="apii">[-0, +0, <em>v</em>]</span>
7344<pre>lua_Integer luaL_optinteger (lua_State *L,
7345                             int arg,
7346                             lua_Integer d);</pre>
7347
7348<p>
7349If the function argument <code>arg</code> is an integer
7350(or it is convertible to an integer),
7351returns this integer.
7352If this argument is absent or is <b>nil</b>,
7353returns <code>d</code>.
7354Otherwise, raises an error.
7355
7356
7357
7358
7359
7360<hr><h3><a name="luaL_optlstring"><code>luaL_optlstring</code></a></h3><p>
7361<span class="apii">[-0, +0, <em>v</em>]</span>
7362<pre>const char *luaL_optlstring (lua_State *L,
7363                             int arg,
7364                             const char *d,
7365                             size_t *l);</pre>
7366
7367<p>
7368If the function argument <code>arg</code> is a string,
7369returns this string.
7370If this argument is absent or is <b>nil</b>,
7371returns <code>d</code>.
7372Otherwise, raises an error.
7373
7374
7375<p>
7376If <code>l</code> is not <code>NULL</code>,
7377fills its referent with the result's length.
7378If the result is <code>NULL</code>
7379(only possible when returning <code>d</code> and <code>d == NULL</code>),
7380its length is considered zero.
7381
7382
7383<p>
7384This function uses <a href="#lua_tolstring"><code>lua_tolstring</code></a> to get its result,
7385so all conversions and caveats of that function apply here.
7386
7387
7388
7389
7390
7391<hr><h3><a name="luaL_optnumber"><code>luaL_optnumber</code></a></h3><p>
7392<span class="apii">[-0, +0, <em>v</em>]</span>
7393<pre>lua_Number luaL_optnumber (lua_State *L, int arg, lua_Number d);</pre>
7394
7395<p>
7396If the function argument <code>arg</code> is a number,
7397returns this number as a <code>lua_Number</code>.
7398If this argument is absent or is <b>nil</b>,
7399returns <code>d</code>.
7400Otherwise, raises an error.
7401
7402
7403
7404
7405
7406<hr><h3><a name="luaL_optstring"><code>luaL_optstring</code></a></h3><p>
7407<span class="apii">[-0, +0, <em>v</em>]</span>
7408<pre>const char *luaL_optstring (lua_State *L,
7409                            int arg,
7410                            const char *d);</pre>
7411
7412<p>
7413If the function argument <code>arg</code> is a string,
7414returns this string.
7415If this argument is absent or is <b>nil</b>,
7416returns <code>d</code>.
7417Otherwise, raises an error.
7418
7419
7420
7421
7422
7423<hr><h3><a name="luaL_prepbuffer"><code>luaL_prepbuffer</code></a></h3><p>
7424<span class="apii">[-?, +?, <em>m</em>]</span>
7425<pre>char *luaL_prepbuffer (luaL_Buffer *B);</pre>
7426
7427<p>
7428Equivalent to <a href="#luaL_prepbuffsize"><code>luaL_prepbuffsize</code></a>
7429with the predefined size <a name="pdf-LUAL_BUFFERSIZE"><code>LUAL_BUFFERSIZE</code></a>.
7430
7431
7432
7433
7434
7435<hr><h3><a name="luaL_prepbuffsize"><code>luaL_prepbuffsize</code></a></h3><p>
7436<span class="apii">[-?, +?, <em>m</em>]</span>
7437<pre>char *luaL_prepbuffsize (luaL_Buffer *B, size_t sz);</pre>
7438
7439<p>
7440Returns an address to a space of size <code>sz</code>
7441where you can copy a string to be added to buffer <code>B</code>
7442(see <a href="#luaL_Buffer"><code>luaL_Buffer</code></a>).
7443After copying the string into this space you must call
7444<a href="#luaL_addsize"><code>luaL_addsize</code></a> with the size of the string to actually add
7445it to the buffer.
7446
7447
7448
7449
7450
7451<hr><h3><a name="luaL_pushfail"><code>luaL_pushfail</code></a></h3><p>
7452<span class="apii">[-0, +1, &ndash;]</span>
7453<pre>void luaL_pushfail (lua_State *L);</pre>
7454
7455<p>
7456Pushes the <b>fail</b> value onto the stack (see <a href="#6">&sect;6</a>).
7457
7458
7459
7460
7461
7462<hr><h3><a name="luaL_pushresult"><code>luaL_pushresult</code></a></h3><p>
7463<span class="apii">[-?, +1, <em>m</em>]</span>
7464<pre>void luaL_pushresult (luaL_Buffer *B);</pre>
7465
7466<p>
7467Finishes the use of buffer <code>B</code> leaving the final string on
7468the top of the stack.
7469
7470
7471
7472
7473
7474<hr><h3><a name="luaL_pushresultsize"><code>luaL_pushresultsize</code></a></h3><p>
7475<span class="apii">[-?, +1, <em>m</em>]</span>
7476<pre>void luaL_pushresultsize (luaL_Buffer *B, size_t sz);</pre>
7477
7478<p>
7479Equivalent to the sequence <a href="#luaL_addsize"><code>luaL_addsize</code></a>, <a href="#luaL_pushresult"><code>luaL_pushresult</code></a>.
7480
7481
7482
7483
7484
7485<hr><h3><a name="luaL_ref"><code>luaL_ref</code></a></h3><p>
7486<span class="apii">[-1, +0, <em>m</em>]</span>
7487<pre>int luaL_ref (lua_State *L, int t);</pre>
7488
7489<p>
7490Creates and returns a <em>reference</em>,
7491in the table at index <code>t</code>,
7492for the object on the top of the stack (and pops the object).
7493
7494
7495<p>
7496A reference is a unique integer key.
7497As long as you do not manually add integer keys into the table <code>t</code>,
7498<a href="#luaL_ref"><code>luaL_ref</code></a> ensures the uniqueness of the key it returns.
7499You can retrieve an object referred by the reference <code>r</code>
7500by calling <code>lua_rawgeti(L, t, r)</code>.
7501The function <a href="#luaL_unref"><code>luaL_unref</code></a> frees a reference.
7502
7503
7504<p>
7505If the object on the top of the stack is <b>nil</b>,
7506<a href="#luaL_ref"><code>luaL_ref</code></a> returns the constant <a name="pdf-LUA_REFNIL"><code>LUA_REFNIL</code></a>.
7507The constant <a name="pdf-LUA_NOREF"><code>LUA_NOREF</code></a> is guaranteed to be different
7508from any reference returned by <a href="#luaL_ref"><code>luaL_ref</code></a>.
7509
7510
7511
7512
7513
7514<hr><h3><a name="luaL_Reg"><code>luaL_Reg</code></a></h3>
7515<pre>typedef struct luaL_Reg {
7516  const char *name;
7517  lua_CFunction func;
7518} luaL_Reg;</pre>
7519
7520<p>
7521Type for arrays of functions to be registered by
7522<a href="#luaL_setfuncs"><code>luaL_setfuncs</code></a>.
7523<code>name</code> is the function name and <code>func</code> is a pointer to
7524the function.
7525Any array of <a href="#luaL_Reg"><code>luaL_Reg</code></a> must end with a sentinel entry
7526in which both <code>name</code> and <code>func</code> are <code>NULL</code>.
7527
7528
7529
7530
7531
7532<hr><h3><a name="luaL_requiref"><code>luaL_requiref</code></a></h3><p>
7533<span class="apii">[-0, +1, <em>e</em>]</span>
7534<pre>void luaL_requiref (lua_State *L, const char *modname,
7535                    lua_CFunction openf, int glb);</pre>
7536
7537<p>
7538If <code>package.loaded[modname]</code> is not true,
7539calls the function <code>openf</code> with the string <code>modname</code> as an argument
7540and sets the call result to <code>package.loaded[modname]</code>,
7541as if that function has been called through <a href="#pdf-require"><code>require</code></a>.
7542
7543
7544<p>
7545If <code>glb</code> is true,
7546also stores the module into the global <code>modname</code>.
7547
7548
7549<p>
7550Leaves a copy of the module on the stack.
7551
7552
7553
7554
7555
7556<hr><h3><a name="luaL_setfuncs"><code>luaL_setfuncs</code></a></h3><p>
7557<span class="apii">[-nup, +0, <em>m</em>]</span>
7558<pre>void luaL_setfuncs (lua_State *L, const luaL_Reg *l, int nup);</pre>
7559
7560<p>
7561Registers all functions in the array <code>l</code>
7562(see <a href="#luaL_Reg"><code>luaL_Reg</code></a>) into the table on the top of the stack
7563(below optional upvalues, see next).
7564
7565
7566<p>
7567When <code>nup</code> is not zero,
7568all functions are created with <code>nup</code> upvalues,
7569initialized with copies of the <code>nup</code> values
7570previously pushed on the stack
7571on top of the library table.
7572These values are popped from the stack after the registration.
7573
7574
7575<p>
7576A function with a <code>NULL</code> value represents a placeholder,
7577which is filled with <b>false</b>.
7578
7579
7580
7581
7582
7583<hr><h3><a name="luaL_setmetatable"><code>luaL_setmetatable</code></a></h3><p>
7584<span class="apii">[-0, +0, &ndash;]</span>
7585<pre>void luaL_setmetatable (lua_State *L, const char *tname);</pre>
7586
7587<p>
7588Sets the metatable of the object on the top of the stack
7589as the metatable associated with name <code>tname</code>
7590in the registry (see <a href="#luaL_newmetatable"><code>luaL_newmetatable</code></a>).
7591
7592
7593
7594
7595
7596<hr><h3><a name="luaL_Stream"><code>luaL_Stream</code></a></h3>
7597<pre>typedef struct luaL_Stream {
7598  FILE *f;
7599  lua_CFunction closef;
7600} luaL_Stream;</pre>
7601
7602<p>
7603The standard representation for file handles
7604used by the standard I/O library.
7605
7606
7607<p>
7608A file handle is implemented as a full userdata,
7609with a metatable called <code>LUA_FILEHANDLE</code>
7610(where <code>LUA_FILEHANDLE</code> is a macro with the actual metatable's name).
7611The metatable is created by the I/O library
7612(see <a href="#luaL_newmetatable"><code>luaL_newmetatable</code></a>).
7613
7614
7615<p>
7616This userdata must start with the structure <code>luaL_Stream</code>;
7617it can contain other data after this initial structure.
7618The field <code>f</code> points to the corresponding C stream
7619(or it can be <code>NULL</code> to indicate an incompletely created handle).
7620The field <code>closef</code> points to a Lua function
7621that will be called to close the stream
7622when the handle is closed or collected;
7623this function receives the file handle as its sole argument and
7624must return either a true value, in case of success,
7625or a false value plus an error message, in case of error.
7626Once Lua calls this field,
7627it changes the field value to <code>NULL</code>
7628to signal that the handle is closed.
7629
7630
7631
7632
7633
7634<hr><h3><a name="luaL_testudata"><code>luaL_testudata</code></a></h3><p>
7635<span class="apii">[-0, +0, <em>m</em>]</span>
7636<pre>void *luaL_testudata (lua_State *L, int arg, const char *tname);</pre>
7637
7638<p>
7639This function works like <a href="#luaL_checkudata"><code>luaL_checkudata</code></a>,
7640except that, when the test fails,
7641it returns <code>NULL</code> instead of raising an error.
7642
7643
7644
7645
7646
7647<hr><h3><a name="luaL_tolstring"><code>luaL_tolstring</code></a></h3><p>
7648<span class="apii">[-0, +1, <em>e</em>]</span>
7649<pre>const char *luaL_tolstring (lua_State *L, int idx, size_t *len);</pre>
7650
7651<p>
7652Converts any Lua value at the given index to a C&nbsp;string
7653in a reasonable format.
7654The resulting string is pushed onto the stack and also
7655returned by the function (see <a href="#4.1.3">&sect;4.1.3</a>).
7656If <code>len</code> is not <code>NULL</code>,
7657the function also sets <code>*len</code> with the string length.
7658
7659
7660<p>
7661If the value has a metatable with a <code>__tostring</code> field,
7662then <code>luaL_tolstring</code> calls the corresponding metamethod
7663with the value as argument,
7664and uses the result of the call as its result.
7665
7666
7667
7668
7669
7670<hr><h3><a name="luaL_traceback"><code>luaL_traceback</code></a></h3><p>
7671<span class="apii">[-0, +1, <em>m</em>]</span>
7672<pre>void luaL_traceback (lua_State *L, lua_State *L1, const char *msg,
7673                     int level);</pre>
7674
7675<p>
7676Creates and pushes a traceback of the stack <code>L1</code>.
7677If <code>msg</code> is not <code>NULL</code>, it is appended
7678at the beginning of the traceback.
7679The <code>level</code> parameter tells at which level
7680to start the traceback.
7681
7682
7683
7684
7685
7686<hr><h3><a name="luaL_typeerror"><code>luaL_typeerror</code></a></h3><p>
7687<span class="apii">[-0, +0, <em>v</em>]</span>
7688<pre>const char *luaL_typeerror (lua_State *L,
7689                                      int arg,
7690                                      const char *tname);</pre>
7691
7692<p>
7693Raises a type error for the argument <code>arg</code>
7694of the C&nbsp;function that called it,
7695using a standard message;
7696<code>tname</code> is a "name" for the expected type.
7697This function never returns.
7698
7699
7700
7701
7702
7703<hr><h3><a name="luaL_typename"><code>luaL_typename</code></a></h3><p>
7704<span class="apii">[-0, +0, &ndash;]</span>
7705<pre>const char *luaL_typename (lua_State *L, int index);</pre>
7706
7707<p>
7708Returns the name of the type of the value at the given index.
7709
7710
7711
7712
7713
7714<hr><h3><a name="luaL_unref"><code>luaL_unref</code></a></h3><p>
7715<span class="apii">[-0, +0, &ndash;]</span>
7716<pre>void luaL_unref (lua_State *L, int t, int ref);</pre>
7717
7718<p>
7719Releases the reference <code>ref</code> from the table at index <code>t</code>
7720(see <a href="#luaL_ref"><code>luaL_ref</code></a>).
7721The entry is removed from the table,
7722so that the referred object can be collected.
7723The reference <code>ref</code> is also freed to be used again.
7724
7725
7726<p>
7727If <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>,
7728<a href="#luaL_unref"><code>luaL_unref</code></a> does nothing.
7729
7730
7731
7732
7733
7734<hr><h3><a name="luaL_where"><code>luaL_where</code></a></h3><p>
7735<span class="apii">[-0, +1, <em>m</em>]</span>
7736<pre>void luaL_where (lua_State *L, int lvl);</pre>
7737
7738<p>
7739Pushes onto the stack a string identifying the current position
7740of the control at level <code>lvl</code> in the call stack.
7741Typically this string has the following format:
7742
7743<pre>
7744     <em>chunkname</em>:<em>currentline</em>:
7745</pre><p>
7746Level&nbsp;0 is the running function,
7747level&nbsp;1 is the function that called the running function,
7748etc.
7749
7750
7751<p>
7752This function is used to build a prefix for error messages.
7753
7754
7755
7756
7757
7758
7759
7760<h1>6 &ndash; <a name="6">The Standard Libraries</a></h1>
7761
7762
7763
7764<p>
7765The standard Lua libraries provide useful functions
7766that are implemented in&nbsp;C through the C&nbsp;API.
7767Some of these functions provide essential services to the language
7768(e.g., <a href="#pdf-type"><code>type</code></a> and <a href="#pdf-getmetatable"><code>getmetatable</code></a>);
7769others provide access to outside services (e.g., I/O);
7770and others could be implemented in Lua itself,
7771but that for different reasons
7772deserve an implementation in C (e.g., <a href="#pdf-table.sort"><code>table.sort</code></a>).
7773
7774
7775<p>
7776All libraries are implemented through the official C&nbsp;API
7777and are provided as separate C&nbsp;modules.
7778Unless otherwise noted,
7779these library functions do not adjust its number of arguments
7780to its expected parameters.
7781For instance, a function documented as <code>foo(arg)</code>
7782should not be called without an argument.
7783
7784
7785<p>
7786The notation <b>fail</b> means a false value representing
7787some kind of failure.
7788(Currently, <b>fail</b> is equal to <b>nil</b>,
7789but that may change in future versions.
7790The recommendation is to always test the success of these functions
7791with <code>(not status)</code>, instead of <code>(status == nil)</code>.)
7792
7793
7794<p>
7795Currently, Lua has the following standard libraries:
7796
7797<ul>
7798
7799<li>basic library (<a href="#6.1">&sect;6.1</a>);</li>
7800
7801<li>coroutine library (<a href="#6.2">&sect;6.2</a>);</li>
7802
7803<li>package library (<a href="#6.3">&sect;6.3</a>);</li>
7804
7805<li>string manipulation (<a href="#6.4">&sect;6.4</a>);</li>
7806
7807<li>basic UTF-8 support (<a href="#6.5">&sect;6.5</a>);</li>
7808
7809<li>table manipulation (<a href="#6.6">&sect;6.6</a>);</li>
7810
7811<li>mathematical functions (<a href="#6.7">&sect;6.7</a>) (sin, log, etc.);</li>
7812
7813<li>input and output (<a href="#6.8">&sect;6.8</a>);</li>
7814
7815<li>operating system facilities (<a href="#6.9">&sect;6.9</a>);</li>
7816
7817<li>debug facilities (<a href="#6.10">&sect;6.10</a>).</li>
7818
7819</ul><p>
7820Except for the basic and the package libraries,
7821each library provides all its functions as fields of a global table
7822or as methods of its objects.
7823
7824
7825<p>
7826To have access to these libraries,
7827the C&nbsp;host program should call the <a href="#luaL_openlibs"><code>luaL_openlibs</code></a> function,
7828which opens all standard libraries.
7829Alternatively,
7830the host program can open them individually by using
7831<a href="#luaL_requiref"><code>luaL_requiref</code></a> to call
7832<a name="pdf-luaopen_base"><code>luaopen_base</code></a> (for the basic library),
7833<a name="pdf-luaopen_package"><code>luaopen_package</code></a> (for the package library),
7834<a name="pdf-luaopen_coroutine"><code>luaopen_coroutine</code></a> (for the coroutine library),
7835<a name="pdf-luaopen_string"><code>luaopen_string</code></a> (for the string library),
7836<a name="pdf-luaopen_utf8"><code>luaopen_utf8</code></a> (for the UTF-8 library),
7837<a name="pdf-luaopen_table"><code>luaopen_table</code></a> (for the table library),
7838<a name="pdf-luaopen_math"><code>luaopen_math</code></a> (for the mathematical library),
7839<a name="pdf-luaopen_io"><code>luaopen_io</code></a> (for the I/O library),
7840<a name="pdf-luaopen_os"><code>luaopen_os</code></a> (for the operating system library),
7841and <a name="pdf-luaopen_debug"><code>luaopen_debug</code></a> (for the debug library).
7842These functions are declared in <a name="pdf-lualib.h"><code>lualib.h</code></a>.
7843
7844
7845
7846
7847
7848<h2>6.1 &ndash; <a name="6.1">Basic Functions</a></h2>
7849
7850<p>
7851The basic library provides core functions to Lua.
7852If you do not include this library in your application,
7853you should check carefully whether you need to provide
7854implementations for some of its facilities.
7855
7856
7857<p>
7858<hr><h3><a name="pdf-assert"><code>assert (v [, message])</code></a></h3>
7859
7860
7861<p>
7862Raises an error if
7863the value of its argument <code>v</code> is false (i.e., <b>nil</b> or <b>false</b>);
7864otherwise, returns all its arguments.
7865In case of error,
7866<code>message</code> is the error object;
7867when absent, it defaults to "<code>assertion failed!</code>"
7868
7869
7870
7871
7872<p>
7873<hr><h3><a name="pdf-collectgarbage"><code>collectgarbage ([opt [, arg]])</code></a></h3>
7874
7875
7876<p>
7877This function is a generic interface to the garbage collector.
7878It performs different functions according to its first argument, <code>opt</code>:
7879
7880<ul>
7881
7882<li><b>"<code>collect</code>": </b>
7883Performs a full garbage-collection cycle.
7884This is the default option.
7885</li>
7886
7887<li><b>"<code>stop</code>": </b>
7888Stops automatic execution of the garbage collector.
7889The collector will run only when explicitly invoked,
7890until a call to restart it.
7891</li>
7892
7893<li><b>"<code>restart</code>": </b>
7894Restarts automatic execution of the garbage collector.
7895</li>
7896
7897<li><b>"<code>count</code>": </b>
7898Returns the total memory in use by Lua in Kbytes.
7899The value has a fractional part,
7900so that it multiplied by 1024
7901gives the exact number of bytes in use by Lua.
7902</li>
7903
7904<li><b>"<code>step</code>": </b>
7905Performs a garbage-collection step.
7906The step "size" is controlled by <code>arg</code>.
7907With a zero value,
7908the collector will perform one basic (indivisible) step.
7909For non-zero values,
7910the collector will perform as if that amount of memory
7911(in Kbytes) had been allocated by Lua.
7912Returns <b>true</b> if the step finished a collection cycle.
7913</li>
7914
7915<li><b>"<code>isrunning</code>": </b>
7916Returns a boolean that tells whether the collector is running
7917(i.e., not stopped).
7918</li>
7919
7920<li><b>"<code>incremental</code>": </b>
7921Change the collector mode to incremental.
7922This option can be followed by three numbers:
7923the garbage-collector pause,
7924the step multiplier,
7925and the step size (see <a href="#2.5.1">&sect;2.5.1</a>).
7926A zero means to not change that value.
7927</li>
7928
7929<li><b>"<code>generational</code>": </b>
7930Change the collector mode to generational.
7931This option can be followed by two numbers:
7932the garbage-collector minor multiplier
7933and the major multiplier (see <a href="#2.5.2">&sect;2.5.2</a>).
7934A zero means to not change that value.
7935</li>
7936
7937</ul><p>
7938See <a href="#2.5">&sect;2.5</a> for more details about garbage collection
7939and some of these options.
7940
7941
7942<p>
7943This function should not be called by a finalizer.
7944
7945
7946
7947
7948<p>
7949<hr><h3><a name="pdf-dofile"><code>dofile ([filename])</code></a></h3>
7950Opens the named file and executes its content as a Lua chunk.
7951When called without arguments,
7952<code>dofile</code> executes the content of the standard input (<code>stdin</code>).
7953Returns all values returned by the chunk.
7954In case of errors, <code>dofile</code> propagates the error
7955to its caller.
7956(That is, <code>dofile</code> does not run in protected mode.)
7957
7958
7959
7960
7961<p>
7962<hr><h3><a name="pdf-error"><code>error (message [, level])</code></a></h3>
7963Raises an error (see <a href="#2.3">&sect;2.3</a>) with <code>message</code> as the error object.
7964This function never returns.
7965
7966
7967<p>
7968Usually, <code>error</code> adds some information about the error position
7969at the beginning of the message, if the message is a string.
7970The <code>level</code> argument specifies how to get the error position.
7971With level&nbsp;1 (the default), the error position is where the
7972<code>error</code> function was called.
7973Level&nbsp;2 points the error to where the function
7974that called <code>error</code> was called; and so on.
7975Passing a level&nbsp;0 avoids the addition of error position information
7976to the message.
7977
7978
7979
7980
7981<p>
7982<hr><h3><a name="pdf-_G"><code>_G</code></a></h3>
7983A global variable (not a function) that
7984holds the global environment (see <a href="#2.2">&sect;2.2</a>).
7985Lua itself does not use this variable;
7986changing its value does not affect any environment,
7987nor vice versa.
7988
7989
7990
7991
7992<p>
7993<hr><h3><a name="pdf-getmetatable"><code>getmetatable (object)</code></a></h3>
7994
7995
7996<p>
7997If <code>object</code> does not have a metatable, returns <b>nil</b>.
7998Otherwise,
7999if the object's metatable has a <code>__metatable</code> field,
8000returns the associated value.
8001Otherwise, returns the metatable of the given object.
8002
8003
8004
8005
8006<p>
8007<hr><h3><a name="pdf-ipairs"><code>ipairs (t)</code></a></h3>
8008
8009
8010<p>
8011Returns three values (an iterator function, the table <code>t</code>, and 0)
8012so that the construction
8013
8014<pre>
8015     for i,v in ipairs(t) do <em>body</em> end
8016</pre><p>
8017will iterate over the key&ndash;value pairs
8018(<code>1,t[1]</code>), (<code>2,t[2]</code>), ...,
8019up to the first absent index.
8020
8021
8022
8023
8024<p>
8025<hr><h3><a name="pdf-load"><code>load (chunk [, chunkname [, mode [, env]]])</code></a></h3>
8026
8027
8028<p>
8029Loads a chunk.
8030
8031
8032<p>
8033If <code>chunk</code> is a string, the chunk is this string.
8034If <code>chunk</code> is a function,
8035<code>load</code> calls it repeatedly to get the chunk pieces.
8036Each call to <code>chunk</code> must return a string that concatenates
8037with previous results.
8038A return of an empty string, <b>nil</b>, or no value signals the end of the chunk.
8039
8040
8041<p>
8042If there are no syntactic errors,
8043<code>load</code> returns the compiled chunk as a function;
8044otherwise, it returns <b>fail</b> plus the error message.
8045
8046
8047<p>
8048When you load a main chunk,
8049the resulting function will always have exactly one upvalue,
8050the <code>_ENV</code> variable (see <a href="#2.2">&sect;2.2</a>).
8051However,
8052when you load a binary chunk created from a function (see <a href="#pdf-string.dump"><code>string.dump</code></a>),
8053the resulting function can have an arbitrary number of upvalues,
8054and there is no guarantee that its first upvalue will be
8055the <code>_ENV</code> variable.
8056(A non-main function may not even have an <code>_ENV</code> upvalue.)
8057
8058
8059<p>
8060Regardless, if the resulting function has any upvalues,
8061its first upvalue is set to the value of <code>env</code>,
8062if that parameter is given,
8063or to the value of the global environment.
8064Other upvalues are initialized with <b>nil</b>.
8065All upvalues are fresh, that is,
8066they are not shared with any other function.
8067
8068
8069<p>
8070<code>chunkname</code> is used as the name of the chunk for error messages
8071and debug information (see <a href="#4.7">&sect;4.7</a>).
8072When absent,
8073it defaults to <code>chunk</code>, if <code>chunk</code> is a string,
8074or to "<code>=(load)</code>" otherwise.
8075
8076
8077<p>
8078The string <code>mode</code> controls whether the chunk can be text or binary
8079(that is, a precompiled chunk).
8080It may be the string "<code>b</code>" (only binary chunks),
8081"<code>t</code>" (only text chunks),
8082or "<code>bt</code>" (both binary and text).
8083The default is "<code>bt</code>".
8084
8085
8086<p>
8087It is safe to load malformed binary chunks;
8088<code>load</code> signals an appropriate error.
8089However,
8090Lua does not check the consistency of the code inside binary chunks;
8091running maliciously crafted bytecode can crash the interpreter.
8092
8093
8094
8095
8096<p>
8097<hr><h3><a name="pdf-loadfile"><code>loadfile ([filename [, mode [, env]]])</code></a></h3>
8098
8099
8100<p>
8101Similar to <a href="#pdf-load"><code>load</code></a>,
8102but gets the chunk from file <code>filename</code>
8103or from the standard input,
8104if no file name is given.
8105
8106
8107
8108
8109<p>
8110<hr><h3><a name="pdf-next"><code>next (table [, index])</code></a></h3>
8111
8112
8113<p>
8114Allows a program to traverse all fields of a table.
8115Its first argument is a table and its second argument
8116is an index in this table.
8117A call to <code>next</code> returns the next index of the table
8118and its associated value.
8119When called with <b>nil</b> as its second argument,
8120<code>next</code> returns an initial index
8121and its associated value.
8122When called with the last index,
8123or with <b>nil</b> in an empty table,
8124<code>next</code> returns <b>nil</b>.
8125If the second argument is absent, then it is interpreted as <b>nil</b>.
8126In particular,
8127you can use <code>next(t)</code> to check whether a table is empty.
8128
8129
8130<p>
8131The order in which the indices are enumerated is not specified,
8132<em>even for numeric indices</em>.
8133(To traverse a table in numerical order,
8134use a numerical <b>for</b>.)
8135
8136
8137<p>
8138You should not assign any value to a non-existent field in a table
8139during its traversal.
8140You may however modify existing fields.
8141In particular, you may set existing fields to nil.
8142
8143
8144
8145
8146<p>
8147<hr><h3><a name="pdf-pairs"><code>pairs (t)</code></a></h3>
8148
8149
8150<p>
8151If <code>t</code> has a metamethod <code>__pairs</code>,
8152calls it with <code>t</code> as argument and returns the first three
8153results from the call.
8154
8155
8156<p>
8157Otherwise,
8158returns three values: the <a href="#pdf-next"><code>next</code></a> function, the table <code>t</code>, and <b>nil</b>,
8159so that the construction
8160
8161<pre>
8162     for k,v in pairs(t) do <em>body</em> end
8163</pre><p>
8164will iterate over all key&ndash;value pairs of table <code>t</code>.
8165
8166
8167<p>
8168See function <a href="#pdf-next"><code>next</code></a> for the caveats of modifying
8169the table during its traversal.
8170
8171
8172
8173
8174<p>
8175<hr><h3><a name="pdf-pcall"><code>pcall (f [, arg1, &middot;&middot;&middot;])</code></a></h3>
8176
8177
8178<p>
8179Calls the function <code>f</code> with
8180the given arguments in <em>protected mode</em>.
8181This means that any error inside&nbsp;<code>f</code> is not propagated;
8182instead, <code>pcall</code> catches the error
8183and returns a status code.
8184Its first result is the status code (a boolean),
8185which is <b>true</b> if the call succeeds without errors.
8186In such case, <code>pcall</code> also returns all results from the call,
8187after this first result.
8188In case of any error, <code>pcall</code> returns <b>false</b> plus the error object.
8189Note that errors caught by <code>pcall</code> do not call a message handler.
8190
8191
8192
8193
8194<p>
8195<hr><h3><a name="pdf-print"><code>print (&middot;&middot;&middot;)</code></a></h3>
8196Receives any number of arguments
8197and prints their values to <code>stdout</code>,
8198converting each argument to a string
8199following the same rules of <a href="#pdf-tostring"><code>tostring</code></a>.
8200
8201
8202<p>
8203The function <code>print</code> is not intended for formatted output,
8204but only as a quick way to show a value,
8205for instance for debugging.
8206For complete control over the output,
8207use <a href="#pdf-string.format"><code>string.format</code></a> and <a href="#pdf-io.write"><code>io.write</code></a>.
8208
8209
8210
8211
8212<p>
8213<hr><h3><a name="pdf-rawequal"><code>rawequal (v1, v2)</code></a></h3>
8214Checks whether <code>v1</code> is equal to <code>v2</code>,
8215without invoking the <code>__eq</code> metamethod.
8216Returns a boolean.
8217
8218
8219
8220
8221<p>
8222<hr><h3><a name="pdf-rawget"><code>rawget (table, index)</code></a></h3>
8223Gets the real value of <code>table[index]</code>,
8224without using the <code>__index</code> metavalue.
8225<code>table</code> must be a table;
8226<code>index</code> may be any value.
8227
8228
8229
8230
8231<p>
8232<hr><h3><a name="pdf-rawlen"><code>rawlen (v)</code></a></h3>
8233Returns the length of the object <code>v</code>,
8234which must be a table or a string,
8235without invoking the <code>__len</code> metamethod.
8236Returns an integer.
8237
8238
8239
8240
8241<p>
8242<hr><h3><a name="pdf-rawset"><code>rawset (table, index, value)</code></a></h3>
8243Sets the real value of <code>table[index]</code> to <code>value</code>,
8244without using the <code>__newindex</code> metavalue.
8245<code>table</code> must be a table,
8246<code>index</code> any value different from <b>nil</b> and NaN,
8247and <code>value</code> any Lua value.
8248
8249
8250<p>
8251This function returns <code>table</code>.
8252
8253
8254
8255
8256<p>
8257<hr><h3><a name="pdf-select"><code>select (index, &middot;&middot;&middot;)</code></a></h3>
8258
8259
8260<p>
8261If <code>index</code> is a number,
8262returns all arguments after argument number <code>index</code>;
8263a negative number indexes from the end (-1 is the last argument).
8264Otherwise, <code>index</code> must be the string <code>"#"</code>,
8265and <code>select</code> returns the total number of extra arguments it received.
8266
8267
8268
8269
8270<p>
8271<hr><h3><a name="pdf-setmetatable"><code>setmetatable (table, metatable)</code></a></h3>
8272
8273
8274<p>
8275Sets the metatable for the given table.
8276If <code>metatable</code> is <b>nil</b>,
8277removes the metatable of the given table.
8278If the original metatable has a <code>__metatable</code> field,
8279raises an error.
8280
8281
8282<p>
8283This function returns <code>table</code>.
8284
8285
8286<p>
8287To change the metatable of other types from Lua code,
8288you must use the debug library (<a href="#6.10">&sect;6.10</a>).
8289
8290
8291
8292
8293<p>
8294<hr><h3><a name="pdf-tonumber"><code>tonumber (e [, base])</code></a></h3>
8295
8296
8297<p>
8298When called with no <code>base</code>,
8299<code>tonumber</code> tries to convert its argument to a number.
8300If the argument is already a number or
8301a string convertible to a number,
8302then <code>tonumber</code> returns this number;
8303otherwise, it returns <b>fail</b>.
8304
8305
8306<p>
8307The conversion of strings can result in integers or floats,
8308according to the lexical conventions of Lua (see <a href="#3.1">&sect;3.1</a>).
8309The string may have leading and trailing spaces and a sign.
8310
8311
8312<p>
8313When called with <code>base</code>,
8314then <code>e</code> must be a string to be interpreted as
8315an integer numeral in that base.
8316The base may be any integer between 2 and 36, inclusive.
8317In bases above&nbsp;10, the letter '<code>A</code>' (in either upper or lower case)
8318represents&nbsp;10, '<code>B</code>' represents&nbsp;11, and so forth,
8319with '<code>Z</code>' representing 35.
8320If the string <code>e</code> is not a valid numeral in the given base,
8321the function returns <b>fail</b>.
8322
8323
8324
8325
8326<p>
8327<hr><h3><a name="pdf-tostring"><code>tostring (v)</code></a></h3>
8328
8329
8330<p>
8331Receives a value of any type and
8332converts it to a string in a human-readable format.
8333
8334
8335<p>
8336If the metatable of <code>v</code> has a <code>__tostring</code> field,
8337then <code>tostring</code> calls the corresponding value
8338with <code>v</code> as argument,
8339and uses the result of the call as its result.
8340Otherwise, if the metatable of <code>v</code> has a <code>__name</code> field
8341with a string value,
8342<code>tostring</code> may use that string in its final result.
8343
8344
8345<p>
8346For complete control of how numbers are converted,
8347use <a href="#pdf-string.format"><code>string.format</code></a>.
8348
8349
8350
8351
8352<p>
8353<hr><h3><a name="pdf-type"><code>type (v)</code></a></h3>
8354
8355
8356<p>
8357Returns the type of its only argument, coded as a string.
8358The possible results of this function are
8359"<code>nil</code>" (a string, not the value <b>nil</b>),
8360"<code>number</code>",
8361"<code>string</code>",
8362"<code>boolean</code>",
8363"<code>table</code>",
8364"<code>function</code>",
8365"<code>thread</code>",
8366and "<code>userdata</code>".
8367
8368
8369
8370
8371<p>
8372<hr><h3><a name="pdf-_VERSION"><code>_VERSION</code></a></h3>
8373
8374
8375<p>
8376A global variable (not a function) that
8377holds a string containing the running Lua version.
8378The current value of this variable is "<code>Lua 5.4</code>".
8379
8380
8381
8382
8383<p>
8384<hr><h3><a name="pdf-warn"><code>warn (msg1, &middot;&middot;&middot;)</code></a></h3>
8385
8386
8387<p>
8388Emits a warning with a message composed by the concatenation
8389of all its arguments (which should be strings).
8390
8391
8392<p>
8393By convention,
8394a one-piece message starting with '<code>@</code>'
8395is intended to be a <em>control message</em>,
8396which is a message to the warning system itself.
8397In particular, the standard warning function in Lua
8398recognizes the control messages "<code>@off</code>",
8399to stop the emission of warnings,
8400and "<code>@on</code>", to (re)start the emission;
8401it ignores unknown control messages.
8402
8403
8404
8405
8406<p>
8407<hr><h3><a name="pdf-xpcall"><code>xpcall (f, msgh [, arg1, &middot;&middot;&middot;])</code></a></h3>
8408
8409
8410<p>
8411This function is similar to <a href="#pdf-pcall"><code>pcall</code></a>,
8412except that it sets a new message handler <code>msgh</code>.
8413
8414
8415
8416
8417
8418
8419
8420<h2>6.2 &ndash; <a name="6.2">Coroutine Manipulation</a></h2>
8421
8422<p>
8423This library comprises the operations to manipulate coroutines,
8424which come inside the table <a name="pdf-coroutine"><code>coroutine</code></a>.
8425See <a href="#2.6">&sect;2.6</a> for a general description of coroutines.
8426
8427
8428<p>
8429<hr><h3><a name="pdf-coroutine.close"><code>coroutine.close (co)</code></a></h3>
8430
8431
8432<p>
8433Closes coroutine <code>co</code>,
8434that is,
8435closes all its pending to-be-closed variables
8436and puts the coroutine in a dead state.
8437The given coroutine must be dead or suspended.
8438In case of error
8439(either the original error that stopped the coroutine or
8440errors in closing methods),
8441returns <b>false</b> plus the error object;
8442otherwise returns <b>true</b>.
8443
8444
8445
8446
8447<p>
8448<hr><h3><a name="pdf-coroutine.create"><code>coroutine.create (f)</code></a></h3>
8449
8450
8451<p>
8452Creates a new coroutine, with body <code>f</code>.
8453<code>f</code> must be a function.
8454Returns this new coroutine,
8455an object with type <code>"thread"</code>.
8456
8457
8458
8459
8460<p>
8461<hr><h3><a name="pdf-coroutine.isyieldable"><code>coroutine.isyieldable ([co])</code></a></h3>
8462
8463
8464<p>
8465Returns <b>true</b> when the coroutine <code>co</code> can yield.
8466The default for <code>co</code> is the running coroutine.
8467
8468
8469<p>
8470A coroutine is yieldable if it is not the main thread and
8471it is not inside a non-yieldable C&nbsp;function.
8472
8473
8474
8475
8476<p>
8477<hr><h3><a name="pdf-coroutine.resume"><code>coroutine.resume (co [, val1, &middot;&middot;&middot;])</code></a></h3>
8478
8479
8480<p>
8481Starts or continues the execution of coroutine <code>co</code>.
8482The first time you resume a coroutine,
8483it starts running its body.
8484The values <code>val1</code>, ... are passed
8485as the arguments to the body function.
8486If the coroutine has yielded,
8487<code>resume</code> restarts it;
8488the values <code>val1</code>, ... are passed
8489as the results from the yield.
8490
8491
8492<p>
8493If the coroutine runs without any errors,
8494<code>resume</code> returns <b>true</b> plus any values passed to <code>yield</code>
8495(when the coroutine yields) or any values returned by the body function
8496(when the coroutine terminates).
8497If there is any error,
8498<code>resume</code> returns <b>false</b> plus the error message.
8499
8500
8501
8502
8503<p>
8504<hr><h3><a name="pdf-coroutine.running"><code>coroutine.running ()</code></a></h3>
8505
8506
8507<p>
8508Returns the running coroutine plus a boolean,
8509<b>true</b> when the running coroutine is the main one.
8510
8511
8512
8513
8514<p>
8515<hr><h3><a name="pdf-coroutine.status"><code>coroutine.status (co)</code></a></h3>
8516
8517
8518<p>
8519Returns the status of the coroutine <code>co</code>, as a string:
8520<code>"running"</code>,
8521if the coroutine is running
8522(that is, it is the one that called <code>status</code>);
8523<code>"suspended"</code>, if the coroutine is suspended in a call to <code>yield</code>,
8524or if it has not started running yet;
8525<code>"normal"</code> if the coroutine is active but not running
8526(that is, it has resumed another coroutine);
8527and <code>"dead"</code> if the coroutine has finished its body function,
8528or if it has stopped with an error.
8529
8530
8531
8532
8533<p>
8534<hr><h3><a name="pdf-coroutine.wrap"><code>coroutine.wrap (f)</code></a></h3>
8535
8536
8537<p>
8538Creates a new coroutine, with body <code>f</code>;
8539<code>f</code> must be a function.
8540Returns a function that resumes the coroutine each time it is called.
8541Any arguments passed to this function behave as the
8542extra arguments to <code>resume</code>.
8543The function returns the same values returned by <code>resume</code>,
8544except the first boolean.
8545In case of error,
8546the function closes the coroutine and propagates the error.
8547
8548
8549
8550
8551<p>
8552<hr><h3><a name="pdf-coroutine.yield"><code>coroutine.yield (&middot;&middot;&middot;)</code></a></h3>
8553
8554
8555<p>
8556Suspends the execution of the calling coroutine.
8557Any arguments to <code>yield</code> are passed as extra results to <code>resume</code>.
8558
8559
8560
8561
8562
8563
8564
8565<h2>6.3 &ndash; <a name="6.3">Modules</a></h2>
8566
8567<p>
8568The package library provides basic
8569facilities for loading modules in Lua.
8570It exports one function directly in the global environment:
8571<a href="#pdf-require"><code>require</code></a>.
8572Everything else is exported in the table <a name="pdf-package"><code>package</code></a>.
8573
8574
8575<p>
8576<hr><h3><a name="pdf-require"><code>require (modname)</code></a></h3>
8577
8578
8579<p>
8580Loads the given module.
8581The function starts by looking into the <a href="#pdf-package.loaded"><code>package.loaded</code></a> table
8582to determine whether <code>modname</code> is already loaded.
8583If it is, then <code>require</code> returns the value stored
8584at <code>package.loaded[modname]</code>.
8585(The absence of a second result in this case
8586signals that this call did not have to load the module.)
8587Otherwise, it tries to find a <em>loader</em> for the module.
8588
8589
8590<p>
8591To find a loader,
8592<code>require</code> is guided by the table <a href="#pdf-package.searchers"><code>package.searchers</code></a>.
8593Each item in this table is a search function,
8594that searches for the module in a particular way.
8595By changing this table,
8596we can change how <code>require</code> looks for a module.
8597The following explanation is based on the default configuration
8598for <a href="#pdf-package.searchers"><code>package.searchers</code></a>.
8599
8600
8601<p>
8602First <code>require</code> queries <code>package.preload[modname]</code>.
8603If it has a value,
8604this value (which must be a function) is the loader.
8605Otherwise <code>require</code> searches for a Lua loader using the
8606path stored in <a href="#pdf-package.path"><code>package.path</code></a>.
8607If that also fails, it searches for a C&nbsp;loader using the
8608path stored in <a href="#pdf-package.cpath"><code>package.cpath</code></a>.
8609If that also fails,
8610it tries an <em>all-in-one</em> loader (see <a href="#pdf-package.searchers"><code>package.searchers</code></a>).
8611
8612
8613<p>
8614Once a loader is found,
8615<code>require</code> calls the loader with two arguments:
8616<code>modname</code> and an extra value,
8617a <em>loader data</em>,
8618also returned by the searcher.
8619The loader data can be any value useful to the module;
8620for the default searchers,
8621it indicates where the loader was found.
8622(For instance, if the loader came from a file,
8623this extra value is the file path.)
8624If the loader returns any non-nil value,
8625<code>require</code> assigns the returned value to <code>package.loaded[modname]</code>.
8626If the loader does not return a non-nil value and
8627has not assigned any value to <code>package.loaded[modname]</code>,
8628then <code>require</code> assigns <b>true</b> to this entry.
8629In any case, <code>require</code> returns the
8630final value of <code>package.loaded[modname]</code>.
8631Besides that value, <code>require</code> also returns as a second result
8632the loader data returned by the searcher,
8633which indicates how <code>require</code> found the module.
8634
8635
8636<p>
8637If there is any error loading or running the module,
8638or if it cannot find any loader for the module,
8639then <code>require</code> raises an error.
8640
8641
8642
8643
8644<p>
8645<hr><h3><a name="pdf-package.config"><code>package.config</code></a></h3>
8646
8647
8648<p>
8649A string describing some compile-time configurations for packages.
8650This string is a sequence of lines:
8651
8652<ul>
8653
8654<li>The first line is the directory separator string.
8655Default is '<code>\</code>' for Windows and '<code>/</code>' for all other systems.</li>
8656
8657<li>The second line is the character that separates templates in a path.
8658Default is '<code>;</code>'.</li>
8659
8660<li>The third line is the string that marks the
8661substitution points in a template.
8662Default is '<code>?</code>'.</li>
8663
8664<li>The fourth line is a string that, in a path in Windows,
8665is replaced by the executable's directory.
8666Default is '<code>!</code>'.</li>
8667
8668<li>The fifth line is a mark to ignore all text after it
8669when building the <code>luaopen_</code> function name.
8670Default is '<code>-</code>'.</li>
8671
8672</ul>
8673
8674
8675
8676<p>
8677<hr><h3><a name="pdf-package.cpath"><code>package.cpath</code></a></h3>
8678
8679
8680<p>
8681A string with the path used by <a href="#pdf-require"><code>require</code></a>
8682to search for a C&nbsp;loader.
8683
8684
8685<p>
8686Lua initializes the C&nbsp;path <a href="#pdf-package.cpath"><code>package.cpath</code></a> in the same way
8687it initializes the Lua path <a href="#pdf-package.path"><code>package.path</code></a>,
8688using the environment variable <a name="pdf-LUA_CPATH_5_4"><code>LUA_CPATH_5_4</code></a>,
8689or the environment variable <a name="pdf-LUA_CPATH"><code>LUA_CPATH</code></a>,
8690or a default path defined in <code>luaconf.h</code>.
8691
8692
8693
8694
8695<p>
8696<hr><h3><a name="pdf-package.loaded"><code>package.loaded</code></a></h3>
8697
8698
8699<p>
8700A table used by <a href="#pdf-require"><code>require</code></a> to control which
8701modules are already loaded.
8702When you require a module <code>modname</code> and
8703<code>package.loaded[modname]</code> is not false,
8704<a href="#pdf-require"><code>require</code></a> simply returns the value stored there.
8705
8706
8707<p>
8708This variable is only a reference to the real table;
8709assignments to this variable do not change the
8710table used by <a href="#pdf-require"><code>require</code></a>.
8711
8712
8713
8714
8715<p>
8716<hr><h3><a name="pdf-package.loadlib"><code>package.loadlib (libname, funcname)</code></a></h3>
8717
8718
8719<p>
8720Dynamically links the host program with the C&nbsp;library <code>libname</code>.
8721
8722
8723<p>
8724If <code>funcname</code> is "<code>*</code>",
8725then it only links with the library,
8726making the symbols exported by the library
8727available to other dynamically linked libraries.
8728Otherwise,
8729it looks for a function <code>funcname</code> inside the library
8730and returns this function as a C&nbsp;function.
8731So, <code>funcname</code> must follow the <a href="#lua_CFunction"><code>lua_CFunction</code></a> prototype
8732(see <a href="#lua_CFunction"><code>lua_CFunction</code></a>).
8733
8734
8735<p>
8736This is a low-level function.
8737It completely bypasses the package and module system.
8738Unlike <a href="#pdf-require"><code>require</code></a>,
8739it does not perform any path searching and
8740does not automatically adds extensions.
8741<code>libname</code> must be the complete file name of the C&nbsp;library,
8742including if necessary a path and an extension.
8743<code>funcname</code> must be the exact name exported by the C&nbsp;library
8744(which may depend on the C&nbsp;compiler and linker used).
8745
8746
8747<p>
8748This function is not supported by Standard&nbsp;C.
8749As such, it is only available on some platforms
8750(Windows, Linux, Mac OS X, Solaris, BSD,
8751plus other Unix systems that support the <code>dlfcn</code> standard).
8752
8753
8754<p>
8755This function is inherently insecure,
8756as it allows Lua to call any function in any readable dynamic
8757library in the system.
8758(Lua calls any function assuming the function
8759has a proper prototype and respects a proper protocol
8760(see <a href="#lua_CFunction"><code>lua_CFunction</code></a>).
8761Therefore,
8762calling an arbitrary function in an arbitrary dynamic library
8763more often than not results in an access violation.)
8764
8765
8766
8767
8768<p>
8769<hr><h3><a name="pdf-package.path"><code>package.path</code></a></h3>
8770
8771
8772<p>
8773A string with the path used by <a href="#pdf-require"><code>require</code></a>
8774to search for a Lua loader.
8775
8776
8777<p>
8778At start-up, Lua initializes this variable with
8779the value of the environment variable <a name="pdf-LUA_PATH_5_4"><code>LUA_PATH_5_4</code></a> or
8780the environment variable <a name="pdf-LUA_PATH"><code>LUA_PATH</code></a> or
8781with a default path defined in <code>luaconf.h</code>,
8782if those environment variables are not defined.
8783A "<code>;;</code>" in the value of the environment variable
8784is replaced by the default path.
8785
8786
8787
8788
8789<p>
8790<hr><h3><a name="pdf-package.preload"><code>package.preload</code></a></h3>
8791
8792
8793<p>
8794A table to store loaders for specific modules
8795(see <a href="#pdf-require"><code>require</code></a>).
8796
8797
8798<p>
8799This variable is only a reference to the real table;
8800assignments to this variable do not change the
8801table used by <a href="#pdf-require"><code>require</code></a>.
8802
8803
8804
8805
8806<p>
8807<hr><h3><a name="pdf-package.searchers"><code>package.searchers</code></a></h3>
8808
8809
8810<p>
8811A table used by <a href="#pdf-require"><code>require</code></a> to control how to find modules.
8812
8813
8814<p>
8815Each entry in this table is a <em>searcher function</em>.
8816When looking for a module,
8817<a href="#pdf-require"><code>require</code></a> calls each of these searchers in ascending order,
8818with the module name (the argument given to <a href="#pdf-require"><code>require</code></a>) as its
8819sole argument.
8820If the searcher finds the module,
8821it returns another function, the module <em>loader</em>,
8822plus an extra value, a <em>loader data</em>,
8823that will be passed to that loader and
8824returned as a second result by <a href="#pdf-require"><code>require</code></a>.
8825If it cannot find the module,
8826it returns a string explaining why
8827(or <b>nil</b> if it has nothing to say).
8828
8829
8830<p>
8831Lua initializes this table with four searcher functions.
8832
8833
8834<p>
8835The first searcher simply looks for a loader in the
8836<a href="#pdf-package.preload"><code>package.preload</code></a> table.
8837
8838
8839<p>
8840The second searcher looks for a loader as a Lua library,
8841using the path stored at <a href="#pdf-package.path"><code>package.path</code></a>.
8842The search is done as described in function <a href="#pdf-package.searchpath"><code>package.searchpath</code></a>.
8843
8844
8845<p>
8846The third searcher looks for a loader as a C&nbsp;library,
8847using the path given by the variable <a href="#pdf-package.cpath"><code>package.cpath</code></a>.
8848Again,
8849the search is done as described in function <a href="#pdf-package.searchpath"><code>package.searchpath</code></a>.
8850For instance,
8851if the C&nbsp;path is the string
8852
8853<pre>
8854     "./?.so;./?.dll;/usr/local/?/init.so"
8855</pre><p>
8856the searcher for module <code>foo</code>
8857will try to open the files <code>./foo.so</code>, <code>./foo.dll</code>,
8858and <code>/usr/local/foo/init.so</code>, in that order.
8859Once it finds a C&nbsp;library,
8860this searcher first uses a dynamic link facility to link the
8861application with the library.
8862Then it tries to find a C&nbsp;function inside the library to
8863be used as the loader.
8864The name of this C&nbsp;function is the string "<code>luaopen_</code>"
8865concatenated with a copy of the module name where each dot
8866is replaced by an underscore.
8867Moreover, if the module name has a hyphen,
8868its suffix after (and including) the first hyphen is removed.
8869For instance, if the module name is <code>a.b.c-v2.1</code>,
8870the function name will be <code>luaopen_a_b_c</code>.
8871
8872
8873<p>
8874The fourth searcher tries an <em>all-in-one loader</em>.
8875It searches the C&nbsp;path for a library for
8876the root name of the given module.
8877For instance, when requiring <code>a.b.c</code>,
8878it will search for a C&nbsp;library for <code>a</code>.
8879If found, it looks into it for an open function for
8880the submodule;
8881in our example, that would be <code>luaopen_a_b_c</code>.
8882With this facility, a package can pack several C&nbsp;submodules
8883into one single library,
8884with each submodule keeping its original open function.
8885
8886
8887<p>
8888All searchers except the first one (preload) return as the extra value
8889the file path where the module was found,
8890as returned by <a href="#pdf-package.searchpath"><code>package.searchpath</code></a>.
8891The first searcher always returns the string "<code>:preload:</code>".
8892
8893
8894<p>
8895Searchers should raise no errors and have no side effects in Lua.
8896(They may have side effects in C,
8897for instance by linking the application with a library.)
8898
8899
8900
8901
8902<p>
8903<hr><h3><a name="pdf-package.searchpath"><code>package.searchpath (name, path [, sep [, rep]])</code></a></h3>
8904
8905
8906<p>
8907Searches for the given <code>name</code> in the given <code>path</code>.
8908
8909
8910<p>
8911A path is a string containing a sequence of
8912<em>templates</em> separated by semicolons.
8913For each template,
8914the function replaces each interrogation mark (if any)
8915in the template with a copy of <code>name</code>
8916wherein all occurrences of <code>sep</code>
8917(a dot, by default)
8918were replaced by <code>rep</code>
8919(the system's directory separator, by default),
8920and then tries to open the resulting file name.
8921
8922
8923<p>
8924For instance, if the path is the string
8925
8926<pre>
8927     "./?.lua;./?.lc;/usr/local/?/init.lua"
8928</pre><p>
8929the search for the name <code>foo.a</code>
8930will try to open the files
8931<code>./foo/a.lua</code>, <code>./foo/a.lc</code>, and
8932<code>/usr/local/foo/a/init.lua</code>, in that order.
8933
8934
8935<p>
8936Returns the resulting name of the first file that it can
8937open in read mode (after closing the file),
8938or <b>fail</b> plus an error message if none succeeds.
8939(This error message lists all file names it tried to open.)
8940
8941
8942
8943
8944
8945
8946
8947<h2>6.4 &ndash; <a name="6.4">String Manipulation</a></h2>
8948
8949
8950
8951<p>
8952This library provides generic functions for string manipulation,
8953such as finding and extracting substrings, and pattern matching.
8954When indexing a string in Lua, the first character is at position&nbsp;1
8955(not at&nbsp;0, as in C).
8956Indices are allowed to be negative and are interpreted as indexing backwards,
8957from the end of the string.
8958Thus, the last character is at position -1, and so on.
8959
8960
8961<p>
8962The string library provides all its functions inside the table
8963<a name="pdf-string"><code>string</code></a>.
8964It also sets a metatable for strings
8965where the <code>__index</code> field points to the <code>string</code> table.
8966Therefore, you can use the string functions in object-oriented style.
8967For instance, <code>string.byte(s,i)</code>
8968can be written as <code>s:byte(i)</code>.
8969
8970
8971<p>
8972The string library assumes one-byte character encodings.
8973
8974
8975<p>
8976<hr><h3><a name="pdf-string.byte"><code>string.byte (s [, i [, j]])</code></a></h3>
8977Returns the internal numeric codes of the characters <code>s[i]</code>,
8978<code>s[i+1]</code>, ..., <code>s[j]</code>.
8979The default value for <code>i</code> is&nbsp;1;
8980the default value for <code>j</code> is&nbsp;<code>i</code>.
8981These indices are corrected
8982following the same rules of function <a href="#pdf-string.sub"><code>string.sub</code></a>.
8983
8984
8985<p>
8986Numeric codes are not necessarily portable across platforms.
8987
8988
8989
8990
8991<p>
8992<hr><h3><a name="pdf-string.char"><code>string.char (&middot;&middot;&middot;)</code></a></h3>
8993Receives zero or more integers.
8994Returns a string with length equal to the number of arguments,
8995in which each character has the internal numeric code equal
8996to its corresponding argument.
8997
8998
8999<p>
9000Numeric codes are not necessarily portable across platforms.
9001
9002
9003
9004
9005<p>
9006<hr><h3><a name="pdf-string.dump"><code>string.dump (function [, strip])</code></a></h3>
9007
9008
9009<p>
9010Returns a string containing a binary representation
9011(a <em>binary chunk</em>)
9012of the given function,
9013so that a later <a href="#pdf-load"><code>load</code></a> on this string returns
9014a copy of the function (but with new upvalues).
9015If <code>strip</code> is a true value,
9016the binary representation may not include all debug information
9017about the function,
9018to save space.
9019
9020
9021<p>
9022Functions with upvalues have only their number of upvalues saved.
9023When (re)loaded,
9024those upvalues receive fresh instances.
9025(See the <a href="#pdf-load"><code>load</code></a> function for details about
9026how these upvalues are initialized.
9027You can use the debug library to serialize
9028and reload the upvalues of a function
9029in a way adequate to your needs.)
9030
9031
9032
9033
9034<p>
9035<hr><h3><a name="pdf-string.find"><code>string.find (s, pattern [, init [, plain]])</code></a></h3>
9036
9037
9038<p>
9039Looks for the first match of
9040<code>pattern</code> (see <a href="#6.4.1">&sect;6.4.1</a>) in the string <code>s</code>.
9041If it finds a match, then <code>find</code> returns the indices of&nbsp;<code>s</code>
9042where this occurrence starts and ends;
9043otherwise, it returns <b>fail</b>.
9044A third, optional numeric argument <code>init</code> specifies
9045where to start the search;
9046its default value is&nbsp;1 and can be negative.
9047A <b>true</b> as a fourth, optional argument <code>plain</code>
9048turns off the pattern matching facilities,
9049so the function does a plain "find substring" operation,
9050with no characters in <code>pattern</code> being considered magic.
9051
9052
9053<p>
9054If the pattern has captures,
9055then in a successful match
9056the captured values are also returned,
9057after the two indices.
9058
9059
9060
9061
9062<p>
9063<hr><h3><a name="pdf-string.format"><code>string.format (formatstring, &middot;&middot;&middot;)</code></a></h3>
9064
9065
9066<p>
9067Returns a formatted version of its variable number of arguments
9068following the description given in its first argument,
9069which must be a string.
9070The format string follows the same rules as the ISO&nbsp;C function <code>sprintf</code>.
9071The only differences are that the conversion specifiers and modifiers
9072<code>F</code>, <code>n</code>, <code>*</code>, <code>h</code>, <code>L</code>, and <code>l</code> are not supported
9073and that there is an extra specifier, <code>q</code>.
9074Both width and precision, when present,
9075are limited to two digits.
9076
9077
9078<p>
9079The specifier <code>q</code> formats booleans, nil, numbers, and strings
9080in a way that the result is a valid constant in Lua source code.
9081Booleans and nil are written in the obvious way
9082(<code>true</code>, <code>false</code>, <code>nil</code>).
9083Floats are written in hexadecimal,
9084to preserve full precision.
9085A string is written between double quotes,
9086using escape sequences when necessary to ensure that
9087it can safely be read back by the Lua interpreter.
9088For instance, the call
9089
9090<pre>
9091     string.format('%q', 'a string with "quotes" and \n new line')
9092</pre><p>
9093may produce the string:
9094
9095<pre>
9096     "a string with \"quotes\" and \
9097      new line"
9098</pre><p>
9099This specifier does not support modifiers (flags, width, precision).
9100
9101
9102<p>
9103The conversion specifiers
9104<code>A</code>, <code>a</code>, <code>E</code>, <code>e</code>, <code>f</code>,
9105<code>G</code>, and <code>g</code> all expect a number as argument.
9106The specifiers <code>c</code>, <code>d</code>,
9107<code>i</code>, <code>o</code>, <code>u</code>, <code>X</code>, and <code>x</code>
9108expect an integer.
9109When Lua is compiled with a C89 compiler,
9110the specifiers <code>A</code> and <code>a</code> (hexadecimal floats)
9111do not support modifiers.
9112
9113
9114<p>
9115The specifier <code>s</code> expects a string;
9116if its argument is not a string,
9117it is converted to one following the same rules of <a href="#pdf-tostring"><code>tostring</code></a>.
9118If the specifier has any modifier,
9119the corresponding string argument should not contain embedded zeros.
9120
9121
9122<p>
9123The specifier <code>p</code> formats the pointer
9124returned by <a href="#lua_topointer"><code>lua_topointer</code></a>.
9125That gives a unique string identifier for tables, userdata,
9126threads, strings, and functions.
9127For other values (numbers, nil, booleans),
9128this specifier results in a string representing
9129the pointer <code>NULL</code>.
9130
9131
9132
9133
9134<p>
9135<hr><h3><a name="pdf-string.gmatch"><code>string.gmatch (s, pattern [, init])</code></a></h3>
9136Returns an iterator function that,
9137each time it is called,
9138returns the next captures from <code>pattern</code> (see <a href="#6.4.1">&sect;6.4.1</a>)
9139over the string <code>s</code>.
9140If <code>pattern</code> specifies no captures,
9141then the whole match is produced in each call.
9142A third, optional numeric argument <code>init</code> specifies
9143where to start the search;
9144its default value is&nbsp;1 and can be negative.
9145
9146
9147<p>
9148As an example, the following loop
9149will iterate over all the words from string <code>s</code>,
9150printing one per line:
9151
9152<pre>
9153     s = "hello world from Lua"
9154     for w in string.gmatch(s, "%a+") do
9155       print(w)
9156     end
9157</pre><p>
9158The next example collects all pairs <code>key=value</code> from the
9159given string into a table:
9160
9161<pre>
9162     t = {}
9163     s = "from=world, to=Lua"
9164     for k, v in string.gmatch(s, "(%w+)=(%w+)") do
9165       t[k] = v
9166     end
9167</pre>
9168
9169<p>
9170For this function, a caret '<code>^</code>' at the start of a pattern does not
9171work as an anchor, as this would prevent the iteration.
9172
9173
9174
9175
9176<p>
9177<hr><h3><a name="pdf-string.gsub"><code>string.gsub (s, pattern, repl [, n])</code></a></h3>
9178Returns a copy of <code>s</code>
9179in which all (or the first <code>n</code>, if given)
9180occurrences of the <code>pattern</code> (see <a href="#6.4.1">&sect;6.4.1</a>) have been
9181replaced by a replacement string specified by <code>repl</code>,
9182which can be a string, a table, or a function.
9183<code>gsub</code> also returns, as its second value,
9184the total number of matches that occurred.
9185The name <code>gsub</code> comes from <em>Global SUBstitution</em>.
9186
9187
9188<p>
9189If <code>repl</code> is a string, then its value is used for replacement.
9190The character&nbsp;<code>%</code> works as an escape character:
9191any sequence in <code>repl</code> of the form <code>%<em>d</em></code>,
9192with <em>d</em> between 1 and 9,
9193stands for the value of the <em>d</em>-th captured substring;
9194the sequence <code>%0</code> stands for the whole match;
9195the sequence <code>%%</code> stands for a single&nbsp;<code>%</code>.
9196
9197
9198<p>
9199If <code>repl</code> is a table, then the table is queried for every match,
9200using the first capture as the key.
9201
9202
9203<p>
9204If <code>repl</code> is a function, then this function is called every time a
9205match occurs, with all captured substrings passed as arguments,
9206in order.
9207
9208
9209<p>
9210In any case,
9211if the pattern specifies no captures,
9212then it behaves as if the whole pattern was inside a capture.
9213
9214
9215<p>
9216If the value returned by the table query or by the function call
9217is a string or a number,
9218then it is used as the replacement string;
9219otherwise, if it is <b>false</b> or <b>nil</b>,
9220then there is no replacement
9221(that is, the original match is kept in the string).
9222
9223
9224<p>
9225Here are some examples:
9226
9227<pre>
9228     x = string.gsub("hello world", "(%w+)", "%1 %1")
9229     --&gt; x="hello hello world world"
9230
9231     x = string.gsub("hello world", "%w+", "%0 %0", 1)
9232     --&gt; x="hello hello world"
9233
9234     x = string.gsub("hello world from Lua", "(%w+)%s*(%w+)", "%2 %1")
9235     --&gt; x="world hello Lua from"
9236
9237     x = string.gsub("home = $HOME, user = $USER", "%$(%w+)", os.getenv)
9238     --&gt; x="home = /home/roberto, user = roberto"
9239
9240     x = string.gsub("4+5 = $return 4+5$", "%$(.-)%$", function (s)
9241           return load(s)()
9242         end)
9243     --&gt; x="4+5 = 9"
9244
9245     local t = {name="lua", version="5.4"}
9246     x = string.gsub("$name-$version.tar.gz", "%$(%w+)", t)
9247     --&gt; x="lua-5.4.tar.gz"
9248</pre>
9249
9250
9251
9252<p>
9253<hr><h3><a name="pdf-string.len"><code>string.len (s)</code></a></h3>
9254
9255
9256<p>
9257Receives a string and returns its length.
9258The empty string <code>""</code> has length 0.
9259Embedded zeros are counted,
9260so <code>"a\000bc\000"</code> has length 5.
9261
9262
9263
9264
9265<p>
9266<hr><h3><a name="pdf-string.lower"><code>string.lower (s)</code></a></h3>
9267
9268
9269<p>
9270Receives a string and returns a copy of this string with all
9271uppercase letters changed to lowercase.
9272All other characters are left unchanged.
9273The definition of what an uppercase letter is depends on the current locale.
9274
9275
9276
9277
9278<p>
9279<hr><h3><a name="pdf-string.match"><code>string.match (s, pattern [, init])</code></a></h3>
9280
9281
9282<p>
9283Looks for the first <em>match</em> of
9284the <code>pattern</code> (see <a href="#6.4.1">&sect;6.4.1</a>) in the string <code>s</code>.
9285If it finds one, then <code>match</code> returns
9286the captures from the pattern;
9287otherwise it returns <b>fail</b>.
9288If <code>pattern</code> specifies no captures,
9289then the whole match is returned.
9290A third, optional numeric argument <code>init</code> specifies
9291where to start the search;
9292its default value is&nbsp;1 and can be negative.
9293
9294
9295
9296
9297<p>
9298<hr><h3><a name="pdf-string.pack"><code>string.pack (fmt, v1, v2, &middot;&middot;&middot;)</code></a></h3>
9299
9300
9301<p>
9302Returns a binary string containing the values <code>v1</code>, <code>v2</code>, etc.
9303serialized in binary form (packed)
9304according to the format string <code>fmt</code> (see <a href="#6.4.2">&sect;6.4.2</a>).
9305
9306
9307
9308
9309<p>
9310<hr><h3><a name="pdf-string.packsize"><code>string.packsize (fmt)</code></a></h3>
9311
9312
9313<p>
9314Returns the size of a string resulting from <a href="#pdf-string.pack"><code>string.pack</code></a>
9315with the given format.
9316The format string cannot have the variable-length options
9317'<code>s</code>' or '<code>z</code>' (see <a href="#6.4.2">&sect;6.4.2</a>).
9318
9319
9320
9321
9322<p>
9323<hr><h3><a name="pdf-string.rep"><code>string.rep (s, n [, sep])</code></a></h3>
9324
9325
9326<p>
9327Returns a string that is the concatenation of <code>n</code> copies of
9328the string <code>s</code> separated by the string <code>sep</code>.
9329The default value for <code>sep</code> is the empty string
9330(that is, no separator).
9331Returns the empty string if <code>n</code> is not positive.
9332
9333
9334<p>
9335(Note that it is very easy to exhaust the memory of your machine
9336with a single call to this function.)
9337
9338
9339
9340
9341<p>
9342<hr><h3><a name="pdf-string.reverse"><code>string.reverse (s)</code></a></h3>
9343
9344
9345<p>
9346Returns a string that is the string <code>s</code> reversed.
9347
9348
9349
9350
9351<p>
9352<hr><h3><a name="pdf-string.sub"><code>string.sub (s, i [, j])</code></a></h3>
9353
9354
9355<p>
9356Returns the substring of <code>s</code> that
9357starts at <code>i</code>  and continues until <code>j</code>;
9358<code>i</code> and <code>j</code> can be negative.
9359If <code>j</code> is absent, then it is assumed to be equal to -1
9360(which is the same as the string length).
9361In particular,
9362the call <code>string.sub(s,1,j)</code> returns a prefix of <code>s</code>
9363with length <code>j</code>,
9364and <code>string.sub(s, -i)</code> (for a positive <code>i</code>)
9365returns a suffix of <code>s</code>
9366with length <code>i</code>.
9367
9368
9369<p>
9370If, after the translation of negative indices,
9371<code>i</code> is less than 1,
9372it is corrected to 1.
9373If <code>j</code> is greater than the string length,
9374it is corrected to that length.
9375If, after these corrections,
9376<code>i</code> is greater than <code>j</code>,
9377the function returns the empty string.
9378
9379
9380
9381
9382<p>
9383<hr><h3><a name="pdf-string.unpack"><code>string.unpack (fmt, s [, pos])</code></a></h3>
9384
9385
9386<p>
9387Returns the values packed in string <code>s</code> (see <a href="#pdf-string.pack"><code>string.pack</code></a>)
9388according to the format string <code>fmt</code> (see <a href="#6.4.2">&sect;6.4.2</a>).
9389An optional <code>pos</code> marks where
9390to start reading in <code>s</code> (default is 1).
9391After the read values,
9392this function also returns the index of the first unread byte in <code>s</code>.
9393
9394
9395
9396
9397<p>
9398<hr><h3><a name="pdf-string.upper"><code>string.upper (s)</code></a></h3>
9399
9400
9401<p>
9402Receives a string and returns a copy of this string with all
9403lowercase letters changed to uppercase.
9404All other characters are left unchanged.
9405The definition of what a lowercase letter is depends on the current locale.
9406
9407
9408
9409
9410
9411
9412
9413<h3>6.4.1 &ndash; <a name="6.4.1">Patterns</a></h3>
9414
9415
9416
9417<p>
9418Patterns in Lua are described by regular strings,
9419which are interpreted as patterns by the pattern-matching functions
9420<a href="#pdf-string.find"><code>string.find</code></a>,
9421<a href="#pdf-string.gmatch"><code>string.gmatch</code></a>,
9422<a href="#pdf-string.gsub"><code>string.gsub</code></a>,
9423and <a href="#pdf-string.match"><code>string.match</code></a>.
9424This section describes the syntax and the meaning
9425(that is, what they match) of these strings.
9426
9427
9428
9429
9430
9431<h4>Character Class:</h4><p>
9432A <em>character class</em> is used to represent a set of characters.
9433The following combinations are allowed in describing a character class:
9434
9435<ul>
9436
9437<li><b><em>x</em>: </b>
9438(where <em>x</em> is not one of the <em>magic characters</em>
9439<code>^$()%.[]*+-?</code>)
9440represents the character <em>x</em> itself.
9441</li>
9442
9443<li><b><code>.</code>: </b> (a dot) represents all characters.</li>
9444
9445<li><b><code>%a</code>: </b> represents all letters.</li>
9446
9447<li><b><code>%c</code>: </b> represents all control characters.</li>
9448
9449<li><b><code>%d</code>: </b> represents all digits.</li>
9450
9451<li><b><code>%g</code>: </b> represents all printable characters except space.</li>
9452
9453<li><b><code>%l</code>: </b> represents all lowercase letters.</li>
9454
9455<li><b><code>%p</code>: </b> represents all punctuation characters.</li>
9456
9457<li><b><code>%s</code>: </b> represents all space characters.</li>
9458
9459<li><b><code>%u</code>: </b> represents all uppercase letters.</li>
9460
9461<li><b><code>%w</code>: </b> represents all alphanumeric characters.</li>
9462
9463<li><b><code>%x</code>: </b> represents all hexadecimal digits.</li>
9464
9465<li><b><code>%<em>x</em></code>: </b> (where <em>x</em> is any non-alphanumeric character)
9466represents the character <em>x</em>.
9467This is the standard way to escape the magic characters.
9468Any non-alphanumeric character
9469(including all punctuation characters, even the non-magical)
9470can be preceded by a '<code>%</code>' to represent itself in a pattern.
9471</li>
9472
9473<li><b><code>[<em>set</em>]</code>: </b>
9474represents the class which is the union of all
9475characters in <em>set</em>.
9476A range of characters can be specified by
9477separating the end characters of the range,
9478in ascending order, with a '<code>-</code>'.
9479All classes <code>%</code><em>x</em> described above can also be used as
9480components in <em>set</em>.
9481All other characters in <em>set</em> represent themselves.
9482For example, <code>[%w_]</code> (or <code>[_%w]</code>)
9483represents all alphanumeric characters plus the underscore,
9484<code>[0-7]</code> represents the octal digits,
9485and <code>[0-7%l%-]</code> represents the octal digits plus
9486the lowercase letters plus the '<code>-</code>' character.
9487
9488
9489<p>
9490You can put a closing square bracket in a set
9491by positioning it as the first character in the set.
9492You can put a hyphen in a set
9493by positioning it as the first or the last character in the set.
9494(You can also use an escape for both cases.)
9495
9496
9497<p>
9498The interaction between ranges and classes is not defined.
9499Therefore, patterns like <code>[%a-z]</code> or <code>[a-%%]</code>
9500have no meaning.
9501</li>
9502
9503<li><b><code>[^<em>set</em>]</code>: </b>
9504represents the complement of <em>set</em>,
9505where <em>set</em> is interpreted as above.
9506</li>
9507
9508</ul><p>
9509For all classes represented by single letters (<code>%a</code>, <code>%c</code>, etc.),
9510the corresponding uppercase letter represents the complement of the class.
9511For instance, <code>%S</code> represents all non-space characters.
9512
9513
9514<p>
9515The definitions of letter, space, and other character groups
9516depend on the current locale.
9517In particular, the class <code>[a-z]</code> may not be equivalent to <code>%l</code>.
9518
9519
9520
9521
9522
9523<h4>Pattern Item:</h4><p>
9524A <em>pattern item</em> can be
9525
9526<ul>
9527
9528<li>
9529a single character class,
9530which matches any single character in the class;
9531</li>
9532
9533<li>
9534a single character class followed by '<code>*</code>',
9535which matches sequences of zero or more characters in the class.
9536These repetition items will always match the longest possible sequence;
9537</li>
9538
9539<li>
9540a single character class followed by '<code>+</code>',
9541which matches sequences of one or more characters in the class.
9542These repetition items will always match the longest possible sequence;
9543</li>
9544
9545<li>
9546a single character class followed by '<code>-</code>',
9547which also matches sequences of zero or more characters in the class.
9548Unlike '<code>*</code>',
9549these repetition items will always match the shortest possible sequence;
9550</li>
9551
9552<li>
9553a single character class followed by '<code>?</code>',
9554which matches zero or one occurrence of a character in the class.
9555It always matches one occurrence if possible;
9556</li>
9557
9558<li>
9559<code>%<em>n</em></code>, for <em>n</em> between 1 and 9;
9560such item matches a substring equal to the <em>n</em>-th captured string
9561(see below);
9562</li>
9563
9564<li>
9565<code>%b<em>xy</em></code>, where <em>x</em> and <em>y</em> are two distinct characters;
9566such item matches strings that start with&nbsp;<em>x</em>, end with&nbsp;<em>y</em>,
9567and where the <em>x</em> and <em>y</em> are <em>balanced</em>.
9568This means that, if one reads the string from left to right,
9569counting <em>+1</em> for an <em>x</em> and <em>-1</em> for a <em>y</em>,
9570the ending <em>y</em> is the first <em>y</em> where the count reaches 0.
9571For instance, the item <code>%b()</code> matches expressions with
9572balanced parentheses.
9573</li>
9574
9575<li>
9576<code>%f[<em>set</em>]</code>, a <em>frontier pattern</em>;
9577such item matches an empty string at any position such that
9578the next character belongs to <em>set</em>
9579and the previous character does not belong to <em>set</em>.
9580The set <em>set</em> is interpreted as previously described.
9581The beginning and the end of the subject are handled as if
9582they were the character '<code>\0</code>'.
9583</li>
9584
9585</ul>
9586
9587
9588
9589
9590<h4>Pattern:</h4><p>
9591A <em>pattern</em> is a sequence of pattern items.
9592A caret '<code>^</code>' at the beginning of a pattern anchors the match at the
9593beginning of the subject string.
9594A '<code>$</code>' at the end of a pattern anchors the match at the
9595end of the subject string.
9596At other positions,
9597'<code>^</code>' and '<code>$</code>' have no special meaning and represent themselves.
9598
9599
9600
9601
9602
9603<h4>Captures:</h4><p>
9604A pattern can contain sub-patterns enclosed in parentheses;
9605they describe <em>captures</em>.
9606When a match succeeds, the substrings of the subject string
9607that match captures are stored (<em>captured</em>) for future use.
9608Captures are numbered according to their left parentheses.
9609For instance, in the pattern <code>"(a*(.)%w(%s*))"</code>,
9610the part of the string matching <code>"a*(.)%w(%s*)"</code> is
9611stored as the first capture, and therefore has number&nbsp;1;
9612the character matching "<code>.</code>" is captured with number&nbsp;2,
9613and the part matching "<code>%s*</code>" has number&nbsp;3.
9614
9615
9616<p>
9617As a special case, the capture <code>()</code> captures
9618the current string position (a number).
9619For instance, if we apply the pattern <code>"()aa()"</code> on the
9620string <code>"flaaap"</code>, there will be two captures: 3&nbsp;and&nbsp;5.
9621
9622
9623
9624
9625
9626<h4>Multiple matches:</h4><p>
9627The function <a href="#pdf-string.gsub"><code>string.gsub</code></a> and the iterator <a href="#pdf-string.gmatch"><code>string.gmatch</code></a>
9628match multiple occurrences of the given pattern in the subject.
9629For these functions,
9630a new match is considered valid only
9631if it ends at least one byte after the end of the previous match.
9632In other words, the pattern machine never accepts the
9633empty string as a match immediately after another match.
9634As an example,
9635consider the results of the following code:
9636
9637<pre>
9638     &gt; string.gsub("abc", "()a*()", print);
9639     --&gt; 1   2
9640     --&gt; 3   3
9641     --&gt; 4   4
9642</pre><p>
9643The second and third results come from Lua matching an empty
9644string after '<code>b</code>' and another one after '<code>c</code>'.
9645Lua does not match an empty string after '<code>a</code>',
9646because it would end at the same position of the previous match.
9647
9648
9649
9650
9651
9652
9653
9654<h3>6.4.2 &ndash; <a name="6.4.2">Format Strings for Pack and Unpack</a></h3>
9655
9656<p>
9657The first argument to <a href="#pdf-string.pack"><code>string.pack</code></a>,
9658<a href="#pdf-string.packsize"><code>string.packsize</code></a>, and <a href="#pdf-string.unpack"><code>string.unpack</code></a>
9659is a format string,
9660which describes the layout of the structure being created or read.
9661
9662
9663<p>
9664A format string is a sequence of conversion options.
9665The conversion options are as follows:
9666
9667<ul>
9668<li><b><code>&lt;</code>: </b>sets little endian</li>
9669<li><b><code>&gt;</code>: </b>sets big endian</li>
9670<li><b><code>=</code>: </b>sets native endian</li>
9671<li><b><code>![<em>n</em>]</code>: </b>sets maximum alignment to <code>n</code>
9672(default is native alignment)</li>
9673<li><b><code>b</code>: </b>a signed byte (<code>char</code>)</li>
9674<li><b><code>B</code>: </b>an unsigned byte (<code>char</code>)</li>
9675<li><b><code>h</code>: </b>a signed <code>short</code> (native size)</li>
9676<li><b><code>H</code>: </b>an unsigned <code>short</code> (native size)</li>
9677<li><b><code>l</code>: </b>a signed <code>long</code> (native size)</li>
9678<li><b><code>L</code>: </b>an unsigned <code>long</code> (native size)</li>
9679<li><b><code>j</code>: </b>a <code>lua_Integer</code></li>
9680<li><b><code>J</code>: </b>a <code>lua_Unsigned</code></li>
9681<li><b><code>T</code>: </b>a <code>size_t</code> (native size)</li>
9682<li><b><code>i[<em>n</em>]</code>: </b>a signed <code>int</code> with <code>n</code> bytes
9683(default is native size)</li>
9684<li><b><code>I[<em>n</em>]</code>: </b>an unsigned <code>int</code> with <code>n</code> bytes
9685(default is native size)</li>
9686<li><b><code>f</code>: </b>a <code>float</code> (native size)</li>
9687<li><b><code>d</code>: </b>a <code>double</code> (native size)</li>
9688<li><b><code>n</code>: </b>a <code>lua_Number</code></li>
9689<li><b><code>c<em>n</em></code>: </b>a fixed-sized string with <code>n</code> bytes</li>
9690<li><b><code>z</code>: </b>a zero-terminated string</li>
9691<li><b><code>s[<em>n</em>]</code>: </b>a string preceded by its length
9692coded as an unsigned integer with <code>n</code> bytes
9693(default is a <code>size_t</code>)</li>
9694<li><b><code>x</code>: </b>one byte of padding</li>
9695<li><b><code>X<em>op</em></code>: </b>an empty item that aligns
9696according to option <code>op</code>
9697(which is otherwise ignored)</li>
9698<li><b>'<code> </code>': </b>(space) ignored</li>
9699</ul><p>
9700(A "<code>[<em>n</em>]</code>" means an optional integral numeral.)
9701Except for padding, spaces, and configurations
9702(options "<code>xX &lt;=&gt;!</code>"),
9703each option corresponds to an argument in <a href="#pdf-string.pack"><code>string.pack</code></a>
9704or a result in <a href="#pdf-string.unpack"><code>string.unpack</code></a>.
9705
9706
9707<p>
9708For options "<code>!<em>n</em></code>", "<code>s<em>n</em></code>", "<code>i<em>n</em></code>", and "<code>I<em>n</em></code>",
9709<code>n</code> can be any integer between 1 and 16.
9710All integral options check overflows;
9711<a href="#pdf-string.pack"><code>string.pack</code></a> checks whether the given value fits in the given size;
9712<a href="#pdf-string.unpack"><code>string.unpack</code></a> checks whether the read value fits in a Lua integer.
9713For the unsigned options,
9714Lua integers are treated as unsigned values too.
9715
9716
9717<p>
9718Any format string starts as if prefixed by "<code>!1=</code>",
9719that is,
9720with maximum alignment of 1 (no alignment)
9721and native endianness.
9722
9723
9724<p>
9725Native endianness assumes that the whole system is
9726either big or little endian.
9727The packing functions will not emulate correctly the behavior
9728of mixed-endian formats.
9729
9730
9731<p>
9732Alignment works as follows:
9733For each option,
9734the format gets extra padding until the data starts
9735at an offset that is a multiple of the minimum between the
9736option size and the maximum alignment;
9737this minimum must be a power of 2.
9738Options "<code>c</code>" and "<code>z</code>" are not aligned;
9739option "<code>s</code>" follows the alignment of its starting integer.
9740
9741
9742<p>
9743All padding is filled with zeros by <a href="#pdf-string.pack"><code>string.pack</code></a>
9744and ignored by <a href="#pdf-string.unpack"><code>string.unpack</code></a>.
9745
9746
9747
9748
9749
9750
9751
9752<h2>6.5 &ndash; <a name="6.5">UTF-8 Support</a></h2>
9753
9754<p>
9755This library provides basic support for UTF-8 encoding.
9756It provides all its functions inside the table <a name="pdf-utf8"><code>utf8</code></a>.
9757This library does not provide any support for Unicode other
9758than the handling of the encoding.
9759Any operation that needs the meaning of a character,
9760such as character classification, is outside its scope.
9761
9762
9763<p>
9764Unless stated otherwise,
9765all functions that expect a byte position as a parameter
9766assume that the given position is either the start of a byte sequence
9767or one plus the length of the subject string.
9768As in the string library,
9769negative indices count from the end of the string.
9770
9771
9772<p>
9773Functions that create byte sequences
9774accept all values up to <code>0x7FFFFFFF</code>,
9775as defined in the original UTF-8 specification;
9776that implies byte sequences of up to six bytes.
9777
9778
9779<p>
9780Functions that interpret byte sequences only accept
9781valid sequences (well formed and not overlong).
9782By default, they only accept byte sequences
9783that result in valid Unicode code points,
9784rejecting values greater than <code>10FFFF</code> and surrogates.
9785A boolean argument <code>lax</code>, when available,
9786lifts these checks,
9787so that all values up to <code>0x7FFFFFFF</code> are accepted.
9788(Not well formed and overlong sequences are still rejected.)
9789
9790
9791<p>
9792<hr><h3><a name="pdf-utf8.char"><code>utf8.char (&middot;&middot;&middot;)</code></a></h3>
9793
9794
9795<p>
9796Receives zero or more integers,
9797converts each one to its corresponding UTF-8 byte sequence
9798and returns a string with the concatenation of all these sequences.
9799
9800
9801
9802
9803<p>
9804<hr><h3><a name="pdf-utf8.charpattern"><code>utf8.charpattern</code></a></h3>
9805
9806
9807<p>
9808The pattern (a string, not a function) "<code>[\0-\x7F\xC2-\xFD][\x80-\xBF]*</code>"
9809(see <a href="#6.4.1">&sect;6.4.1</a>),
9810which matches exactly one UTF-8 byte sequence,
9811assuming that the subject is a valid UTF-8 string.
9812
9813
9814
9815
9816<p>
9817<hr><h3><a name="pdf-utf8.codes"><code>utf8.codes (s [, lax])</code></a></h3>
9818
9819
9820<p>
9821Returns values so that the construction
9822
9823<pre>
9824     for p, c in utf8.codes(s) do <em>body</em> end
9825</pre><p>
9826will iterate over all UTF-8 characters in string <code>s</code>,
9827with <code>p</code> being the position (in bytes) and <code>c</code> the code point
9828of each character.
9829It raises an error if it meets any invalid byte sequence.
9830
9831
9832
9833
9834<p>
9835<hr><h3><a name="pdf-utf8.codepoint"><code>utf8.codepoint (s [, i [, j [, lax]]])</code></a></h3>
9836
9837
9838<p>
9839Returns the code points (as integers) from all characters in <code>s</code>
9840that start between byte position <code>i</code> and <code>j</code> (both included).
9841The default for <code>i</code> is 1 and for <code>j</code> is <code>i</code>.
9842It raises an error if it meets any invalid byte sequence.
9843
9844
9845
9846
9847<p>
9848<hr><h3><a name="pdf-utf8.len"><code>utf8.len (s [, i [, j [, lax]]])</code></a></h3>
9849
9850
9851<p>
9852Returns the number of UTF-8 characters in string <code>s</code>
9853that start between positions <code>i</code> and <code>j</code> (both inclusive).
9854The default for <code>i</code> is 1 and for <code>j</code> is -1.
9855If it finds any invalid byte sequence,
9856returns <b>fail</b> plus the position of the first invalid byte.
9857
9858
9859
9860
9861<p>
9862<hr><h3><a name="pdf-utf8.offset"><code>utf8.offset (s, n [, i])</code></a></h3>
9863
9864
9865<p>
9866Returns the position (in bytes) where the encoding of the
9867<code>n</code>-th character of <code>s</code>
9868(counting from position <code>i</code>) starts.
9869A negative <code>n</code> gets characters before position <code>i</code>.
9870The default for <code>i</code> is 1 when <code>n</code> is non-negative
9871and <code>#s + 1</code> otherwise,
9872so that <code>utf8.offset(s, -n)</code> gets the offset of the
9873<code>n</code>-th character from the end of the string.
9874If the specified character is neither in the subject
9875nor right after its end,
9876the function returns <b>fail</b>.
9877
9878
9879<p>
9880As a special case,
9881when <code>n</code> is 0 the function returns the start of the encoding
9882of the character that contains the <code>i</code>-th byte of <code>s</code>.
9883
9884
9885<p>
9886This function assumes that <code>s</code> is a valid UTF-8 string.
9887
9888
9889
9890
9891
9892
9893
9894<h2>6.6 &ndash; <a name="6.6">Table Manipulation</a></h2>
9895
9896<p>
9897This library provides generic functions for table manipulation.
9898It provides all its functions inside the table <a name="pdf-table"><code>table</code></a>.
9899
9900
9901<p>
9902Remember that, whenever an operation needs the length of a table,
9903all caveats about the length operator apply (see <a href="#3.4.7">&sect;3.4.7</a>).
9904All functions ignore non-numeric keys
9905in the tables given as arguments.
9906
9907
9908<p>
9909<hr><h3><a name="pdf-table.concat"><code>table.concat (list [, sep [, i [, j]]])</code></a></h3>
9910
9911
9912<p>
9913Given a list where all elements are strings or numbers,
9914returns the string <code>list[i]..sep..list[i+1] &middot;&middot;&middot; sep..list[j]</code>.
9915The default value for <code>sep</code> is the empty string,
9916the default for <code>i</code> is 1,
9917and the default for <code>j</code> is <code>#list</code>.
9918If <code>i</code> is greater than <code>j</code>, returns the empty string.
9919
9920
9921
9922
9923<p>
9924<hr><h3><a name="pdf-table.insert"><code>table.insert (list, [pos,] value)</code></a></h3>
9925
9926
9927<p>
9928Inserts element <code>value</code> at position <code>pos</code> in <code>list</code>,
9929shifting up the elements
9930<code>list[pos], list[pos+1], &middot;&middot;&middot;, list[#list]</code>.
9931The default value for <code>pos</code> is <code>#list+1</code>,
9932so that a call <code>table.insert(t,x)</code> inserts <code>x</code> at the end
9933of the list <code>t</code>.
9934
9935
9936
9937
9938<p>
9939<hr><h3><a name="pdf-table.move"><code>table.move (a1, f, e, t [,a2])</code></a></h3>
9940
9941
9942<p>
9943Moves elements from the table <code>a1</code> to the table <code>a2</code>,
9944performing the equivalent to the following
9945multiple assignment:
9946<code>a2[t],&middot;&middot;&middot; = a1[f],&middot;&middot;&middot;,a1[e]</code>.
9947The default for <code>a2</code> is <code>a1</code>.
9948The destination range can overlap with the source range.
9949The number of elements to be moved must fit in a Lua integer.
9950
9951
9952<p>
9953Returns the destination table <code>a2</code>.
9954
9955
9956
9957
9958<p>
9959<hr><h3><a name="pdf-table.pack"><code>table.pack (&middot;&middot;&middot;)</code></a></h3>
9960
9961
9962<p>
9963Returns a new table with all arguments stored into keys 1, 2, etc.
9964and with a field "<code>n</code>" with the total number of arguments.
9965Note that the resulting table may not be a sequence,
9966if some arguments are <b>nil</b>.
9967
9968
9969
9970
9971<p>
9972<hr><h3><a name="pdf-table.remove"><code>table.remove (list [, pos])</code></a></h3>
9973
9974
9975<p>
9976Removes from <code>list</code> the element at position <code>pos</code>,
9977returning the value of the removed element.
9978When <code>pos</code> is an integer between 1 and <code>#list</code>,
9979it shifts down the elements
9980<code>list[pos+1], list[pos+2], &middot;&middot;&middot;, list[#list]</code>
9981and erases element <code>list[#list]</code>;
9982The index <code>pos</code> can also be 0 when <code>#list</code> is 0,
9983or <code>#list + 1</code>.
9984
9985
9986<p>
9987The default value for <code>pos</code> is <code>#list</code>,
9988so that a call <code>table.remove(l)</code> removes the last element
9989of the list <code>l</code>.
9990
9991
9992
9993
9994<p>
9995<hr><h3><a name="pdf-table.sort"><code>table.sort (list [, comp])</code></a></h3>
9996
9997
9998<p>
9999Sorts the list elements in a given order, <em>in-place</em>,
10000from <code>list[1]</code> to <code>list[#list]</code>.
10001If <code>comp</code> is given,
10002then it must be a function that receives two list elements
10003and returns true when the first element must come
10004before the second in the final order,
10005so that, after the sort,
10006<code>i &lt;= j</code> implies <code>not comp(list[j],list[i])</code>.
10007If <code>comp</code> is not given,
10008then the standard Lua operator <code>&lt;</code> is used instead.
10009
10010
10011<p>
10012The <code>comp</code> function must define a consistent order;
10013more formally, the function must define a strict weak order.
10014(A weak order is similar to a total order,
10015but it can equate different elements for comparison purposes.)
10016
10017
10018<p>
10019The sort algorithm is not stable:
10020Different elements considered equal by the given order
10021may have their relative positions changed by the sort.
10022
10023
10024
10025
10026<p>
10027<hr><h3><a name="pdf-table.unpack"><code>table.unpack (list [, i [, j]])</code></a></h3>
10028
10029
10030<p>
10031Returns the elements from the given list.
10032This function is equivalent to
10033
10034<pre>
10035     return list[i], list[i+1], &middot;&middot;&middot;, list[j]
10036</pre><p>
10037By default, <code>i</code> is&nbsp;1 and <code>j</code> is <code>#list</code>.
10038
10039
10040
10041
10042
10043
10044
10045<h2>6.7 &ndash; <a name="6.7">Mathematical Functions</a></h2>
10046
10047<p>
10048This library provides basic mathematical functions.
10049It provides all its functions and constants inside the table <a name="pdf-math"><code>math</code></a>.
10050Functions with the annotation "<code>integer/float</code>" give
10051integer results for integer arguments
10052and float results for non-integer arguments.
10053The rounding functions
10054<a href="#pdf-math.ceil"><code>math.ceil</code></a>, <a href="#pdf-math.floor"><code>math.floor</code></a>, and <a href="#pdf-math.modf"><code>math.modf</code></a>
10055return an integer when the result fits in the range of an integer,
10056or a float otherwise.
10057
10058
10059<p>
10060<hr><h3><a name="pdf-math.abs"><code>math.abs (x)</code></a></h3>
10061
10062
10063<p>
10064Returns the maximum value between <code>x</code> and <code>-x</code>. (integer/float)
10065
10066
10067
10068
10069<p>
10070<hr><h3><a name="pdf-math.acos"><code>math.acos (x)</code></a></h3>
10071
10072
10073<p>
10074Returns the arc cosine of <code>x</code> (in radians).
10075
10076
10077
10078
10079<p>
10080<hr><h3><a name="pdf-math.asin"><code>math.asin (x)</code></a></h3>
10081
10082
10083<p>
10084Returns the arc sine of <code>x</code> (in radians).
10085
10086
10087
10088
10089<p>
10090<hr><h3><a name="pdf-math.atan"><code>math.atan (y [, x])</code></a></h3>
10091
10092
10093<p>
10094
10095Returns the arc tangent of <code>y/x</code> (in radians),
10096but uses the signs of both arguments to find the
10097quadrant of the result.
10098It also handles correctly the case of <code>x</code> being zero.
10099
10100
10101<p>
10102The default value for <code>x</code> is 1,
10103so that the call <code>math.atan(y)</code>
10104returns the arc tangent of <code>y</code>.
10105
10106
10107
10108
10109<p>
10110<hr><h3><a name="pdf-math.ceil"><code>math.ceil (x)</code></a></h3>
10111
10112
10113<p>
10114Returns the smallest integral value greater than or equal to <code>x</code>.
10115
10116
10117
10118
10119<p>
10120<hr><h3><a name="pdf-math.cos"><code>math.cos (x)</code></a></h3>
10121
10122
10123<p>
10124Returns the cosine of <code>x</code> (assumed to be in radians).
10125
10126
10127
10128
10129<p>
10130<hr><h3><a name="pdf-math.deg"><code>math.deg (x)</code></a></h3>
10131
10132
10133<p>
10134Converts the angle <code>x</code> from radians to degrees.
10135
10136
10137
10138
10139<p>
10140<hr><h3><a name="pdf-math.exp"><code>math.exp (x)</code></a></h3>
10141
10142
10143<p>
10144Returns the value <em>e<sup>x</sup></em>
10145(where <code>e</code> is the base of natural logarithms).
10146
10147
10148
10149
10150<p>
10151<hr><h3><a name="pdf-math.floor"><code>math.floor (x)</code></a></h3>
10152
10153
10154<p>
10155Returns the largest integral value less than or equal to <code>x</code>.
10156
10157
10158
10159
10160<p>
10161<hr><h3><a name="pdf-math.fmod"><code>math.fmod (x, y)</code></a></h3>
10162
10163
10164<p>
10165Returns the remainder of the division of <code>x</code> by <code>y</code>
10166that rounds the quotient towards zero. (integer/float)
10167
10168
10169
10170
10171<p>
10172<hr><h3><a name="pdf-math.huge"><code>math.huge</code></a></h3>
10173
10174
10175<p>
10176The float value <code>HUGE_VAL</code>,
10177a value greater than any other numeric value.
10178
10179
10180
10181
10182<p>
10183<hr><h3><a name="pdf-math.log"><code>math.log (x [, base])</code></a></h3>
10184
10185
10186<p>
10187Returns the logarithm of <code>x</code> in the given base.
10188The default for <code>base</code> is <em>e</em>
10189(so that the function returns the natural logarithm of <code>x</code>).
10190
10191
10192
10193
10194<p>
10195<hr><h3><a name="pdf-math.max"><code>math.max (x, &middot;&middot;&middot;)</code></a></h3>
10196
10197
10198<p>
10199Returns the argument with the maximum value,
10200according to the Lua operator <code>&lt;</code>.
10201
10202
10203
10204
10205<p>
10206<hr><h3><a name="pdf-math.maxinteger"><code>math.maxinteger</code></a></h3>
10207An integer with the maximum value for an integer.
10208
10209
10210
10211
10212<p>
10213<hr><h3><a name="pdf-math.min"><code>math.min (x, &middot;&middot;&middot;)</code></a></h3>
10214
10215
10216<p>
10217Returns the argument with the minimum value,
10218according to the Lua operator <code>&lt;</code>.
10219
10220
10221
10222
10223<p>
10224<hr><h3><a name="pdf-math.mininteger"><code>math.mininteger</code></a></h3>
10225An integer with the minimum value for an integer.
10226
10227
10228
10229
10230<p>
10231<hr><h3><a name="pdf-math.modf"><code>math.modf (x)</code></a></h3>
10232
10233
10234<p>
10235Returns the integral part of <code>x</code> and the fractional part of <code>x</code>.
10236Its second result is always a float.
10237
10238
10239
10240
10241<p>
10242<hr><h3><a name="pdf-math.pi"><code>math.pi</code></a></h3>
10243
10244
10245<p>
10246The value of <em>&pi;</em>.
10247
10248
10249
10250
10251<p>
10252<hr><h3><a name="pdf-math.rad"><code>math.rad (x)</code></a></h3>
10253
10254
10255<p>
10256Converts the angle <code>x</code> from degrees to radians.
10257
10258
10259
10260
10261<p>
10262<hr><h3><a name="pdf-math.random"><code>math.random ([m [, n]])</code></a></h3>
10263
10264
10265<p>
10266When called without arguments,
10267returns a pseudo-random float with uniform distribution
10268in the range  <em>[0,1)</em>.
10269When called with two integers <code>m</code> and <code>n</code>,
10270<code>math.random</code> returns a pseudo-random integer
10271with uniform distribution in the range <em>[m, n]</em>.
10272The call <code>math.random(n)</code>, for a positive <code>n</code>,
10273is equivalent to <code>math.random(1,n)</code>.
10274The call <code>math.random(0)</code> produces an integer with
10275all bits (pseudo)random.
10276
10277
10278<p>
10279This function uses the <code>xoshiro256**</code> algorithm to produce
10280pseudo-random 64-bit integers,
10281which are the results of calls with argument&nbsp;0.
10282Other results (ranges and floats)
10283are unbiased extracted from these integers.
10284
10285
10286<p>
10287Lua initializes its pseudo-random generator with the equivalent of
10288a call to <a href="#pdf-math.randomseed"><code>math.randomseed</code></a> with no arguments,
10289so that <code>math.random</code> should generate
10290different sequences of results each time the program runs.
10291
10292
10293
10294
10295<p>
10296<hr><h3><a name="pdf-math.randomseed"><code>math.randomseed ([x [, y]])</code></a></h3>
10297
10298
10299<p>
10300When called with at least one argument,
10301the integer parameters <code>x</code> and <code>y</code> are
10302joined into a 128-bit <em>seed</em> that
10303is used to reinitialize the pseudo-random generator;
10304equal seeds produce equal sequences of numbers.
10305The default for <code>y</code> is zero.
10306
10307
10308<p>
10309When called with no arguments,
10310Lua generates a seed with
10311a weak attempt for randomness.
10312
10313
10314<p>
10315This function returns the two seed components
10316that were effectively used,
10317so that setting them again repeats the sequence.
10318
10319
10320<p>
10321To ensure a required level of randomness to the initial state
10322(or contrarily, to have a deterministic sequence,
10323for instance when debugging a program),
10324you should call <a href="#pdf-math.randomseed"><code>math.randomseed</code></a> with explicit arguments.
10325
10326
10327
10328
10329<p>
10330<hr><h3><a name="pdf-math.sin"><code>math.sin (x)</code></a></h3>
10331
10332
10333<p>
10334Returns the sine of <code>x</code> (assumed to be in radians).
10335
10336
10337
10338
10339<p>
10340<hr><h3><a name="pdf-math.sqrt"><code>math.sqrt (x)</code></a></h3>
10341
10342
10343<p>
10344Returns the square root of <code>x</code>.
10345(You can also use the expression <code>x^0.5</code> to compute this value.)
10346
10347
10348
10349
10350<p>
10351<hr><h3><a name="pdf-math.tan"><code>math.tan (x)</code></a></h3>
10352
10353
10354<p>
10355Returns the tangent of <code>x</code> (assumed to be in radians).
10356
10357
10358
10359
10360<p>
10361<hr><h3><a name="pdf-math.tointeger"><code>math.tointeger (x)</code></a></h3>
10362
10363
10364<p>
10365If the value <code>x</code> is convertible to an integer,
10366returns that integer.
10367Otherwise, returns <b>fail</b>.
10368
10369
10370
10371
10372<p>
10373<hr><h3><a name="pdf-math.type"><code>math.type (x)</code></a></h3>
10374
10375
10376<p>
10377Returns "<code>integer</code>" if <code>x</code> is an integer,
10378"<code>float</code>" if it is a float,
10379or <b>fail</b> if <code>x</code> is not a number.
10380
10381
10382
10383
10384<p>
10385<hr><h3><a name="pdf-math.ult"><code>math.ult (m, n)</code></a></h3>
10386
10387
10388<p>
10389Returns a boolean,
10390<b>true</b> if and only if integer <code>m</code> is below integer <code>n</code> when
10391they are compared as unsigned integers.
10392
10393
10394
10395
10396
10397
10398
10399<h2>6.8 &ndash; <a name="6.8">Input and Output Facilities</a></h2>
10400
10401<p>
10402The I/O library provides two different styles for file manipulation.
10403The first one uses implicit file handles;
10404that is, there are operations to set a default input file and a
10405default output file,
10406and all input/output operations are done over these default files.
10407The second style uses explicit file handles.
10408
10409
10410<p>
10411When using implicit file handles,
10412all operations are supplied by table <a name="pdf-io"><code>io</code></a>.
10413When using explicit file handles,
10414the operation <a href="#pdf-io.open"><code>io.open</code></a> returns a file handle
10415and then all operations are supplied as methods of the file handle.
10416
10417
10418<p>
10419The metatable for file handles provides metamethods
10420for <code>__gc</code> and <code>__close</code> that try
10421to close the file when called.
10422
10423
10424<p>
10425The table <code>io</code> also provides
10426three predefined file handles with their usual meanings from C:
10427<a name="pdf-io.stdin"><code>io.stdin</code></a>, <a name="pdf-io.stdout"><code>io.stdout</code></a>, and <a name="pdf-io.stderr"><code>io.stderr</code></a>.
10428The I/O library never closes these files.
10429
10430
10431<p>
10432Unless otherwise stated,
10433all I/O functions return <b>fail</b> on failure,
10434plus an error message as a second result and
10435a system-dependent error code as a third result,
10436and some non-false value on success.
10437On non-POSIX systems,
10438the computation of the error message and error code
10439in case of errors
10440may be not thread safe,
10441because they rely on the global C variable <code>errno</code>.
10442
10443
10444<p>
10445<hr><h3><a name="pdf-io.close"><code>io.close ([file])</code></a></h3>
10446
10447
10448<p>
10449Equivalent to <code>file:close()</code>.
10450Without a <code>file</code>, closes the default output file.
10451
10452
10453
10454
10455<p>
10456<hr><h3><a name="pdf-io.flush"><code>io.flush ()</code></a></h3>
10457
10458
10459<p>
10460Equivalent to <code>io.output():flush()</code>.
10461
10462
10463
10464
10465<p>
10466<hr><h3><a name="pdf-io.input"><code>io.input ([file])</code></a></h3>
10467
10468
10469<p>
10470When called with a file name, it opens the named file (in text mode),
10471and sets its handle as the default input file.
10472When called with a file handle,
10473it simply sets this file handle as the default input file.
10474When called without arguments,
10475it returns the current default input file.
10476
10477
10478<p>
10479In case of errors this function raises the error,
10480instead of returning an error code.
10481
10482
10483
10484
10485<p>
10486<hr><h3><a name="pdf-io.lines"><code>io.lines ([filename, &middot;&middot;&middot;])</code></a></h3>
10487
10488
10489<p>
10490Opens the given file name in read mode
10491and returns an iterator function that
10492works like <code>file:lines(&middot;&middot;&middot;)</code> over the opened file.
10493When the iterator function fails to read any value,
10494it automatically closes the file.
10495Besides the iterator function,
10496<code>io.lines</code> returns three other values:
10497two <b>nil</b> values as placeholders,
10498plus the created file handle.
10499Therefore, when used in a generic <b>for</b> loop,
10500the file is closed also if the loop is interrupted by an
10501error or a <b>break</b>.
10502
10503
10504<p>
10505The call <code>io.lines()</code> (with no file name) is equivalent
10506to <code>io.input():lines("l")</code>;
10507that is, it iterates over the lines of the default input file.
10508In this case, the iterator does not close the file when the loop ends.
10509
10510
10511<p>
10512In case of errors opening the file,
10513this function raises the error,
10514instead of returning an error code.
10515
10516
10517
10518
10519<p>
10520<hr><h3><a name="pdf-io.open"><code>io.open (filename [, mode])</code></a></h3>
10521
10522
10523<p>
10524This function opens a file,
10525in the mode specified in the string <code>mode</code>.
10526In case of success,
10527it returns a new file handle.
10528
10529
10530<p>
10531The <code>mode</code> string can be any of the following:
10532
10533<ul>
10534<li><b>"<code>r</code>": </b> read mode (the default);</li>
10535<li><b>"<code>w</code>": </b> write mode;</li>
10536<li><b>"<code>a</code>": </b> append mode;</li>
10537<li><b>"<code>r+</code>": </b> update mode, all previous data is preserved;</li>
10538<li><b>"<code>w+</code>": </b> update mode, all previous data is erased;</li>
10539<li><b>"<code>a+</code>": </b> append update mode, previous data is preserved,
10540  writing is only allowed at the end of file.</li>
10541</ul><p>
10542The <code>mode</code> string can also have a '<code>b</code>' at the end,
10543which is needed in some systems to open the file in binary mode.
10544
10545
10546
10547
10548<p>
10549<hr><h3><a name="pdf-io.output"><code>io.output ([file])</code></a></h3>
10550
10551
10552<p>
10553Similar to <a href="#pdf-io.input"><code>io.input</code></a>, but operates over the default output file.
10554
10555
10556
10557
10558<p>
10559<hr><h3><a name="pdf-io.popen"><code>io.popen (prog [, mode])</code></a></h3>
10560
10561
10562<p>
10563This function is system dependent and is not available
10564on all platforms.
10565
10566
10567<p>
10568Starts the program <code>prog</code> in a separated process and returns
10569a file handle that you can use to read data from this program
10570(if <code>mode</code> is <code>"r"</code>, the default)
10571or to write data to this program
10572(if <code>mode</code> is <code>"w"</code>).
10573
10574
10575
10576
10577<p>
10578<hr><h3><a name="pdf-io.read"><code>io.read (&middot;&middot;&middot;)</code></a></h3>
10579
10580
10581<p>
10582Equivalent to <code>io.input():read(&middot;&middot;&middot;)</code>.
10583
10584
10585
10586
10587<p>
10588<hr><h3><a name="pdf-io.tmpfile"><code>io.tmpfile ()</code></a></h3>
10589
10590
10591<p>
10592In case of success,
10593returns a handle for a temporary file.
10594This file is opened in update mode
10595and it is automatically removed when the program ends.
10596
10597
10598
10599
10600<p>
10601<hr><h3><a name="pdf-io.type"><code>io.type (obj)</code></a></h3>
10602
10603
10604<p>
10605Checks whether <code>obj</code> is a valid file handle.
10606Returns the string <code>"file"</code> if <code>obj</code> is an open file handle,
10607<code>"closed file"</code> if <code>obj</code> is a closed file handle,
10608or <b>fail</b> if <code>obj</code> is not a file handle.
10609
10610
10611
10612
10613<p>
10614<hr><h3><a name="pdf-io.write"><code>io.write (&middot;&middot;&middot;)</code></a></h3>
10615
10616
10617<p>
10618Equivalent to <code>io.output():write(&middot;&middot;&middot;)</code>.
10619
10620
10621
10622
10623<p>
10624<hr><h3><a name="pdf-file:close"><code>file:close ()</code></a></h3>
10625
10626
10627<p>
10628Closes <code>file</code>.
10629Note that files are automatically closed when
10630their handles are garbage collected,
10631but that takes an unpredictable amount of time to happen.
10632
10633
10634<p>
10635When closing a file handle created with <a href="#pdf-io.popen"><code>io.popen</code></a>,
10636<a href="#pdf-file:close"><code>file:close</code></a> returns the same values
10637returned by <a href="#pdf-os.execute"><code>os.execute</code></a>.
10638
10639
10640
10641
10642<p>
10643<hr><h3><a name="pdf-file:flush"><code>file:flush ()</code></a></h3>
10644
10645
10646<p>
10647Saves any written data to <code>file</code>.
10648
10649
10650
10651
10652<p>
10653<hr><h3><a name="pdf-file:lines"><code>file:lines (&middot;&middot;&middot;)</code></a></h3>
10654
10655
10656<p>
10657Returns an iterator function that,
10658each time it is called,
10659reads the file according to the given formats.
10660When no format is given,
10661uses "<code>l</code>" as a default.
10662As an example, the construction
10663
10664<pre>
10665     for c in file:lines(1) do <em>body</em> end
10666</pre><p>
10667will iterate over all characters of the file,
10668starting at the current position.
10669Unlike <a href="#pdf-io.lines"><code>io.lines</code></a>, this function does not close the file
10670when the loop ends.
10671
10672
10673
10674
10675<p>
10676<hr><h3><a name="pdf-file:read"><code>file:read (&middot;&middot;&middot;)</code></a></h3>
10677
10678
10679<p>
10680Reads the file <code>file</code>,
10681according to the given formats, which specify what to read.
10682For each format,
10683the function returns a string or a number with the characters read,
10684or <b>fail</b> if it cannot read data with the specified format.
10685(In this latter case,
10686the function does not read subsequent formats.)
10687When called without arguments,
10688it uses a default format that reads the next line
10689(see below).
10690
10691
10692<p>
10693The available formats are
10694
10695<ul>
10696
10697<li><b>"<code>n</code>": </b>
10698reads a numeral and returns it as a float or an integer,
10699following the lexical conventions of Lua.
10700(The numeral may have leading whitespaces and a sign.)
10701This format always reads the longest input sequence that
10702is a valid prefix for a numeral;
10703if that prefix does not form a valid numeral
10704(e.g., an empty string, "<code>0x</code>", or "<code>3.4e-</code>")
10705or it is too long (more than 200 characters),
10706it is discarded and the format returns <b>fail</b>.
10707</li>
10708
10709<li><b>"<code>a</code>": </b>
10710reads the whole file, starting at the current position.
10711On end of file, it returns the empty string;
10712this format never fails.
10713</li>
10714
10715<li><b>"<code>l</code>": </b>
10716reads the next line skipping the end of line,
10717returning <b>fail</b> on end of file.
10718This is the default format.
10719</li>
10720
10721<li><b>"<code>L</code>": </b>
10722reads the next line keeping the end-of-line character (if present),
10723returning <b>fail</b> on end of file.
10724</li>
10725
10726<li><b><em>number</em>: </b>
10727reads a string with up to this number of bytes,
10728returning <b>fail</b> on end of file.
10729If <code>number</code> is zero,
10730it reads nothing and returns an empty string,
10731or <b>fail</b> on end of file.
10732</li>
10733
10734</ul><p>
10735The formats "<code>l</code>" and "<code>L</code>" should be used only for text files.
10736
10737
10738
10739
10740<p>
10741<hr><h3><a name="pdf-file:seek"><code>file:seek ([whence [, offset]])</code></a></h3>
10742
10743
10744<p>
10745Sets and gets the file position,
10746measured from the beginning of the file,
10747to the position given by <code>offset</code> plus a base
10748specified by the string <code>whence</code>, as follows:
10749
10750<ul>
10751<li><b>"<code>set</code>": </b> base is position 0 (beginning of the file);</li>
10752<li><b>"<code>cur</code>": </b> base is current position;</li>
10753<li><b>"<code>end</code>": </b> base is end of file;</li>
10754</ul><p>
10755In case of success, <code>seek</code> returns the final file position,
10756measured in bytes from the beginning of the file.
10757If <code>seek</code> fails, it returns <b>fail</b>,
10758plus a string describing the error.
10759
10760
10761<p>
10762The default value for <code>whence</code> is <code>"cur"</code>,
10763and for <code>offset</code> is 0.
10764Therefore, the call <code>file:seek()</code> returns the current
10765file position, without changing it;
10766the call <code>file:seek("set")</code> sets the position to the
10767beginning of the file (and returns 0);
10768and the call <code>file:seek("end")</code> sets the position to the
10769end of the file, and returns its size.
10770
10771
10772
10773
10774<p>
10775<hr><h3><a name="pdf-file:setvbuf"><code>file:setvbuf (mode [, size])</code></a></h3>
10776
10777
10778<p>
10779Sets the buffering mode for a file.
10780There are three available modes:
10781
10782<ul>
10783<li><b>"<code>no</code>": </b> no buffering.</li>
10784<li><b>"<code>full</code>": </b> full buffering.</li>
10785<li><b>"<code>line</code>": </b> line buffering.</li>
10786</ul>
10787
10788<p>
10789For the last two cases,
10790<code>size</code> is a hint for the size of the buffer, in bytes.
10791The default is an appropriate size.
10792
10793
10794<p>
10795The specific behavior of each mode is non portable;
10796check the underlying ISO&nbsp;C function <code>setvbuf</code> in your platform for
10797more details.
10798
10799
10800
10801
10802<p>
10803<hr><h3><a name="pdf-file:write"><code>file:write (&middot;&middot;&middot;)</code></a></h3>
10804
10805
10806<p>
10807Writes the value of each of its arguments to <code>file</code>.
10808The arguments must be strings or numbers.
10809
10810
10811<p>
10812In case of success, this function returns <code>file</code>.
10813
10814
10815
10816
10817
10818
10819
10820<h2>6.9 &ndash; <a name="6.9">Operating System Facilities</a></h2>
10821
10822<p>
10823This library is implemented through table <a name="pdf-os"><code>os</code></a>.
10824
10825
10826<p>
10827<hr><h3><a name="pdf-os.clock"><code>os.clock ()</code></a></h3>
10828
10829
10830<p>
10831Returns an approximation of the amount in seconds of CPU time
10832used by the program,
10833as returned by the underlying ISO&nbsp;C function <code>clock</code>.
10834
10835
10836
10837
10838<p>
10839<hr><h3><a name="pdf-os.date"><code>os.date ([format [, time]])</code></a></h3>
10840
10841
10842<p>
10843Returns a string or a table containing date and time,
10844formatted according to the given string <code>format</code>.
10845
10846
10847<p>
10848If the <code>time</code> argument is present,
10849this is the time to be formatted
10850(see the <a href="#pdf-os.time"><code>os.time</code></a> function for a description of this value).
10851Otherwise, <code>date</code> formats the current time.
10852
10853
10854<p>
10855If <code>format</code> starts with '<code>!</code>',
10856then the date is formatted in Coordinated Universal Time.
10857After this optional character,
10858if <code>format</code> is the string "<code>*t</code>",
10859then <code>date</code> returns a table with the following fields:
10860<code>year</code>, <code>month</code> (1&ndash;12), <code>day</code> (1&ndash;31),
10861<code>hour</code> (0&ndash;23), <code>min</code> (0&ndash;59),
10862<code>sec</code> (0&ndash;61, due to leap seconds),
10863<code>wday</code> (weekday, 1&ndash;7, Sunday is&nbsp;1),
10864<code>yday</code> (day of the year, 1&ndash;366),
10865and <code>isdst</code> (daylight saving flag, a boolean).
10866This last field may be absent
10867if the information is not available.
10868
10869
10870<p>
10871If <code>format</code> is not "<code>*t</code>",
10872then <code>date</code> returns the date as a string,
10873formatted according to the same rules as the ISO&nbsp;C function <code>strftime</code>.
10874
10875
10876<p>
10877If <code>format</code> is absent, it defaults to "<code>%c</code>",
10878which gives a human-readable date and time representation
10879using the current locale.
10880
10881
10882<p>
10883On non-POSIX systems,
10884this function may be not thread safe
10885because of its reliance on C&nbsp;function <code>gmtime</code> and C&nbsp;function <code>localtime</code>.
10886
10887
10888
10889
10890<p>
10891<hr><h3><a name="pdf-os.difftime"><code>os.difftime (t2, t1)</code></a></h3>
10892
10893
10894<p>
10895Returns the difference, in seconds,
10896from time <code>t1</code> to time <code>t2</code>
10897(where the times are values returned by <a href="#pdf-os.time"><code>os.time</code></a>).
10898In POSIX, Windows, and some other systems,
10899this value is exactly <code>t2</code><em>-</em><code>t1</code>.
10900
10901
10902
10903
10904<p>
10905<hr><h3><a name="pdf-os.execute"><code>os.execute ([command])</code></a></h3>
10906
10907
10908<p>
10909This function is equivalent to the ISO&nbsp;C function <code>system</code>.
10910It passes <code>command</code> to be executed by an operating system shell.
10911Its first result is <b>true</b>
10912if the command terminated successfully,
10913or <b>fail</b> otherwise.
10914After this first result
10915the function returns a string plus a number,
10916as follows:
10917
10918<ul>
10919
10920<li><b>"<code>exit</code>": </b>
10921the command terminated normally;
10922the following number is the exit status of the command.
10923</li>
10924
10925<li><b>"<code>signal</code>": </b>
10926the command was terminated by a signal;
10927the following number is the signal that terminated the command.
10928</li>
10929
10930</ul>
10931
10932<p>
10933When called without a <code>command</code>,
10934<code>os.execute</code> returns a boolean that is true if a shell is available.
10935
10936
10937
10938
10939<p>
10940<hr><h3><a name="pdf-os.exit"><code>os.exit ([code [, close]])</code></a></h3>
10941
10942
10943<p>
10944Calls the ISO&nbsp;C function <code>exit</code> to terminate the host program.
10945If <code>code</code> is <b>true</b>,
10946the returned status is <code>EXIT_SUCCESS</code>;
10947if <code>code</code> is <b>false</b>,
10948the returned status is <code>EXIT_FAILURE</code>;
10949if <code>code</code> is a number,
10950the returned status is this number.
10951The default value for <code>code</code> is <b>true</b>.
10952
10953
10954<p>
10955If the optional second argument <code>close</code> is true,
10956closes the Lua state before exiting.
10957
10958
10959
10960
10961<p>
10962<hr><h3><a name="pdf-os.getenv"><code>os.getenv (varname)</code></a></h3>
10963
10964
10965<p>
10966Returns the value of the process environment variable <code>varname</code>
10967or <b>fail</b> if the variable is not defined.
10968
10969
10970
10971
10972<p>
10973<hr><h3><a name="pdf-os.remove"><code>os.remove (filename)</code></a></h3>
10974
10975
10976<p>
10977Deletes the file (or empty directory, on POSIX systems)
10978with the given name.
10979If this function fails, it returns <b>fail</b>
10980plus a string describing the error and the error code.
10981Otherwise, it returns true.
10982
10983
10984
10985
10986<p>
10987<hr><h3><a name="pdf-os.rename"><code>os.rename (oldname, newname)</code></a></h3>
10988
10989
10990<p>
10991Renames the file or directory named <code>oldname</code> to <code>newname</code>.
10992If this function fails, it returns <b>fail</b>,
10993plus a string describing the error and the error code.
10994Otherwise, it returns true.
10995
10996
10997
10998
10999<p>
11000<hr><h3><a name="pdf-os.setlocale"><code>os.setlocale (locale [, category])</code></a></h3>
11001
11002
11003<p>
11004Sets the current locale of the program.
11005<code>locale</code> is a system-dependent string specifying a locale;
11006<code>category</code> is an optional string describing which category to change:
11007<code>"all"</code>, <code>"collate"</code>, <code>"ctype"</code>,
11008<code>"monetary"</code>, <code>"numeric"</code>, or <code>"time"</code>;
11009the default category is <code>"all"</code>.
11010The function returns the name of the new locale,
11011or <b>fail</b> if the request cannot be honored.
11012
11013
11014<p>
11015If <code>locale</code> is the empty string,
11016the current locale is set to an implementation-defined native locale.
11017If <code>locale</code> is the string "<code>C</code>",
11018the current locale is set to the standard C locale.
11019
11020
11021<p>
11022When called with <b>nil</b> as the first argument,
11023this function only returns the name of the current locale
11024for the given category.
11025
11026
11027<p>
11028This function may be not thread safe
11029because of its reliance on C&nbsp;function <code>setlocale</code>.
11030
11031
11032
11033
11034<p>
11035<hr><h3><a name="pdf-os.time"><code>os.time ([table])</code></a></h3>
11036
11037
11038<p>
11039Returns the current time when called without arguments,
11040or a time representing the local date and time specified by the given table.
11041This table must have fields <code>year</code>, <code>month</code>, and <code>day</code>,
11042and may have fields
11043<code>hour</code> (default is 12),
11044<code>min</code> (default is 0),
11045<code>sec</code> (default is 0),
11046and <code>isdst</code> (default is <b>nil</b>).
11047Other fields are ignored.
11048For a description of these fields, see the <a href="#pdf-os.date"><code>os.date</code></a> function.
11049
11050
11051<p>
11052When the function is called,
11053the values in these fields do not need to be inside their valid ranges.
11054For instance, if <code>sec</code> is -10,
11055it means 10 seconds before the time specified by the other fields;
11056if <code>hour</code> is 1000,
11057it means 1000 hours after the time specified by the other fields.
11058
11059
11060<p>
11061The returned value is a number, whose meaning depends on your system.
11062In POSIX, Windows, and some other systems,
11063this number counts the number
11064of seconds since some given start time (the "epoch").
11065In other systems, the meaning is not specified,
11066and the number returned by <code>time</code> can be used only as an argument to
11067<a href="#pdf-os.date"><code>os.date</code></a> and <a href="#pdf-os.difftime"><code>os.difftime</code></a>.
11068
11069
11070<p>
11071When called with a table,
11072<code>os.time</code> also normalizes all the fields
11073documented in the <a href="#pdf-os.date"><code>os.date</code></a> function,
11074so that they represent the same time as before the call
11075but with values inside their valid ranges.
11076
11077
11078
11079
11080<p>
11081<hr><h3><a name="pdf-os.tmpname"><code>os.tmpname ()</code></a></h3>
11082
11083
11084<p>
11085Returns a string with a file name that can
11086be used for a temporary file.
11087The file must be explicitly opened before its use
11088and explicitly removed when no longer needed.
11089
11090
11091<p>
11092In POSIX systems,
11093this function also creates a file with that name,
11094to avoid security risks.
11095(Someone else might create the file with wrong permissions
11096in the time between getting the name and creating the file.)
11097You still have to open the file to use it
11098and to remove it (even if you do not use it).
11099
11100
11101<p>
11102When possible,
11103you may prefer to use <a href="#pdf-io.tmpfile"><code>io.tmpfile</code></a>,
11104which automatically removes the file when the program ends.
11105
11106
11107
11108
11109
11110
11111
11112<h2>6.10 &ndash; <a name="6.10">The Debug Library</a></h2>
11113
11114<p>
11115This library provides
11116the functionality of the debug interface (<a href="#4.7">&sect;4.7</a>) to Lua programs.
11117You should exert care when using this library.
11118Several of its functions
11119violate basic assumptions about Lua code
11120(e.g., that variables local to a function
11121cannot be accessed from outside;
11122that userdata metatables cannot be changed by Lua code;
11123that Lua programs do not crash)
11124and therefore can compromise otherwise secure code.
11125Moreover, some functions in this library may be slow.
11126
11127
11128<p>
11129All functions in this library are provided
11130inside the <a name="pdf-debug"><code>debug</code></a> table.
11131All functions that operate over a thread
11132have an optional first argument which is the
11133thread to operate over.
11134The default is always the current thread.
11135
11136
11137<p>
11138<hr><h3><a name="pdf-debug.debug"><code>debug.debug ()</code></a></h3>
11139
11140
11141<p>
11142Enters an interactive mode with the user,
11143running each string that the user enters.
11144Using simple commands and other debug facilities,
11145the user can inspect global and local variables,
11146change their values, evaluate expressions, and so on.
11147A line containing only the word <code>cont</code> finishes this function,
11148so that the caller continues its execution.
11149
11150
11151<p>
11152Note that commands for <code>debug.debug</code> are not lexically nested
11153within any function and so have no direct access to local variables.
11154
11155
11156
11157
11158<p>
11159<hr><h3><a name="pdf-debug.gethook"><code>debug.gethook ([thread])</code></a></h3>
11160
11161
11162<p>
11163Returns the current hook settings of the thread, as three values:
11164the current hook function, the current hook mask,
11165and the current hook count,
11166as set by the <a href="#pdf-debug.sethook"><code>debug.sethook</code></a> function.
11167
11168
11169<p>
11170Returns <b>fail</b> if there is no active hook.
11171
11172
11173
11174
11175<p>
11176<hr><h3><a name="pdf-debug.getinfo"><code>debug.getinfo ([thread,] f [, what])</code></a></h3>
11177
11178
11179<p>
11180Returns a table with information about a function.
11181You can give the function directly
11182or you can give a number as the value of <code>f</code>,
11183which means the function running at level <code>f</code> of the call stack
11184of the given thread:
11185level&nbsp;0 is the current function (<code>getinfo</code> itself);
11186level&nbsp;1 is the function that called <code>getinfo</code>
11187(except for tail calls, which do not count in the stack);
11188and so on.
11189If <code>f</code> is a number greater than the number of active functions,
11190then <code>getinfo</code> returns <b>fail</b>.
11191
11192
11193<p>
11194The returned table can contain all the fields returned by <a href="#lua_getinfo"><code>lua_getinfo</code></a>,
11195with the string <code>what</code> describing which fields to fill in.
11196The default for <code>what</code> is to get all information available,
11197except the table of valid lines.
11198If present,
11199the option '<code>f</code>'
11200adds a field named <code>func</code> with the function itself.
11201If present,
11202the option '<code>L</code>'
11203adds a field named <code>activelines</code> with the table of
11204valid lines.
11205
11206
11207<p>
11208For instance, the expression <code>debug.getinfo(1,"n").name</code> returns
11209a name for the current function,
11210if a reasonable name can be found,
11211and the expression <code>debug.getinfo(print)</code>
11212returns a table with all available information
11213about the <a href="#pdf-print"><code>print</code></a> function.
11214
11215
11216
11217
11218<p>
11219<hr><h3><a name="pdf-debug.getlocal"><code>debug.getlocal ([thread,] f, local)</code></a></h3>
11220
11221
11222<p>
11223This function returns the name and the value of the local variable
11224with index <code>local</code> of the function at level <code>f</code> of the stack.
11225This function accesses not only explicit local variables,
11226but also parameters and temporary values.
11227
11228
11229<p>
11230The first parameter or local variable has index&nbsp;1, and so on,
11231following the order that they are declared in the code,
11232counting only the variables that are active
11233in the current scope of the function.
11234Compile-time constants may not appear in this listing,
11235if they were optimized away by the compiler.
11236Negative indices refer to vararg arguments;
11237-1 is the first vararg argument.
11238The function returns <b>fail</b>
11239if there is no variable with the given index,
11240and raises an error when called with a level out of range.
11241(You can call <a href="#pdf-debug.getinfo"><code>debug.getinfo</code></a> to check whether the level is valid.)
11242
11243
11244<p>
11245Variable names starting with '<code>(</code>' (open parenthesis)
11246represent variables with no known names
11247(internal variables such as loop control variables,
11248and variables from chunks saved without debug information).
11249
11250
11251<p>
11252The parameter <code>f</code> may also be a function.
11253In that case, <code>getlocal</code> returns only the name of function parameters.
11254
11255
11256
11257
11258<p>
11259<hr><h3><a name="pdf-debug.getmetatable"><code>debug.getmetatable (value)</code></a></h3>
11260
11261
11262<p>
11263Returns the metatable of the given <code>value</code>
11264or <b>nil</b> if it does not have a metatable.
11265
11266
11267
11268
11269<p>
11270<hr><h3><a name="pdf-debug.getregistry"><code>debug.getregistry ()</code></a></h3>
11271
11272
11273<p>
11274Returns the registry table (see <a href="#4.3">&sect;4.3</a>).
11275
11276
11277
11278
11279<p>
11280<hr><h3><a name="pdf-debug.getupvalue"><code>debug.getupvalue (f, up)</code></a></h3>
11281
11282
11283<p>
11284This function returns the name and the value of the upvalue
11285with index <code>up</code> of the function <code>f</code>.
11286The function returns <b>fail</b>
11287if there is no upvalue with the given index.
11288
11289
11290<p>
11291(For Lua functions,
11292upvalues are the external local variables that the function uses,
11293and that are consequently included in its closure.)
11294
11295
11296<p>
11297For C&nbsp;functions, this function uses the empty string <code>""</code>
11298as a name for all upvalues.
11299
11300
11301<p>
11302Variable name '<code>?</code>' (interrogation mark)
11303represents variables with no known names
11304(variables from chunks saved without debug information).
11305
11306
11307
11308
11309<p>
11310<hr><h3><a name="pdf-debug.getuservalue"><code>debug.getuservalue (u, n)</code></a></h3>
11311
11312
11313<p>
11314Returns the <code>n</code>-th user value associated
11315to the userdata <code>u</code> plus a boolean,
11316<b>false</b> if the userdata does not have that value.
11317
11318
11319
11320
11321<p>
11322<hr><h3><a name="pdf-debug.sethook"><code>debug.sethook ([thread,] hook, mask [, count])</code></a></h3>
11323
11324
11325<p>
11326Sets the given function as the debug hook.
11327The string <code>mask</code> and the number <code>count</code> describe
11328when the hook will be called.
11329The string mask may have any combination of the following characters,
11330with the given meaning:
11331
11332<ul>
11333<li><b>'<code>c</code>': </b> the hook is called every time Lua calls a function;</li>
11334<li><b>'<code>r</code>': </b> the hook is called every time Lua returns from a function;</li>
11335<li><b>'<code>l</code>': </b> the hook is called every time Lua enters a new line of code.</li>
11336</ul><p>
11337Moreover,
11338with a <code>count</code> different from zero,
11339the hook is called also after every <code>count</code> instructions.
11340
11341
11342<p>
11343When called without arguments,
11344<a href="#pdf-debug.sethook"><code>debug.sethook</code></a> turns off the hook.
11345
11346
11347<p>
11348When the hook is called, its first parameter is a string
11349describing the event that has triggered its call:
11350<code>"call"</code>, <code>"tail call"</code>, <code>"return"</code>,
11351<code>"line"</code>, and <code>"count"</code>.
11352For line events,
11353the hook also gets the new line number as its second parameter.
11354Inside a hook,
11355you can call <code>getinfo</code> with level&nbsp;2 to get more information about
11356the running function.
11357(Level&nbsp;0 is the <code>getinfo</code> function,
11358and level&nbsp;1 is the hook function.)
11359
11360
11361
11362
11363<p>
11364<hr><h3><a name="pdf-debug.setlocal"><code>debug.setlocal ([thread,] level, local, value)</code></a></h3>
11365
11366
11367<p>
11368This function assigns the value <code>value</code> to the local variable
11369with index <code>local</code> of the function at level <code>level</code> of the stack.
11370The function returns <b>fail</b> if there is no local
11371variable with the given index,
11372and raises an error when called with a <code>level</code> out of range.
11373(You can call <code>getinfo</code> to check whether the level is valid.)
11374Otherwise, it returns the name of the local variable.
11375
11376
11377<p>
11378See <a href="#pdf-debug.getlocal"><code>debug.getlocal</code></a> for more information about
11379variable indices and names.
11380
11381
11382
11383
11384<p>
11385<hr><h3><a name="pdf-debug.setmetatable"><code>debug.setmetatable (value, table)</code></a></h3>
11386
11387
11388<p>
11389Sets the metatable for the given <code>value</code> to the given <code>table</code>
11390(which can be <b>nil</b>).
11391Returns <code>value</code>.
11392
11393
11394
11395
11396<p>
11397<hr><h3><a name="pdf-debug.setupvalue"><code>debug.setupvalue (f, up, value)</code></a></h3>
11398
11399
11400<p>
11401This function assigns the value <code>value</code> to the upvalue
11402with index <code>up</code> of the function <code>f</code>.
11403The function returns <b>fail</b> if there is no upvalue
11404with the given index.
11405Otherwise, it returns the name of the upvalue.
11406
11407
11408<p>
11409See <a href="#pdf-debug.getupvalue"><code>debug.getupvalue</code></a> for more information about upvalues.
11410
11411
11412
11413
11414<p>
11415<hr><h3><a name="pdf-debug.setuservalue"><code>debug.setuservalue (udata, value, n)</code></a></h3>
11416
11417
11418<p>
11419Sets the given <code>value</code> as
11420the <code>n</code>-th user value associated to the given <code>udata</code>.
11421<code>udata</code> must be a full userdata.
11422
11423
11424<p>
11425Returns <code>udata</code>,
11426or <b>fail</b> if the userdata does not have that value.
11427
11428
11429
11430
11431<p>
11432<hr><h3><a name="pdf-debug.traceback"><code>debug.traceback ([thread,] [message [, level]])</code></a></h3>
11433
11434
11435<p>
11436If <code>message</code> is present but is neither a string nor <b>nil</b>,
11437this function returns <code>message</code> without further processing.
11438Otherwise,
11439it returns a string with a traceback of the call stack.
11440The optional <code>message</code> string is appended
11441at the beginning of the traceback.
11442An optional <code>level</code> number tells at which level
11443to start the traceback
11444(default is 1, the function calling <code>traceback</code>).
11445
11446
11447
11448
11449<p>
11450<hr><h3><a name="pdf-debug.upvalueid"><code>debug.upvalueid (f, n)</code></a></h3>
11451
11452
11453<p>
11454Returns a unique identifier (as a light userdata)
11455for the upvalue numbered <code>n</code>
11456from the given function.
11457
11458
11459<p>
11460These unique identifiers allow a program to check whether different
11461closures share upvalues.
11462Lua closures that share an upvalue
11463(that is, that access a same external local variable)
11464will return identical ids for those upvalue indices.
11465
11466
11467
11468
11469<p>
11470<hr><h3><a name="pdf-debug.upvaluejoin"><code>debug.upvaluejoin (f1, n1, f2, n2)</code></a></h3>
11471
11472
11473<p>
11474Make the <code>n1</code>-th upvalue of the Lua closure <code>f1</code>
11475refer to the <code>n2</code>-th upvalue of the Lua closure <code>f2</code>.
11476
11477
11478
11479
11480
11481
11482
11483<h1>7 &ndash; <a name="7">Lua Standalone</a></h1>
11484
11485<p>
11486Although Lua has been designed as an extension language,
11487to be embedded in a host C&nbsp;program,
11488it is also frequently used as a standalone language.
11489An interpreter for Lua as a standalone language,
11490called simply <code>lua</code>,
11491is provided with the standard distribution.
11492The standalone interpreter includes
11493all standard libraries.
11494Its usage is:
11495
11496<pre>
11497     lua [options] [script [args]]
11498</pre><p>
11499The options are:
11500
11501<ul>
11502<li><b><code>-e <em>stat</em></code>: </b> execute string <em>stat</em>;</li>
11503<li><b><code>-i</code>: </b> enter interactive mode after running <em>script</em>;</li>
11504<li><b><code>-l <em>mod</em></code>: </b> "require" <em>mod</em> and assign the
11505  result to global <em>mod</em>;</li>
11506<li><b><code>-v</code>: </b> print version information;</li>
11507<li><b><code>-E</code>: </b> ignore environment variables;</li>
11508<li><b><code>-W</code>: </b> turn warnings on;</li>
11509<li><b><code>--</code>: </b> stop handling options;</li>
11510<li><b><code>-</code>: </b> execute <code>stdin</code> as a file and stop handling options.</li>
11511</ul><p>
11512After handling its options, <code>lua</code> runs the given <em>script</em>.
11513When called without arguments,
11514<code>lua</code> behaves as <code>lua -v -i</code>
11515when the standard input (<code>stdin</code>) is a terminal,
11516and as <code>lua -</code> otherwise.
11517
11518
11519<p>
11520When called without the option <code>-E</code>,
11521the interpreter checks for an environment variable <a name="pdf-LUA_INIT_5_4"><code>LUA_INIT_5_4</code></a>
11522(or <a name="pdf-LUA_INIT"><code>LUA_INIT</code></a> if the versioned name is not defined)
11523before running any argument.
11524If the variable content has the format <code>@<em>filename</em></code>,
11525then <code>lua</code> executes the file.
11526Otherwise, <code>lua</code> executes the string itself.
11527
11528
11529<p>
11530When called with the option <code>-E</code>,
11531Lua does not consult any environment variables.
11532In particular,
11533the values of <a href="#pdf-package.path"><code>package.path</code></a> and <a href="#pdf-package.cpath"><code>package.cpath</code></a>
11534are set with the default paths defined in <code>luaconf.h</code>.
11535
11536
11537<p>
11538The options <code>-e</code>, <code>-l</code>, and <code>-W</code> are handled in
11539the order they appear.
11540For instance, an invocation like
11541
11542<pre>
11543     $ lua -e 'a=1' -llib1 script.lua
11544</pre><p>
11545will first set <code>a</code> to 1, then require the library <code>lib1</code>,
11546and finally run the file <code>script.lua</code> with no arguments.
11547(Here <code>$</code> is the shell prompt. Your prompt may be different.)
11548
11549
11550<p>
11551Before running any code,
11552<code>lua</code> collects all command-line arguments
11553in a global table called <code>arg</code>.
11554The script name goes to index 0,
11555the first argument after the script name goes to index 1,
11556and so on.
11557Any arguments before the script name
11558(that is, the interpreter name plus its options)
11559go to negative indices.
11560For instance, in the call
11561
11562<pre>
11563     $ lua -la b.lua t1 t2
11564</pre><p>
11565the table is like this:
11566
11567<pre>
11568     arg = { [-2] = "lua", [-1] = "-la",
11569             [0] = "b.lua",
11570             [1] = "t1", [2] = "t2" }
11571</pre><p>
11572If there is no script in the call,
11573the interpreter name goes to index 0,
11574followed by the other arguments.
11575For instance, the call
11576
11577<pre>
11578     $ lua -e "print(arg[1])"
11579</pre><p>
11580will print "<code>-e</code>".
11581If there is a script,
11582the script is called with arguments
11583<code>arg[1]</code>, &middot;&middot;&middot;, <code>arg[#arg]</code>.
11584Like all chunks in Lua,
11585the script is compiled as a vararg function.
11586
11587
11588<p>
11589In interactive mode,
11590Lua repeatedly prompts and waits for a line.
11591After reading a line,
11592Lua first try to interpret the line as an expression.
11593If it succeeds, it prints its value.
11594Otherwise, it interprets the line as a statement.
11595If you write an incomplete statement,
11596the interpreter waits for its completion
11597by issuing a different prompt.
11598
11599
11600<p>
11601If the global variable <a name="pdf-_PROMPT"><code>_PROMPT</code></a> contains a string,
11602then its value is used as the prompt.
11603Similarly, if the global variable <a name="pdf-_PROMPT2"><code>_PROMPT2</code></a> contains a string,
11604its value is used as the secondary prompt
11605(issued during incomplete statements).
11606
11607
11608<p>
11609In case of unprotected errors in the script,
11610the interpreter reports the error to the standard error stream.
11611If the error object is not a string but
11612has a metamethod <code>__tostring</code>,
11613the interpreter calls this metamethod to produce the final message.
11614Otherwise, the interpreter converts the error object to a string
11615and adds a stack traceback to it.
11616When warnings are on,
11617they are simply printed in the standard error output.
11618
11619
11620<p>
11621When finishing normally,
11622the interpreter closes its main Lua state
11623(see <a href="#lua_close"><code>lua_close</code></a>).
11624The script can avoid this step by
11625calling <a href="#pdf-os.exit"><code>os.exit</code></a> to terminate.
11626
11627
11628<p>
11629To allow the use of Lua as a
11630script interpreter in Unix systems,
11631Lua skips the first line of a file chunk if it starts with <code>#</code>.
11632Therefore, Lua scripts can be made into executable programs
11633by using <code>chmod +x</code> and the&nbsp;<code>#!</code> form,
11634as in
11635
11636<pre>
11637     #!/usr/local/bin/lua
11638</pre><p>
11639Of course,
11640the location of the Lua interpreter may be different in your machine.
11641If <code>lua</code> is in your <code>PATH</code>,
11642then
11643
11644<pre>
11645     #!/usr/bin/env lua
11646</pre><p>
11647is a more portable solution.
11648
11649
11650
11651<h1>8 &ndash; <a name="8">Incompatibilities with the Previous Version</a></h1>
11652
11653
11654
11655<p>
11656Here we list the incompatibilities that you may find when moving a program
11657from Lua&nbsp;5.3 to Lua&nbsp;5.4.
11658
11659
11660<p>
11661You can avoid some incompatibilities by compiling Lua with
11662appropriate options (see file <code>luaconf.h</code>).
11663However,
11664all these compatibility options will be removed in the future.
11665More often than not,
11666compatibility issues arise when these compatibility options
11667are removed.
11668So, whenever you have the chance,
11669you should try to test your code with a version of Lua compiled
11670with all compatibility options turned off.
11671That will ease transitions to newer versions of Lua.
11672
11673
11674<p>
11675Lua versions can always change the C API in ways that
11676do not imply source-code changes in a program,
11677such as the numeric values for constants
11678or the implementation of functions as macros.
11679Therefore,
11680you should never assume that binaries are compatible between
11681different Lua versions.
11682Always recompile clients of the Lua API when
11683using a new version.
11684
11685
11686<p>
11687Similarly, Lua versions can always change the internal representation
11688of precompiled chunks;
11689precompiled chunks are not compatible between different Lua versions.
11690
11691
11692<p>
11693The standard paths in the official distribution may
11694change between versions.
11695
11696
11697
11698
11699
11700<h2>8.1 &ndash; <a name="8.1">Incompatibilities in the Language</a></h2>
11701<ul>
11702
11703<li>
11704The coercion of strings to numbers in
11705arithmetic and bitwise operations
11706has been removed from the core language.
11707The string library does a similar job
11708for arithmetic (but not for bitwise) operations
11709using the string metamethods.
11710However, unlike in previous versions,
11711the new implementation preserves the implicit type of the numeral
11712in the string.
11713For instance, the result of <code>"1" + "2"</code> now is an integer,
11714not a float.
11715</li>
11716
11717<li>
11718Literal decimal integer constants that overflow are read as floats,
11719instead of wrapping around.
11720You can use hexadecimal notation for such constants if you
11721want the old behavior
11722(reading them as integers with wrap around).
11723</li>
11724
11725<li>
11726The use of the <code>__lt</code> metamethod to emulate <code>__le</code>
11727has been removed.
11728When needed, this metamethod must be explicitly defined.
11729</li>
11730
11731<li>
11732The semantics of the numerical <b>for</b> loop
11733over integers changed in some details.
11734In particular, the control variable never wraps around.
11735</li>
11736
11737<li>
11738A label for a <b>goto</b> cannot be declared where a label with the same
11739name is visible, even if this other label is declared in an enclosing
11740block.
11741</li>
11742
11743<li>
11744When finalizing an object,
11745Lua does not ignore <code>__gc</code> metamethods that are not functions.
11746Any value will be called, if present.
11747(Non-callable values will generate a warning,
11748like any other error when calling a finalizer.)
11749</li>
11750
11751</ul>
11752
11753
11754
11755
11756<h2>8.2 &ndash; <a name="8.2">Incompatibilities in the Libraries</a></h2>
11757<ul>
11758
11759<li>
11760The function <a href="#pdf-print"><code>print</code></a> does not call <a href="#pdf-tostring"><code>tostring</code></a>
11761to format its arguments;
11762instead, it has this functionality hardwired.
11763You should use <code>__tostring</code> to modify how values are printed.
11764</li>
11765
11766<li>
11767The pseudo-random number generator used by the function <a href="#pdf-math.random"><code>math.random</code></a>
11768now starts with a somewhat random seed.
11769Moreover, it uses a different algorithm.
11770</li>
11771
11772<li>
11773By default, the decoding functions in the <a href="#pdf-utf8"><code>utf8</code></a> library
11774do not accept surrogates as valid code points.
11775An extra parameter in these functions makes them more permissive.
11776</li>
11777
11778<li>
11779The options "<code>setpause</code>" and "<code>setstepmul</code>"
11780of the function <a href="#pdf-collectgarbage"><code>collectgarbage</code></a> are deprecated.
11781You should use the new option "<code>incremental</code>" to set them.
11782</li>
11783
11784<li>
11785The function <a href="#pdf-io.lines"><code>io.lines</code></a> now returns four values,
11786instead of just one.
11787That can be a problem when it is used as the sole
11788argument to another function that has optional parameters,
11789such as in <code>load(io.lines(filename, "L"))</code>.
11790To fix that issue,
11791you can wrap the call into parentheses,
11792to adjust its number of results to one.
11793</li>
11794
11795</ul>
11796
11797
11798
11799
11800<h2>8.3 &ndash; <a name="8.3">Incompatibilities in the API</a></h2>
11801
11802
11803<ul>
11804
11805<li>
11806Full userdata now has an arbitrary number of associated user values.
11807Therefore, the functions <code>lua_newuserdata</code>,
11808<code>lua_setuservalue</code>, and <code>lua_getuservalue</code> were
11809replaced by <a href="#lua_newuserdatauv"><code>lua_newuserdatauv</code></a>,
11810<a href="#lua_setiuservalue"><code>lua_setiuservalue</code></a>, and <a href="#lua_getiuservalue"><code>lua_getiuservalue</code></a>,
11811which have an extra argument.
11812
11813
11814<p>
11815For compatibility, the old names still work as macros assuming
11816one single user value.
11817Note, however, that userdata with zero user values
11818are more efficient memory-wise.
11819</li>
11820
11821<li>
11822The function <a href="#lua_resume"><code>lua_resume</code></a> has an extra parameter.
11823This out parameter returns the number of values on
11824the top of the stack that were yielded or returned by the coroutine.
11825(In previous versions,
11826those values were the entire stack.)
11827</li>
11828
11829<li>
11830The function <a href="#lua_version"><code>lua_version</code></a> returns the version number,
11831instead of an address of the version number.
11832The Lua core should work correctly with libraries using their
11833own static copies of the same core,
11834so there is no need to check whether they are using the same
11835address space.
11836</li>
11837
11838<li>
11839The constant <code>LUA_ERRGCMM</code> was removed.
11840Errors in finalizers are never propagated;
11841instead, they generate a warning.
11842</li>
11843
11844<li>
11845The options <code>LUA_GCSETPAUSE</code> and <code>LUA_GCSETSTEPMUL</code>
11846of the function <a href="#lua_gc"><code>lua_gc</code></a> are deprecated.
11847You should use the new option <code>LUA_GCINC</code> to set them.
11848</li>
11849
11850</ul>
11851
11852
11853
11854
11855<h1>9 &ndash; <a name="9">The Complete Syntax of Lua</a></h1>
11856
11857<p>
11858Here is the complete syntax of Lua in extended BNF.
11859As usual in extended BNF,
11860{A} means 0 or more As,
11861and [A] means an optional A.
11862(For operator precedences, see <a href="#3.4.8">&sect;3.4.8</a>;
11863for a description of the terminals
11864Name, Numeral,
11865and LiteralString, see <a href="#3.1">&sect;3.1</a>.)
11866
11867
11868
11869
11870<pre>
11871
11872	chunk ::= block
11873
11874	block ::= {stat} [retstat]
11875
11876	stat ::=  &lsquo;<b>;</b>&rsquo; |
11877		 varlist &lsquo;<b>=</b>&rsquo; explist |
11878		 functioncall |
11879		 label |
11880		 <b>break</b> |
11881		 <b>goto</b> Name |
11882		 <b>do</b> block <b>end</b> |
11883		 <b>while</b> exp <b>do</b> block <b>end</b> |
11884		 <b>repeat</b> block <b>until</b> exp |
11885		 <b>if</b> exp <b>then</b> block {<b>elseif</b> exp <b>then</b> block} [<b>else</b> block] <b>end</b> |
11886		 <b>for</b> Name &lsquo;<b>=</b>&rsquo; exp &lsquo;<b>,</b>&rsquo; exp [&lsquo;<b>,</b>&rsquo; exp] <b>do</b> block <b>end</b> |
11887		 <b>for</b> namelist <b>in</b> explist <b>do</b> block <b>end</b> |
11888		 <b>function</b> funcname funcbody |
11889		 <b>local</b> <b>function</b> Name funcbody |
11890		 <b>local</b> attnamelist [&lsquo;<b>=</b>&rsquo; explist]
11891
11892	attnamelist ::=  Name attrib {&lsquo;<b>,</b>&rsquo; Name attrib}
11893
11894	attrib ::= [&lsquo;<b>&lt;</b>&rsquo; Name &lsquo;<b>&gt;</b>&rsquo;]
11895
11896	retstat ::= <b>return</b> [explist] [&lsquo;<b>;</b>&rsquo;]
11897
11898	label ::= &lsquo;<b>::</b>&rsquo; Name &lsquo;<b>::</b>&rsquo;
11899
11900	funcname ::= Name {&lsquo;<b>.</b>&rsquo; Name} [&lsquo;<b>:</b>&rsquo; Name]
11901
11902	varlist ::= var {&lsquo;<b>,</b>&rsquo; var}
11903
11904	var ::=  Name | prefixexp &lsquo;<b>[</b>&rsquo; exp &lsquo;<b>]</b>&rsquo; | prefixexp &lsquo;<b>.</b>&rsquo; Name
11905
11906	namelist ::= Name {&lsquo;<b>,</b>&rsquo; Name}
11907
11908	explist ::= exp {&lsquo;<b>,</b>&rsquo; exp}
11909
11910	exp ::=  <b>nil</b> | <b>false</b> | <b>true</b> | Numeral | LiteralString | &lsquo;<b>...</b>&rsquo; | functiondef |
11911		 prefixexp | tableconstructor | exp binop exp | unop exp
11912
11913	prefixexp ::= var | functioncall | &lsquo;<b>(</b>&rsquo; exp &lsquo;<b>)</b>&rsquo;
11914
11915	functioncall ::=  prefixexp args | prefixexp &lsquo;<b>:</b>&rsquo; Name args
11916
11917	args ::=  &lsquo;<b>(</b>&rsquo; [explist] &lsquo;<b>)</b>&rsquo; | tableconstructor | LiteralString
11918
11919	functiondef ::= <b>function</b> funcbody
11920
11921	funcbody ::= &lsquo;<b>(</b>&rsquo; [parlist] &lsquo;<b>)</b>&rsquo; block <b>end</b>
11922
11923	parlist ::= namelist [&lsquo;<b>,</b>&rsquo; &lsquo;<b>...</b>&rsquo;] | &lsquo;<b>...</b>&rsquo;
11924
11925	tableconstructor ::= &lsquo;<b>{</b>&rsquo; [fieldlist] &lsquo;<b>}</b>&rsquo;
11926
11927	fieldlist ::= field {fieldsep field} [fieldsep]
11928
11929	field ::= &lsquo;<b>[</b>&rsquo; exp &lsquo;<b>]</b>&rsquo; &lsquo;<b>=</b>&rsquo; exp | Name &lsquo;<b>=</b>&rsquo; exp | exp
11930
11931	fieldsep ::= &lsquo;<b>,</b>&rsquo; | &lsquo;<b>;</b>&rsquo;
11932
11933	binop ::=  &lsquo;<b>+</b>&rsquo; | &lsquo;<b>-</b>&rsquo; | &lsquo;<b>*</b>&rsquo; | &lsquo;<b>/</b>&rsquo; | &lsquo;<b>//</b>&rsquo; | &lsquo;<b>^</b>&rsquo; | &lsquo;<b>%</b>&rsquo; |
11934		 &lsquo;<b>&amp;</b>&rsquo; | &lsquo;<b>~</b>&rsquo; | &lsquo;<b>|</b>&rsquo; | &lsquo;<b>&gt;&gt;</b>&rsquo; | &lsquo;<b>&lt;&lt;</b>&rsquo; | &lsquo;<b>..</b>&rsquo; |
11935		 &lsquo;<b>&lt;</b>&rsquo; | &lsquo;<b>&lt;=</b>&rsquo; | &lsquo;<b>&gt;</b>&rsquo; | &lsquo;<b>&gt;=</b>&rsquo; | &lsquo;<b>==</b>&rsquo; | &lsquo;<b>~=</b>&rsquo; |
11936		 <b>and</b> | <b>or</b>
11937
11938	unop ::= &lsquo;<b>-</b>&rsquo; | <b>not</b> | &lsquo;<b>#</b>&rsquo; | &lsquo;<b>~</b>&rsquo;
11939
11940</pre>
11941
11942<p>
11943
11944
11945
11946
11947
11948
11949
11950<P CLASS="footer">
11951Last update:
11952Thu Jan 13 11:33:16 UTC 2022
11953</P>
11954<!--
11955Last change: revised for Lua 5.4.4
11956-->
11957
11958</body></html>
11959
11960