diff options
Diffstat (limited to 'src/lua/basic.lua')
-rw-r--r-- | src/lua/basic.lua | 190 |
1 files changed, 0 insertions, 190 deletions
diff --git a/src/lua/basic.lua b/src/lua/basic.lua deleted file mode 100644 index 2bac463f..00000000 --- a/src/lua/basic.lua +++ /dev/null @@ -1,190 +0,0 @@ --- tolua: basic utility functions --- Written by Waldemar Celes --- TeCGraf/PUC-Rio --- Jul 1998 --- $Id: basic.lua,v 1.2 2001/11/26 23:00:23 darkgod Exp $ - --- This code is free software; you can redistribute it and/or modify it. --- The software provided hereunder is on an "as is" basis, and --- the author has no obligation to provide maintenance, support, updates, --- enhancements, or modifications. - - --- Basic C types and their corresponding Lua types --- All occurrences of "char*" will be replaced by "_cstring", --- and all occurrences of "void*" will be replaced by "_userdata" -_basic = { - ['void'] = '', - ['char'] = 'number', - ['int'] = 'number', - ['short'] = 'number', - ['long'] = 'number', - ['_cstring'] = 'string', - ['_userdata'] = 'userdata', - ['char*'] = 'string', - ['void*'] = 'userdata', - ['bool'] = 'bool', - ['LUA_VALUE'] = 'value', - ['byte'] = 'number', - ['s16b'] = 'number', - ['u16b'] = 'number', - ['s32b'] = 'number', - ['u32b'] = 'number', -} - -_basic_tag = { - ['void'] = '', - ['char'] = 'LUA_TNUMBER', - ['int'] = 'LUA_TNUMBER', - ['short'] = 'LUA_TNUMBER', - ['long'] = 'LUA_TNUMBER', - ['_cstring'] = 'LUA_TSTRING', - ['_userdata'] = 'LUA_TUSERDATA', - ['char*'] = 'LUA_TSTRING', - ['void*'] = 'LUA_TUSERDATA', - ['bool'] = 'tolua_tag(tolua_S,"bool")', - ['byte'] = 'LUA_TNUMBER', - ['s16b'] = 'LUA_TNUMBER', - ['u16b'] = 'LUA_TNUMBER', - ['s32b'] = 'LUA_TNUMBER', - ['u32b'] = 'LUA_TNUMBER', -} - -_basic_ctype = { - number = "long", - string = "const char*", - userdata = "void*", - bool = "int", -} - --- List of user defined types --- Each type corresponds to a variable name that stores its tag value. -_usertype = {} - --- Tag method to provide inheritance -function tolua_index (t,f) - if f == '_base' then -- to avoid loop - return tolua_old_index(t,f) - else - return t._base[f] - end -end - -tolua_tag = newtag() -tolua_old_index = settagmethod(tolua_tag,"index",tolua_index) - --- Error handler -function tolua_error (s) - local out = _OUTPUT - _OUTPUT = _STDERR - if strsub(s,1,1) == '#' then - write("\n** tolua: "..strsub(s,2)..".\n\n") - else - write("\n** tolua internal error: "..s..".\n\n") - return - end - - if _curr_code then - local _,_,s = strfind(_curr_code,"^%s*(.-\n)") -- extract first line - if s==nil then s = _curr_code end - s = gsub(s,"_userdata","void*") -- return with 'void*' - s = gsub(s,"_cstring","char*") -- return with 'char*' - write("Code being processed:\n"..s.."\n") - end - _OUTPUT = out -end - - -_ERRORMESSAGE = tolua_error - --- register an user defined type -function regtype (t) - if not istype(t) then - _usertype[t] = t - end - return t -end - --- return tag name -function tagvar(type,const) - if type == '' or type == 'void' then - return type,0 - else - local m,t = findtypedef(type) - if isbasic(t) then - return t, _basic_tag[t] - end - if strfind(m,'const') then const = 'const' end - regtype(t) - if const and const ~= '' then - t = 'const '..t - end - return t,'tolua_tag(tolua_S,"'..t..'")' - end -end - --- check if basic type -function isbasic (type) - local m,t = findtypedef(type) - local b = _basic[t] - if b then - return b,_basic_ctype[b] - end - return nil -end - --- check if type -function istype (t) - return _basic[t] or _usertype[t] or istypedef(t) -end - - --- split string using a token -function split (s,t) - local l = {n=0} - local f = function (s) - %l.n = %l.n + 1 - %l[%l.n] = s - end - local p = "%s*(.-)%s*"..t.."%s*" - s = gsub(s,"^%s+","") - s = gsub(s,"%s+$","") - s = gsub(s,p,f) - l.n = l.n + 1 - l[l.n] = gsub(s,"(%s%s*)$","") - return l -end - - --- concatenate strings of a table -function concat (t,f,l) - local s = '' - local i=f - while i<=l do - s = s..t[i] - i = i+1 - if i <= l then s = s..' ' end - end - return s -end - --- output line -function output (...) - local i=1 - while i<=arg.n do - if _cont and not strfind(_cont,'[%(,"]') and - strfind(arg[i],"^[%a_~]") then - write(' ') - end - write(arg[i]) - if arg[i] ~= '' then - _cont = strsub(arg[i],-1,-1) - end - i = i+1 - end - if strfind(arg[arg.n],"[%/%)%;%{%}]$") then - _cont=nil write('\n') - end -end - - |