diff options
author | Alexander Harkness <bearbin@gmail.com> | 2013-11-24 15:29:35 +0100 |
---|---|---|
committer | Alexander Harkness <bearbin@gmail.com> | 2013-11-24 15:29:35 +0100 |
commit | 998fb17fdc150bc9c6b3d8da0dd37dfd1ae7b39a (patch) | |
tree | 51c901fdd30ce632107cd69b3df3b107f4cbb6a5 /tolua++-1.0.93/src/bin/lua/operator.lua | |
parent | Moved zlib (diff) | |
download | cuberite-998fb17fdc150bc9c6b3d8da0dd37dfd1ae7b39a.tar cuberite-998fb17fdc150bc9c6b3d8da0dd37dfd1ae7b39a.tar.gz cuberite-998fb17fdc150bc9c6b3d8da0dd37dfd1ae7b39a.tar.bz2 cuberite-998fb17fdc150bc9c6b3d8da0dd37dfd1ae7b39a.tar.lz cuberite-998fb17fdc150bc9c6b3d8da0dd37dfd1ae7b39a.tar.xz cuberite-998fb17fdc150bc9c6b3d8da0dd37dfd1ae7b39a.tar.zst cuberite-998fb17fdc150bc9c6b3d8da0dd37dfd1ae7b39a.zip |
Diffstat (limited to 'tolua++-1.0.93/src/bin/lua/operator.lua')
-rw-r--r-- | tolua++-1.0.93/src/bin/lua/operator.lua | 220 |
1 files changed, 0 insertions, 220 deletions
diff --git a/tolua++-1.0.93/src/bin/lua/operator.lua b/tolua++-1.0.93/src/bin/lua/operator.lua deleted file mode 100644 index 675027cd7..000000000 --- a/tolua++-1.0.93/src/bin/lua/operator.lua +++ /dev/null @@ -1,220 +0,0 @@ --- tolua: operator class --- Written by Waldemar Celes --- TeCGraf/PUC-Rio --- Jul 1998 --- $Id: $ - --- 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. - - --- Operator class --- Represents an operator function or a class operator method. --- It stores the same fields as functions do plus: --- kind = set of character representing the operator (as it appers in C++ code) -classOperator = { - kind = '', -} -classOperator.__index = classOperator -setmetatable(classOperator,classFunction) - --- table to transform operator kind into the appropriate tag method name -_TM = {['+'] = 'add', - ['-'] = 'sub', - ['*'] = 'mul', - ['/'] = 'div', - ['<'] = 'lt', - ['<='] = 'le', - ['=='] = 'eq', - ['[]'] = 'geti', - ['&[]'] = 'seti', - --['->'] = 'flechita', - } - - --- Print method -function classOperator:print (ident,close) - print(ident.."Operator{") - print(ident.." kind = '"..self.kind.."',") - print(ident.." mod = '"..self.mod.."',") - print(ident.." type = '"..self.type.."',") - print(ident.." ptr = '"..self.ptr.."',") - print(ident.." name = '"..self.name.."',") - print(ident.." const = '"..self.const.."',") - print(ident.." cname = '"..self.cname.."',") - print(ident.." lname = '"..self.lname.."',") - print(ident.." args = {") - local i=1 - while self.args[i] do - self.args[i]:print(ident.." ",",") - i = i+1 - end - print(ident.." }") - print(ident.."}"..close) -end - -function classOperator:supcode_tmp() - - if not _TM[self.kind] then - return classFunction.supcode(self) - end - - -- no overload, no parameters, always inclass - output("/* method:",self.name," of class ",self:inclass()," */") - - output("#ifndef TOLUA_DISABLE_"..self.cname) - output("\nstatic int",self.cname,"(lua_State* tolua_S)") - - if overload < 0 then - output('#ifndef TOLUA_RELEASE\n') - end - output(' tolua_Error tolua_err;') - output(' if (\n') - -- check self - local is_func = get_is_function(self.parent.type) - output(' !'..is_func..'(tolua_S,1,"'..self.parent.type..'",0,&tolua_err) ||\n') - output(' !tolua_isnoobj(tolua_S,2,&tolua_err)\n )') - output(' goto tolua_lerror;') - - output(' else\n') - output('#endif\n') -- tolua_release - output(' {') - - -- declare self - output(' ',self.const,self.parent.type,'*','self = ') - output('(',self.const,self.parent.type,'*) ') - local to_func = get_to_func(self.parent.type) - output(to_func,'(tolua_S,1,0);') - - -- check self - output('#ifndef TOLUA_RELEASE\n') - output(' if (!self) tolua_error(tolua_S,"'..output_error_hook("invalid \'self\' in function \'%s\'", self.name)..'",NULL);'); - output('#endif\n') - - -- cast self - output(' ',self.mod,self.type,self.ptr,'tolua_ret = ') - output('(',self.mod,self.type,self.ptr,')(*self);') - - -- return value - local t,ct = isbasic(self.type) - if t then - output(' tolua_push'..t..'(tolua_S,(',ct,')tolua_ret);') - else - t = self.type - local push_func = get_push_function(t) - new_t = string.gsub(t, "const%s+", "") - if self.ptr == '' then - output(' {') - output('#ifdef __cplusplus\n') - output(' void* tolua_obj = Mtolua_new((',new_t,')(tolua_ret));') - output(' ',push_func,'(tolua_S,tolua_obj,"',t,'");') - output(' tolua_register_gc(tolua_S,lua_gettop(tolua_S));') - output('#else\n') - output(' void* tolua_obj = tolua_copy(tolua_S,(void*)&tolua_ret,sizeof(',t,'));') - output(' ',push_func,'(tolua_S,tolua_obj,"',t,'");') - output(' tolua_register_gc(tolua_S,lua_gettop(tolua_S));') - output('#endif\n') - output(' }') - elseif self.ptr == '&' then - output(' ',push_func,'(tolua_S,(void*)&tolua_ret,"',t,'");') - else - if local_constructor then - output(' ',push_func,'(tolua_S,(void *)tolua_ret,"',t,'");') - output(' tolua_register_gc(tolua_S,lua_gettop(tolua_S));') - else - output(' ',push_func,'(tolua_S,(void*)tolua_ret,"',t,'");') - end - end - end - - output(' }') - output(' return 1;') - - output('#ifndef TOLUA_RELEASE\n') - output('tolua_lerror:\n') - output(' tolua_error(tolua_S,"'..output_error_hook("#ferror in function \'%s\'.", self.lname)..'",&tolua_err);') - output(' return 0;') - output('#endif\n') - - - output('}') - output('#endif //#ifndef TOLUA_DISABLE\n') - output('\n') -end - --- Internal constructor -function _Operator (t) - setmetatable(t,classOperator) - - if t.const ~= 'const' and t.const ~= '' then - error("#invalid 'const' specification") - end - - append(t) - if not t:inclass() then - error("#operator can only be defined as class member") - end - - --t.name = t.name .. "_" .. (_TM[t.kind] or t.kind) - t.cname = t:cfuncname("tolua")..t:overload(t) - t.name = "operator" .. t.kind -- set appropriate calling name - return t -end - --- Constructor -function Operator (d,k,a,c) - - local op_k = string.gsub(k, "^%s*", "") - op_k = string.gsub(k, "%s*$", "") - --if string.find(k, "^[%w_:%d<>%*%&]+$") then - if d == "operator" and k ~= '' then - - d = k.." operator" - elseif not _TM[op_k] then - - if flags['W'] then - error("tolua: no support for operator" .. f.kind) - else - warning("No support for operator "..op_k..", ignoring") - return nil - end - end - - local ref = '' - local t = split_c_tokens(strsub(a,2,strlen(a)-1),',') -- eliminate braces - local i=1 - local l = {n=0} - while t[i] do - l.n = l.n+1 - l[l.n] = Declaration(t[i],'var') - i = i+1 - end - if k == '[]' then - local _ - _, _, ref = strfind(d,'(&)') - d = gsub(d,'&','') - elseif k=='&[]' then - l.n = l.n+1 - l[l.n] = Declaration(d,'var') - l[l.n].name = 'tolua_value' - end - local f = Declaration(d,'func') - if k == '[]' and (l[1]==nil or isbasic(l[1].type)~='number') then - error('operator[] can only be defined for numeric index.') - end - f.args = l - f.const = c - f.kind = op_k - f.lname = "."..(_TM[f.kind] or f.kind) - if not _TM[f.kind] then - f.cast_operator = true - end - if f.kind == '[]' and ref=='&' and f.const~='const' then - Operator(d,'&'..k,a,c) -- create correspoding set operator - end - return _Operator(f) -end - - |