Fixed issues handling INVALID_HANDLE_VALUE in the Windows constant generator, and built the first build with generated constants!
This commit is contained in:
parent
d2746b7d2c
commit
1f94a68432
|
@ -59,7 +59,8 @@ func forceCommonControls6() (err error) {
|
||||||
actctx.lpSource = syscall.StringToUTF16Ptr(filename)
|
actctx.lpSource = syscall.StringToUTF16Ptr(filename)
|
||||||
|
|
||||||
r1, _, err := _createActCtx.Call(uintptr(unsafe.Pointer(&actctx)))
|
r1, _, err := _createActCtx.Call(uintptr(unsafe.Pointer(&actctx)))
|
||||||
if r1 == negConst(_INVALID_HANDLE_VALUE) { // failure
|
// don't negConst() INVALID_HANDLE_VALUE; windowsconstgen was given a pointer by windows.h, and pointers are unsigned, so converting it back to signed doesn't work
|
||||||
|
if r1 == _INVALID_HANDLE_VALUE { // failure
|
||||||
return fmt.Errorf("error creating activation context for synthesized manifest file: %v", err)
|
return fmt.Errorf("error creating activation context for synthesized manifest file: %v", err)
|
||||||
}
|
}
|
||||||
r1, _, err = _activateActCtx.Call(
|
r1, _, err = _activateActCtx.Call(
|
||||||
|
|
|
@ -72,6 +72,31 @@ func gatherNames(pkg *ast.Package) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// some constants confuse cgo into thinking they're external symbols for some reason
|
||||||
|
// TODO debug cgo
|
||||||
|
var hacknames = map[string]string{
|
||||||
|
"_INVALID_HANDLE_VALUE": "x_INVALID_HANDLE_VALUE",
|
||||||
|
}
|
||||||
|
|
||||||
|
func hacknamesPreamble() string {
|
||||||
|
if len(hacknames) == 0 {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
// keep sorted for git
|
||||||
|
hn := make([]string, 0, len(hacknames))
|
||||||
|
for origname, _ := range hacknames {
|
||||||
|
hn = append(hn, origname)
|
||||||
|
}
|
||||||
|
sort.Strings(hn)
|
||||||
|
s := "// /* because cgo has issues with these */\n"
|
||||||
|
s += "// #include <stdint.h>\n"
|
||||||
|
for _, origname := range hn {
|
||||||
|
s += "// uintptr_t " + hacknames[origname] + " = (uintptr_t) (" +
|
||||||
|
origname[1:] + ");\n" // strip leading _
|
||||||
|
}
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
|
||||||
func preamble(pkg string) string {
|
func preamble(pkg string) string {
|
||||||
return "// autogenerated by windowsconstgen; do not edit\n" +
|
return "// autogenerated by windowsconstgen; do not edit\n" +
|
||||||
"package " + pkg + "\n"
|
"package " + pkg + "\n"
|
||||||
|
@ -104,6 +129,10 @@ func main() {
|
||||||
// keep sorted for git
|
// keep sorted for git
|
||||||
consts := make([]string, 0, len(unknown))
|
consts := make([]string, 0, len(unknown))
|
||||||
for ident, _ := range unknown {
|
for ident, _ := range unknown {
|
||||||
|
if hackname, ok := hacknames[ident]; ok {
|
||||||
|
consts = append(consts, hackname)
|
||||||
|
continue
|
||||||
|
}
|
||||||
consts = append(consts, ident)
|
consts = append(consts, ident)
|
||||||
}
|
}
|
||||||
sort.Strings(consts)
|
sort.Strings(consts)
|
||||||
|
@ -122,11 +151,18 @@ func main() {
|
||||||
"import \"fmt\"\n" +
|
"import \"fmt\"\n" +
|
||||||
"// #include <windows.h>\n" +
|
"// #include <windows.h>\n" +
|
||||||
"// #include <commctrl.h>\n" +
|
"// #include <commctrl.h>\n" +
|
||||||
|
"%s" +
|
||||||
"import \"C\"\n" +
|
"import \"C\"\n" +
|
||||||
"func main() {\n" +
|
"func main() {\n" +
|
||||||
" fmt.Println(%q)\n",
|
" fmt.Println(%q)\n",
|
||||||
preamble("main"), preamble("ui"))
|
preamble("main"), hacknamesPreamble(), preamble("ui"))
|
||||||
for _, ident := range consts {
|
for _, ident := range consts {
|
||||||
|
if ident[0] == 'x' {
|
||||||
|
// hack name; strip the leading x (but not the _ after it) from the constant name but keep the value name unchanged
|
||||||
|
fmt.Fprintf(f, " fmt.Println(\"const %s =\", C.%s)\n", ident[1:], ident)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
// not a hack name; strip the leading _ from the value name but keep the constant name unchanged
|
||||||
fmt.Fprintf(f, " fmt.Println(\"const %s =\", C.%s)\n", ident, ident[1:])
|
fmt.Fprintf(f, " fmt.Println(\"const %s =\", C.%s)\n", ident, ident[1:])
|
||||||
}
|
}
|
||||||
fmt.Fprintf(f, "}\n")
|
fmt.Fprintf(f, "}\n")
|
||||||
|
|
|
@ -0,0 +1,82 @@
|
||||||
|
// autogenerated by windowsconstgen; do not edit
|
||||||
|
package ui
|
||||||
|
|
||||||
|
const _BCM_GETIDEALSIZE = 5633
|
||||||
|
const _BM_GETCHECK = 240
|
||||||
|
const _BN_CLICKED = 0
|
||||||
|
const _BST_CHECKED = 1
|
||||||
|
const _BS_AUTOCHECKBOX = 3
|
||||||
|
const _BS_PUSHBUTTON = 0
|
||||||
|
const _CBS_AUTOHSCROLL = 64
|
||||||
|
const _CBS_DROPDOWN = 2
|
||||||
|
const _CBS_DROPDOWNLIST = 3
|
||||||
|
const _CB_ADDSTRING = 323
|
||||||
|
const _CB_DELETESTRING = 324
|
||||||
|
const _CB_ERR = -1
|
||||||
|
const _CB_ERRSPACE = -2
|
||||||
|
const _CB_GETCOUNT = 326
|
||||||
|
const _CB_GETCURSEL = 327
|
||||||
|
const _CB_INSERTSTRING = 330
|
||||||
|
const _COLOR_BTNFACE = 15
|
||||||
|
const _CW_USEDEFAULT = -2147483648
|
||||||
|
const _ERROR = 0
|
||||||
|
const _ES_AUTOHSCROLL = 128
|
||||||
|
const _ES_PASSWORD = 32
|
||||||
|
const _GWL_STYLE = -16
|
||||||
|
const _ICC_PROGRESS_CLASS = 32
|
||||||
|
const _LBS_EXTENDEDSEL = 2048
|
||||||
|
const _LBS_NOINTEGRALHEIGHT = 256
|
||||||
|
const _LBS_NOTIFY = 1
|
||||||
|
const _LB_ADDSTRING = 384
|
||||||
|
const _LB_DELETESTRING = 386
|
||||||
|
const _LB_ERR = -1
|
||||||
|
const _LB_ERRSPACE = -2
|
||||||
|
const _LB_GETCOUNT = 395
|
||||||
|
const _LB_GETCURSEL = 392
|
||||||
|
const _LB_GETSELCOUNT = 400
|
||||||
|
const _LB_GETSELITEMS = 401
|
||||||
|
const _LB_GETTEXT = 393
|
||||||
|
const _LB_GETTEXTLEN = 394
|
||||||
|
const _LB_INSERTSTRING = 385
|
||||||
|
const _PBM_SETMARQUEE = 1034
|
||||||
|
const _PBM_SETPOS = 1026
|
||||||
|
const _PBS_MARQUEE = 8
|
||||||
|
const _PBS_SMOOTH = 1
|
||||||
|
const _SB_HORZ = 0
|
||||||
|
const _SB_LEFT = 6
|
||||||
|
const _SB_LINELEFT = 0
|
||||||
|
const _SB_LINERIGHT = 1
|
||||||
|
const _SB_PAGELEFT = 2
|
||||||
|
const _SB_PAGERIGHT = 3
|
||||||
|
const _SB_RIGHT = 7
|
||||||
|
const _SB_THUMBPOSITION = 4
|
||||||
|
const _SB_THUMBTRACK = 5
|
||||||
|
const _SB_VERT = 1
|
||||||
|
const _SIF_PAGE = 2
|
||||||
|
const _SIF_POS = 4
|
||||||
|
const _SIF_RANGE = 1
|
||||||
|
const _SIF_TRACKPOS = 16
|
||||||
|
const _SS_LEFTNOWORDWRAP = 12
|
||||||
|
const _SS_NOPREFIX = 128
|
||||||
|
const _SW_ERASE = 4
|
||||||
|
const _SW_HIDE = 0
|
||||||
|
const _SW_INVALIDATE = 2
|
||||||
|
const _SW_SHOW = 5
|
||||||
|
const _SW_SHOWDEFAULT = 10
|
||||||
|
const _WM_CLOSE = 16
|
||||||
|
const _WM_ERASEBKGND = 20
|
||||||
|
const _WM_GETMINMAXINFO = 36
|
||||||
|
const _WM_GETTEXT = 13
|
||||||
|
const _WM_GETTEXTLENGTH = 14
|
||||||
|
const _WM_HSCROLL = 276
|
||||||
|
const _WM_SETFONT = 48
|
||||||
|
const _WM_SIZE = 5
|
||||||
|
const _WM_VSCROLL = 277
|
||||||
|
const _WS_CHILD = 1073741824
|
||||||
|
const _WS_EX_CLIENTEDGE = 512
|
||||||
|
const _WS_HSCROLL = 1048576
|
||||||
|
const _WS_OVERLAPPEDWINDOW = 13565952
|
||||||
|
const _WS_TABSTOP = 65536
|
||||||
|
const _WS_VISIBLE = 268435456
|
||||||
|
const _WS_VSCROLL = 2097152
|
||||||
|
const _INVALID_HANDLE_VALUE = 4294967295
|
Loading…
Reference in New Issue