| [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 |  | 
|---|