Class IoLib
- All Implemented Interfaces:
com.esotericsoftware.kryo.KryoSerializable
- Direct Known Subclasses:
JseIoLib
LibFunction
which implements the
core of the lua standard io
library.
It contains the implementation of the io library support that is common to the JSE and JME platforms. In practice on of the concrete IOLib subclasses is chosen: org.luaj.vm2.lib.jse.JseIoLib for the JSE platform, and
The JSE implementation conforms almost completely to the C-based lua library, while the JME implementation follows closely except in the area of random-access files, which are difficult to support properly on JME.
Typically, this library is included as part of a call to either
Globals globals = JsePlatform.standardGlobals();
globals.get("io").get("write").call(LuaValue.valueOf("hello, world\n"));
In this example the platform-specific org.luaj.vm2.lib.jse.JseIoLib library will be loaded, which will include
the base functionality provided by this class, whereas the org.luaj.vm2.lib.jse.JsePlatform would load the
org.luaj.vm2.lib.jse.JseIoLib.
To instantiate and use it directly,
link it into your globals table via LuaValue.load(LuaValue)
using code such as:
Globals globals = new Globals();
globals.load(new JseBaseLib());
globals.load(new PackageLib());
globals.load(new OsLib());
globals.get("io").get("write").call(LuaValue.valueOf("hello, world\n"));
This has been implemented to match as closely as possible the behavior in the corresponding library in C.
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from class com.prineside.luaj.LuaValue
LuaValue.NillableSerializer, LuaValue.None
Nested classes/interfaces inherited from class com.prineside.luaj.Varargs
Varargs.ArrayVarargs
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final String[]
protected static final int
Enumerated value representing a file type for a named fileprotected static final int
Enumerated value representing stderrprotected static final int
Enumerated value representing stdinprotected static final int
Enumerated value representing stdoutprotected Globals
static final String[]
Fields inherited from class com.prineside.luaj.lib.LibFunction
name, opcode
Fields inherited from class com.prineside.luaj.LuaFunction
s_metatable
Fields inherited from class com.prineside.luaj.LuaValue
ADD, CALL, CONCAT, DIV, EMPTYSTRING, ENV, EQ, FALSE, INDEX, LE, LEN, LT, METATABLE, MINUSONE, MOD, MODE, MUL, NEWINDEX, NIL, NILLABLE_SERIALIZER, NILS, NONE, NOVALS, ONE, POW, SUB, TBOOLEAN, TFUNCTION, TINT, TLIGHTUSERDATA, TNIL, TNONE, TNUMBER, TOSTRING, TRUE, TSTRING, TTABLE, TTHREAD, TUSERDATA, TVALUE, TYPE_NAMES, UNM, ZERO
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription_file_close
(LuaValue file) _file_flush
(LuaValue file) _file_lines
(Varargs args) _file_read
(LuaValue file, Varargs subargs) _file_seek
(LuaValue file, String whence, int offset) _file_setvbuf
(LuaValue file, String mode, int size) _file_write
(LuaValue file, Varargs subargs) _io_output
(LuaValue filename) _lines_iter
(LuaValue file, boolean toclose, Varargs args) Callthis
with 2 arguments, including metatag processing, and return only the first return value.static LuaValue
static LuaValue
freadbytes
(IoLib.File f, int count) static LuaValue
freadline
(IoLib.File f, boolean withend) static LuaValue
static LuaValue
freaduntil
(IoLib.File f, boolean lineonly, boolean withend) protected abstract IoLib.File
openFile
(String filename, boolean readMode, boolean appendMode, boolean updateMode, boolean binaryMode) Open a file in a particular mode.protected abstract IoLib.File
openProgram
(String prog, String mode) Start a new process and return a file for input or outputprotected abstract IoLib.File
tmpFile()
Open a temporary file.protected abstract IoLib.File
Wrap the standard error output.protected abstract IoLib.File
Wrap the standard input.protected abstract IoLib.File
Wrap the standard output.Methods inherited from class com.prineside.luaj.lib.TwoArgFunction
call, call, call, invoke
Methods inherited from class com.prineside.luaj.lib.LibFunction
bind, bind, call, newupe, newupl, newupn, read, tojstring, write
Methods inherited from class com.prineside.luaj.LuaFunction
checkfunction, classnamestub, getmetatable, isfunction, name, optfunction, strvalue, type, typename
Methods inherited from class com.prineside.luaj.LuaValue
add, add, add, and, arg, arg1, argerror, argerror, aritherror, aritherror, arithmt, arithmtwith, assert_, buffer, call, callmt, cBool, cDouble, cFloat, checkboolean, checkclosure, checkdouble, checkglobals, checkint, checkjstring, checklong, checkmetatag, checknotnil, checknumber, checknumber, checkstring, checktable, checkthread, checkuserdata, checkuserdata, cInt, cNcDouble, cNcFloat, cNcInt, cObject, compareerror, compareerror, comparemt, concat, concat, concatmt, concatTo, concatTo, concatTo, cRegObject, cVarargs, cVarargs, cVarargs, cVarargs, cVarargs, cVarargs, cVarargs, cVarargs, div, div, div, divInto, eq, eq_b, eqmtcall, equals, error, get, get, get, gettable, gt, gt, gt, gt_b, gt_b, gt_b, gteq, gteq, gteq, gteq_b, gteq_b, gteq_b, illegal, inext, initupvalue1, invoke, invoke, invoke, invokemethod, invokemethod, invokemethod, invokemethod, isboolean, isclosure, isint, isinttype, islong, isnil, isnumber, isRegObject, isstring, istable, isthread, isuserdata, isuserdata, isvalidkey, len, lenerror, length, listOf, listOf, load, lt, lt, lt, lt_b, lt_b, lt_b, lteq, lteq, lteq, lteq_b, lteq_b, lteq_b, markAsConst, metatableOf, metatag, method, method, method, method, method, method, mod, mod, mod, modFrom, mul, mul, mul, narg, neg, neq, neq_b, next, not, onInvoke, optboolean, optclosure, optdouble, optint, optjstring, optlong, optnumber, optstring, opttable, optthread, optuserdata, optuserdata, optvalue, or, pow, pow, pow, powWith, powWith, presize, raweq, raweq, raweq, raweq, raweq, rawget, rawget, rawget, rawlen, rawset, rawset, rawset, rawset, rawset, rawset, rawset, rawsetlist, set, set, set, set, set, set, set, setmetatable, settable, strcmp, strcmp, strongvalue, sub, sub, sub, subargs, subFrom, subFrom, tableOf, tableOf, tableOf, tableOf, tableOf, tableOf, tailcallOf, testfor_b, toboolean, tobyte, tochar, todouble, tofloat, toint, tolong, tonumber, toshort, tostring, toString, touserdata, touserdata, typerror, unimplemented, userdataOf, userdataOf, valueOf, valueOf, valueOf, valueOf, valueOf, valueOf
Methods inherited from class com.prineside.luaj.Varargs
argcheck, checkboolean, checkclosure, checkdouble, checkfunction, checkint, checkjstring, checklong, checknotnil, checknumber, checkstring, checktable, checkthread, checkuserdata, checkuserdata, checkvalue, dealias, eval, isfunction, isnil, isnoneornil, isnumber, isstring, istable, isTailcall, isthread, isuserdata, isvalue, optboolean, optclosure, optdouble, optfunction, optint, optjstring, optlong, optnumber, optstring, opttable, optthread, optuserdata, optuserdata, optvalue, toboolean, tobyte, tochar, todouble, tofloat, toint, tojstring, tolong, toshort, touserdata, touserdata, type
-
Field Details
-
FTYPE_STDIN
protected static final int FTYPE_STDINEnumerated value representing stdin- See Also:
-
FTYPE_STDOUT
protected static final int FTYPE_STDOUTEnumerated value representing stdout- See Also:
-
FTYPE_STDERR
protected static final int FTYPE_STDERREnumerated value representing stderr- See Also:
-
FTYPE_NAMED
protected static final int FTYPE_NAMEDEnumerated value representing a file type for a named file- See Also:
-
IO_NAMES
-
FILE_NAMES
-
globals
-
-
Constructor Details
-
IoLib
public IoLib()
-
-
Method Details
-
wrapStdin
Wrap the standard input.- Returns:
- File
- Throws:
IOException
-
wrapStdout
Wrap the standard output.- Returns:
- File
- Throws:
IOException
-
wrapStderr
Wrap the standard error output.- Returns:
- File
- Throws:
IOException
-
openFile
protected abstract IoLib.File openFile(String filename, boolean readMode, boolean appendMode, boolean updateMode, boolean binaryMode) throws IOException Open a file in a particular mode.- Parameters:
filename
-readMode
- true if opening in read modeappendMode
- true if opening in append modeupdateMode
- true if opening in update modebinaryMode
- true if opening in binary mode- Returns:
- File object if successful
- Throws:
IOException
- if could not be opened
-
tmpFile
Open a temporary file.- Returns:
- File object if successful
- Throws:
IOException
- if could not be opened
-
openProgram
Start a new process and return a file for input or output- Parameters:
prog
- the program to executemode
- "r" to read, "w" to write- Returns:
- File to read to or write from
- Throws:
IOException
- if an i/o exception occurs
-
call
Description copied from class:LuaValue
Callthis
with 2 arguments, including metatag processing, and return only the first return value.If
this
is aLuaFunction
, call it, and return only its first return value, dropping any others. Otherwise, look for theLuaValue.CALL
metatag and call that.If the return value is a
Varargs
, only the 1st value will be returned. To get multiple values, useLuaValue.invoke()
instead.To call
this
as a method call, useLuaValue.method(LuaValue)
instead.- Specified by:
call
in classTwoArgFunction
- Parameters:
modname
- First argument to supply to the called functionenv
- Second argument to supply to the called function- Returns:
- First return value
(this(arg1,arg2))
, orLuaValue.NIL
if there were none. - See Also:
-
_io_flush
- Throws:
IOException
-
_io_tmpfile
- Throws:
IOException
-
_io_close
- Throws:
IOException
-
_io_input
-
_io_output
-
_io_type
-
_io_popen
- Throws:
IOException
-
_io_open
- Throws:
IOException
-
_io_lines
-
_io_read
- Throws:
IOException
-
_io_write
- Throws:
IOException
-
_file_close
- Throws:
IOException
-
_file_flush
- Throws:
IOException
-
_file_setvbuf
-
_file_lines
-
_file_read
- Throws:
IOException
-
_file_seek
- Throws:
IOException
-
_file_write
- Throws:
IOException
-
_io_index
-
_lines_iter
- Throws:
IOException
-
freadbytes
- Throws:
IOException
-
freaduntil
public static LuaValue freaduntil(IoLib.File f, boolean lineonly, boolean withend) throws IOException - Throws:
IOException
-
freadline
- Throws:
IOException
-
freadall
- Throws:
IOException
-
freadnumber
- Throws:
IOException
-