5
Script to create the "glspi_sci.h" file.
7
"Scintilla.h" and "Scintilla.iface" in the current directory.
8
"lua" and "cpp" somewhere in your $PATH
14
cpp=io.popen("cpp -dM Scintilla.h")
17
for line in cpp:lines()
19
if line:match("^#define%s+SCI_") then
20
table.insert(cmdvals,{
21
name=line:gsub("^#define%s+([^ ]+).*", "%1"),
22
value=line:gsub("^#define%s+SCI_[^%s]*%s*","")
28
function get_cmd_name(id)
29
for i,rec in ipairs(cmdvals)
31
if ( rec.value == id ) then
32
return rec.name:sub(5,-1)
39
function translate_typename(tn)
40
if (tn=="position") or (tn=="colour") or (tn=="keymod") then
51
for i,v in ipairs(alltypes)
53
if (v==tn) then return end
55
table.insert(alltypes,tn)
61
io.input("Scintilla.iface")
63
for line in io.lines()
65
if line:match("^fun%s")
66
or line:match("^get%s")
67
or line:match("^set%s")
69
rvtype=line:gsub("...%s+([^%s]+).*", "%1")
70
rvtype=translate_typename(rvtype)
71
arglist=line:gsub("^.*%(", "(")
72
wparam=arglist:gsub("%(([^,]-),.*","%1")
74
wparam=wparam:gsub("^%s*","")
75
wparam=wparam:gsub("%s.*$","")
76
wparam=translate_typename(wparam)
80
lparam=arglist:gsub("^[^,]*,%s*","")
82
lparam=lparam:gsub("%s.*","")
83
lparam=translate_typename(lparam)
88
cmdid=line:gsub("^.*=([0-9]+)%(.*", "%1")
89
cmdname=get_cmd_name(cmdid)
95
"\t{\""..cmdname.."\", SLT_"..rvtype:upper()..", SCI_"..cmdname..", SLT_"..wparam:upper()..", SLT_"..lparam:upper().."},")
104
******************* !!! IMPORTANT !!! ***************************
106
* This is a machine generated file, do not edit by hand!
107
* If you need to modify this file, see "geanylua/util/mkiface.lua"
109
*******************************************************************
116
print("typedef enum {")
117
for i,v in ipairs(alltypes)
119
print("\tSLT_"..v:upper()..", ")
121
print("\tSLT_LAST\n} GlspiType;\n\n")
124
print("typedef struct _SciCmdHashEntry {")
125
print("\tgchar *name;")
126
print("\tGlspiType result;")
127
print("\tgint msgid;")
128
print("\tGlspiType wparam;")
129
print("\tGlspiType lparam;")
130
print("} SciCmdHashEntry;")
132
print("static SciCmdHashEntry sci_cmd_hash_entries[] = {")
134
for i,v in ipairs(entries)
140
print("\t{NULL, SLT_LAST, 0, SLT_LAST, SLT_LAST}")