5 Copyright (c) 2007-2009 Mauro Iazzi
7 Permission is hereby granted, free of charge, to any person
8 obtaining a copy of this software and associated documentation
9 files (the "Software"), to deal in the Software without
10 restriction, including without limitation the rights to use,
11 copy, modify, merge, publish, distribute, sublicense, and/or sell
12 copies of the Software, and to permit persons to whom the
13 Software is furnished to do so, subject to the following
16 The above copyright notice and this permission notice shall be
17 included in all copies or substantial portions of the Software.
19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
20 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
21 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
22 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
23 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
24 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
25 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
26 OTHER DEALINGS IN THE SOFTWARE.
30 local base_types
= (...) or {}
32 local integer_type
= {
34 return 'lua_tointeger(L, '..tostring(j
)..')', 1
36 push
= function(j
) -- must handle arguments (e.g. in virtual callbacks) and return values
37 return 'lua_pushinteger(L, '..tostring(j
)..')', 1
39 test
= function(j
) -- must handle arguments (e.g. in virtual callbacks) and return values
40 return 'lqtL_isinteger(L, '..tostring(j
)..')', 1
45 return 'lua_tonumber(L, '..tostring(j
)..')', 1
47 push
= function(j
) -- must handle arguments (e.g. in virtual callbacks) and return values
48 return 'lua_pushnumber(L, '..tostring(j
)..')', 1
50 test
= function(j
) -- must handle arguments (e.g. in virtual callbacks) and return values
51 return 'lqtL_isnumber(L, '..tostring(j
)..')', 1
54 local integer_type
= {
56 return 'lua_tointeger(L, '..tostring(j
)..')', 1
58 push
= function(j
) -- must handle arguments (e.g. in virtual callbacks) and return values
59 return 'lua_pushinteger(L, '..tostring(j
)..')', 1
61 test
= function(j
) -- must handle arguments (e.g. in virtual callbacks) and return values
62 return 'lqtL_isinteger(L, '..tostring(j
)..')', 1
67 return 'lua_toboolean(L, '..tostring(j
)..')', 1
69 push
= function(j
) -- must handle arguments (e.g. in virtual callbacks) and return values
70 return 'lua_pushboolean(L, '..tostring(j
)..')', 1
72 test
= function(j
) -- must handle arguments (e.g. in virtual callbacks) and return values
73 return 'lqtL_isboolean(L, '..tostring(j
)..')', 1
77 base_types
['char const*'] = {
79 return 'lua_tostring(L, '..tostring(j
)..')', 1
81 push
= function(j
) -- must handle arguments (e.g. in virtual callbacks) and return values
82 return 'lua_pushstring(L, '..tostring(j
)..')', 1
85 return 'lqtL_isstring(L, '..tostring(j
)..')', 1
88 base_types
['char'] = integer_type
89 base_types
['unsigned char'] = integer_type
90 base_types
['int'] = integer_type
91 base_types
['unsigned'] = integer_type
92 base_types
['unsigned int'] = integer_type
93 base_types
['short'] = integer_type
94 base_types
['short int'] = integer_type
95 base_types
['unsigned short'] = integer_type
96 base_types
['unsigned short int'] = integer_type
97 base_types
['short unsigned int'] = integer_type
98 base_types
['long'] = integer_type
99 base_types
['unsigned long'] = integer_type
100 base_types
['long int'] = integer_type
101 base_types
['unsigned long int'] = integer_type
102 base_types
['long unsigned int'] = integer_type
103 base_types
['long long'] = integer_type
104 base_types
['unsigned long long'] = integer_type
105 base_types
['long long int'] = integer_type
106 base_types
['unsigned long long int'] = integer_type
107 base_types
['float'] = number_type
108 base_types
['double'] = number_type
109 base_types
['double const&'] = number_type
110 base_types
['bool'] = bool_type
113 base_types
['bool*'] = {
115 return 'lqtL_toboolref(L, '..j
..')', 1
117 push
= function(j
) -- must handle arguments (e.g. in virtual callbacks) and return values
118 return 'lua_pushboolean(L, *'..tostring(j
)..')', 1
120 test
= function(j
) -- must handle arguments (e.g. in virtual callbacks) and return values
121 return 'lqtL_isboolean(L, '..tostring(j
)..')', 1
124 base_types
['int&'] = {
126 return '*lqtL_tointref(L, '..j
..')', 1
128 push
= function(j
) -- must handle arguments (e.g. in virtual callbacks) and return values
129 return 'lua_pushinteger(L, '..tostring(j
)..')', 1
131 test
= function(j
) -- must handle arguments (e.g. in virtual callbacks) and return values
132 return 'lqtL_isinteger(L, '..tostring(j
)..')', 1
135 base_types
['char**'] = {
137 return 'lqtL_toarguments(L, '..tostring(j
)..')', 1
139 push
= function(j
) -- must handle arguments (e.g. in virtual callbacks) and return values
140 return 'lqtL_pusharguments(L, '..tostring(j
)..')', 1
142 test
= function(j
) -- must handle arguments (e.g. in virtual callbacks) and return values
143 return 'lua_istable(L, '..tostring(j
)..')', 1
147 base_types
['std::string const&'] = {
149 return 'std::string(lua_tostring(L, '..i
..'), lua_objlen(L, '..i
..'))', 1
152 return 'lua_pushlstring(L, '..i
..'.c_str(), '..i
..'.size())', 1
155 return 'lua_isstring(L, '..i
..')', 1
158 base_types
['std::string'] = base_types
['std::string const&']