Skip to content

Commit 5876c57

Browse files
authored
Merge pull request #135 from gucio321/missing-funcs
codegen: wrappers improvement
2 parents 3e3e98c + 3d8ddb4 commit 5876c57

File tree

9 files changed

+300
-83
lines changed

9 files changed

+300
-83
lines changed

cimgui_funcs.go

Lines changed: 254 additions & 63 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cimgui_structs_accessor.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2495,8 +2495,6 @@ void wrap_ImGuiWindowTempData_SetItemWidthStack(ImGuiWindowTempData *ImGuiWindow
24952495
ImVector_float wrap_ImGuiWindowTempData_GetItemWidthStack(ImGuiWindowTempData *self) { return self->ItemWidthStack; }
24962496
void wrap_ImGuiWindowTempData_SetTextWrapPosStack(ImGuiWindowTempData *ImGuiWindowTempDataPtr, ImVector_float v) { ImGuiWindowTempDataPtr->TextWrapPosStack = v; }
24972497
ImVector_float wrap_ImGuiWindowTempData_GetTextWrapPosStack(ImGuiWindowTempData *self) { return self->TextWrapPosStack; }
2498-
void wrap_ImVec1_Setx(ImVec1 *ImVec1Ptr, float v) { ImVec1Ptr->x = v; }
2499-
float wrap_ImVec1_Getx(ImVec1 *self) { return self->x; }
25002498
void wrap_ImVec2ih_Setx(ImVec2ih *ImVec2ihPtr, short v) { ImVec2ihPtr->x = v; }
25012499
short wrap_ImVec2ih_Getx(ImVec2ih *self) { return self->x; }
25022500
void wrap_ImVec2ih_Sety(ImVec2ih *ImVec2ihPtr, short v) { ImVec2ihPtr->y = v; }

cimgui_structs_accessor.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2499,8 +2499,6 @@ extern void wrap_ImGuiWindowTempData_SetItemWidthStack(ImGuiWindowTempData *ImGu
24992499
extern ImVector_float wrap_ImGuiWindowTempData_GetItemWidthStack(ImGuiWindowTempData *self);
25002500
extern void wrap_ImGuiWindowTempData_SetTextWrapPosStack(ImGuiWindowTempData *ImGuiWindowTempDataPtr, ImVector_float v);
25012501
extern ImVector_float wrap_ImGuiWindowTempData_GetTextWrapPosStack(ImGuiWindowTempData *self);
2502-
extern void wrap_ImVec1_Setx(ImVec1 *ImVec1Ptr, float v);
2503-
extern float wrap_ImVec1_Getx(ImVec1 *self);
25042502
extern void wrap_ImVec2ih_Setx(ImVec2ih *ImVec2ihPtr, short v);
25052503
extern short wrap_ImVec2ih_Getx(ImVec2ih *self);
25062504
extern void wrap_ImVec2ih_Sety(ImVec2ih *ImVec2ihPtr, short v);

cimplot_funcs.go

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/codegen/arguments_wrapper.go

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ type argumentWrapper func(arg ArgDef) ArgumentWrapperData
2424

2525
func argWrapper(argType string) (wrapper argumentWrapper, err error) {
2626
argWrapperMap := map[string]argumentWrapper{
27+
"char": simpleW("rune", "C.char"),
28+
"char[5]": simplePtrArrayW(5, "C.char", "rune"),
2729
"char*": constCharW,
2830
"const char*": constCharW,
2931
"const char**": charPtrPtrW,
@@ -32,7 +34,8 @@ func argWrapper(argType string) (wrapper argumentWrapper, err error) {
3234
"unsigned char**": uCharPtrW,
3335
"size_t": simpleW("uint64", "C.xulong"),
3436
"size_t*": sizeTPtrW,
35-
"float": floatW,
37+
"float": simpleW("float32", "C.float"),
38+
"const float": simpleW("float32", "C.float"),
3639
"float*": floatPtrW,
3740
"const float*": floatArrayW,
3841
"short": simpleW("int", "C.short"),
@@ -51,6 +54,7 @@ func argWrapper(argType string) (wrapper argumentWrapper, err error) {
5154
"const ImS16*": simplePtrSliceW("C.ImS16", "int"),
5255
"ImS32": simpleW("int", "C.ImS32"),
5356
"const ImS32*": simplePtrSliceW("C.ImS32", "int32"),
57+
"ImS64": simpleW("int64", "C.ImS64"),
5458
"const ImS64*": int64ArrayW,
5559
"int": simpleW("int32", "C.int"),
5660
"int*": simplePtrW("int32", "C.int"),
@@ -67,16 +71,22 @@ func argWrapper(argType string) (wrapper argumentWrapper, err error) {
6771
"float[2]": simplePtrArrayW(2, "C.float", "float32"),
6872
"float[3]": simplePtrArrayW(3, "C.float", "float32"),
6973
"float[4]": simplePtrArrayW(4, "C.float", "float32"),
70-
"ImWchar": simpleW("Wchar", "C.ImWchar"),
71-
"const ImWchar*": simpleW("*Wchar", "(*C.ImWchar)"),
72-
"ImGuiID": simpleW("ImGuiID", "C.ImGuiID"),
74+
"ImWchar": simpleW("rune", "C.ImWchar"),
75+
"ImWchar16": simpleW("rune", "C.ImWchar16"),
76+
"const ImWchar*": simplePtrW("rune", "C.ImWchar"),
77+
"ImGuiID": simpleW("ID", "C.ImGuiID"),
78+
"ImGuiID*": simplePtrW("ID", "C.ImGuiID"),
7379
"ImTextureID": simpleW("TextureID", "C.ImTextureID"),
7480
"ImDrawIdx": simpleW("DrawIdx", "C.ImDrawIdx"),
7581
"ImGuiTableColumnIdx": simpleW("TableColumnIdx", "C.ImGuiTableColumnIdx"),
7682
"ImGuiTableDrawChannelIdx": simpleW("TableDrawChannelIdx", "C.ImGuiTableDrawChannelIdx"),
7783
"ImGuiKeyChord": simpleW("KeyChord", "C.ImGuiKeyChord"),
7884
"void*": simpleW("unsafe.Pointer", ""),
7985
"const void*": simpleW("unsafe.Pointer", ""),
86+
"const ImVec1": wrappableW("Vec1"),
87+
"const ImVec1*": wrappablePtrW("*Vec1", "C.ImVec1"),
88+
"ImVec1": wrappableW("Vec1"),
89+
"ImVec1*": wrappablePtrW("*Vec1", "C.ImVec1"),
8090
"const ImVec2": wrappableW("Vec2"),
8191
"const ImVec2*": wrappablePtrW("*Vec2", "C.ImVec2"),
8292
"ImVec2": wrappableW("Vec2"),
@@ -90,6 +100,7 @@ func argWrapper(argType string) (wrapper argumentWrapper, err error) {
90100
"ImRect": wrappableW("Rect"),
91101
"const ImRect": wrappableW("Rect"),
92102
"ImRect*": wrappablePtrW("*Rect", "C.ImRect"),
103+
"const ImRect*": wrappablePtrW("*Rect", "C.ImRect"),
93104
"ImPlotPoint": wrappableW("PlotPoint"),
94105
"const ImPlotPoint": wrappableW("PlotPoint"),
95106
"ImPlotPoint*": wrappablePtrW("*PlotPoint", "C.ImPlotPoint"),
@@ -136,13 +147,6 @@ func sizeTPtrW(arg ArgDef) ArgumentWrapperData {
136147
}
137148
}
138149

139-
func floatW(arg ArgDef) ArgumentWrapperData {
140-
return ArgumentWrapperData{
141-
ArgType: "float32",
142-
VarName: fmt.Sprintf("C.float(%s)", arg.Name),
143-
}
144-
}
145-
146150
// leave this for now because of https://github.com/AllenDang/cimgui-go/issues/31
147151
func floatPtrW(arg ArgDef) ArgumentWrapperData {
148152
return simplePtrW("float32", "C.float")(arg)

cmd/codegen/gencpp.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,7 @@ func generateCppStructsAccessor(prefix string, validFuncs []FuncDef, structs []S
361361
"ImGuiIO_SetAppAcceptingEvents": true,
362362
"ImGuiDockNode_SetLocalFlags": true,
363363
"ImFontAtlas_SetTexID": true,
364+
"ImVec1_Getx": true,
364365
"ImVec2_Getx": true,
365366
"ImVec2_Gety": true,
366367
"ImVec4_Getx": true,

cmd/codegen/return_wrapper.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,9 @@ func getReturnTypeWrapperFunc(returnType string) (returnWrapper, error) {
1313
"bool": {"bool", "return %s == C.bool(true)"},
1414
"char*": {"string", "return C.GoString(%s)"},
1515
"const char*": {"string", "return C.GoString(%s)"},
16-
"const ImWchar*": simpleR("(*Wchar)"),
17-
"ImWchar": simpleR("Wchar"),
16+
"const ImWchar*": {"*rune", "return (*rune)(unsafe.Pointer((*uint)(unsafe.Pointer(%s))))"},
17+
"ImWchar": simpleR("rune"),
18+
"ImWchar16": simpleR("rune"),
1819
"float": simpleR("float32"),
1920
"double": simpleR("float64"),
2021
"int": simpleR("int"),

extra_types.go

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111
)
1212

1313
type (
14-
Wchar C.uint
1514
ID C.ImGuiID
1615
TextureID C.ImTextureID
1716
DrawIdx C.ImDrawIdx
@@ -20,6 +19,25 @@ type (
2019
KeyChord C.ImGuiKeyChord
2120
)
2221

22+
var _ wrappableType[C.ImVec1, *Vec1] = &Vec1{}
23+
24+
type Vec1 struct {
25+
X float32
26+
}
27+
28+
func NewVec1(x float32) Vec1 {
29+
return Vec1{X: x}
30+
}
31+
32+
func (i *Vec1) fromC(vec1 C.ImVec1) *Vec1 {
33+
*i = NewVec1(float32(vec1.x))
34+
return i
35+
}
36+
37+
func (i Vec1) toC() C.ImVec1 {
38+
return C.ImVec1{x: C.float(i.X)}
39+
}
40+
2341
var _ wrappableType[C.ImVec2, *Vec2] = &Vec2{}
2442

2543
type Vec2 struct {

util.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,10 @@ func (gr GlyphRange) Destroy() {
4545
C.wrap_DestroyGlyphRange(gr.handle())
4646
}
4747

48-
func (gr GlyphRange) Data() *Wchar {
49-
return (*Wchar)(C.wrap_GlyphRange_GetData(gr.handle()))
48+
func (gr GlyphRange) Data() *rune {
49+
return (*rune)(unsafe.Pointer((*uint)(
50+
unsafe.Pointer(C.wrap_GlyphRange_GetData(gr.handle())),
51+
)))
5052
}
5153

5254
func (fa FontAtlas) GetFontCount() int {

0 commit comments

Comments
 (0)