1 /* $Header: //info.ravenbrook.com/project/jili/version/1.1/code/mnj/lua/BaseLibReader.java#1 $
2 * Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
5 * Permission is hereby granted, free of charge, to any person obtaining
6 * a copy of this software and associated documentation files (the
7 * "Software"), to deal in the Software without restriction, including
8 * without limitation the rights to use, copy, modify, merge, publish,
9 * distribute, sublicense, and/or sell copies of the Software, and to
10 * permit persons to whom the Software is furnished to do so, subject
11 * to the following conditions:
13 * The above copyright notice and this permission notice shall be
14 * included in all copies or substantial portions of the Software.
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
20 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
21 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27 import java
.io
.IOException
;
30 * Extends {@link java.io.Reader} to create a Reader from a Lua
31 * function. So that the <code>load</code> function from Lua's base
32 * library can be implemented.
34 final class BaseLibReader
extends java
.io
.Reader
36 private String s
= "";
37 private int i
; // = 0;
38 private int mark
= -1;
42 BaseLibReader(Lua L
, Object f
)
53 public void mark(int l
) throws IOException
57 throw new IOException("Readahead must be <= 1");
62 public boolean markSupported()
73 if (Lua
.isNil(L
.value(-1)))
77 else if(Lua
.isString(L
.value(-1)))
79 s
= L
.toString(L
.value(-1));
96 L
.error("reader function must return a string");
102 public int read(char[] cbuf
, int off
, int len
)
104 int j
= 0; // loop index required after loop
105 for (j
=0; j
<len
; ++j
)
119 cbuf
[off
+j
] = (char)c
;
124 public void reset() throws IOException
128 throw new IOException("reset() not supported now");