Skip to content

Commit

Permalink
return wrapper: use simple types preset
Browse files Browse the repository at this point in the history
  • Loading branch information
gucio321 committed Dec 21, 2024
1 parent dfba16f commit 8b77e14
Showing 1 changed file with 21 additions and 26 deletions.
47 changes: 21 additions & 26 deletions cmd/codegen/return_wrapper.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,9 @@ func getReturnWrapper(
"bool": {"bool", "%s == C.bool(true)", "C.bool"},
"bool*": simplePtrR("bool", "C.bool"),
"char": simpleR("rune", "C.char"),
"char*": {"string", "C.GoString(%s)", "*C.char"},
"unsigned char": simpleR("uint", "C.char"),
"unsigned char*": {"*uint", "(*uint)(unsafe.Pointer(%s))", "C.uchar"}, // NOTE: This should work but I'm not 100% sure
"char*": {"string", "C.GoString(%s)", "*C.char"},
"ImWchar": simpleR("Wchar", "C.ImWchar"),
"ImWchar*": simpleR("(*Wchar)", "*C.ImWchar"),
"ImWchar16": simpleR("uint16", "C.ImWchar16"),
"float": simpleR("float32", "C.float"),
"float*": simplePtrR("float32", "C.float"),
"double": simpleR("float64", "C.double"),
Expand All @@ -41,32 +38,30 @@ func getReturnWrapper(
"short": simpleR("int16", "C.short"),
"unsigned short": simpleR("uint16", "C.ushort"),
"unsigned short*": simplePtrR("uint16", "C.ushort"),
"ImS8": simpleR("int", "C.ImS8"),
"ImS16": simpleR("int16", "C.ImS16"),
"ImS16*": simplePtrR("int16", "C.ImS16"),
"ImS32": simpleR("int", "C.ImS32"),
"ImS64": simpleR("int64", "C.ImS64"),
"ImS64*": simplePtrR("int64", "C.ImS64"),
"ImU8": simpleR("byte", "C.ImU8"),
"ImU8*": simplePtrR("byte", "C.ImU8"),
"ImU16": simpleR("uint16", "C.ImU16"),
"ImU16*": simplePtrR("uint16", "C.ImU16"),
"ImU32": simpleR("uint32", "C.ImU32"),
"ImU32*": simplePtrR("uint32", "C.ImU32"),
"ImU64": simpleR("uint64", "C.ImU64"),
"ImU64*": simplePtrR("uint64", "C.ImU64"),
"ImVec4": wrappableR(prefixGoPackage("Vec4", "imgui", context), "C.ImVec4"),
"ImVec4*": imVec4PtrReturnW(context),
"ImVec2": wrappableR(prefixGoPackage("Vec2", "imgui", context), "C.ImVec2"),
"ImColor": wrappableR(prefixGoPackage("Color", "imgui", context), "C.ImColor"),
"ImPlotPoint": wrappableR(prefixGoPackage("PlotPoint", "implot", context), "C.ImPlotPoint"),
"ImRect": wrappableR(prefixGoPackage("Rect", "imgui", context), "C.ImRect"),
"ImPlotTime": wrappableR(prefixGoPackage("PlotTime", "implot", context), "C.ImPlotTime"),
"tm": wrappableR(prefixGoPackage("Tm", "implot", context), "C.tm"),
"uintptr_t": simpleR("uintptr", "C.uintptr_t"),
"size_t": simpleR("uint64", "C.size_t"),
"time_t": simpleR("uint64", "C.time_t"),
"void*": simpleR("unsafe.Pointer", "unsafe.Pointer"),

"ImS16*": simplePtrR("int16", "C.ImS16"),
"ImS64*": simplePtrR("int64", "C.ImS64"),
"ImU8*": simplePtrR("byte", "C.ImU8"),
"ImU16*": simplePtrR("uint16", "C.ImU16"),
"ImU32*": simplePtrR("uint32", "C.ImU32"),
"ImU64*": simplePtrR("uint64", "C.ImU64"),
"ImVec4": wrappableR(prefixGoPackage("Vec4", "imgui", context), "C.ImVec4"),
"ImVec4*": imVec4PtrReturnW(context),
"ImVec2": wrappableR(prefixGoPackage("Vec2", "imgui", context), "C.ImVec2"),
"ImColor": wrappableR(prefixGoPackage("Color", "imgui", context), "C.ImColor"),
"ImPlotPoint": wrappableR(prefixGoPackage("PlotPoint", "implot", context), "C.ImPlotPoint"),
"ImRect": wrappableR(prefixGoPackage("Rect", "imgui", context), "C.ImRect"),
"ImPlotTime": wrappableR(prefixGoPackage("PlotTime", "implot", context), "C.ImPlotTime"),
"tm": wrappableR(prefixGoPackage("Tm", "implot", context), "C.tm"),
}

// import preset
for k, v := range context.preset.SimpleTypes {
returnWrapperMap[k] = simpleR("("+prefixGoPackage(v[0], v[2], context)+")", v[1])
}

isPointer := HasSuffix(t, "*")
Expand Down

0 comments on commit 8b77e14

Please sign in to comment.