6 command
= './cpptoxml/cpptoxml',
7 config
= './cpptoxml/parser/rpp/pp-qt-configuration',
11 file
= './generator/generator.lua',
14 types
= { 'generator/types.lua' },
22 includes
= { '<QtCore>' },
23 types
= { 'generator/qtypes.lua' },
24 filters
= { 'generator/qt_internal.lua' },
28 includes
= { '<QWidget>' },
31 depends
= { 'qtcore' },
35 Module
= function(name
)
36 local m
= modules
[name
]
37 local ret
= { name
= name
, }
39 for _
, d
in ipairs(m
.depends
) do
40 table.insert(deps
, Module(d
))
41 table.insert(m
.types
,d
..'_src/'..d
..'_type.lua')
43 for k
, t
in pairs(generator
.default
) do
46 for _
, v
in ipairs(t
) do
47 if not set
[v
] then table.insert(ret
[k
], v
) set
[v
]=true end
49 for _
, d
in ipairs(deps
) do
50 for _
, v
in ipairs(d
[k
]) do
51 if not set
[v
] then table.insert(ret
[k
], v
) set
[v
]=true end
54 for _
, v
in ipairs(m
[k
] or {}) do
55 if not set
[v
] then table.insert(ret
[k
], v
) set
[v
]=true end
61 compile
= function(name
)
62 local m
= Module(name
)
64 debug('creating stub in', generator
.directory
..'/'..m
.name
..'.tmp')
65 local f_stub
= assert(io
.open(generator
.directory
..'/'..m
.name
..'.tmp', 'w'))
66 for _
, i
in ipairs(m
.includes
) do
67 f_stub
:write('#include '..i
..'\n')
71 debug('getting output of', cpptoxml
.command
..' -C '..cpptoxml
.config
..' '..generator
.directory
..'/'..m
.name
..'.tmp')
72 local xml_file
= io
.popen(cpptoxml
.command
..' -C '..cpptoxml
.config
..' '..generator
.directory
..'/'..m
.name
..'.tmp', 'r')
73 local xml
= xml_file
:read'*a'
76 debug('creating xml file in', generator
.directory
..'/'..m
.name
..'.xml')
77 local xml_out
= io
.open(generator
.directory
..'/'..m
.name
..'.xml', 'w')
80 xml
= nil -- free memory
82 local cmd
= 'lua ' .. generator
.file
.. ' '
83 for _
, t
in ipairs(m
.types
) do
84 cmd
= cmd
.. '-t ' .. t
.. ' '
86 for _
, i
in ipairs(m
.includes
) do
87 cmd
= cmd
.. '-i \'' .. i
.. '\' '
89 for _
, f
in ipairs(m
.filters
) do
90 cmd
= cmd
.. '-f \'' .. f
.. '\' '
92 cmd
= cmd
.. '-n ' .. m
.name
.. ' ' .. generator
.directory
..'/'..m
.name
..'.xml'
93 debug('executing', cmd
)