mirror of
				https://github.com/openresty/openresty.git
				synced 2024-10-13 00:29:41 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			5879 lines
		
	
	
		
			193 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			5879 lines
		
	
	
		
			193 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
=pod
 | 
						||
 | 
						||
=encoding utf8
 | 
						||
 | 
						||
 | 
						||
=head1 Lua 5.1 Reference Manual
 | 
						||
 | 
						||
by Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes
 | 
						||
 | 
						||
Copyright E<copy> 2006E<ndash>2012 Lua.org, PUC-Rio. Freely available
 | 
						||
under the terms of the Lua license.
 | 
						||
 | 
						||
 | 
						||
contents E<middot> index E<middot> other versions
 | 
						||
 | 
						||
=head1 1 - Introduction
 | 
						||
 | 
						||
Lua is an extension programming language designed to support general
 | 
						||
procedural programming with data description facilities. It also offers
 | 
						||
good support for object-oriented programming, functional programming,
 | 
						||
and data-driven programming. Lua is intended to be used as a powerful,
 | 
						||
light-weight scripting language for any program that needs one. Lua is
 | 
						||
implemented as a library, written in I<clean> C (that is, in the common
 | 
						||
subset of ANSI C and C++).
 | 
						||
 | 
						||
Being an extension language, Lua has no notion of a "main" program: it
 | 
						||
only works I<embedded> in a host client, called the I<embedding
 | 
						||
program> or simply the I<host>. This host program can invoke functions
 | 
						||
to execute a piece of Lua code, can write and read Lua variables, and
 | 
						||
can register C functions to be called by Lua code. Through the use of C
 | 
						||
functions, Lua can be augmented to cope with a wide range of different
 | 
						||
domains, thus creating customized programming languages sharing a
 | 
						||
syntactical framework. The Lua distribution includes a sample host
 | 
						||
program called C<lua>, which uses the Lua library to offer a complete,
 | 
						||
stand-alone Lua interpreter.
 | 
						||
 | 
						||
Lua is free software, and is provided as usual with no guarantees, as
 | 
						||
stated in its license. The implementation described in this manual is
 | 
						||
available at Lua's official web site, C<www.lua.org>.
 | 
						||
 | 
						||
Like any other reference manual, this document is dry in places. For a
 | 
						||
discussion of the decisions behind the design of Lua, see the technical
 | 
						||
papers available at Lua's web site. For a detailed introduction to
 | 
						||
programming in Lua, see Roberto's book, I<Programming in Lua (Second
 | 
						||
Edition)>.
 | 
						||
 | 
						||
=head1 2 - The Language
 | 
						||
 | 
						||
This section describes the lexis, the syntax, and the semantics of Lua.
 | 
						||
In other words, this section describes which tokens are valid, how they
 | 
						||
can be combined, and what their combinations mean.
 | 
						||
 | 
						||
The language constructs will be explained using the usual extended BNF
 | 
						||
notation, in which {I<a>} means 0 or more I<a>'s, and [I<a>] means an
 | 
						||
optional I<a>. Non-terminals are shown like non-terminal, keywords are
 | 
						||
shown like B<kword>, and other terminal symbols are shown like
 | 
						||
`B<=>E<acute>. The complete syntax of Lua can be found in E<sect>8 at
 | 
						||
the end of this manual.
 | 
						||
 | 
						||
=head2 2.1 - Lexical Conventions
 | 
						||
 | 
						||
I<Names> (also called I<identifiers>) in Lua can be any string of
 | 
						||
letters, digits, and underscores, not beginning with a digit. This
 | 
						||
coincides with the definition of names in most languages. (The
 | 
						||
definition of letter depends on the current locale: any character
 | 
						||
considered alphabetic by the current locale can be used in an
 | 
						||
identifier.) Identifiers are used to name variables and table fields.
 | 
						||
 | 
						||
The following I<keywords> are reserved and cannot be used as names:
 | 
						||
 | 
						||
     and       break     do        else      elseif
 | 
						||
     end       false     for       function  if
 | 
						||
     in        local     nil       not       or
 | 
						||
     repeat    return    then      true      until     while
 | 
						||
 | 
						||
Lua is a case-sensitive language: C<and> is a reserved word, but C<And>
 | 
						||
and C<AND> are two different, valid names. As a convention, names
 | 
						||
starting with an underscore followed by uppercase letters (such as
 | 
						||
C<_VERSION>) are reserved for internal global variables used by Lua.
 | 
						||
 | 
						||
The following strings denote other tokens:
 | 
						||
 | 
						||
     +     -     *     /     %     ^     #
 | 
						||
     ==    ~=    <=    >=    <     >     =
 | 
						||
     (     )     {     }     [     ]
 | 
						||
     ;     :     ,     .     ..    ...
 | 
						||
 | 
						||
I<Literal strings> can be delimited by matching single or double
 | 
						||
quotes, and can contain the following C-like escape sequences: 'C<\a>'
 | 
						||
(bell), 'C<\b>' (backspace), 'C<\f>' (form feed), 'C<\n>' (newline),
 | 
						||
'C<\r>' (carriage return), 'C<\t>' (horizontal tab), 'C<\v>' (vertical
 | 
						||
tab), 'C<\\>' (backslash), 'C<\">' (quotation mark [double quote]), and
 | 
						||
'C<\'>' (apostrophe [single quote]). Moreover, a backslash followed by
 | 
						||
a real newline results in a newline in the string. A character in a
 | 
						||
string can also be specified by its numerical value using the escape
 | 
						||
sequence C<\I<ddd>>, where I<ddd> is a sequence of up to three decimal
 | 
						||
digits. (Note that if a numerical escape is to be followed by a digit,
 | 
						||
it must be expressed using exactly three digits.) Strings in Lua can
 | 
						||
contain any 8-bit value, including embedded zeros, which can be
 | 
						||
specified as 'C<\0>'.
 | 
						||
 | 
						||
Literal strings can also be defined using a long format enclosed by
 | 
						||
I<long brackets>. We define an I<opening long bracket of level I<n>> as
 | 
						||
an opening square bracket followed by I<n> equal signs followed by
 | 
						||
another opening square bracket. So, an opening long bracket of level 0
 | 
						||
is written as C<[[>, an opening long bracket of level 1 is written as
 | 
						||
C<[=[>, and so on. A I<closing long bracket> is defined similarly; for
 | 
						||
instance, a closing long bracket of level 4 is written as C<]====]>. A
 | 
						||
long string starts with an opening long bracket of any level and ends
 | 
						||
at the first closing long bracket of the same level. Literals in this
 | 
						||
bracketed form can run for several lines, do not interpret any escape
 | 
						||
sequences, and ignore long brackets of any other level. They can
 | 
						||
contain anything except a closing bracket of the proper level.
 | 
						||
 | 
						||
For convenience, when the opening long bracket is immediately followed
 | 
						||
by a newline, the newline is not included in the string. As an example,
 | 
						||
in a system using ASCII (in which 'C<a>' is coded as 97, newline is
 | 
						||
coded as 10, and 'C<1>' is coded as 49), the five literal strings below
 | 
						||
denote the same string:
 | 
						||
 | 
						||
     a = 'alo\n123"'
 | 
						||
     a = "alo\n123\""
 | 
						||
     a = '\97lo\10\04923"'
 | 
						||
     a = [[alo
 | 
						||
     123"]]
 | 
						||
     a = [==[
 | 
						||
     alo
 | 
						||
     123"]==]
 | 
						||
 | 
						||
A I<numerical constant> can be written with an optional decimal part
 | 
						||
and an optional decimal exponent. Lua also accepts integer hexadecimal
 | 
						||
constants, by prefixing them with C<0x>. Examples of valid numerical
 | 
						||
constants are
 | 
						||
 | 
						||
     3   3.0   3.1416   314.16e-2   0.31416E1   0xff   0x56
 | 
						||
 | 
						||
A I<comment> starts with a double hyphen (C<-->) anywhere outside a
 | 
						||
string. If the text immediately after C<--> is not an opening long
 | 
						||
bracket, the comment is a I<short comment>, which runs until the end of
 | 
						||
the line. Otherwise, it is a I<long comment>, which runs until the
 | 
						||
corresponding closing long bracket. Long comments are frequently used
 | 
						||
to disable code temporarily.
 | 
						||
 | 
						||
=head2 2.2 - Values and Types
 | 
						||
 | 
						||
Lua is a I<dynamically typed language>. This means that variables do
 | 
						||
not have types; only values do. There are no type definitions in the
 | 
						||
language. All values carry their own type.
 | 
						||
 | 
						||
All values in Lua are I<first-class values>. This means that all values
 | 
						||
can be stored in variables, passed as arguments to other functions, and
 | 
						||
returned as results.
 | 
						||
 | 
						||
There are eight basic types in Lua: I<nil>, I<boolean>, I<number>,
 | 
						||
I<string>, I<function>, I<userdata>, I<thread>, and I<table>. I<Nil> is
 | 
						||
the type of the value B<nil>, whose main property is to be different
 | 
						||
from any other value; it usually represents the absence of a useful
 | 
						||
value. I<Boolean> is the type of the values B<false> and B<true>. Both
 | 
						||
B<nil> and B<false> make a condition false; any other value makes it
 | 
						||
true. I<Number> represents real (double-precision floating-point)
 | 
						||
numbers. (It is easy to build Lua interpreters that use other internal
 | 
						||
representations for numbers, such as single-precision float or long
 | 
						||
integers; see file C<luaconf.h>.) I<String> represents arrays of
 | 
						||
characters. Lua is 8-bit clean: strings can contain any 8-bit
 | 
						||
character, including embedded zeros ('C<\0>') (see E<sect>2.1).
 | 
						||
 | 
						||
Lua can call (and manipulate) functions written in Lua and functions
 | 
						||
written in C (see E<sect>2.5.8).
 | 
						||
 | 
						||
The type I<userdata> is provided to allow arbitrary C data to be stored
 | 
						||
in Lua variables. This type corresponds to a block of raw memory and
 | 
						||
has no pre-defined operations in Lua, except assignment and identity
 | 
						||
test. However, by using I<metatables>, the programmer can define
 | 
						||
operations for userdata values (see E<sect>2.8). Userdata values cannot
 | 
						||
be created or modified in Lua, only through the C API. This guarantees
 | 
						||
the integrity of data owned by the host program.
 | 
						||
 | 
						||
The type I<thread> represents independent threads of execution and it
 | 
						||
is used to implement coroutines (see E<sect>2.11). Do not confuse Lua
 | 
						||
threads with operating-system threads. Lua supports coroutines on all
 | 
						||
systems, even those that do not support threads.
 | 
						||
 | 
						||
The type I<table> implements associative arrays, that is, arrays that
 | 
						||
can be indexed not only with numbers, but with any value (except
 | 
						||
B<nil>). Tables can be I<heterogeneous>; that is, they can contain
 | 
						||
values of all types (except B<nil>). Tables are the sole data
 | 
						||
structuring mechanism in Lua; they can be used to represent ordinary
 | 
						||
arrays, symbol tables, sets, records, graphs, trees, etc. To represent
 | 
						||
records, Lua uses the field name as an index. The language supports
 | 
						||
this representation by providing C<a.name> as syntactic sugar for
 | 
						||
C<a["name"]>. There are several convenient ways to create tables in Lua
 | 
						||
(see E<sect>2.5.7).
 | 
						||
 | 
						||
Like indices, the value of a table field can be of any type (except
 | 
						||
B<nil>). In particular, because functions are first-class values, table
 | 
						||
fields can contain functions. Thus tables can also carry I<methods>
 | 
						||
(see E<sect>2.5.9).
 | 
						||
 | 
						||
Tables, functions, threads, and (full) userdata values are I<objects>:
 | 
						||
variables do not actually I<contain> these values, only I<references>
 | 
						||
to them. Assignment, parameter passing, and function returns always
 | 
						||
manipulate references to such values; these operations do not imply any
 | 
						||
kind of copy.
 | 
						||
 | 
						||
The library function C<type> returns a string describing the type of a
 | 
						||
given value.
 | 
						||
 | 
						||
=head2 2.2.1 - Coercion
 | 
						||
 | 
						||
Lua provides automatic conversion between string and number values at
 | 
						||
run time. Any arithmetic operation applied to a string tries to convert
 | 
						||
this string to a number, following the usual conversion rules.
 | 
						||
Conversely, whenever a number is used where a string is expected, the
 | 
						||
number is converted to a string, in a reasonable format. For complete
 | 
						||
control over how numbers are converted to strings, use the C<format>
 | 
						||
function from the string library (see C<string.format>).
 | 
						||
 | 
						||
=head2 2.3 - Variables
 | 
						||
 | 
						||
Variables are places that store values. There are three kinds of
 | 
						||
variables in Lua: global variables, local variables, and table fields.
 | 
						||
 | 
						||
A single name can denote a global variable or a local variable (or a
 | 
						||
function's formal parameter, which is a particular kind of local
 | 
						||
variable):
 | 
						||
 | 
						||
	var ::= Name
 | 
						||
 | 
						||
Name denotes identifiers, as defined in E<sect>2.1.
 | 
						||
 | 
						||
Any variable is assumed to be global unless explicitly declared as a
 | 
						||
local (see E<sect>2.4.7). Local variables are I<lexically scoped>:
 | 
						||
local variables can be freely accessed by functions defined inside
 | 
						||
their scope (see E<sect>2.6).
 | 
						||
 | 
						||
Before the first assignment to a variable, its value is B<nil>.
 | 
						||
 | 
						||
Square brackets are used to index a table:
 | 
						||
 | 
						||
	var ::= prefixexp `[´ exp `]´
 | 
						||
 | 
						||
The meaning of accesses to global variables and table fields can be
 | 
						||
changed via metatables. An access to an indexed variable C<t[i]> is
 | 
						||
equivalent to a call C<gettable_event(t,i)>. (See E<sect>2.8 for a
 | 
						||
complete description of the C<gettable_event> function. This function
 | 
						||
is not defined or callable in Lua. We use it here only for explanatory
 | 
						||
purposes.)
 | 
						||
 | 
						||
The syntax C<var.Name> is just syntactic sugar for C<var["Name"]>:
 | 
						||
 | 
						||
	var ::= prefixexp `.´ Name
 | 
						||
 | 
						||
All global variables live as fields in ordinary Lua tables, called
 | 
						||
I<environment tables> or simply I<environments> (see E<sect>2.9). Each
 | 
						||
function has its own reference to an environment, so that all global
 | 
						||
variables in this function will refer to this environment table. When a
 | 
						||
function is created, it inherits the environment from the function that
 | 
						||
created it. To get the environment table of a Lua function, you call
 | 
						||
C<getfenv>. To replace it, you call C<setfenv>. (You can only
 | 
						||
manipulate the environment of C functions through the debug library;
 | 
						||
(see E<sect>5.9).)
 | 
						||
 | 
						||
An access to a global variable C<x> is equivalent to C<_env.x>, which
 | 
						||
in turn is equivalent to
 | 
						||
 | 
						||
     gettable_event(_env, "x")
 | 
						||
 | 
						||
where C<_env> is the environment of the running function. (See
 | 
						||
E<sect>2.8 for a complete description of the C<gettable_event>
 | 
						||
function. This function is not defined or callable in Lua. Similarly,
 | 
						||
the C<_env> variable is not defined in Lua. We use them here only for
 | 
						||
explanatory purposes.)
 | 
						||
 | 
						||
=head2 2.4 - Statements
 | 
						||
 | 
						||
Lua supports an almost conventional set of statements, similar to those
 | 
						||
in Pascal or C. This set includes assignments, control structures,
 | 
						||
function calls, and variable declarations.
 | 
						||
 | 
						||
=head2 2.4.1 - Chunks
 | 
						||
 | 
						||
The unit of execution of Lua is called a I<chunk>. A chunk is simply a
 | 
						||
sequence of statements, which are executed sequentially. Each statement
 | 
						||
can be optionally followed by a semicolon:
 | 
						||
 | 
						||
	chunk ::= {stat [`;´]}
 | 
						||
 | 
						||
There are no empty statements and thus 'C<;;>' is not legal.
 | 
						||
 | 
						||
Lua handles a chunk as the body of an anonymous function with a
 | 
						||
variable number of arguments (see E<sect>2.5.9). As such, chunks can
 | 
						||
define local variables, receive arguments, and return values.
 | 
						||
 | 
						||
A chunk can be stored in a file or in a string inside the host program.
 | 
						||
To execute a chunk, Lua first pre-compiles the chunk into instructions
 | 
						||
for a virtual machine, and then it executes the compiled code with an
 | 
						||
interpreter for the virtual machine.
 | 
						||
 | 
						||
Chunks can also be pre-compiled into binary form; see program C<luac>
 | 
						||
for details. Programs in source and compiled forms are interchangeable;
 | 
						||
Lua automatically detects the file type and acts accordingly.
 | 
						||
 | 
						||
=head2 2.4.2 - Blocks
 | 
						||
 | 
						||
A block is a list of statements; syntactically, a block is the same as
 | 
						||
a chunk:
 | 
						||
 | 
						||
	block ::= chunk
 | 
						||
 | 
						||
A block can be explicitly delimited to produce a single statement:
 | 
						||
 | 
						||
	stat ::= do block end
 | 
						||
 | 
						||
Explicit blocks are useful to control the scope of variable
 | 
						||
declarations. Explicit blocks are also sometimes used to add a
 | 
						||
B<return> or B<break> statement in the middle of another block (see
 | 
						||
E<sect>2.4.4).
 | 
						||
 | 
						||
=head2 2.4.3 - Assignment
 | 
						||
 | 
						||
Lua allows multiple assignments. Therefore, the syntax for assignment
 | 
						||
defines a list of variables on the left side and a list of expressions
 | 
						||
on the right side. The elements in both lists are separated by commas:
 | 
						||
 | 
						||
	stat ::= varlist `=´ explist
 | 
						||
	varlist ::= var {`,´ var}
 | 
						||
	explist ::= exp {`,´ exp}
 | 
						||
 | 
						||
Expressions are discussed in E<sect>2.5.
 | 
						||
 | 
						||
Before the assignment, the list of values is I<adjusted> to the length
 | 
						||
of the list of variables. If there are more values than needed, the
 | 
						||
excess values are thrown away. If there are fewer values than needed,
 | 
						||
the list is extended with as many B<nil>'s as needed. If the list of
 | 
						||
expressions ends with a function call, then all values returned by that
 | 
						||
call enter the list of values, before the adjustment (except when the
 | 
						||
call is enclosed in parentheses; see E<sect>2.5).
 | 
						||
 | 
						||
The assignment statement first evaluates all its expressions and only
 | 
						||
then are the assignments performed. Thus the code
 | 
						||
 | 
						||
     i = 3
 | 
						||
     i, a[i] = i+1, 20
 | 
						||
 | 
						||
sets C<a[3]> to 20, without affecting C<a[4]> because the C<i> in
 | 
						||
C<a[i]> is evaluated (to 3) before it is assigned 4. Similarly, the
 | 
						||
line
 | 
						||
 | 
						||
     x, y = y, x
 | 
						||
 | 
						||
exchanges the values of C<x> and C<y>, and
 | 
						||
 | 
						||
     x, y, z = y, z, x
 | 
						||
 | 
						||
cyclically permutes the values of C<x>, C<y>, and C<z>.
 | 
						||
 | 
						||
The meaning of assignments to global variables and table fields can be
 | 
						||
changed via metatables. An assignment to an indexed variable C<t[i] =
 | 
						||
val> is equivalent to C<settable_event(t,i,val)>. (See E<sect>2.8 for a
 | 
						||
complete description of the C<settable_event> function. This function
 | 
						||
is not defined or callable in Lua. We use it here only for explanatory
 | 
						||
purposes.)
 | 
						||
 | 
						||
An assignment to a global variable C<x = val> is equivalent to the
 | 
						||
assignment C<_env.x = val>, which in turn is equivalent to
 | 
						||
 | 
						||
     settable_event(_env, "x", val)
 | 
						||
 | 
						||
where C<_env> is the environment of the running function. (The C<_env>
 | 
						||
variable is not defined in Lua. We use it here only for explanatory
 | 
						||
purposes.)
 | 
						||
 | 
						||
=head2 2.4.4 - Control Structures
 | 
						||
 | 
						||
The control structures B<if>, B<while>, and B<repeat> have the usual
 | 
						||
meaning and familiar syntax:
 | 
						||
 | 
						||
	stat ::= while exp do block end
 | 
						||
	stat ::= repeat block until exp
 | 
						||
	stat ::= if exp then block {elseif exp then block} [else block] end
 | 
						||
 | 
						||
Lua also has a B<for> statement, in two flavors (see E<sect>2.4.5).
 | 
						||
 | 
						||
The condition expression of a control structure can return any value.
 | 
						||
Both B<false> and B<nil> are considered false. All values different
 | 
						||
from B<nil> and B<false> are considered true (in particular, the number
 | 
						||
0 and the empty string are also true).
 | 
						||
 | 
						||
In the B<repeat>E<ndash>B<until> loop, the inner block does not end at
 | 
						||
the B<until> keyword, but only after the condition. So, the condition
 | 
						||
can refer to local variables declared inside the loop block.
 | 
						||
 | 
						||
The B<return> statement is used to return values from a function or a
 | 
						||
chunk (which is just a function). Functions and chunks can return more
 | 
						||
than one value, and so the syntax for the B<return> statement is
 | 
						||
 | 
						||
	stat ::= return [explist]
 | 
						||
 | 
						||
The B<break> statement is used to terminate the execution of a
 | 
						||
B<while>, B<repeat>, or B<for> loop, skipping to the next statement
 | 
						||
after the loop:
 | 
						||
 | 
						||
	stat ::= break
 | 
						||
 | 
						||
A B<break> ends the innermost enclosing loop.
 | 
						||
 | 
						||
The B<return> and B<break> statements can only be written as the
 | 
						||
I<last> statement of a block. If it is really necessary to B<return> or
 | 
						||
B<break> in the middle of a block, then an explicit inner block can be
 | 
						||
used, as in the idioms C<do return end> and C<do break end>, because
 | 
						||
now B<return> and B<break> are the last statements in their (inner)
 | 
						||
blocks.
 | 
						||
 | 
						||
=head2 2.4.5 - For Statement
 | 
						||
 | 
						||
The B<for> statement has two forms: one numeric and one generic.
 | 
						||
 | 
						||
The numeric B<for> loop repeats a block of code while a control
 | 
						||
variable runs through an arithmetic progression. It has the following
 | 
						||
syntax:
 | 
						||
 | 
						||
	stat ::= for Name `=´ exp `,´ exp [`,´ exp] do block end
 | 
						||
 | 
						||
The I<block> is repeated for I<name> starting at the value of the first
 | 
						||
I<exp>, until it passes the second I<exp> by steps of the third I<exp>.
 | 
						||
More precisely, a B<for> statement like
 | 
						||
 | 
						||
     for v = e1, e2, e3 do block end
 | 
						||
 | 
						||
is equivalent to the code:
 | 
						||
 | 
						||
     do
 | 
						||
       local var, limit, step = tonumber(e1), tonumber(e2), tonumber(e3)
 | 
						||
       if not (var and limit and step) then error() end
 | 
						||
       while (step > 0 and var <= limit) or (step <= 0 and var >= limit) do
 | 
						||
         local v = var
 | 
						||
         block
 | 
						||
         var = var + step
 | 
						||
       end
 | 
						||
     end
 | 
						||
 | 
						||
Note the following:
 | 
						||
 | 
						||
=over
 | 
						||
 | 
						||
=item * All three control expressions are evaluated only once, before
 | 
						||
the loop starts. They must all result in numbers.
 | 
						||
 | 
						||
=item * C<I<var>>, C<I<limit>>, and C<I<step>> are invisible variables.
 | 
						||
The names shown here are for explanatory purposes only.
 | 
						||
 | 
						||
=item * If the third expression (the step) is absent, then a step of 1
 | 
						||
is used.
 | 
						||
 | 
						||
=item * You can use B<break> to exit a B<for> loop.
 | 
						||
 | 
						||
=item * The loop variable C<v> is local to the loop; you cannot use its
 | 
						||
value after the B<for> ends or is broken. If you need this value,
 | 
						||
assign it to another variable before breaking or exiting the loop.
 | 
						||
 | 
						||
=back
 | 
						||
 | 
						||
The generic B<for> statement works over functions, called I<iterators>.
 | 
						||
On each iteration, the iterator function is called to produce a new
 | 
						||
value, stopping when this new value is B<nil>. The generic B<for> loop
 | 
						||
has the following syntax:
 | 
						||
 | 
						||
	stat ::= for namelist in explist do block end
 | 
						||
	namelist ::= Name {`,´ Name}
 | 
						||
 | 
						||
A B<for> statement like
 | 
						||
 | 
						||
     for var_1, ···, var_n in explist do block end
 | 
						||
 | 
						||
is equivalent to the code:
 | 
						||
 | 
						||
     do
 | 
						||
       local f, s, var = explist
 | 
						||
       while true do
 | 
						||
         local var_1, ···, var_n = f(s, var)
 | 
						||
         var = var_1
 | 
						||
         if var == nil then break end
 | 
						||
         block
 | 
						||
       end
 | 
						||
     end
 | 
						||
 | 
						||
Note the following:
 | 
						||
 | 
						||
=over
 | 
						||
 | 
						||
=item * C<I<explist>> is evaluated only once. Its results are an
 | 
						||
I<iterator> function, a I<state>, and an initial value for the first
 | 
						||
I<iterator variable>.
 | 
						||
 | 
						||
=item * C<I<f>>, C<I<s>>, and C<I<var>> are invisible variables. The
 | 
						||
names are here for explanatory purposes only.
 | 
						||
 | 
						||
=item * You can use B<break> to exit a B<for> loop.
 | 
						||
 | 
						||
=item * The loop variables C<I<var_i>> are local to the loop; you
 | 
						||
cannot use their values after the B<for> ends. If you need these
 | 
						||
values, then assign them to other variables before breaking or exiting
 | 
						||
the loop.
 | 
						||
 | 
						||
=back
 | 
						||
 | 
						||
=head2 2.4.6 - Function Calls as Statements
 | 
						||
 | 
						||
To allow possible side-effects, function calls can be executed as
 | 
						||
statements:
 | 
						||
 | 
						||
	stat ::= functioncall
 | 
						||
 | 
						||
In this case, all returned values are thrown away. Function calls are
 | 
						||
explained in E<sect>2.5.8.
 | 
						||
 | 
						||
=head2 2.4.7 - Local Declarations
 | 
						||
 | 
						||
Local variables can be declared anywhere inside a block. The
 | 
						||
declaration can include an initial assignment:
 | 
						||
 | 
						||
	stat ::= local namelist [`=´ explist]
 | 
						||
 | 
						||
If present, an initial assignment has the same semantics of a multiple
 | 
						||
assignment (see E<sect>2.4.3). Otherwise, all variables are initialized
 | 
						||
with B<nil>.
 | 
						||
 | 
						||
A chunk is also a block (see E<sect>2.4.1), and so local variables can
 | 
						||
be declared in a chunk outside any explicit block. The scope of such
 | 
						||
local variables extends until the end of the chunk.
 | 
						||
 | 
						||
The visibility rules for local variables are explained in E<sect>2.6.
 | 
						||
 | 
						||
=head2 2.5 - Expressions
 | 
						||
 | 
						||
The basic expressions in Lua are the following:
 | 
						||
 | 
						||
	exp ::= prefixexp
 | 
						||
	exp ::= nil | false | true
 | 
						||
	exp ::= Number
 | 
						||
	exp ::= String
 | 
						||
	exp ::= function
 | 
						||
	exp ::= tableconstructor
 | 
						||
	exp ::= `...´
 | 
						||
	exp ::= exp binop exp
 | 
						||
	exp ::= unop exp
 | 
						||
	prefixexp ::= var | functioncall | `(´ exp `)´
 | 
						||
 | 
						||
Numbers and literal strings are explained in E<sect>2.1; variables are
 | 
						||
explained in E<sect>2.3; function definitions are explained in
 | 
						||
E<sect>2.5.9; function calls are explained in E<sect>2.5.8; table
 | 
						||
constructors are explained in E<sect>2.5.7. Vararg expressions, denoted
 | 
						||
by three dots ('C<...>'), can only be used when directly inside a
 | 
						||
vararg function; they are explained in E<sect>2.5.9.
 | 
						||
 | 
						||
Binary operators comprise arithmetic operators (see E<sect>2.5.1),
 | 
						||
relational operators (see E<sect>2.5.2), logical operators (see
 | 
						||
E<sect>2.5.3), and the concatenation operator (see E<sect>2.5.4). Unary
 | 
						||
operators comprise the unary minus (see E<sect>2.5.1), the unary B<not>
 | 
						||
(see E<sect>2.5.3), and the unary I<length operator> (see
 | 
						||
E<sect>2.5.5).
 | 
						||
 | 
						||
Both function calls and vararg expressions can result in multiple
 | 
						||
values. If an expression is used as a statement (only possible for
 | 
						||
function calls (see E<sect>2.4.6)), then its return list is adjusted to
 | 
						||
zero elements, thus discarding all returned values. If an expression is
 | 
						||
used as the last (or the only) element of a list of expressions, then
 | 
						||
no adjustment is made (unless the call is enclosed in parentheses). In
 | 
						||
all other contexts, Lua adjusts the result list to one element,
 | 
						||
discarding all values except the first one.
 | 
						||
 | 
						||
Here are some examples:
 | 
						||
 | 
						||
     f()                -- adjusted to 0 results
 | 
						||
     g(f(), x)          -- f() is adjusted to 1 result
 | 
						||
     g(x, f())          -- g gets x plus all results from f()
 | 
						||
     a,b,c = f(), x     -- f() is adjusted to 1 result (c gets nil)
 | 
						||
     a,b = ...          -- a gets the first vararg parameter, b gets
 | 
						||
                        -- the second (both a and b can get nil if there
 | 
						||
                        -- is no corresponding vararg parameter)
 | 
						||
     
 | 
						||
     a,b,c = x, f()     -- f() is adjusted to 2 results
 | 
						||
     a,b,c = f()        -- f() is adjusted to 3 results
 | 
						||
     return f()         -- returns all results from f()
 | 
						||
     return ...         -- returns all received vararg parameters
 | 
						||
     return x,y,f()     -- returns x, y, and all results from f()
 | 
						||
     {f()}              -- creates a list with all results from f()
 | 
						||
     {...}              -- creates a list with all vararg parameters
 | 
						||
     {f(), nil}         -- f() is adjusted to 1 result
 | 
						||
 | 
						||
Any expression enclosed in parentheses always results in only one
 | 
						||
value. Thus, C<(f(x,y,z))> is always a single value, even if C<f>
 | 
						||
returns several values. (The value of C<(f(x,y,z))> is the first value
 | 
						||
returned by C<f> or B<nil> if C<f> does not return any values.)
 | 
						||
 | 
						||
=head2 2.5.1 - Arithmetic Operators
 | 
						||
 | 
						||
Lua supports the usual arithmetic operators: the binary C<+>
 | 
						||
(addition), C<-> (subtraction), C<*> (multiplication), C</> (division),
 | 
						||
C<%> (modulo), and C<^> (exponentiation); and unary C<-> (negation). If
 | 
						||
the operands are numbers, or strings that can be converted to numbers
 | 
						||
(see E<sect>2.2.1), then all operations have the usual meaning.
 | 
						||
Exponentiation works for any exponent. For instance, C<x^(-0.5)>
 | 
						||
computes the inverse of the square root of C<x>. Modulo is defined as
 | 
						||
 | 
						||
     a % b == a - math.floor(a/b)*b
 | 
						||
 | 
						||
That is, it is the remainder of a division that rounds the quotient
 | 
						||
towards minus infinity.
 | 
						||
 | 
						||
=head2 2.5.2 - Relational Operators
 | 
						||
 | 
						||
The relational operators in Lua are
 | 
						||
 | 
						||
     ==    ~=    <     >     <=    >=
 | 
						||
 | 
						||
These operators always result in B<false> or B<true>.
 | 
						||
 | 
						||
Equality (C<==>) first compares the type of its operands. If the types
 | 
						||
are different, then the result is B<false>. Otherwise, the values of
 | 
						||
the operands are compared. Numbers and strings are compared in the
 | 
						||
usual way. Objects (tables, userdata, threads, and functions) are
 | 
						||
compared by I<reference>: two objects are considered equal only if they
 | 
						||
are the I<same> object. Every time you create a new object (a table,
 | 
						||
userdata, thread, or function), this new object is different from any
 | 
						||
previously existing object.
 | 
						||
 | 
						||
You can change the way that Lua compares tables and userdata by using
 | 
						||
the "eq" metamethod (see E<sect>2.8).
 | 
						||
 | 
						||
The conversion rules of E<sect>2.2.1 I<do not> apply to equality
 | 
						||
comparisons. Thus, C<"0"==0> evaluates to B<false>, and C<t[0]> and
 | 
						||
C<t["0"]> denote different entries in a table.
 | 
						||
 | 
						||
The operator C<~=> is exactly the negation of equality (C<==>).
 | 
						||
 | 
						||
The order operators work as follows. If both arguments are numbers,
 | 
						||
then they are compared as such. Otherwise, if both arguments are
 | 
						||
strings, then their values are compared according to the current
 | 
						||
locale. Otherwise, Lua tries to call the "lt" or the "le" metamethod
 | 
						||
(see E<sect>2.8). A comparison C<a E<gt> b> is translated to C<b E<lt>
 | 
						||
a> and C<a E<gt>= b> is translated to C<b E<lt>= a>.
 | 
						||
 | 
						||
=head2 2.5.3 - Logical Operators
 | 
						||
 | 
						||
The logical operators in Lua are B<and>, B<or>, and B<not>. Like the
 | 
						||
control structures (see E<sect>2.4.4), all logical operators consider
 | 
						||
both B<false> and B<nil> as false and anything else as true.
 | 
						||
 | 
						||
The negation operator B<not> always returns B<false> or B<true>. The
 | 
						||
conjunction operator B<and> returns its first argument if this value is
 | 
						||
B<false> or B<nil>; otherwise, B<and> returns its second argument. The
 | 
						||
disjunction operator B<or> returns its first argument if this value is
 | 
						||
different from B<nil> and B<false>; otherwise, B<or> returns its second
 | 
						||
argument. Both B<and> and B<or> use short-cut evaluation; that is, the
 | 
						||
second operand is evaluated only if necessary. Here are some examples:
 | 
						||
 | 
						||
     10 or 20            --> 10
 | 
						||
     10 or error()       --> 10
 | 
						||
     nil or "a"          --> "a"
 | 
						||
     nil and 10          --> nil
 | 
						||
     false and error()   --> false
 | 
						||
     false and nil       --> false
 | 
						||
     false or nil        --> nil
 | 
						||
     10 and 20           --> 20
 | 
						||
 | 
						||
(In this manual, C<--E<gt>> indicates the result of the preceding
 | 
						||
expression.)
 | 
						||
 | 
						||
=head2 2.5.4 - Concatenation
 | 
						||
 | 
						||
The string concatenation operator in Lua is denoted by two dots
 | 
						||
('C<..>'). If both operands are strings or numbers, then they are
 | 
						||
converted to strings according to the rules mentioned in E<sect>2.2.1.
 | 
						||
Otherwise, the "concat" metamethod is called (see E<sect>2.8).
 | 
						||
 | 
						||
=head2 2.5.5 - The Length Operator
 | 
						||
 | 
						||
The length operator is denoted by the unary operator C<#>. The length
 | 
						||
of a string is its number of bytes (that is, the usual meaning of
 | 
						||
string length when each character is one byte).
 | 
						||
 | 
						||
The length of a table C<t> is defined to be any integer index C<n> such
 | 
						||
that C<t[n]> is not B<nil> and C<t[n+1]> is B<nil>; moreover, if
 | 
						||
C<t[1]> is B<nil>, C<n> can be zero. For a regular array, with non-nil
 | 
						||
values from 1 to a given C<n>, its length is exactly that C<n>, the
 | 
						||
index of its last value. If the array has "holes" (that is, B<nil>
 | 
						||
values between other non-nil values), then C<#t> can be any of the
 | 
						||
indices that directly precedes a B<nil> value (that is, it may consider
 | 
						||
any such B<nil> value as the end of the array).
 | 
						||
 | 
						||
=head2 2.5.6 - Precedence
 | 
						||
 | 
						||
Operator precedence in Lua follows the table below, from lower to
 | 
						||
higher priority:
 | 
						||
 | 
						||
     or
 | 
						||
     and
 | 
						||
     <     >     <=    >=    ~=    ==
 | 
						||
     ..
 | 
						||
     +     -
 | 
						||
     *     /     %
 | 
						||
     not   #     - (unary)
 | 
						||
     ^
 | 
						||
 | 
						||
As usual, you can use parentheses to change the precedences of an
 | 
						||
expression. The concatenation ('C<..>') and exponentiation ('C<^>')
 | 
						||
operators are right associative. All other binary operators are left
 | 
						||
associative.
 | 
						||
 | 
						||
=head2 2.5.7 - Table Constructors
 | 
						||
 | 
						||
Table constructors are expressions that create tables. Every time a
 | 
						||
constructor is evaluated, a new table is created. A constructor can be
 | 
						||
used to create an empty table or to create a table and initialize some
 | 
						||
of its fields. The general syntax for constructors is
 | 
						||
 | 
						||
	tableconstructor ::= `{´ [fieldlist] `}´
 | 
						||
	fieldlist ::= field {fieldsep field} [fieldsep]
 | 
						||
	field ::= `[´ exp `]´ `=´ exp | Name `=´ exp | exp
 | 
						||
	fieldsep ::= `,´ | `;´
 | 
						||
 | 
						||
Each field of the form C<[exp1] = exp2> adds to the new table an entry
 | 
						||
with key C<exp1> and value C<exp2>. A field of the form C<name = exp>
 | 
						||
is equivalent to C<["name"] = exp>. Finally, fields of the form C<exp>
 | 
						||
are equivalent to C<[i] = exp>, where C<i> are consecutive numerical
 | 
						||
integers, starting with 1. Fields in the other formats do not affect
 | 
						||
this counting. For example,
 | 
						||
 | 
						||
     a = { [f(1)] = g; "x", "y"; x = 1, f(x), [30] = 23; 45 }
 | 
						||
 | 
						||
is equivalent to
 | 
						||
 | 
						||
     do
 | 
						||
       local t = {}
 | 
						||
       t[f(1)] = g
 | 
						||
       t[1] = "x"         -- 1st exp
 | 
						||
       t[2] = "y"         -- 2nd exp
 | 
						||
       t.x = 1            -- t["x"] = 1
 | 
						||
       t[3] = f(x)        -- 3rd exp
 | 
						||
       t[30] = 23
 | 
						||
       t[4] = 45          -- 4th exp
 | 
						||
       a = t
 | 
						||
     end
 | 
						||
 | 
						||
If the last field in the list has the form C<exp> and the expression is
 | 
						||
a function call or a vararg expression, then all values returned by
 | 
						||
this expression enter the list consecutively (see E<sect>2.5.8). To
 | 
						||
avoid this, enclose the function call or the vararg expression in
 | 
						||
parentheses (see E<sect>2.5).
 | 
						||
 | 
						||
The field list can have an optional trailing separator, as a
 | 
						||
convenience for machine-generated code.
 | 
						||
 | 
						||
=head2 2.5.8 - Function Calls
 | 
						||
 | 
						||
A function call in Lua has the following syntax:
 | 
						||
 | 
						||
	functioncall ::= prefixexp args
 | 
						||
 | 
						||
In a function call, first prefixexp and args are evaluated. If the
 | 
						||
value of prefixexp has type I<function>, then this function is called
 | 
						||
with the given arguments. Otherwise, the prefixexp "call" metamethod is
 | 
						||
called, having as first parameter the value of prefixexp, followed by
 | 
						||
the original call arguments (see E<sect>2.8).
 | 
						||
 | 
						||
The form
 | 
						||
 | 
						||
	functioncall ::= prefixexp `:´ Name args
 | 
						||
 | 
						||
can be used to call "methods". A call C<v:name(I<args>)> is syntactic
 | 
						||
sugar for C<v.name(v,I<args>)>, except that C<v> is evaluated only
 | 
						||
once.
 | 
						||
 | 
						||
Arguments have the following syntax:
 | 
						||
 | 
						||
	args ::= `(´ [explist] `)´
 | 
						||
	args ::= tableconstructor
 | 
						||
	args ::= String
 | 
						||
 | 
						||
All argument expressions are evaluated before the call. A call of the
 | 
						||
form C<f{I<fields>}> is syntactic sugar for C<f({I<fields>})>; that is,
 | 
						||
the argument list is a single new table. A call of the form
 | 
						||
C<f'I<string>'> (or C<f"I<string>"> or C<f[[I<string>]]>) is syntactic
 | 
						||
sugar for C<f('I<string>')>; that is, the argument list is a single
 | 
						||
literal string.
 | 
						||
 | 
						||
As an exception to the free-format syntax of Lua, you cannot put a line
 | 
						||
break before the 'C<(>' in a function call. This restriction avoids
 | 
						||
some ambiguities in the language. If you write
 | 
						||
 | 
						||
     a = f
 | 
						||
     (g).x(a)
 | 
						||
 | 
						||
Lua would see that as a single statement, C<a = f(g).x(a)>. So, if you
 | 
						||
want two statements, you must add a semi-colon between them. If you
 | 
						||
actually want to call C<f>, you must remove the line break before
 | 
						||
C<(g)>.
 | 
						||
 | 
						||
A call of the form C<return> I<functioncall> is called a I<tail call>.
 | 
						||
Lua implements I<proper tail calls> (or I<proper tail recursion>): in a
 | 
						||
tail call, the called function reuses the stack entry of the calling
 | 
						||
function. Therefore, there is no limit on the number of nested tail
 | 
						||
calls that a program can execute. However, a tail call erases any debug
 | 
						||
information about the calling function. Note that a tail call only
 | 
						||
happens with a particular syntax, where the B<return> has one single
 | 
						||
function call as argument; this syntax makes the calling function
 | 
						||
return exactly the returns of the called function. So, none of the
 | 
						||
following examples are tail calls:
 | 
						||
 | 
						||
     return (f(x))        -- results adjusted to 1
 | 
						||
     return 2 * f(x)
 | 
						||
     return x, f(x)       -- additional results
 | 
						||
     f(x); return         -- results discarded
 | 
						||
     return x or f(x)     -- results adjusted to 1
 | 
						||
 | 
						||
=head2 2.5.9 - Function Definitions
 | 
						||
 | 
						||
The syntax for function definition is
 | 
						||
 | 
						||
	function ::= function funcbody
 | 
						||
	funcbody ::= `(´ [parlist] `)´ block end
 | 
						||
 | 
						||
The following syntactic sugar simplifies function definitions:
 | 
						||
 | 
						||
	stat ::= function funcname funcbody
 | 
						||
	stat ::= local function Name funcbody
 | 
						||
	funcname ::= Name {`.´ Name} [`:´ Name]
 | 
						||
 | 
						||
The statement
 | 
						||
 | 
						||
     function f () body end
 | 
						||
 | 
						||
translates to
 | 
						||
 | 
						||
     f = function () body end
 | 
						||
 | 
						||
The statement
 | 
						||
 | 
						||
     function t.a.b.c.f () body end
 | 
						||
 | 
						||
translates to
 | 
						||
 | 
						||
     t.a.b.c.f = function () body end
 | 
						||
 | 
						||
The statement
 | 
						||
 | 
						||
     local function f () body end
 | 
						||
 | 
						||
translates to
 | 
						||
 | 
						||
     local f; f = function () body end
 | 
						||
 | 
						||
I<not> to
 | 
						||
 | 
						||
     local f = function () body end
 | 
						||
 | 
						||
(This only makes a difference when the body of the function contains
 | 
						||
references to C<f>.)
 | 
						||
 | 
						||
A function definition is an executable expression, whose value has type
 | 
						||
I<function>. When Lua pre-compiles a chunk, all its function bodies are
 | 
						||
pre-compiled too. Then, whenever Lua executes the function definition,
 | 
						||
the function is I<instantiated> (or I<closed>). This function instance
 | 
						||
(or I<closure>) is the final value of the expression. Different
 | 
						||
instances of the same function can refer to different external local
 | 
						||
variables and can have different environment tables.
 | 
						||
 | 
						||
Parameters act as local variables that are initialized with the
 | 
						||
argument values:
 | 
						||
 | 
						||
	parlist ::= namelist [`,´ `...´] | `...´
 | 
						||
 | 
						||
When a function is called, the list of arguments is adjusted to the
 | 
						||
length of the list of parameters, unless the function is a variadic or
 | 
						||
I<vararg function>, which is indicated by three dots ('C<...>') at the
 | 
						||
end of its parameter list. A vararg function does not adjust its
 | 
						||
argument list; instead, it collects all extra arguments and supplies
 | 
						||
them to the function through a I<vararg expression>, which is also
 | 
						||
written as three dots. The value of this expression is a list of all
 | 
						||
actual extra arguments, similar to a function with multiple results. If
 | 
						||
a vararg expression is used inside another expression or in the middle
 | 
						||
of a list of expressions, then its return list is adjusted to one
 | 
						||
element. If the expression is used as the last element of a list of
 | 
						||
expressions, then no adjustment is made (unless that last expression is
 | 
						||
enclosed in parentheses).
 | 
						||
 | 
						||
As an example, consider the following definitions:
 | 
						||
 | 
						||
     function f(a, b) end
 | 
						||
     function g(a, b, ...) end
 | 
						||
     function r() return 1,2,3 end
 | 
						||
 | 
						||
Then, we have the following mapping from arguments to parameters and to
 | 
						||
the vararg expression:
 | 
						||
 | 
						||
     CALL            PARAMETERS
 | 
						||
     
 | 
						||
     f(3)             a=3, b=nil
 | 
						||
     f(3, 4)          a=3, b=4
 | 
						||
     f(3, 4, 5)       a=3, b=4
 | 
						||
     f(r(), 10)       a=1, b=10
 | 
						||
     f(r())           a=1, b=2
 | 
						||
     
 | 
						||
     g(3)             a=3, b=nil, ... -->  (nothing)
 | 
						||
     g(3, 4)          a=3, b=4,   ... -->  (nothing)
 | 
						||
     g(3, 4, 5, 8)    a=3, b=4,   ... -->  5  8
 | 
						||
     g(5, r())        a=5, b=1,   ... -->  2  3
 | 
						||
 | 
						||
Results are returned using the B<return> statement (see E<sect>2.4.4).
 | 
						||
If control reaches the end of a function without encountering a
 | 
						||
B<return> statement, then the function returns with no results.
 | 
						||
 | 
						||
The I<colon> syntax is used for defining I<methods>, that is, functions
 | 
						||
that have an implicit extra parameter C<self>. Thus, the statement
 | 
						||
 | 
						||
     function t.a.b.c:f (params) body end
 | 
						||
 | 
						||
is syntactic sugar for
 | 
						||
 | 
						||
     t.a.b.c.f = function (self, params) body end
 | 
						||
 | 
						||
=head2 2.6 - Visibility Rules
 | 
						||
 | 
						||
Lua is a lexically scoped language. The scope of variables begins at
 | 
						||
the first statement I<after> their declaration and lasts until the end
 | 
						||
of the innermost block that includes the declaration. Consider the
 | 
						||
following example:
 | 
						||
 | 
						||
     x = 10                -- global variable
 | 
						||
     do                    -- new block
 | 
						||
       local x = x         -- new 'x', with value 10
 | 
						||
       print(x)            --> 10
 | 
						||
       x = x+1
 | 
						||
       do                  -- another block
 | 
						||
         local x = x+1     -- another 'x'
 | 
						||
         print(x)          --> 12
 | 
						||
       end
 | 
						||
       print(x)            --> 11
 | 
						||
     end
 | 
						||
     print(x)              --> 10  (the global one)
 | 
						||
 | 
						||
Notice that, in a declaration like C<local x = x>, the new C<x> being
 | 
						||
declared is not in scope yet, and so the second C<x> refers to the
 | 
						||
outside variable.
 | 
						||
 | 
						||
Because of the lexical scoping rules, local variables can be freely
 | 
						||
accessed by functions defined inside their scope. A local variable used
 | 
						||
by an inner function is called an I<upvalue>, or I<external local
 | 
						||
variable>, inside the inner function.
 | 
						||
 | 
						||
Notice that each execution of a B<local> statement defines new local
 | 
						||
variables. Consider the following example:
 | 
						||
 | 
						||
     a = {}
 | 
						||
     local x = 20
 | 
						||
     for i=1,10 do
 | 
						||
       local y = 0
 | 
						||
       a[i] = function () y=y+1; return x+y end
 | 
						||
     end
 | 
						||
 | 
						||
The loop creates ten closures (that is, ten instances of the anonymous
 | 
						||
function). Each of these closures uses a different C<y> variable, while
 | 
						||
all of them share the same C<x>.
 | 
						||
 | 
						||
=head2 2.7 - Error Handling
 | 
						||
 | 
						||
Because Lua is an embedded extension language, all Lua actions start
 | 
						||
from C code in the host program calling a function from the Lua library
 | 
						||
(see C<lua_pcall>). Whenever an error occurs during Lua compilation or
 | 
						||
execution, control returns to C, which can take appropriate measures
 | 
						||
(such as printing an error message).
 | 
						||
 | 
						||
Lua code can explicitly generate an error by calling the C<error>
 | 
						||
function. If you need to catch errors in Lua, you can use the C<pcall>
 | 
						||
function.
 | 
						||
 | 
						||
=head2 2.8 - Metatables
 | 
						||
 | 
						||
Every value in Lua can have a I<metatable>. This I<metatable> is an
 | 
						||
ordinary Lua table that defines the behavior of the original value
 | 
						||
under certain special operations. You can change several aspects of the
 | 
						||
behavior of operations over a value by setting specific fields in its
 | 
						||
metatable. For instance, when a non-numeric value is the operand of an
 | 
						||
addition, Lua checks for a function in the field C<"__add"> in its
 | 
						||
metatable. If it finds one, Lua calls this function to perform the
 | 
						||
addition.
 | 
						||
 | 
						||
We call the keys in a metatable I<events> and the values
 | 
						||
I<metamethods>. In the previous example, the event is C<"add"> and the
 | 
						||
metamethod is the function that performs the addition.
 | 
						||
 | 
						||
You can query the metatable of any value through the C<getmetatable>
 | 
						||
function.
 | 
						||
 | 
						||
You can replace the metatable of tables through the C<setmetatable>
 | 
						||
function. You cannot change the metatable of other types from Lua
 | 
						||
(except by using the debug library); you must use the C API for that.
 | 
						||
 | 
						||
Tables and full userdata have individual metatables (although multiple
 | 
						||
tables and userdata can share their metatables). Values of all other
 | 
						||
types share one single metatable per type; that is, there is one single
 | 
						||
metatable for all numbers, one for all strings, etc.
 | 
						||
 | 
						||
A metatable controls how an object behaves in arithmetic operations,
 | 
						||
order comparisons, concatenation, length operation, and indexing. A
 | 
						||
metatable also can define a function to be called when a userdata is
 | 
						||
garbage collected. For each of these operations Lua associates a
 | 
						||
specific key called an I<event>. When Lua performs one of these
 | 
						||
operations over a value, it checks whether this value has a metatable
 | 
						||
with the corresponding event. If so, the value associated with that key
 | 
						||
(the metamethod) controls how Lua will perform the operation.
 | 
						||
 | 
						||
Metatables control the operations listed next. Each operation is
 | 
						||
identified by its corresponding name. The key for each operation is a
 | 
						||
string with its name prefixed by two underscores, 'C<__>'; for
 | 
						||
instance, the key for operation "add" is the string C<"__add">. The
 | 
						||
semantics of these operations is better explained by a Lua function
 | 
						||
describing how the interpreter executes the operation.
 | 
						||
 | 
						||
The code shown here in Lua is only illustrative; the real behavior is
 | 
						||
hard coded in the interpreter and it is much more efficient than this
 | 
						||
simulation. All functions used in these descriptions (C<rawget>,
 | 
						||
C<tonumber>, etc.) are described in E<sect>5.1. In particular, to
 | 
						||
retrieve the metamethod of a given object, we use the expression
 | 
						||
 | 
						||
     metatable(obj)[event]
 | 
						||
 | 
						||
This should be read as
 | 
						||
 | 
						||
     rawget(getmetatable(obj) or {}, event)
 | 
						||
 | 
						||
That is, the access to a metamethod does not invoke other metamethods,
 | 
						||
and the access to objects with no metatables does not fail (it simply
 | 
						||
results in B<nil>).
 | 
						||
 | 
						||
=over
 | 
						||
 | 
						||
=item * B<"add":> the C<+> operation.
 | 
						||
 | 
						||
The function C<getbinhandler> below defines how Lua chooses a handler
 | 
						||
for a binary operation. First, Lua tries the first operand. If its type
 | 
						||
does not define a handler for the operation, then Lua tries the second
 | 
						||
operand.
 | 
						||
 | 
						||
     function getbinhandler (op1, op2, event)
 | 
						||
       return metatable(op1)[event] or metatable(op2)[event]
 | 
						||
     end
 | 
						||
 | 
						||
By using this function, the behavior of the C<op1 + op2> is
 | 
						||
 | 
						||
     function add_event (op1, op2)
 | 
						||
       local o1, o2 = tonumber(op1), tonumber(op2)
 | 
						||
       if o1 and o2 then  -- both operands are numeric?
 | 
						||
         return o1 + o2   -- '+' here is the primitive 'add'
 | 
						||
       else  -- at least one of the operands is not numeric
 | 
						||
         local h = getbinhandler(op1, op2, "__add")
 | 
						||
         if h then
 | 
						||
           -- call the handler with both operands
 | 
						||
           return (h(op1, op2))
 | 
						||
         else  -- no handler available: default behavior
 | 
						||
           error(···)
 | 
						||
         end
 | 
						||
       end
 | 
						||
     end
 | 
						||
 | 
						||
=item * B<"sub":> the C<-> operation. Behavior similar to the "add"
 | 
						||
operation.
 | 
						||
 | 
						||
=item * B<"mul":> the C<*> operation. Behavior similar to the "add"
 | 
						||
operation.
 | 
						||
 | 
						||
=item * B<"div":> the C</> operation. Behavior similar to the "add"
 | 
						||
operation.
 | 
						||
 | 
						||
=item * B<"mod":> the C<%> operation. Behavior similar to the "add"
 | 
						||
operation, with the operation C<o1 - floor(o1/o2)*o2> as the primitive
 | 
						||
operation.
 | 
						||
 | 
						||
=item * B<"pow":> the C<^> (exponentiation) operation. Behavior similar
 | 
						||
to the "add" operation, with the function C<pow> (from the C math
 | 
						||
library) as the primitive operation.
 | 
						||
 | 
						||
=item * B<"unm":> the unary C<-> operation.
 | 
						||
 | 
						||
     function unm_event (op)
 | 
						||
       local o = tonumber(op)
 | 
						||
       if o then  -- operand is numeric?
 | 
						||
         return -o  -- '-' here is the primitive 'unm'
 | 
						||
       else  -- the operand is not numeric.
 | 
						||
         -- Try to get a handler from the operand
 | 
						||
         local h = metatable(op).__unm
 | 
						||
         if h then
 | 
						||
           -- call the handler with the operand
 | 
						||
           return (h(op))
 | 
						||
         else  -- no handler available: default behavior
 | 
						||
           error(···)
 | 
						||
         end
 | 
						||
       end
 | 
						||
     end
 | 
						||
 | 
						||
=item * B<"concat":> the C<..> (concatenation) operation.
 | 
						||
 | 
						||
     function concat_event (op1, op2)
 | 
						||
       if (type(op1) == "string" or type(op1) == "number") and
 | 
						||
          (type(op2) == "string" or type(op2) == "number") then
 | 
						||
         return op1 .. op2  -- primitive string concatenation
 | 
						||
       else
 | 
						||
         local h = getbinhandler(op1, op2, "__concat")
 | 
						||
         if h then
 | 
						||
           return (h(op1, op2))
 | 
						||
         else
 | 
						||
           error(···)
 | 
						||
         end
 | 
						||
       end
 | 
						||
     end
 | 
						||
 | 
						||
=item * B<"len":> the C<#> operation.
 | 
						||
 | 
						||
     function len_event (op)
 | 
						||
       if type(op) == "string" then
 | 
						||
         return strlen(op)         -- primitive string length
 | 
						||
       elseif type(op) == "table" then
 | 
						||
         return #op                -- primitive table length
 | 
						||
       else
 | 
						||
         local h = metatable(op).__len
 | 
						||
         if h then
 | 
						||
           -- call the handler with the operand
 | 
						||
           return (h(op))
 | 
						||
         else  -- no handler available: default behavior
 | 
						||
           error(···)
 | 
						||
         end
 | 
						||
       end
 | 
						||
     end
 | 
						||
 | 
						||
See E<sect>2.5.5 for a description of the length of a table.
 | 
						||
 | 
						||
=item * B<"eq":> the C<==> operation. The function C<getcomphandler>
 | 
						||
defines how Lua chooses a metamethod for comparison operators. A
 | 
						||
metamethod only is selected when both objects being compared have the
 | 
						||
same type and the same metamethod for the selected operation.
 | 
						||
 | 
						||
     function getcomphandler (op1, op2, event)
 | 
						||
       if type(op1) ~= type(op2) then return nil end
 | 
						||
       local mm1 = metatable(op1)[event]
 | 
						||
       local mm2 = metatable(op2)[event]
 | 
						||
       if mm1 == mm2 then return mm1 else return nil end
 | 
						||
     end
 | 
						||
 | 
						||
The "eq" event is defined as follows:
 | 
						||
 | 
						||
     function eq_event (op1, op2)
 | 
						||
       if type(op1) ~= type(op2) then  -- different types?
 | 
						||
         return false   -- different objects
 | 
						||
       end
 | 
						||
       if op1 == op2 then   -- primitive equal?
 | 
						||
         return true   -- objects are equal
 | 
						||
       end
 | 
						||
       -- try metamethod
 | 
						||
       local h = getcomphandler(op1, op2, "__eq")
 | 
						||
       if h then
 | 
						||
         return (h(op1, op2))
 | 
						||
       else
 | 
						||
         return false
 | 
						||
       end
 | 
						||
     end
 | 
						||
 | 
						||
C<a ~= b> is equivalent to C<not (a == b)>.
 | 
						||
 | 
						||
=item * B<"lt":> the C<E<lt>> operation.
 | 
						||
 | 
						||
     function lt_event (op1, op2)
 | 
						||
       if type(op1) == "number" and type(op2) == "number" then
 | 
						||
         return op1 < op2   -- numeric comparison
 | 
						||
       elseif type(op1) == "string" and type(op2) == "string" then
 | 
						||
         return op1 < op2   -- lexicographic comparison
 | 
						||
       else
 | 
						||
         local h = getcomphandler(op1, op2, "__lt")
 | 
						||
         if h then
 | 
						||
           return (h(op1, op2))
 | 
						||
         else
 | 
						||
           error(···)
 | 
						||
         end
 | 
						||
       end
 | 
						||
     end
 | 
						||
 | 
						||
C<a E<gt> b> is equivalent to C<b E<lt> a>.
 | 
						||
 | 
						||
=item * B<"le":> the C<E<lt>=> operation.
 | 
						||
 | 
						||
     function le_event (op1, op2)
 | 
						||
       if type(op1) == "number" and type(op2) == "number" then
 | 
						||
         return op1 <= op2   -- numeric comparison
 | 
						||
       elseif type(op1) == "string" and type(op2) == "string" then
 | 
						||
         return op1 <= op2   -- lexicographic comparison
 | 
						||
       else
 | 
						||
         local h = getcomphandler(op1, op2, "__le")
 | 
						||
         if h then
 | 
						||
           return (h(op1, op2))
 | 
						||
         else
 | 
						||
           h = getcomphandler(op1, op2, "__lt")
 | 
						||
           if h then
 | 
						||
             return not h(op2, op1)
 | 
						||
           else
 | 
						||
             error(···)
 | 
						||
           end
 | 
						||
         end
 | 
						||
       end
 | 
						||
     end
 | 
						||
 | 
						||
C<a E<gt>= b> is equivalent to C<b E<lt>= a>. Note that, in the absence
 | 
						||
of a "le" metamethod, Lua tries the "lt", assuming that C<a E<lt>= b>
 | 
						||
is equivalent to C<not (b E<lt> a)>.
 | 
						||
 | 
						||
=item * B<"index":> The indexing access C<table[key]>.
 | 
						||
 | 
						||
     function gettable_event (table, key)
 | 
						||
       local h
 | 
						||
       if type(table) == "table" then
 | 
						||
         local v = rawget(table, key)
 | 
						||
         if v ~= nil then return v end
 | 
						||
         h = metatable(table).__index
 | 
						||
         if h == nil then return nil end
 | 
						||
       else
 | 
						||
         h = metatable(table).__index
 | 
						||
         if h == nil then
 | 
						||
           error(···)
 | 
						||
         end
 | 
						||
       end
 | 
						||
       if type(h) == "function" then
 | 
						||
         return (h(table, key))     -- call the handler
 | 
						||
       else return h[key]           -- or repeat operation on it
 | 
						||
       end
 | 
						||
     end
 | 
						||
 | 
						||
=item * B<"newindex":> The indexing assignment C<table[key] = value>.
 | 
						||
 | 
						||
     function settable_event (table, key, value)
 | 
						||
       local h
 | 
						||
       if type(table) == "table" then
 | 
						||
         local v = rawget(table, key)
 | 
						||
         if v ~= nil then rawset(table, key, value); return end
 | 
						||
         h = metatable(table).__newindex
 | 
						||
         if h == nil then rawset(table, key, value); return end
 | 
						||
       else
 | 
						||
         h = metatable(table).__newindex
 | 
						||
         if h == nil then
 | 
						||
           error(···)
 | 
						||
         end
 | 
						||
       end
 | 
						||
       if type(h) == "function" then
 | 
						||
         h(table, key,value)           -- call the handler
 | 
						||
       else h[key] = value             -- or repeat operation on it
 | 
						||
       end
 | 
						||
     end
 | 
						||
 | 
						||
=item * B<"call":> called when Lua calls a value.
 | 
						||
 | 
						||
     function function_event (func, ...)
 | 
						||
       if type(func) == "function" then
 | 
						||
         return func(...)   -- primitive call
 | 
						||
       else
 | 
						||
         local h = metatable(func).__call
 | 
						||
         if h then
 | 
						||
           return h(func, ...)
 | 
						||
         else
 | 
						||
           error(···)
 | 
						||
         end
 | 
						||
       end
 | 
						||
     end
 | 
						||
 | 
						||
=back
 | 
						||
 | 
						||
=head2 2.9 - Environments
 | 
						||
 | 
						||
Besides metatables, objects of types thread, function, and userdata
 | 
						||
have another table associated with them, called their I<environment>.
 | 
						||
Like metatables, environments are regular tables and multiple objects
 | 
						||
can share the same environment.
 | 
						||
 | 
						||
Threads are created sharing the environment of the creating thread.
 | 
						||
Userdata and C functions are created sharing the environment of the
 | 
						||
creating C function. Non-nested Lua functions (created by C<loadfile>,
 | 
						||
C<loadstring> or C<load>) are created sharing the environment of the
 | 
						||
creating thread. Nested Lua functions are created sharing the
 | 
						||
environment of the creating Lua function.
 | 
						||
 | 
						||
Environments associated with userdata have no meaning for Lua. It is
 | 
						||
only a convenience feature for programmers to associate a table to a
 | 
						||
userdata.
 | 
						||
 | 
						||
Environments associated with threads are called I<global environments>.
 | 
						||
They are used as the default environment for threads and non-nested Lua
 | 
						||
functions created by the thread and can be directly accessed by C code
 | 
						||
(see E<sect>3.3).
 | 
						||
 | 
						||
The environment associated with a C function can be directly accessed
 | 
						||
by C code (see E<sect>3.3). It is used as the default environment for
 | 
						||
other C functions and userdata created by the function.
 | 
						||
 | 
						||
Environments associated with Lua functions are used to resolve all
 | 
						||
accesses to global variables within the function (see E<sect>2.3). They
 | 
						||
are used as the default environment for nested Lua functions created by
 | 
						||
the function.
 | 
						||
 | 
						||
You can change the environment of a Lua function or the running thread
 | 
						||
by calling C<setfenv>. You can get the environment of a Lua function or
 | 
						||
the running thread by calling C<getfenv>. To manipulate the environment
 | 
						||
of other objects (userdata, C functions, other threads) you must use
 | 
						||
the C API.
 | 
						||
 | 
						||
=head2 2.10 - Garbage Collection
 | 
						||
 | 
						||
Lua performs automatic memory management. This means that you have to
 | 
						||
worry neither about allocating memory for new objects nor about freeing
 | 
						||
it when the objects are no longer needed. Lua manages memory
 | 
						||
automatically by running a I<garbage collector> from time to time to
 | 
						||
collect all I<dead objects> (that is, objects that are no longer
 | 
						||
accessible from Lua). All memory used by Lua is subject to automatic
 | 
						||
management: tables, userdata, functions, threads, strings, etc.
 | 
						||
 | 
						||
Lua implements an incremental mark-and-sweep collector. It uses two
 | 
						||
numbers to control its garbage-collection cycles: the
 | 
						||
I<garbage-collector pause> and the I<garbage-collector step
 | 
						||
multiplier>. Both use percentage points as units (so that a value of
 | 
						||
100 means an internal value of 1).
 | 
						||
 | 
						||
The garbage-collector pause controls how long the collector waits
 | 
						||
before starting a new cycle. Larger values make the collector less
 | 
						||
aggressive. Values smaller than 100 mean the collector will not wait to
 | 
						||
start a new cycle. A value of 200 means that the collector waits for
 | 
						||
the total memory in use to double before starting a new cycle.
 | 
						||
 | 
						||
The step multiplier controls the relative speed of the collector
 | 
						||
relative to memory allocation. Larger values make the collector more
 | 
						||
aggressive but also increase the size of each incremental step. Values
 | 
						||
smaller than 100 make the collector too slow and can result in the
 | 
						||
collector never finishing a cycle. The default, 200, means that the
 | 
						||
collector runs at "twice" the speed of memory allocation.
 | 
						||
 | 
						||
You can change these numbers by calling C<lua_gc> in C or
 | 
						||
C<collectgarbage> in Lua. With these functions you can also control the
 | 
						||
collector directly (e.g., stop and restart it).
 | 
						||
 | 
						||
=head2 2.10.1 - Garbage-Collection Metamethods
 | 
						||
 | 
						||
Using the C API, you can set garbage-collector metamethods for userdata
 | 
						||
(see E<sect>2.8). These metamethods are also called I<finalizers>.
 | 
						||
Finalizers allow you to coordinate Lua's garbage collection with
 | 
						||
external resource management (such as closing files, network or
 | 
						||
database connections, or freeing your own memory).
 | 
						||
 | 
						||
Garbage userdata with a field C<__gc> in their metatables are not
 | 
						||
collected immediately by the garbage collector. Instead, Lua puts them
 | 
						||
in a list. After the collection, Lua does the equivalent of the
 | 
						||
following function for each userdata in that list:
 | 
						||
 | 
						||
     function gc_event (udata)
 | 
						||
       local h = metatable(udata).__gc
 | 
						||
       if h then
 | 
						||
         h(udata)
 | 
						||
       end
 | 
						||
     end
 | 
						||
 | 
						||
At the end of each garbage-collection cycle, the finalizers for
 | 
						||
userdata are called in I<reverse> order of their creation, among those
 | 
						||
collected in that cycle. That is, the first finalizer to be called is
 | 
						||
the one associated with the userdata created last in the program. The
 | 
						||
userdata itself is freed only in the next garbage-collection cycle.
 | 
						||
 | 
						||
=head2 2.10.2 - Weak Tables
 | 
						||
 | 
						||
A I<weak table> is a table whose elements are I<weak references>. A
 | 
						||
weak reference is ignored by the garbage collector. In other words, if
 | 
						||
the only references to an object are weak references, then the garbage
 | 
						||
collector will collect this object.
 | 
						||
 | 
						||
A weak table can have weak keys, weak values, or both. A table with
 | 
						||
weak keys allows the collection of its keys, but prevents the
 | 
						||
collection of its values. A table with both weak keys and weak values
 | 
						||
allows the collection of both keys and values. In any case, if either
 | 
						||
the key or the value is collected, the whole pair is removed from the
 | 
						||
table. The weakness of a table is controlled by the C<__mode> field of
 | 
						||
its metatable. If the C<__mode> field is a string containing the
 | 
						||
character 'C<k>', the keys in the table are weak. If C<__mode> contains
 | 
						||
'C<v>', the values in the table are weak.
 | 
						||
 | 
						||
After you use a table as a metatable, you should not change the value
 | 
						||
of its C<__mode> field. Otherwise, the weak behavior of the tables
 | 
						||
controlled by this metatable is undefined.
 | 
						||
 | 
						||
=head2 2.11 - Coroutines
 | 
						||
 | 
						||
Lua supports coroutines, also called I<collaborative multithreading>. A
 | 
						||
coroutine in Lua represents an independent thread of execution. Unlike
 | 
						||
threads in multithread systems, however, a coroutine only suspends its
 | 
						||
execution by explicitly calling a yield function.
 | 
						||
 | 
						||
You create a coroutine with a call to C<coroutine.create>. Its sole
 | 
						||
argument is a function that is the main function of the coroutine. The
 | 
						||
C<create> function only creates a new coroutine and returns a handle to
 | 
						||
it (an object of type I<thread>); it does not start the coroutine
 | 
						||
execution.
 | 
						||
 | 
						||
When you first call C<coroutine.resume>, passing as its first argument
 | 
						||
a thread returned by C<coroutine.create>, the coroutine starts its
 | 
						||
execution, at the first line of its main function. Extra arguments
 | 
						||
passed to C<coroutine.resume> are passed on to the coroutine main
 | 
						||
function. After the coroutine starts running, it runs until it
 | 
						||
terminates or I<yields>.
 | 
						||
 | 
						||
A coroutine can terminate its execution in two ways: normally, when its
 | 
						||
main function returns (explicitly or implicitly, after the last
 | 
						||
instruction); and abnormally, if there is an unprotected error. In the
 | 
						||
first case, C<coroutine.resume> returns B<true>, plus any values
 | 
						||
returned by the coroutine main function. In case of errors,
 | 
						||
C<coroutine.resume> returns B<false> plus an error message.
 | 
						||
 | 
						||
A coroutine yields by calling C<coroutine.yield>. When a coroutine
 | 
						||
yields, the corresponding C<coroutine.resume> returns immediately, even
 | 
						||
if the yield happens inside nested function calls (that is, not in the
 | 
						||
main function, but in a function directly or indirectly called by the
 | 
						||
main function). In the case of a yield, C<coroutine.resume> also
 | 
						||
returns B<true>, plus any values passed to C<coroutine.yield>. The next
 | 
						||
time you resume the same coroutine, it continues its execution from the
 | 
						||
point where it yielded, with the call to C<coroutine.yield> returning
 | 
						||
any extra arguments passed to C<coroutine.resume>.
 | 
						||
 | 
						||
Like C<coroutine.create>, the C<coroutine.wrap> function also creates a
 | 
						||
coroutine, but instead of returning the coroutine itself, it returns a
 | 
						||
function that, when called, resumes the coroutine. Any arguments passed
 | 
						||
to this function go as extra arguments to C<coroutine.resume>.
 | 
						||
C<coroutine.wrap> returns all the values returned by
 | 
						||
C<coroutine.resume>, except the first one (the boolean error code).
 | 
						||
Unlike C<coroutine.resume>, C<coroutine.wrap> does not catch errors;
 | 
						||
any error is propagated to the caller.
 | 
						||
 | 
						||
As an example, consider the following code:
 | 
						||
 | 
						||
     function foo (a)
 | 
						||
       print("foo", a)
 | 
						||
       return coroutine.yield(2*a)
 | 
						||
     end
 | 
						||
     
 | 
						||
     co = coroutine.create(function (a,b)
 | 
						||
           print("co-body", a, b)
 | 
						||
           local r = foo(a+1)
 | 
						||
           print("co-body", r)
 | 
						||
           local r, s = coroutine.yield(a+b, a-b)
 | 
						||
           print("co-body", r, s)
 | 
						||
           return b, "end"
 | 
						||
     end)
 | 
						||
            
 | 
						||
     print("main", coroutine.resume(co, 1, 10))
 | 
						||
     print("main", coroutine.resume(co, "r"))
 | 
						||
     print("main", coroutine.resume(co, "x", "y"))
 | 
						||
     print("main", coroutine.resume(co, "x", "y"))
 | 
						||
 | 
						||
When you run it, it produces the following output:
 | 
						||
 | 
						||
     co-body 1       10
 | 
						||
     foo     2
 | 
						||
     
 | 
						||
     main    true    4
 | 
						||
     co-body r
 | 
						||
     main    true    11      -9
 | 
						||
     co-body x       y
 | 
						||
     main    true    10      end
 | 
						||
     main    false   cannot resume dead coroutine
 | 
						||
 | 
						||
=head1 3 - The Application Program Interface
 | 
						||
 | 
						||
This section describes the C API for Lua, that is, the set of C
 | 
						||
functions available to the host program to communicate with Lua. All
 | 
						||
API functions and related types and constants are declared in the
 | 
						||
header file C<lua.h>.
 | 
						||
 | 
						||
Even when we use the term "function", any facility in the API may be
 | 
						||
provided as a macro instead. All such macros use each of their
 | 
						||
arguments exactly once (except for the first argument, which is always
 | 
						||
a Lua state), and so do not generate any hidden side-effects.
 | 
						||
 | 
						||
As in most C libraries, the Lua API functions do not check their
 | 
						||
arguments for validity or consistency. However, you can change this
 | 
						||
behavior by compiling Lua with a proper definition for the macro
 | 
						||
C<luai_apicheck>, in file C<luaconf.h>.
 | 
						||
 | 
						||
=head2 3.1 - The Stack
 | 
						||
 | 
						||
Lua uses a I<virtual stack> to pass values to and from C. Each element
 | 
						||
in this stack represents a Lua value (B<nil>, number, string, etc.).
 | 
						||
 | 
						||
Whenever Lua calls C, the called function gets a new stack, which is
 | 
						||
independent of previous stacks and of stacks of C functions that are
 | 
						||
still active. This stack initially contains any arguments to the C
 | 
						||
function and it is where the C function pushes its results to be
 | 
						||
returned to the caller (see C<lua_CFunction>).
 | 
						||
 | 
						||
For convenience, most query operations in the API do not follow a
 | 
						||
strict stack discipline. Instead, they can refer to any element in the
 | 
						||
stack by using an I<index>: A positive index represents an I<absolute>
 | 
						||
stack position (starting at 1); a negative index represents an
 | 
						||
I<offset> relative to the top of the stack. More specifically, if the
 | 
						||
stack has I<n> elements, then index 1 represents the first element
 | 
						||
(that is, the element that was pushed onto the stack first) and index
 | 
						||
I<n> represents the last element; index -1 also represents the last
 | 
						||
element (that is, the element at the top) and index I<-n> represents
 | 
						||
the first element. We say that an index is I<valid> if it lies between
 | 
						||
1 and the stack top (that is, if C<1 E<le> abs(index) E<le> top>).
 | 
						||
 | 
						||
=head2 3.2 - Stack Size
 | 
						||
 | 
						||
When you interact with Lua API, you are responsible for ensuring
 | 
						||
consistency. In particular, I<you are responsible for controlling stack
 | 
						||
overflow>. You can use the function C<lua_checkstack> to grow the stack
 | 
						||
size.
 | 
						||
 | 
						||
Whenever Lua calls C, it ensures that at least C<LUA_MINSTACK> stack
 | 
						||
positions are available. C<LUA_MINSTACK> is defined as 20, so that
 | 
						||
usually you do not have to worry about stack space unless your code has
 | 
						||
loops pushing elements onto the stack.
 | 
						||
 | 
						||
Most query functions accept as indices any value inside the available
 | 
						||
stack space, that is, indices up to the maximum stack size you have set
 | 
						||
through C<lua_checkstack>. Such indices are called I<acceptable
 | 
						||
indices>. More formally, we define an I<acceptable index> as follows:
 | 
						||
 | 
						||
     (index < 0 && abs(index) <= top) ||
 | 
						||
     (index > 0 && index <= stackspace)
 | 
						||
 | 
						||
Note that 0 is never an acceptable index.
 | 
						||
 | 
						||
=head2 3.3 - Pseudo-Indices
 | 
						||
 | 
						||
Unless otherwise noted, any function that accepts valid indices can
 | 
						||
also be called with I<pseudo-indices>, which represent some Lua values
 | 
						||
that are accessible to C code but which are not in the stack.
 | 
						||
Pseudo-indices are used to access the thread environment, the function
 | 
						||
environment, the registry, and the upvalues of a C function (see
 | 
						||
E<sect>3.4).
 | 
						||
 | 
						||
The thread environment (where global variables live) is always at
 | 
						||
pseudo-index C<LUA_GLOBALSINDEX>. The environment of the running C
 | 
						||
function is always at pseudo-index C<LUA_ENVIRONINDEX>.
 | 
						||
 | 
						||
To access and change the value of global variables, you can use regular
 | 
						||
table operations over an environment table. For instance, to access the
 | 
						||
value of a global variable, do
 | 
						||
 | 
						||
     lua_getfield(L, LUA_GLOBALSINDEX, varname);
 | 
						||
 | 
						||
=head2 3.4 - C Closures
 | 
						||
 | 
						||
When a C function is created, it is possible to associate some values
 | 
						||
with it, thus creating a I<C closure>; these values are called
 | 
						||
I<upvalues> and are accessible to the function whenever it is called
 | 
						||
(see C<lua_pushcclosure>).
 | 
						||
 | 
						||
Whenever a C function is called, its upvalues are located at specific
 | 
						||
pseudo-indices. These pseudo-indices are produced by the macro
 | 
						||
C<lua_upvalueindex>. The first value associated with a function is at
 | 
						||
position C<lua_upvalueindex(1)>, and so on. Any access to
 | 
						||
C<lua_upvalueindex(I<n>)>, where I<n> is greater than the number of
 | 
						||
upvalues of the current function (but not greater than 256), produces
 | 
						||
an acceptable (but invalid) index.
 | 
						||
 | 
						||
=head2 3.5 - Registry
 | 
						||
 | 
						||
Lua provides a I<registry>, a pre-defined table that can be used by any
 | 
						||
C code to store whatever Lua value it needs to store. This table is
 | 
						||
always located at pseudo-index C<LUA_REGISTRYINDEX>. Any C library can
 | 
						||
store data into this table, but it should take care to choose keys
 | 
						||
different from those used by other libraries, to avoid collisions.
 | 
						||
Typically, you should use as key a string containing your library name
 | 
						||
or a light userdata with the address of a C object in your code.
 | 
						||
 | 
						||
The integer keys in the registry are used by the reference mechanism,
 | 
						||
implemented by the auxiliary library, and therefore should not be used
 | 
						||
for other purposes.
 | 
						||
 | 
						||
=head2 3.6 - Error Handling in C
 | 
						||
 | 
						||
Internally, Lua uses the C C<longjmp> facility to handle errors. (You
 | 
						||
can also choose to use exceptions if you use C++; see file
 | 
						||
C<luaconf.h>.) When Lua faces any error (such as memory allocation
 | 
						||
errors, type errors, syntax errors, and runtime errors) it I<raises> an
 | 
						||
error; that is, it does a long jump. A I<protected environment> uses
 | 
						||
C<setjmp> to set a recover point; any error jumps to the most recent
 | 
						||
active recover point.
 | 
						||
 | 
						||
Most functions in the API can throw an error, for instance due to a
 | 
						||
memory allocation error. The documentation for each function indicates
 | 
						||
whether it can throw errors.
 | 
						||
 | 
						||
Inside a C function you can throw an error by calling C<lua_error>.
 | 
						||
 | 
						||
=head2 3.7 - Functions and Types
 | 
						||
 | 
						||
Here we list all functions and types from the C API in alphabetical
 | 
						||
order. Each function has an indicator like this: [-o, +p, I<x>]
 | 
						||
 | 
						||
The first field, C<o>, is how many elements the function pops from the
 | 
						||
stack. The second field, C<p>, is how many elements the function pushes
 | 
						||
onto the stack. (Any function always pushes its results after popping
 | 
						||
its arguments.) A field in the form C<x|y> means the function can push
 | 
						||
(or pop) C<x> or C<y> elements, depending on the situation; an
 | 
						||
interrogation mark 'C<?>' means that we cannot know how many elements
 | 
						||
the function pops/pushes by looking only at its arguments (e.g., they
 | 
						||
may depend on what is on the stack). The third field, C<x>, tells
 | 
						||
whether the function may throw errors: 'C<->' means the function never
 | 
						||
throws any error; 'C<m>' means the function may throw an error only due
 | 
						||
to not enough memory; 'C<e>' means the function may throw other kinds
 | 
						||
of errors; 'C<v>' means the function may throw an error on purpose.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_Alloc>
 | 
						||
 | 
						||
 typedef void * (*lua_Alloc) (void *ud,
 | 
						||
                              void *ptr,
 | 
						||
                              size_t osize,
 | 
						||
                              size_t nsize);
 | 
						||
 | 
						||
The type of the memory-allocation function used by Lua states. The
 | 
						||
allocator function must provide a functionality similar to C<realloc>,
 | 
						||
but not exactly the same. Its arguments are C<ud>, an opaque pointer
 | 
						||
passed to C<lua_newstate>; C<ptr>, a pointer to the block being
 | 
						||
allocated/reallocated/freed; C<osize>, the original size of the block;
 | 
						||
C<nsize>, the new size of the block. C<ptr> is C<NULL> if and only if
 | 
						||
C<osize> is zero. When C<nsize> is zero, the allocator must return
 | 
						||
C<NULL>; if C<osize> is not zero, it should free the block pointed to
 | 
						||
by C<ptr>. When C<nsize> is not zero, the allocator returns C<NULL> if
 | 
						||
and only if it cannot fill the request. When C<nsize> is not zero and
 | 
						||
C<osize> is zero, the allocator should behave like C<malloc>. When
 | 
						||
C<nsize> and C<osize> are not zero, the allocator behaves like
 | 
						||
C<realloc>. Lua assumes that the allocator never fails when C<osize
 | 
						||
E<gt>= nsize>.
 | 
						||
 | 
						||
Here is a simple implementation for the allocator function. It is used
 | 
						||
in the auxiliary library by C<luaL_newstate>.
 | 
						||
 | 
						||
     static void *l_alloc (void *ud, void *ptr, size_t osize,
 | 
						||
                                                size_t nsize) {
 | 
						||
       (void)ud;  (void)osize;  /* not used */
 | 
						||
       if (nsize == 0) {
 | 
						||
         free(ptr);
 | 
						||
         return NULL;
 | 
						||
       }
 | 
						||
       else
 | 
						||
         return realloc(ptr, nsize);
 | 
						||
     }
 | 
						||
 | 
						||
This code assumes that C<free(NULL)> has no effect and that
 | 
						||
C<realloc(NULL, size)> is equivalent to C<malloc(size)>. ANSI C ensures
 | 
						||
both behaviors.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_atpanic>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 lua_CFunction lua_atpanic (lua_State *L, lua_CFunction panicf);
 | 
						||
 | 
						||
Sets a new panic function and returns the old one.
 | 
						||
 | 
						||
If an error happens outside any protected environment, Lua calls a
 | 
						||
I<panic function> and then calls C<exit(EXIT_FAILURE)>, thus exiting
 | 
						||
the host application. Your panic function can avoid this exit by never
 | 
						||
returning (e.g., doing a long jump).
 | 
						||
 | 
						||
The panic function can access the error message at the top of the
 | 
						||
stack.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_call>
 | 
						||
 | 
						||
[-(nargs + 1), +nresults, I<e>]
 | 
						||
 | 
						||
 void lua_call (lua_State *L, int nargs, int nresults);
 | 
						||
 | 
						||
Calls a function.
 | 
						||
 | 
						||
To call a function you must use the following protocol: first, the
 | 
						||
function to be called is pushed onto the stack; then, the arguments to
 | 
						||
the function are pushed in direct order; that is, the first argument is
 | 
						||
pushed first. Finally you call C<lua_call>; C<nargs> is the number of
 | 
						||
arguments that you pushed onto the stack. All arguments and the
 | 
						||
function value are popped from the stack when the function is called.
 | 
						||
The function results are pushed onto the stack when the function
 | 
						||
returns. The number of results is adjusted to C<nresults>, unless
 | 
						||
C<nresults> is C<LUA_MULTRET>. In this case, I<all> results from the
 | 
						||
function are pushed. Lua takes care that the returned values fit into
 | 
						||
the stack space. The function results are pushed onto the stack in
 | 
						||
direct order (the first result is pushed first), so that after the call
 | 
						||
the last result is on the top of the stack.
 | 
						||
 | 
						||
Any error inside the called function is propagated upwards (with a
 | 
						||
C<longjmp>).
 | 
						||
 | 
						||
The following example shows how the host program can do the equivalent
 | 
						||
to this Lua code:
 | 
						||
 | 
						||
     a = f("how", t.x, 14)
 | 
						||
 | 
						||
Here it is in C:
 | 
						||
 | 
						||
     lua_getfield(L, LUA_GLOBALSINDEX, "f"); /* function to be called */
 | 
						||
     lua_pushstring(L, "how");                        /* 1st argument */
 | 
						||
     lua_getfield(L, LUA_GLOBALSINDEX, "t");   /* table to be indexed */
 | 
						||
     lua_getfield(L, -1, "x");        /* push result of t.x (2nd arg) */
 | 
						||
     lua_remove(L, -2);                  /* remove 't' from the stack */
 | 
						||
     lua_pushinteger(L, 14);                          /* 3rd argument */
 | 
						||
     lua_call(L, 3, 1);     /* call 'f' with 3 arguments and 1 result */
 | 
						||
     lua_setfield(L, LUA_GLOBALSINDEX, "a");        /* set global 'a' */
 | 
						||
 | 
						||
Note that the code above is "balanced": at its end, the stack is back
 | 
						||
to its original configuration. This is considered good programming
 | 
						||
practice.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_CFunction>
 | 
						||
 | 
						||
 typedef int (*lua_CFunction) (lua_State *L);
 | 
						||
 | 
						||
Type for C functions.
 | 
						||
 | 
						||
In order to communicate properly with Lua, a C function must use the
 | 
						||
following protocol, which defines the way parameters and results are
 | 
						||
passed: a C function receives its arguments from Lua in its stack in
 | 
						||
direct order (the first argument is pushed first). So, when the
 | 
						||
function starts, C<lua_gettop(L)> returns the number of arguments
 | 
						||
received by the function. The first argument (if any) is at index 1 and
 | 
						||
its last argument is at index C<lua_gettop(L)>. To return values to
 | 
						||
Lua, a C function just pushes them onto the stack, in direct order (the
 | 
						||
first result is pushed first), and returns the number of results. Any
 | 
						||
other value in the stack below the results will be properly discarded
 | 
						||
by Lua. Like a Lua function, a C function called by Lua can also return
 | 
						||
many results.
 | 
						||
 | 
						||
As an example, the following function receives a variable number of
 | 
						||
numerical arguments and returns their average and sum:
 | 
						||
 | 
						||
     static int foo (lua_State *L) {
 | 
						||
       int n = lua_gettop(L);    /* number of arguments */
 | 
						||
       lua_Number sum = 0;
 | 
						||
       int i;
 | 
						||
       for (i = 1; i <= n; i++) {
 | 
						||
         if (!lua_isnumber(L, i)) {
 | 
						||
           lua_pushstring(L, "incorrect argument");
 | 
						||
           lua_error(L);
 | 
						||
         }
 | 
						||
         sum += lua_tonumber(L, i);
 | 
						||
       }
 | 
						||
       lua_pushnumber(L, sum/n);        /* first result */
 | 
						||
       lua_pushnumber(L, sum);         /* second result */
 | 
						||
       return 2;                   /* number of results */
 | 
						||
     }
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_checkstack>
 | 
						||
 | 
						||
[-0, +0, I<m>]
 | 
						||
 | 
						||
 int lua_checkstack (lua_State *L, int extra);
 | 
						||
 | 
						||
Ensures that there are at least C<extra> free stack slots in the stack.
 | 
						||
It returns false if it cannot grow the stack to that size. This
 | 
						||
function never shrinks the stack; if the stack is already larger than
 | 
						||
the new size, it is left unchanged.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_close>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 void lua_close (lua_State *L);
 | 
						||
 | 
						||
Destroys all objects in the given Lua state (calling the corresponding
 | 
						||
garbage-collection metamethods, if any) and frees all dynamic memory
 | 
						||
used by this state. On several platforms, you may not need to call this
 | 
						||
function, because all resources are naturally released when the host
 | 
						||
program ends. On the other hand, long-running programs, such as a
 | 
						||
daemon or a web server, might need to release states as soon as they
 | 
						||
are not needed, to avoid growing too large.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_concat>
 | 
						||
 | 
						||
[-n, +1, I<e>]
 | 
						||
 | 
						||
 void lua_concat (lua_State *L, int n);
 | 
						||
 | 
						||
Concatenates the C<n> values at the top of the stack, pops them, and
 | 
						||
leaves the result at the top. If C<n> is 1, the result is the single
 | 
						||
value on the stack (that is, the function does nothing); if C<n> is 0,
 | 
						||
the result is the empty string. Concatenation is performed following
 | 
						||
the usual semantics of Lua (see E<sect>2.5.4).
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_cpcall>
 | 
						||
 | 
						||
[-0, +(0|1), I<->]
 | 
						||
 | 
						||
 int lua_cpcall (lua_State *L, lua_CFunction func, void *ud);
 | 
						||
 | 
						||
Calls the C function C<func> in protected mode. C<func> starts with
 | 
						||
only one element in its stack, a light userdata containing C<ud>. In
 | 
						||
case of errors, C<lua_cpcall> returns the same error codes as
 | 
						||
C<lua_pcall>, plus the error object on the top of the stack; otherwise,
 | 
						||
it returns zero, and does not change the stack. All values returned by
 | 
						||
C<func> are discarded.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_createtable>
 | 
						||
 | 
						||
[-0, +1, I<m>]
 | 
						||
 | 
						||
 void lua_createtable (lua_State *L, int narr, int nrec);
 | 
						||
 | 
						||
Creates a new empty table and pushes it onto the stack. The new table
 | 
						||
has space pre-allocated for C<narr> array elements and C<nrec>
 | 
						||
non-array elements. This pre-allocation is useful when you know exactly
 | 
						||
how many elements the table will have. Otherwise you can use the
 | 
						||
function C<lua_newtable>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_dump>
 | 
						||
 | 
						||
[-0, +0, I<m>]
 | 
						||
 | 
						||
 int lua_dump (lua_State *L, lua_Writer writer, void *data);
 | 
						||
 | 
						||
Dumps a function as a binary chunk. Receives a Lua function on the top
 | 
						||
of the stack and produces a binary chunk that, if loaded again, results
 | 
						||
in a function equivalent to the one dumped. As it produces parts of the
 | 
						||
chunk, C<lua_dump> calls function C<writer> (see C<lua_Writer>) with
 | 
						||
the given C<data> to write them.
 | 
						||
 | 
						||
The value returned is the error code returned by the last call to the
 | 
						||
writer; 0 means no errors.
 | 
						||
 | 
						||
This function does not pop the Lua function from the stack.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_equal>
 | 
						||
 | 
						||
[-0, +0, I<e>]
 | 
						||
 | 
						||
 int lua_equal (lua_State *L, int index1, int index2);
 | 
						||
 | 
						||
Returns 1 if the two values in acceptable indices C<index1> and
 | 
						||
C<index2> are equal, following the semantics of the Lua C<==> operator
 | 
						||
(that is, may call metamethods). Otherwise returns 0. Also returns 0 if
 | 
						||
any of the indices is non valid.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_error>
 | 
						||
 | 
						||
[-1, +0, I<v>]
 | 
						||
 | 
						||
 int lua_error (lua_State *L);
 | 
						||
 | 
						||
Generates a Lua error. The error message (which can actually be a Lua
 | 
						||
value of any type) must be on the stack top. This function does a long
 | 
						||
jump, and therefore never returns. (see C<luaL_error>).
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_gc>
 | 
						||
 | 
						||
[-0, +0, I<e>]
 | 
						||
 | 
						||
 int lua_gc (lua_State *L, int what, int data);
 | 
						||
 | 
						||
Controls the garbage collector.
 | 
						||
 | 
						||
This function performs several tasks, according to the value of the
 | 
						||
parameter C<what>:
 | 
						||
 | 
						||
=over
 | 
						||
 | 
						||
=item * B<C<LUA_GCSTOP>:> stops the garbage collector.
 | 
						||
 | 
						||
=item * B<C<LUA_GCRESTART>:> restarts the garbage collector.
 | 
						||
 | 
						||
=item * B<C<LUA_GCCOLLECT>:> performs a full garbage-collection cycle.
 | 
						||
 | 
						||
=item * B<C<LUA_GCCOUNT>:> returns the current amount of memory (in
 | 
						||
Kbytes) in use by Lua.
 | 
						||
 | 
						||
=item * B<C<LUA_GCCOUNTB>:> returns the remainder of dividing the
 | 
						||
current amount of bytes of memory in use by Lua by 1024.
 | 
						||
 | 
						||
=item * B<C<LUA_GCSTEP>:> performs an incremental step of garbage
 | 
						||
collection. The step "size" is controlled by C<data> (larger values
 | 
						||
mean more steps) in a non-specified way. If you want to control the
 | 
						||
step size you must experimentally tune the value of C<data>. The
 | 
						||
function returns 1 if the step finished a garbage-collection cycle.
 | 
						||
 | 
						||
=item * B<C<LUA_GCSETPAUSE>:> sets C<data> as the new value for the
 | 
						||
I<pause> of the collector (see E<sect>2.10). The function returns the
 | 
						||
previous value of the pause.
 | 
						||
 | 
						||
=item * B<C<LUA_GCSETSTEPMUL>:> sets C<data> as the new value for the
 | 
						||
I<step multiplier> of the collector (see E<sect>2.10). The function
 | 
						||
returns the previous value of the step multiplier.
 | 
						||
 | 
						||
=back
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_getallocf>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 lua_Alloc lua_getallocf (lua_State *L, void **ud);
 | 
						||
 | 
						||
Returns the memory-allocation function of a given state. If C<ud> is
 | 
						||
not C<NULL>, Lua stores in C<*ud> the opaque pointer passed to
 | 
						||
C<lua_newstate>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_getfenv>
 | 
						||
 | 
						||
[-0, +1, I<->]
 | 
						||
 | 
						||
 void lua_getfenv (lua_State *L, int index);
 | 
						||
 | 
						||
Pushes onto the stack the environment table of the value at the given
 | 
						||
index.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_getfield>
 | 
						||
 | 
						||
[-0, +1, I<e>]
 | 
						||
 | 
						||
 void lua_getfield (lua_State *L, int index, const char *k);
 | 
						||
 | 
						||
Pushes onto the stack the value C<t[k]>, where C<t> is the value at the
 | 
						||
given valid index. As in Lua, this function may trigger a metamethod
 | 
						||
for the "index" event (see E<sect>2.8).
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_getglobal>
 | 
						||
 | 
						||
[-0, +1, I<e>]
 | 
						||
 | 
						||
 void lua_getglobal (lua_State *L, const char *name);
 | 
						||
 | 
						||
Pushes onto the stack the value of the global C<name>. It is defined as
 | 
						||
a macro:
 | 
						||
 | 
						||
     #define lua_getglobal(L,s)  lua_getfield(L, LUA_GLOBALSINDEX, s)
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_getmetatable>
 | 
						||
 | 
						||
[-0, +(0|1), I<->]
 | 
						||
 | 
						||
 int lua_getmetatable (lua_State *L, int index);
 | 
						||
 | 
						||
Pushes onto the stack the metatable of the value at the given
 | 
						||
acceptable index. If the index is not valid, or if the value does not
 | 
						||
have a metatable, the function returns 0 and pushes nothing on the
 | 
						||
stack.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_gettable>
 | 
						||
 | 
						||
[-1, +1, I<e>]
 | 
						||
 | 
						||
 void lua_gettable (lua_State *L, int index);
 | 
						||
 | 
						||
Pushes onto the stack the value C<t[k]>, where C<t> is the value at the
 | 
						||
given valid index and C<k> is the value at the top of the stack.
 | 
						||
 | 
						||
This function pops the key from the stack (putting the resulting value
 | 
						||
in its place). As in Lua, this function may trigger a metamethod for
 | 
						||
the "index" event (see E<sect>2.8).
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_gettop>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 int lua_gettop (lua_State *L);
 | 
						||
 | 
						||
Returns the index of the top element in the stack. Because indices
 | 
						||
start at 1, this result is equal to the number of elements in the stack
 | 
						||
(and so 0 means an empty stack).
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_insert>
 | 
						||
 | 
						||
[-1, +1, I<->]
 | 
						||
 | 
						||
 void lua_insert (lua_State *L, int index);
 | 
						||
 | 
						||
Moves the top element into the given valid index, shifting up the
 | 
						||
elements above this index to open space. Cannot be called with a
 | 
						||
pseudo-index, because a pseudo-index is not an actual stack position.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_Integer>
 | 
						||
 | 
						||
 typedef ptrdiff_t lua_Integer;
 | 
						||
 | 
						||
The type used by the Lua API to represent integral values.
 | 
						||
 | 
						||
By default it is a C<ptrdiff_t>, which is usually the largest signed
 | 
						||
integral type the machine handles "comfortably".
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_isboolean>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 int lua_isboolean (lua_State *L, int index);
 | 
						||
 | 
						||
Returns 1 if the value at the given acceptable index has type boolean,
 | 
						||
and 0 otherwise.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_iscfunction>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 int lua_iscfunction (lua_State *L, int index);
 | 
						||
 | 
						||
Returns 1 if the value at the given acceptable index is a C function,
 | 
						||
and 0 otherwise.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_isfunction>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 int lua_isfunction (lua_State *L, int index);
 | 
						||
 | 
						||
Returns 1 if the value at the given acceptable index is a function
 | 
						||
(either C or Lua), and 0 otherwise.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_islightuserdata>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 int lua_islightuserdata (lua_State *L, int index);
 | 
						||
 | 
						||
Returns 1 if the value at the given acceptable index is a light
 | 
						||
userdata, and 0 otherwise.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_isnil>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 int lua_isnil (lua_State *L, int index);
 | 
						||
 | 
						||
Returns 1 if the value at the given acceptable index is B<nil>, and 0
 | 
						||
otherwise.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_isnone>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 int lua_isnone (lua_State *L, int index);
 | 
						||
 | 
						||
Returns 1 if the given acceptable index is not valid (that is, it
 | 
						||
refers to an element outside the current stack), and 0 otherwise.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_isnoneornil>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 int lua_isnoneornil (lua_State *L, int index);
 | 
						||
 | 
						||
Returns 1 if the given acceptable index is not valid (that is, it
 | 
						||
refers to an element outside the current stack) or if the value at this
 | 
						||
index is B<nil>, and 0 otherwise.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_isnumber>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 int lua_isnumber (lua_State *L, int index);
 | 
						||
 | 
						||
Returns 1 if the value at the given acceptable index is a number or a
 | 
						||
string convertible to a number, and 0 otherwise.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_isstring>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 int lua_isstring (lua_State *L, int index);
 | 
						||
 | 
						||
Returns 1 if the value at the given acceptable index is a string or a
 | 
						||
number (which is always convertible to a string), and 0 otherwise.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_istable>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 int lua_istable (lua_State *L, int index);
 | 
						||
 | 
						||
Returns 1 if the value at the given acceptable index is a table, and 0
 | 
						||
otherwise.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_isthread>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 int lua_isthread (lua_State *L, int index);
 | 
						||
 | 
						||
Returns 1 if the value at the given acceptable index is a thread, and 0
 | 
						||
otherwise.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_isuserdata>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 int lua_isuserdata (lua_State *L, int index);
 | 
						||
 | 
						||
Returns 1 if the value at the given acceptable index is a userdata
 | 
						||
(either full or light), and 0 otherwise.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_lessthan>
 | 
						||
 | 
						||
[-0, +0, I<e>]
 | 
						||
 | 
						||
 int lua_lessthan (lua_State *L, int index1, int index2);
 | 
						||
 | 
						||
Returns 1 if the value at acceptable index C<index1> is smaller than
 | 
						||
the value at acceptable index C<index2>, following the semantics of the
 | 
						||
Lua C<E<lt>> operator (that is, may call metamethods). Otherwise
 | 
						||
returns 0. Also returns 0 if any of the indices is non valid.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_load>
 | 
						||
 | 
						||
[-0, +1, I<->]
 | 
						||
 | 
						||
 int lua_load (lua_State *L,
 | 
						||
               lua_Reader reader,
 | 
						||
               void *data,
 | 
						||
               const char *chunkname);
 | 
						||
 | 
						||
Loads a Lua chunk. If there are no errors, C<lua_load> pushes the
 | 
						||
compiled chunk as a Lua function on top of the stack. Otherwise, it
 | 
						||
pushes an error message. The return values of C<lua_load> are:
 | 
						||
 | 
						||
=over
 | 
						||
 | 
						||
=item * B<0:> no errors;
 | 
						||
 | 
						||
=item * B<C<LUA_ERRSYNTAX>:> syntax error during pre-compilation;
 | 
						||
 | 
						||
=item * B<C<LUA_ERRMEM>:> memory allocation error.
 | 
						||
 | 
						||
=back
 | 
						||
 | 
						||
This function only loads a chunk; it does not run it.
 | 
						||
 | 
						||
C<lua_load> automatically detects whether the chunk is text or binary,
 | 
						||
and loads it accordingly (see program C<luac>).
 | 
						||
 | 
						||
The C<lua_load> function uses a user-supplied C<reader> function to
 | 
						||
read the chunk (see C<lua_Reader>). The C<data> argument is an opaque
 | 
						||
value passed to the reader function.
 | 
						||
 | 
						||
The C<chunkname> argument gives a name to the chunk, which is used for
 | 
						||
error messages and in debug information (see E<sect>3.8).
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_newstate>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 lua_State *lua_newstate (lua_Alloc f, void *ud);
 | 
						||
 | 
						||
Creates a new, independent state. Returns C<NULL> if cannot create the
 | 
						||
state (due to lack of memory). The argument C<f> is the allocator
 | 
						||
function; Lua does all memory allocation for this state through this
 | 
						||
function. The second argument, C<ud>, is an opaque pointer that Lua
 | 
						||
simply passes to the allocator in every call.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_newtable>
 | 
						||
 | 
						||
[-0, +1, I<m>]
 | 
						||
 | 
						||
 void lua_newtable (lua_State *L);
 | 
						||
 | 
						||
Creates a new empty table and pushes it onto the stack. It is
 | 
						||
equivalent to C<lua_createtable(L, 0, 0)>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_newthread>
 | 
						||
 | 
						||
[-0, +1, I<m>]
 | 
						||
 | 
						||
 lua_State *lua_newthread (lua_State *L);
 | 
						||
 | 
						||
Creates a new thread, pushes it on the stack, and returns a pointer to
 | 
						||
a C<lua_State> that represents this new thread. The new state returned
 | 
						||
by this function shares with the original state all global objects
 | 
						||
(such as tables), but has an independent execution stack.
 | 
						||
 | 
						||
There is no explicit function to close or to destroy a thread. Threads
 | 
						||
are subject to garbage collection, like any Lua object.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_newuserdata>
 | 
						||
 | 
						||
[-0, +1, I<m>]
 | 
						||
 | 
						||
 void *lua_newuserdata (lua_State *L, size_t size);
 | 
						||
 | 
						||
This function allocates a new block of memory with the given size,
 | 
						||
pushes onto the stack a new full userdata with the block address, and
 | 
						||
returns this address.
 | 
						||
 | 
						||
Userdata represent C values in Lua. A I<full userdata> represents a
 | 
						||
block of memory. It is an object (like a table): you must create it, it
 | 
						||
can have its own metatable, and you can detect when it is being
 | 
						||
collected. A full userdata is only equal to itself (under raw
 | 
						||
equality).
 | 
						||
 | 
						||
When Lua collects a full userdata with a C<gc> metamethod, Lua calls
 | 
						||
the metamethod and marks the userdata as finalized. When this userdata
 | 
						||
is collected again then Lua frees its corresponding memory.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_next>
 | 
						||
 | 
						||
[-1, +(2|0), I<e>]
 | 
						||
 | 
						||
 int lua_next (lua_State *L, int index);
 | 
						||
 | 
						||
Pops a key from the stack, and pushes a key-value pair from the table
 | 
						||
at the given index (the "next" pair after the given key). If there are
 | 
						||
no more elements in the table, then C<lua_next> returns 0 (and pushes
 | 
						||
nothing).
 | 
						||
 | 
						||
A typical traversal looks like this:
 | 
						||
 | 
						||
     /* table is in the stack at index 't' */
 | 
						||
     lua_pushnil(L);  /* first key */
 | 
						||
     while (lua_next(L, t) != 0) {
 | 
						||
       /* uses 'key' (at index -2) and 'value' (at index -1) */
 | 
						||
       printf("%s - %s\n",
 | 
						||
              lua_typename(L, lua_type(L, -2)),
 | 
						||
              lua_typename(L, lua_type(L, -1)));
 | 
						||
       /* removes 'value'; keeps 'key' for next iteration */
 | 
						||
       lua_pop(L, 1);
 | 
						||
     }
 | 
						||
 | 
						||
While traversing a table, do not call C<lua_tolstring> directly on a
 | 
						||
key, unless you know that the key is actually a string. Recall that
 | 
						||
C<lua_tolstring> I<changes> the value at the given index; this confuses
 | 
						||
the next call to C<lua_next>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_Number>
 | 
						||
 | 
						||
 typedef double lua_Number;
 | 
						||
 | 
						||
The type of numbers in Lua. By default, it is double, but that can be
 | 
						||
changed in C<luaconf.h>.
 | 
						||
 | 
						||
Through the configuration file you can change Lua to operate with
 | 
						||
another type for numbers (e.g., float or long).
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_objlen>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 size_t lua_objlen (lua_State *L, int index);
 | 
						||
 | 
						||
Returns the "length" of the value at the given acceptable index: for
 | 
						||
strings, this is the string length; for tables, this is the result of
 | 
						||
the length operator ('C<#>'); for userdata, this is the size of the
 | 
						||
block of memory allocated for the userdata; for other values, it is 0.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_pcall>
 | 
						||
 | 
						||
[-(nargs + 1), +(nresults|1), I<->]
 | 
						||
 | 
						||
 int lua_pcall (lua_State *L, int nargs, int nresults, int errfunc);
 | 
						||
 | 
						||
Calls a function in protected mode.
 | 
						||
 | 
						||
Both C<nargs> and C<nresults> have the same meaning as in C<lua_call>.
 | 
						||
If there are no errors during the call, C<lua_pcall> behaves exactly
 | 
						||
like C<lua_call>. However, if there is any error, C<lua_pcall> catches
 | 
						||
it, pushes a single value on the stack (the error message), and returns
 | 
						||
an error code. Like C<lua_call>, C<lua_pcall> always removes the
 | 
						||
function and its arguments from the stack.
 | 
						||
 | 
						||
If C<errfunc> is 0, then the error message returned on the stack is
 | 
						||
exactly the original error message. Otherwise, C<errfunc> is the stack
 | 
						||
index of an I<error handler function>. (In the current implementation,
 | 
						||
this index cannot be a pseudo-index.) In case of runtime errors, this
 | 
						||
function will be called with the error message and its return value
 | 
						||
will be the message returned on the stack by C<lua_pcall>.
 | 
						||
 | 
						||
Typically, the error handler function is used to add more debug
 | 
						||
information to the error message, such as a stack traceback. Such
 | 
						||
information cannot be gathered after the return of C<lua_pcall>, since
 | 
						||
by then the stack has unwound.
 | 
						||
 | 
						||
The C<lua_pcall> function returns 0 in case of success or one of the
 | 
						||
following error codes (defined in C<lua.h>):
 | 
						||
 | 
						||
=over
 | 
						||
 | 
						||
=item * B<C<LUA_ERRRUN>:> a runtime error.
 | 
						||
 | 
						||
=item * B<C<LUA_ERRMEM>:> memory allocation error. For such errors, Lua
 | 
						||
does not call the error handler function.
 | 
						||
 | 
						||
=item * B<C<LUA_ERRERR>:> error while running the error handler
 | 
						||
function.
 | 
						||
 | 
						||
=back
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_pop>
 | 
						||
 | 
						||
[-n, +0, I<->]
 | 
						||
 | 
						||
 void lua_pop (lua_State *L, int n);
 | 
						||
 | 
						||
Pops C<n> elements from the stack.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_pushboolean>
 | 
						||
 | 
						||
[-0, +1, I<->]
 | 
						||
 | 
						||
 void lua_pushboolean (lua_State *L, int b);
 | 
						||
 | 
						||
Pushes a boolean value with value C<b> onto the stack.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_pushcclosure>
 | 
						||
 | 
						||
[-n, +1, I<m>]
 | 
						||
 | 
						||
 void lua_pushcclosure (lua_State *L, lua_CFunction fn, int n);
 | 
						||
 | 
						||
Pushes a new C closure onto the stack.
 | 
						||
 | 
						||
When a C function is created, it is possible to associate some values
 | 
						||
with it, thus creating a C closure (see E<sect>3.4); these values are
 | 
						||
then accessible to the function whenever it is called. To associate
 | 
						||
values with a C function, first these values should be pushed onto the
 | 
						||
stack (when there are multiple values, the first value is pushed
 | 
						||
first). Then C<lua_pushcclosure> is called to create and push the C
 | 
						||
function onto the stack, with the argument C<n> telling how many values
 | 
						||
should be associated with the function. C<lua_pushcclosure> also pops
 | 
						||
these values from the stack.
 | 
						||
 | 
						||
The maximum value for C<n> is 255.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_pushcfunction>
 | 
						||
 | 
						||
[-0, +1, I<m>]
 | 
						||
 | 
						||
 void lua_pushcfunction (lua_State *L, lua_CFunction f);
 | 
						||
 | 
						||
Pushes a C function onto the stack. This function receives a pointer to
 | 
						||
a C function and pushes onto the stack a Lua value of type C<function>
 | 
						||
that, when called, invokes the corresponding C function.
 | 
						||
 | 
						||
Any function to be registered in Lua must follow the correct protocol
 | 
						||
to receive its parameters and return its results (see
 | 
						||
C<lua_CFunction>).
 | 
						||
 | 
						||
C<lua_pushcfunction> is defined as a macro:
 | 
						||
 | 
						||
     #define lua_pushcfunction(L,f)  lua_pushcclosure(L,f,0)
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_pushfstring>
 | 
						||
 | 
						||
[-0, +1, I<m>]
 | 
						||
 | 
						||
 const char *lua_pushfstring (lua_State *L, const char *fmt, ...);
 | 
						||
 | 
						||
Pushes onto the stack a formatted string and returns a pointer to this
 | 
						||
string. It is similar to the C function C<sprintf>, but has some
 | 
						||
important differences:
 | 
						||
 | 
						||
=over
 | 
						||
 | 
						||
=item * You do not have to allocate space for the result: the result is
 | 
						||
a Lua string and Lua takes care of memory allocation (and deallocation,
 | 
						||
through garbage collection).
 | 
						||
 | 
						||
=item * The conversion specifiers are quite restricted. There are no
 | 
						||
flags, widths, or precisions. The conversion specifiers can only be
 | 
						||
'C<%%>' (inserts a 'C<%>' in the string), 'C<%s>' (inserts a
 | 
						||
zero-terminated string, with no size restrictions), 'C<%f>' (inserts a
 | 
						||
C<lua_Number>), 'C<%p>' (inserts a pointer as a hexadecimal numeral),
 | 
						||
'C<%d>' (inserts an C<int>), and 'C<%c>' (inserts an C<int> as a
 | 
						||
character).
 | 
						||
 | 
						||
=back
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_pushinteger>
 | 
						||
 | 
						||
[-0, +1, I<->]
 | 
						||
 | 
						||
 void lua_pushinteger (lua_State *L, lua_Integer n);
 | 
						||
 | 
						||
Pushes a number with value C<n> onto the stack.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_pushlightuserdata>
 | 
						||
 | 
						||
[-0, +1, I<->]
 | 
						||
 | 
						||
 void lua_pushlightuserdata (lua_State *L, void *p);
 | 
						||
 | 
						||
Pushes a light userdata onto the stack.
 | 
						||
 | 
						||
Userdata represent C values in Lua. A I<light userdata> represents a
 | 
						||
pointer. It is a value (like a number): you do not create it, it has no
 | 
						||
individual metatable, and it is not collected (as it was never
 | 
						||
created). A light userdata is equal to "any" light userdata with the
 | 
						||
same C address.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_pushliteral>
 | 
						||
 | 
						||
[-0, +1, I<m>]
 | 
						||
 | 
						||
 void lua_pushliteral (lua_State *L, const char *s);
 | 
						||
 | 
						||
This macro is equivalent to C<lua_pushlstring>, but can be used only
 | 
						||
when C<s> is a literal string. In these cases, it automatically
 | 
						||
provides the string length.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_pushlstring>
 | 
						||
 | 
						||
[-0, +1, I<m>]
 | 
						||
 | 
						||
 void lua_pushlstring (lua_State *L, const char *s, size_t len);
 | 
						||
 | 
						||
Pushes the string pointed to by C<s> with size C<len> onto the stack.
 | 
						||
Lua makes (or reuses) an internal copy of the given string, so the
 | 
						||
memory at C<s> can be freed or reused immediately after the function
 | 
						||
returns. The string can contain embedded zeros.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_pushnil>
 | 
						||
 | 
						||
[-0, +1, I<->]
 | 
						||
 | 
						||
 void lua_pushnil (lua_State *L);
 | 
						||
 | 
						||
Pushes a nil value onto the stack.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_pushnumber>
 | 
						||
 | 
						||
[-0, +1, I<->]
 | 
						||
 | 
						||
 void lua_pushnumber (lua_State *L, lua_Number n);
 | 
						||
 | 
						||
Pushes a number with value C<n> onto the stack.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_pushstring>
 | 
						||
 | 
						||
[-0, +1, I<m>]
 | 
						||
 | 
						||
 void lua_pushstring (lua_State *L, const char *s);
 | 
						||
 | 
						||
Pushes the zero-terminated string pointed to by C<s> onto the stack.
 | 
						||
Lua makes (or reuses) an internal copy of the given string, so the
 | 
						||
memory at C<s> can be freed or reused immediately after the function
 | 
						||
returns. The string cannot contain embedded zeros; it is assumed to end
 | 
						||
at the first zero.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_pushthread>
 | 
						||
 | 
						||
[-0, +1, I<->]
 | 
						||
 | 
						||
 int lua_pushthread (lua_State *L);
 | 
						||
 | 
						||
Pushes the thread represented by C<L> onto the stack. Returns 1 if this
 | 
						||
thread is the main thread of its state.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_pushvalue>
 | 
						||
 | 
						||
[-0, +1, I<->]
 | 
						||
 | 
						||
 void lua_pushvalue (lua_State *L, int index);
 | 
						||
 | 
						||
Pushes a copy of the element at the given valid index onto the stack.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_pushvfstring>
 | 
						||
 | 
						||
[-0, +1, I<m>]
 | 
						||
 | 
						||
 const char *lua_pushvfstring (lua_State *L,
 | 
						||
                               const char *fmt,
 | 
						||
                               va_list argp);
 | 
						||
 | 
						||
Equivalent to C<lua_pushfstring>, except that it receives a C<va_list>
 | 
						||
instead of a variable number of arguments.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_rawequal>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 int lua_rawequal (lua_State *L, int index1, int index2);
 | 
						||
 | 
						||
Returns 1 if the two values in acceptable indices C<index1> and
 | 
						||
C<index2> are primitively equal (that is, without calling metamethods).
 | 
						||
Otherwise returns 0. Also returns 0 if any of the indices are non
 | 
						||
valid.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_rawget>
 | 
						||
 | 
						||
[-1, +1, I<->]
 | 
						||
 | 
						||
 void lua_rawget (lua_State *L, int index);
 | 
						||
 | 
						||
Similar to C<lua_gettable>, but does a raw access (i.e., without
 | 
						||
metamethods).
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_rawgeti>
 | 
						||
 | 
						||
[-0, +1, I<->]
 | 
						||
 | 
						||
 void lua_rawgeti (lua_State *L, int index, int n);
 | 
						||
 | 
						||
Pushes onto the stack the value C<t[n]>, where C<t> is the value at the
 | 
						||
given valid index. The access is raw; that is, it does not invoke
 | 
						||
metamethods.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_rawset>
 | 
						||
 | 
						||
[-2, +0, I<m>]
 | 
						||
 | 
						||
 void lua_rawset (lua_State *L, int index);
 | 
						||
 | 
						||
Similar to C<lua_settable>, but does a raw assignment (i.e., without
 | 
						||
metamethods).
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_rawseti>
 | 
						||
 | 
						||
[-1, +0, I<m>]
 | 
						||
 | 
						||
 void lua_rawseti (lua_State *L, int index, int n);
 | 
						||
 | 
						||
Does the equivalent of C<t[n] = v>, where C<t> is the value at the
 | 
						||
given valid index and C<v> is the value at the top of the stack.
 | 
						||
 | 
						||
This function pops the value from the stack. The assignment is raw;
 | 
						||
that is, it does not invoke metamethods.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_Reader>
 | 
						||
 | 
						||
 typedef const char * (*lua_Reader) (lua_State *L,
 | 
						||
                                     void *data,
 | 
						||
                                     size_t *size);
 | 
						||
 | 
						||
The reader function used by C<lua_load>. Every time it needs another
 | 
						||
piece of the chunk, C<lua_load> calls the reader, passing along its
 | 
						||
C<data> parameter. The reader must return a pointer to a block of
 | 
						||
memory with a new piece of the chunk and set C<size> to the block size.
 | 
						||
The block must exist until the reader function is called again. To
 | 
						||
signal the end of the chunk, the reader must return C<NULL> or set
 | 
						||
C<size> to zero. The reader function may return pieces of any size
 | 
						||
greater than zero.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_register>
 | 
						||
 | 
						||
[-0, +0, I<e>]
 | 
						||
 | 
						||
 void lua_register (lua_State *L,
 | 
						||
                    const char *name,
 | 
						||
                    lua_CFunction f);
 | 
						||
 | 
						||
Sets the C function C<f> as the new value of global C<name>. It is
 | 
						||
defined as a macro:
 | 
						||
 | 
						||
     #define lua_register(L,n,f) \
 | 
						||
            (lua_pushcfunction(L, f), lua_setglobal(L, n))
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_remove>
 | 
						||
 | 
						||
[-1, +0, I<->]
 | 
						||
 | 
						||
 void lua_remove (lua_State *L, int index);
 | 
						||
 | 
						||
Removes the element at the given valid index, shifting down the
 | 
						||
elements above this index to fill the gap. Cannot be called with a
 | 
						||
pseudo-index, because a pseudo-index is not an actual stack position.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_replace>
 | 
						||
 | 
						||
[-1, +0, I<->]
 | 
						||
 | 
						||
 void lua_replace (lua_State *L, int index);
 | 
						||
 | 
						||
Moves the top element into the given position (and pops it), without
 | 
						||
shifting any element (therefore replacing the value at the given
 | 
						||
position).
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_resume>
 | 
						||
 | 
						||
[-?, +?, I<->]
 | 
						||
 | 
						||
 int lua_resume (lua_State *L, int narg);
 | 
						||
 | 
						||
Starts and resumes a coroutine in a given thread.
 | 
						||
 | 
						||
To start a coroutine, you first create a new thread (see
 | 
						||
C<lua_newthread>); then you push onto its stack the main function plus
 | 
						||
any arguments; then you call C<lua_resume>, with C<narg> being the
 | 
						||
number of arguments. This call returns when the coroutine suspends or
 | 
						||
finishes its execution. When it returns, the stack contains all values
 | 
						||
passed to C<lua_yield>, or all values returned by the body function.
 | 
						||
C<lua_resume> returns C<LUA_YIELD> if the coroutine yields, 0 if the
 | 
						||
coroutine finishes its execution without errors, or an error code in
 | 
						||
case of errors (see C<lua_pcall>). In case of errors, the stack is not
 | 
						||
unwound, so you can use the debug API over it. The error message is on
 | 
						||
the top of the stack. To restart a coroutine, you put on its stack only
 | 
						||
the values to be passed as results from C<yield>, and then call
 | 
						||
C<lua_resume>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_setallocf>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 void lua_setallocf (lua_State *L, lua_Alloc f, void *ud);
 | 
						||
 | 
						||
Changes the allocator function of a given state to C<f> with user data
 | 
						||
C<ud>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_setfenv>
 | 
						||
 | 
						||
[-1, +0, I<->]
 | 
						||
 | 
						||
 int lua_setfenv (lua_State *L, int index);
 | 
						||
 | 
						||
Pops a table from the stack and sets it as the new environment for the
 | 
						||
value at the given index. If the value at the given index is neither a
 | 
						||
function nor a thread nor a userdata, C<lua_setfenv> returns 0.
 | 
						||
Otherwise it returns 1.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_setfield>
 | 
						||
 | 
						||
[-1, +0, I<e>]
 | 
						||
 | 
						||
 void lua_setfield (lua_State *L, int index, const char *k);
 | 
						||
 | 
						||
Does the equivalent to C<t[k] = v>, where C<t> is the value at the
 | 
						||
given valid index and C<v> is the value at the top of the stack.
 | 
						||
 | 
						||
This function pops the value from the stack. As in Lua, this function
 | 
						||
may trigger a metamethod for the "newindex" event (see E<sect>2.8).
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_setglobal>
 | 
						||
 | 
						||
[-1, +0, I<e>]
 | 
						||
 | 
						||
 void lua_setglobal (lua_State *L, const char *name);
 | 
						||
 | 
						||
Pops a value from the stack and sets it as the new value of global
 | 
						||
C<name>. It is defined as a macro:
 | 
						||
 | 
						||
     #define lua_setglobal(L,s)   lua_setfield(L, LUA_GLOBALSINDEX, s)
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_setmetatable>
 | 
						||
 | 
						||
[-1, +0, I<->]
 | 
						||
 | 
						||
 int lua_setmetatable (lua_State *L, int index);
 | 
						||
 | 
						||
Pops a table from the stack and sets it as the new metatable for the
 | 
						||
value at the given acceptable index.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_settable>
 | 
						||
 | 
						||
[-2, +0, I<e>]
 | 
						||
 | 
						||
 void lua_settable (lua_State *L, int index);
 | 
						||
 | 
						||
Does the equivalent to C<t[k] = v>, where C<t> is the value at the
 | 
						||
given valid index, C<v> is the value at the top of the stack, and C<k>
 | 
						||
is the value just below the top.
 | 
						||
 | 
						||
This function pops both the key and the value from the stack. As in
 | 
						||
Lua, this function may trigger a metamethod for the "newindex" event
 | 
						||
(see E<sect>2.8).
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_settop>
 | 
						||
 | 
						||
[-?, +?, I<->]
 | 
						||
 | 
						||
 void lua_settop (lua_State *L, int index);
 | 
						||
 | 
						||
Accepts any acceptable index, or 0, and sets the stack top to this
 | 
						||
index. If the new top is larger than the old one, then the new elements
 | 
						||
are filled with B<nil>. If C<index> is 0, then all stack elements are
 | 
						||
removed.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_State>
 | 
						||
 | 
						||
 typedef struct lua_State lua_State;
 | 
						||
 | 
						||
Opaque structure that keeps the whole state of a Lua interpreter. The
 | 
						||
Lua library is fully reentrant: it has no global variables. All
 | 
						||
information about a state is kept in this structure.
 | 
						||
 | 
						||
A pointer to this state must be passed as the first argument to every
 | 
						||
function in the library, except to C<lua_newstate>, which creates a Lua
 | 
						||
state from scratch.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_status>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 int lua_status (lua_State *L);
 | 
						||
 | 
						||
Returns the status of the thread C<L>.
 | 
						||
 | 
						||
The status can be 0 for a normal thread, an error code if the thread
 | 
						||
finished its execution with an error, or C<LUA_YIELD> if the thread is
 | 
						||
suspended.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_toboolean>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 int lua_toboolean (lua_State *L, int index);
 | 
						||
 | 
						||
Converts the Lua value at the given acceptable index to a C boolean
 | 
						||
value (0 or 1). Like all tests in Lua, C<lua_toboolean> returns 1 for
 | 
						||
any Lua value different from B<false> and B<nil>; otherwise it returns
 | 
						||
0. It also returns 0 when called with a non-valid index. (If you want
 | 
						||
to accept only actual boolean values, use C<lua_isboolean> to test the
 | 
						||
value's type.)
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_tocfunction>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 lua_CFunction lua_tocfunction (lua_State *L, int index);
 | 
						||
 | 
						||
Converts a value at the given acceptable index to a C function. That
 | 
						||
value must be a C function; otherwise, returns C<NULL>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_tointeger>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 lua_Integer lua_tointeger (lua_State *L, int index);
 | 
						||
 | 
						||
Converts the Lua value at the given acceptable index to the signed
 | 
						||
integral type C<lua_Integer>. The Lua value must be a number or a
 | 
						||
string convertible to a number (see E<sect>2.2.1); otherwise,
 | 
						||
C<lua_tointeger> returns 0.
 | 
						||
 | 
						||
If the number is not an integer, it is truncated in some non-specified
 | 
						||
way.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_tolstring>
 | 
						||
 | 
						||
[-0, +0, I<m>]
 | 
						||
 | 
						||
 const char *lua_tolstring (lua_State *L, int index, size_t *len);
 | 
						||
 | 
						||
Converts the Lua value at the given acceptable index to a C string. If
 | 
						||
C<len> is not C<NULL>, it also sets C<*len> with the string length. The
 | 
						||
Lua value must be a string or a number; otherwise, the function returns
 | 
						||
C<NULL>. If the value is a number, then C<lua_tolstring> also I<changes
 | 
						||
the actual value in the stack to a string>. (This change confuses
 | 
						||
C<lua_next> when C<lua_tolstring> is applied to keys during a table
 | 
						||
traversal.)
 | 
						||
 | 
						||
C<lua_tolstring> returns a fully aligned pointer to a string inside the
 | 
						||
Lua state. This string always has a zero ('C<\0>') after its last
 | 
						||
character (as in C), but can contain other zeros in its body. Because
 | 
						||
Lua has garbage collection, there is no guarantee that the pointer
 | 
						||
returned by C<lua_tolstring> will be valid after the corresponding
 | 
						||
value is removed from the stack.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_tonumber>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 lua_Number lua_tonumber (lua_State *L, int index);
 | 
						||
 | 
						||
Converts the Lua value at the given acceptable index to the C type
 | 
						||
C<lua_Number> (see C<lua_Number>). The Lua value must be a number or a
 | 
						||
string convertible to a number (see E<sect>2.2.1); otherwise,
 | 
						||
C<lua_tonumber> returns 0.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_topointer>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 const void *lua_topointer (lua_State *L, int index);
 | 
						||
 | 
						||
Converts the value at the given acceptable index to a generic C pointer
 | 
						||
(C<void*>). The value can be a userdata, a table, a thread, or a
 | 
						||
function; otherwise, C<lua_topointer> returns C<NULL>. Different
 | 
						||
objects will give different pointers. There is no way to convert the
 | 
						||
pointer back to its original value.
 | 
						||
 | 
						||
Typically this function is used only for debug information.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_tostring>
 | 
						||
 | 
						||
[-0, +0, I<m>]
 | 
						||
 | 
						||
 const char *lua_tostring (lua_State *L, int index);
 | 
						||
 | 
						||
Equivalent to C<lua_tolstring> with C<len> equal to C<NULL>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_tothread>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 lua_State *lua_tothread (lua_State *L, int index);
 | 
						||
 | 
						||
Converts the value at the given acceptable index to a Lua thread
 | 
						||
(represented as C<lua_State*>). This value must be a thread; otherwise,
 | 
						||
the function returns C<NULL>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_touserdata>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 void *lua_touserdata (lua_State *L, int index);
 | 
						||
 | 
						||
If the value at the given acceptable index is a full userdata, returns
 | 
						||
its block address. If the value is a light userdata, returns its
 | 
						||
pointer. Otherwise, returns C<NULL>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_type>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 int lua_type (lua_State *L, int index);
 | 
						||
 | 
						||
Returns the type of the value in the given acceptable index, or
 | 
						||
C<LUA_TNONE> for a non-valid index (that is, an index to an "empty"
 | 
						||
stack position). The types returned by C<lua_type> are coded by the
 | 
						||
following constants defined in C<lua.h>: C<LUA_TNIL>, C<LUA_TNUMBER>,
 | 
						||
C<LUA_TBOOLEAN>, C<LUA_TSTRING>, C<LUA_TTABLE>, C<LUA_TFUNCTION>,
 | 
						||
C<LUA_TUSERDATA>, C<LUA_TTHREAD>, and C<LUA_TLIGHTUSERDATA>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_typename>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 const char *lua_typename  (lua_State *L, int tp);
 | 
						||
 | 
						||
Returns the name of the type encoded by the value C<tp>, which must be
 | 
						||
one the values returned by C<lua_type>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_Writer>
 | 
						||
 | 
						||
 typedef int (*lua_Writer) (lua_State *L,
 | 
						||
                            const void* p,
 | 
						||
                            size_t sz,
 | 
						||
                            void* ud);
 | 
						||
 | 
						||
The type of the writer function used by C<lua_dump>. Every time it
 | 
						||
produces another piece of chunk, C<lua_dump> calls the writer, passing
 | 
						||
along the buffer to be written (C<p>), its size (C<sz>), and the
 | 
						||
C<data> parameter supplied to C<lua_dump>.
 | 
						||
 | 
						||
The writer returns an error code: 0 means no errors; any other value
 | 
						||
means an error and stops C<lua_dump> from calling the writer again.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_xmove>
 | 
						||
 | 
						||
[-?, +?, I<->]
 | 
						||
 | 
						||
 void lua_xmove (lua_State *from, lua_State *to, int n);
 | 
						||
 | 
						||
Exchange values between different threads of the I<same> global state.
 | 
						||
 | 
						||
This function pops C<n> values from the stack C<from>, and pushes them
 | 
						||
onto the stack C<to>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_yield>
 | 
						||
 | 
						||
[-?, +?, I<->]
 | 
						||
 | 
						||
 int lua_yield  (lua_State *L, int nresults);
 | 
						||
 | 
						||
Yields a coroutine.
 | 
						||
 | 
						||
This function should only be called as the return expression of a C
 | 
						||
function, as follows:
 | 
						||
 | 
						||
     return lua_yield (L, nresults);
 | 
						||
 | 
						||
When a C function calls C<lua_yield> in that way, the running coroutine
 | 
						||
suspends its execution, and the call to C<lua_resume> that started this
 | 
						||
coroutine returns. The parameter C<nresults> is the number of values
 | 
						||
from the stack that are passed as results to C<lua_resume>.
 | 
						||
 | 
						||
=head2 3.8 - The Debug Interface
 | 
						||
 | 
						||
Lua has no built-in debugging facilities. Instead, it offers a special
 | 
						||
interface by means of functions and I<hooks>. This interface allows the
 | 
						||
construction of different kinds of debuggers, profilers, and other
 | 
						||
tools that need "inside information" from the interpreter.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_Debug>
 | 
						||
 | 
						||
 typedef struct lua_Debug {
 | 
						||
   int event;
 | 
						||
   const char *name;           /* (n) */
 | 
						||
   const char *namewhat;       /* (n) */
 | 
						||
   const char *what;           /* (S) */
 | 
						||
   const char *source;         /* (S) */
 | 
						||
   int currentline;            /* (l) */
 | 
						||
   int nups;                   /* (u) number of upvalues */
 | 
						||
   int linedefined;            /* (S) */
 | 
						||
   int lastlinedefined;        /* (S) */
 | 
						||
   char short_src[LUA_IDSIZE]; /* (S) */
 | 
						||
   /* private part */
 | 
						||
   other fields
 | 
						||
 } lua_Debug;
 | 
						||
 | 
						||
A structure used to carry different pieces of information about an
 | 
						||
active function. C<lua_getstack> fills only the private part of this
 | 
						||
structure, for later use. To fill the other fields of C<lua_Debug> with
 | 
						||
useful information, call C<lua_getinfo>.
 | 
						||
 | 
						||
The fields of C<lua_Debug> have the following meaning:
 | 
						||
 | 
						||
=over
 | 
						||
 | 
						||
=item * B<C<source>:> If the function was defined in a string, then
 | 
						||
C<source> is that string. If the function was defined in a file, then
 | 
						||
C<source> starts with a 'C<@>' followed by the file name.
 | 
						||
 | 
						||
=item * B<C<short_src>:> a "printable" version of C<source>, to be used
 | 
						||
in error messages.
 | 
						||
 | 
						||
=item * B<C<linedefined>:> the line number where the definition of the
 | 
						||
function starts.
 | 
						||
 | 
						||
=item * B<C<lastlinedefined>:> the line number where the definition of
 | 
						||
the function ends.
 | 
						||
 | 
						||
=item * B<C<what>:> the string C<"Lua"> if the function is a Lua
 | 
						||
function, C<"C"> if it is a C function, C<"main"> if it is the main
 | 
						||
part of a chunk, and C<"tail"> if it was a function that did a tail
 | 
						||
call. In the latter case, Lua has no other information about the
 | 
						||
function.
 | 
						||
 | 
						||
=item * B<C<currentline>:> the current line where the given function is
 | 
						||
executing. When no line information is available, C<currentline> is set
 | 
						||
to -1.
 | 
						||
 | 
						||
=item * B<C<name>:> a reasonable name for the given function. Because
 | 
						||
functions in Lua are first-class values, they do not have a fixed name:
 | 
						||
some functions can be the value of multiple global variables, while
 | 
						||
others can be stored only in a table field. The C<lua_getinfo> function
 | 
						||
checks how the function was called to find a suitable name. If it
 | 
						||
cannot find a name, then C<name> is set to C<NULL>.
 | 
						||
 | 
						||
=item * B<C<namewhat>:> explains the C<name> field. The value of
 | 
						||
C<namewhat> can be C<"global">, C<"local">, C<"method">, C<"field">,
 | 
						||
C<"upvalue">, or C<""> (the empty string), according to how the
 | 
						||
function was called. (Lua uses the empty string when no other option
 | 
						||
seems to apply.)
 | 
						||
 | 
						||
=item * B<C<nups>:> the number of upvalues of the function.
 | 
						||
 | 
						||
=back
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_gethook>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 lua_Hook lua_gethook (lua_State *L);
 | 
						||
 | 
						||
Returns the current hook function.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_gethookcount>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 int lua_gethookcount (lua_State *L);
 | 
						||
 | 
						||
Returns the current hook count.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_gethookmask>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 int lua_gethookmask (lua_State *L);
 | 
						||
 | 
						||
Returns the current hook mask.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_getinfo>
 | 
						||
 | 
						||
[-(0|1), +(0|1|2), I<m>]
 | 
						||
 | 
						||
 int lua_getinfo (lua_State *L, const char *what, lua_Debug *ar);
 | 
						||
 | 
						||
Returns information about a specific function or function invocation.
 | 
						||
 | 
						||
To get information about a function invocation, the parameter C<ar>
 | 
						||
must be a valid activation record that was filled by a previous call to
 | 
						||
C<lua_getstack> or given as argument to a hook (see C<lua_Hook>).
 | 
						||
 | 
						||
To get information about a function you push it onto the stack and
 | 
						||
start the C<what> string with the character 'C<E<gt>>'. (In that case,
 | 
						||
C<lua_getinfo> pops the function in the top of the stack.) For
 | 
						||
instance, to know in which line a function C<f> was defined, you can
 | 
						||
write the following code:
 | 
						||
 | 
						||
     lua_Debug ar;
 | 
						||
     lua_getfield(L, LUA_GLOBALSINDEX, "f");  /* get global 'f' */
 | 
						||
     lua_getinfo(L, ">S", &ar);
 | 
						||
     printf("%d\n", ar.linedefined);
 | 
						||
 | 
						||
Each character in the string C<what> selects some fields of the
 | 
						||
structure C<ar> to be filled or a value to be pushed on the stack:
 | 
						||
 | 
						||
=over
 | 
						||
 | 
						||
=item * B<'C<n>':> fills in the field C<name> and C<namewhat>;
 | 
						||
 | 
						||
=item * B<'C<S>':> fills in the fields C<source>, C<short_src>,
 | 
						||
C<linedefined>, C<lastlinedefined>, and C<what>;
 | 
						||
 | 
						||
=item * B<'C<l>':> fills in the field C<currentline>;
 | 
						||
 | 
						||
=item * B<'C<u>':> fills in the field C<nups>;
 | 
						||
 | 
						||
=item * B<'C<f>':> pushes onto the stack the function that is running
 | 
						||
at the given level;
 | 
						||
 | 
						||
=item * B<'C<L>':> pushes onto the stack a table whose indices are the
 | 
						||
numbers of the lines that are valid on the function. (A I<valid line>
 | 
						||
is a line with some associated code, that is, a line where you can put
 | 
						||
a break point. Non-valid lines include empty lines and comments.)
 | 
						||
 | 
						||
=back
 | 
						||
 | 
						||
This function returns 0 on error (for instance, an invalid option in
 | 
						||
C<what>).
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_getlocal>
 | 
						||
 | 
						||
[-0, +(0|1), I<->]
 | 
						||
 | 
						||
 const char *lua_getlocal (lua_State *L, lua_Debug *ar, int n);
 | 
						||
 | 
						||
Gets information about a local variable of a given activation record.
 | 
						||
The parameter C<ar> must be a valid activation record that was filled
 | 
						||
by a previous call to C<lua_getstack> or given as argument to a hook
 | 
						||
(see C<lua_Hook>). The index C<n> selects which local variable to
 | 
						||
inspect (1 is the first parameter or active local variable, and so on,
 | 
						||
until the last active local variable). C<lua_getlocal> pushes the
 | 
						||
variable's value onto the stack and returns its name.
 | 
						||
 | 
						||
Variable names starting with 'C<(>' (open parentheses) represent
 | 
						||
internal variables (loop control variables, temporaries, and C function
 | 
						||
locals).
 | 
						||
 | 
						||
Returns C<NULL> (and pushes nothing) when the index is greater than the
 | 
						||
number of active local variables.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_getstack>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 int lua_getstack (lua_State *L, int level, lua_Debug *ar);
 | 
						||
 | 
						||
Get information about the interpreter runtime stack.
 | 
						||
 | 
						||
This function fills parts of a C<lua_Debug> structure with an
 | 
						||
identification of the I<activation record> of the function executing at
 | 
						||
a given level. Level 0 is the current running function, whereas level
 | 
						||
I<n+1> is the function that has called level I<n>. When there are no
 | 
						||
errors, C<lua_getstack> returns 1; when called with a level greater
 | 
						||
than the stack depth, it returns 0.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_getupvalue>
 | 
						||
 | 
						||
[-0, +(0|1), I<->]
 | 
						||
 | 
						||
 const char *lua_getupvalue (lua_State *L, int funcindex, int n);
 | 
						||
 | 
						||
Gets information about a closure's upvalue. (For Lua functions,
 | 
						||
upvalues are the external local variables that the function uses, and
 | 
						||
that are consequently included in its closure.) C<lua_getupvalue> gets
 | 
						||
the index C<n> of an upvalue, pushes the upvalue's value onto the
 | 
						||
stack, and returns its name. C<funcindex> points to the closure in the
 | 
						||
stack. (Upvalues have no particular order, as they are active through
 | 
						||
the whole function. So, they are numbered in an arbitrary order.)
 | 
						||
 | 
						||
Returns C<NULL> (and pushes nothing) when the index is greater than the
 | 
						||
number of upvalues. For C functions, this function uses the empty
 | 
						||
string C<""> as a name for all upvalues.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_Hook>
 | 
						||
 | 
						||
 typedef void (*lua_Hook) (lua_State *L, lua_Debug *ar);
 | 
						||
 | 
						||
Type for debugging hook functions.
 | 
						||
 | 
						||
Whenever a hook is called, its C<ar> argument has its field C<event>
 | 
						||
set to the specific event that triggered the hook. Lua identifies these
 | 
						||
events with the following constants: C<LUA_HOOKCALL>, C<LUA_HOOKRET>,
 | 
						||
C<LUA_HOOKTAILRET>, C<LUA_HOOKLINE>, and C<LUA_HOOKCOUNT>. Moreover,
 | 
						||
for line events, the field C<currentline> is also set. To get the value
 | 
						||
of any other field in C<ar>, the hook must call C<lua_getinfo>. For
 | 
						||
return events, C<event> can be C<LUA_HOOKRET>, the normal value, or
 | 
						||
C<LUA_HOOKTAILRET>. In the latter case, Lua is simulating a return from
 | 
						||
a function that did a tail call; in this case, it is useless to call
 | 
						||
C<lua_getinfo>.
 | 
						||
 | 
						||
While Lua is running a hook, it disables other calls to hooks.
 | 
						||
Therefore, if a hook calls back Lua to execute a function or a chunk,
 | 
						||
this execution occurs without any calls to hooks.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_sethook>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 int lua_sethook (lua_State *L, lua_Hook f, int mask, int count);
 | 
						||
 | 
						||
Sets the debugging hook function.
 | 
						||
 | 
						||
Argument C<f> is the hook function. C<mask> specifies on which events
 | 
						||
the hook will be called: it is formed by a bitwise or of the constants
 | 
						||
C<LUA_MASKCALL>, C<LUA_MASKRET>, C<LUA_MASKLINE>, and C<LUA_MASKCOUNT>.
 | 
						||
The C<count> argument is only meaningful when the mask includes
 | 
						||
C<LUA_MASKCOUNT>. For each event, the hook is called as explained
 | 
						||
below:
 | 
						||
 | 
						||
=over
 | 
						||
 | 
						||
=item * B<The call hook:> is called when the interpreter calls a
 | 
						||
function. The hook is called just after Lua enters the new function,
 | 
						||
before the function gets its arguments.
 | 
						||
 | 
						||
=item * B<The return hook:> is called when the interpreter returns from
 | 
						||
a function. The hook is called just before Lua leaves the function. You
 | 
						||
have no access to the values to be returned by the function.
 | 
						||
 | 
						||
=item * B<The line hook:> is called when the interpreter is about to
 | 
						||
start the execution of a new line of code, or when it jumps back in the
 | 
						||
code (even to the same line). (This event only happens while Lua is
 | 
						||
executing a Lua function.)
 | 
						||
 | 
						||
=item * B<The count hook:> is called after the interpreter executes
 | 
						||
every C<count> instructions. (This event only happens while Lua is
 | 
						||
executing a Lua function.)
 | 
						||
 | 
						||
=back
 | 
						||
 | 
						||
A hook is disabled by setting C<mask> to zero.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_setlocal>
 | 
						||
 | 
						||
[-(0|1), +0, I<->]
 | 
						||
 | 
						||
 const char *lua_setlocal (lua_State *L, lua_Debug *ar, int n);
 | 
						||
 | 
						||
Sets the value of a local variable of a given activation record.
 | 
						||
Parameters C<ar> and C<n> are as in C<lua_getlocal> (see
 | 
						||
C<lua_getlocal>). C<lua_setlocal> assigns the value at the top of the
 | 
						||
stack to the variable and returns its name. It also pops the value from
 | 
						||
the stack.
 | 
						||
 | 
						||
Returns C<NULL> (and pops nothing) when the index is greater than the
 | 
						||
number of active local variables.
 | 
						||
 | 
						||
 | 
						||
=head2 C<lua_setupvalue>
 | 
						||
 | 
						||
[-(0|1), +0, I<->]
 | 
						||
 | 
						||
 const char *lua_setupvalue (lua_State *L, int funcindex, int n);
 | 
						||
 | 
						||
Sets the value of a closure's upvalue. It assigns the value at the top
 | 
						||
of the stack to the upvalue and returns its name. It also pops the
 | 
						||
value from the stack. Parameters C<funcindex> and C<n> are as in the
 | 
						||
C<lua_getupvalue> (see C<lua_getupvalue>).
 | 
						||
 | 
						||
Returns C<NULL> (and pops nothing) when the index is greater than the
 | 
						||
number of upvalues.
 | 
						||
 | 
						||
=head1 4 - The Auxiliary Library
 | 
						||
 | 
						||
The I<auxiliary library> provides several convenient functions to
 | 
						||
interface C with Lua. While the basic API provides the primitive
 | 
						||
functions for all interactions between C and Lua, the auxiliary library
 | 
						||
provides higher-level functions for some common tasks.
 | 
						||
 | 
						||
All functions from the auxiliary library are defined in header file
 | 
						||
C<lauxlib.h> and have a prefix C<luaL_>.
 | 
						||
 | 
						||
All functions in the auxiliary library are built on top of the basic
 | 
						||
API, and so they provide nothing that cannot be done with this API.
 | 
						||
 | 
						||
Several functions in the auxiliary library are used to check C function
 | 
						||
arguments. Their names are always C<luaL_check*> or C<luaL_opt*>. All
 | 
						||
of these functions throw an error if the check is not satisfied.
 | 
						||
Because the error message is formatted for arguments (e.g., "C<bad
 | 
						||
argument #1>"), you should not use these functions for other stack
 | 
						||
values.
 | 
						||
 | 
						||
=head2 4.1 - Functions and Types
 | 
						||
 | 
						||
Here we list all functions and types from the auxiliary library in
 | 
						||
alphabetical order.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_addchar>
 | 
						||
 | 
						||
[-0, +0, I<m>]
 | 
						||
 | 
						||
 void luaL_addchar (luaL_Buffer *B, char c);
 | 
						||
 | 
						||
Adds the character C<c> to the buffer C<B> (see C<luaL_Buffer>).
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_addlstring>
 | 
						||
 | 
						||
[-0, +0, I<m>]
 | 
						||
 | 
						||
 void luaL_addlstring (luaL_Buffer *B, const char *s, size_t l);
 | 
						||
 | 
						||
Adds the string pointed to by C<s> with length C<l> to the buffer C<B>
 | 
						||
(see C<luaL_Buffer>). The string may contain embedded zeros.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_addsize>
 | 
						||
 | 
						||
[-0, +0, I<m>]
 | 
						||
 | 
						||
 void luaL_addsize (luaL_Buffer *B, size_t n);
 | 
						||
 | 
						||
Adds to the buffer C<B> (see C<luaL_Buffer>) a string of length C<n>
 | 
						||
previously copied to the buffer area (see C<luaL_prepbuffer>).
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_addstring>
 | 
						||
 | 
						||
[-0, +0, I<m>]
 | 
						||
 | 
						||
 void luaL_addstring (luaL_Buffer *B, const char *s);
 | 
						||
 | 
						||
Adds the zero-terminated string pointed to by C<s> to the buffer C<B>
 | 
						||
(see C<luaL_Buffer>). The string may not contain embedded zeros.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_addvalue>
 | 
						||
 | 
						||
[-1, +0, I<m>]
 | 
						||
 | 
						||
 void luaL_addvalue (luaL_Buffer *B);
 | 
						||
 | 
						||
Adds the value at the top of the stack to the buffer C<B> (see
 | 
						||
C<luaL_Buffer>). Pops the value.
 | 
						||
 | 
						||
This is the only function on string buffers that can (and must) be
 | 
						||
called with an extra element on the stack, which is the value to be
 | 
						||
added to the buffer.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_argcheck>
 | 
						||
 | 
						||
[-0, +0, I<v>]
 | 
						||
 | 
						||
 void luaL_argcheck (lua_State *L,
 | 
						||
                     int cond,
 | 
						||
                     int narg,
 | 
						||
                     const char *extramsg);
 | 
						||
 | 
						||
Checks whether C<cond> is true. If not, raises an error with the
 | 
						||
following message, where C<func> is retrieved from the call stack:
 | 
						||
 | 
						||
     bad argument #<narg> to <func> (<extramsg>)
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_argerror>
 | 
						||
 | 
						||
[-0, +0, I<v>]
 | 
						||
 | 
						||
 int luaL_argerror (lua_State *L, int narg, const char *extramsg);
 | 
						||
 | 
						||
Raises an error with the following message, where C<func> is retrieved
 | 
						||
from the call stack:
 | 
						||
 | 
						||
     bad argument #<narg> to <func> (<extramsg>)
 | 
						||
 | 
						||
This function never returns, but it is an idiom to use it in C
 | 
						||
functions as C<return luaL_argerror(I<args>)>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_Buffer>
 | 
						||
 | 
						||
 typedef struct luaL_Buffer luaL_Buffer;
 | 
						||
 | 
						||
Type for a I<string buffer>.
 | 
						||
 | 
						||
A string buffer allows C code to build Lua strings piecemeal. Its
 | 
						||
pattern of use is as follows:
 | 
						||
 | 
						||
=over
 | 
						||
 | 
						||
=item * First you declare a variable C<b> of type C<luaL_Buffer>.
 | 
						||
 | 
						||
=item * Then you initialize it with a call C<luaL_buffinit(L, &b)>.
 | 
						||
 | 
						||
=item * Then you add string pieces to the buffer calling any of the
 | 
						||
C<luaL_add*> functions.
 | 
						||
 | 
						||
=item * You finish by calling C<luaL_pushresult(&b)>. This call leaves
 | 
						||
the final string on the top of the stack.
 | 
						||
 | 
						||
=back
 | 
						||
 | 
						||
During its normal operation, a string buffer uses a variable number of
 | 
						||
stack slots. So, while using a buffer, you cannot assume that you know
 | 
						||
where the top of the stack is. You can use the stack between successive
 | 
						||
calls to buffer operations as long as that use is balanced; that is,
 | 
						||
when you call a buffer operation, the stack is at the same level it was
 | 
						||
immediately after the previous buffer operation. (The only exception to
 | 
						||
this rule is C<luaL_addvalue>.) After calling C<luaL_pushresult> the
 | 
						||
stack is back to its level when the buffer was initialized, plus the
 | 
						||
final string on its top.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_buffinit>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 void luaL_buffinit (lua_State *L, luaL_Buffer *B);
 | 
						||
 | 
						||
Initializes a buffer C<B>. This function does not allocate any space;
 | 
						||
the buffer must be declared as a variable (see C<luaL_Buffer>).
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_callmeta>
 | 
						||
 | 
						||
[-0, +(0|1), I<e>]
 | 
						||
 | 
						||
 int luaL_callmeta (lua_State *L, int obj, const char *e);
 | 
						||
 | 
						||
Calls a metamethod.
 | 
						||
 | 
						||
If the object at index C<obj> has a metatable and this metatable has a
 | 
						||
field C<e>, this function calls this field and passes the object as its
 | 
						||
only argument. In this case this function returns 1 and pushes onto the
 | 
						||
stack the value returned by the call. If there is no metatable or no
 | 
						||
metamethod, this function returns 0 (without pushing any value on the
 | 
						||
stack).
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_checkany>
 | 
						||
 | 
						||
[-0, +0, I<v>]
 | 
						||
 | 
						||
 void luaL_checkany (lua_State *L, int narg);
 | 
						||
 | 
						||
Checks whether the function has an argument of any type (including
 | 
						||
B<nil>) at position C<narg>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_checkint>
 | 
						||
 | 
						||
[-0, +0, I<v>]
 | 
						||
 | 
						||
 int luaL_checkint (lua_State *L, int narg);
 | 
						||
 | 
						||
Checks whether the function argument C<narg> is a number and returns
 | 
						||
this number cast to an C<int>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_checkinteger>
 | 
						||
 | 
						||
[-0, +0, I<v>]
 | 
						||
 | 
						||
 lua_Integer luaL_checkinteger (lua_State *L, int narg);
 | 
						||
 | 
						||
Checks whether the function argument C<narg> is a number and returns
 | 
						||
this number cast to a C<lua_Integer>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_checklong>
 | 
						||
 | 
						||
[-0, +0, I<v>]
 | 
						||
 | 
						||
 long luaL_checklong (lua_State *L, int narg);
 | 
						||
 | 
						||
Checks whether the function argument C<narg> is a number and returns
 | 
						||
this number cast to a C<long>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_checklstring>
 | 
						||
 | 
						||
[-0, +0, I<v>]
 | 
						||
 | 
						||
 const char *luaL_checklstring (lua_State *L, int narg, size_t *l);
 | 
						||
 | 
						||
Checks whether the function argument C<narg> is a string and returns
 | 
						||
this string; if C<l> is not C<NULL> fills C<*l> with the string's
 | 
						||
length.
 | 
						||
 | 
						||
This function uses C<lua_tolstring> to get its result, so all
 | 
						||
conversions and caveats of that function apply here.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_checknumber>
 | 
						||
 | 
						||
[-0, +0, I<v>]
 | 
						||
 | 
						||
 lua_Number luaL_checknumber (lua_State *L, int narg);
 | 
						||
 | 
						||
Checks whether the function argument C<narg> is a number and returns
 | 
						||
this number.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_checkoption>
 | 
						||
 | 
						||
[-0, +0, I<v>]
 | 
						||
 | 
						||
 int luaL_checkoption (lua_State *L,
 | 
						||
                       int narg,
 | 
						||
                       const char *def,
 | 
						||
                       const char *const lst[]);
 | 
						||
 | 
						||
Checks whether the function argument C<narg> is a string and searches
 | 
						||
for this string in the array C<lst> (which must be NULL-terminated).
 | 
						||
Returns the index in the array where the string was found. Raises an
 | 
						||
error if the argument is not a string or if the string cannot be found.
 | 
						||
 | 
						||
If C<def> is not C<NULL>, the function uses C<def> as a default value
 | 
						||
when there is no argument C<narg> or if this argument is B<nil>.
 | 
						||
 | 
						||
This is a useful function for mapping strings to C enums. (The usual
 | 
						||
convention in Lua libraries is to use strings instead of numbers to
 | 
						||
select options.)
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_checkstack>
 | 
						||
 | 
						||
[-0, +0, I<v>]
 | 
						||
 | 
						||
 void luaL_checkstack (lua_State *L, int sz, const char *msg);
 | 
						||
 | 
						||
Grows the stack size to C<top + sz> elements, raising an error if the
 | 
						||
stack cannot grow to that size. C<msg> is an additional text to go into
 | 
						||
the error message.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_checkstring>
 | 
						||
 | 
						||
[-0, +0, I<v>]
 | 
						||
 | 
						||
 const char *luaL_checkstring (lua_State *L, int narg);
 | 
						||
 | 
						||
Checks whether the function argument C<narg> is a string and returns
 | 
						||
this string.
 | 
						||
 | 
						||
This function uses C<lua_tolstring> to get its result, so all
 | 
						||
conversions and caveats of that function apply here.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_checktype>
 | 
						||
 | 
						||
[-0, +0, I<v>]
 | 
						||
 | 
						||
 void luaL_checktype (lua_State *L, int narg, int t);
 | 
						||
 | 
						||
Checks whether the function argument C<narg> has type C<t>. See
 | 
						||
C<lua_type> for the encoding of types for C<t>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_checkudata>
 | 
						||
 | 
						||
[-0, +0, I<v>]
 | 
						||
 | 
						||
 void *luaL_checkudata (lua_State *L, int narg, const char *tname);
 | 
						||
 | 
						||
Checks whether the function argument C<narg> is a userdata of the type
 | 
						||
C<tname> (see C<luaL_newmetatable>).
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_dofile>
 | 
						||
 | 
						||
[-0, +?, I<m>]
 | 
						||
 | 
						||
 int luaL_dofile (lua_State *L, const char *filename);
 | 
						||
 | 
						||
Loads and runs the given file. It is defined as the following macro:
 | 
						||
 | 
						||
     (luaL_loadfile(L, filename) || lua_pcall(L, 0, LUA_MULTRET, 0))
 | 
						||
 | 
						||
It returns 0 if there are no errors or 1 in case of errors.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_dostring>
 | 
						||
 | 
						||
[-0, +?, I<m>]
 | 
						||
 | 
						||
 int luaL_dostring (lua_State *L, const char *str);
 | 
						||
 | 
						||
Loads and runs the given string. It is defined as the following macro:
 | 
						||
 | 
						||
     (luaL_loadstring(L, str) || lua_pcall(L, 0, LUA_MULTRET, 0))
 | 
						||
 | 
						||
It returns 0 if there are no errors or 1 in case of errors.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_error>
 | 
						||
 | 
						||
[-0, +0, I<v>]
 | 
						||
 | 
						||
 int luaL_error (lua_State *L, const char *fmt, ...);
 | 
						||
 | 
						||
Raises an error. The error message format is given by C<fmt> plus any
 | 
						||
extra arguments, following the same rules of C<lua_pushfstring>. It
 | 
						||
also adds at the beginning of the message the file name and the line
 | 
						||
number where the error occurred, if this information is available.
 | 
						||
 | 
						||
This function never returns, but it is an idiom to use it in C
 | 
						||
functions as C<return luaL_error(I<args>)>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_getmetafield>
 | 
						||
 | 
						||
[-0, +(0|1), I<m>]
 | 
						||
 | 
						||
 int luaL_getmetafield (lua_State *L, int obj, const char *e);
 | 
						||
 | 
						||
Pushes onto the stack the field C<e> from the metatable of the object
 | 
						||
at index C<obj>. If the object does not have a metatable, or if the
 | 
						||
metatable does not have this field, returns 0 and pushes nothing.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_getmetatable>
 | 
						||
 | 
						||
[-0, +1, I<->]
 | 
						||
 | 
						||
 void luaL_getmetatable (lua_State *L, const char *tname);
 | 
						||
 | 
						||
Pushes onto the stack the metatable associated with name C<tname> in
 | 
						||
the registry (see C<luaL_newmetatable>).
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_gsub>
 | 
						||
 | 
						||
[-0, +1, I<m>]
 | 
						||
 | 
						||
 const char *luaL_gsub (lua_State *L,
 | 
						||
                        const char *s,
 | 
						||
                        const char *p,
 | 
						||
                        const char *r);
 | 
						||
 | 
						||
Creates a copy of string C<s> by replacing any occurrence of the string
 | 
						||
C<p> with the string C<r>. Pushes the resulting string on the stack and
 | 
						||
returns it.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_loadbuffer>
 | 
						||
 | 
						||
[-0, +1, I<m>]
 | 
						||
 | 
						||
 int luaL_loadbuffer (lua_State *L,
 | 
						||
                      const char *buff,
 | 
						||
                      size_t sz,
 | 
						||
                      const char *name);
 | 
						||
 | 
						||
Loads a buffer as a Lua chunk. This function uses C<lua_load> to load
 | 
						||
the chunk in the buffer pointed to by C<buff> with size C<sz>.
 | 
						||
 | 
						||
This function returns the same results as C<lua_load>. C<name> is the
 | 
						||
chunk name, used for debug information and error messages.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_loadfile>
 | 
						||
 | 
						||
[-0, +1, I<m>]
 | 
						||
 | 
						||
 int luaL_loadfile (lua_State *L, const char *filename);
 | 
						||
 | 
						||
Loads a file as a Lua chunk. This function uses C<lua_load> to load the
 | 
						||
chunk in the file named C<filename>. If C<filename> is C<NULL>, then it
 | 
						||
loads from the standard input. The first line in the file is ignored if
 | 
						||
it starts with a C<#>.
 | 
						||
 | 
						||
This function returns the same results as C<lua_load>, but it has an
 | 
						||
extra error code C<LUA_ERRFILE> if it cannot open/read the file.
 | 
						||
 | 
						||
As C<lua_load>, this function only loads the chunk; it does not run it.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_loadstring>
 | 
						||
 | 
						||
[-0, +1, I<m>]
 | 
						||
 | 
						||
 int luaL_loadstring (lua_State *L, const char *s);
 | 
						||
 | 
						||
Loads a string as a Lua chunk. This function uses C<lua_load> to load
 | 
						||
the chunk in the zero-terminated string C<s>.
 | 
						||
 | 
						||
This function returns the same results as C<lua_load>.
 | 
						||
 | 
						||
Also as C<lua_load>, this function only loads the chunk; it does not
 | 
						||
run it.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_newmetatable>
 | 
						||
 | 
						||
[-0, +1, I<m>]
 | 
						||
 | 
						||
 int luaL_newmetatable (lua_State *L, const char *tname);
 | 
						||
 | 
						||
If the registry already has the key C<tname>, returns 0. Otherwise,
 | 
						||
creates a new table to be used as a metatable for userdata, adds it to
 | 
						||
the registry with key C<tname>, and returns 1.
 | 
						||
 | 
						||
In both cases pushes onto the stack the final value associated with
 | 
						||
C<tname> in the registry.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_newstate>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 lua_State *luaL_newstate (void);
 | 
						||
 | 
						||
Creates a new Lua state. It calls C<lua_newstate> with an allocator
 | 
						||
based on the standard C C<realloc> function and then sets a panic
 | 
						||
function (see C<lua_atpanic>) that prints an error message to the
 | 
						||
standard error output in case of fatal errors.
 | 
						||
 | 
						||
Returns the new state, or C<NULL> if there is a memory allocation
 | 
						||
error.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_openlibs>
 | 
						||
 | 
						||
[-0, +0, I<m>]
 | 
						||
 | 
						||
 void luaL_openlibs (lua_State *L);
 | 
						||
 | 
						||
Opens all standard Lua libraries into the given state.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_optint>
 | 
						||
 | 
						||
[-0, +0, I<v>]
 | 
						||
 | 
						||
 int luaL_optint (lua_State *L, int narg, int d);
 | 
						||
 | 
						||
If the function argument C<narg> is a number, returns this number cast
 | 
						||
to an C<int>. If this argument is absent or is B<nil>, returns C<d>.
 | 
						||
Otherwise, raises an error.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_optinteger>
 | 
						||
 | 
						||
[-0, +0, I<v>]
 | 
						||
 | 
						||
 lua_Integer luaL_optinteger (lua_State *L,
 | 
						||
                              int narg,
 | 
						||
                              lua_Integer d);
 | 
						||
 | 
						||
If the function argument C<narg> is a number, returns this number cast
 | 
						||
to a C<lua_Integer>. If this argument is absent or is B<nil>, returns
 | 
						||
C<d>. Otherwise, raises an error.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_optlong>
 | 
						||
 | 
						||
[-0, +0, I<v>]
 | 
						||
 | 
						||
 long luaL_optlong (lua_State *L, int narg, long d);
 | 
						||
 | 
						||
If the function argument C<narg> is a number, returns this number cast
 | 
						||
to a C<long>. If this argument is absent or is B<nil>, returns C<d>.
 | 
						||
Otherwise, raises an error.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_optlstring>
 | 
						||
 | 
						||
[-0, +0, I<v>]
 | 
						||
 | 
						||
 const char *luaL_optlstring (lua_State *L,
 | 
						||
                              int narg,
 | 
						||
                              const char *d,
 | 
						||
                              size_t *l);
 | 
						||
 | 
						||
If the function argument C<narg> is a string, returns this string. If
 | 
						||
this argument is absent or is B<nil>, returns C<d>. Otherwise, raises
 | 
						||
an error.
 | 
						||
 | 
						||
If C<l> is not C<NULL>, fills the position C<*l> with the results's
 | 
						||
length.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_optnumber>
 | 
						||
 | 
						||
[-0, +0, I<v>]
 | 
						||
 | 
						||
 lua_Number luaL_optnumber (lua_State *L, int narg, lua_Number d);
 | 
						||
 | 
						||
If the function argument C<narg> is a number, returns this number. If
 | 
						||
this argument is absent or is B<nil>, returns C<d>. Otherwise, raises
 | 
						||
an error.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_optstring>
 | 
						||
 | 
						||
[-0, +0, I<v>]
 | 
						||
 | 
						||
 const char *luaL_optstring (lua_State *L,
 | 
						||
                             int narg,
 | 
						||
                             const char *d);
 | 
						||
 | 
						||
If the function argument C<narg> is a string, returns this string. If
 | 
						||
this argument is absent or is B<nil>, returns C<d>. Otherwise, raises
 | 
						||
an error.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_prepbuffer>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 char *luaL_prepbuffer (luaL_Buffer *B);
 | 
						||
 | 
						||
Returns an address to a space of size C<LUAL_BUFFERSIZE> where you can
 | 
						||
copy a string to be added to buffer C<B> (see C<luaL_Buffer>). After
 | 
						||
copying the string into this space you must call C<luaL_addsize> with
 | 
						||
the size of the string to actually add it to the buffer.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_pushresult>
 | 
						||
 | 
						||
[-?, +1, I<m>]
 | 
						||
 | 
						||
 void luaL_pushresult (luaL_Buffer *B);
 | 
						||
 | 
						||
Finishes the use of buffer C<B> leaving the final string on the top of
 | 
						||
the stack.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_ref>
 | 
						||
 | 
						||
[-1, +0, I<m>]
 | 
						||
 | 
						||
 int luaL_ref (lua_State *L, int t);
 | 
						||
 | 
						||
Creates and returns a I<reference>, in the table at index C<t>, for the
 | 
						||
object at the top of the stack (and pops the object).
 | 
						||
 | 
						||
A reference is a unique integer key. As long as you do not manually add
 | 
						||
integer keys into table C<t>, C<luaL_ref> ensures the uniqueness of the
 | 
						||
key it returns. You can retrieve an object referred by reference C<r>
 | 
						||
by calling C<lua_rawgeti(L, t, r)>. Function C<luaL_unref> frees a
 | 
						||
reference and its associated object.
 | 
						||
 | 
						||
If the object at the top of the stack is B<nil>, C<luaL_ref> returns
 | 
						||
the constant C<LUA_REFNIL>. The constant C<LUA_NOREF> is guaranteed to
 | 
						||
be different from any reference returned by C<luaL_ref>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_Reg>
 | 
						||
 | 
						||
 typedef struct luaL_Reg {
 | 
						||
   const char *name;
 | 
						||
   lua_CFunction func;
 | 
						||
 } luaL_Reg;
 | 
						||
 | 
						||
Type for arrays of functions to be registered by C<luaL_register>.
 | 
						||
C<name> is the function name and C<func> is a pointer to the function.
 | 
						||
Any array of C<luaL_Reg> must end with an sentinel entry in which both
 | 
						||
C<name> and C<func> are C<NULL>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_register>
 | 
						||
 | 
						||
[-(0|1), +1, I<m>]
 | 
						||
 | 
						||
 void luaL_register (lua_State *L,
 | 
						||
                     const char *libname,
 | 
						||
                     const luaL_Reg *l);
 | 
						||
 | 
						||
Opens a library.
 | 
						||
 | 
						||
When called with C<libname> equal to C<NULL>, it simply registers all
 | 
						||
functions in the list C<l> (see C<luaL_Reg>) into the table on the top
 | 
						||
of the stack.
 | 
						||
 | 
						||
When called with a non-null C<libname>, C<luaL_register> creates a new
 | 
						||
table C<t>, sets it as the value of the global variable C<libname>,
 | 
						||
sets it as the value of C<package.loaded[libname]>, and registers on it
 | 
						||
all functions in the list C<l>. If there is a table in
 | 
						||
C<package.loaded[libname]> or in variable C<libname>, reuses this table
 | 
						||
instead of creating a new one.
 | 
						||
 | 
						||
In any case the function leaves the table on the top of the stack.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_typename>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 const char *luaL_typename (lua_State *L, int index);
 | 
						||
 | 
						||
Returns the name of the type of the value at the given index.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_typerror>
 | 
						||
 | 
						||
[-0, +0, I<v>]
 | 
						||
 | 
						||
 int luaL_typerror (lua_State *L, int narg, const char *tname);
 | 
						||
 | 
						||
Generates an error with a message like the following:
 | 
						||
 | 
						||
     location: bad argument narg to 'func' (tname expected, got rt)
 | 
						||
 | 
						||
where C<I<location>> is produced by C<luaL_where>, C<I<func>> is the
 | 
						||
name of the current function, and C<I<rt>> is the type name of the
 | 
						||
actual argument.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_unref>
 | 
						||
 | 
						||
[-0, +0, I<->]
 | 
						||
 | 
						||
 void luaL_unref (lua_State *L, int t, int ref);
 | 
						||
 | 
						||
Releases reference C<ref> from the table at index C<t> (see
 | 
						||
C<luaL_ref>). The entry is removed from the table, so that the referred
 | 
						||
object can be collected. The reference C<ref> is also freed to be used
 | 
						||
again.
 | 
						||
 | 
						||
If C<ref> is C<LUA_NOREF> or C<LUA_REFNIL>, C<luaL_unref> does nothing.
 | 
						||
 | 
						||
 | 
						||
=head2 C<luaL_where>
 | 
						||
 | 
						||
[-0, +1, I<m>]
 | 
						||
 | 
						||
 void luaL_where (lua_State *L, int lvl);
 | 
						||
 | 
						||
Pushes onto the stack a string identifying the current position of the
 | 
						||
control at level C<lvl> in the call stack. Typically this string has
 | 
						||
the following format:
 | 
						||
 | 
						||
     chunkname:currentline:
 | 
						||
 | 
						||
Level 0 is the running function, level 1 is the function that called
 | 
						||
the running function, etc.
 | 
						||
 | 
						||
This function is used to build a prefix for error messages.
 | 
						||
 | 
						||
=head1 5 - Standard Libraries
 | 
						||
 | 
						||
The standard Lua libraries provide useful functions that are
 | 
						||
implemented directly through the C API. Some of these functions provide
 | 
						||
essential services to the language (e.g., C<type> and C<getmetatable>);
 | 
						||
others provide access to "outside" services (e.g., I/O); and others
 | 
						||
could be implemented in Lua itself, but are quite useful or have
 | 
						||
critical performance requirements that deserve an implementation in C
 | 
						||
(e.g., C<table.sort>).
 | 
						||
 | 
						||
All libraries are implemented through the official C API and are
 | 
						||
provided as separate C modules. Currently, Lua has the following
 | 
						||
standard libraries:
 | 
						||
 | 
						||
=over
 | 
						||
 | 
						||
=item * basic library, which includes the coroutine sub-library;
 | 
						||
 | 
						||
=item * package library;
 | 
						||
 | 
						||
=item * string manipulation;
 | 
						||
 | 
						||
=item * table manipulation;
 | 
						||
 | 
						||
=item * mathematical functions (sin, log, etc.);
 | 
						||
 | 
						||
=item * input and output;
 | 
						||
 | 
						||
=item * operating system facilities;
 | 
						||
 | 
						||
=item * debug facilities.
 | 
						||
 | 
						||
=back
 | 
						||
 | 
						||
Except for the basic and package libraries, each library provides all
 | 
						||
its functions as fields of a global table or as methods of its objects.
 | 
						||
 | 
						||
To have access to these libraries, the C host program should call the
 | 
						||
C<luaL_openlibs> function, which opens all standard libraries.
 | 
						||
Alternatively, it can open them individually by calling C<luaopen_base>
 | 
						||
(for the basic library), C<luaopen_package> (for the package library),
 | 
						||
C<luaopen_string> (for the string library), C<luaopen_table> (for the
 | 
						||
table library), C<luaopen_math> (for the mathematical library),
 | 
						||
C<luaopen_io> (for the I/O library), C<luaopen_os> (for the Operating
 | 
						||
System library), and C<luaopen_debug> (for the debug library). These
 | 
						||
functions are declared in C<lualib.h> and should not be called
 | 
						||
directly: you must call them like any other Lua C function, e.g., by
 | 
						||
using C<lua_call>.
 | 
						||
 | 
						||
=head2 5.1 - Basic Functions
 | 
						||
 | 
						||
The basic library provides some core functions to Lua. If you do not
 | 
						||
include this library in your application, you should check carefully
 | 
						||
whether you need to provide implementations for some of its facilities.
 | 
						||
 | 
						||
 | 
						||
=head2 C<assert (v [, message])>
 | 
						||
 | 
						||
Issues an error when the value of its argument C<v> is false (i.e.,
 | 
						||
B<nil> or B<false>); otherwise, returns all its arguments. C<message>
 | 
						||
is an error message; when absent, it defaults to "assertion failed!"
 | 
						||
 | 
						||
 | 
						||
=head2 C<collectgarbage ([opt [, arg]])>
 | 
						||
 | 
						||
This function is a generic interface to the garbage collector. It
 | 
						||
performs different functions according to its first argument, C<opt>:
 | 
						||
 | 
						||
=over
 | 
						||
 | 
						||
=item * B<"collect":> performs a full garbage-collection cycle. This is
 | 
						||
the default option.
 | 
						||
 | 
						||
=item * B<"stop":> stops the garbage collector.
 | 
						||
 | 
						||
=item * B<"restart":> restarts the garbage collector.
 | 
						||
 | 
						||
=item * B<"count":> returns the total memory in use by Lua (in Kbytes).
 | 
						||
 | 
						||
=item * B<"step":> performs a garbage-collection step. The step "size"
 | 
						||
is controlled by C<arg> (larger values mean more steps) in a
 | 
						||
non-specified way. If you want to control the step size you must
 | 
						||
experimentally tune the value of C<arg>. Returns B<true> if the step
 | 
						||
finished a collection cycle.
 | 
						||
 | 
						||
=item * B<"setpause":> sets C<arg> as the new value for the I<pause> of
 | 
						||
the collector (see E<sect>2.10). Returns the previous value for
 | 
						||
I<pause>.
 | 
						||
 | 
						||
=item * B<"setstepmul":> sets C<arg> as the new value for the I<step
 | 
						||
multiplier> of the collector (see E<sect>2.10). Returns the previous
 | 
						||
value for I<step>.
 | 
						||
 | 
						||
=back
 | 
						||
 | 
						||
 | 
						||
=head2 C<dofile ([filename])>
 | 
						||
 | 
						||
Opens the named file and executes its contents as a Lua chunk. When
 | 
						||
called without arguments, C<dofile> executes the contents of the
 | 
						||
standard input (C<stdin>). Returns all values returned by the chunk. In
 | 
						||
case of errors, C<dofile> propagates the error to its caller (that is,
 | 
						||
C<dofile> does not run in protected mode).
 | 
						||
 | 
						||
 | 
						||
=head2 C<error (message [, level])>
 | 
						||
 | 
						||
Terminates the last protected function called and returns C<message> as
 | 
						||
the error message. Function C<error> never returns.
 | 
						||
 | 
						||
Usually, C<error> adds some information about the error position at the
 | 
						||
beginning of the message. The C<level> argument specifies how to get
 | 
						||
the error position. With level 1 (the default), the error position is
 | 
						||
where the C<error> function was called. Level 2 points the error to
 | 
						||
where the function that called C<error> was called; and so on. Passing
 | 
						||
a level 0 avoids the addition of error position information to the
 | 
						||
message.
 | 
						||
 | 
						||
 | 
						||
=head2 C<_G>
 | 
						||
 | 
						||
A global variable (not a function) that holds the global environment
 | 
						||
(that is, C<_G._G = _G>). Lua itself does not use this variable;
 | 
						||
changing its value does not affect any environment, nor vice-versa.
 | 
						||
(Use C<setfenv> to change environments.)
 | 
						||
 | 
						||
 | 
						||
=head2 C<getfenv ([f])>
 | 
						||
 | 
						||
Returns the current environment in use by the function. C<f> can be a
 | 
						||
Lua function or a number that specifies the function at that stack
 | 
						||
level: Level 1 is the function calling C<getfenv>. If the given
 | 
						||
function is not a Lua function, or if C<f> is 0, C<getfenv> returns the
 | 
						||
global environment. The default for C<f> is 1.
 | 
						||
 | 
						||
 | 
						||
=head2 C<getmetatable (object)>
 | 
						||
 | 
						||
If C<object> does not have a metatable, returns B<nil>. Otherwise, if
 | 
						||
the object's metatable has a C<"__metatable"> field, returns the
 | 
						||
associated value. Otherwise, returns the metatable of the given object.
 | 
						||
 | 
						||
 | 
						||
=head2 C<ipairs (t)>
 | 
						||
 | 
						||
Returns three values: an iterator function, the table C<t>, and 0, so
 | 
						||
that the construction
 | 
						||
 | 
						||
     for i,v in ipairs(t) do body end
 | 
						||
 | 
						||
will iterate over the pairs (C<1,t[1]>), (C<2,t[2]>),
 | 
						||
E<middot>E<middot>E<middot>, up to the first integer key absent from
 | 
						||
the table.
 | 
						||
 | 
						||
 | 
						||
=head2 C<load (func [, chunkname])>
 | 
						||
 | 
						||
Loads a chunk using function C<func> to get its pieces. Each call to
 | 
						||
C<func> must return a string that concatenates with previous results. A
 | 
						||
return of an empty string, B<nil>, or no value signals the end of the
 | 
						||
chunk.
 | 
						||
 | 
						||
If there are no errors, returns the compiled chunk as a function;
 | 
						||
otherwise, returns B<nil> plus the error message. The environment of
 | 
						||
the returned function is the global environment.
 | 
						||
 | 
						||
C<chunkname> is used as the chunk name for error messages and debug
 | 
						||
information. When absent, it defaults to "C<=(load)>".
 | 
						||
 | 
						||
 | 
						||
=head2 C<loadfile ([filename])>
 | 
						||
 | 
						||
Similar to C<load>, but gets the chunk from file C<filename> or from
 | 
						||
the standard input, if no file name is given.
 | 
						||
 | 
						||
 | 
						||
=head2 C<loadstring (string [, chunkname])>
 | 
						||
 | 
						||
Similar to C<load>, but gets the chunk from the given string.
 | 
						||
 | 
						||
To load and run a given string, use the idiom
 | 
						||
 | 
						||
     assert(loadstring(s))()
 | 
						||
 | 
						||
When absent, C<chunkname> defaults to the given string.
 | 
						||
 | 
						||
 | 
						||
=head2 C<next (table [, index])>
 | 
						||
 | 
						||
Allows a program to traverse all fields of a table. Its first argument
 | 
						||
is a table and its second argument is an index in this table. C<next>
 | 
						||
returns the next index of the table and its associated value. When
 | 
						||
called with B<nil> as its second argument, C<next> returns an initial
 | 
						||
index and its associated value. When called with the last index, or
 | 
						||
with B<nil> in an empty table, C<next> returns B<nil>. If the second
 | 
						||
argument is absent, then it is interpreted as B<nil>. In particular,
 | 
						||
you can use C<next(t)> to check whether a table is empty.
 | 
						||
 | 
						||
The order in which the indices are enumerated is not specified, I<even
 | 
						||
for numeric indices>. (To traverse a table in numeric order, use a
 | 
						||
numerical B<for> or the C<ipairs> function.)
 | 
						||
 | 
						||
The behavior of C<next> is I<undefined> if, during the traversal, you
 | 
						||
assign any value to a non-existent field in the table. You may however
 | 
						||
modify existing fields. In particular, you may clear existing fields.
 | 
						||
 | 
						||
 | 
						||
=head2 C<pairs (t)>
 | 
						||
 | 
						||
Returns three values: the C<next> function, the table C<t>, and B<nil>,
 | 
						||
so that the construction
 | 
						||
 | 
						||
     for k,v in pairs(t) do body end
 | 
						||
 | 
						||
will iterate over all keyE<ndash>value pairs of table C<t>.
 | 
						||
 | 
						||
See function C<next> for the caveats of modifying the table during its
 | 
						||
traversal.
 | 
						||
 | 
						||
 | 
						||
=head2 C<pcall (f, arg1, E<middot>E<middot>E<middot>)>
 | 
						||
 | 
						||
Calls function C<f> with the given arguments in I<protected mode>. This
 | 
						||
means that any error inside C<f> is not propagated; instead, C<pcall>
 | 
						||
catches the error and returns a status code. Its first result is the
 | 
						||
status code (a boolean), which is true if the call succeeds without
 | 
						||
errors. In such case, C<pcall> also returns all results from the call,
 | 
						||
after this first result. In case of any error, C<pcall> returns
 | 
						||
B<false> plus the error message.
 | 
						||
 | 
						||
 | 
						||
=head2 C<print (E<middot>E<middot>E<middot>)>
 | 
						||
 | 
						||
Receives any number of arguments, and prints their values to C<stdout>,
 | 
						||
using the C<tostring> function to convert them to strings. C<print> is
 | 
						||
not intended for formatted output, but only as a quick way to show a
 | 
						||
value, typically for debugging. For formatted output, use
 | 
						||
C<string.format>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<rawequal (v1, v2)>
 | 
						||
 | 
						||
Checks whether C<v1> is equal to C<v2>, without invoking any
 | 
						||
metamethod. Returns a boolean.
 | 
						||
 | 
						||
 | 
						||
=head2 C<rawget (table, index)>
 | 
						||
 | 
						||
Gets the real value of C<table[index]>, without invoking any
 | 
						||
metamethod. C<table> must be a table; C<index> may be any value.
 | 
						||
 | 
						||
 | 
						||
=head2 C<rawset (table, index, value)>
 | 
						||
 | 
						||
Sets the real value of C<table[index]> to C<value>, without invoking
 | 
						||
any metamethod. C<table> must be a table, C<index> any value different
 | 
						||
from B<nil>, and C<value> any Lua value.
 | 
						||
 | 
						||
This function returns C<table>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<select (index, E<middot>E<middot>E<middot>)>
 | 
						||
 | 
						||
If C<index> is a number, returns all arguments after argument number
 | 
						||
C<index>. Otherwise, C<index> must be the string C<"#">, and C<select>
 | 
						||
returns the total number of extra arguments it received.
 | 
						||
 | 
						||
 | 
						||
=head2 C<setfenv (f, table)>
 | 
						||
 | 
						||
Sets the environment to be used by the given function. C<f> can be a
 | 
						||
Lua function or a number that specifies the function at that stack
 | 
						||
level: Level 1 is the function calling C<setfenv>. C<setfenv> returns
 | 
						||
the given function.
 | 
						||
 | 
						||
As a special case, when C<f> is 0 C<setfenv> changes the environment of
 | 
						||
the running thread. In this case, C<setfenv> returns no values.
 | 
						||
 | 
						||
 | 
						||
=head2 C<setmetatable (table, metatable)>
 | 
						||
 | 
						||
Sets the metatable for the given table. (You cannot change the
 | 
						||
metatable of other types from Lua, only from C.) If C<metatable> is
 | 
						||
B<nil>, removes the metatable of the given table. If the original
 | 
						||
metatable has a C<"__metatable"> field, raises an error.
 | 
						||
 | 
						||
This function returns C<table>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<tonumber (e [, base])>
 | 
						||
 | 
						||
Tries to convert its argument to a number. If the argument is already a
 | 
						||
number or a string convertible to a number, then C<tonumber> returns
 | 
						||
this number; otherwise, it returns B<nil>.
 | 
						||
 | 
						||
An optional argument specifies the base to interpret the numeral. The
 | 
						||
base may be any integer between 2 and 36, inclusive. In bases above 10,
 | 
						||
the letter 'C<A>' (in either upper or lower case) represents 10, 'C<B>'
 | 
						||
represents 11, and so forth, with 'C<Z>' representing 35. In base 10
 | 
						||
(the default), the number can have a decimal part, as well as an
 | 
						||
optional exponent part (see E<sect>2.1). In other bases, only unsigned
 | 
						||
integers are accepted.
 | 
						||
 | 
						||
 | 
						||
=head2 C<tostring (e)>
 | 
						||
 | 
						||
Receives an argument of any type and converts it to a string in a
 | 
						||
reasonable format. For complete control of how numbers are converted,
 | 
						||
use C<string.format>.
 | 
						||
 | 
						||
If the metatable of C<e> has a C<"__tostring"> field, then C<tostring>
 | 
						||
calls the corresponding value with C<e> as argument, and uses the
 | 
						||
result of the call as its result.
 | 
						||
 | 
						||
 | 
						||
=head2 C<type (v)>
 | 
						||
 | 
						||
Returns the type of its only argument, coded as a string. The possible
 | 
						||
results of this function are "C<nil>" (a string, not the value B<nil>),
 | 
						||
"C<number>", "C<string>", "C<boolean>", "C<table>", "C<function>",
 | 
						||
"C<thread>", and "C<userdata>".
 | 
						||
 | 
						||
 | 
						||
=head2 C<unpack (list [, i [, j]])>
 | 
						||
 | 
						||
Returns the elements from the given table. This function is equivalent
 | 
						||
to
 | 
						||
 | 
						||
     return list[i], list[i+1], ···, list[j]
 | 
						||
 | 
						||
except that the above code can be written only for a fixed number of
 | 
						||
elements. By default, C<i> is 1 and C<j> is the length of the list, as
 | 
						||
defined by the length operator (see E<sect>2.5.5).
 | 
						||
 | 
						||
 | 
						||
=head2 C<_VERSION>
 | 
						||
 | 
						||
A global variable (not a function) that holds a string containing the
 | 
						||
current interpreter version. The current contents of this variable is
 | 
						||
"C<Lua 5.1>".
 | 
						||
 | 
						||
 | 
						||
=head2 C<xpcall (f, err)>
 | 
						||
 | 
						||
This function is similar to C<pcall>, except that you can set a new
 | 
						||
error handler.
 | 
						||
 | 
						||
C<xpcall> calls function C<f> in protected mode, using C<err> as the
 | 
						||
error handler. Any error inside C<f> is not propagated; instead,
 | 
						||
C<xpcall> catches the error, calls the C<err> function with the
 | 
						||
original error object, and returns a status code. Its first result is
 | 
						||
the status code (a boolean), which is true if the call succeeds without
 | 
						||
errors. In this case, C<xpcall> also returns all results from the call,
 | 
						||
after this first result. In case of any error, C<xpcall> returns
 | 
						||
B<false> plus the result from C<err>.
 | 
						||
 | 
						||
=head2 5.2 - Coroutine Manipulation
 | 
						||
 | 
						||
The operations related to coroutines comprise a sub-library of the
 | 
						||
basic library and come inside the table C<coroutine>. See E<sect>2.11
 | 
						||
for a general description of coroutines.
 | 
						||
 | 
						||
 | 
						||
=head2 C<coroutine.create (f)>
 | 
						||
 | 
						||
Creates a new coroutine, with body C<f>. C<f> must be a Lua function.
 | 
						||
Returns this new coroutine, an object with type C<"thread">.
 | 
						||
 | 
						||
 | 
						||
=head2 C<coroutine.resume (co [, val1, E<middot>E<middot>E<middot>])>
 | 
						||
 | 
						||
Starts or continues the execution of coroutine C<co>. The first time
 | 
						||
you resume a coroutine, it starts running its body. The values C<val1>,
 | 
						||
E<middot>E<middot>E<middot> are passed as the arguments to the body
 | 
						||
function. If the coroutine has yielded, C<resume> restarts it; the
 | 
						||
values C<val1>, E<middot>E<middot>E<middot> are passed as the results
 | 
						||
from the yield.
 | 
						||
 | 
						||
If the coroutine runs without any errors, C<resume> returns B<true>
 | 
						||
plus any values passed to C<yield> (if the coroutine yields) or any
 | 
						||
values returned by the body function (if the coroutine terminates). If
 | 
						||
there is any error, C<resume> returns B<false> plus the error message.
 | 
						||
 | 
						||
 | 
						||
=head2 C<coroutine.running ()>
 | 
						||
 | 
						||
Returns the running coroutine, or B<nil> when called by the main
 | 
						||
thread.
 | 
						||
 | 
						||
 | 
						||
=head2 C<coroutine.status (co)>
 | 
						||
 | 
						||
Returns the status of coroutine C<co>, as a string: C<"running">, if
 | 
						||
the coroutine is running (that is, it called C<status>);
 | 
						||
C<"suspended">, if the coroutine is suspended in a call to C<yield>, or
 | 
						||
if it has not started running yet; C<"normal"> if the coroutine is
 | 
						||
active but not running (that is, it has resumed another coroutine); and
 | 
						||
C<"dead"> if the coroutine has finished its body function, or if it has
 | 
						||
stopped with an error.
 | 
						||
 | 
						||
 | 
						||
=head2 C<coroutine.wrap (f)>
 | 
						||
 | 
						||
Creates a new coroutine, with body C<f>. C<f> must be a Lua function.
 | 
						||
Returns a function that resumes the coroutine each time it is called.
 | 
						||
Any arguments passed to the function behave as the extra arguments to
 | 
						||
C<resume>. Returns the same values returned by C<resume>, except the
 | 
						||
first boolean. In case of error, propagates the error.
 | 
						||
 | 
						||
 | 
						||
=head2 C<coroutine.yield (E<middot>E<middot>E<middot>)>
 | 
						||
 | 
						||
Suspends the execution of the calling coroutine. The coroutine cannot
 | 
						||
be running a C function, a metamethod, or an iterator. Any arguments to
 | 
						||
C<yield> are passed as extra results to C<resume>.
 | 
						||
 | 
						||
=head2 5.3 - Modules
 | 
						||
 | 
						||
The package library provides basic facilities for loading and building
 | 
						||
modules in Lua. It exports two of its functions directly in the global
 | 
						||
environment: C<require> and C<module>. Everything else is exported in a
 | 
						||
table C<package>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<module (name [, E<middot>E<middot>E<middot>])>
 | 
						||
 | 
						||
Creates a module. If there is a table in C<package.loaded[name]>, this
 | 
						||
table is the module. Otherwise, if there is a global table C<t> with
 | 
						||
the given name, this table is the module. Otherwise creates a new table
 | 
						||
C<t> and sets it as the value of the global C<name> and the value of
 | 
						||
C<package.loaded[name]>. This function also initializes C<t._NAME> with
 | 
						||
the given name, C<t._M> with the module (C<t> itself), and
 | 
						||
C<t._PACKAGE> with the package name (the full module name minus last
 | 
						||
component; see below). Finally, C<module> sets C<t> as the new
 | 
						||
environment of the current function and the new value of
 | 
						||
C<package.loaded[name]>, so that C<require> returns C<t>.
 | 
						||
 | 
						||
If C<name> is a compound name (that is, one with components separated
 | 
						||
by dots), C<module> creates (or reuses, if they already exist) tables
 | 
						||
for each component. For instance, if C<name> is C<a.b.c>, then
 | 
						||
C<module> stores the module table in field C<c> of field C<b> of global
 | 
						||
C<a>.
 | 
						||
 | 
						||
This function can receive optional I<options> after the module name,
 | 
						||
where each option is a function to be applied over the module.
 | 
						||
 | 
						||
 | 
						||
=head2 C<require (modname)>
 | 
						||
 | 
						||
Loads the given module. The function starts by looking into the
 | 
						||
C<package.loaded> table to determine whether C<modname> is already
 | 
						||
loaded. If it is, then C<require> returns the value stored at
 | 
						||
C<package.loaded[modname]>. Otherwise, it tries to find a I<loader> for
 | 
						||
the module.
 | 
						||
 | 
						||
To find a loader, C<require> is guided by the C<package.loaders> array.
 | 
						||
By changing this array, we can change how C<require> looks for a
 | 
						||
module. The following explanation is based on the default configuration
 | 
						||
for C<package.loaders>.
 | 
						||
 | 
						||
First C<require> queries C<package.preload[modname]>. If it has a
 | 
						||
value, this value (which should be a function) is the loader. Otherwise
 | 
						||
C<require> searches for a Lua loader using the path stored in
 | 
						||
C<package.path>. If that also fails, it searches for a C loader using
 | 
						||
the path stored in C<package.cpath>. If that also fails, it tries an
 | 
						||
I<all-in-one> loader (see C<package.loaders>).
 | 
						||
 | 
						||
Once a loader is found, C<require> calls the loader with a single
 | 
						||
argument, C<modname>. If the loader returns any value, C<require>
 | 
						||
assigns the returned value to C<package.loaded[modname]>. If the loader
 | 
						||
returns no value and has not assigned any value to
 | 
						||
C<package.loaded[modname]>, then C<require> assigns B<true> to this
 | 
						||
entry. In any case, C<require> returns the final value of
 | 
						||
C<package.loaded[modname]>.
 | 
						||
 | 
						||
If there is any error loading or running the module, or if it cannot
 | 
						||
find any loader for the module, then C<require> signals an error.
 | 
						||
 | 
						||
 | 
						||
=head2 C<package.cpath>
 | 
						||
 | 
						||
The path used by C<require> to search for a C loader.
 | 
						||
 | 
						||
Lua initializes the C path C<package.cpath> in the same way it
 | 
						||
initializes the Lua path C<package.path>, using the environment
 | 
						||
variable C<LUA_CPATH> or a default path defined in C<luaconf.h>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<package.loaded>
 | 
						||
 | 
						||
A table used by C<require> to control which modules are already loaded.
 | 
						||
When you require a module C<modname> and C<package.loaded[modname]> is
 | 
						||
not false, C<require> simply returns the value stored there.
 | 
						||
 | 
						||
 | 
						||
=head2 C<package.loaders>
 | 
						||
 | 
						||
A table used by C<require> to control how to load modules.
 | 
						||
 | 
						||
Each entry in this table is a I<searcher function>. When looking for a
 | 
						||
module, C<require> calls each of these searchers in ascending order,
 | 
						||
with the module name (the argument given to C<require>) as its sole
 | 
						||
parameter. The function can return another function (the module
 | 
						||
I<loader>) or a string explaining why it did not find that module (or
 | 
						||
B<nil> if it has nothing to say). Lua initializes this table with four
 | 
						||
functions.
 | 
						||
 | 
						||
The first searcher simply looks for a loader in the C<package.preload>
 | 
						||
table.
 | 
						||
 | 
						||
The second searcher looks for a loader as a Lua library, using the path
 | 
						||
stored at C<package.path>. A path is a sequence of I<templates>
 | 
						||
separated by semicolons. For each template, the searcher will change
 | 
						||
each interrogation mark in the template by C<filename>, which is the
 | 
						||
module name with each dot replaced by a "directory separator" (such as
 | 
						||
"C</>" in Unix); then it will try to open the resulting file name. So,
 | 
						||
for instance, if the Lua path is the string
 | 
						||
 | 
						||
     "./?.lua;./?.lc;/usr/local/?/init.lua"
 | 
						||
 | 
						||
the search for a Lua file for module C<foo> will try to open the files
 | 
						||
C<./foo.lua>, C<./foo.lc>, and C</usr/local/foo/init.lua>, in that
 | 
						||
order.
 | 
						||
 | 
						||
The third searcher looks for a loader as a C library, using the path
 | 
						||
given by the variable C<package.cpath>. For instance, if the C path is
 | 
						||
the string
 | 
						||
 | 
						||
     "./?.so;./?.dll;/usr/local/?/init.so"
 | 
						||
 | 
						||
the searcher for module C<foo> will try to open the files C<./foo.so>,
 | 
						||
C<./foo.dll>, and C</usr/local/foo/init.so>, in that order. Once it
 | 
						||
finds a C library, this searcher first uses a dynamic link facility to
 | 
						||
link the application with the library. Then it tries to find a C
 | 
						||
function inside the library to be used as the loader. The name of this
 | 
						||
C function is the string "C<luaopen_>" concatenated with a copy of the
 | 
						||
module name where each dot is replaced by an underscore. Moreover, if
 | 
						||
the module name has a hyphen, its prefix up to (and including) the
 | 
						||
first hyphen is removed. For instance, if the module name is
 | 
						||
C<a.v1-b.c>, the function name will be C<luaopen_b_c>.
 | 
						||
 | 
						||
The fourth searcher tries an I<all-in-one loader>. It searches the C
 | 
						||
path for a library for the root name of the given module. For instance,
 | 
						||
when requiring C<a.b.c>, it will search for a C library for C<a>. If
 | 
						||
found, it looks into it for an open function for the submodule; in our
 | 
						||
example, that would be C<luaopen_a_b_c>. With this facility, a package
 | 
						||
can pack several C submodules into one single library, with each
 | 
						||
submodule keeping its original open function.
 | 
						||
 | 
						||
 | 
						||
=head2 C<package.loadlib (libname, funcname)>
 | 
						||
 | 
						||
Dynamically links the host program with the C library C<libname>.
 | 
						||
Inside this library, looks for a function C<funcname> and returns this
 | 
						||
function as a C function. (So, C<funcname> must follow the protocol
 | 
						||
(see C<lua_CFunction>)).
 | 
						||
 | 
						||
This is a low-level function. It completely bypasses the package and
 | 
						||
module system. Unlike C<require>, it does not perform any path
 | 
						||
searching and does not automatically adds extensions. C<libname> must
 | 
						||
be the complete file name of the C library, including if necessary a
 | 
						||
path and extension. C<funcname> must be the exact name exported by the
 | 
						||
C library (which may depend on the C compiler and linker used).
 | 
						||
 | 
						||
This function is not supported by ANSI C. As such, it is only available
 | 
						||
on some platforms (Windows, Linux, Mac OS X, Solaris, BSD, plus other
 | 
						||
Unix systems that support the C<dlfcn> standard).
 | 
						||
 | 
						||
 | 
						||
=head2 C<package.path>
 | 
						||
 | 
						||
The path used by C<require> to search for a Lua loader.
 | 
						||
 | 
						||
At start-up, Lua initializes this variable with the value of the
 | 
						||
environment variable C<LUA_PATH> or with a default path defined in
 | 
						||
C<luaconf.h>, if the environment variable is not defined. Any "C<;;>"
 | 
						||
in the value of the environment variable is replaced by the default
 | 
						||
path.
 | 
						||
 | 
						||
 | 
						||
=head2 C<package.preload>
 | 
						||
 | 
						||
A table to store loaders for specific modules (see C<require>).
 | 
						||
 | 
						||
 | 
						||
=head2 C<package.seeall (module)>
 | 
						||
 | 
						||
Sets a metatable for C<module> with its C<__index> field referring to
 | 
						||
the global environment, so that this module inherits values from the
 | 
						||
global environment. To be used as an option to function C<module>.
 | 
						||
 | 
						||
=head2 5.4 - String Manipulation
 | 
						||
 | 
						||
This library provides generic functions for string manipulation, such
 | 
						||
as finding and extracting substrings, and pattern matching. When
 | 
						||
indexing a string in Lua, the first character is at position 1 (not at
 | 
						||
0, as in C). Indices are allowed to be negative and are interpreted as
 | 
						||
indexing backwards, from the end of the string. Thus, the last
 | 
						||
character is at position -1, and so on.
 | 
						||
 | 
						||
The string library provides all its functions inside the table
 | 
						||
C<string>. It also sets a metatable for strings where the C<__index>
 | 
						||
field points to the C<string> table. Therefore, you can use the string
 | 
						||
functions in object-oriented style. For instance, C<string.byte(s, i)>
 | 
						||
can be written as C<s:byte(i)>.
 | 
						||
 | 
						||
The string library assumes one-byte character encodings.
 | 
						||
 | 
						||
 | 
						||
=head2 C<string.byte (s [, i [, j]])>
 | 
						||
 | 
						||
Returns the internal numerical codes of the characters C<s[i]>,
 | 
						||
C<s[i+1]>, E<middot>E<middot>E<middot>, C<s[j]>. The default value for
 | 
						||
C<i> is 1; the default value for C<j> is C<i>.
 | 
						||
 | 
						||
Note that numerical codes are not necessarily portable across
 | 
						||
platforms.
 | 
						||
 | 
						||
 | 
						||
=head2 C<string.char (E<middot>E<middot>E<middot>)>
 | 
						||
 | 
						||
Receives zero or more integers. Returns a string with length equal to
 | 
						||
the number of arguments, in which each character has the internal
 | 
						||
numerical code equal to its corresponding argument.
 | 
						||
 | 
						||
Note that numerical codes are not necessarily portable across
 | 
						||
platforms.
 | 
						||
 | 
						||
 | 
						||
=head2 C<string.dump (function)>
 | 
						||
 | 
						||
Returns a string containing a binary representation of the given
 | 
						||
function, so that a later C<loadstring> on this string returns a copy
 | 
						||
of the function. C<function> must be a Lua function without upvalues.
 | 
						||
 | 
						||
 | 
						||
=head2 C<string.find (s, pattern [, init [, plain]])>
 | 
						||
 | 
						||
Looks for the first match of C<pattern> in the string C<s>. If it finds
 | 
						||
a match, then C<find> returns the indices of C<s> where this occurrence
 | 
						||
starts and ends; otherwise, it returns B<nil>. A third, optional
 | 
						||
numerical argument C<init> specifies where to start the search; its
 | 
						||
default value is 1 and can be negative. A value of B<true> as a fourth,
 | 
						||
optional argument C<plain> turns off the pattern matching facilities,
 | 
						||
so the function does a plain "find substring" operation, with no
 | 
						||
characters in C<pattern> being considered "magic". Note that if
 | 
						||
C<plain> is given, then C<init> must be given as well.
 | 
						||
 | 
						||
If the pattern has captures, then in a successful match the captured
 | 
						||
values are also returned, after the two indices.
 | 
						||
 | 
						||
 | 
						||
=head2 C<string.format (formatstring, E<middot>E<middot>E<middot>)>
 | 
						||
 | 
						||
Returns a formatted version of its variable number of arguments
 | 
						||
following the description given in its first argument (which must be a
 | 
						||
string). The format string follows the same rules as the C<printf>
 | 
						||
family of standard C functions. The only differences are that the
 | 
						||
options/modifiers C<*>, C<l>, C<L>, C<n>, C<p>, and C<h> are not
 | 
						||
supported and that there is an extra option, C<q>. The C<q> option
 | 
						||
formats a string in a form suitable to be safely read back by the Lua
 | 
						||
interpreter: the string is written between double quotes, and all
 | 
						||
double quotes, newlines, embedded zeros, and backslashes in the string
 | 
						||
are correctly escaped when written. For instance, the call
 | 
						||
 | 
						||
     string.format('%q', 'a string with "quotes" and \n new line')
 | 
						||
 | 
						||
will produce the string:
 | 
						||
 | 
						||
     "a string with \"quotes\" and \
 | 
						||
      new line"
 | 
						||
 | 
						||
The options C<c>, C<d>, C<E>, C<e>, C<f>, C<g>, C<G>, C<i>, C<o>, C<u>,
 | 
						||
C<X>, and C<x> all expect a number as argument, whereas C<q> and C<s>
 | 
						||
expect a string.
 | 
						||
 | 
						||
This function does not accept string values containing embedded zeros,
 | 
						||
except as arguments to the C<q> option.
 | 
						||
 | 
						||
 | 
						||
=head2 C<string.gmatch (s, pattern)>
 | 
						||
 | 
						||
Returns an iterator function that, each time it is called, returns the
 | 
						||
next captures from C<pattern> over string C<s>. If C<pattern> specifies
 | 
						||
no captures, then the whole match is produced in each call.
 | 
						||
 | 
						||
As an example, the following loop
 | 
						||
 | 
						||
     s = "hello world from Lua"
 | 
						||
     for w in string.gmatch(s, "%a+") do
 | 
						||
       print(w)
 | 
						||
     end
 | 
						||
 | 
						||
will iterate over all the words from string C<s>, printing one per
 | 
						||
line. The next example collects all pairs C<key=value> from the given
 | 
						||
string into a table:
 | 
						||
 | 
						||
     t = {}
 | 
						||
     s = "from=world, to=Lua"
 | 
						||
     for k, v in string.gmatch(s, "(%w+)=(%w+)") do
 | 
						||
       t[k] = v
 | 
						||
     end
 | 
						||
 | 
						||
For this function, a 'C<^>' at the start of a pattern does not work as
 | 
						||
an anchor, as this would prevent the iteration.
 | 
						||
 | 
						||
 | 
						||
=head2 C<string.gsub (s, pattern, repl [, n])>
 | 
						||
 | 
						||
Returns a copy of C<s> in which all (or the first C<n>, if given)
 | 
						||
occurrences of the C<pattern> have been replaced by a replacement
 | 
						||
string specified by C<repl>, which can be a string, a table, or a
 | 
						||
function. C<gsub> also returns, as its second value, the total number
 | 
						||
of matches that occurred.
 | 
						||
 | 
						||
If C<repl> is a string, then its value is used for replacement. The
 | 
						||
character C<%> works as an escape character: any sequence in C<repl> of
 | 
						||
the form C<%I<n>>, with I<n> between 1 and 9, stands for the value of
 | 
						||
the I<n>-th captured substring (see below). The sequence C<%0> stands
 | 
						||
for the whole match. The sequence C<%%> stands for a single C<%>.
 | 
						||
 | 
						||
If C<repl> is a table, then the table is queried for every match, using
 | 
						||
the first capture as the key; if the pattern specifies no captures,
 | 
						||
then the whole match is used as the key.
 | 
						||
 | 
						||
If C<repl> is a function, then this function is called every time a
 | 
						||
match occurs, with all captured substrings passed as arguments, in
 | 
						||
order; if the pattern specifies no captures, then the whole match is
 | 
						||
passed as a sole argument.
 | 
						||
 | 
						||
If the value returned by the table query or by the function call is a
 | 
						||
string or a number, then it is used as the replacement string;
 | 
						||
otherwise, if it is B<false> or B<nil>, then there is no replacement
 | 
						||
(that is, the original match is kept in the string).
 | 
						||
 | 
						||
Here are some examples:
 | 
						||
 | 
						||
     x = string.gsub("hello world", "(%w+)", "%1 %1")
 | 
						||
     --> x="hello hello world world"
 | 
						||
     
 | 
						||
     x = string.gsub("hello world", "%w+", "%0 %0", 1)
 | 
						||
     --> x="hello hello world"
 | 
						||
     
 | 
						||
     x = string.gsub("hello world from Lua", "(%w+)%s*(%w+)", "%2 %1")
 | 
						||
     --> x="world hello Lua from"
 | 
						||
     
 | 
						||
     x = string.gsub("home = $HOME, user = $USER", "%$(%w+)", os.getenv)
 | 
						||
     --> x="home = /home/roberto, user = roberto"
 | 
						||
     
 | 
						||
     x = string.gsub("4+5 = $return 4+5$", "%$(.-)%$", function (s)
 | 
						||
           return loadstring(s)()
 | 
						||
         end)
 | 
						||
     --> x="4+5 = 9"
 | 
						||
     
 | 
						||
     local t = {name="lua", version="5.1"}
 | 
						||
     x = string.gsub("$name-$version.tar.gz", "%$(%w+)", t)
 | 
						||
     --> x="lua-5.1.tar.gz"
 | 
						||
 | 
						||
 | 
						||
=head2 C<string.len (s)>
 | 
						||
 | 
						||
Receives a string and returns its length. The empty string C<""> has
 | 
						||
length 0. Embedded zeros are counted, so C<"a\000bc\000"> has length 5.
 | 
						||
 | 
						||
 | 
						||
=head2 C<string.lower (s)>
 | 
						||
 | 
						||
Receives a string and returns a copy of this string with all uppercase
 | 
						||
letters changed to lowercase. All other characters are left unchanged.
 | 
						||
The definition of what an uppercase letter is depends on the current
 | 
						||
locale.
 | 
						||
 | 
						||
 | 
						||
=head2 C<string.match (s, pattern [, init])>
 | 
						||
 | 
						||
Looks for the first I<match> of C<pattern> in the string C<s>. If it
 | 
						||
finds one, then C<match> returns the captures from the pattern;
 | 
						||
otherwise it returns B<nil>. If C<pattern> specifies no captures, then
 | 
						||
the whole match is returned. A third, optional numerical argument
 | 
						||
C<init> specifies where to start the search; its default value is 1 and
 | 
						||
can be negative.
 | 
						||
 | 
						||
 | 
						||
=head2 C<string.rep (s, n)>
 | 
						||
 | 
						||
Returns a string that is the concatenation of C<n> copies of the string
 | 
						||
C<s>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<string.reverse (s)>
 | 
						||
 | 
						||
Returns a string that is the string C<s> reversed.
 | 
						||
 | 
						||
 | 
						||
=head2 C<string.sub (s, i [, j])>
 | 
						||
 | 
						||
Returns the substring of C<s> that starts at C<i> and continues until
 | 
						||
C<j>; C<i> and C<j> can be negative. If C<j> is absent, then it is
 | 
						||
assumed to be equal to -1 (which is the same as the string length). In
 | 
						||
particular, the call C<string.sub(s,1,j)> returns a prefix of C<s> with
 | 
						||
length C<j>, and C<string.sub(s, -i)> returns a suffix of C<s> with
 | 
						||
length C<i>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<string.upper (s)>
 | 
						||
 | 
						||
Receives a string and returns a copy of this string with all lowercase
 | 
						||
letters changed to uppercase. All other characters are left unchanged.
 | 
						||
The definition of what a lowercase letter is depends on the current
 | 
						||
locale.
 | 
						||
 | 
						||
=head2 5.4.1 - Patterns
 | 
						||
 | 
						||
=head2 Character Class:
 | 
						||
 | 
						||
A I<character class> is used to represent a set of characters. The
 | 
						||
following combinations are allowed in describing a character class:
 | 
						||
 | 
						||
=over
 | 
						||
 | 
						||
=item * B<I<x>:> (where I<x> is not one of the I<magic characters>
 | 
						||
C<^$()%.[]*+-?>) represents the character I<x> itself.
 | 
						||
 | 
						||
=item * B<C<.>:> (a dot) represents all characters.
 | 
						||
 | 
						||
=item * B<C<%a>:> represents all letters.
 | 
						||
 | 
						||
=item * B<C<%c>:> represents all control characters.
 | 
						||
 | 
						||
=item * B<C<%d>:> represents all digits.
 | 
						||
 | 
						||
=item * B<C<%l>:> represents all lowercase letters.
 | 
						||
 | 
						||
=item * B<C<%p>:> represents all punctuation characters.
 | 
						||
 | 
						||
=item * B<C<%s>:> represents all space characters.
 | 
						||
 | 
						||
=item * B<C<%u>:> represents all uppercase letters.
 | 
						||
 | 
						||
=item * B<C<%w>:> represents all alphanumeric characters.
 | 
						||
 | 
						||
=item * B<C<%x>:> represents all hexadecimal digits.
 | 
						||
 | 
						||
=item * B<C<%z>:> represents the character with representation 0.
 | 
						||
 | 
						||
=item * B<C<%I<x>>:> (where I<x> is any non-alphanumeric character)
 | 
						||
represents the character I<x>. This is the standard way to escape the
 | 
						||
magic characters. Any punctuation character (even the non magic) can be
 | 
						||
preceded by a 'C<%>' when used to represent itself in a pattern.
 | 
						||
 | 
						||
=item * B<C<[I<set>]>:> represents the class which is the union of all
 | 
						||
characters in I<set>. A range of characters can be specified by
 | 
						||
separating the end characters of the range with a 'C<->'. All classes
 | 
						||
C<%>I<x> described above can also be used as components in I<set>. All
 | 
						||
other characters in I<set> represent themselves. For example, C<[%w_]>
 | 
						||
(or C<[_%w]>) represents all alphanumeric characters plus the
 | 
						||
underscore, C<[0-7]> represents the octal digits, and C<[0-7%l%-]>
 | 
						||
represents the octal digits plus the lowercase letters plus the 'C<->'
 | 
						||
character.
 | 
						||
 | 
						||
The interaction between ranges and classes is not defined. Therefore,
 | 
						||
patterns like C<[%a-z]> or C<[a-%%]> have no meaning.
 | 
						||
 | 
						||
=item * B<C<[^I<set>]>:> represents the complement of I<set>, where
 | 
						||
I<set> is interpreted as above.
 | 
						||
 | 
						||
=back
 | 
						||
 | 
						||
For all classes represented by single letters (C<%a>, C<%c>, etc.), the
 | 
						||
corresponding uppercase letter represents the complement of the class.
 | 
						||
For instance, C<%S> represents all non-space characters.
 | 
						||
 | 
						||
The definitions of letter, space, and other character groups depend on
 | 
						||
the current locale. In particular, the class C<[a-z]> may not be
 | 
						||
equivalent to C<%l>.
 | 
						||
 | 
						||
=head2 Pattern Item:
 | 
						||
 | 
						||
A I<pattern item> can be
 | 
						||
 | 
						||
=over
 | 
						||
 | 
						||
=item * a single character class, which matches any single character in
 | 
						||
the class;
 | 
						||
 | 
						||
=item * a single character class followed by 'C<*>', which matches 0 or
 | 
						||
more repetitions of characters in the class. These repetition items
 | 
						||
will always match the longest possible sequence;
 | 
						||
 | 
						||
=item * a single character class followed by 'C<+>', which matches 1 or
 | 
						||
more repetitions of characters in the class. These repetition items
 | 
						||
will always match the longest possible sequence;
 | 
						||
 | 
						||
=item * a single character class followed by 'C<->', which also matches
 | 
						||
0 or more repetitions of characters in the class. Unlike 'C<*>', these
 | 
						||
repetition items will always match the I<shortest> possible sequence;
 | 
						||
 | 
						||
=item * a single character class followed by 'C<?>', which matches 0 or
 | 
						||
1 occurrence of a character in the class;
 | 
						||
 | 
						||
=item * C<%I<n>>, for I<n> between 1 and 9; such item matches a
 | 
						||
substring equal to the I<n>-th captured string (see below);
 | 
						||
 | 
						||
=item * C<%bI<xy>>, where I<x> and I<y> are two distinct characters;
 | 
						||
such item matches strings that start with I<x>, end with I<y>, and
 | 
						||
where the I<x> and I<y> are I<balanced>. This means that, if one reads
 | 
						||
the string from left to right, counting I<+1> for an I<x> and I<-1> for
 | 
						||
a I<y>, the ending I<y> is the first I<y> where the count reaches 0.
 | 
						||
For instance, the item C<%b()> matches expressions with balanced
 | 
						||
parentheses.
 | 
						||
 | 
						||
=back
 | 
						||
 | 
						||
=head2 Pattern:
 | 
						||
 | 
						||
A I<pattern> is a sequence of pattern items. A 'C<^>' at the beginning
 | 
						||
of a pattern anchors the match at the beginning of the subject string.
 | 
						||
A 'C<$>' at the end of a pattern anchors the match at the end of the
 | 
						||
subject string. At other positions, 'C<^>' and 'C<$>' have no special
 | 
						||
meaning and represent themselves.
 | 
						||
 | 
						||
=head2 Captures:
 | 
						||
 | 
						||
A pattern can contain sub-patterns enclosed in parentheses; they
 | 
						||
describe I<captures>. When a match succeeds, the substrings of the
 | 
						||
subject string that match captures are stored (I<captured>) for future
 | 
						||
use. Captures are numbered according to their left parentheses. For
 | 
						||
instance, in the pattern C<"(a*(.)%w(%s*))">, the part of the string
 | 
						||
matching C<"a*(.)%w(%s*)"> is stored as the first capture (and
 | 
						||
therefore has number 1); the character matching "C<.>" is captured with
 | 
						||
number 2, and the part matching "C<%s*>" has number 3.
 | 
						||
 | 
						||
As a special case, the empty capture C<()> captures the current string
 | 
						||
position (a number). For instance, if we apply the pattern C<"()aa()">
 | 
						||
on the string C<"flaaap">, there will be two captures: 3 and 5.
 | 
						||
 | 
						||
A pattern cannot contain embedded zeros. Use C<%z> instead.
 | 
						||
 | 
						||
=head2 5.5 - Table Manipulation
 | 
						||
 | 
						||
This library provides generic functions for table manipulation. It
 | 
						||
provides all its functions inside the table C<table>.
 | 
						||
 | 
						||
Most functions in the table library assume that the table represents an
 | 
						||
array or a list. For these functions, when we talk about the "length"
 | 
						||
of a table we mean the result of the length operator.
 | 
						||
 | 
						||
 | 
						||
=head2 C<table.concat (table [, sep [, i [, j]]])>
 | 
						||
 | 
						||
Given an array where all elements are strings or numbers, returns
 | 
						||
C<table[i]..sep..table[i+1] E<middot>E<middot>E<middot> sep..table[j]>.
 | 
						||
The default value for C<sep> is the empty string, the default for C<i>
 | 
						||
is 1, and the default for C<j> is the length of the table. If C<i> is
 | 
						||
greater than C<j>, returns the empty string.
 | 
						||
 | 
						||
 | 
						||
=head2 C<table.insert (table, [pos,] value)>
 | 
						||
 | 
						||
Inserts element C<value> at position C<pos> in C<table>, shifting up
 | 
						||
other elements to open space, if necessary. The default value for
 | 
						||
C<pos> is C<n+1>, where C<n> is the length of the table (see
 | 
						||
E<sect>2.5.5), so that a call C<table.insert(t,x)> inserts C<x> at the
 | 
						||
end of table C<t>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<table.maxn (table)>
 | 
						||
 | 
						||
Returns the largest positive numerical index of the given table, or
 | 
						||
zero if the table has no positive numerical indices. (To do its job
 | 
						||
this function does a linear traversal of the whole table.)
 | 
						||
 | 
						||
 | 
						||
=head2 C<table.remove (table [, pos])>
 | 
						||
 | 
						||
Removes from C<table> the element at position C<pos>, shifting down
 | 
						||
other elements to close the space, if necessary. Returns the value of
 | 
						||
the removed element. The default value for C<pos> is C<n>, where C<n>
 | 
						||
is the length of the table, so that a call C<table.remove(t)> removes
 | 
						||
the last element of table C<t>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<table.sort (table [, comp])>
 | 
						||
 | 
						||
Sorts table elements in a given order, I<in-place>, from C<table[1]> to
 | 
						||
C<table[n]>, where C<n> is the length of the table. If C<comp> is
 | 
						||
given, then it must be a function that receives two table elements, and
 | 
						||
returns true when the first is less than the second (so that C<not
 | 
						||
comp(a[i+1],a[i])> will be true after the sort). If C<comp> is not
 | 
						||
given, then the standard Lua operator C<E<lt>> is used instead.
 | 
						||
 | 
						||
The sort algorithm is not stable; that is, elements considered equal by
 | 
						||
the given order may have their relative positions changed by the sort.
 | 
						||
 | 
						||
=head2 5.6 - Mathematical Functions
 | 
						||
 | 
						||
This library is an interface to the standard C math library. It
 | 
						||
provides all its functions inside the table C<math>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<math.abs (x)>
 | 
						||
 | 
						||
Returns the absolute value of C<x>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<math.acos (x)>
 | 
						||
 | 
						||
Returns the arc cosine of C<x> (in radians).
 | 
						||
 | 
						||
 | 
						||
=head2 C<math.asin (x)>
 | 
						||
 | 
						||
Returns the arc sine of C<x> (in radians).
 | 
						||
 | 
						||
 | 
						||
=head2 C<math.atan (x)>
 | 
						||
 | 
						||
Returns the arc tangent of C<x> (in radians).
 | 
						||
 | 
						||
 | 
						||
=head2 C<math.atan2 (y, x)>
 | 
						||
 | 
						||
Returns the arc tangent of C<y/x> (in radians), but uses the signs of
 | 
						||
both parameters to find the quadrant of the result. (It also handles
 | 
						||
correctly the case of C<x> being zero.)
 | 
						||
 | 
						||
 | 
						||
=head2 C<math.ceil (x)>
 | 
						||
 | 
						||
Returns the smallest integer larger than or equal to C<x>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<math.cos (x)>
 | 
						||
 | 
						||
Returns the cosine of C<x> (assumed to be in radians).
 | 
						||
 | 
						||
 | 
						||
=head2 C<math.cosh (x)>
 | 
						||
 | 
						||
Returns the hyperbolic cosine of C<x>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<math.deg (x)>
 | 
						||
 | 
						||
Returns the angle C<x> (given in radians) in degrees.
 | 
						||
 | 
						||
 | 
						||
=head2 C<math.exp (x)>
 | 
						||
 | 
						||
Returns the value I<ex>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<math.floor (x)>
 | 
						||
 | 
						||
Returns the largest integer smaller than or equal to C<x>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<math.fmod (x, y)>
 | 
						||
 | 
						||
Returns the remainder of the division of C<x> by C<y> that rounds the
 | 
						||
quotient towards zero.
 | 
						||
 | 
						||
 | 
						||
=head2 C<math.frexp (x)>
 | 
						||
 | 
						||
Returns C<m> and C<e> such that I<x = m2e>, C<e> is an integer and the
 | 
						||
absolute value of C<m> is in the range I<[0.5, 1)> (or zero when C<x>
 | 
						||
is zero).
 | 
						||
 | 
						||
 | 
						||
=head2 C<math.huge>
 | 
						||
 | 
						||
The value C<HUGE_VAL>, a value larger than or equal to any other
 | 
						||
numerical value.
 | 
						||
 | 
						||
 | 
						||
=head2 C<math.ldexp (m, e)>
 | 
						||
 | 
						||
Returns I<m2e> (C<e> should be an integer).
 | 
						||
 | 
						||
 | 
						||
=head2 C<math.log (x)>
 | 
						||
 | 
						||
Returns the natural logarithm of C<x>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<math.log10 (x)>
 | 
						||
 | 
						||
Returns the base-10 logarithm of C<x>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<math.max (x, E<middot>E<middot>E<middot>)>
 | 
						||
 | 
						||
Returns the maximum value among its arguments.
 | 
						||
 | 
						||
 | 
						||
=head2 C<math.min (x, E<middot>E<middot>E<middot>)>
 | 
						||
 | 
						||
Returns the minimum value among its arguments.
 | 
						||
 | 
						||
 | 
						||
=head2 C<math.modf (x)>
 | 
						||
 | 
						||
Returns two numbers, the integral part of C<x> and the fractional part
 | 
						||
of C<x>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<math.pi>
 | 
						||
 | 
						||
The value of I<pi>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<math.pow (x, y)>
 | 
						||
 | 
						||
Returns I<xy>. (You can also use the expression C<x^y> to compute this
 | 
						||
value.)
 | 
						||
 | 
						||
 | 
						||
=head2 C<math.rad (x)>
 | 
						||
 | 
						||
Returns the angle C<x> (given in degrees) in radians.
 | 
						||
 | 
						||
 | 
						||
=head2 C<math.random ([m [, n]])>
 | 
						||
 | 
						||
This function is an interface to the simple pseudo-random generator
 | 
						||
function C<rand> provided by ANSI C. (No guarantees can be given for
 | 
						||
its statistical properties.)
 | 
						||
 | 
						||
When called without arguments, returns a uniform pseudo-random real
 | 
						||
number in the range I<[0,1)>. When called with an integer number C<m>,
 | 
						||
C<math.random> returns a uniform pseudo-random integer in the range
 | 
						||
I<[1, m]>. When called with two integer numbers C<m> and C<n>,
 | 
						||
C<math.random> returns a uniform pseudo-random integer in the range
 | 
						||
I<[m, n]>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<math.randomseed (x)>
 | 
						||
 | 
						||
Sets C<x> as the "seed" for the pseudo-random generator: equal seeds
 | 
						||
produce equal sequences of numbers.
 | 
						||
 | 
						||
 | 
						||
=head2 C<math.sin (x)>
 | 
						||
 | 
						||
Returns the sine of C<x> (assumed to be in radians).
 | 
						||
 | 
						||
 | 
						||
=head2 C<math.sinh (x)>
 | 
						||
 | 
						||
Returns the hyperbolic sine of C<x>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<math.sqrt (x)>
 | 
						||
 | 
						||
Returns the square root of C<x>. (You can also use the expression
 | 
						||
C<x^0.5> to compute this value.)
 | 
						||
 | 
						||
 | 
						||
=head2 C<math.tan (x)>
 | 
						||
 | 
						||
Returns the tangent of C<x> (assumed to be in radians).
 | 
						||
 | 
						||
 | 
						||
=head2 C<math.tanh (x)>
 | 
						||
 | 
						||
Returns the hyperbolic tangent of C<x>.
 | 
						||
 | 
						||
=head2 5.7 - Input and Output Facilities
 | 
						||
 | 
						||
The I/O library provides two different styles for file manipulation.
 | 
						||
The first one uses implicit file descriptors; that is, there are
 | 
						||
operations to set a default input file and a default output file, and
 | 
						||
all input/output operations are over these default files. The second
 | 
						||
style uses explicit file descriptors.
 | 
						||
 | 
						||
When using implicit file descriptors, all operations are supplied by
 | 
						||
table C<io>. When using explicit file descriptors, the operation
 | 
						||
C<io.open> returns a file descriptor and then all operations are
 | 
						||
supplied as methods of the file descriptor.
 | 
						||
 | 
						||
The table C<io> also provides three predefined file descriptors with
 | 
						||
their usual meanings from C: C<io.stdin>, C<io.stdout>, and
 | 
						||
C<io.stderr>. The I/O library never closes these files.
 | 
						||
 | 
						||
Unless otherwise stated, all I/O functions return B<nil> on failure
 | 
						||
(plus an error message as a second result and a system-dependent error
 | 
						||
code as a third result) and some value different from B<nil> on
 | 
						||
success.
 | 
						||
 | 
						||
 | 
						||
=head2 C<io.close ([file])>
 | 
						||
 | 
						||
Equivalent to C<file:close()>. Without a C<file>, closes the default
 | 
						||
output file.
 | 
						||
 | 
						||
 | 
						||
=head2 C<io.flush ()>
 | 
						||
 | 
						||
Equivalent to C<file:flush> over the default output file.
 | 
						||
 | 
						||
 | 
						||
=head2 C<io.input ([file])>
 | 
						||
 | 
						||
When called with a file name, it opens the named file (in text mode),
 | 
						||
and sets its handle as the default input file. When called with a file
 | 
						||
handle, it simply sets this file handle as the default input file. When
 | 
						||
called without parameters, it returns the current default input file.
 | 
						||
 | 
						||
In case of errors this function raises the error, instead of returning
 | 
						||
an error code.
 | 
						||
 | 
						||
 | 
						||
=head2 C<io.lines ([filename])>
 | 
						||
 | 
						||
Opens the given file name in read mode and returns an iterator function
 | 
						||
that, each time it is called, returns a new line from the file.
 | 
						||
Therefore, the construction
 | 
						||
 | 
						||
     for line in io.lines(filename) do body end
 | 
						||
 | 
						||
will iterate over all lines of the file. When the iterator function
 | 
						||
detects the end of file, it returns B<nil> (to finish the loop) and
 | 
						||
automatically closes the file.
 | 
						||
 | 
						||
The call C<io.lines()> (with no file name) is equivalent to
 | 
						||
C<io.input():lines()>; that is, it iterates over the lines of the
 | 
						||
default input file. In this case it does not close the file when the
 | 
						||
loop ends.
 | 
						||
 | 
						||
 | 
						||
=head2 C<io.open (filename [, mode])>
 | 
						||
 | 
						||
This function opens a file, in the mode specified in the string
 | 
						||
C<mode>. It returns a new file handle, or, in case of errors, B<nil>
 | 
						||
plus an error message.
 | 
						||
 | 
						||
The C<mode> string can be any of the following:
 | 
						||
 | 
						||
=over
 | 
						||
 | 
						||
=item * B<"r":> read mode (the default);
 | 
						||
 | 
						||
=item * B<"w":> write mode;
 | 
						||
 | 
						||
=item * B<"a":> append mode;
 | 
						||
 | 
						||
=item * B<"r+":> update mode, all previous data is preserved;
 | 
						||
 | 
						||
=item * B<"w+":> update mode, all previous data is erased;
 | 
						||
 | 
						||
=item * B<"a+":> append update mode, previous data is preserved,
 | 
						||
writing is only allowed at the end of file.
 | 
						||
 | 
						||
=back
 | 
						||
 | 
						||
The C<mode> string can also have a 'C<b>' at the end, which is needed
 | 
						||
in some systems to open the file in binary mode. This string is exactly
 | 
						||
what is used in the standard C function C<fopen>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<io.output ([file])>
 | 
						||
 | 
						||
Similar to C<io.input>, but operates over the default output file.
 | 
						||
 | 
						||
 | 
						||
=head2 C<io.popen (prog [, mode])>
 | 
						||
 | 
						||
Starts program C<prog> in a separated process and returns a file handle
 | 
						||
that you can use to read data from this program (if C<mode> is C<"r">,
 | 
						||
the default) or to write data to this program (if C<mode> is C<"w">).
 | 
						||
 | 
						||
This function is system dependent and is not available on all
 | 
						||
platforms.
 | 
						||
 | 
						||
 | 
						||
=head2 C<io.read (E<middot>E<middot>E<middot>)>
 | 
						||
 | 
						||
Equivalent to C<io.input():read>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<io.tmpfile ()>
 | 
						||
 | 
						||
Returns a handle for a temporary file. This file is opened in update
 | 
						||
mode and it is automatically removed when the program ends.
 | 
						||
 | 
						||
 | 
						||
=head2 C<io.type (obj)>
 | 
						||
 | 
						||
Checks whether C<obj> is a valid file handle. Returns the string
 | 
						||
C<"file"> if C<obj> is an open file handle, C<"closed file"> if C<obj>
 | 
						||
is a closed file handle, or B<nil> if C<obj> is not a file handle.
 | 
						||
 | 
						||
 | 
						||
=head2 C<io.write (E<middot>E<middot>E<middot>)>
 | 
						||
 | 
						||
Equivalent to C<io.output():write>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<file:close ()>
 | 
						||
 | 
						||
Closes C<file>. Note that files are automatically closed when their
 | 
						||
handles are garbage collected, but that takes an unpredictable amount
 | 
						||
of time to happen.
 | 
						||
 | 
						||
 | 
						||
=head2 C<file:flush ()>
 | 
						||
 | 
						||
Saves any written data to C<file>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<file:lines ()>
 | 
						||
 | 
						||
Returns an iterator function that, each time it is called, returns a
 | 
						||
new line from the file. Therefore, the construction
 | 
						||
 | 
						||
     for line in file:lines() do body end
 | 
						||
 | 
						||
will iterate over all lines of the file. (Unlike C<io.lines>, this
 | 
						||
function does not close the file when the loop ends.)
 | 
						||
 | 
						||
 | 
						||
=head2 C<file:read (E<middot>E<middot>E<middot>)>
 | 
						||
 | 
						||
Reads the file C<file>, according to the given formats, which specify
 | 
						||
what to read. For each format, the function returns a string (or a
 | 
						||
number) with the characters read, or B<nil> if it cannot read data with
 | 
						||
the specified format. When called without formats, it uses a default
 | 
						||
format that reads the entire next line (see below).
 | 
						||
 | 
						||
The available formats are
 | 
						||
 | 
						||
=over
 | 
						||
 | 
						||
=item * B<"*n":> reads a number; this is the only format that returns a
 | 
						||
number instead of a string.
 | 
						||
 | 
						||
=item * B<"*a":> reads the whole file, starting at the current
 | 
						||
position. On end of file, it returns the empty string.
 | 
						||
 | 
						||
=item * B<"*l":> reads the next line (skipping the end of line),
 | 
						||
returning B<nil> on end of file. This is the default format.
 | 
						||
 | 
						||
=item * B<I<number>:> reads a string with up to this number of
 | 
						||
characters, returning B<nil> on end of file. If number is zero, it
 | 
						||
reads nothing and returns an empty string, or B<nil> on end of file.
 | 
						||
 | 
						||
=back
 | 
						||
 | 
						||
 | 
						||
=head2 C<file:seek ([whence] [, offset])>
 | 
						||
 | 
						||
Sets and gets the file position, measured from the beginning of the
 | 
						||
file, to the position given by C<offset> plus a base specified by the
 | 
						||
string C<whence>, as follows:
 | 
						||
 | 
						||
=over
 | 
						||
 | 
						||
=item * B<"set":> base is position 0 (beginning of the file);
 | 
						||
 | 
						||
=item * B<"cur":> base is current position;
 | 
						||
 | 
						||
=item * B<"end":> base is end of file;
 | 
						||
 | 
						||
=back
 | 
						||
 | 
						||
In case of success, function C<seek> returns the final file position,
 | 
						||
measured in bytes from the beginning of the file. If this function
 | 
						||
fails, it returns B<nil>, plus a string describing the error.
 | 
						||
 | 
						||
The default value for C<whence> is C<"cur">, and for C<offset> is 0.
 | 
						||
Therefore, the call C<file:seek()> returns the current file position,
 | 
						||
without changing it; the call C<file:seek("set")> sets the position to
 | 
						||
the beginning of the file (and returns 0); and the call
 | 
						||
C<file:seek("end")> sets the position to the end of the file, and
 | 
						||
returns its size.
 | 
						||
 | 
						||
 | 
						||
=head2 C<file:setvbuf (mode [, size])>
 | 
						||
 | 
						||
Sets the buffering mode for an output file. There are three available
 | 
						||
modes:
 | 
						||
 | 
						||
=over
 | 
						||
 | 
						||
=item * B<"no":> no buffering; the result of any output operation
 | 
						||
appears immediately.
 | 
						||
 | 
						||
=item * B<"full":> full buffering; output operation is performed only
 | 
						||
when the buffer is full (or when you explicitly C<flush> the file (see
 | 
						||
C<io.flush>)).
 | 
						||
 | 
						||
=item * B<"line":> line buffering; output is buffered until a newline
 | 
						||
is output or there is any input from some special files (such as a
 | 
						||
terminal device).
 | 
						||
 | 
						||
=back
 | 
						||
 | 
						||
For the last two cases, C<size> specifies the size of the buffer, in
 | 
						||
bytes. The default is an appropriate size.
 | 
						||
 | 
						||
 | 
						||
=head2 C<file:write (E<middot>E<middot>E<middot>)>
 | 
						||
 | 
						||
Writes the value of each of its arguments to the C<file>. The arguments
 | 
						||
must be strings or numbers. To write other values, use C<tostring> or
 | 
						||
C<string.format> before C<write>.
 | 
						||
 | 
						||
=head2 5.8 - Operating System Facilities
 | 
						||
 | 
						||
This library is implemented through table C<os>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<os.clock ()>
 | 
						||
 | 
						||
Returns an approximation of the amount in seconds of CPU time used by
 | 
						||
the program.
 | 
						||
 | 
						||
 | 
						||
=head2 C<os.date ([format [, time]])>
 | 
						||
 | 
						||
Returns a string or a table containing date and time, formatted
 | 
						||
according to the given string C<format>.
 | 
						||
 | 
						||
If the C<time> argument is present, this is the time to be formatted
 | 
						||
(see the C<os.time> function for a description of this value).
 | 
						||
Otherwise, C<date> formats the current time.
 | 
						||
 | 
						||
If C<format> starts with 'C<!>', then the date is formatted in
 | 
						||
Coordinated Universal Time. After this optional character, if C<format>
 | 
						||
is the string "C<*t>", then C<date> returns a table with the following
 | 
						||
fields: C<year> (four digits), C<month> (1--12), C<day> (1--31),
 | 
						||
C<hour> (0--23), C<min> (0--59), C<sec> (0--61), C<wday> (weekday,
 | 
						||
Sunday is 1), C<yday> (day of the year), and C<isdst> (daylight saving
 | 
						||
flag, a boolean).
 | 
						||
 | 
						||
If C<format> is not "C<*t>", then C<date> returns the date as a string,
 | 
						||
formatted according to the same rules as the C function C<strftime>.
 | 
						||
 | 
						||
When called without arguments, C<date> returns a reasonable date and
 | 
						||
time representation that depends on the host system and on the current
 | 
						||
locale (that is, C<os.date()> is equivalent to C<os.date("%c")>).
 | 
						||
 | 
						||
 | 
						||
=head2 C<os.difftime (t2, t1)>
 | 
						||
 | 
						||
Returns the number of seconds from time C<t1> to time C<t2>. In POSIX,
 | 
						||
Windows, and some other systems, this value is exactly C<t2>I<->C<t1>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<os.execute ([command])>
 | 
						||
 | 
						||
This function is equivalent to the C function C<system>. It passes
 | 
						||
C<command> to be executed by an operating system shell. It returns a
 | 
						||
status code, which is system-dependent. If C<command> is absent, then
 | 
						||
it returns nonzero if a shell is available and zero otherwise.
 | 
						||
 | 
						||
 | 
						||
=head2 C<os.exit ([code])>
 | 
						||
 | 
						||
Calls the C function C<exit>, with an optional C<code>, to terminate
 | 
						||
the host program. The default value for C<code> is the success code.
 | 
						||
 | 
						||
 | 
						||
=head2 C<os.getenv (varname)>
 | 
						||
 | 
						||
Returns the value of the process environment variable C<varname>, or
 | 
						||
B<nil> if the variable is not defined.
 | 
						||
 | 
						||
 | 
						||
=head2 C<os.remove (filename)>
 | 
						||
 | 
						||
Deletes the file or directory with the given name. Directories must be
 | 
						||
empty to be removed. If this function fails, it returns B<nil>, plus a
 | 
						||
string describing the error.
 | 
						||
 | 
						||
 | 
						||
=head2 C<os.rename (oldname, newname)>
 | 
						||
 | 
						||
Renames file or directory named C<oldname> to C<newname>. If this
 | 
						||
function fails, it returns B<nil>, plus a string describing the error.
 | 
						||
 | 
						||
 | 
						||
=head2 C<os.setlocale (locale [, category])>
 | 
						||
 | 
						||
Sets the current locale of the program. C<locale> is a string
 | 
						||
specifying a locale; C<category> is an optional string describing which
 | 
						||
category to change: C<"all">, C<"collate">, C<"ctype">, C<"monetary">,
 | 
						||
C<"numeric">, or C<"time">; the default category is C<"all">. The
 | 
						||
function returns the name of the new locale, or B<nil> if the request
 | 
						||
cannot be honored.
 | 
						||
 | 
						||
If C<locale> is the empty string, the current locale is set to an
 | 
						||
implementation-defined native locale. If C<locale> is the string
 | 
						||
"C<C>", the current locale is set to the standard C locale.
 | 
						||
 | 
						||
When called with B<nil> as the first argument, this function only
 | 
						||
returns the name of the current locale for the given category.
 | 
						||
 | 
						||
 | 
						||
=head2 C<os.time ([table])>
 | 
						||
 | 
						||
Returns the current time when called without arguments, or a time
 | 
						||
representing the date and time specified by the given table. This table
 | 
						||
must have fields C<year>, C<month>, and C<day>, and may have fields
 | 
						||
C<hour>, C<min>, C<sec>, and C<isdst> (for a description of these
 | 
						||
fields, see the C<os.date> function).
 | 
						||
 | 
						||
The returned value is a number, whose meaning depends on your system.
 | 
						||
In POSIX, Windows, and some other systems, this number counts the
 | 
						||
number of seconds since some given start time (the "epoch"). In other
 | 
						||
systems, the meaning is not specified, and the number returned by
 | 
						||
C<time> can be used only as an argument to C<date> and C<difftime>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<os.tmpname ()>
 | 
						||
 | 
						||
Returns a string with a file name that can be used for a temporary
 | 
						||
file. The file must be explicitly opened before its use and explicitly
 | 
						||
removed when no longer needed.
 | 
						||
 | 
						||
On some systems (POSIX), this function also creates a file with that
 | 
						||
name, to avoid security risks. (Someone else might create the file with
 | 
						||
wrong permissions in the time between getting the name and creating the
 | 
						||
file.) You still have to open the file to use it and to remove it (even
 | 
						||
if you do not use it).
 | 
						||
 | 
						||
When possible, you may prefer to use C<io.tmpfile>, which automatically
 | 
						||
removes the file when the program ends.
 | 
						||
 | 
						||
=head2 5.9 - The Debug Library
 | 
						||
 | 
						||
This library provides the functionality of the debug interface to Lua
 | 
						||
programs. You should exert care when using this library. The functions
 | 
						||
provided here should be used exclusively for debugging and similar
 | 
						||
tasks, such as profiling. Please resist the temptation to use them as a
 | 
						||
usual programming tool: they can be very slow. Moreover, several of
 | 
						||
these functions violate some assumptions about Lua code (e.g., that
 | 
						||
variables local to a function cannot be accessed from outside or that
 | 
						||
userdata metatables cannot be changed by Lua code) and therefore can
 | 
						||
compromise otherwise secure code.
 | 
						||
 | 
						||
All functions in this library are provided inside the C<debug> table.
 | 
						||
All functions that operate over a thread have an optional first
 | 
						||
argument which is the thread to operate over. The default is always the
 | 
						||
current thread.
 | 
						||
 | 
						||
 | 
						||
=head2 C<debug.debug ()>
 | 
						||
 | 
						||
Enters an interactive mode with the user, running each string that the
 | 
						||
user enters. Using simple commands and other debug facilities, the user
 | 
						||
can inspect global and local variables, change their values, evaluate
 | 
						||
expressions, and so on. A line containing only the word C<cont>
 | 
						||
finishes this function, so that the caller continues its execution.
 | 
						||
 | 
						||
Note that commands for C<debug.debug> are not lexically nested within
 | 
						||
any function, and so have no direct access to local variables.
 | 
						||
 | 
						||
 | 
						||
=head2 C<debug.getfenv (o)>
 | 
						||
 | 
						||
Returns the environment of object C<o>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<debug.gethook ([thread])>
 | 
						||
 | 
						||
Returns the current hook settings of the thread, as three values: the
 | 
						||
current hook function, the current hook mask, and the current hook
 | 
						||
count (as set by the C<debug.sethook> function).
 | 
						||
 | 
						||
 | 
						||
=head2 C<debug.getinfo ([thread,] function [, what])>
 | 
						||
 | 
						||
Returns a table with information about a function. You can give the
 | 
						||
function directly, or you can give a number as the value of
 | 
						||
C<function>, which means the function running at level C<function> of
 | 
						||
the call stack of the given thread: level 0 is the current function
 | 
						||
(C<getinfo> itself); level 1 is the function that called C<getinfo>;
 | 
						||
and so on. If C<function> is a number larger than the number of active
 | 
						||
functions, then C<getinfo> returns B<nil>.
 | 
						||
 | 
						||
The returned table can contain all the fields returned by
 | 
						||
C<lua_getinfo>, with the string C<what> describing which fields to fill
 | 
						||
in. The default for C<what> is to get all information available, except
 | 
						||
the table of valid lines. If present, the option 'C<f>' adds a field
 | 
						||
named C<func> with the function itself. If present, the option 'C<L>'
 | 
						||
adds a field named C<activelines> with the table of valid lines.
 | 
						||
 | 
						||
For instance, the expression C<debug.getinfo(1,"n").name> returns a
 | 
						||
table with a name for the current function, if a reasonable name can be
 | 
						||
found, and the expression C<debug.getinfo(print)> returns a table with
 | 
						||
all available information about the C<print> function.
 | 
						||
 | 
						||
 | 
						||
=head2 C<debug.getlocal ([thread,] level, local)>
 | 
						||
 | 
						||
This function returns the name and the value of the local variable with
 | 
						||
index C<local> of the function at level C<level> of the stack. (The
 | 
						||
first parameter or local variable has index 1, and so on, until the
 | 
						||
last active local variable.) The function returns B<nil> if there is no
 | 
						||
local variable with the given index, and raises an error when called
 | 
						||
with a C<level> out of range. (You can call C<debug.getinfo> to check
 | 
						||
whether the level is valid.)
 | 
						||
 | 
						||
Variable names starting with 'C<(>' (open parentheses) represent
 | 
						||
internal variables (loop control variables, temporaries, and C function
 | 
						||
locals).
 | 
						||
 | 
						||
 | 
						||
=head2 C<debug.getmetatable (object)>
 | 
						||
 | 
						||
Returns the metatable of the given C<object> or B<nil> if it does not
 | 
						||
have a metatable.
 | 
						||
 | 
						||
 | 
						||
=head2 C<debug.getregistry ()>
 | 
						||
 | 
						||
Returns the registry table (see E<sect>3.5).
 | 
						||
 | 
						||
 | 
						||
=head2 C<debug.getupvalue (func, up)>
 | 
						||
 | 
						||
This function returns the name and the value of the upvalue with index
 | 
						||
C<up> of the function C<func>. The function returns B<nil> if there is
 | 
						||
no upvalue with the given index.
 | 
						||
 | 
						||
 | 
						||
=head2 C<debug.setfenv (object, table)>
 | 
						||
 | 
						||
Sets the environment of the given C<object> to the given C<table>.
 | 
						||
Returns C<object>.
 | 
						||
 | 
						||
 | 
						||
=head2 C<debug.sethook ([thread,] hook, mask [, count])>
 | 
						||
 | 
						||
Sets the given function as a hook. The string C<mask> and the number
 | 
						||
C<count> describe when the hook will be called. The string mask may
 | 
						||
have the following characters, with the given meaning:
 | 
						||
 | 
						||
=over
 | 
						||
 | 
						||
=item * B<C<"c">:> the hook is called every time Lua calls a function;
 | 
						||
 | 
						||
=item * B<C<"r">:> the hook is called every time Lua returns from a
 | 
						||
function;
 | 
						||
 | 
						||
=item * B<C<"l">:> the hook is called every time Lua enters a new line
 | 
						||
of code.
 | 
						||
 | 
						||
=back
 | 
						||
 | 
						||
With a C<count> different from zero, the hook is called after every
 | 
						||
C<count> instructions.
 | 
						||
 | 
						||
When called without arguments, C<debug.sethook> turns off the hook.
 | 
						||
 | 
						||
When the hook is called, its first parameter is a string describing the
 | 
						||
event that has triggered its call: C<"call">, C<"return"> (or C<"tail
 | 
						||
return">, when simulating a return from a tail call), C<"line">, and
 | 
						||
C<"count">. For line events, the hook also gets the new line number as
 | 
						||
its second parameter. Inside a hook, you can call C<getinfo> with level
 | 
						||
2 to get more information about the running function (level 0 is the
 | 
						||
C<getinfo> function, and level 1 is the hook function), unless the
 | 
						||
event is C<"tail return">. In this case, Lua is only simulating the
 | 
						||
return, and a call to C<getinfo> will return invalid data.
 | 
						||
 | 
						||
 | 
						||
=head2 C<debug.setlocal ([thread,] level, local, value)>
 | 
						||
 | 
						||
This function assigns the value C<value> to the local variable with
 | 
						||
index C<local> of the function at level C<level> of the stack. The
 | 
						||
function returns B<nil> if there is no local variable with the given
 | 
						||
index, and raises an error when called with a C<level> out of range.
 | 
						||
(You can call C<getinfo> to check whether the level is valid.)
 | 
						||
Otherwise, it returns the name of the local variable.
 | 
						||
 | 
						||
 | 
						||
=head2 C<debug.setmetatable (object, table)>
 | 
						||
 | 
						||
Sets the metatable for the given C<object> to the given C<table> (which
 | 
						||
can be B<nil>).
 | 
						||
 | 
						||
 | 
						||
=head2 C<debug.setupvalue (func, up, value)>
 | 
						||
 | 
						||
This function assigns the value C<value> to the upvalue with index
 | 
						||
C<up> of the function C<func>. The function returns B<nil> if there is
 | 
						||
no upvalue with the given index. Otherwise, it returns the name of the
 | 
						||
upvalue.
 | 
						||
 | 
						||
 | 
						||
=head2 C<debug.traceback ([thread,] [message [, level]])>
 | 
						||
 | 
						||
Returns a string with a traceback of the call stack. An optional
 | 
						||
C<message> string is appended at the beginning of the traceback. An
 | 
						||
optional C<level> number tells at which level to start the traceback
 | 
						||
(default is 1, the function calling C<traceback>).
 | 
						||
 | 
						||
=head1 6 - Lua Stand-alone
 | 
						||
 | 
						||
Although Lua has been designed as an extension language, to be embedded
 | 
						||
in a host C program, it is also frequently used as a stand-alone
 | 
						||
language. An interpreter for Lua as a stand-alone language, called
 | 
						||
simply C<lua>, is provided with the standard distribution. The
 | 
						||
stand-alone interpreter includes all standard libraries, including the
 | 
						||
debug library. Its usage is:
 | 
						||
 | 
						||
     lua [options] [script [args]]
 | 
						||
 | 
						||
The options are:
 | 
						||
 | 
						||
=over
 | 
						||
 | 
						||
=item * B<C<-e I<stat>>:> executes string I<stat>;
 | 
						||
 | 
						||
=item * B<C<-l I<mod>>:> "requires" I<mod>;
 | 
						||
 | 
						||
=item * B<C<-i>:> enters interactive mode after running I<script>;
 | 
						||
 | 
						||
=item * B<C<-v>:> prints version information;
 | 
						||
 | 
						||
=item * B<C<-->:> stops handling options;
 | 
						||
 | 
						||
=item * B<C<->:> executes C<stdin> as a file and stops handling
 | 
						||
options.
 | 
						||
 | 
						||
=back
 | 
						||
 | 
						||
After handling its options, C<lua> runs the given I<script>, passing to
 | 
						||
it the given I<args> as string arguments. When called without
 | 
						||
arguments, C<lua> behaves as C<lua -v -i> when the standard input
 | 
						||
(C<stdin>) is a terminal, and as C<lua -> otherwise.
 | 
						||
 | 
						||
Before running any argument, the interpreter checks for an environment
 | 
						||
variable C<LUA_INIT>. If its format is C<@I<filename>>, then C<lua>
 | 
						||
executes the file. Otherwise, C<lua> executes the string itself.
 | 
						||
 | 
						||
All options are handled in order, except C<-i>. For instance, an
 | 
						||
invocation like
 | 
						||
 | 
						||
     $ lua -e'a=1' -e 'print(a)' script.lua
 | 
						||
 | 
						||
will first set C<a> to 1, then print the value of C<a> (which is
 | 
						||
'C<1>'), and finally run the file C<script.lua> with no arguments.
 | 
						||
(Here C<$> is the shell prompt. Your prompt may be different.)
 | 
						||
 | 
						||
Before starting to run the script, C<lua> collects all arguments in the
 | 
						||
command line in a global table called C<arg>. The script name is stored
 | 
						||
at index 0, the first argument after the script name goes to index 1,
 | 
						||
and so on. Any arguments before the script name (that is, the
 | 
						||
interpreter name plus the options) go to negative indices. For
 | 
						||
instance, in the call
 | 
						||
 | 
						||
     $ lua -la b.lua t1 t2
 | 
						||
 | 
						||
the interpreter first runs the file C<a.lua>, then creates a table
 | 
						||
 | 
						||
     arg = { [-2] = "lua", [-1] = "-la",
 | 
						||
             [0] = "b.lua",
 | 
						||
             [1] = "t1", [2] = "t2" }
 | 
						||
 | 
						||
and finally runs the file C<b.lua>. The script is called with
 | 
						||
C<arg[1]>, C<arg[2]>, E<middot>E<middot>E<middot> as arguments; it can
 | 
						||
also access these arguments with the vararg expression 'C<...>'.
 | 
						||
 | 
						||
In interactive mode, if you write an incomplete statement, the
 | 
						||
interpreter waits for its completion by issuing a different prompt.
 | 
						||
 | 
						||
If the global variable C<_PROMPT> contains a string, then its value is
 | 
						||
used as the prompt. Similarly, if the global variable C<_PROMPT2>
 | 
						||
contains a string, its value is used as the secondary prompt (issued
 | 
						||
during incomplete statements). Therefore, both prompts can be changed
 | 
						||
directly on the command line or in any Lua programs by assigning to
 | 
						||
C<_PROMPT>. See the next example:
 | 
						||
 | 
						||
     $ lua -e"_PROMPT='myprompt> '" -i
 | 
						||
 | 
						||
(The outer pair of quotes is for the shell, the inner pair is for Lua.)
 | 
						||
Note the use of C<-i> to enter interactive mode; otherwise, the program
 | 
						||
would just end silently right after the assignment to C<_PROMPT>.
 | 
						||
 | 
						||
To allow the use of Lua as a script interpreter in Unix systems, the
 | 
						||
stand-alone interpreter skips the first line of a chunk if it starts
 | 
						||
with C<#>. Therefore, Lua scripts can be made into executable programs
 | 
						||
by using C<chmod +x> and the C<#!> form, as in
 | 
						||
 | 
						||
     #!/usr/local/bin/lua
 | 
						||
 | 
						||
(Of course, the location of the Lua interpreter may be different in
 | 
						||
your machine. If C<lua> is in your C<PATH>, then
 | 
						||
 | 
						||
     #!/usr/bin/env lua
 | 
						||
 | 
						||
is a more portable solution.)
 | 
						||
 | 
						||
=head1 7 - Incompatibilities with the Previous Version
 | 
						||
 | 
						||
Here we list the incompatibilities that you may find when moving a
 | 
						||
program from Lua 5.0 to Lua 5.1. You can avoid most of the
 | 
						||
incompatibilities compiling Lua with appropriate options (see file
 | 
						||
C<luaconf.h>). However, all these compatibility options will be removed
 | 
						||
in the next version of Lua.
 | 
						||
 | 
						||
=head2 7.1 - Changes in the Language
 | 
						||
 | 
						||
=over
 | 
						||
 | 
						||
=item * The vararg system changed from the pseudo-argument C<arg> with
 | 
						||
a table with the extra arguments to the vararg expression. (See
 | 
						||
compile-time option C<LUA_COMPAT_VARARG> in C<luaconf.h>.)
 | 
						||
 | 
						||
=item * There was a subtle change in the scope of the implicit
 | 
						||
variables of the B<for> statement and for the B<repeat> statement.
 | 
						||
 | 
						||
=item * The long string/long comment syntax (C<[[I<string>]]>) does not
 | 
						||
allow nesting. You can use the new syntax (C<[=[I<string>]=]>) in these
 | 
						||
cases. (See compile-time option C<LUA_COMPAT_LSTR> in C<luaconf.h>.)
 | 
						||
 | 
						||
=back
 | 
						||
 | 
						||
=head2 7.2 - Changes in the Libraries
 | 
						||
 | 
						||
=over
 | 
						||
 | 
						||
=item * Function C<string.gfind> was renamed C<string.gmatch>. (See
 | 
						||
compile-time option C<LUA_COMPAT_GFIND> in C<luaconf.h>.)
 | 
						||
 | 
						||
=item * When C<string.gsub> is called with a function as its third
 | 
						||
argument, whenever this function returns B<nil> or B<false> the
 | 
						||
replacement string is the whole match, instead of the empty string.
 | 
						||
 | 
						||
=item * Function C<table.setn> was deprecated. Function C<table.getn>
 | 
						||
corresponds to the new length operator (C<#>); use the operator instead
 | 
						||
of the function. (See compile-time option C<LUA_COMPAT_GETN> in
 | 
						||
C<luaconf.h>.)
 | 
						||
 | 
						||
=item * Function C<loadlib> was renamed C<package.loadlib>. (See
 | 
						||
compile-time option C<LUA_COMPAT_LOADLIB> in C<luaconf.h>.)
 | 
						||
 | 
						||
=item * Function C<math.mod> was renamed C<math.fmod>. (See
 | 
						||
compile-time option C<LUA_COMPAT_MOD> in C<luaconf.h>.)
 | 
						||
 | 
						||
=item * Functions C<table.foreach> and C<table.foreachi> are
 | 
						||
deprecated. You can use a for loop with C<pairs> or C<ipairs> instead.
 | 
						||
 | 
						||
=item * There were substantial changes in function C<require> due to
 | 
						||
the new module system. However, the new behavior is mostly compatible
 | 
						||
with the old, but C<require> gets the path from C<package.path> instead
 | 
						||
of from C<LUA_PATH>.
 | 
						||
 | 
						||
=item * Function C<collectgarbage> has different arguments. Function
 | 
						||
C<gcinfo> is deprecated; use C<collectgarbage("count")> instead.
 | 
						||
 | 
						||
=back
 | 
						||
 | 
						||
=head2 7.3 - Changes in the API
 | 
						||
 | 
						||
=over
 | 
						||
 | 
						||
=item * The C<luaopen_*> functions (to open libraries) cannot be called
 | 
						||
directly, like a regular C function. They must be called through Lua,
 | 
						||
like a Lua function.
 | 
						||
 | 
						||
=item * Function C<lua_open> was replaced by C<lua_newstate> to allow
 | 
						||
the user to set a memory-allocation function. You can use
 | 
						||
C<luaL_newstate> from the standard library to create a state with a
 | 
						||
standard allocation function (based on C<realloc>).
 | 
						||
 | 
						||
=item * Functions C<luaL_getn> and C<luaL_setn> (from the auxiliary
 | 
						||
library) are deprecated. Use C<lua_objlen> instead of C<luaL_getn> and
 | 
						||
nothing instead of C<luaL_setn>.
 | 
						||
 | 
						||
=item * Function C<luaL_openlib> was replaced by C<luaL_register>.
 | 
						||
 | 
						||
=item * Function C<luaL_checkudata> now throws an error when the given
 | 
						||
value is not a userdata of the expected type. (In Lua 5.0 it returned
 | 
						||
C<NULL>.)
 | 
						||
 | 
						||
=back
 | 
						||
 | 
						||
=head1 8 - The Complete Syntax of Lua
 | 
						||
 | 
						||
Here is the complete syntax of Lua in extended BNF. (It does not
 | 
						||
describe operator precedences.)
 | 
						||
 | 
						||
	chunk ::= {stat [`;´]} [laststat [`;´]]
 | 
						||
 
 | 
						||
	block ::= chunk
 | 
						||
 
 | 
						||
	stat ::=  varlist `=´ explist | 
 | 
						||
		 functioncall | 
 | 
						||
		 do block end | 
 | 
						||
		 while exp do block end | 
 | 
						||
		 repeat block until exp | 
 | 
						||
		 if exp then block {elseif exp then block} [else block] end | 
 | 
						||
		 for Name `=´ exp `,´ exp [`,´ exp] do block end | 
 | 
						||
		 for namelist in explist do block end | 
 | 
						||
		 function funcname funcbody | 
 | 
						||
		 local function Name funcbody | 
 | 
						||
		 local namelist [`=´ explist] 
 | 
						||
 
 | 
						||
	laststat ::= return [explist] | break
 | 
						||
 
 | 
						||
	funcname ::= Name {`.´ Name} [`:´ Name]
 | 
						||
 
 | 
						||
	varlist ::= var {`,´ var}
 | 
						||
 
 | 
						||
	var ::=  Name | prefixexp `[´ exp `]´ | prefixexp `.´ Name 
 | 
						||
 
 | 
						||
	namelist ::= Name {`,´ Name}
 | 
						||
 
 | 
						||
	explist ::= {exp `,´} exp
 | 
						||
 
 | 
						||
	exp ::=  nil | false | true | Number | String | `...´ | function | 
 | 
						||
		 prefixexp | tableconstructor | exp binop exp | unop exp 
 | 
						||
 
 | 
						||
	prefixexp ::= var | functioncall | `(´ exp `)´
 | 
						||
 
 | 
						||
	functioncall ::=  prefixexp args | prefixexp `:´ Name args 
 | 
						||
 
 | 
						||
	args ::=  `(´ [explist] `)´ | tableconstructor | String 
 | 
						||
 
 | 
						||
	function ::= function funcbody
 | 
						||
 
 | 
						||
	funcbody ::= `(´ [parlist] `)´ block end
 | 
						||
 
 | 
						||
	parlist ::= namelist [`,´ `...´] | `...´
 | 
						||
 
 | 
						||
	tableconstructor ::= `{´ [fieldlist] `}´
 | 
						||
 
 | 
						||
	fieldlist ::= field {fieldsep field} [fieldsep]
 | 
						||
 
 | 
						||
	field ::= `[´ exp `]´ `=´ exp | Name `=´ exp | exp
 | 
						||
 
 | 
						||
	fieldsep ::= `,´ | `;´
 | 
						||
 
 | 
						||
	binop ::= `+´ | `-´ | `*´ | `/´ | `^´ | `%´ | `..´ | 
 | 
						||
		 `<´ | `<=´ | `>´ | `>=´ | `==´ | `~=´ | 
 | 
						||
		 and | or
 | 
						||
 
 | 
						||
	unop ::= `-´ | not | `#E<acute>
 | 
						||
 | 
						||
 | 
						||
Last update: Mon Feb 13 18:54:19 BRST 2012
 | 
						||
 | 
						||
=cut
 |