1 module('signalslot', package
.seeall
)
3 local print_slot_h
= fprint(assert(io
.open(module_name
.._src
..module_name
..'_slot.hpp', 'w')))
4 local print_slot_c
= fprint(assert(io
.open(module_name
.._src
..module_name
..'_slot.cpp', 'w')))
9 function copy_signals(functions
)
10 for f
in pairs(functions
) do
11 if f
.xarg
.signal
=='1' then
17 function slots_for_signals()
18 for sig
in pairs(signals
) do
19 local args
, comma
= '(', ''
20 for i
, a
in ipairs(sig
.arguments
) do
21 args
= args
.. comma
.. a
.xarg
.type_name
.. ' arg'..i
25 local pushlines
, stack
= make_pushlines(sig
.arguments
)
27 if not slots
['void __slot '..args
] then
28 slots
['void __slot '..args
] = 'void LqtSlotAcceptor::__slot '..args
..[[ {
29 //int oldtop = lua_gettop(L);
30 //lua_getfield(L, -1, "__slot]]..string.gsub(args
, ' arg.', '')..[[");
31 //if (lua_isnil(L, -1)) {
33 //lua_getfield(L, -1, "__slot");
35 //if (!lua_isfunction(L, -1)) {
36 //lua_settop(L, oldtop);
41 if (lqtL_pcall(L, ]]..stack
..[[+1, 0, 0)) {
43 qDebug() << lua_tostring(L, -1);
46 //lua_settop(L, oldtop);
51 ignore(sig
.xarg
.fullname
, 'slot', stack
)
56 function print_slots(s
)
57 print_slot_h
'class LqtSlotAcceptor : public QObject {'
58 print_slot_h
' Q_OBJECT'
59 print_slot_h
' lua_State *L;'
60 print_slot_h
' public:'
61 print_slot_h(' LqtSlotAcceptor(lua_State *l, QObject *p=NULL) : QObject(p), L(l) { setObjectName("'..module_name
..'"); lqtL_register(L, this); }')
62 print_slot_h
' virtual ~LqtSlotAcceptor() { lqtL_unregister(L, this); }'
63 print_slot_h
' public slots:'
64 for p
, b
in pairs(s
) do
65 print_slot_h(' '..p
..';')
69 print_slot_h('\nextern LqtSlotAcceptor *lqtSlotAcceptor_'..module_name
..';')
70 print_slot_c('\nLqtSlotAcceptor *lqtSlotAcceptor_'..module_name
..';')
74 -------------------------------------------------------------------------------
76 function process(functions
)
77 copy_signals(functions
)
82 print_slot_h('#ifndef LQT_SLOT_'..module_name
)
83 print_slot_h('#define LQT_SLOT_'..module_name
)
84 print_slot_h(output_includes
)
85 print_slot_c('#include "'..module_name
..'_slot.hpp'..'"\n\n')
89 print_slot_h('#endif')