Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/trunk/src/tolua/lua/compat.lua @ 2365

Last change on this file since 2365 was 2087, checked in by landauf, 16 years ago

merged objecthierarchy branch back to trunk

  • Property svn:eol-style set to native
File size: 4.0 KB
RevLine 
[1650]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.