| [1650] | 1 | -- tolua: module class | 
|---|
|  | 2 | -- Written by Waldemar Celes | 
|---|
|  | 3 | -- TeCGraf/PUC-Rio | 
|---|
|  | 4 | -- Jul 1998 | 
|---|
|  | 5 | -- $Id: $ | 
|---|
|  | 6 |  | 
|---|
|  | 7 | -- This code is free software; you can redistribute it and/or modify it. | 
|---|
|  | 8 | -- The software provided hereunder is on an "as is" basis, and | 
|---|
|  | 9 | -- the author has no obligation to provide maintenance, support, updates, | 
|---|
|  | 10 | -- enhancements, or modifications. | 
|---|
|  | 11 |  | 
|---|
|  | 12 |  | 
|---|
|  | 13 |  | 
|---|
|  | 14 | -- Module class | 
|---|
|  | 15 | -- Represents module. | 
|---|
|  | 16 | -- The following fields are stored: | 
|---|
|  | 17 | --    {i} = list of objects in the module. | 
|---|
|  | 18 | classModule = { | 
|---|
| [2710] | 19 | classtype = 'module' | 
|---|
| [1650] | 20 | } | 
|---|
|  | 21 | classModule.__index = classModule | 
|---|
|  | 22 | setmetatable(classModule,classContainer) | 
|---|
|  | 23 |  | 
|---|
|  | 24 | -- register module | 
|---|
|  | 25 | function classModule:register (pre) | 
|---|
| [2710] | 26 | pre = pre or '' | 
|---|
|  | 27 | push(self) | 
|---|
|  | 28 | output(pre..'tolua_module(tolua_S,"'..self.name..'",',self:hasvar(),');') | 
|---|
|  | 29 | output(pre..'tolua_beginmodule(tolua_S,"'..self.name..'");') | 
|---|
|  | 30 | local i=1 | 
|---|
|  | 31 | while self[i] do | 
|---|
|  | 32 | self[i]:register(pre..' ') | 
|---|
|  | 33 | i = i+1 | 
|---|
|  | 34 | end | 
|---|
|  | 35 | output(pre..'tolua_endmodule(tolua_S);') | 
|---|
|  | 36 | pop() | 
|---|
| [1650] | 37 | end | 
|---|
|  | 38 |  | 
|---|
|  | 39 | -- Print method | 
|---|
|  | 40 | function classModule:print (ident,close) | 
|---|
| [2710] | 41 | print(ident.."Module{") | 
|---|
|  | 42 | print(ident.." name = '"..self.name.."';") | 
|---|
|  | 43 | local i=1 | 
|---|
|  | 44 | while self[i] do | 
|---|
|  | 45 | self[i]:print(ident.." ",",") | 
|---|
|  | 46 | i = i+1 | 
|---|
|  | 47 | end | 
|---|
|  | 48 | print(ident.."}"..close) | 
|---|
| [1650] | 49 | end | 
|---|
|  | 50 |  | 
|---|
|  | 51 | -- Internal constructor | 
|---|
|  | 52 | function _Module (t) | 
|---|
| [2710] | 53 | setmetatable(t,classModule) | 
|---|
|  | 54 | append(t) | 
|---|
|  | 55 | return t | 
|---|
| [1650] | 56 | end | 
|---|
|  | 57 |  | 
|---|
|  | 58 | -- Constructor | 
|---|
|  | 59 | -- Expects two string representing the module name and body. | 
|---|
|  | 60 | function Module (n,b) | 
|---|
| [2710] | 61 | local t = _Module(_Container{name=n}) | 
|---|
|  | 62 | push(t) | 
|---|
|  | 63 | t:parse(strsub(b,2,strlen(b)-1)) -- eliminate braces | 
|---|
|  | 64 | pop() | 
|---|
|  | 65 | return t | 
|---|
| [1650] | 66 | end | 
|---|
|  | 67 |  | 
|---|
|  | 68 |  | 
|---|