save the modifier list in ClassModelItem
[lqt.git] / generator / types.lua
blob167222e46611d3c2cd7b9996e1b6e137bd041b3c
1 #!/usr/bin/lua
3 --[[
5 Copyright (c) 2007-2008 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
14 conditions:
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.
28 --]]
30 local base_types = (...) or {}
32 local integer_type = {
33 get = function(j)
34 return 'lua_tointeger(L, '..tostring(j)..')', 1
35 end,
36 push = function(j) -- must handle arguments (e.g. in virtual callbacks) and return values
37 return 'lua_pushinteger(L, '..tostring(j)..')', 1
38 end,
39 test = function(j) -- must handle arguments (e.g. in virtual callbacks) and return values
40 return 'lqtL_isinteger(L, '..tostring(j)..')', 1
41 end,
43 local number_type = {
44 get = function(j)
45 return 'lua_tonumber(L, '..tostring(j)..')', 1
46 end,
47 push = function(j) -- must handle arguments (e.g. in virtual callbacks) and return values
48 return 'lua_pushnumber(L, '..tostring(j)..')', 1
49 end,
50 test = function(j) -- must handle arguments (e.g. in virtual callbacks) and return values
51 return 'lqtL_isnumber(L, '..tostring(j)..')', 1
52 end,
54 local integer_type = {
55 get = function(j)
56 return 'lua_tointeger(L, '..tostring(j)..')', 1
57 end,
58 push = function(j) -- must handle arguments (e.g. in virtual callbacks) and return values
59 return 'lua_pushinteger(L, '..tostring(j)..')', 1
60 end,
61 test = function(j) -- must handle arguments (e.g. in virtual callbacks) and return values
62 return 'lqtL_isinteger(L, '..tostring(j)..')', 1
63 end,
65 local bool_type = {
66 get = function(j)
67 return 'lua_toboolean(L, '..tostring(j)..')', 1
68 end,
69 push = function(j) -- must handle arguments (e.g. in virtual callbacks) and return values
70 return 'lua_pushboolean(L, '..tostring(j)..')', 1
71 end,
72 test = function(j) -- must handle arguments (e.g. in virtual callbacks) and return values
73 return 'lqtL_isboolean(L, '..tostring(j)..')', 1
74 end,
77 base_types['char const*'] = {
78 get = function(j)
79 return 'lua_tostring(L, '..tostring(j)..')', 1
80 end,
81 push = function(j) -- must handle arguments (e.g. in virtual callbacks) and return values
82 return 'lua_pushstring(L, '..tostring(j)..')', 1
83 end,
84 test = function(j)
85 return 'lqtL_isstring(L, '..tostring(j)..')', 1
86 end,
88 base_types['char'] = integer_type
89 base_types['unsigned char'] = integer_type
90 base_types['int'] = integer_type
91 base_types['unsigned int'] = integer_type
92 base_types['short'] = integer_type
93 base_types['short int'] = integer_type
94 base_types['unsigned short'] = integer_type
95 base_types['unsigned short int'] = integer_type
96 base_types['short unsigned int'] = integer_type
97 base_types['long'] = integer_type
98 base_types['unsigned long'] = integer_type
99 base_types['long int'] = integer_type
100 base_types['unsigned long int'] = integer_type
101 base_types['long unsigned int'] = integer_type
102 base_types['long long'] = integer_type
103 base_types['unsigned long long'] = integer_type
104 base_types['long long int'] = integer_type
105 base_types['unsigned long long int'] = integer_type
106 base_types['float'] = number_type
107 base_types['double'] = number_type
108 base_types['bool'] = bool_type
110 ---[[
111 base_types['int&'] = {
112 get = function(j)
113 return '*lqtL_tointref(L, '..j..')', 1
114 end,
115 push = function(j) -- must handle arguments (e.g. in virtual callbacks) and return values
116 return 'lua_pushinteger(L, '..tostring(j)..')', 1
117 end,
118 test = function(j) -- must handle arguments (e.g. in virtual callbacks) and return values
119 return 'lqtL_isinteger(L, '..tostring(j)..')', 1
120 end,
122 base_types['char**'] = {
123 get = function(j)
124 return 'lqtL_toarguments(L, '..tostring(j)..')', 1
125 end,
126 push = function(j) -- must handle arguments (e.g. in virtual callbacks) and return values
127 return 'lqtL_pusharguments(L, '..tostring(j)..')', 1
128 end,
129 test = function(j) -- must handle arguments (e.g. in virtual callbacks) and return values
130 return 'lua_istable(L, '..tostring(j)..')', 1
131 end,
133 --]]
136 return base_types