4 lqt
.classes
= lqt
.classes
or {}
7 local pointer_t
= function(fn
)
8 local cn
= string.gsub(fn
, '::', '.')
10 -- the argument is a pointer to class
12 return 'lqtL_passudata(L, '..n
..', "'..cn
..'*")', 1
15 return 'static_cast<'..fn
..'*>'
16 ..'(lqtL_toudata(L, '..n
..', "'..cn
..'*"))', 1
19 return 'lqtL_isudata(L, '..n
..', "'..cn
..'*")', 1
24 local pointer_const_t
= function(fn
)
25 local cn
= string.gsub(fn
, '::', '.')
27 -- the argument is a pointer to constant class instance
29 return 'lqtL_passudata(L, '..n
..', "'..cn
..'*")', 1
32 return 'static_cast<'..fn
..'*>'
33 ..'(lqtL_toudata(L, '..n
..', "'..cn
..'*"))', 1
36 return 'lqtL_isudata(L, '..n
..', "'..cn
..'*")', 1
41 local ref_t
= function(fn
)
42 local cn
= string.gsub(fn
, '::', '.')
44 -- the argument is a reference to class
46 return 'lqtL_pushudata(L, &'..n
..', "'..cn
..'*")', 1
49 return '*static_cast<'..fn
..'*>'
50 ..'(lqtL_toudata(L, '..n
..', "'..cn
..'*"))', 1
53 return 'lqtL_isudata(L, '..n
..', "'..cn
..'*")', 1
58 local instance_t
= function(fn
)
59 local cn
= string.gsub(fn
, '::', '.')
61 -- the argument is the class itself
63 return 'lqtL_copyudata(L, &'..n
..', "'..cn
..'*")', 1
66 return '*static_cast<'..fn
..'*>'
67 ..'(lqtL_toudata(L, '..n
..', "'..cn
..'*"))', 1
70 return 'lqtL_isudata(L, '..n
..', "'..cn
..'*")', 1
75 local const_ref_t
= function(fn
)
76 local cn
= string.gsub(fn
, '::', '.')
78 -- the argument is a pointer to class
80 return 'lqtL_copyudata(L, &'..n
..', "'..cn
..'*")', 1, string.gsub(fn
, ' const&$', '')
83 return '*static_cast<'..fn
..'*>'
84 ..'(lqtL_toudata(L, '..n
..', "'..cn
..'*"))', 1
87 return 'lqtL_isudata(L, '..n
..', "'..cn
..'*")', 1
93 lqt
.classes
.insert
= function(cname
, types
) --, cancopy)
94 if types
[cname
]==nil then
95 types
[cname
..'*'] = pointer_t(cname
)
96 types
[cname
..' const*'] = pointer_const_t(cname
)
97 types
[cname
..'&'] = ref_t(cname
)
99 types
[cname
] = instance_t(cname
)
100 types
[cname
..' const&'] = const_ref_t(cname
)