Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/gui/src/tolua/lua/compat.lua @ 1650

Last change on this file since 1650 was 1650, checked in by rgrieder, 16 years ago

added preliminary automatic creation of tolua generator that creates the actual executable
(please don't ask about the egg-hen question…)

File size: 4.0 KB
Line 
1-------------------------------------------------------------------
2-- Real globals
3-- _ALERT
4-- _ERRORMESSAGE
5-- _VERSION
6-- _G
7-- assert
8-- error
9-- metatable
10-- next
11-- print
12-- require
13-- tonumber
14-- tostring
15-- type
16-- unpack
17
18-------------------------------------------------------------------
19-- collectgarbage
20-- gcinfo
21
22-- globals
23
24-- call   -> protect(f, err)
25-- loadfile
26-- loadstring
27
28-- rawget
29-- rawset
30
31-- getargs = Main.getargs ??
32
33rawtype = type
34
35function do_ (f, err)
36  if not f then print(err); return end
37  local a,b = pcall(f)
38  if not a then print(b); return nil
39  else return b or true
40  end
41end
42
43function dostring(s) return do_(loadstring(s)) end
44-- function dofile(s) return do_(loadfile(s)) end
45
46-------------------------------------------------------------------
47-- Table library
48local tab = table
49foreach = tab.foreach
50foreachi = tab.foreachi
51getn = tab.getn
52tinsert = tab.insert
53tremove = tab.remove
54sort = tab.sort
55
56-------------------------------------------------------------------
57-- Debug library
58local dbg = debug
59getinfo = dbg.getinfo
60getlocal = dbg.getlocal
61setcallhook = function () error"`setcallhook' is deprecated" end
62setlinehook = function () error"`setlinehook' is deprecated" end
63setlocal = dbg.setlocal
64
65-------------------------------------------------------------------
66-- math library
67local math = math
68abs = math.abs
69acos = function (x) return math.deg(math.acos(x)) end
70asin = function (x) return math.deg(math.asin(x)) end
71atan = function (x) return math.deg(math.atan(x)) end
72atan2 = function (x,y) return math.deg(math.atan2(x,y)) end
73ceil = math.ceil
74cos = function (x) return math.cos(math.rad(x)) end
75deg = math.deg
76exp = math.exp
77floor = math.floor
78frexp = math.frexp
79ldexp = math.ldexp
80log = math.log
81log10 = math.log10
82max = math.max
83min = math.min
84mod = math.mod
85PI = math.pi
86--??? pow = math.pow 
87rad = math.rad
88random = math.random
89randomseed = math.randomseed
90sin = function (x) return math.sin(math.rad(x)) end
91sqrt = math.sqrt
92tan = function (x) return math.tan(math.rad(x)) end
93
94-------------------------------------------------------------------
95-- string library
96local str = string
97strbyte = str.byte
98strchar = str.char
99strfind = str.find
100format = str.format
101gsub = str.gsub
102strlen = str.len
103strlower = str.lower
104strrep = str.rep
105strsub = str.sub
106strupper = str.upper
107
108-------------------------------------------------------------------
109-- os library
110clock = os.clock
111date = os.date
112difftime = os.difftime
113execute = os.execute --?
114exit = os.exit
115getenv = os.getenv
116remove = os.remove
117rename = os.rename
118setlocale = os.setlocale
119time = os.time
120tmpname = os.tmpname
121
122-------------------------------------------------------------------
123-- compatibility only
124getglobal = function (n) return _G[n] end
125setglobal = function (n,v) _G[n] = v end
126
127-------------------------------------------------------------------
128
129local io, tab = io, table
130
131-- IO library (files)
132_STDIN = io.stdin
133_STDERR = io.stderr
134_STDOUT = io.stdout
135_INPUT = io.stdin
136_OUTPUT = io.stdout
137seek = io.stdin.seek   -- sick ;-)
138tmpfile = io.tmpfile
139closefile = io.close
140openfile = io.open
141
142function flush (f)
143  if f then f:flush()
144  else _OUTPUT:flush()
145  end
146end
147
148function readfrom (name)
149  if name == nil then
150    local f, err, cod = io.close(_INPUT)
151    _INPUT = io.stdin
152    return f, err, cod
153  else
154    local f, err, cod = io.open(name, "r")
155    _INPUT = f or _INPUT
156    return f, err, cod
157  end
158end
159
160function writeto (name)
161  if name == nil then
162    local f, err, cod = io.close(_OUTPUT)
163    _OUTPUT = io.stdout
164    return f, err, cod
165  else
166    local f, err, cod = io.open(name, "w")
167    _OUTPUT = f or _OUTPUT
168    return f, err, cod
169  end
170end
171
172function appendto (name)
173  local f, err, cod = io.open(name, "a")
174  _OUTPUT = f or _OUTPUT
175  return f, err, cod
176end
177
178function read (...)
179  local f = _INPUT
180  if rawtype(arg[1]) == 'userdata' then
181    f = tab.remove(arg, 1)
182  end
183  return f:read(unpack(arg))
184end
185
186function write (...)
187  local f = _OUTPUT
188  if rawtype(arg[1]) == 'userdata' then
189    f = tab.remove(arg, 1)
190  end
191  return f:write(unpack(arg))
192end
193
Note: See TracBrowser for help on using the repository browser.