Merge pull request #13 from natano/update-lua-5.1.5
Update lua from 5.1.1 to 5.1.5
This commit is contained in:
Vendored
+1
-1
@@ -9,7 +9,7 @@ For details and rationale, see http://www.lua.org/license.html .
|
|||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
|
|
||||||
Copyright (C) 1994-2006 Lua.org, PUC-Rio.
|
Copyright (C) 1994-2012 Lua.org, PUC-Rio.
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
Vendored
+1
-1
@@ -14,7 +14,7 @@ HISTORY for Lua 5.1
|
|||||||
API:
|
API:
|
||||||
+ new functions: lua_createtable, lua_get(set)field, lua_push(to)integer.
|
+ new functions: lua_createtable, lua_get(set)field, lua_push(to)integer.
|
||||||
+ user supplies memory allocator (lua_open becomes lua_newstate).
|
+ user supplies memory allocator (lua_open becomes lua_newstate).
|
||||||
+ luaopen_* functionst must be called through Lua.
|
+ luaopen_* functions must be called through Lua.
|
||||||
Implementation:
|
Implementation:
|
||||||
+ new configuration scheme via luaconf.h.
|
+ new configuration scheme via luaconf.h.
|
||||||
+ incremental garbage collection.
|
+ incremental garbage collection.
|
||||||
|
|||||||
Vendored
+6
-3
@@ -8,7 +8,10 @@ INSTALL for Lua 5.1
|
|||||||
Building Lua on Unix systems should be very easy. First do "make" and
|
Building Lua on Unix systems should be very easy. First do "make" and
|
||||||
see if your platform is listed. If so, just do "make xxx", where xxx
|
see if your platform is listed. If so, just do "make xxx", where xxx
|
||||||
is your platform name. The platforms currently supported are:
|
is your platform name. The platforms currently supported are:
|
||||||
ansi bsd generic linux macosx mingw posix solaris
|
aix ansi bsd freebsd generic linux macosx mingw posix solaris
|
||||||
|
|
||||||
|
If your platform is not listed, try the closest one or posix, generic,
|
||||||
|
ansi, in this order.
|
||||||
|
|
||||||
See below for customization instructions and for instructions on how
|
See below for customization instructions and for instructions on how
|
||||||
to build with other Windows compilers.
|
to build with other Windows compilers.
|
||||||
@@ -81,8 +84,8 @@ INSTALL for Lua 5.1
|
|||||||
|
|
||||||
compiler: library, luac.c print.c
|
compiler: library, luac.c print.c
|
||||||
|
|
||||||
If you use Visual Studio .NET, you can use etc/luavs.bat
|
If you use Visual Studio .NET, you can use etc/luavs.bat in its
|
||||||
in its "Command Prompt".
|
"Command Prompt".
|
||||||
|
|
||||||
If all you want is to build the Lua interpreter, you may put all .c files
|
If all you want is to build the Lua interpreter, you may put all .c files
|
||||||
in a single project, except for luac.c and print.c. Or just use etc/all.c.
|
in a single project, except for luac.c and print.c. Or just use etc/all.c.
|
||||||
|
|||||||
Vendored
+2
-2
@@ -24,8 +24,8 @@ See HISTORY for a summary of changes since the last released version.
|
|||||||
* Installation
|
* Installation
|
||||||
------------
|
------------
|
||||||
Lua is implemented in pure ANSI C, and compiles unmodified in all known
|
Lua is implemented in pure ANSI C, and compiles unmodified in all known
|
||||||
platforms that have an ANSI C compiler. Under Unix, simply typing "make"
|
platforms that have an ANSI C compiler. In most Unix-like platforms, simply
|
||||||
should work. See INSTALL for detailed instructions.
|
do "make" with a suitable target. See INSTALL for detailed instructions.
|
||||||
|
|
||||||
* Origin
|
* Origin
|
||||||
------
|
------
|
||||||
|
|||||||
Vendored
+151
-83
@@ -1,122 +1,163 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||||
<HTML>
|
<HTML>
|
||||||
<HEAD>
|
<HEAD>
|
||||||
<TITLE>Lua 5.1 reference manual - contents</TITLE>
|
<TITLE>Lua 5.1 Reference Manual - contents</TITLE>
|
||||||
<LINK REL="stylesheet" TYPE="text/css" HREF="lua.css">
|
<LINK REL="stylesheet" TYPE="text/css" HREF="lua.css">
|
||||||
<style type="text/css">
|
<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=utf-8">
|
||||||
|
<STYLE TYPE="text/css">
|
||||||
ul {
|
ul {
|
||||||
list-style-type: none ;
|
list-style-type: none ;
|
||||||
list-style-position: outside ;
|
|
||||||
}
|
}
|
||||||
</style>
|
</STYLE>
|
||||||
</HEAD>
|
</HEAD>
|
||||||
|
|
||||||
<BODY>
|
<BODY>
|
||||||
|
|
||||||
<HR>
|
<HR>
|
||||||
<H1>
|
<H1>
|
||||||
<A HREF="http://www.lua.org/"><IMG SRC="logo.gif" ALT="Lua" BORDER=0></A>
|
<A HREF="http://www.lua.org/"><IMG SRC="logo.gif" ALT="" BORDER=0></A>
|
||||||
Reference manual for Lua 5.1
|
Lua 5.1 Reference Manual
|
||||||
</H1>
|
</H1>
|
||||||
|
|
||||||
|
<P>
|
||||||
|
The reference manual is the official definition of the Lua language.
|
||||||
|
For a complete introduction to Lua programming, see the book
|
||||||
|
<A HREF="http://www.lua.org/docs.html#pil">Programming in Lua</A>.
|
||||||
|
|
||||||
|
<P>
|
||||||
|
This manual is also available as a book:
|
||||||
|
<BLOCKQUOTE>
|
||||||
|
<A HREF="http://www.amazon.com/exec/obidos/ASIN/8590379833/lua-indexmanual-20">
|
||||||
|
<IMG SRC="cover.png" ALT="" TITLE="buy from Amazon" BORDER=1 ALIGN="left" HSPACE=12>
|
||||||
|
</A>
|
||||||
|
<B>Lua 5.1 Reference Manual</B>
|
||||||
|
<BR>by R. Ierusalimschy, L. H. de Figueiredo, W. Celes
|
||||||
|
<BR>Lua.org, August 2006
|
||||||
|
<BR>ISBN 85-903798-3-3
|
||||||
|
<BR CLEAR="all">
|
||||||
|
</BLOCKQUOTE>
|
||||||
|
|
||||||
|
<P>
|
||||||
|
<A HREF="http://www.amazon.com/exec/obidos/ASIN/8590379833/lua-indexmanual-20">Buy a copy</A>
|
||||||
|
of this book and
|
||||||
|
<A HREF="http://www.lua.org/donations.html">help to support</A>
|
||||||
|
the Lua project.
|
||||||
|
|
||||||
|
<P>
|
||||||
|
<A HREF="manual.html">start</A>
|
||||||
|
·
|
||||||
<A HREF="#contents">contents</A>
|
<A HREF="#contents">contents</A>
|
||||||
·
|
·
|
||||||
<A HREF="#index">index</A>
|
<A HREF="#index">index</A>
|
||||||
|
·
|
||||||
|
<A HREF="http://www.lua.org/manual/">other versions</A>
|
||||||
<HR>
|
<HR>
|
||||||
<P>
|
<SMALL>
|
||||||
|
Copyright © 2006–2012 Lua.org, PUC-Rio.
|
||||||
|
Freely available under the terms of the
|
||||||
|
<A HREF="http://www.lua.org/license.html">Lua license</A>.
|
||||||
|
</SMALL>
|
||||||
|
|
||||||
<H2><A NAME="contents">Contents</A></H2>
|
<H2><A NAME="contents">Contents</A></H2>
|
||||||
<UL style="padding: 0">
|
<UL style="padding: 0">
|
||||||
<LI><A HREF="manual.html">Top</A>
|
<LI><A HREF="manual.html">1 – Introduction</A>
|
||||||
<LI><A HREF="manual.html#1">1 - Introduction</A>
|
<P>
|
||||||
<LI><A HREF="manual.html#2">2 - The Language</A>
|
<LI><A HREF="manual.html#2">2 – The Language</A>
|
||||||
<UL>
|
<UL>
|
||||||
<LI><A HREF="manual.html#2.1">2.1 - Lexical Conventions</A>
|
<LI><A HREF="manual.html#2.1">2.1 – Lexical Conventions</A>
|
||||||
<LI><A HREF="manual.html#2.2">2.2 - Values and Types</A>
|
<LI><A HREF="manual.html#2.2">2.2 – Values and Types</A>
|
||||||
<UL>
|
<UL>
|
||||||
<LI><A HREF="manual.html#2.2.1">2.2.1 - Coercion</A>
|
<LI><A HREF="manual.html#2.2.1">2.2.1 – Coercion</A>
|
||||||
</UL>
|
</UL>
|
||||||
<LI><A HREF="manual.html#2.3">2.3 - Variables</A>
|
<LI><A HREF="manual.html#2.3">2.3 – Variables</A>
|
||||||
<LI><A HREF="manual.html#2.4">2.4 - Statements</A>
|
<LI><A HREF="manual.html#2.4">2.4 – Statements</A>
|
||||||
<UL>
|
<UL>
|
||||||
<LI><A HREF="manual.html#2.4.1">2.4.1 - Chunks</A>
|
<LI><A HREF="manual.html#2.4.1">2.4.1 – Chunks</A>
|
||||||
<LI><A HREF="manual.html#2.4.2">2.4.2 - Blocks</A>
|
<LI><A HREF="manual.html#2.4.2">2.4.2 – Blocks</A>
|
||||||
<LI><A HREF="manual.html#2.4.3">2.4.3 - Assignment</A>
|
<LI><A HREF="manual.html#2.4.3">2.4.3 – Assignment</A>
|
||||||
<LI><A HREF="manual.html#2.4.4">2.4.4 - Control Structures</A>
|
<LI><A HREF="manual.html#2.4.4">2.4.4 – Control Structures</A>
|
||||||
<LI><A HREF="manual.html#2.4.5">2.4.5 - For Statement</A>
|
<LI><A HREF="manual.html#2.4.5">2.4.5 – For Statement</A>
|
||||||
<LI><A HREF="manual.html#2.4.6">2.4.6 - Function Calls as Statements</A>
|
<LI><A HREF="manual.html#2.4.6">2.4.6 – Function Calls as Statements</A>
|
||||||
<LI><A HREF="manual.html#2.4.7">2.4.7 - Local Declarations</A>
|
<LI><A HREF="manual.html#2.4.7">2.4.7 – Local Declarations</A>
|
||||||
</UL>
|
</UL>
|
||||||
<LI><A HREF="manual.html#2.5">2.5 - Expressions</A>
|
<LI><A HREF="manual.html#2.5">2.5 – Expressions</A>
|
||||||
<UL>
|
<UL>
|
||||||
<LI><A HREF="manual.html#2.5.1">2.5.1 - Arithmetic Operators</A>
|
<LI><A HREF="manual.html#2.5.1">2.5.1 – Arithmetic Operators</A>
|
||||||
<LI><A HREF="manual.html#2.5.2">2.5.2 - Relational Operators</A>
|
<LI><A HREF="manual.html#2.5.2">2.5.2 – Relational Operators</A>
|
||||||
<LI><A HREF="manual.html#2.5.3">2.5.3 - Logical Operators</A>
|
<LI><A HREF="manual.html#2.5.3">2.5.3 – Logical Operators</A>
|
||||||
<LI><A HREF="manual.html#2.5.4">2.5.4 - Concatenation</A>
|
<LI><A HREF="manual.html#2.5.4">2.5.4 – Concatenation</A>
|
||||||
<LI><A HREF="manual.html#2.5.5">2.5.5 - The Length Operator</A>
|
<LI><A HREF="manual.html#2.5.5">2.5.5 – The Length Operator</A>
|
||||||
<LI><A HREF="manual.html#2.5.6">2.5.6 - Precedence</A>
|
<LI><A HREF="manual.html#2.5.6">2.5.6 – Precedence</A>
|
||||||
<LI><A HREF="manual.html#2.5.7">2.5.7 - Table Constructors</A>
|
<LI><A HREF="manual.html#2.5.7">2.5.7 – Table Constructors</A>
|
||||||
<LI><A HREF="manual.html#2.5.8">2.5.8 - Function Calls</A>
|
<LI><A HREF="manual.html#2.5.8">2.5.8 – Function Calls</A>
|
||||||
<LI><A HREF="manual.html#2.5.9">2.5.9 - Function Definitions</A>
|
<LI><A HREF="manual.html#2.5.9">2.5.9 – Function Definitions</A>
|
||||||
</UL>
|
</UL>
|
||||||
<LI><A HREF="manual.html#2.6">2.6 - Visibility Rules</A>
|
<LI><A HREF="manual.html#2.6">2.6 – Visibility Rules</A>
|
||||||
<LI><A HREF="manual.html#2.7">2.7 - Error Handling</A>
|
<LI><A HREF="manual.html#2.7">2.7 – Error Handling</A>
|
||||||
<LI><A HREF="manual.html#2.8">2.8 - Metatables</A>
|
<LI><A HREF="manual.html#2.8">2.8 – Metatables</A>
|
||||||
<LI><A HREF="manual.html#2.9">2.9 - Environments</A>
|
<LI><A HREF="manual.html#2.9">2.9 – Environments</A>
|
||||||
<LI><A HREF="manual.html#2.10">2.10 - Garbage Collection</A>
|
<LI><A HREF="manual.html#2.10">2.10 – Garbage Collection</A>
|
||||||
<UL>
|
<UL>
|
||||||
<LI><A HREF="manual.html#2.10.1">2.10.1 - Garbage-Collection Metamethods</A>
|
<LI><A HREF="manual.html#2.10.1">2.10.1 – Garbage-Collection Metamethods</A>
|
||||||
<LI><A HREF="manual.html#2.10.2">2.10.2 - Weak Tables</A>
|
<LI><A HREF="manual.html#2.10.2">2.10.2 – Weak Tables</A>
|
||||||
</UL>
|
</UL>
|
||||||
<LI><A HREF="manual.html#2.11">2.11 - Coroutines</A>
|
<LI><A HREF="manual.html#2.11">2.11 – Coroutines</A>
|
||||||
</UL>
|
</UL>
|
||||||
<LI><A HREF="manual.html#3">3 - The Application Program Interface</A>
|
<P>
|
||||||
|
<LI><A HREF="manual.html#3">3 – The Application Program Interface</A>
|
||||||
<UL>
|
<UL>
|
||||||
<LI><A HREF="manual.html#3.1">3.1 - The Stack</A>
|
<LI><A HREF="manual.html#3.1">3.1 – The Stack</A>
|
||||||
<LI><A HREF="manual.html#3.2">3.2 - Stack Size</A>
|
<LI><A HREF="manual.html#3.2">3.2 – Stack Size</A>
|
||||||
<LI><A HREF="manual.html#3.3">3.3 - Pseudo-Indices</A>
|
<LI><A HREF="manual.html#3.3">3.3 – Pseudo-Indices</A>
|
||||||
<LI><A HREF="manual.html#3.4">3.4 - C Closures</A>
|
<LI><A HREF="manual.html#3.4">3.4 – C Closures</A>
|
||||||
<LI><A HREF="manual.html#3.5">3.5 - Registry</A>
|
<LI><A HREF="manual.html#3.5">3.5 – Registry</A>
|
||||||
<LI><A HREF="manual.html#3.6">3.6 - Error Handling in C</A>
|
<LI><A HREF="manual.html#3.6">3.6 – Error Handling in C</A>
|
||||||
<LI><A HREF="manual.html#3.7">3.7 - Functions and Types</A>
|
<LI><A HREF="manual.html#3.7">3.7 – Functions and Types</A>
|
||||||
<LI><A HREF="manual.html#3.8">3.8 - The Debug Interface</A>
|
<LI><A HREF="manual.html#3.8">3.8 – The Debug Interface</A>
|
||||||
</UL>
|
</UL>
|
||||||
<LI><A HREF="manual.html#4">4 - The Auxiliary Library</A>
|
<P>
|
||||||
|
<LI><A HREF="manual.html#4">4 – The Auxiliary Library</A>
|
||||||
<UL>
|
<UL>
|
||||||
<LI><A HREF="manual.html#4.1">4.1 - Functions and Types</A>
|
<LI><A HREF="manual.html#4.1">4.1 – Functions and Types</A>
|
||||||
</UL>
|
</UL>
|
||||||
<LI><A HREF="manual.html#5">5 - Standard Libraries</A>
|
<P>
|
||||||
|
<LI><A HREF="manual.html#5">5 – Standard Libraries</A>
|
||||||
<UL>
|
<UL>
|
||||||
<LI><A HREF="manual.html#5.1">5.1 - Basic Functions</A>
|
<LI><A HREF="manual.html#5.1">5.1 – Basic Functions</A>
|
||||||
<LI><A HREF="manual.html#5.2">5.2 - Coroutine Manipulation</A>
|
<LI><A HREF="manual.html#5.2">5.2 – Coroutine Manipulation</A>
|
||||||
<LI><A HREF="manual.html#5.3">5.3 - Modules</A>
|
<LI><A HREF="manual.html#5.3">5.3 – Modules</A>
|
||||||
<LI><A HREF="manual.html#5.4">5.4 - String Manipulation</A>
|
<LI><A HREF="manual.html#5.4">5.4 – String Manipulation</A>
|
||||||
<UL>
|
<UL>
|
||||||
<LI><A HREF="manual.html#5.4.1">5.4.1 - Patterns</A>
|
<LI><A HREF="manual.html#5.4.1">5.4.1 – Patterns</A>
|
||||||
</UL>
|
</UL>
|
||||||
<LI><A HREF="manual.html#5.5">5.5 - Table Manipulation</A>
|
<LI><A HREF="manual.html#5.5">5.5 – Table Manipulation</A>
|
||||||
<LI><A HREF="manual.html#5.6">5.6 - Mathematical Functions</A>
|
<LI><A HREF="manual.html#5.6">5.6 – Mathematical Functions</A>
|
||||||
<LI><A HREF="manual.html#5.7">5.7 - Input and Output Facilities</A>
|
<LI><A HREF="manual.html#5.7">5.7 – Input and Output Facilities</A>
|
||||||
<LI><A HREF="manual.html#5.8">5.8 - Operating System Facilities</A>
|
<LI><A HREF="manual.html#5.8">5.8 – Operating System Facilities</A>
|
||||||
<LI><A HREF="manual.html#5.9">5.9 - The Debug Library</A>
|
<LI><A HREF="manual.html#5.9">5.9 – The Debug Library</A>
|
||||||
</UL>
|
</UL>
|
||||||
<LI><A HREF="manual.html#6">6 - Lua Stand-alone</A>
|
<P>
|
||||||
<LI><A HREF="manual.html#7">7 - Incompatibilities with the Previous Version</A>
|
<LI><A HREF="manual.html#6">6 – Lua Stand-alone</A>
|
||||||
|
<P>
|
||||||
|
<LI><A HREF="manual.html#7">7 – Incompatibilities with the Previous Version</A>
|
||||||
<UL>
|
<UL>
|
||||||
<LI><A HREF="manual.html#7.1">7.1 - Changes in the Language</A>
|
<LI><A HREF="manual.html#7.1">7.1 – Changes in the Language</A>
|
||||||
<LI><A HREF="manual.html#7.2">7.2 - Changes in the Libraries</A>
|
<LI><A HREF="manual.html#7.2">7.2 – Changes in the Libraries</A>
|
||||||
<LI><A HREF="manual.html#7.3">7.3 - Changes in the API</A>
|
<LI><A HREF="manual.html#7.3">7.3 – Changes in the API</A>
|
||||||
</UL>
|
</UL>
|
||||||
<LI><A HREF="manual.html#8">8 - The Complete Syntax of Lua</A>
|
<P>
|
||||||
|
<LI><A HREF="manual.html#8">8 – The Complete Syntax of Lua</A>
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
<H2><A NAME="index">Index</A></H2>
|
<H2><A NAME="index">Index</A></H2>
|
||||||
<TABLE>
|
<TABLE WIDTH="100%">
|
||||||
<TR VALIGN="top">
|
<TR VALIGN="top">
|
||||||
<TD WIDTH="20%">
|
<TD>
|
||||||
<H3><A NAME="functions">Lua functions</A></H3>
|
<H3><A NAME="functions">Lua functions</A></H3>
|
||||||
<A HREF="manual.html#pdf-_G">_G</A><BR>
|
<A HREF="manual.html#pdf-_G">_G</A><BR>
|
||||||
<A HREF="manual.html#pdf-_VERSION">_VERSION</A><BR>
|
<A HREF="manual.html#pdf-_VERSION">_VERSION</A><BR>
|
||||||
|
<P>
|
||||||
|
|
||||||
<A HREF="manual.html#pdf-assert">assert</A><BR>
|
<A HREF="manual.html#pdf-assert">assert</A><BR>
|
||||||
<A HREF="manual.html#pdf-collectgarbage">collectgarbage</A><BR>
|
<A HREF="manual.html#pdf-collectgarbage">collectgarbage</A><BR>
|
||||||
<A HREF="manual.html#pdf-dofile">dofile</A><BR>
|
<A HREF="manual.html#pdf-dofile">dofile</A><BR>
|
||||||
@@ -144,16 +185,16 @@ Reference manual for Lua 5.1
|
|||||||
<A HREF="manual.html#pdf-type">type</A><BR>
|
<A HREF="manual.html#pdf-type">type</A><BR>
|
||||||
<A HREF="manual.html#pdf-unpack">unpack</A><BR>
|
<A HREF="manual.html#pdf-unpack">unpack</A><BR>
|
||||||
<A HREF="manual.html#pdf-xpcall">xpcall</A><BR>
|
<A HREF="manual.html#pdf-xpcall">xpcall</A><BR>
|
||||||
|
<P>
|
||||||
|
|
||||||
</TD>
|
|
||||||
<TD WIDTH="30%">
|
|
||||||
<H3> </H3>
|
|
||||||
<A HREF="manual.html#pdf-coroutine.create">coroutine.create</A><BR>
|
<A HREF="manual.html#pdf-coroutine.create">coroutine.create</A><BR>
|
||||||
<A HREF="manual.html#pdf-coroutine.resume">coroutine.resume</A><BR>
|
<A HREF="manual.html#pdf-coroutine.resume">coroutine.resume</A><BR>
|
||||||
<A HREF="manual.html#pdf-coroutine.running">coroutine.running</A><BR>
|
<A HREF="manual.html#pdf-coroutine.running">coroutine.running</A><BR>
|
||||||
<A HREF="manual.html#pdf-coroutine.status">coroutine.status</A><BR>
|
<A HREF="manual.html#pdf-coroutine.status">coroutine.status</A><BR>
|
||||||
<A HREF="manual.html#pdf-coroutine.wrap">coroutine.wrap</A><BR>
|
<A HREF="manual.html#pdf-coroutine.wrap">coroutine.wrap</A><BR>
|
||||||
<A HREF="manual.html#pdf-coroutine.yield">coroutine.yield</A><BR>
|
<A HREF="manual.html#pdf-coroutine.yield">coroutine.yield</A><BR>
|
||||||
|
<P>
|
||||||
|
|
||||||
<A HREF="manual.html#pdf-debug.debug">debug.debug</A><BR>
|
<A HREF="manual.html#pdf-debug.debug">debug.debug</A><BR>
|
||||||
<A HREF="manual.html#pdf-debug.getfenv">debug.getfenv</A><BR>
|
<A HREF="manual.html#pdf-debug.getfenv">debug.getfenv</A><BR>
|
||||||
<A HREF="manual.html#pdf-debug.gethook">debug.gethook</A><BR>
|
<A HREF="manual.html#pdf-debug.gethook">debug.gethook</A><BR>
|
||||||
@@ -168,6 +209,10 @@ Reference manual for Lua 5.1
|
|||||||
<A HREF="manual.html#pdf-debug.setmetatable">debug.setmetatable</A><BR>
|
<A HREF="manual.html#pdf-debug.setmetatable">debug.setmetatable</A><BR>
|
||||||
<A HREF="manual.html#pdf-debug.setupvalue">debug.setupvalue</A><BR>
|
<A HREF="manual.html#pdf-debug.setupvalue">debug.setupvalue</A><BR>
|
||||||
<A HREF="manual.html#pdf-debug.traceback">debug.traceback</A><BR>
|
<A HREF="manual.html#pdf-debug.traceback">debug.traceback</A><BR>
|
||||||
|
|
||||||
|
</TD>
|
||||||
|
<TD>
|
||||||
|
<H3> </H3>
|
||||||
<A HREF="manual.html#pdf-file:close">file:close</A><BR>
|
<A HREF="manual.html#pdf-file:close">file:close</A><BR>
|
||||||
<A HREF="manual.html#pdf-file:flush">file:flush</A><BR>
|
<A HREF="manual.html#pdf-file:flush">file:flush</A><BR>
|
||||||
<A HREF="manual.html#pdf-file:lines">file:lines</A><BR>
|
<A HREF="manual.html#pdf-file:lines">file:lines</A><BR>
|
||||||
@@ -175,6 +220,8 @@ Reference manual for Lua 5.1
|
|||||||
<A HREF="manual.html#pdf-file:seek">file:seek</A><BR>
|
<A HREF="manual.html#pdf-file:seek">file:seek</A><BR>
|
||||||
<A HREF="manual.html#pdf-file:setvbuf">file:setvbuf</A><BR>
|
<A HREF="manual.html#pdf-file:setvbuf">file:setvbuf</A><BR>
|
||||||
<A HREF="manual.html#pdf-file:write">file:write</A><BR>
|
<A HREF="manual.html#pdf-file:write">file:write</A><BR>
|
||||||
|
<P>
|
||||||
|
|
||||||
<A HREF="manual.html#pdf-io.close">io.close</A><BR>
|
<A HREF="manual.html#pdf-io.close">io.close</A><BR>
|
||||||
<A HREF="manual.html#pdf-io.flush">io.flush</A><BR>
|
<A HREF="manual.html#pdf-io.flush">io.flush</A><BR>
|
||||||
<A HREF="manual.html#pdf-io.input">io.input</A><BR>
|
<A HREF="manual.html#pdf-io.input">io.input</A><BR>
|
||||||
@@ -183,17 +230,22 @@ Reference manual for Lua 5.1
|
|||||||
<A HREF="manual.html#pdf-io.output">io.output</A><BR>
|
<A HREF="manual.html#pdf-io.output">io.output</A><BR>
|
||||||
<A HREF="manual.html#pdf-io.popen">io.popen</A><BR>
|
<A HREF="manual.html#pdf-io.popen">io.popen</A><BR>
|
||||||
<A HREF="manual.html#pdf-io.read">io.read</A><BR>
|
<A HREF="manual.html#pdf-io.read">io.read</A><BR>
|
||||||
|
<A HREF="manual.html#pdf-io.stderr">io.stderr</A><BR>
|
||||||
|
<A HREF="manual.html#pdf-io.stdin">io.stdin</A><BR>
|
||||||
|
<A HREF="manual.html#pdf-io.stdout">io.stdout</A><BR>
|
||||||
<A HREF="manual.html#pdf-io.tmpfile">io.tmpfile</A><BR>
|
<A HREF="manual.html#pdf-io.tmpfile">io.tmpfile</A><BR>
|
||||||
<A HREF="manual.html#pdf-io.type">io.type</A><BR>
|
<A HREF="manual.html#pdf-io.type">io.type</A><BR>
|
||||||
<A HREF="manual.html#pdf-io.write">io.write</A><BR>
|
<A HREF="manual.html#pdf-io.write">io.write</A><BR>
|
||||||
|
<P>
|
||||||
|
|
||||||
<A HREF="manual.html#pdf-math.abs">math.abs</A><BR>
|
<A HREF="manual.html#pdf-math.abs">math.abs</A><BR>
|
||||||
<A HREF="manual.html#pdf-math.acos">math.acos</A><BR>
|
<A HREF="manual.html#pdf-math.acos">math.acos</A><BR>
|
||||||
<A HREF="manual.html#pdf-math.asin">math.asin</A><BR>
|
<A HREF="manual.html#pdf-math.asin">math.asin</A><BR>
|
||||||
<A HREF="manual.html#pdf-math.atan2">math.atan2</A><BR>
|
|
||||||
<A HREF="manual.html#pdf-math.atan">math.atan</A><BR>
|
<A HREF="manual.html#pdf-math.atan">math.atan</A><BR>
|
||||||
|
<A HREF="manual.html#pdf-math.atan2">math.atan2</A><BR>
|
||||||
<A HREF="manual.html#pdf-math.ceil">math.ceil</A><BR>
|
<A HREF="manual.html#pdf-math.ceil">math.ceil</A><BR>
|
||||||
<A HREF="manual.html#pdf-math.cosh">math.cosh</A><BR>
|
|
||||||
<A HREF="manual.html#pdf-math.cos">math.cos</A><BR>
|
<A HREF="manual.html#pdf-math.cos">math.cos</A><BR>
|
||||||
|
<A HREF="manual.html#pdf-math.cosh">math.cosh</A><BR>
|
||||||
<A HREF="manual.html#pdf-math.deg">math.deg</A><BR>
|
<A HREF="manual.html#pdf-math.deg">math.deg</A><BR>
|
||||||
<A HREF="manual.html#pdf-math.exp">math.exp</A><BR>
|
<A HREF="manual.html#pdf-math.exp">math.exp</A><BR>
|
||||||
<A HREF="manual.html#pdf-math.floor">math.floor</A><BR>
|
<A HREF="manual.html#pdf-math.floor">math.floor</A><BR>
|
||||||
@@ -201,8 +253,8 @@ Reference manual for Lua 5.1
|
|||||||
<A HREF="manual.html#pdf-math.frexp">math.frexp</A><BR>
|
<A HREF="manual.html#pdf-math.frexp">math.frexp</A><BR>
|
||||||
<A HREF="manual.html#pdf-math.huge">math.huge</A><BR>
|
<A HREF="manual.html#pdf-math.huge">math.huge</A><BR>
|
||||||
<A HREF="manual.html#pdf-math.ldexp">math.ldexp</A><BR>
|
<A HREF="manual.html#pdf-math.ldexp">math.ldexp</A><BR>
|
||||||
<A HREF="manual.html#pdf-math.log10">math.log10</A><BR>
|
|
||||||
<A HREF="manual.html#pdf-math.log">math.log</A><BR>
|
<A HREF="manual.html#pdf-math.log">math.log</A><BR>
|
||||||
|
<A HREF="manual.html#pdf-math.log10">math.log10</A><BR>
|
||||||
<A HREF="manual.html#pdf-math.max">math.max</A><BR>
|
<A HREF="manual.html#pdf-math.max">math.max</A><BR>
|
||||||
<A HREF="manual.html#pdf-math.min">math.min</A><BR>
|
<A HREF="manual.html#pdf-math.min">math.min</A><BR>
|
||||||
<A HREF="manual.html#pdf-math.modf">math.modf</A><BR>
|
<A HREF="manual.html#pdf-math.modf">math.modf</A><BR>
|
||||||
@@ -211,11 +263,13 @@ Reference manual for Lua 5.1
|
|||||||
<A HREF="manual.html#pdf-math.rad">math.rad</A><BR>
|
<A HREF="manual.html#pdf-math.rad">math.rad</A><BR>
|
||||||
<A HREF="manual.html#pdf-math.random">math.random</A><BR>
|
<A HREF="manual.html#pdf-math.random">math.random</A><BR>
|
||||||
<A HREF="manual.html#pdf-math.randomseed">math.randomseed</A><BR>
|
<A HREF="manual.html#pdf-math.randomseed">math.randomseed</A><BR>
|
||||||
<A HREF="manual.html#pdf-math.sinh">math.sinh</A><BR>
|
|
||||||
<A HREF="manual.html#pdf-math.sin">math.sin</A><BR>
|
<A HREF="manual.html#pdf-math.sin">math.sin</A><BR>
|
||||||
|
<A HREF="manual.html#pdf-math.sinh">math.sinh</A><BR>
|
||||||
<A HREF="manual.html#pdf-math.sqrt">math.sqrt</A><BR>
|
<A HREF="manual.html#pdf-math.sqrt">math.sqrt</A><BR>
|
||||||
<A HREF="manual.html#pdf-math.tanh">math.tanh</A><BR>
|
|
||||||
<A HREF="manual.html#pdf-math.tan">math.tan</A><BR>
|
<A HREF="manual.html#pdf-math.tan">math.tan</A><BR>
|
||||||
|
<A HREF="manual.html#pdf-math.tanh">math.tanh</A><BR>
|
||||||
|
<P>
|
||||||
|
|
||||||
<A HREF="manual.html#pdf-os.clock">os.clock</A><BR>
|
<A HREF="manual.html#pdf-os.clock">os.clock</A><BR>
|
||||||
<A HREF="manual.html#pdf-os.date">os.date</A><BR>
|
<A HREF="manual.html#pdf-os.date">os.date</A><BR>
|
||||||
<A HREF="manual.html#pdf-os.difftime">os.difftime</A><BR>
|
<A HREF="manual.html#pdf-os.difftime">os.difftime</A><BR>
|
||||||
@@ -227,12 +281,17 @@ Reference manual for Lua 5.1
|
|||||||
<A HREF="manual.html#pdf-os.setlocale">os.setlocale</A><BR>
|
<A HREF="manual.html#pdf-os.setlocale">os.setlocale</A><BR>
|
||||||
<A HREF="manual.html#pdf-os.time">os.time</A><BR>
|
<A HREF="manual.html#pdf-os.time">os.time</A><BR>
|
||||||
<A HREF="manual.html#pdf-os.tmpname">os.tmpname</A><BR>
|
<A HREF="manual.html#pdf-os.tmpname">os.tmpname</A><BR>
|
||||||
|
<P>
|
||||||
|
|
||||||
<A HREF="manual.html#pdf-package.cpath">package.cpath</A><BR>
|
<A HREF="manual.html#pdf-package.cpath">package.cpath</A><BR>
|
||||||
<A HREF="manual.html#pdf-package.loaded">package.loaded</A><BR>
|
<A HREF="manual.html#pdf-package.loaded">package.loaded</A><BR>
|
||||||
|
<A HREF="manual.html#pdf-package.loaders">package.loaders</A><BR>
|
||||||
<A HREF="manual.html#pdf-package.loadlib">package.loadlib</A><BR>
|
<A HREF="manual.html#pdf-package.loadlib">package.loadlib</A><BR>
|
||||||
<A HREF="manual.html#pdf-package.path">package.path</A><BR>
|
<A HREF="manual.html#pdf-package.path">package.path</A><BR>
|
||||||
<A HREF="manual.html#pdf-package.preload">package.preload</A><BR>
|
<A HREF="manual.html#pdf-package.preload">package.preload</A><BR>
|
||||||
<A HREF="manual.html#pdf-package.seeall">package.seeall</A><BR>
|
<A HREF="manual.html#pdf-package.seeall">package.seeall</A><BR>
|
||||||
|
<P>
|
||||||
|
|
||||||
<A HREF="manual.html#pdf-string.byte">string.byte</A><BR>
|
<A HREF="manual.html#pdf-string.byte">string.byte</A><BR>
|
||||||
<A HREF="manual.html#pdf-string.char">string.char</A><BR>
|
<A HREF="manual.html#pdf-string.char">string.char</A><BR>
|
||||||
<A HREF="manual.html#pdf-string.dump">string.dump</A><BR>
|
<A HREF="manual.html#pdf-string.dump">string.dump</A><BR>
|
||||||
@@ -247,6 +306,8 @@ Reference manual for Lua 5.1
|
|||||||
<A HREF="manual.html#pdf-string.reverse">string.reverse</A><BR>
|
<A HREF="manual.html#pdf-string.reverse">string.reverse</A><BR>
|
||||||
<A HREF="manual.html#pdf-string.sub">string.sub</A><BR>
|
<A HREF="manual.html#pdf-string.sub">string.sub</A><BR>
|
||||||
<A HREF="manual.html#pdf-string.upper">string.upper</A><BR>
|
<A HREF="manual.html#pdf-string.upper">string.upper</A><BR>
|
||||||
|
<P>
|
||||||
|
|
||||||
<A HREF="manual.html#pdf-table.concat">table.concat</A><BR>
|
<A HREF="manual.html#pdf-table.concat">table.concat</A><BR>
|
||||||
<A HREF="manual.html#pdf-table.insert">table.insert</A><BR>
|
<A HREF="manual.html#pdf-table.insert">table.insert</A><BR>
|
||||||
<A HREF="manual.html#pdf-table.maxn">table.maxn</A><BR>
|
<A HREF="manual.html#pdf-table.maxn">table.maxn</A><BR>
|
||||||
@@ -254,7 +315,7 @@ Reference manual for Lua 5.1
|
|||||||
<A HREF="manual.html#pdf-table.sort">table.sort</A><BR>
|
<A HREF="manual.html#pdf-table.sort">table.sort</A><BR>
|
||||||
|
|
||||||
</TD>
|
</TD>
|
||||||
<TD WIDTH="25%">
|
<TD>
|
||||||
<H3>C API</H3>
|
<H3>C API</H3>
|
||||||
<A HREF="manual.html#lua_Alloc">lua_Alloc</A><BR>
|
<A HREF="manual.html#lua_Alloc">lua_Alloc</A><BR>
|
||||||
<A HREF="manual.html#lua_CFunction">lua_CFunction</A><BR>
|
<A HREF="manual.html#lua_CFunction">lua_CFunction</A><BR>
|
||||||
@@ -265,6 +326,8 @@ Reference manual for Lua 5.1
|
|||||||
<A HREF="manual.html#lua_Reader">lua_Reader</A><BR>
|
<A HREF="manual.html#lua_Reader">lua_Reader</A><BR>
|
||||||
<A HREF="manual.html#lua_State">lua_State</A><BR>
|
<A HREF="manual.html#lua_State">lua_State</A><BR>
|
||||||
<A HREF="manual.html#lua_Writer">lua_Writer</A><BR>
|
<A HREF="manual.html#lua_Writer">lua_Writer</A><BR>
|
||||||
|
<P>
|
||||||
|
|
||||||
<A HREF="manual.html#lua_atpanic">lua_atpanic</A><BR>
|
<A HREF="manual.html#lua_atpanic">lua_atpanic</A><BR>
|
||||||
<A HREF="manual.html#lua_call">lua_call</A><BR>
|
<A HREF="manual.html#lua_call">lua_call</A><BR>
|
||||||
<A HREF="manual.html#lua_checkstack">lua_checkstack</A><BR>
|
<A HREF="manual.html#lua_checkstack">lua_checkstack</A><BR>
|
||||||
@@ -296,6 +359,8 @@ Reference manual for Lua 5.1
|
|||||||
<A HREF="manual.html#lua_isfunction">lua_isfunction</A><BR>
|
<A HREF="manual.html#lua_isfunction">lua_isfunction</A><BR>
|
||||||
<A HREF="manual.html#lua_islightuserdata">lua_islightuserdata</A><BR>
|
<A HREF="manual.html#lua_islightuserdata">lua_islightuserdata</A><BR>
|
||||||
<A HREF="manual.html#lua_isnil">lua_isnil</A><BR>
|
<A HREF="manual.html#lua_isnil">lua_isnil</A><BR>
|
||||||
|
<A HREF="manual.html#lua_isnone">lua_isnone</A><BR>
|
||||||
|
<A HREF="manual.html#lua_isnoneornil">lua_isnoneornil</A><BR>
|
||||||
<A HREF="manual.html#lua_isnumber">lua_isnumber</A><BR>
|
<A HREF="manual.html#lua_isnumber">lua_isnumber</A><BR>
|
||||||
<A HREF="manual.html#lua_isstring">lua_isstring</A><BR>
|
<A HREF="manual.html#lua_isstring">lua_isstring</A><BR>
|
||||||
<A HREF="manual.html#lua_istable">lua_istable</A><BR>
|
<A HREF="manual.html#lua_istable">lua_istable</A><BR>
|
||||||
@@ -317,6 +382,7 @@ Reference manual for Lua 5.1
|
|||||||
<A HREF="manual.html#lua_pushfstring">lua_pushfstring</A><BR>
|
<A HREF="manual.html#lua_pushfstring">lua_pushfstring</A><BR>
|
||||||
<A HREF="manual.html#lua_pushinteger">lua_pushinteger</A><BR>
|
<A HREF="manual.html#lua_pushinteger">lua_pushinteger</A><BR>
|
||||||
<A HREF="manual.html#lua_pushlightuserdata">lua_pushlightuserdata</A><BR>
|
<A HREF="manual.html#lua_pushlightuserdata">lua_pushlightuserdata</A><BR>
|
||||||
|
<A HREF="manual.html#lua_pushliteral">lua_pushliteral</A><BR>
|
||||||
<A HREF="manual.html#lua_pushlstring">lua_pushlstring</A><BR>
|
<A HREF="manual.html#lua_pushlstring">lua_pushlstring</A><BR>
|
||||||
<A HREF="manual.html#lua_pushnil">lua_pushnil</A><BR>
|
<A HREF="manual.html#lua_pushnil">lua_pushnil</A><BR>
|
||||||
<A HREF="manual.html#lua_pushnumber">lua_pushnumber</A><BR>
|
<A HREF="manual.html#lua_pushnumber">lua_pushnumber</A><BR>
|
||||||
@@ -364,6 +430,8 @@ Reference manual for Lua 5.1
|
|||||||
<H3>auxiliary library</H3>
|
<H3>auxiliary library</H3>
|
||||||
<A HREF="manual.html#luaL_Buffer">luaL_Buffer</A><BR>
|
<A HREF="manual.html#luaL_Buffer">luaL_Buffer</A><BR>
|
||||||
<A HREF="manual.html#luaL_Reg">luaL_Reg</A><BR>
|
<A HREF="manual.html#luaL_Reg">luaL_Reg</A><BR>
|
||||||
|
<P>
|
||||||
|
|
||||||
<A HREF="manual.html#luaL_addchar">luaL_addchar</A><BR>
|
<A HREF="manual.html#luaL_addchar">luaL_addchar</A><BR>
|
||||||
<A HREF="manual.html#luaL_addlstring">luaL_addlstring</A><BR>
|
<A HREF="manual.html#luaL_addlstring">luaL_addlstring</A><BR>
|
||||||
<A HREF="manual.html#luaL_addsize">luaL_addsize</A><BR>
|
<A HREF="manual.html#luaL_addsize">luaL_addsize</A><BR>
|
||||||
@@ -417,12 +485,12 @@ Reference manual for Lua 5.1
|
|||||||
<P>
|
<P>
|
||||||
|
|
||||||
<HR>
|
<HR>
|
||||||
<SMALL>
|
<SMALL CLASS="footer">
|
||||||
Last update:
|
Last update:
|
||||||
Tue Jun 6 14:55:31 BRT 2006
|
Mon Feb 13 18:53:32 BRST 2012
|
||||||
</SMALL>
|
</SMALL>
|
||||||
<!--
|
<!--
|
||||||
Last change: reformatted index
|
Last change: revised for Lua 5.1.5
|
||||||
-->
|
-->
|
||||||
|
|
||||||
</BODY>
|
</BODY>
|
||||||
|
|||||||
Vendored
BIN
Binary file not shown.
|
After Width: | Height: | Size: 3.2 KiB |
Vendored
+2
-2
@@ -1,5 +1,5 @@
|
|||||||
.\" $Id: lua.1 23036 2006-09-25 07:35:34Z gmaynard $
|
.\" $Id: lua.man,v 1.11 2006/01/06 16:03:34 lhf Exp $
|
||||||
.TH LUA 1 "$Date: 2006-09-25 02:35:34 -0500 (Mon, 25 Sep 2006) $"
|
.TH LUA 1 "$Date: 2006/01/06 16:03:34 $"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
lua \- Lua interpreter
|
lua \- Lua interpreter
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|||||||
Vendored
+64
-3
@@ -1,17 +1,45 @@
|
|||||||
body {
|
body {
|
||||||
color: #000000 ;
|
color: #000000 ;
|
||||||
background-color: #FFFFFF ;
|
background-color: #FFFFFF ;
|
||||||
font-family: sans-serif ;
|
font-family: Helvetica, Arial, sans-serif ;
|
||||||
|
text-align: justify ;
|
||||||
|
margin-right: 30px ;
|
||||||
|
margin-left: 30px ;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1, h2, h3, h4 {
|
||||||
|
font-family: Verdana, Geneva, sans-serif ;
|
||||||
|
font-weight: normal ;
|
||||||
|
font-style: italic ;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
padding-top: 0.4em ;
|
||||||
|
padding-bottom: 0.4em ;
|
||||||
|
padding-left: 30px ;
|
||||||
|
padding-right: 30px ;
|
||||||
|
margin-left: -30px ;
|
||||||
|
background-color: #E0E0FF ;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
padding-left: 0.5em ;
|
||||||
|
border-left: solid #E0E0FF 1em ;
|
||||||
|
}
|
||||||
|
|
||||||
|
table h3 {
|
||||||
|
padding-left: 0px ;
|
||||||
|
border-left: none ;
|
||||||
}
|
}
|
||||||
|
|
||||||
a:link {
|
a:link {
|
||||||
color: #000080 ;
|
color: #000080 ;
|
||||||
background-color: #FFFFFF ;
|
background-color: inherit ;
|
||||||
text-decoration: none ;
|
text-decoration: none ;
|
||||||
}
|
}
|
||||||
|
|
||||||
a:visited {
|
a:visited {
|
||||||
background-color: #FFFFFF ;
|
background-color: inherit ;
|
||||||
text-decoration: none ;
|
text-decoration: none ;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -20,3 +48,36 @@ a:link:hover, a:visited:hover {
|
|||||||
background-color: #E0E0FF ;
|
background-color: #E0E0FF ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
a:link:active, a:visited:active {
|
||||||
|
color: #FF0000 ;
|
||||||
|
}
|
||||||
|
|
||||||
|
hr {
|
||||||
|
border: 0 ;
|
||||||
|
height: 1px ;
|
||||||
|
color: #a0a0a0 ;
|
||||||
|
background-color: #a0a0a0 ;
|
||||||
|
}
|
||||||
|
|
||||||
|
:target {
|
||||||
|
background-color: #F8F8F8 ;
|
||||||
|
padding: 8px ;
|
||||||
|
border: solid #a0a0a0 2px ;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer {
|
||||||
|
color: gray ;
|
||||||
|
font-size: small ;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type=text] {
|
||||||
|
border: solid #a0a0a0 2px ;
|
||||||
|
border-radius: 2em ;
|
||||||
|
-moz-border-radius: 2em ;
|
||||||
|
background-image: url('images/search.png') ;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: 4px center ;
|
||||||
|
padding-left: 20px ;
|
||||||
|
height: 2em ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
<!-- $Id: lua.html 23036 2006-09-25 07:35:34Z gmaynard $ -->
|
<!-- $Id: lua.man,v 1.11 2006/01/06 16:03:34 lhf Exp $ -->
|
||||||
<HTML>
|
<HTML>
|
||||||
<HEAD>
|
<HEAD>
|
||||||
<TITLE>LUA man page</TITLE>
|
<TITLE>LUA man page</TITLE>
|
||||||
|
|||||||
Vendored
+2
-2
@@ -1,5 +1,5 @@
|
|||||||
.\" $Id: luac.1 23036 2006-09-25 07:35:34Z gmaynard $
|
.\" $Id: luac.man,v 1.28 2006/01/06 16:03:34 lhf Exp $
|
||||||
.TH LUAC 1 "$Date: 2006-09-25 02:35:34 -0500 (Mon, 25 Sep 2006) $"
|
.TH LUAC 1 "$Date: 2006/01/06 16:03:34 $"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
luac \- Lua compiler
|
luac \- Lua compiler
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
<!-- $Id: luac.html 23036 2006-09-25 07:35:34Z gmaynard $ -->
|
<!-- $Id: luac.man,v 1.28 2006/01/06 16:03:34 lhf Exp $ -->
|
||||||
<HTML>
|
<HTML>
|
||||||
<HEAD>
|
<HEAD>
|
||||||
<TITLE>LUAC man page</TITLE>
|
<TITLE>LUAC man page</TITLE>
|
||||||
|
|||||||
Vendored
+24
@@ -0,0 +1,24 @@
|
|||||||
|
h3 code {
|
||||||
|
font-family: inherit ;
|
||||||
|
font-size: inherit ;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre, code {
|
||||||
|
font-size: 12pt ;
|
||||||
|
}
|
||||||
|
|
||||||
|
span.apii {
|
||||||
|
float: right ;
|
||||||
|
font-family: inherit ;
|
||||||
|
font-style: normal ;
|
||||||
|
font-size: small ;
|
||||||
|
color: gray ;
|
||||||
|
}
|
||||||
|
|
||||||
|
p+h1, ul+h1 {
|
||||||
|
padding-top: 0.4em ;
|
||||||
|
padding-bottom: 0.4em ;
|
||||||
|
padding-left: 30px ;
|
||||||
|
margin-left: -30px ;
|
||||||
|
background-color: #E0E0FF ;
|
||||||
|
}
|
||||||
Vendored
+890
-542
File diff suppressed because it is too large
Load Diff
Vendored
+11
-3
@@ -4,7 +4,7 @@
|
|||||||
<LINK REL="stylesheet" TYPE="text/css" HREF="lua.css">
|
<LINK REL="stylesheet" TYPE="text/css" HREF="lua.css">
|
||||||
</HEAD>
|
</HEAD>
|
||||||
|
|
||||||
<BODY BGCOLOR="#FFFFFF">
|
<BODY>
|
||||||
|
|
||||||
<HR>
|
<HR>
|
||||||
<H1>
|
<H1>
|
||||||
@@ -12,8 +12,9 @@
|
|||||||
Documentation
|
Documentation
|
||||||
</H1>
|
</H1>
|
||||||
|
|
||||||
|
This is the documentation included in the source distribution of Lua 5.1.5.
|
||||||
|
|
||||||
<UL>
|
<UL>
|
||||||
<LI><A HREF="http://www.lua.org/">Official web site</A>
|
|
||||||
<LI><A HREF="contents.html">Reference manual</A>
|
<LI><A HREF="contents.html">Reference manual</A>
|
||||||
<LI><A HREF="lua.html">lua man page</A>
|
<LI><A HREF="lua.html">lua man page</A>
|
||||||
<LI><A HREF="luac.html">luac man page</A>
|
<LI><A HREF="luac.html">luac man page</A>
|
||||||
@@ -22,10 +23,17 @@ Documentation
|
|||||||
<LI><A HREF="../test/README">lua/test/README</A>
|
<LI><A HREF="../test/README">lua/test/README</A>
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
|
Lua's
|
||||||
|
<A HREF="http://www.lua.org/">official web site</A>
|
||||||
|
contains updated documentation,
|
||||||
|
especially the
|
||||||
|
<A HREF="http://www.lua.org/manual/5.1/">reference manual</A>.
|
||||||
|
<P>
|
||||||
|
|
||||||
<HR>
|
<HR>
|
||||||
<SMALL>
|
<SMALL>
|
||||||
Last update:
|
Last update:
|
||||||
Wed Sep 7 12:57:50 BRST 2005
|
Fri Feb 3 09:44:42 BRST 2012
|
||||||
</SMALL>
|
</SMALL>
|
||||||
|
|
||||||
</BODY>
|
</BODY>
|
||||||
|
|||||||
Vendored
+1
@@ -20,6 +20,7 @@ lua.pc
|
|||||||
|
|
||||||
luavs.bat
|
luavs.bat
|
||||||
Script to build Lua under "Visual Studio .NET Command Prompt".
|
Script to build Lua under "Visual Studio .NET Command Prompt".
|
||||||
|
Run it from the toplevel as etc\luavs.bat.
|
||||||
|
|
||||||
min.c
|
min.c
|
||||||
A minimal Lua interpreter.
|
A minimal Lua interpreter.
|
||||||
|
|||||||
Vendored
+1
-1
@@ -5,7 +5,7 @@
|
|||||||
# grep '^V=' ../Makefile
|
# grep '^V=' ../Makefile
|
||||||
V= 5.1
|
V= 5.1
|
||||||
# grep '^R=' ../Makefile
|
# grep '^R=' ../Makefile
|
||||||
R= 5.1.1
|
R= 5.1.5
|
||||||
|
|
||||||
# grep '^INSTALL_.*=' ../Makefile | sed 's/INSTALL_TOP/prefix/'
|
# grep '^INSTALL_.*=' ../Makefile | sed 's/INSTALL_TOP/prefix/'
|
||||||
prefix= /usr/local
|
prefix= /usr/local
|
||||||
|
|||||||
Vendored
+25
-4
@@ -1,7 +1,28 @@
|
|||||||
|
@rem Script to build Lua under "Visual Studio .NET Command Prompt".
|
||||||
|
@rem Do not run from this directory; run it from the toplevel: etc\luavs.bat .
|
||||||
|
@rem It creates lua51.dll, lua51.lib, lua.exe, and luac.exe in src.
|
||||||
|
@rem (contributed by David Manura and Mike Pall)
|
||||||
|
|
||||||
|
@setlocal
|
||||||
|
@set MYCOMPILE=cl /nologo /MD /O2 /W3 /c /D_CRT_SECURE_NO_DEPRECATE
|
||||||
|
@set MYLINK=link /nologo
|
||||||
|
@set MYMT=mt /nologo
|
||||||
|
|
||||||
cd src
|
cd src
|
||||||
cl /O2 /W3 /c /DLUA_BUILD_AS_DLL l*.c
|
%MYCOMPILE% /DLUA_BUILD_AS_DLL l*.c
|
||||||
del lua.obj luac.obj
|
del lua.obj luac.obj
|
||||||
link /DLL /out:lua51.dll l*.obj
|
%MYLINK% /DLL /out:lua51.dll l*.obj
|
||||||
cl /O2 /W3 /c /DLUA_BUILD_AS_DLL lua.c
|
if exist lua51.dll.manifest^
|
||||||
link /out:lua.exe lua.obj lua51.lib
|
%MYMT% -manifest lua51.dll.manifest -outputresource:lua51.dll;2
|
||||||
|
%MYCOMPILE% /DLUA_BUILD_AS_DLL lua.c
|
||||||
|
%MYLINK% /out:lua.exe lua.obj lua51.lib
|
||||||
|
if exist lua.exe.manifest^
|
||||||
|
%MYMT% -manifest lua.exe.manifest -outputresource:lua.exe
|
||||||
|
%MYCOMPILE% l*.c print.c
|
||||||
|
del lua.obj linit.obj lbaselib.obj ldblib.obj liolib.obj lmathlib.obj^
|
||||||
|
loslib.obj ltablib.obj lstrlib.obj loadlib.obj
|
||||||
|
%MYLINK% /out:luac.exe *.obj
|
||||||
|
if exist luac.exe.manifest^
|
||||||
|
%MYMT% -manifest luac.exe.manifest -outputresource:luac.exe
|
||||||
|
del *.obj *.manifest
|
||||||
cd ..
|
cd ..
|
||||||
|
|||||||
Vendored
+1
-1
@@ -18,7 +18,7 @@ static int print(lua_State *L)
|
|||||||
if (i>1) printf("\t");
|
if (i>1) printf("\t");
|
||||||
if (lua_isstring(L,i))
|
if (lua_isstring(L,i))
|
||||||
printf("%s",lua_tostring(L,i));
|
printf("%s",lua_tostring(L,i));
|
||||||
else if (lua_isnil(L,i)==2)
|
else if (lua_isnil(L,i))
|
||||||
printf("%s","nil");
|
printf("%s","nil");
|
||||||
else if (lua_isboolean(L,i))
|
else if (lua_isboolean(L,i))
|
||||||
printf("%s",lua_toboolean(L,i) ? "true" : "false");
|
printf("%s",lua_toboolean(L,i) ? "true" : "false");
|
||||||
|
|||||||
Vendored
+9
-2
@@ -6,6 +6,8 @@
|
|||||||
-- anywhere or assigned to inside a function.
|
-- anywhere or assigned to inside a function.
|
||||||
--
|
--
|
||||||
|
|
||||||
|
local getinfo, error, rawset, rawget = debug.getinfo, error, rawset, rawget
|
||||||
|
|
||||||
local mt = getmetatable(_G)
|
local mt = getmetatable(_G)
|
||||||
if mt == nil then
|
if mt == nil then
|
||||||
mt = {}
|
mt = {}
|
||||||
@@ -14,9 +16,14 @@ end
|
|||||||
|
|
||||||
mt.__declared = {}
|
mt.__declared = {}
|
||||||
|
|
||||||
|
local function what ()
|
||||||
|
local d = getinfo(3, "S")
|
||||||
|
return d and d.what or "C"
|
||||||
|
end
|
||||||
|
|
||||||
mt.__newindex = function (t, n, v)
|
mt.__newindex = function (t, n, v)
|
||||||
if not mt.__declared[n] then
|
if not mt.__declared[n] then
|
||||||
local w = debug.getinfo(2, "S").what
|
local w = what()
|
||||||
if w ~= "main" and w ~= "C" then
|
if w ~= "main" and w ~= "C" then
|
||||||
error("assign to undeclared variable '"..n.."'", 2)
|
error("assign to undeclared variable '"..n.."'", 2)
|
||||||
end
|
end
|
||||||
@@ -26,7 +33,7 @@ mt.__newindex = function (t, n, v)
|
|||||||
end
|
end
|
||||||
|
|
||||||
mt.__index = function (t, n)
|
mt.__index = function (t, n)
|
||||||
if not mt.__declared[n] and debug.getinfo(2, "S").what ~= "C" then
|
if not mt.__declared[n] and what() ~= "C" then
|
||||||
error("variable '"..n.."' is not declared", 2)
|
error("variable '"..n.."' is not declared", 2)
|
||||||
end
|
end
|
||||||
return rawget(t, n)
|
return rawget(t, n)
|
||||||
|
|||||||
Vendored
+15
-8
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: lapi.c 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: lapi.c,v 2.55.1.5 2008/07/04 18:41:18 roberto Exp $
|
||||||
** Lua API
|
** Lua API
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
@@ -93,15 +93,14 @@ void luaA_pushobject (lua_State *L, const TValue *o) {
|
|||||||
|
|
||||||
|
|
||||||
LUA_API int lua_checkstack (lua_State *L, int size) {
|
LUA_API int lua_checkstack (lua_State *L, int size) {
|
||||||
int res;
|
int res = 1;
|
||||||
lua_lock(L);
|
lua_lock(L);
|
||||||
if ((L->top - L->base + size) > LUAI_MAXCSTACK)
|
if (size > LUAI_MAXCSTACK || (L->top - L->base + size) > LUAI_MAXCSTACK)
|
||||||
res = 0; /* stack overflow */
|
res = 0; /* stack overflow */
|
||||||
else {
|
else if (size > 0) {
|
||||||
luaD_checkstack(L, size);
|
luaD_checkstack(L, size);
|
||||||
if (L->ci->top < L->top + size)
|
if (L->ci->top < L->top + size)
|
||||||
L->ci->top = L->top + size;
|
L->ci->top = L->top + size;
|
||||||
res = 1;
|
|
||||||
}
|
}
|
||||||
lua_unlock(L);
|
lua_unlock(L);
|
||||||
return res;
|
return res;
|
||||||
@@ -123,6 +122,11 @@ LUA_API void lua_xmove (lua_State *from, lua_State *to, int n) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
LUA_API void lua_setlevel (lua_State *from, lua_State *to) {
|
||||||
|
to->nCcalls = from->nCcalls;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
LUA_API lua_CFunction lua_atpanic (lua_State *L, lua_CFunction panicf) {
|
LUA_API lua_CFunction lua_atpanic (lua_State *L, lua_CFunction panicf) {
|
||||||
lua_CFunction old;
|
lua_CFunction old;
|
||||||
lua_lock(L);
|
lua_lock(L);
|
||||||
@@ -749,7 +753,7 @@ LUA_API int lua_setfenv (lua_State *L, int idx) {
|
|||||||
res = 0;
|
res = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
luaC_objbarrier(L, gcvalue(o), hvalue(L->top - 1));
|
if (res) luaC_objbarrier(L, gcvalue(o), hvalue(L->top - 1));
|
||||||
L->top--;
|
L->top--;
|
||||||
lua_unlock(L);
|
lua_unlock(L);
|
||||||
return res;
|
return res;
|
||||||
@@ -925,12 +929,15 @@ LUA_API int lua_gc (lua_State *L, int what, int data) {
|
|||||||
g->GCthreshold = g->totalbytes - a;
|
g->GCthreshold = g->totalbytes - a;
|
||||||
else
|
else
|
||||||
g->GCthreshold = 0;
|
g->GCthreshold = 0;
|
||||||
while (g->GCthreshold <= g->totalbytes)
|
while (g->GCthreshold <= g->totalbytes) {
|
||||||
luaC_step(L);
|
luaC_step(L);
|
||||||
if (g->gcstate == GCSpause) /* end of cycle? */
|
if (g->gcstate == GCSpause) { /* end of cycle? */
|
||||||
res = 1; /* signal it */
|
res = 1; /* signal it */
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
case LUA_GCSETPAUSE: {
|
case LUA_GCSETPAUSE: {
|
||||||
res = g->gcpause;
|
res = g->gcpause;
|
||||||
g->gcpause = data;
|
g->gcpause = data;
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: lapi.h 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: lapi.h,v 2.2.1.1 2007/12/27 13:02:25 roberto Exp $
|
||||||
** Auxiliary functions from Lua API
|
** Auxiliary functions from Lua API
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
|||||||
Vendored
+6
-7
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: lauxlib.c 23349 2006-10-05 02:43:36Z gmaynard $
|
** $Id: lauxlib.c,v 1.159.1.3 2008/01/21 13:20:51 roberto Exp $
|
||||||
** Auxiliary functions for building Lua libraries
|
** Auxiliary functions for building Lua libraries
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
@@ -252,7 +252,7 @@ LUALIB_API void luaI_openlib (lua_State *L, const char *libname,
|
|||||||
if (libname) {
|
if (libname) {
|
||||||
int size = libsize(l);
|
int size = libsize(l);
|
||||||
/* check whether lib already exists */
|
/* check whether lib already exists */
|
||||||
luaL_findtable(L, LUA_REGISTRYINDEX, "_LOADED", size);
|
luaL_findtable(L, LUA_REGISTRYINDEX, "_LOADED", 1);
|
||||||
lua_getfield(L, -1, libname); /* get _LOADED[libname] */
|
lua_getfield(L, -1, libname); /* get _LOADED[libname] */
|
||||||
if (!lua_istable(L, -1)) { /* not found? */
|
if (!lua_istable(L, -1)) { /* not found? */
|
||||||
lua_pop(L, 1); /* remove previous result */
|
lua_pop(L, 1); /* remove previous result */
|
||||||
@@ -543,7 +543,7 @@ static const char *getF (lua_State *L, void *ud, size_t *size) {
|
|||||||
return "\n";
|
return "\n";
|
||||||
}
|
}
|
||||||
if (feof(lf->f)) return NULL;
|
if (feof(lf->f)) return NULL;
|
||||||
*size = fread(lf->buff, 1, LUAL_BUFFERSIZE, lf->f);
|
*size = fread(lf->buff, 1, sizeof(lf->buff), lf->f);
|
||||||
return (*size > 0) ? lf->buff : NULL;
|
return (*size > 0) ? lf->buff : NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -578,9 +578,8 @@ LUALIB_API int luaL_loadfile (lua_State *L, const char *filename) {
|
|||||||
while ((c = getc(lf.f)) != EOF && c != '\n') ; /* skip first line */
|
while ((c = getc(lf.f)) != EOF && c != '\n') ; /* skip first line */
|
||||||
if (c == '\n') c = getc(lf.f);
|
if (c == '\n') c = getc(lf.f);
|
||||||
}
|
}
|
||||||
if (c == LUA_SIGNATURE[0] && lf.f != stdin) { /* binary file? */
|
if (c == LUA_SIGNATURE[0] && filename) { /* binary file? */
|
||||||
fclose(lf.f);
|
lf.f = freopen(filename, "rb", lf.f); /* reopen in binary mode */
|
||||||
lf.f = fopen(filename, "rb"); /* reopen in binary mode */
|
|
||||||
if (lf.f == NULL) return errfile(L, "reopen", fnameindex);
|
if (lf.f == NULL) return errfile(L, "reopen", fnameindex);
|
||||||
/* skip eventual `#!...' */
|
/* skip eventual `#!...' */
|
||||||
while ((c = getc(lf.f)) != EOF && c != LUA_SIGNATURE[0]) ;
|
while ((c = getc(lf.f)) != EOF && c != LUA_SIGNATURE[0]) ;
|
||||||
@@ -589,7 +588,7 @@ LUALIB_API int luaL_loadfile (lua_State *L, const char *filename) {
|
|||||||
ungetc(c, lf.f);
|
ungetc(c, lf.f);
|
||||||
status = lua_load(L, getF, &lf, lua_tostring(L, -1));
|
status = lua_load(L, getF, &lf, lua_tostring(L, -1));
|
||||||
readstatus = ferror(lf.f);
|
readstatus = ferror(lf.f);
|
||||||
if (lf.f != stdin) fclose(lf.f); /* close file (even in case of errors) */
|
if (filename) fclose(lf.f); /* close file (even in case of errors) */
|
||||||
if (readstatus) {
|
if (readstatus) {
|
||||||
lua_settop(L, fnameindex); /* ignore results from `lua_load' */
|
lua_settop(L, fnameindex); /* ignore results from `lua_load' */
|
||||||
return errfile(L, "read", fnameindex);
|
return errfile(L, "read", fnameindex);
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: lauxlib.h 23349 2006-10-05 02:43:36Z gmaynard $
|
** $Id: lauxlib.h,v 1.88.1.1 2007/12/27 13:02:25 roberto Exp $
|
||||||
** Auxiliary functions for building Lua libraries
|
** Auxiliary functions for building Lua libraries
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
|||||||
Vendored
+54
-42
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: lbaselib.c 23613 2006-10-15 21:01:34Z gmaynard $
|
** $Id: lbaselib.c,v 1.191.1.6 2008/02/14 16:46:22 roberto Exp $
|
||||||
** Basic library
|
** Basic library
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
@@ -114,11 +114,11 @@ static int luaB_setmetatable (lua_State *L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void getfunc (lua_State *L) {
|
static void getfunc (lua_State *L, int opt) {
|
||||||
if (lua_isfunction(L, 1)) lua_pushvalue(L, 1);
|
if (lua_isfunction(L, 1)) lua_pushvalue(L, 1);
|
||||||
else {
|
else {
|
||||||
lua_Debug ar;
|
lua_Debug ar;
|
||||||
int level = luaL_optint(L, 1, 1);
|
int level = opt ? luaL_optint(L, 1, 1) : luaL_checkint(L, 1);
|
||||||
luaL_argcheck(L, level >= 0, 1, "level must be non-negative");
|
luaL_argcheck(L, level >= 0, 1, "level must be non-negative");
|
||||||
if (lua_getstack(L, level, &ar) == 0)
|
if (lua_getstack(L, level, &ar) == 0)
|
||||||
luaL_argerror(L, 1, "invalid level");
|
luaL_argerror(L, 1, "invalid level");
|
||||||
@@ -131,7 +131,7 @@ static void getfunc (lua_State *L) {
|
|||||||
|
|
||||||
|
|
||||||
static int luaB_getfenv (lua_State *L) {
|
static int luaB_getfenv (lua_State *L) {
|
||||||
getfunc(L);
|
getfunc(L, 1);
|
||||||
if (lua_iscfunction(L, -1)) /* is a C function? */
|
if (lua_iscfunction(L, -1)) /* is a C function? */
|
||||||
lua_pushvalue(L, LUA_GLOBALSINDEX); /* return the thread's global env. */
|
lua_pushvalue(L, LUA_GLOBALSINDEX); /* return the thread's global env. */
|
||||||
else
|
else
|
||||||
@@ -142,7 +142,7 @@ static int luaB_getfenv (lua_State *L) {
|
|||||||
|
|
||||||
static int luaB_setfenv (lua_State *L) {
|
static int luaB_setfenv (lua_State *L) {
|
||||||
luaL_checktype(L, 2, LUA_TTABLE);
|
luaL_checktype(L, 2, LUA_TTABLE);
|
||||||
getfunc(L);
|
getfunc(L, 0);
|
||||||
lua_pushvalue(L, 2);
|
lua_pushvalue(L, 2);
|
||||||
if (lua_isnumber(L, 1) && lua_tonumber(L, 1) == 0) {
|
if (lua_isnumber(L, 1) && lua_tonumber(L, 1) == 0) {
|
||||||
/* change environment of current thread */
|
/* change environment of current thread */
|
||||||
@@ -344,10 +344,12 @@ static int luaB_unpack (lua_State *L) {
|
|||||||
luaL_checktype(L, 1, LUA_TTABLE);
|
luaL_checktype(L, 1, LUA_TTABLE);
|
||||||
i = luaL_optint(L, 2, 1);
|
i = luaL_optint(L, 2, 1);
|
||||||
e = luaL_opt(L, luaL_checkint, 3, luaL_getn(L, 1));
|
e = luaL_opt(L, luaL_checkint, 3, luaL_getn(L, 1));
|
||||||
|
if (i > e) return 0; /* empty range */
|
||||||
n = e - i + 1; /* number of elements */
|
n = e - i + 1; /* number of elements */
|
||||||
if (n <= 0) return 0; /* empty range */
|
if (n <= 0 || !lua_checkstack(L, n)) /* n <= 0 means arith. overflow */
|
||||||
luaL_checkstack(L, n, "table too big to unpack");
|
return luaL_error(L, "too many results to unpack");
|
||||||
for (; i<=e; i++) /* push arg[i...e] */
|
lua_rawgeti(L, 1, i); /* push arg[i] (avoiding overflow problems) */
|
||||||
|
while (i++ < e) /* push arg[i + 1...e] */
|
||||||
lua_rawgeti(L, 1, i);
|
lua_rawgeti(L, 1, i);
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
@@ -477,19 +479,56 @@ static const luaL_Reg base_funcs[] = {
|
|||||||
** =======================================================
|
** =======================================================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#define CO_RUN 0 /* running */
|
||||||
|
#define CO_SUS 1 /* suspended */
|
||||||
|
#define CO_NOR 2 /* 'normal' (it resumed another coroutine) */
|
||||||
|
#define CO_DEAD 3
|
||||||
|
|
||||||
|
static const char *const statnames[] =
|
||||||
|
{"running", "suspended", "normal", "dead"};
|
||||||
|
|
||||||
|
static int costatus (lua_State *L, lua_State *co) {
|
||||||
|
if (L == co) return CO_RUN;
|
||||||
|
switch (lua_status(co)) {
|
||||||
|
case LUA_YIELD:
|
||||||
|
return CO_SUS;
|
||||||
|
case 0: {
|
||||||
|
lua_Debug ar;
|
||||||
|
if (lua_getstack(co, 0, &ar) > 0) /* does it have frames? */
|
||||||
|
return CO_NOR; /* it is running */
|
||||||
|
else if (lua_gettop(co) == 0)
|
||||||
|
return CO_DEAD;
|
||||||
|
else
|
||||||
|
return CO_SUS; /* initial state */
|
||||||
|
}
|
||||||
|
default: /* some error occured */
|
||||||
|
return CO_DEAD;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int luaB_costatus (lua_State *L) {
|
||||||
|
lua_State *co = lua_tothread(L, 1);
|
||||||
|
luaL_argcheck(L, co, 1, "coroutine expected");
|
||||||
|
lua_pushstring(L, statnames[costatus(L, co)]);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static int auxresume (lua_State *L, lua_State *co, int narg) {
|
static int auxresume (lua_State *L, lua_State *co, int narg) {
|
||||||
int status;
|
int status = costatus(L, co);
|
||||||
if (!lua_checkstack(co, narg))
|
if (!lua_checkstack(co, narg))
|
||||||
luaL_error(L, "too many arguments to resume");
|
luaL_error(L, "too many arguments to resume");
|
||||||
if (lua_status(co) == 0 && lua_gettop(co) == 0) {
|
if (status != CO_SUS) {
|
||||||
lua_pushliteral(L, "cannot resume dead coroutine");
|
lua_pushfstring(L, "cannot resume %s coroutine", statnames[status]);
|
||||||
return -1; /* error flag */
|
return -1; /* error flag */
|
||||||
}
|
}
|
||||||
lua_xmove(L, co, narg);
|
lua_xmove(L, co, narg);
|
||||||
|
lua_setlevel(L, co);
|
||||||
status = lua_resume(co, narg);
|
status = lua_resume(co, narg);
|
||||||
if (status == 0 || status == LUA_YIELD) {
|
if (status == 0 || status == LUA_YIELD) {
|
||||||
int nres = lua_gettop(co);
|
int nres = lua_gettop(co);
|
||||||
if (!lua_checkstack(L, nres))
|
if (!lua_checkstack(L, nres + 1))
|
||||||
luaL_error(L, "too many results to resume");
|
luaL_error(L, "too many results to resume");
|
||||||
lua_xmove(co, L, nres); /* move yielded values */
|
lua_xmove(co, L, nres); /* move yielded values */
|
||||||
return nres;
|
return nres;
|
||||||
@@ -556,36 +595,9 @@ static int luaB_yield (lua_State *L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int luaB_costatus (lua_State *L) {
|
|
||||||
lua_State *co = lua_tothread(L, 1);
|
|
||||||
luaL_argcheck(L, co, 1, "coroutine expected");
|
|
||||||
if (L == co) lua_pushliteral(L, "running");
|
|
||||||
else {
|
|
||||||
switch (lua_status(co)) {
|
|
||||||
case LUA_YIELD:
|
|
||||||
lua_pushliteral(L, "suspended");
|
|
||||||
break;
|
|
||||||
case 0: {
|
|
||||||
lua_Debug ar;
|
|
||||||
if (lua_getstack(co, 0, &ar) > 0) /* does it have frames? */
|
|
||||||
lua_pushliteral(L, "normal"); /* it is running */
|
|
||||||
else if (lua_gettop(co) == 0)
|
|
||||||
lua_pushliteral(L, "dead");
|
|
||||||
else
|
|
||||||
lua_pushliteral(L, "suspended"); /* initial state */
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default: /* some error occured */
|
|
||||||
lua_pushliteral(L, "dead");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static int luaB_corunning (lua_State *L) {
|
static int luaB_corunning (lua_State *L) {
|
||||||
lua_pushthread(L);
|
if (lua_pushthread(L))
|
||||||
|
lua_pushnil(L); /* main thread is not a coroutine */
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -619,7 +631,7 @@ static void base_open (lua_State *L) {
|
|||||||
luaL_register(L, "_G", base_funcs);
|
luaL_register(L, "_G", base_funcs);
|
||||||
lua_pushliteral(L, LUA_VERSION);
|
lua_pushliteral(L, LUA_VERSION);
|
||||||
lua_setglobal(L, "_VERSION"); /* set global _VERSION */
|
lua_setglobal(L, "_VERSION"); /* set global _VERSION */
|
||||||
/* `ipairs' and `pairs' need auxliliary functions as upvalues */
|
/* `ipairs' and `pairs' need auxiliary functions as upvalues */
|
||||||
auxopen(L, "ipairs", luaB_ipairs, ipairsaux);
|
auxopen(L, "ipairs", luaB_ipairs, ipairsaux);
|
||||||
auxopen(L, "pairs", luaB_pairs, luaB_next);
|
auxopen(L, "pairs", luaB_pairs, luaB_next);
|
||||||
/* `newproxy' needs a weaktable as upvalue */
|
/* `newproxy' needs a weaktable as upvalue */
|
||||||
|
|||||||
Vendored
+22
-14
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: lcode.c 25893 2007-04-21 20:08:12Z stevecheckoway $
|
** $Id: lcode.c,v 2.25.1.5 2011/01/31 14:53:16 roberto Exp $
|
||||||
** Code generator for Lua
|
** Code generator for Lua
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
@@ -35,9 +35,13 @@ static int isnumeral(expdesc *e) {
|
|||||||
void luaK_nil (FuncState *fs, int from, int n) {
|
void luaK_nil (FuncState *fs, int from, int n) {
|
||||||
Instruction *previous;
|
Instruction *previous;
|
||||||
if (fs->pc > fs->lasttarget) { /* no jumps to current position? */
|
if (fs->pc > fs->lasttarget) { /* no jumps to current position? */
|
||||||
if (fs->pc == 0) /* function start? */
|
if (fs->pc == 0) { /* function start? */
|
||||||
|
if (from >= fs->nactvar)
|
||||||
return; /* positions are already clean */
|
return; /* positions are already clean */
|
||||||
if (GET_OPCODE(*(previous = &fs->f->code[fs->pc-1])) == OP_LOADNIL) {
|
}
|
||||||
|
else {
|
||||||
|
previous = &fs->f->code[fs->pc-1];
|
||||||
|
if (GET_OPCODE(*previous) == OP_LOADNIL) {
|
||||||
int pfrom = GETARG_A(*previous);
|
int pfrom = GETARG_A(*previous);
|
||||||
int pto = GETARG_B(*previous);
|
int pto = GETARG_B(*previous);
|
||||||
if (pfrom <= from && from <= pto+1) { /* can connect both? */
|
if (pfrom <= from && from <= pto+1) { /* can connect both? */
|
||||||
@@ -47,6 +51,7 @@ void luaK_nil (FuncState *fs, int from, int n) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
luaK_codeABC(fs, OP_LOADNIL, from, from+n-1, 0); /* else no optimization */
|
luaK_codeABC(fs, OP_LOADNIL, from, from+n-1, 0); /* else no optimization */
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -539,10 +544,6 @@ void luaK_goiftrue (FuncState *fs, expdesc *e) {
|
|||||||
pc = NO_JUMP; /* always true; do nothing */
|
pc = NO_JUMP; /* always true; do nothing */
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case VFALSE: {
|
|
||||||
pc = luaK_jump(fs); /* always jump */
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case VJMP: {
|
case VJMP: {
|
||||||
invertjump(fs, e);
|
invertjump(fs, e);
|
||||||
pc = e->u.s.info;
|
pc = e->u.s.info;
|
||||||
@@ -567,10 +568,6 @@ static void luaK_goiffalse (FuncState *fs, expdesc *e) {
|
|||||||
pc = NO_JUMP; /* always false; do nothing */
|
pc = NO_JUMP; /* always false; do nothing */
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case VTRUE: {
|
|
||||||
pc = luaK_jump(fs); /* always jump */
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case VJMP: {
|
case VJMP: {
|
||||||
pc = e->u.s.info;
|
pc = e->u.s.info;
|
||||||
break;
|
break;
|
||||||
@@ -657,10 +654,16 @@ static void codearith (FuncState *fs, OpCode op, expdesc *e1, expdesc *e2) {
|
|||||||
if (constfolding(op, e1, e2))
|
if (constfolding(op, e1, e2))
|
||||||
return;
|
return;
|
||||||
else {
|
else {
|
||||||
int o1 = luaK_exp2RK(fs, e1);
|
|
||||||
int o2 = (op != OP_UNM && op != OP_LEN) ? luaK_exp2RK(fs, e2) : 0;
|
int o2 = (op != OP_UNM && op != OP_LEN) ? luaK_exp2RK(fs, e2) : 0;
|
||||||
|
int o1 = luaK_exp2RK(fs, e1);
|
||||||
|
if (o1 > o2) {
|
||||||
|
freeexp(fs, e1);
|
||||||
|
freeexp(fs, e2);
|
||||||
|
}
|
||||||
|
else {
|
||||||
freeexp(fs, e2);
|
freeexp(fs, e2);
|
||||||
freeexp(fs, e1);
|
freeexp(fs, e1);
|
||||||
|
}
|
||||||
e1->u.s.info = luaK_codeABC(fs, op, 0, o1, o2);
|
e1->u.s.info = luaK_codeABC(fs, op, 0, o1, o2);
|
||||||
e1->k = VRELOCABLE;
|
e1->k = VRELOCABLE;
|
||||||
}
|
}
|
||||||
@@ -688,7 +691,7 @@ void luaK_prefix (FuncState *fs, UnOpr op, expdesc *e) {
|
|||||||
e2.t = e2.f = NO_JUMP; e2.k = VKNUM; e2.u.nval = 0;
|
e2.t = e2.f = NO_JUMP; e2.k = VKNUM; e2.u.nval = 0;
|
||||||
switch (op) {
|
switch (op) {
|
||||||
case OPR_MINUS: {
|
case OPR_MINUS: {
|
||||||
if (e->k == VK)
|
if (!isnumeral(e))
|
||||||
luaK_exp2anyreg(fs, e); /* cannot operate on non-numeric constants */
|
luaK_exp2anyreg(fs, e); /* cannot operate on non-numeric constants */
|
||||||
codearith(fs, OP_UNM, e, &e2);
|
codearith(fs, OP_UNM, e, &e2);
|
||||||
break;
|
break;
|
||||||
@@ -718,10 +721,15 @@ void luaK_infix (FuncState *fs, BinOpr op, expdesc *v) {
|
|||||||
luaK_exp2nextreg(fs, v); /* operand must be on the `stack' */
|
luaK_exp2nextreg(fs, v); /* operand must be on the `stack' */
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default: {
|
case OPR_ADD: case OPR_SUB: case OPR_MUL: case OPR_DIV:
|
||||||
|
case OPR_MOD: case OPR_POW: {
|
||||||
if (!isnumeral(v)) luaK_exp2RK(fs, v);
|
if (!isnumeral(v)) luaK_exp2RK(fs, v);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
default: {
|
||||||
|
luaK_exp2RK(fs, v);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: lcode.h 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: lcode.h,v 1.48.1.1 2007/12/27 13:02:25 roberto Exp $
|
||||||
** Code generator for Lua
|
** Code generator for Lua
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
|||||||
Vendored
+16
-15
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: ldblib.c 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: ldblib.c,v 1.104.1.4 2009/08/04 18:50:18 roberto Exp $
|
||||||
** Interface from Lua to its debug API
|
** Interface from Lua to its debug API
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
@@ -45,6 +45,7 @@ static int db_setmetatable (lua_State *L) {
|
|||||||
|
|
||||||
|
|
||||||
static int db_getfenv (lua_State *L) {
|
static int db_getfenv (lua_State *L) {
|
||||||
|
luaL_checkany(L, 1);
|
||||||
lua_getfenv(L, 1);
|
lua_getfenv(L, 1);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@@ -255,24 +256,25 @@ static void gethooktable (lua_State *L) {
|
|||||||
|
|
||||||
|
|
||||||
static int db_sethook (lua_State *L) {
|
static int db_sethook (lua_State *L) {
|
||||||
int arg;
|
int arg, mask, count;
|
||||||
|
lua_Hook func;
|
||||||
lua_State *L1 = getthread(L, &arg);
|
lua_State *L1 = getthread(L, &arg);
|
||||||
if (lua_isnoneornil(L, arg+1)) {
|
if (lua_isnoneornil(L, arg+1)) {
|
||||||
lua_settop(L, arg+1);
|
lua_settop(L, arg+1);
|
||||||
lua_sethook(L1, NULL, 0, 0); /* turn off hooks */
|
func = NULL; mask = 0; count = 0; /* turn off hooks */
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
const char *smask = luaL_checkstring(L, arg+2);
|
const char *smask = luaL_checkstring(L, arg+2);
|
||||||
int count = luaL_optint(L, arg+3, 0);
|
|
||||||
luaL_checktype(L, arg+1, LUA_TFUNCTION);
|
luaL_checktype(L, arg+1, LUA_TFUNCTION);
|
||||||
lua_sethook(L1, hookf, makemask(smask, count), count);
|
count = luaL_optint(L, arg+3, 0);
|
||||||
|
func = hookf; mask = makemask(smask, count);
|
||||||
}
|
}
|
||||||
gethooktable(L1);
|
gethooktable(L);
|
||||||
lua_pushlightuserdata(L1, L1);
|
lua_pushlightuserdata(L, L1);
|
||||||
lua_pushvalue(L, arg+1);
|
lua_pushvalue(L, arg+1);
|
||||||
lua_xmove(L, L1, 1);
|
lua_rawset(L, -3); /* set new hook */
|
||||||
lua_rawset(L1, -3); /* set new hook */
|
lua_pop(L, 1); /* remove hook table */
|
||||||
lua_pop(L1, 1); /* remove hook table */
|
lua_sethook(L1, func, mask, count); /* set hooks */
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -286,11 +288,10 @@ static int db_gethook (lua_State *L) {
|
|||||||
if (hook != NULL && hook != hookf) /* external hook? */
|
if (hook != NULL && hook != hookf) /* external hook? */
|
||||||
lua_pushliteral(L, "external hook");
|
lua_pushliteral(L, "external hook");
|
||||||
else {
|
else {
|
||||||
gethooktable(L1);
|
gethooktable(L);
|
||||||
lua_pushlightuserdata(L1, L1);
|
lua_pushlightuserdata(L, L1);
|
||||||
lua_rawget(L1, -2); /* get hook */
|
lua_rawget(L, -2); /* get hook */
|
||||||
lua_remove(L1, -2); /* remove hook table */
|
lua_remove(L, -2); /* remove hook table */
|
||||||
lua_xmove(L1, L, 1);
|
|
||||||
}
|
}
|
||||||
lua_pushstring(L, unmakemask(mask, buff));
|
lua_pushstring(L, unmakemask(mask, buff));
|
||||||
lua_pushinteger(L, lua_gethookcount(L1));
|
lua_pushinteger(L, lua_gethookcount(L1));
|
||||||
|
|||||||
Vendored
+32
-14
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: ldebug.c 25893 2007-04-21 20:08:12Z stevecheckoway $
|
** $Id: ldebug.c,v 2.29.1.6 2008/05/08 16:56:26 roberto Exp $
|
||||||
** Debug Interface
|
** Debug Interface
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
@@ -275,12 +275,12 @@ LUA_API int lua_getinfo (lua_State *L, const char *what, lua_Debug *ar) {
|
|||||||
|
|
||||||
static int precheck (const Proto *pt) {
|
static int precheck (const Proto *pt) {
|
||||||
check(pt->maxstacksize <= MAXSTACK);
|
check(pt->maxstacksize <= MAXSTACK);
|
||||||
lua_assert(pt->numparams+(pt->is_vararg & VARARG_HASARG) <= pt->maxstacksize);
|
check(pt->numparams+(pt->is_vararg & VARARG_HASARG) <= pt->maxstacksize);
|
||||||
lua_assert(!(pt->is_vararg & VARARG_NEEDSARG) ||
|
check(!(pt->is_vararg & VARARG_NEEDSARG) ||
|
||||||
(pt->is_vararg & VARARG_HASARG));
|
(pt->is_vararg & VARARG_HASARG));
|
||||||
check(pt->sizeupvalues <= pt->nups);
|
check(pt->sizeupvalues <= pt->nups);
|
||||||
check(pt->sizelineinfo == pt->sizecode || pt->sizelineinfo == 0);
|
check(pt->sizelineinfo == pt->sizecode || pt->sizelineinfo == 0);
|
||||||
check(GET_OPCODE(pt->code[pt->sizecode-1]) == OP_RETURN);
|
check(pt->sizecode > 0 && GET_OPCODE(pt->code[pt->sizecode-1]) == OP_RETURN);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -346,9 +346,18 @@ static Instruction symbexec (const Proto *pt, int lastpc, int reg) {
|
|||||||
int dest = pc+1+b;
|
int dest = pc+1+b;
|
||||||
check(0 <= dest && dest < pt->sizecode);
|
check(0 <= dest && dest < pt->sizecode);
|
||||||
if (dest > 0) {
|
if (dest > 0) {
|
||||||
/* cannot jump to a setlist count */
|
int j;
|
||||||
Instruction d = pt->code[dest-1];
|
/* check that it does not jump to a setlist count; this
|
||||||
check(!(GET_OPCODE(d) == OP_SETLIST && GETARG_C(d) == 0));
|
is tricky, because the count from a previous setlist may
|
||||||
|
have the same value of an invalid setlist; so, we must
|
||||||
|
go all the way back to the first of them (if any) */
|
||||||
|
for (j = 0; j < dest; j++) {
|
||||||
|
Instruction d = pt->code[dest-1-j];
|
||||||
|
if (!(GET_OPCODE(d) == OP_SETLIST && GETARG_C(d) == 0)) break;
|
||||||
|
}
|
||||||
|
/* if 'j' is even, previous value is not a setlist (even if
|
||||||
|
it looks like one) */
|
||||||
|
check((j&1) == 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -363,7 +372,11 @@ static Instruction symbexec (const Proto *pt, int lastpc, int reg) {
|
|||||||
}
|
}
|
||||||
switch (op) {
|
switch (op) {
|
||||||
case OP_LOADBOOL: {
|
case OP_LOADBOOL: {
|
||||||
check(c == 0 || pc+2 < pt->sizecode); /* check its jump */
|
if (c == 1) { /* does it jump? */
|
||||||
|
check(pc+2 < pt->sizecode); /* check its jump */
|
||||||
|
check(GET_OPCODE(pt->code[pc+1]) != OP_SETLIST ||
|
||||||
|
GETARG_C(pt->code[pc+1]) != 0);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case OP_LOADNIL: {
|
case OP_LOADNIL: {
|
||||||
@@ -428,18 +441,23 @@ static Instruction symbexec (const Proto *pt, int lastpc, int reg) {
|
|||||||
}
|
}
|
||||||
case OP_SETLIST: {
|
case OP_SETLIST: {
|
||||||
if (b > 0) checkreg(pt, a + b);
|
if (b > 0) checkreg(pt, a + b);
|
||||||
if (c == 0) pc++;
|
if (c == 0) {
|
||||||
|
pc++;
|
||||||
|
check(pc < pt->sizecode - 1);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case OP_CLOSURE: {
|
case OP_CLOSURE: {
|
||||||
int nup;
|
int nup, j;
|
||||||
check(b < pt->sizep);
|
check(b < pt->sizep);
|
||||||
nup = pt->p[b]->nups;
|
nup = pt->p[b]->nups;
|
||||||
check(pc + nup < pt->sizecode);
|
check(pc + nup < pt->sizecode);
|
||||||
for (; nup>0; nup--) {
|
for (j = 1; j <= nup; j++) {
|
||||||
OpCode op1 = GET_OPCODE(pt->code[pc+nup]);
|
OpCode op1 = GET_OPCODE(pt->code[pc + j]);
|
||||||
check(op1 == OP_GETUPVAL || op1 == OP_MOVE);
|
check(op1 == OP_GETUPVAL || op1 == OP_MOVE);
|
||||||
}
|
}
|
||||||
|
if (reg != NO_REG) /* tracing? */
|
||||||
|
pc += nup; /* do not 'execute' these pseudo-instructions */
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case OP_VARARG: {
|
case OP_VARARG: {
|
||||||
@@ -561,8 +579,8 @@ void luaG_typeerror (lua_State *L, const TValue *o, const char *op) {
|
|||||||
|
|
||||||
|
|
||||||
void luaG_concaterror (lua_State *L, StkId p1, StkId p2) {
|
void luaG_concaterror (lua_State *L, StkId p1, StkId p2) {
|
||||||
if (ttisstring(p1)) p1 = p2;
|
if (ttisstring(p1) || ttisnumber(p1)) p1 = p2;
|
||||||
lua_assert(!ttisstring(p1));
|
lua_assert(!ttisstring(p1) && !ttisnumber(p1));
|
||||||
luaG_typeerror(L, p1, "concatenate");
|
luaG_typeerror(L, p1, "concatenate");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: ldebug.h 25893 2007-04-21 20:08:12Z stevecheckoway $
|
** $Id: ldebug.h,v 2.3.1.1 2007/12/27 13:02:25 roberto Exp $
|
||||||
** Auxiliary functions from Debug Interface module
|
** Auxiliary functions from Debug Interface module
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
|||||||
Vendored
+14
-11
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: ldo.c 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: ldo.c,v 2.38.1.4 2012/01/18 02:27:10 roberto Exp $
|
||||||
** Stack and Call structure of Lua
|
** Stack and Call structure of Lua
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
@@ -83,7 +83,7 @@ static void resetstack (lua_State *L, int status) {
|
|||||||
L->base = L->ci->base;
|
L->base = L->ci->base;
|
||||||
luaF_close(L, L->base); /* close eventual pending closures */
|
luaF_close(L, L->base); /* close eventual pending closures */
|
||||||
luaD_seterrorobj(L, status, L->base);
|
luaD_seterrorobj(L, status, L->base);
|
||||||
L->nCcalls = 0;
|
L->nCcalls = L->baseCcalls;
|
||||||
L->allowhook = 1;
|
L->allowhook = 1;
|
||||||
restore_stack_limit(L);
|
restore_stack_limit(L);
|
||||||
L->errfunc = 0;
|
L->errfunc = 0;
|
||||||
@@ -217,6 +217,7 @@ static StkId adjust_varargs (lua_State *L, Proto *p, int actual) {
|
|||||||
int nvar = actual - nfixargs; /* number of extra arguments */
|
int nvar = actual - nfixargs; /* number of extra arguments */
|
||||||
lua_assert(p->is_vararg & VARARG_HASARG);
|
lua_assert(p->is_vararg & VARARG_HASARG);
|
||||||
luaC_checkGC(L);
|
luaC_checkGC(L);
|
||||||
|
luaD_checkstack(L, p->maxstacksize);
|
||||||
htab = luaH_new(L, nvar, 1); /* create `arg' table */
|
htab = luaH_new(L, nvar, 1); /* create `arg' table */
|
||||||
for (i=0; i<nvar; i++) /* put extra arguments into `arg' table */
|
for (i=0; i<nvar; i++) /* put extra arguments into `arg' table */
|
||||||
setobj2n(L, luaH_setnum(L, htab, i+1), L->top - nvar + i);
|
setobj2n(L, luaH_setnum(L, htab, i+1), L->top - nvar + i);
|
||||||
@@ -332,7 +333,7 @@ static StkId callrethooks (lua_State *L, StkId firstResult) {
|
|||||||
ptrdiff_t fr = savestack(L, firstResult); /* next call may change stack */
|
ptrdiff_t fr = savestack(L, firstResult); /* next call may change stack */
|
||||||
luaD_callhook(L, LUA_HOOKRET, -1);
|
luaD_callhook(L, LUA_HOOKRET, -1);
|
||||||
if (f_isLua(L->ci)) { /* Lua function? */
|
if (f_isLua(L->ci)) { /* Lua function? */
|
||||||
while (L->ci->tailcalls--) /* call hook for eventual tail calls */
|
while ((L->hookmask & LUA_MASKRET) && L->ci->tailcalls--) /* tail calls */
|
||||||
luaD_callhook(L, LUA_HOOKTAILRET, -1);
|
luaD_callhook(L, LUA_HOOKTAILRET, -1);
|
||||||
}
|
}
|
||||||
return restorestack(L, fr);
|
return restorestack(L, fr);
|
||||||
@@ -417,22 +418,24 @@ static int resume_error (lua_State *L, const char *msg) {
|
|||||||
LUA_API int lua_resume (lua_State *L, int nargs) {
|
LUA_API int lua_resume (lua_State *L, int nargs) {
|
||||||
int status;
|
int status;
|
||||||
lua_lock(L);
|
lua_lock(L);
|
||||||
if (L->status != LUA_YIELD) {
|
if (L->status != LUA_YIELD && (L->status != 0 || L->ci != L->base_ci))
|
||||||
if (L->status != 0)
|
|
||||||
return resume_error(L, "cannot resume dead coroutine");
|
|
||||||
else if (L->ci != L->base_ci)
|
|
||||||
return resume_error(L, "cannot resume non-suspended coroutine");
|
return resume_error(L, "cannot resume non-suspended coroutine");
|
||||||
}
|
if (L->nCcalls >= LUAI_MAXCCALLS)
|
||||||
|
return resume_error(L, "C stack overflow");
|
||||||
luai_userstateresume(L, nargs);
|
luai_userstateresume(L, nargs);
|
||||||
lua_assert(L->errfunc == 0 && L->nCcalls == 0);
|
lua_assert(L->errfunc == 0);
|
||||||
|
L->baseCcalls = ++L->nCcalls;
|
||||||
status = luaD_rawrunprotected(L, resume, L->top - nargs);
|
status = luaD_rawrunprotected(L, resume, L->top - nargs);
|
||||||
if (status != 0) { /* error? */
|
if (status != 0) { /* error? */
|
||||||
L->status = cast_byte(status); /* mark thread as `dead' */
|
L->status = cast_byte(status); /* mark thread as `dead' */
|
||||||
luaD_seterrorobj(L, status, L->top);
|
luaD_seterrorobj(L, status, L->top);
|
||||||
L->ci->top = L->top;
|
L->ci->top = L->top;
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
|
lua_assert(L->nCcalls == L->baseCcalls);
|
||||||
status = L->status;
|
status = L->status;
|
||||||
|
}
|
||||||
|
--L->nCcalls;
|
||||||
lua_unlock(L);
|
lua_unlock(L);
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
@@ -441,7 +444,7 @@ LUA_API int lua_resume (lua_State *L, int nargs) {
|
|||||||
LUA_API int lua_yield (lua_State *L, int nresults) {
|
LUA_API int lua_yield (lua_State *L, int nresults) {
|
||||||
luai_userstateyield(L, nresults);
|
luai_userstateyield(L, nresults);
|
||||||
lua_lock(L);
|
lua_lock(L);
|
||||||
if (L->nCcalls > 0)
|
if (L->nCcalls > L->baseCcalls)
|
||||||
luaG_runerror(L, "attempt to yield across metamethod/C-call boundary");
|
luaG_runerror(L, "attempt to yield across metamethod/C-call boundary");
|
||||||
L->base = L->top - nresults; /* protect stack slots below */
|
L->base = L->top - nresults; /* protect stack slots below */
|
||||||
L->status = LUA_YIELD;
|
L->status = LUA_YIELD;
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: ldo.h 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: ldo.h,v 2.7.1.1 2007/12/27 13:02:25 roberto Exp $
|
||||||
** Stack and Call structure of Lua
|
** Stack and Call structure of Lua
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: ldump.c 25893 2007-04-21 20:08:12Z stevecheckoway $
|
** $Id: ldump.c,v 2.8.1.1 2007/12/27 13:02:25 roberto Exp $
|
||||||
** save precompiled Lua chunks
|
** save precompiled Lua chunks
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
|||||||
Vendored
+3
-3
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: lfunc.c 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: lfunc.c,v 2.12.1.2 2007/12/28 14:58:43 roberto Exp $
|
||||||
** Auxiliary functions to manipulate prototypes and closures
|
** Auxiliary functions to manipulate prototypes and closures
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
@@ -55,7 +55,7 @@ UpVal *luaF_findupval (lua_State *L, StkId level) {
|
|||||||
GCObject **pp = &L->openupval;
|
GCObject **pp = &L->openupval;
|
||||||
UpVal *p;
|
UpVal *p;
|
||||||
UpVal *uv;
|
UpVal *uv;
|
||||||
while ((p = ngcotouv(*pp)) != NULL && p->v >= level) {
|
while (*pp != NULL && (p = ngcotouv(*pp))->v >= level) {
|
||||||
lua_assert(p->v != &p->u.value);
|
lua_assert(p->v != &p->u.value);
|
||||||
if (p->v == level) { /* found a corresponding upvalue? */
|
if (p->v == level) { /* found a corresponding upvalue? */
|
||||||
if (isdead(g, obj2gco(p))) /* is it dead? */
|
if (isdead(g, obj2gco(p))) /* is it dead? */
|
||||||
@@ -96,7 +96,7 @@ void luaF_freeupval (lua_State *L, UpVal *uv) {
|
|||||||
void luaF_close (lua_State *L, StkId level) {
|
void luaF_close (lua_State *L, StkId level) {
|
||||||
UpVal *uv;
|
UpVal *uv;
|
||||||
global_State *g = G(L);
|
global_State *g = G(L);
|
||||||
while ((uv = ngcotouv(L->openupval)) != NULL && uv->v >= level) {
|
while (L->openupval != NULL && (uv = ngcotouv(L->openupval))->v >= level) {
|
||||||
GCObject *o = obj2gco(uv);
|
GCObject *o = obj2gco(uv);
|
||||||
lua_assert(!isblack(o) && uv->v != &uv->u.value);
|
lua_assert(!isblack(o) && uv->v != &uv->u.value);
|
||||||
L->openupval = uv->next; /* remove from `open' list */
|
L->openupval = uv->next; /* remove from `open' list */
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: lfunc.h 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: lfunc.h,v 2.4.1.1 2007/12/27 13:02:25 roberto Exp $
|
||||||
** Auxiliary functions to manipulate prototypes and closures
|
** Auxiliary functions to manipulate prototypes and closures
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
|||||||
Vendored
+1
-2
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: lgc.c 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: lgc.c,v 2.38.1.2 2011/03/18 18:05:38 roberto Exp $
|
||||||
** Garbage Collector
|
** Garbage Collector
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
@@ -627,7 +627,6 @@ void luaC_step (lua_State *L) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
lua_assert(g->totalbytes >= g->estimate);
|
|
||||||
setthreshold(g);
|
setthreshold(g);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: lgc.h 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: lgc.h,v 2.15.1.1 2007/12/27 13:02:25 roberto Exp $
|
||||||
** Garbage Collector
|
** Garbage Collector
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: linit.c 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: linit.c,v 1.14.1.1 2007/12/27 13:02:25 roberto Exp $
|
||||||
** Initialization of libraries for lua.c
|
** Initialization of libraries for lua.c
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
|||||||
Vendored
+49
-25
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: liolib.c 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: liolib.c,v 2.73.1.4 2010/05/14 15:33:51 roberto Exp $
|
||||||
** Standard I/O (and system) library
|
** Standard I/O (and system) library
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
@@ -51,7 +51,7 @@ static void fileerror (lua_State *L, int arg, const char *filename) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#define topfile(L) ((FILE **)luaL_checkudata(L, 1, LUA_FILEHANDLE))
|
#define tofilep(L) ((FILE **)luaL_checkudata(L, 1, LUA_FILEHANDLE))
|
||||||
|
|
||||||
|
|
||||||
static int io_type (lua_State *L) {
|
static int io_type (lua_State *L) {
|
||||||
@@ -70,7 +70,7 @@ static int io_type (lua_State *L) {
|
|||||||
|
|
||||||
|
|
||||||
static FILE *tofile (lua_State *L) {
|
static FILE *tofile (lua_State *L) {
|
||||||
FILE **f = topfile(L);
|
FILE **f = tofilep(L);
|
||||||
if (*f == NULL)
|
if (*f == NULL)
|
||||||
luaL_error(L, "attempt to use a closed file");
|
luaL_error(L, "attempt to use a closed file");
|
||||||
return *f;
|
return *f;
|
||||||
@@ -93,19 +93,31 @@ static FILE **newfile (lua_State *L) {
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** this function has a separated environment, which defines the
|
** function to (not) close the standard files stdin, stdout, and stderr
|
||||||
** correct __close for 'popen' files
|
*/
|
||||||
|
static int io_noclose (lua_State *L) {
|
||||||
|
lua_pushnil(L);
|
||||||
|
lua_pushliteral(L, "cannot close standard file");
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
** function to close 'popen' files
|
||||||
*/
|
*/
|
||||||
static int io_pclose (lua_State *L) {
|
static int io_pclose (lua_State *L) {
|
||||||
FILE **p = topfile(L);
|
FILE **p = tofilep(L);
|
||||||
int ok = lua_pclose(L, *p);
|
int ok = lua_pclose(L, *p);
|
||||||
*p = NULL;
|
*p = NULL;
|
||||||
return pushresult(L, ok, NULL);
|
return pushresult(L, ok, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
** function to close regular files
|
||||||
|
*/
|
||||||
static int io_fclose (lua_State *L) {
|
static int io_fclose (lua_State *L) {
|
||||||
FILE **p = topfile(L);
|
FILE **p = tofilep(L);
|
||||||
int ok = (fclose(*p) == 0);
|
int ok = (fclose(*p) == 0);
|
||||||
*p = NULL;
|
*p = NULL;
|
||||||
return pushresult(L, ok, NULL);
|
return pushresult(L, ok, NULL);
|
||||||
@@ -128,18 +140,18 @@ static int io_close (lua_State *L) {
|
|||||||
|
|
||||||
|
|
||||||
static int io_gc (lua_State *L) {
|
static int io_gc (lua_State *L) {
|
||||||
FILE *f = *topfile(L);
|
FILE *f = *tofilep(L);
|
||||||
/* ignore closed files and standard files */
|
/* ignore closed files */
|
||||||
if (f != NULL && f != stdin && f != stdout && f != stderr)
|
if (f != NULL)
|
||||||
aux_close(L);
|
aux_close(L);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int io_tostring (lua_State *L) {
|
static int io_tostring (lua_State *L) {
|
||||||
FILE *f = *topfile(L);
|
FILE *f = *tofilep(L);
|
||||||
if (f == NULL)
|
if (f == NULL)
|
||||||
lua_pushstring(L, "file (closed)");
|
lua_pushliteral(L, "file (closed)");
|
||||||
else
|
else
|
||||||
lua_pushfstring(L, "file (%p)", f);
|
lua_pushfstring(L, "file (%p)", f);
|
||||||
return 1;
|
return 1;
|
||||||
@@ -155,6 +167,10 @@ static int io_open (lua_State *L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
** this function has a separated environment, which defines the
|
||||||
|
** correct __close for 'popen' files
|
||||||
|
*/
|
||||||
static int io_popen (lua_State *L) {
|
static int io_popen (lua_State *L) {
|
||||||
const char *filename = luaL_checkstring(L, 1);
|
const char *filename = luaL_checkstring(L, 1);
|
||||||
const char *mode = luaL_optstring(L, 2, "r");
|
const char *mode = luaL_optstring(L, 2, "r");
|
||||||
@@ -260,7 +276,10 @@ static int read_number (lua_State *L, FILE *f) {
|
|||||||
lua_pushnumber(L, d);
|
lua_pushnumber(L, d);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else return 0; /* read fails */
|
else {
|
||||||
|
lua_pushnil(L); /* "result" to be removed */
|
||||||
|
return 0; /* read fails */
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -280,7 +299,7 @@ static int read_line (lua_State *L, FILE *f) {
|
|||||||
char *p = luaL_prepbuffer(&b);
|
char *p = luaL_prepbuffer(&b);
|
||||||
if (fgets(p, LUAL_BUFFERSIZE, f) == NULL) { /* eof? */
|
if (fgets(p, LUAL_BUFFERSIZE, f) == NULL) { /* eof? */
|
||||||
luaL_pushresult(&b); /* close buffer */
|
luaL_pushresult(&b); /* close buffer */
|
||||||
return (lua_strlen(L, -1) > 0); /* check whether read something */
|
return (lua_objlen(L, -1) > 0); /* check whether read something */
|
||||||
}
|
}
|
||||||
l = strlen(p);
|
l = strlen(p);
|
||||||
if (l == 0 || p[l-1] != '\n')
|
if (l == 0 || p[l-1] != '\n')
|
||||||
@@ -308,7 +327,7 @@ static int read_chars (lua_State *L, FILE *f, size_t n) {
|
|||||||
n -= nr; /* still have to read `n' chars */
|
n -= nr; /* still have to read `n' chars */
|
||||||
} while (n > 0 && nr == rlen); /* until end of count or eof */
|
} while (n > 0 && nr == rlen); /* until end of count or eof */
|
||||||
luaL_pushresult(&b); /* close buffer */
|
luaL_pushresult(&b); /* close buffer */
|
||||||
return (n == 0 || lua_strlen(L, -1) > 0);
|
return (n == 0 || lua_objlen(L, -1) > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -502,31 +521,36 @@ static void createstdfile (lua_State *L, FILE *f, int k, const char *fname) {
|
|||||||
lua_pushvalue(L, -1);
|
lua_pushvalue(L, -1);
|
||||||
lua_rawseti(L, LUA_ENVIRONINDEX, k);
|
lua_rawseti(L, LUA_ENVIRONINDEX, k);
|
||||||
}
|
}
|
||||||
lua_setfield(L, -2, fname);
|
lua_pushvalue(L, -2); /* copy environment */
|
||||||
|
lua_setfenv(L, -2); /* set it */
|
||||||
|
lua_setfield(L, -3, fname);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void newfenv (lua_State *L, lua_CFunction cls) {
|
||||||
|
lua_createtable(L, 0, 1);
|
||||||
|
lua_pushcfunction(L, cls);
|
||||||
|
lua_setfield(L, -2, "__close");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
LUALIB_API int luaopen_io (lua_State *L) {
|
LUALIB_API int luaopen_io (lua_State *L) {
|
||||||
createmeta(L);
|
createmeta(L);
|
||||||
/* create (private) environment (with fields IO_INPUT, IO_OUTPUT, __close) */
|
/* create (private) environment (with fields IO_INPUT, IO_OUTPUT, __close) */
|
||||||
lua_createtable(L, 2, 1);
|
newfenv(L, io_fclose);
|
||||||
lua_replace(L, LUA_ENVIRONINDEX);
|
lua_replace(L, LUA_ENVIRONINDEX);
|
||||||
/* open library */
|
/* open library */
|
||||||
luaL_register(L, LUA_IOLIBNAME, iolib);
|
luaL_register(L, LUA_IOLIBNAME, iolib);
|
||||||
/* create (and set) default files */
|
/* create (and set) default files */
|
||||||
|
newfenv(L, io_noclose); /* close function for default files */
|
||||||
createstdfile(L, stdin, IO_INPUT, "stdin");
|
createstdfile(L, stdin, IO_INPUT, "stdin");
|
||||||
createstdfile(L, stdout, IO_OUTPUT, "stdout");
|
createstdfile(L, stdout, IO_OUTPUT, "stdout");
|
||||||
createstdfile(L, stderr, 0, "stderr");
|
createstdfile(L, stderr, 0, "stderr");
|
||||||
/* create environment for 'popen' */
|
lua_pop(L, 1); /* pop environment for default files */
|
||||||
lua_getfield(L, -1, "popen");
|
lua_getfield(L, -1, "popen");
|
||||||
lua_createtable(L, 0, 1);
|
newfenv(L, io_pclose); /* create environment for 'popen' */
|
||||||
lua_pushcfunction(L, io_pclose);
|
lua_setfenv(L, -2); /* set fenv for 'popen' */
|
||||||
lua_setfield(L, -2, "__close");
|
|
||||||
lua_setfenv(L, -2);
|
|
||||||
lua_pop(L, 1); /* pop 'popen' */
|
lua_pop(L, 1); /* pop 'popen' */
|
||||||
/* set default close function */
|
|
||||||
lua_pushcfunction(L, io_fclose);
|
|
||||||
lua_setfield(L, LUA_ENVIRONINDEX, "__close");
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+4
-2
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: llex.c 23491 2006-10-12 09:18:05Z gmaynard $
|
** $Id: llex.c,v 2.20.1.2 2009/11/23 14:58:22 roberto Exp $
|
||||||
** Lexical Analyzer
|
** Lexical Analyzer
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
@@ -118,8 +118,10 @@ TString *luaX_newstring (LexState *ls, const char *str, size_t l) {
|
|||||||
lua_State *L = ls->L;
|
lua_State *L = ls->L;
|
||||||
TString *ts = luaS_newlstr(L, str, l);
|
TString *ts = luaS_newlstr(L, str, l);
|
||||||
TValue *o = luaH_setstr(L, ls->fs->h, ts); /* entry for `str' */
|
TValue *o = luaH_setstr(L, ls->fs->h, ts); /* entry for `str' */
|
||||||
if (ttisnil(o))
|
if (ttisnil(o)) {
|
||||||
setbvalue(o, 1); /* make sure `str' will not be collected */
|
setbvalue(o, 1); /* make sure `str' will not be collected */
|
||||||
|
luaC_checkGC(L);
|
||||||
|
}
|
||||||
return ts;
|
return ts;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: llex.h 23491 2006-10-12 09:18:05Z gmaynard $
|
** $Id: llex.h,v 1.58.1.1 2007/12/27 13:02:25 roberto Exp $
|
||||||
** Lexical Analyzer
|
** Lexical Analyzer
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: llimits.h 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: llimits.h,v 1.69.1.1 2007/12/27 13:02:25 roberto Exp $
|
||||||
** Limits, basic types, and some other `installation-dependent' definitions
|
** Limits, basic types, and some other `installation-dependent' definitions
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: lmathlib.c 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: lmathlib.c,v 1.67.1.1 2007/12/27 13:02:25 roberto Exp $
|
||||||
** Standard mathematical library
|
** Standard mathematical library
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: lmem.c 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: lmem.c,v 1.70.1.1 2007/12/27 13:02:25 roberto Exp $
|
||||||
** Interface to Memory Manager
|
** Interface to Memory Manager
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: lmem.h 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: lmem.h,v 1.31.1.1 2007/12/27 13:02:25 roberto Exp $
|
||||||
** Interface to Memory Manager
|
** Interface to Memory Manager
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
|||||||
Vendored
+20
-17
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: loadlib.c 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: loadlib.c,v 1.52.1.4 2009/09/09 13:17:16 roberto Exp $
|
||||||
** Dynamic library loader for Lua
|
** Dynamic library loader for Lua
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
**
|
**
|
||||||
@@ -16,9 +16,9 @@
|
|||||||
#define loadlib_c
|
#define loadlib_c
|
||||||
#define LUA_LIB
|
#define LUA_LIB
|
||||||
|
|
||||||
#include "lauxlib.h"
|
|
||||||
#include "lobject.h"
|
|
||||||
#include "lua.h"
|
#include "lua.h"
|
||||||
|
|
||||||
|
#include "lauxlib.h"
|
||||||
#include "lualib.h"
|
#include "lualib.h"
|
||||||
|
|
||||||
|
|
||||||
@@ -98,7 +98,7 @@ static void setprogdir (lua_State *L) {
|
|||||||
char buff[MAX_PATH + 1];
|
char buff[MAX_PATH + 1];
|
||||||
char *lb;
|
char *lb;
|
||||||
DWORD nsize = sizeof(buff)/sizeof(char);
|
DWORD nsize = sizeof(buff)/sizeof(char);
|
||||||
DWORD n = GetModuleFileName(NULL, buff, nsize);
|
DWORD n = GetModuleFileNameA(NULL, buff, nsize);
|
||||||
if (n == 0 || n == nsize || (lb = strrchr(buff, '\\')) == NULL)
|
if (n == 0 || n == nsize || (lb = strrchr(buff, '\\')) == NULL)
|
||||||
luaL_error(L, "unable to get ModuleFileName");
|
luaL_error(L, "unable to get ModuleFileName");
|
||||||
else {
|
else {
|
||||||
@@ -112,7 +112,7 @@ static void setprogdir (lua_State *L) {
|
|||||||
static void pusherror (lua_State *L) {
|
static void pusherror (lua_State *L) {
|
||||||
int error = GetLastError();
|
int error = GetLastError();
|
||||||
char buffer[128];
|
char buffer[128];
|
||||||
if (FormatMessage(FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_FROM_SYSTEM,
|
if (FormatMessageA(FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_FROM_SYSTEM,
|
||||||
NULL, error, 0, buffer, sizeof(buffer), NULL))
|
NULL, error, 0, buffer, sizeof(buffer), NULL))
|
||||||
lua_pushstring(L, buffer);
|
lua_pushstring(L, buffer);
|
||||||
else
|
else
|
||||||
@@ -125,7 +125,7 @@ static void ll_unloadlib (void *lib) {
|
|||||||
|
|
||||||
|
|
||||||
static void *ll_load (lua_State *L, const char *path) {
|
static void *ll_load (lua_State *L, const char *path) {
|
||||||
HINSTANCE lib = LoadLibrary(path);
|
HINSTANCE lib = LoadLibraryA(path);
|
||||||
if (lib == NULL) pusherror(L);
|
if (lib == NULL) pusherror(L);
|
||||||
return lib;
|
return lib;
|
||||||
}
|
}
|
||||||
@@ -356,15 +356,16 @@ static const char *findfile (lua_State *L, const char *name,
|
|||||||
path = lua_tostring(L, -1);
|
path = lua_tostring(L, -1);
|
||||||
if (path == NULL)
|
if (path == NULL)
|
||||||
luaL_error(L, LUA_QL("package.%s") " must be a string", pname);
|
luaL_error(L, LUA_QL("package.%s") " must be a string", pname);
|
||||||
lua_pushstring(L, ""); /* error accumulator */
|
lua_pushliteral(L, ""); /* error accumulator */
|
||||||
while ((path = pushnexttemplate(L, path)) != NULL) {
|
while ((path = pushnexttemplate(L, path)) != NULL) {
|
||||||
const char *filename;
|
const char *filename;
|
||||||
filename = luaL_gsub(L, lua_tostring(L, -1), LUA_PATH_MARK, name);
|
filename = luaL_gsub(L, lua_tostring(L, -1), LUA_PATH_MARK, name);
|
||||||
|
lua_remove(L, -2); /* remove path template */
|
||||||
if (readable(filename)) /* does file exist and is readable? */
|
if (readable(filename)) /* does file exist and is readable? */
|
||||||
return filename; /* return that file name */
|
return filename; /* return that file name */
|
||||||
lua_pop(L, 2); /* remove path template and file name */
|
lua_pushfstring(L, "\n\tno file " LUA_QS, filename);
|
||||||
luaO_pushfstring(L, "\n\tno file " LUA_QS, filename);
|
lua_remove(L, -2); /* remove file name */
|
||||||
lua_concat(L, 2);
|
lua_concat(L, 2); /* add entry to possible error message */
|
||||||
}
|
}
|
||||||
return NULL; /* not found */
|
return NULL; /* not found */
|
||||||
}
|
}
|
||||||
@@ -423,7 +424,7 @@ static int loader_Croot (lua_State *L) {
|
|||||||
funcname = mkfuncname(L, name);
|
funcname = mkfuncname(L, name);
|
||||||
if ((stat = ll_loadfunc(L, filename, funcname)) != 0) {
|
if ((stat = ll_loadfunc(L, filename, funcname)) != 0) {
|
||||||
if (stat != ERRFUNC) loaderror(L, filename); /* real error */
|
if (stat != ERRFUNC) loaderror(L, filename); /* real error */
|
||||||
luaO_pushfstring(L, "\n\tno module " LUA_QS " in file " LUA_QS,
|
lua_pushfstring(L, "\n\tno module " LUA_QS " in file " LUA_QS,
|
||||||
name, filename);
|
name, filename);
|
||||||
return 1; /* function not found */
|
return 1; /* function not found */
|
||||||
}
|
}
|
||||||
@@ -438,7 +439,7 @@ static int loader_preload (lua_State *L) {
|
|||||||
luaL_error(L, LUA_QL("package.preload") " must be a table");
|
luaL_error(L, LUA_QL("package.preload") " must be a table");
|
||||||
lua_getfield(L, -1, name);
|
lua_getfield(L, -1, name);
|
||||||
if (lua_isnil(L, -1)) /* not found? */
|
if (lua_isnil(L, -1)) /* not found? */
|
||||||
luaO_pushfstring(L, "\n\tno field package.preload['%s']", name);
|
lua_pushfstring(L, "\n\tno field package.preload['%s']", name);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -462,7 +463,7 @@ static int ll_require (lua_State *L) {
|
|||||||
lua_getfield(L, LUA_ENVIRONINDEX, "loaders");
|
lua_getfield(L, LUA_ENVIRONINDEX, "loaders");
|
||||||
if (!lua_istable(L, -1))
|
if (!lua_istable(L, -1))
|
||||||
luaL_error(L, LUA_QL("package.loaders") " must be a table");
|
luaL_error(L, LUA_QL("package.loaders") " must be a table");
|
||||||
lua_pushstring(L, ""); /* error message accumulator */
|
lua_pushliteral(L, ""); /* error message accumulator */
|
||||||
for (i=1; ; i++) {
|
for (i=1; ; i++) {
|
||||||
lua_rawgeti(L, -2, i); /* get a loader */
|
lua_rawgeti(L, -2, i); /* get a loader */
|
||||||
if (lua_isnil(L, -1))
|
if (lua_isnil(L, -1))
|
||||||
@@ -505,8 +506,10 @@ static int ll_require (lua_State *L) {
|
|||||||
|
|
||||||
static void setfenv (lua_State *L) {
|
static void setfenv (lua_State *L) {
|
||||||
lua_Debug ar;
|
lua_Debug ar;
|
||||||
lua_getstack(L, 1, &ar);
|
if (lua_getstack(L, 1, &ar) == 0 ||
|
||||||
lua_getinfo(L, "f", &ar);
|
lua_getinfo(L, "f", &ar) == 0 || /* get calling function */
|
||||||
|
lua_iscfunction(L, -1))
|
||||||
|
luaL_error(L, LUA_QL("module") " not called from a Lua function");
|
||||||
lua_pushvalue(L, -2);
|
lua_pushvalue(L, -2);
|
||||||
lua_setfenv(L, -2);
|
lua_setfenv(L, -2);
|
||||||
lua_pop(L, 1);
|
lua_pop(L, 1);
|
||||||
@@ -636,7 +639,7 @@ LUALIB_API int luaopen_package (lua_State *L) {
|
|||||||
lua_pushvalue(L, -1);
|
lua_pushvalue(L, -1);
|
||||||
lua_replace(L, LUA_ENVIRONINDEX);
|
lua_replace(L, LUA_ENVIRONINDEX);
|
||||||
/* create `loaders' table */
|
/* create `loaders' table */
|
||||||
lua_createtable(L, 0, sizeof(loaders)/sizeof(loaders[0]) - 1);
|
lua_createtable(L, sizeof(loaders)/sizeof(loaders[0]) - 1, 0);
|
||||||
/* fill it with pre-defined loaders */
|
/* fill it with pre-defined loaders */
|
||||||
for (i=0; loaders[i] != NULL; i++) {
|
for (i=0; loaders[i] != NULL; i++) {
|
||||||
lua_pushcfunction(L, loaders[i]);
|
lua_pushcfunction(L, loaders[i]);
|
||||||
@@ -646,7 +649,7 @@ LUALIB_API int luaopen_package (lua_State *L) {
|
|||||||
setpath(L, "path", LUA_PATH, LUA_PATH_DEFAULT); /* set field `path' */
|
setpath(L, "path", LUA_PATH, LUA_PATH_DEFAULT); /* set field `path' */
|
||||||
setpath(L, "cpath", LUA_CPATH, LUA_CPATH_DEFAULT); /* set field `cpath' */
|
setpath(L, "cpath", LUA_CPATH, LUA_CPATH_DEFAULT); /* set field `cpath' */
|
||||||
/* store config information */
|
/* store config information */
|
||||||
lua_pushstring(L, LUA_DIRSEP "\n" LUA_PATHSEP "\n" LUA_PATH_MARK "\n"
|
lua_pushliteral(L, LUA_DIRSEP "\n" LUA_PATHSEP "\n" LUA_PATH_MARK "\n"
|
||||||
LUA_EXECDIR "\n" LUA_IGMARK);
|
LUA_EXECDIR "\n" LUA_IGMARK);
|
||||||
lua_setfield(L, -2, "config");
|
lua_setfield(L, -2, "config");
|
||||||
/* set field `loaded' */
|
/* set field `loaded' */
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: lobject.c 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: lobject.c,v 2.22.1.1 2007/12/27 13:02:25 roberto Exp $
|
||||||
** Some generic functions over Lua objects
|
** Some generic functions over Lua objects
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
|||||||
Vendored
+2
-2
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: lobject.h 25893 2007-04-21 20:08:12Z stevecheckoway $
|
** $Id: lobject.h,v 2.20.1.2 2008/08/06 13:29:48 roberto Exp $
|
||||||
** Type definitions for Lua objects
|
** Type definitions for Lua objects
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
@@ -208,7 +208,7 @@ typedef union TString {
|
|||||||
|
|
||||||
|
|
||||||
#define getstr(ts) cast(const char *, (ts) + 1)
|
#define getstr(ts) cast(const char *, (ts) + 1)
|
||||||
#define svalue(o) getstr(tsvalue(o))
|
#define svalue(o) getstr(rawtsvalue(o))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: lopcodes.c 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: lopcodes.c,v 1.37.1.1 2007/12/27 13:02:25 roberto Exp $
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: lopcodes.h 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: lopcodes.h,v 1.125.1.1 2007/12/27 13:02:25 roberto Exp $
|
||||||
** Opcodes for Lua virtual machine
|
** Opcodes for Lua virtual machine
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
|||||||
Vendored
+17
-7
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: loslib.c 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: loslib.c,v 1.19.1.3 2008/01/18 16:38:18 roberto Exp $
|
||||||
** Standard Operating System library
|
** Standard Operating System library
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
@@ -146,11 +146,22 @@ static int os_date (lua_State *L) {
|
|||||||
setboolfield(L, "isdst", stm->tm_isdst);
|
setboolfield(L, "isdst", stm->tm_isdst);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
char b[256];
|
char cc[3];
|
||||||
if (strftime(b, sizeof(b), s, stm))
|
luaL_Buffer b;
|
||||||
lua_pushstring(L, b);
|
cc[0] = '%'; cc[2] = '\0';
|
||||||
else
|
luaL_buffinit(L, &b);
|
||||||
return luaL_error(L, LUA_QL("date") " format too long");
|
for (; *s; s++) {
|
||||||
|
if (*s != '%' || *(s + 1) == '\0') /* no conversion specifier? */
|
||||||
|
luaL_addchar(&b, *s);
|
||||||
|
else {
|
||||||
|
size_t reslen;
|
||||||
|
char buff[200]; /* should be big enough for any conversion result */
|
||||||
|
cc[1] = *(++s);
|
||||||
|
reslen = strftime(buff, sizeof(buff), cc, stm);
|
||||||
|
luaL_addlstring(&b, buff, reslen);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
luaL_pushresult(&b);
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@@ -204,7 +215,6 @@ static int os_setlocale (lua_State *L) {
|
|||||||
|
|
||||||
static int os_exit (lua_State *L) {
|
static int os_exit (lua_State *L) {
|
||||||
exit(luaL_optint(L, 1, EXIT_SUCCESS));
|
exit(luaL_optint(L, 1, EXIT_SUCCESS));
|
||||||
return 0; /* to avoid warnings */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static const luaL_Reg syslib[] = {
|
static const luaL_Reg syslib[] = {
|
||||||
|
|||||||
Vendored
+5
-3
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: lparser.c 25896 2007-04-21 20:58:22Z stevecheckoway $
|
** $Id: lparser.c,v 2.42.1.4 2011/10/21 19:31:42 roberto Exp $
|
||||||
** Lua Parser
|
** Lua Parser
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
@@ -374,9 +374,9 @@ static void close_func (LexState *ls) {
|
|||||||
lua_assert(luaG_checkcode(f));
|
lua_assert(luaG_checkcode(f));
|
||||||
lua_assert(fs->bl == NULL);
|
lua_assert(fs->bl == NULL);
|
||||||
ls->fs = fs->prev;
|
ls->fs = fs->prev;
|
||||||
L->top -= 2; /* remove table and prototype from the stack */
|
|
||||||
/* last token read was anchored in defunct function; must reanchor it */
|
/* last token read was anchored in defunct function; must reanchor it */
|
||||||
if (fs) anchor_token(ls);
|
if (fs) anchor_token(ls);
|
||||||
|
L->top -= 2; /* remove table and prototype from the stack */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -489,7 +489,7 @@ static void lastlistfield (FuncState *fs, struct ConsControl *cc) {
|
|||||||
|
|
||||||
static void listfield (LexState *ls, struct ConsControl *cc) {
|
static void listfield (LexState *ls, struct ConsControl *cc) {
|
||||||
expr(ls, &cc->v);
|
expr(ls, &cc->v);
|
||||||
luaY_checklimit(ls->fs, cc->na, MAXARG_Bx, "items in a constructor");
|
luaY_checklimit(ls->fs, cc->na, MAX_INT, "items in a constructor");
|
||||||
cc->na++;
|
cc->na++;
|
||||||
cc->tostore++;
|
cc->tostore++;
|
||||||
}
|
}
|
||||||
@@ -1023,6 +1023,8 @@ static void assignment (LexState *ls, struct LHS_assign *lh, int nvars) {
|
|||||||
primaryexp(ls, &nv.v);
|
primaryexp(ls, &nv.v);
|
||||||
if (nv.v.k == VLOCAL)
|
if (nv.v.k == VLOCAL)
|
||||||
check_conflict(ls, lh, &nv.v);
|
check_conflict(ls, lh, &nv.v);
|
||||||
|
luaY_checklimit(ls->fs, nvars, LUAI_MAXCCALLS - ls->L->nCcalls,
|
||||||
|
"variables in assignment");
|
||||||
assignment(ls, &nv, nvars+1);
|
assignment(ls, &nv, nvars+1);
|
||||||
}
|
}
|
||||||
else { /* assignment -> `=' explist1 */
|
else { /* assignment -> `=' explist1 */
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: lparser.h 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: lparser.h,v 1.57.1.1 2007/12/27 13:02:25 roberto Exp $
|
||||||
** Lua Parser
|
** Lua Parser
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
|||||||
Vendored
+3
-3
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: lstate.c 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: lstate.c,v 2.36.1.2 2008/01/03 15:20:39 roberto Exp $
|
||||||
** Global State
|
** Global State
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
@@ -93,7 +93,7 @@ static void preinit_state (lua_State *L, global_State *g) {
|
|||||||
resethookcount(L);
|
resethookcount(L);
|
||||||
L->openupval = NULL;
|
L->openupval = NULL;
|
||||||
L->size_ci = 0;
|
L->size_ci = 0;
|
||||||
L->nCcalls = 0;
|
L->nCcalls = L->baseCcalls = 0;
|
||||||
L->status = 0;
|
L->status = 0;
|
||||||
L->base_ci = L->ci = NULL;
|
L->base_ci = L->ci = NULL;
|
||||||
L->savedpc = NULL;
|
L->savedpc = NULL;
|
||||||
@@ -205,7 +205,7 @@ LUA_API void lua_close (lua_State *L) {
|
|||||||
do { /* repeat until no more errors */
|
do { /* repeat until no more errors */
|
||||||
L->ci = L->base_ci;
|
L->ci = L->base_ci;
|
||||||
L->base = L->top = L->ci->base;
|
L->base = L->top = L->ci->base;
|
||||||
L->nCcalls = 0;
|
L->nCcalls = L->baseCcalls = 0;
|
||||||
} while (luaD_rawrunprotected(L, callallgcTM, NULL) != 0);
|
} while (luaD_rawrunprotected(L, callallgcTM, NULL) != 0);
|
||||||
lua_assert(G(L)->tmudata == NULL);
|
lua_assert(G(L)->tmudata == NULL);
|
||||||
luai_userstateclose(L);
|
luai_userstateclose(L);
|
||||||
|
|||||||
Vendored
+2
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: lstate.h 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: lstate.h,v 2.24.1.2 2008/01/03 15:20:39 roberto Exp $
|
||||||
** Global State
|
** Global State
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
@@ -112,6 +112,7 @@ struct lua_State {
|
|||||||
int stacksize;
|
int stacksize;
|
||||||
int size_ci; /* size of array `base_ci' */
|
int size_ci; /* size of array `base_ci' */
|
||||||
unsigned short nCcalls; /* number of nested C calls */
|
unsigned short nCcalls; /* number of nested C calls */
|
||||||
|
unsigned short baseCcalls; /* nested C calls when resuming coroutine */
|
||||||
lu_byte hookmask;
|
lu_byte hookmask;
|
||||||
lu_byte allowhook;
|
lu_byte allowhook;
|
||||||
int basehookcount;
|
int basehookcount;
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: lstring.c 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: lstring.c,v 2.8.1.1 2007/12/27 13:02:25 roberto Exp $
|
||||||
** String table (keeps all strings handled by Lua)
|
** String table (keeps all strings handled by Lua)
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: lstring.h 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: lstring.h,v 1.43.1.1 2007/12/27 13:02:25 roberto Exp $
|
||||||
** String table (keep all strings handled by Lua)
|
** String table (keep all strings handled by Lua)
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
|||||||
Vendored
+11
-8
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: lstrlib.c 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: lstrlib.c,v 1.132.1.5 2010/05/14 15:34:19 roberto Exp $
|
||||||
** Standard library for string operations and pattern-matching
|
** Standard library for string operations and pattern-matching
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
@@ -35,7 +35,8 @@ static int str_len (lua_State *L) {
|
|||||||
|
|
||||||
static ptrdiff_t posrelat (ptrdiff_t pos, size_t len) {
|
static ptrdiff_t posrelat (ptrdiff_t pos, size_t len) {
|
||||||
/* relative string position: negative means back from end */
|
/* relative string position: negative means back from end */
|
||||||
return (pos>=0) ? pos : (ptrdiff_t)len+pos+1;
|
if (pos < 0) pos += (ptrdiff_t)len + 1;
|
||||||
|
return (pos >= 0) ? pos : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -629,10 +630,6 @@ static void add_value (MatchState *ms, luaL_Buffer *b, const char *s,
|
|||||||
lua_gettable(L, 3);
|
lua_gettable(L, 3);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default: {
|
|
||||||
luaL_argerror(L, 3, "string/function/table expected");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (!lua_toboolean(L, -1)) { /* nil or false? */
|
if (!lua_toboolean(L, -1)) { /* nil or false? */
|
||||||
lua_pop(L, 1);
|
lua_pop(L, 1);
|
||||||
@@ -648,11 +645,15 @@ static int str_gsub (lua_State *L) {
|
|||||||
size_t srcl;
|
size_t srcl;
|
||||||
const char *src = luaL_checklstring(L, 1, &srcl);
|
const char *src = luaL_checklstring(L, 1, &srcl);
|
||||||
const char *p = luaL_checkstring(L, 2);
|
const char *p = luaL_checkstring(L, 2);
|
||||||
|
int tr = lua_type(L, 3);
|
||||||
int max_s = luaL_optint(L, 4, srcl+1);
|
int max_s = luaL_optint(L, 4, srcl+1);
|
||||||
int anchor = (*p == '^') ? (p++, 1) : 0;
|
int anchor = (*p == '^') ? (p++, 1) : 0;
|
||||||
int n = 0;
|
int n = 0;
|
||||||
MatchState ms;
|
MatchState ms;
|
||||||
luaL_Buffer b;
|
luaL_Buffer b;
|
||||||
|
luaL_argcheck(L, tr == LUA_TNUMBER || tr == LUA_TSTRING ||
|
||||||
|
tr == LUA_TFUNCTION || tr == LUA_TTABLE, 3,
|
||||||
|
"string/function/table expected");
|
||||||
luaL_buffinit(L, &b);
|
luaL_buffinit(L, &b);
|
||||||
ms.L = L;
|
ms.L = L;
|
||||||
ms.src_init = src;
|
ms.src_init = src;
|
||||||
@@ -723,7 +724,7 @@ static void addquoted (lua_State *L, luaL_Buffer *b, int arg) {
|
|||||||
|
|
||||||
static const char *scanformat (lua_State *L, const char *strfrmt, char *form) {
|
static const char *scanformat (lua_State *L, const char *strfrmt, char *form) {
|
||||||
const char *p = strfrmt;
|
const char *p = strfrmt;
|
||||||
while (strchr(FLAGS, *p)) p++; /* skip flags */
|
while (*p != '\0' && strchr(FLAGS, *p) != NULL) p++; /* skip flags */
|
||||||
if ((size_t)(p - strfrmt) >= sizeof(FLAGS))
|
if ((size_t)(p - strfrmt) >= sizeof(FLAGS))
|
||||||
luaL_error(L, "invalid format (repeated flags)");
|
luaL_error(L, "invalid format (repeated flags)");
|
||||||
if (isdigit(uchar(*p))) p++; /* skip width */
|
if (isdigit(uchar(*p))) p++; /* skip width */
|
||||||
@@ -753,6 +754,7 @@ static void addintlen (char *form) {
|
|||||||
|
|
||||||
|
|
||||||
static int str_format (lua_State *L) {
|
static int str_format (lua_State *L) {
|
||||||
|
int top = lua_gettop(L);
|
||||||
int arg = 1;
|
int arg = 1;
|
||||||
size_t sfl;
|
size_t sfl;
|
||||||
const char *strfrmt = luaL_checklstring(L, arg, &sfl);
|
const char *strfrmt = luaL_checklstring(L, arg, &sfl);
|
||||||
@@ -767,7 +769,8 @@ static int str_format (lua_State *L) {
|
|||||||
else { /* format item */
|
else { /* format item */
|
||||||
char form[MAX_FORMAT]; /* to store the format (`%...') */
|
char form[MAX_FORMAT]; /* to store the format (`%...') */
|
||||||
char buff[MAX_ITEM]; /* to store the formatted item */
|
char buff[MAX_ITEM]; /* to store the formatted item */
|
||||||
arg++;
|
if (++arg > top)
|
||||||
|
luaL_argerror(L, arg, "no value");
|
||||||
strfrmt = scanformat(L, strfrmt, form);
|
strfrmt = scanformat(L, strfrmt, form);
|
||||||
switch (*strfrmt++) {
|
switch (*strfrmt++) {
|
||||||
case 'c': {
|
case 'c': {
|
||||||
|
|||||||
Vendored
+3
-3
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: ltable.c 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: ltable.c,v 2.32.1.2 2007/12/28 15:32:23 roberto Exp $
|
||||||
** Lua tables (hash)
|
** Lua tables (hash)
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
@@ -84,8 +84,8 @@ static const Node dummynode_ = {
|
|||||||
static Node *hashnum (const Table *t, lua_Number n) {
|
static Node *hashnum (const Table *t, lua_Number n) {
|
||||||
unsigned int a[numints];
|
unsigned int a[numints];
|
||||||
int i;
|
int i;
|
||||||
n += 1; /* normalize number (avoid -0) */
|
if (luai_numeq(n, 0)) /* avoid problems with -0 */
|
||||||
lua_assert(sizeof(a) <= sizeof(n));
|
return gnode(t, 0);
|
||||||
memcpy(a, &n, sizeof(a));
|
memcpy(a, &n, sizeof(a));
|
||||||
for (i = 1; i < numints; i++) a[0] += a[i];
|
for (i = 1; i < numints; i++) a[0] += a[i];
|
||||||
return hashmod(t, a[0]);
|
return hashmod(t, a[0]);
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: ltable.h 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: ltable.h,v 2.10.1.1 2007/12/27 13:02:25 roberto Exp $
|
||||||
** Lua tables (hash)
|
** Lua tables (hash)
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
|||||||
Vendored
+16
-7
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: ltablib.c 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: ltablib.c,v 1.38.1.3 2008/02/14 16:46:58 roberto Exp $
|
||||||
** Library for Table Manipulation
|
** Library for Table Manipulation
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
@@ -118,7 +118,8 @@ static int tinsert (lua_State *L) {
|
|||||||
static int tremove (lua_State *L) {
|
static int tremove (lua_State *L) {
|
||||||
int e = aux_getn(L, 1);
|
int e = aux_getn(L, 1);
|
||||||
int pos = luaL_optint(L, 2, e);
|
int pos = luaL_optint(L, 2, e);
|
||||||
if (e == 0) return 0; /* table is `empty' */
|
if (!(1 <= pos && pos <= e)) /* position is outside bounds? */
|
||||||
|
return 0; /* nothing to remove */
|
||||||
luaL_setn(L, 1, e - 1); /* t.n = n-1 */
|
luaL_setn(L, 1, e - 1); /* t.n = n-1 */
|
||||||
lua_rawgeti(L, 1, pos); /* result = t[pos] */
|
lua_rawgeti(L, 1, pos); /* result = t[pos] */
|
||||||
for ( ;pos<e; pos++) {
|
for ( ;pos<e; pos++) {
|
||||||
@@ -131,6 +132,15 @@ static int tremove (lua_State *L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void addfield (lua_State *L, luaL_Buffer *b, int i) {
|
||||||
|
lua_rawgeti(L, 1, i);
|
||||||
|
if (!lua_isstring(L, -1))
|
||||||
|
luaL_error(L, "invalid value (%s) at index %d in table for "
|
||||||
|
LUA_QL("concat"), luaL_typename(L, -1), i);
|
||||||
|
luaL_addvalue(b);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static int tconcat (lua_State *L) {
|
static int tconcat (lua_State *L) {
|
||||||
luaL_Buffer b;
|
luaL_Buffer b;
|
||||||
size_t lsep;
|
size_t lsep;
|
||||||
@@ -140,13 +150,12 @@ static int tconcat (lua_State *L) {
|
|||||||
i = luaL_optint(L, 3, 1);
|
i = luaL_optint(L, 3, 1);
|
||||||
last = luaL_opt(L, luaL_checkint, 4, luaL_getn(L, 1));
|
last = luaL_opt(L, luaL_checkint, 4, luaL_getn(L, 1));
|
||||||
luaL_buffinit(L, &b);
|
luaL_buffinit(L, &b);
|
||||||
for (; i <= last; i++) {
|
for (; i < last; i++) {
|
||||||
lua_rawgeti(L, 1, i);
|
addfield(L, &b, i);
|
||||||
luaL_argcheck(L, lua_isstring(L, -1), 1, "table contains non-strings");
|
|
||||||
luaL_addvalue(&b);
|
|
||||||
if (i != last)
|
|
||||||
luaL_addlstring(&b, sep, lsep);
|
luaL_addlstring(&b, sep, lsep);
|
||||||
}
|
}
|
||||||
|
if (i == last) /* add last value (if interval was not empty) */
|
||||||
|
addfield(L, &b, i);
|
||||||
luaL_pushresult(&b);
|
luaL_pushresult(&b);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: ltm.c 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: ltm.c,v 2.8.1.1 2007/12/27 13:02:25 roberto Exp $
|
||||||
** Tag methods
|
** Tag methods
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: ltm.h 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: ltm.h,v 2.6.1.1 2007/12/27 13:02:25 roberto Exp $
|
||||||
** Tag methods
|
** Tag methods
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
|||||||
Vendored
+4
-2
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: lua.c 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: lua.c,v 1.160.1.2 2007/12/28 15:32:23 roberto Exp $
|
||||||
** Lua stand-alone interpreter
|
** Lua stand-alone interpreter
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
@@ -74,6 +74,8 @@ static int report (lua_State *L, int status) {
|
|||||||
|
|
||||||
|
|
||||||
static int traceback (lua_State *L) {
|
static int traceback (lua_State *L) {
|
||||||
|
if (!lua_isstring(L, 1)) /* 'message' not a string? */
|
||||||
|
return 1; /* keep it intact */
|
||||||
lua_getfield(L, LUA_GLOBALSINDEX, "debug");
|
lua_getfield(L, LUA_GLOBALSINDEX, "debug");
|
||||||
if (!lua_istable(L, -1)) {
|
if (!lua_istable(L, -1)) {
|
||||||
lua_pop(L, 1);
|
lua_pop(L, 1);
|
||||||
@@ -144,7 +146,7 @@ static int dostring (lua_State *L, const char *s, const char *name) {
|
|||||||
static int dolibrary (lua_State *L, const char *name) {
|
static int dolibrary (lua_State *L, const char *name) {
|
||||||
lua_getglobal(L, "require");
|
lua_getglobal(L, "require");
|
||||||
lua_pushstring(L, name);
|
lua_pushstring(L, name);
|
||||||
return report(L, lua_pcall(L, 1, 0, 0));
|
return report(L, docall(L, 1, 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Vendored
+7
-4
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: lua.h 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: lua.h,v 1.218.1.7 2012/01/13 20:36:20 roberto Exp $
|
||||||
** Lua - An Extensible Extension Language
|
** Lua - An Extensible Extension Language
|
||||||
** Lua.org, PUC-Rio, Brazil (http://www.lua.org)
|
** Lua.org, PUC-Rio, Brazil (http://www.lua.org)
|
||||||
** See Copyright Notice at the end of this file
|
** See Copyright Notice at the end of this file
|
||||||
@@ -17,9 +17,9 @@
|
|||||||
|
|
||||||
|
|
||||||
#define LUA_VERSION "Lua 5.1"
|
#define LUA_VERSION "Lua 5.1"
|
||||||
#define LUA_RELEASE "Lua 5.1.1"
|
#define LUA_RELEASE "Lua 5.1.5"
|
||||||
#define LUA_VERSION_NUM 501
|
#define LUA_VERSION_NUM 501
|
||||||
#define LUA_COPYRIGHT "Copyright (C) 1994-2006 Lua.org, PUC-Rio"
|
#define LUA_COPYRIGHT "Copyright (C) 1994-2012 Lua.org, PUC-Rio"
|
||||||
#define LUA_AUTHORS "R. Ierusalimschy, L. H. de Figueiredo & W. Celes"
|
#define LUA_AUTHORS "R. Ierusalimschy, L. H. de Figueiredo & W. Celes"
|
||||||
|
|
||||||
|
|
||||||
@@ -294,6 +294,9 @@ LUA_API void lua_setallocf (lua_State *L, lua_Alloc f, void *ud);
|
|||||||
#define lua_Chunkwriter lua_Writer
|
#define lua_Chunkwriter lua_Writer
|
||||||
|
|
||||||
|
|
||||||
|
/* hack */
|
||||||
|
LUA_API void lua_setlevel (lua_State *from, lua_State *to);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** {======================================================================
|
** {======================================================================
|
||||||
@@ -359,7 +362,7 @@ struct lua_Debug {
|
|||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* Copyright (C) 1994-2006 Lua.org, PUC-Rio. All rights reserved.
|
* Copyright (C) 1994-2012 Lua.org, PUC-Rio. All rights reserved.
|
||||||
*
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining
|
* Permission is hereby granted, free of charge, to any person obtaining
|
||||||
* a copy of this software and associated documentation files (the
|
* a copy of this software and associated documentation files (the
|
||||||
|
|||||||
Vendored
+6
-5
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: luaconf.h 27862 2009-01-05 22:02:30Z GRIM657 $
|
** $Id: luaconf.h,v 1.82.1.7 2008/02/11 16:25:08 roberto Exp $
|
||||||
** Configuration file for Lua
|
** Configuration file for Lua
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
@@ -369,7 +369,7 @@ typedef int int32_t;
|
|||||||
/*
|
/*
|
||||||
@@ LUA_COMPAT_OPENLIB controls compatibility with old 'luaL_openlib'
|
@@ LUA_COMPAT_OPENLIB controls compatibility with old 'luaL_openlib'
|
||||||
@* behavior.
|
@* behavior.
|
||||||
** CHANGE it to undefined as soon as you replace to 'luaL_registry'
|
** CHANGE it to undefined as soon as you replace to 'luaL_register'
|
||||||
** your uses of 'luaL_openlib'
|
** your uses of 'luaL_openlib'
|
||||||
*/
|
*/
|
||||||
#define LUA_COMPAT_OPENLIB
|
#define LUA_COMPAT_OPENLIB
|
||||||
@@ -440,9 +440,10 @@ typedef int int32_t;
|
|||||||
@* can use.
|
@* can use.
|
||||||
** CHANGE it if you need lots of (Lua) stack space for your C
|
** CHANGE it if you need lots of (Lua) stack space for your C
|
||||||
** functions. This limit is arbitrary; its only purpose is to stop C
|
** functions. This limit is arbitrary; its only purpose is to stop C
|
||||||
** functions to consume unlimited stack space.
|
** functions to consume unlimited stack space. (must be smaller than
|
||||||
|
** -LUA_REGISTRYINDEX)
|
||||||
*/
|
*/
|
||||||
#define LUAI_MAXCSTACK 2048
|
#define LUAI_MAXCSTACK 8000
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -666,7 +667,7 @@ union luai_Cast { double l_d; long l_l; };
|
|||||||
*/
|
*/
|
||||||
#if defined(LUA_USE_POPEN)
|
#if defined(LUA_USE_POPEN)
|
||||||
|
|
||||||
#define lua_popen(L,c,m) ((void)L, popen(c,m))
|
#define lua_popen(L,c,m) ((void)L, fflush(NULL), popen(c,m))
|
||||||
#define lua_pclose(L,file) ((void)L, (pclose(file) != -1))
|
#define lua_pclose(L,file) ((void)L, (pclose(file) != -1))
|
||||||
|
|
||||||
#elif defined(LUA_WIN)
|
#elif defined(LUA_WIN)
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: lualib.h 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: lualib.h,v 1.36.1.1 2007/12/27 13:02:25 roberto Exp $
|
||||||
** Lua standard libraries
|
** Lua standard libraries
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
|||||||
Vendored
+8
-4
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: lundump.c 27856 2009-01-05 06:17:44Z steve $
|
** $Id: lundump.c,v 2.7.1.4 2008/04/04 19:51:41 roberto Exp $
|
||||||
** load precompiled Lua chunks
|
** load precompiled Lua chunks
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
@@ -30,6 +30,7 @@ typedef struct {
|
|||||||
|
|
||||||
#ifdef LUAC_TRUST_BINARIES
|
#ifdef LUAC_TRUST_BINARIES
|
||||||
#define IF(c,s)
|
#define IF(c,s)
|
||||||
|
#define error(S,s)
|
||||||
#else
|
#else
|
||||||
#define IF(c,s) if (c) error(S,s)
|
#define IF(c,s) if (c) error(S,s)
|
||||||
|
|
||||||
@@ -142,7 +143,7 @@ static void LoadConstants(LoadState* S, Proto* f)
|
|||||||
setnilvalue(o);
|
setnilvalue(o);
|
||||||
break;
|
break;
|
||||||
case LUA_TBOOLEAN:
|
case LUA_TBOOLEAN:
|
||||||
setbvalue(o,LoadChar(S));
|
setbvalue(o,LoadChar(S)!=0);
|
||||||
break;
|
break;
|
||||||
case LUA_TNUMBER:
|
case LUA_TNUMBER:
|
||||||
setnvalue(o,LoadNumber(S));
|
setnvalue(o,LoadNumber(S));
|
||||||
@@ -151,7 +152,7 @@ static void LoadConstants(LoadState* S, Proto* f)
|
|||||||
setsvalue2n(S->L,o,LoadString(S));
|
setsvalue2n(S->L,o,LoadString(S));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
IF (1, "bad constant");
|
error(S,"bad constant");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -191,7 +192,9 @@ static void LoadDebug(LoadState* S, Proto* f)
|
|||||||
|
|
||||||
static Proto* LoadFunction(LoadState* S, TString* p)
|
static Proto* LoadFunction(LoadState* S, TString* p)
|
||||||
{
|
{
|
||||||
Proto* f=luaF_newproto(S->L);
|
Proto* f;
|
||||||
|
if (++S->L->nCcalls > LUAI_MAXCCALLS) error(S,"code too deep");
|
||||||
|
f=luaF_newproto(S->L);
|
||||||
setptvalue2s(S->L,S->L->top,f); incr_top(S->L);
|
setptvalue2s(S->L,S->L->top,f); incr_top(S->L);
|
||||||
f->source=LoadString(S); if (f->source==NULL) f->source=p;
|
f->source=LoadString(S); if (f->source==NULL) f->source=p;
|
||||||
f->linedefined=LoadInt(S);
|
f->linedefined=LoadInt(S);
|
||||||
@@ -205,6 +208,7 @@ static Proto* LoadFunction(LoadState* S, TString* p)
|
|||||||
LoadDebug(S,f);
|
LoadDebug(S,f);
|
||||||
IF (!luaG_checkcode(f), "bad code");
|
IF (!luaG_checkcode(f), "bad code");
|
||||||
S->L->top--;
|
S->L->top--;
|
||||||
|
S->L->nCcalls--;
|
||||||
return f;
|
return f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: lundump.h 25893 2007-04-21 20:08:12Z stevecheckoway $
|
** $Id: lundump.h,v 1.37.1.1 2007/12/27 13:02:25 roberto Exp $
|
||||||
** load precompiled Lua chunks
|
** load precompiled Lua chunks
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
|||||||
Vendored
+12
-8
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: lvm.c 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: lvm.c,v 2.63.1.5 2011/08/17 20:43:11 roberto Exp $
|
||||||
** Lua virtual machine
|
** Lua virtual machine
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
@@ -61,12 +61,10 @@ static void traceexec (lua_State *L, const Instruction *pc) {
|
|||||||
lu_byte mask = L->hookmask;
|
lu_byte mask = L->hookmask;
|
||||||
const Instruction *oldpc = L->savedpc;
|
const Instruction *oldpc = L->savedpc;
|
||||||
L->savedpc = pc;
|
L->savedpc = pc;
|
||||||
if (mask > LUA_MASKLINE) { /* instruction-hook set? */
|
if ((mask & LUA_MASKCOUNT) && L->hookcount == 0) {
|
||||||
if (L->hookcount == 0) {
|
|
||||||
resethookcount(L);
|
resethookcount(L);
|
||||||
luaD_callhook(L, LUA_HOOKCOUNT, -1);
|
luaD_callhook(L, LUA_HOOKCOUNT, -1);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (mask & LUA_MASKLINE) {
|
if (mask & LUA_MASKLINE) {
|
||||||
Proto *p = ci_func(L->ci)->l.p;
|
Proto *p = ci_func(L->ci)->l.p;
|
||||||
int npc = pcRel(pc, p);
|
int npc = pcRel(pc, p);
|
||||||
@@ -135,6 +133,7 @@ void luaV_gettable (lua_State *L, const TValue *t, TValue *key, StkId val) {
|
|||||||
|
|
||||||
void luaV_settable (lua_State *L, const TValue *t, TValue *key, StkId val) {
|
void luaV_settable (lua_State *L, const TValue *t, TValue *key, StkId val) {
|
||||||
int loop;
|
int loop;
|
||||||
|
TValue temp;
|
||||||
for (loop = 0; loop < MAXTAGLOOP; loop++) {
|
for (loop = 0; loop < MAXTAGLOOP; loop++) {
|
||||||
const TValue *tm;
|
const TValue *tm;
|
||||||
if (ttistable(t)) { /* `t' is a table? */
|
if (ttistable(t)) { /* `t' is a table? */
|
||||||
@@ -143,6 +142,7 @@ void luaV_settable (lua_State *L, const TValue *t, TValue *key, StkId val) {
|
|||||||
if (!ttisnil(oldval) || /* result is no nil? */
|
if (!ttisnil(oldval) || /* result is no nil? */
|
||||||
(tm = fasttm(L, h->metatable, TM_NEWINDEX)) == NULL) { /* or no TM? */
|
(tm = fasttm(L, h->metatable, TM_NEWINDEX)) == NULL) { /* or no TM? */
|
||||||
setobj2t(L, oldval, val);
|
setobj2t(L, oldval, val);
|
||||||
|
h->flags = 0;
|
||||||
luaC_barriert(L, h, val);
|
luaC_barriert(L, h, val);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -154,7 +154,9 @@ void luaV_settable (lua_State *L, const TValue *t, TValue *key, StkId val) {
|
|||||||
callTM(L, tm, t, key, val);
|
callTM(L, tm, t, key, val);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
t = tm; /* else repeat with `tm' */
|
/* else repeat with `tm' */
|
||||||
|
setobj(L, &temp, tm); /* avoid pointing inside table (may rehash) */
|
||||||
|
t = &temp;
|
||||||
}
|
}
|
||||||
luaG_runerror(L, "loop in settable");
|
luaG_runerror(L, "loop in settable");
|
||||||
}
|
}
|
||||||
@@ -165,7 +167,7 @@ static int call_binTM (lua_State *L, const TValue *p1, const TValue *p2,
|
|||||||
const TValue *tm = luaT_gettmbyobj(L, p1, event); /* try first operand */
|
const TValue *tm = luaT_gettmbyobj(L, p1, event); /* try first operand */
|
||||||
if (ttisnil(tm))
|
if (ttisnil(tm))
|
||||||
tm = luaT_gettmbyobj(L, p2, event); /* try second operand */
|
tm = luaT_gettmbyobj(L, p2, event); /* try second operand */
|
||||||
if (!ttisfunction(tm)) return 0;
|
if (ttisnil(tm)) return 0;
|
||||||
callTMres(L, res, tm, p1, p2);
|
callTMres(L, res, tm, p1, p2);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@@ -281,10 +283,12 @@ void luaV_concat (lua_State *L, int total, int last) {
|
|||||||
do {
|
do {
|
||||||
StkId top = L->base + last + 1;
|
StkId top = L->base + last + 1;
|
||||||
int n = 2; /* number of elements handled in this pass (at least 2) */
|
int n = 2; /* number of elements handled in this pass (at least 2) */
|
||||||
if (!tostring(L, top-2) || !tostring(L, top-1)) {
|
if (!(ttisstring(top-2) || ttisnumber(top-2)) || !tostring(L, top-1)) {
|
||||||
if (!call_binTM(L, top-2, top-1, top-2, TM_CONCAT))
|
if (!call_binTM(L, top-2, top-1, top-2, TM_CONCAT))
|
||||||
luaG_concaterror(L, top-2, top-1);
|
luaG_concaterror(L, top-2, top-1);
|
||||||
} else if (tsvalue(top-1)->len > 0) { /* if len=0, do nothing */
|
} else if (tsvalue(top-1)->len == 0) /* second op is empty? */
|
||||||
|
(void)tostring(L, top - 2); /* result is first op (as string) */
|
||||||
|
else {
|
||||||
/* at least two string values; get as many as possible */
|
/* at least two string values; get as many as possible */
|
||||||
size_t tl = tsvalue(top-1)->len;
|
size_t tl = tsvalue(top-1)->len;
|
||||||
char *buffer;
|
char *buffer;
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: lvm.h 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: lvm.h,v 2.5.1.1 2007/12/27 13:02:25 roberto Exp $
|
||||||
** Lua virtual machine
|
** Lua virtual machine
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: lzio.c 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: lzio.c,v 1.31.1.1 2007/12/27 13:02:25 roberto Exp $
|
||||||
** a generic input stream interface
|
** a generic input stream interface
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: lzio.h 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: lzio.h,v 1.21.1.1 2007/12/27 13:02:25 roberto Exp $
|
||||||
** Buffered streams
|
** Buffered streams
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
|||||||
Vendored
+3
-3
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: print.c 23036 2006-09-25 07:35:34Z gmaynard $
|
** $Id: print.c,v 1.55a 2006/05/31 13:30:05 lhf Exp $
|
||||||
** print bytecodes
|
** print bytecodes
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
@@ -23,8 +23,7 @@
|
|||||||
static void PrintString(const TString* ts)
|
static void PrintString(const TString* ts)
|
||||||
{
|
{
|
||||||
const char* s=getstr(ts);
|
const char* s=getstr(ts);
|
||||||
int n=ts->tsv.len;
|
size_t i,n=ts->tsv.len;
|
||||||
int i;
|
|
||||||
putchar('"');
|
putchar('"');
|
||||||
for (i=0; i<n; i++)
|
for (i=0; i<n; i++)
|
||||||
{
|
{
|
||||||
@@ -32,6 +31,7 @@ static void PrintString(const TString* ts)
|
|||||||
switch (c)
|
switch (c)
|
||||||
{
|
{
|
||||||
case '"': printf("\\\""); break;
|
case '"': printf("\\\""); break;
|
||||||
|
case '\\': printf("\\\\"); break;
|
||||||
case '\a': printf("\\a"); break;
|
case '\a': printf("\\a"); break;
|
||||||
case '\b': printf("\\b"); break;
|
case '\b': printf("\\b"); break;
|
||||||
case '\f': printf("\\f"); break;
|
case '\f': printf("\\f"); break;
|
||||||
|
|||||||
Reference in New Issue
Block a user