diff --git a/cimgui_funcs.go b/cimgui_funcs.go index 40a4f7344..029ed48f9 100644 --- a/cimgui_funcs.go +++ b/cimgui_funcs.go @@ -1171,7 +1171,7 @@ func (self *FontGlyphRangesBuilder) AddRanges(ranges *Wchar) { func (self *FontGlyphRangesBuilder) AddTextV(text string) { selfArg, selfFin := self.handle() textArg, textFin := WrapString(text) - C.wrap_ImFontGlyphRangesBuilder_AddTextV(selfArg, textArg) + C.wrap_ImFontGlyphRangesBuilder_AddTextV(selfArg, textArg, C.int(len(text))) selfFin() textFin() @@ -1267,7 +1267,7 @@ func (self *Font) CalcWordWrapPositionA(scale float32, text string, wrap_width f selfFin() textFin() }() - return C.GoString(C.wrap_ImFont_CalcWordWrapPositionA(selfArg, C.float(scale), textArg, C.float(wrap_width))) + return C.GoString(C.wrap_ImFont_CalcWordWrapPositionA(selfArg, C.float(scale), textArg, C.int(len(text)), C.float(wrap_width))) } func (self *Font) ClearOutputData() { @@ -1773,7 +1773,7 @@ func NewInputTextCallbackData() *InputTextCallbackData { func (self *InputTextCallbackData) InsertCharsV(pos int32, text string) { selfArg, selfFin := self.handle() textArg, textFin := WrapString(text) - C.wrap_ImGuiInputTextCallbackData_InsertCharsV(selfArg, C.int(pos), textArg) + C.wrap_ImGuiInputTextCallbackData_InsertCharsV(selfArg, C.int(pos), textArg, C.int(len(text))) selfFin() textFin() @@ -2808,7 +2808,7 @@ func (self *TextFilter) PassFilterV(text string) bool { selfFin() textFin() }() - return C.wrap_ImGuiTextFilter_PassFilterV(selfArg, textArg) == C.bool(true) + return C.wrap_ImGuiTextFilter_PassFilterV(selfArg, textArg, C.int(len(text))) == C.bool(true) } func (self *TextFilter) Destroy() { @@ -3971,7 +3971,7 @@ func CalcTextSizeV(text string, hide_text_after_double_hash bool, wrap_width flo pOutArg, pOutFin := wrap[C.ImVec2, *Vec2](pOut) textArg, textFin := WrapString(text) - C.wrap_igCalcTextSizeV(pOutArg, textArg, C.bool(hide_text_after_double_hash), C.float(wrap_width)) + C.wrap_igCalcTextSizeV(pOutArg, textArg, C.int(len(text)), C.bool(hide_text_after_double_hash), C.float(wrap_width)) pOutFin() textFin() @@ -5391,7 +5391,7 @@ func InternalFindRenderedTextEndV(text string) string { defer func() { textFin() }() - return C.GoString(C.wrap_igFindRenderedTextEndV(textArg)) + return C.GoString(C.wrap_igFindRenderedTextEndV(textArg, C.int(len(text)))) } func InternalFindSettingsHandler(type_name string) *SettingsHandler { @@ -7724,7 +7724,7 @@ func LogFinish() { func InternalLogRenderedTextV(ref_pos *Vec2, text string) { ref_posArg, ref_posFin := wrap[C.ImVec2, *Vec2](ref_pos) textArg, textFin := WrapString(text) - C.wrap_igLogRenderedTextV(ref_posArg, textArg) + C.wrap_igLogRenderedTextV(ref_posArg, textArg, C.int(len(text))) ref_posFin() textFin() @@ -8322,7 +8322,7 @@ func InternalRenderRectFilledWithHole(draw_list *DrawList, outer Rect, inner Rec // hide_text_after_hash: true func InternalRenderTextV(pos Vec2, text string, hide_text_after_hash bool) { textArg, textFin := WrapString(text) - C.wrap_igRenderTextV(pos.toC(), textArg, C.bool(hide_text_after_hash)) + C.wrap_igRenderTextV(pos.toC(), textArg, C.int(len(text)), C.bool(hide_text_after_hash)) textFin() } @@ -8334,7 +8334,7 @@ func InternalRenderTextClippedV(pos_min Vec2, pos_max Vec2, text string, text_si textArg, textFin := WrapString(text) text_size_if_knownArg, text_size_if_knownFin := wrap[C.ImVec2, *Vec2](text_size_if_known) clip_rectArg, clip_rectFin := wrap[C.ImRect, *Rect](clip_rect) - C.wrap_igRenderTextClippedV(pos_min.toC(), pos_max.toC(), textArg, text_size_if_knownArg, align.toC(), clip_rectArg) + C.wrap_igRenderTextClippedV(pos_min.toC(), pos_max.toC(), textArg, C.int(len(text)), text_size_if_knownArg, align.toC(), clip_rectArg) textFin() text_size_if_knownFin() @@ -8349,7 +8349,7 @@ func InternalRenderTextClippedExV(draw_list *DrawList, pos_min Vec2, pos_max Vec textArg, textFin := WrapString(text) text_size_if_knownArg, text_size_if_knownFin := wrap[C.ImVec2, *Vec2](text_size_if_known) clip_rectArg, clip_rectFin := wrap[C.ImRect, *Rect](clip_rect) - C.wrap_igRenderTextClippedExV(draw_listArg, pos_min.toC(), pos_max.toC(), textArg, text_size_if_knownArg, align.toC(), clip_rectArg) + C.wrap_igRenderTextClippedExV(draw_listArg, pos_min.toC(), pos_max.toC(), textArg, C.int(len(text)), text_size_if_knownArg, align.toC(), clip_rectArg) draw_listFin() textFin() @@ -8361,7 +8361,7 @@ func InternalRenderTextEllipsis(draw_list *DrawList, pos_min Vec2, pos_max Vec2, draw_listArg, draw_listFin := draw_list.handle() textArg, textFin := WrapString(text) text_size_if_knownArg, text_size_if_knownFin := wrap[C.ImVec2, *Vec2](text_size_if_known) - C.wrap_igRenderTextEllipsis(draw_listArg, pos_min.toC(), pos_max.toC(), C.float(clip_max_x), C.float(ellipsis_max_x), textArg, text_size_if_knownArg) + C.wrap_igRenderTextEllipsis(draw_listArg, pos_min.toC(), pos_max.toC(), C.float(clip_max_x), C.float(ellipsis_max_x), textArg, C.int(len(text)), text_size_if_knownArg) draw_listFin() textFin() @@ -8370,7 +8370,7 @@ func InternalRenderTextEllipsis(draw_list *DrawList, pos_min Vec2, pos_max Vec2, func InternalRenderTextWrapped(pos Vec2, text string, wrap_width float32) { textArg, textFin := WrapString(text) - C.wrap_igRenderTextWrapped(pos.toC(), textArg, C.float(wrap_width)) + C.wrap_igRenderTextWrapped(pos.toC(), textArg, C.int(len(text)), C.float(wrap_width)) textFin() } @@ -10114,7 +10114,7 @@ func TextDisabled(fmt string) { // flags: 0 func InternalTextExV(text string, flags TextFlags) { textArg, textFin := WrapString(text) - C.wrap_igTextExV(textArg, C.ImGuiTextFlags(flags)) + C.wrap_igTextExV(textArg, C.int(len(text)), C.ImGuiTextFlags(flags)) textFin() } @@ -10123,7 +10123,7 @@ func InternalTextExV(text string, flags TextFlags) { // %s parameter default value hint: func TextUnformattedV(text string) { textArg, textFin := WrapString(text) - C.wrap_igTextUnformattedV(textArg) + C.wrap_igTextUnformattedV(textArg, C.int(len(text))) textFin() } @@ -10662,7 +10662,7 @@ func (self *FontAtlas) AddFontFromMemoryTTF(font_data unsafe.Pointer, font_data_ func (self *FontGlyphRangesBuilder) AddText(text string) { selfArg, selfFin := self.handle() textArg, textFin := WrapString(text) - C.wrap_ImFontGlyphRangesBuilder_AddText(selfArg, textArg) + C.wrap_ImFontGlyphRangesBuilder_AddText(selfArg, textArg, C.int(len(text))) selfFin() textFin() @@ -10711,7 +10711,7 @@ func (self *IO) SetKeyEventNativeData(key Key, native_keycode int32, native_scan func (self *InputTextCallbackData) InsertChars(pos int32, text string) { selfArg, selfFin := self.handle() textArg, textFin := WrapString(text) - C.wrap_ImGuiInputTextCallbackData_InsertChars(selfArg, C.int(pos), textArg) + C.wrap_ImGuiInputTextCallbackData_InsertChars(selfArg, C.int(pos), textArg, C.int(len(text))) selfFin() textFin() @@ -10795,7 +10795,7 @@ func (self *TextFilter) PassFilter(text string) bool { selfFin() textFin() }() - return C.wrap_ImGuiTextFilter_PassFilter(selfArg, textArg) == C.bool(true) + return C.wrap_ImGuiTextFilter_PassFilter(selfArg, textArg, C.int(len(text))) == C.bool(true) } func (self *Window) InternalIDStr(str string) ID { @@ -11008,7 +11008,7 @@ func CalcTextSize(text string) Vec2 { pOutArg, pOutFin := wrap[C.ImVec2, *Vec2](pOut) textArg, textFin := WrapString(text) - C.wrap_igCalcTextSize(pOutArg, textArg) + C.wrap_igCalcTextSize(pOutArg, textArg, C.int(len(text))) pOutFin() textFin() @@ -11376,7 +11376,7 @@ func InternalFindRenderedTextEnd(text string) string { defer func() { textFin() }() - return C.GoString(C.wrap_igFindRenderedTextEnd(textArg)) + return C.GoString(C.wrap_igFindRenderedTextEnd(textArg, C.int(len(text)))) } func InternalFocusWindow(window *Window) { @@ -11759,7 +11759,7 @@ func LoadIniSettingsFromMemory(ini_data string) { func InternalLogRenderedText(ref_pos *Vec2, text string) { ref_posArg, ref_posFin := wrap[C.ImVec2, *Vec2](ref_pos) textArg, textFin := WrapString(text) - C.wrap_igLogRenderedText(ref_posArg, textArg) + C.wrap_igLogRenderedText(ref_posArg, textArg, C.int(len(text))) ref_posFin() textFin() @@ -11895,7 +11895,7 @@ func RenderPlatformWindowsDefault() { func InternalRenderText(pos Vec2, text string) { textArg, textFin := WrapString(text) - C.wrap_igRenderText(pos.toC(), textArg) + C.wrap_igRenderText(pos.toC(), textArg, C.int(len(text))) textFin() } @@ -11903,7 +11903,7 @@ func InternalRenderText(pos Vec2, text string) { func InternalRenderTextClipped(pos_min Vec2, pos_max Vec2, text string, text_size_if_known *Vec2) { textArg, textFin := WrapString(text) text_size_if_knownArg, text_size_if_knownFin := wrap[C.ImVec2, *Vec2](text_size_if_known) - C.wrap_igRenderTextClipped(pos_min.toC(), pos_max.toC(), textArg, text_size_if_knownArg) + C.wrap_igRenderTextClipped(pos_min.toC(), pos_max.toC(), textArg, C.int(len(text)), text_size_if_knownArg) textFin() text_size_if_knownFin() @@ -11913,7 +11913,7 @@ func InternalRenderTextClippedEx(draw_list *DrawList, pos_min Vec2, pos_max Vec2 draw_listArg, draw_listFin := draw_list.handle() textArg, textFin := WrapString(text) text_size_if_knownArg, text_size_if_knownFin := wrap[C.ImVec2, *Vec2](text_size_if_known) - C.wrap_igRenderTextClippedEx(draw_listArg, pos_min.toC(), pos_max.toC(), textArg, text_size_if_knownArg) + C.wrap_igRenderTextClippedEx(draw_listArg, pos_min.toC(), pos_max.toC(), textArg, C.int(len(text)), text_size_if_knownArg) draw_listFin() textFin() @@ -12377,14 +12377,14 @@ func InternalTempInputScalar(bb Rect, id ID, label string, data_type DataType, p func InternalTextEx(text string) { textArg, textFin := WrapString(text) - C.wrap_igTextEx(textArg) + C.wrap_igTextEx(textArg, C.int(len(text))) textFin() } func TextUnformatted(text string) { textArg, textFin := WrapString(text) - C.wrap_igTextUnformatted(textArg) + C.wrap_igTextUnformatted(textArg, C.int(len(text))) textFin() } diff --git a/cimgui_wrapper.cpp b/cimgui_wrapper.cpp index 886c29fc4..b686edebd 100644 --- a/cimgui_wrapper.cpp +++ b/cimgui_wrapper.cpp @@ -6,34 +6,34 @@ void wrap_ImDrawList_AddText_FontPtrV(ImDrawList* self,const ImFont* font,float font_size,const ImVec2 pos,ImU32 col,const char* text_begin,float wrap_width,const ImVec4* cpu_fine_clip_rect) { ImDrawList_AddText_FontPtr(self,font,font_size,pos,col,text_begin,0,wrap_width,cpu_fine_clip_rect); } void wrap_ImDrawList_AddText_Vec2V(ImDrawList* self,const ImVec2 pos,ImU32 col,const char* text_begin) { ImDrawList_AddText_Vec2(self,pos,col,text_begin,0); } -void wrap_ImFontGlyphRangesBuilder_AddTextV(ImFontGlyphRangesBuilder* self,const char* text) { ImFontGlyphRangesBuilder_AddText(self,text,0); } +void wrap_ImFontGlyphRangesBuilder_AddTextV(ImFontGlyphRangesBuilder* self,const char* text,const int text_len) { ImFontGlyphRangesBuilder_AddText(self,text,(text_len > 0) ? text + text_len*sizeof(char)-1 : 0); } void wrap_ImFont_CalcTextSizeAV(ImVec2 *pOut,ImFont* self,float size,float max_width,float wrap_width,const char* text_begin,const char** remaining) { ImFont_CalcTextSizeA(pOut,self,size,max_width,wrap_width,text_begin,0,remaining); } -const char* wrap_ImFont_CalcWordWrapPositionA(ImFont* self,float scale,const char* text,float wrap_width) { return ImFont_CalcWordWrapPositionA(self,scale,text,0,wrap_width); } +const char* wrap_ImFont_CalcWordWrapPositionA(ImFont* self,float scale,const char* text,const int text_len,float wrap_width) { return ImFont_CalcWordWrapPositionA(self,scale,text,(text_len > 0) ? text + text_len*sizeof(char)-1 : 0,wrap_width); } void wrap_ImFont_RenderTextV(ImFont* self,ImDrawList* draw_list,float size,const ImVec2 pos,ImU32 col,const ImVec4 clip_rect,const char* text_begin,float wrap_width,bool cpu_fine_clip) { ImFont_RenderText(self,draw_list,size,pos,col,clip_rect,text_begin,0,wrap_width,cpu_fine_clip); } -void wrap_ImGuiInputTextCallbackData_InsertCharsV(ImGuiInputTextCallbackData* self,int pos,const char* text) { ImGuiInputTextCallbackData_InsertChars(self,pos,text,0); } +void wrap_ImGuiInputTextCallbackData_InsertCharsV(ImGuiInputTextCallbackData* self,int pos,const char* text,const int text_len) { ImGuiInputTextCallbackData_InsertChars(self,pos,text,(text_len > 0) ? text + text_len*sizeof(char)-1 : 0); } void wrap_ImGuiTextBuffer_Appendf(ImGuiTextBuffer* self,const char* fmt) { ImGuiTextBuffer_appendf(self,fmt); } -bool wrap_ImGuiTextFilter_PassFilterV(ImGuiTextFilter* self,const char* text) { return ImGuiTextFilter_PassFilter(self,text,0); } +bool wrap_ImGuiTextFilter_PassFilterV(ImGuiTextFilter* self,const char* text,const int text_len) { return ImGuiTextFilter_PassFilter(self,text,(text_len > 0) ? text + text_len*sizeof(char)-1 : 0); } void wrap_igBulletText(const char* fmt) { igBulletText(fmt); } -void wrap_igCalcTextSizeV(ImVec2 *pOut,const char* text,bool hide_text_after_double_hash,float wrap_width) { igCalcTextSize(pOut,text,0,hide_text_after_double_hash,wrap_width); } +void wrap_igCalcTextSizeV(ImVec2 *pOut,const char* text,const int text_len,bool hide_text_after_double_hash,float wrap_width) { igCalcTextSize(pOut,text,(text_len > 0) ? text + text_len*sizeof(char)-1 : 0,hide_text_after_double_hash,wrap_width); } void wrap_igDebugLog(const char* fmt) { igDebugLog(fmt); } -const char* wrap_igFindRenderedTextEndV(const char* text) { return igFindRenderedTextEnd(text,0); } +const char* wrap_igFindRenderedTextEndV(const char* text,const int text_len) { return igFindRenderedTextEnd(text,(text_len > 0) ? text + text_len*sizeof(char)-1 : 0); } int wrap_igImFormatString(char* buf,size_t buf_size,const char* fmt) { return igImFormatString(buf,buf_size,fmt); } void wrap_igImFormatStringToTempBuffer(const char** out_buf,const char** out_buf_end,const char* fmt) { igImFormatStringToTempBuffer(out_buf,out_buf_end,fmt); } void wrap_igLabelText(const char* label,const char* fmt) { igLabelText(label,fmt); } -void wrap_igLogRenderedTextV(const ImVec2* ref_pos,const char* text) { igLogRenderedText(ref_pos,text,0); } +void wrap_igLogRenderedTextV(const ImVec2* ref_pos,const char* text,const int text_len) { igLogRenderedText(ref_pos,text,(text_len > 0) ? text + text_len*sizeof(char)-1 : 0); } void wrap_igLogText(const char* fmt) { igLogText(fmt); } -void wrap_igRenderTextV(ImVec2 pos,const char* text,bool hide_text_after_hash) { igRenderText(pos,text,0,hide_text_after_hash); } -void wrap_igRenderTextClippedV(const ImVec2 pos_min,const ImVec2 pos_max,const char* text,const ImVec2* text_size_if_known,const ImVec2 align,const ImRect* clip_rect) { igRenderTextClipped(pos_min,pos_max,text,0,text_size_if_known,align,clip_rect); } -void wrap_igRenderTextClippedExV(ImDrawList* draw_list,const ImVec2 pos_min,const ImVec2 pos_max,const char* text,const ImVec2* text_size_if_known,const ImVec2 align,const ImRect* clip_rect) { igRenderTextClippedEx(draw_list,pos_min,pos_max,text,0,text_size_if_known,align,clip_rect); } -void wrap_igRenderTextEllipsis(ImDrawList* draw_list,const ImVec2 pos_min,const ImVec2 pos_max,float clip_max_x,float ellipsis_max_x,const char* text,const ImVec2* text_size_if_known) { igRenderTextEllipsis(draw_list,pos_min,pos_max,clip_max_x,ellipsis_max_x,text,0,text_size_if_known); } -void wrap_igRenderTextWrapped(ImVec2 pos,const char* text,float wrap_width) { igRenderTextWrapped(pos,text,0,wrap_width); } +void wrap_igRenderTextV(ImVec2 pos,const char* text,const int text_len,bool hide_text_after_hash) { igRenderText(pos,text,(text_len > 0) ? text + text_len*sizeof(char)-1 : 0,hide_text_after_hash); } +void wrap_igRenderTextClippedV(const ImVec2 pos_min,const ImVec2 pos_max,const char* text,const int text_len,const ImVec2* text_size_if_known,const ImVec2 align,const ImRect* clip_rect) { igRenderTextClipped(pos_min,pos_max,text,(text_len > 0) ? text + text_len*sizeof(char)-1 : 0,text_size_if_known,align,clip_rect); } +void wrap_igRenderTextClippedExV(ImDrawList* draw_list,const ImVec2 pos_min,const ImVec2 pos_max,const char* text,const int text_len,const ImVec2* text_size_if_known,const ImVec2 align,const ImRect* clip_rect) { igRenderTextClippedEx(draw_list,pos_min,pos_max,text,(text_len > 0) ? text + text_len*sizeof(char)-1 : 0,text_size_if_known,align,clip_rect); } +void wrap_igRenderTextEllipsis(ImDrawList* draw_list,const ImVec2 pos_min,const ImVec2 pos_max,float clip_max_x,float ellipsis_max_x,const char* text,const int text_len,const ImVec2* text_size_if_known) { igRenderTextEllipsis(draw_list,pos_min,pos_max,clip_max_x,ellipsis_max_x,text,(text_len > 0) ? text + text_len*sizeof(char)-1 : 0,text_size_if_known); } +void wrap_igRenderTextWrapped(ImVec2 pos,const char* text,const int text_len,float wrap_width) { igRenderTextWrapped(pos,text,(text_len > 0) ? text + text_len*sizeof(char)-1 : 0,wrap_width); } void wrap_igSetItemTooltip(const char* fmt) { igSetItemTooltip(fmt); } void wrap_igSetTooltip(const char* fmt) { igSetTooltip(fmt); } void wrap_igText(const char* fmt) { igText(fmt); } void wrap_igTextColored(const ImVec4 col,const char* fmt) { igTextColored(col,fmt); } void wrap_igTextDisabled(const char* fmt) { igTextDisabled(fmt); } -void wrap_igTextExV(const char* text,ImGuiTextFlags flags) { igTextEx(text,0,flags); } -void wrap_igTextUnformattedV(const char* text) { igTextUnformatted(text,0); } +void wrap_igTextExV(const char* text,const int text_len,ImGuiTextFlags flags) { igTextEx(text,(text_len > 0) ? text + text_len*sizeof(char)-1 : 0,flags); } +void wrap_igTextUnformattedV(const char* text,const int text_len) { igTextUnformatted(text,(text_len > 0) ? text + text_len*sizeof(char)-1 : 0); } void wrap_igTextWrapped(const char* fmt) { igTextWrapped(fmt); } bool wrap_igTreeNodeEx_Ptr(const void* ptr_id,ImGuiTreeNodeFlags flags,const char* fmt) { return igTreeNodeEx_Ptr(ptr_id,flags,fmt); } bool wrap_igTreeNodeEx_StrStr(const char* str_id,ImGuiTreeNodeFlags flags,const char* fmt) { return igTreeNodeEx_StrStr(str_id,flags,fmt); } @@ -73,12 +73,12 @@ ImFont* wrap_ImFontAtlas_AddFontFromMemoryCompressedTTF(ImFontAtlas* self,const ImFont* wrap_ImFontAtlas_AddFontFromMemoryTTF(ImFontAtlas* self,void* font_data,int font_data_size,float size_pixels) { return ImFontAtlas_AddFontFromMemoryTTF(self,font_data,font_data_size,size_pixels,NULL,NULL); } void wrap_ImFontAtlas_GetTexDataAsAlpha8(ImFontAtlas* self,unsigned char** out_pixels,int* out_width,int* out_height) { ImFontAtlas_GetTexDataAsAlpha8(self,out_pixels,out_width,out_height,NULL); } void wrap_ImFontAtlas_GetTexDataAsRGBA32(ImFontAtlas* self,unsigned char** out_pixels,int* out_width,int* out_height) { ImFontAtlas_GetTexDataAsRGBA32(self,out_pixels,out_width,out_height,NULL); } -void wrap_ImFontGlyphRangesBuilder_AddText(ImFontGlyphRangesBuilder* self,const char* text) { wrap_ImFontGlyphRangesBuilder_AddTextV(self,text); } +void wrap_ImFontGlyphRangesBuilder_AddText(ImFontGlyphRangesBuilder* self,const char* text,const int text_len) { wrap_ImFontGlyphRangesBuilder_AddTextV(self,text,text_len); } void wrap_ImFont_AddRemapChar(ImFont* self,ImWchar dst,ImWchar src) { ImFont_AddRemapChar(self,dst,src,true); } void wrap_ImFont_CalcTextSizeA(ImVec2* pOut,ImFont* self,float size,float max_width,float wrap_width,const char* text_begin) { wrap_ImFont_CalcTextSizeAV(pOut,self,size,max_width,wrap_width,text_begin,NULL); } void wrap_ImFont_RenderText(ImFont* self,ImDrawList* draw_list,float size,const ImVec2 pos,ImU32 col,const ImVec4 clip_rect,const char* text_begin) { wrap_ImFont_RenderTextV(self,draw_list,size,pos,col,clip_rect,text_begin,0.0f,false); } void wrap_ImGuiIO_SetKeyEventNativeData(ImGuiIO* self,ImGuiKey key,int native_keycode,int native_scancode) { ImGuiIO_SetKeyEventNativeData(self,key,native_keycode,native_scancode,-1); } -void wrap_ImGuiInputTextCallbackData_InsertChars(ImGuiInputTextCallbackData* self,int pos,const char* text) { wrap_ImGuiInputTextCallbackData_InsertCharsV(self,pos,text); } +void wrap_ImGuiInputTextCallbackData_InsertChars(ImGuiInputTextCallbackData* self,int pos,const char* text,const int text_len) { wrap_ImGuiInputTextCallbackData_InsertCharsV(self,pos,text,text_len); } void wrap_ImGuiListClipper_Begin(ImGuiListClipper* self,int items_count) { ImGuiListClipper_Begin(self,items_count,-1.0f); } bool wrap_ImGuiStorage_GetBool(ImGuiStorage* self,ImGuiID key) { return ImGuiStorage_GetBool(self,key,false); } bool* wrap_ImGuiStorage_GetBoolRef(ImGuiStorage* self,ImGuiID key) { return ImGuiStorage_GetBoolRef(self,key,false); } @@ -89,7 +89,7 @@ int* wrap_ImGuiStorage_GetIntRef(ImGuiStorage* self,ImGuiID key) { return ImGuiS void** wrap_ImGuiStorage_GetVoidPtrRef(ImGuiStorage* self,ImGuiID key) { return ImGuiStorage_GetVoidPtrRef(self,key,NULL); } void wrap_ImGuiTextBuffer_Append(ImGuiTextBuffer* self,const char* str) { ImGuiTextBuffer_append(self,str,NULL); } bool wrap_ImGuiTextFilter_Draw(ImGuiTextFilter* self) { return ImGuiTextFilter_Draw(self,"Filter(inc,-exc)",0.0f); } -bool wrap_ImGuiTextFilter_PassFilter(ImGuiTextFilter* self,const char* text) { return wrap_ImGuiTextFilter_PassFilterV(self,text); } +bool wrap_ImGuiTextFilter_PassFilter(ImGuiTextFilter* self,const char* text,const int text_len) { return wrap_ImGuiTextFilter_PassFilterV(self,text,text_len); } ImGuiID wrap_ImGuiWindow_GetID_Str(ImGuiWindow* self,const char* str) { return ImGuiWindow_GetID_Str(self,str,NULL); } const ImGuiPayload* wrap_igAcceptDragDropPayload(const char* type) { return igAcceptDragDropPayload(type,0); } bool wrap_igArrowButtonEx(const char* str_id,ImGuiDir dir,ImVec2 size_arg) { return igArrowButtonEx(str_id,dir,size_arg,0); } @@ -116,7 +116,7 @@ bool wrap_igBeginTableEx(const char* name,ImGuiID id,int columns_count) { return bool wrap_igButton(const char* label) { return igButton(label,(ImVec2){.x=0, .y=0}); } bool wrap_igButtonBehavior(const ImRect bb,ImGuiID id,bool* out_hovered,bool* out_held) { return igButtonBehavior(bb,id,out_hovered,out_held,0); } bool wrap_igButtonEx(const char* label) { return igButtonEx(label,(ImVec2){.x=0, .y=0},0); } -void wrap_igCalcTextSize(ImVec2* pOut,const char* text) { wrap_igCalcTextSizeV(pOut,text,false,-1.0f); } +void wrap_igCalcTextSize(ImVec2* pOut,const char* text,const int text_len) { wrap_igCalcTextSizeV(pOut,text,text_len,false,-1.0f); } bool wrap_igCollapsingHeader_BoolPtr(const char* label,bool* p_visible) { return igCollapsingHeader_BoolPtr(label,p_visible,0); } bool wrap_igCollapsingHeader_TreeNodeFlags(const char* label) { return igCollapsingHeader_TreeNodeFlags(label,0); } bool wrap_igColorButton(const char* desc_id,const ImVec4 col) { return igColorButton(desc_id,col,0,(ImVec2){.x=0, .y=0}); } @@ -151,7 +151,7 @@ bool wrap_igDragScalar(const char* label,ImGuiDataType data_type,void* p_data) { bool wrap_igDragScalarN(const char* label,ImGuiDataType data_type,void* p_data,int components) { return igDragScalarN(label,data_type,p_data,components,1.0f,NULL,NULL,NULL,0); } void wrap_igErrorCheckEndFrameRecover(ImGuiErrorLogCallback log_callback) { igErrorCheckEndFrameRecover(log_callback,NULL); } void wrap_igErrorCheckEndWindowRecover(ImGuiErrorLogCallback log_callback) { igErrorCheckEndWindowRecover(log_callback,NULL); } -const char* wrap_igFindRenderedTextEnd(const char* text) { return wrap_igFindRenderedTextEndV(text); } +const char* wrap_igFindRenderedTextEnd(const char* text,const int text_len) { return wrap_igFindRenderedTextEndV(text,text_len); } void wrap_igFocusWindow(ImGuiWindow* window) { igFocusWindow(window,0); } ImU32 wrap_igGetColorU32_Col(ImGuiCol idx) { return igGetColorU32_Col(idx,1.0f); } float wrap_igGetColumnOffset() { return igGetColumnOffset(-1); } @@ -202,7 +202,7 @@ void wrap_igItemSize_Rect(const ImRect bb) { igItemSize_Rect(bb,-1.0f); } void wrap_igItemSize_Vec2(const ImVec2 size) { igItemSize_Vec2(size,-1.0f); } bool wrap_igListBox_Str_arr(const char* label,int* current_item,const char* const items[],int items_count) { return igListBox_Str_arr(label,current_item,items,items_count,-1); } void wrap_igLoadIniSettingsFromMemory(const char* ini_data) { igLoadIniSettingsFromMemory(ini_data,0); } -void wrap_igLogRenderedText(const ImVec2* ref_pos,const char* text) { wrap_igLogRenderedTextV(ref_pos,text); } +void wrap_igLogRenderedText(const ImVec2* ref_pos,const char* text,const int text_len) { wrap_igLogRenderedTextV(ref_pos,text,text_len); } void wrap_igLogToBuffer() { igLogToBuffer(-1); } void wrap_igLogToClipboard() { igLogToClipboard(-1); } void wrap_igLogToFile() { igLogToFile(-1,NULL); } @@ -226,9 +226,9 @@ void wrap_igRenderFrame(ImVec2 p_min,ImVec2 p_max,ImU32 fill_col) { igRenderFram void wrap_igRenderFrameBorder(ImVec2 p_min,ImVec2 p_max) { igRenderFrameBorder(p_min,p_max,0.0f); } void wrap_igRenderNavHighlight(const ImRect bb,ImGuiID id) { igRenderNavHighlight(bb,id,ImGuiNavHighlightFlags_TypeDefault); } void wrap_igRenderPlatformWindowsDefault() { igRenderPlatformWindowsDefault(NULL,NULL); } -void wrap_igRenderText(ImVec2 pos,const char* text) { wrap_igRenderTextV(pos,text,true); } -void wrap_igRenderTextClipped(const ImVec2 pos_min,const ImVec2 pos_max,const char* text,const ImVec2* text_size_if_known) { wrap_igRenderTextClippedV(pos_min,pos_max,text,text_size_if_known,(ImVec2){.x=0, .y=0},NULL); } -void wrap_igRenderTextClippedEx(ImDrawList* draw_list,const ImVec2 pos_min,const ImVec2 pos_max,const char* text,const ImVec2* text_size_if_known) { wrap_igRenderTextClippedExV(draw_list,pos_min,pos_max,text,text_size_if_known,(ImVec2){.x=0, .y=0},NULL); } +void wrap_igRenderText(ImVec2 pos,const char* text,const int text_len) { wrap_igRenderTextV(pos,text,text_len,true); } +void wrap_igRenderTextClipped(const ImVec2 pos_min,const ImVec2 pos_max,const char* text,const int text_len,const ImVec2* text_size_if_known) { wrap_igRenderTextClippedV(pos_min,pos_max,text,text_len,text_size_if_known,(ImVec2){.x=0, .y=0},NULL); } +void wrap_igRenderTextClippedEx(ImDrawList* draw_list,const ImVec2 pos_min,const ImVec2 pos_max,const char* text,const int text_len,const ImVec2* text_size_if_known) { wrap_igRenderTextClippedExV(draw_list,pos_min,pos_max,text,text_len,text_size_if_known,(ImVec2){.x=0, .y=0},NULL); } void wrap_igResetMouseDragDelta() { igResetMouseDragDelta(0); } void wrap_igSameLine() { igSameLine(0.0f,-1.0f); } const char* wrap_igSaveIniSettingsToMemory() { return igSaveIniSettingsToMemory(NULL); } @@ -295,8 +295,8 @@ void wrap_igTableOpenContextMenu() { igTableOpenContextMenu(-1); } void wrap_igTableSetBgColor(ImGuiTableBgTarget target,ImU32 color) { igTableSetBgColor(target,color,-1); } void wrap_igTableSetupColumn(const char* label) { igTableSetupColumn(label,0,0.0f,0); } bool wrap_igTempInputScalar(const ImRect bb,ImGuiID id,const char* label,ImGuiDataType data_type,void* p_data,const char* format) { return igTempInputScalar(bb,id,label,data_type,p_data,format,NULL,NULL); } -void wrap_igTextEx(const char* text) { wrap_igTextExV(text,0); } -void wrap_igTextUnformatted(const char* text) { wrap_igTextUnformattedV(text); } +void wrap_igTextEx(const char* text,const int text_len) { wrap_igTextExV(text,text_len,0); } +void wrap_igTextUnformatted(const char* text,const int text_len) { wrap_igTextUnformattedV(text,text_len); } bool wrap_igTreeNodeBehavior(ImGuiID id,ImGuiTreeNodeFlags flags,const char* label) { return igTreeNodeBehavior(id,flags,label,NULL); } bool wrap_igTreeNodeEx_Str(const char* label) { return igTreeNodeEx_Str(label,0); } void wrap_igUnindent() { igUnindent(0.0f); } diff --git a/cimgui_wrapper.h b/cimgui_wrapper.h index 2897e4f14..9319d9222 100644 --- a/cimgui_wrapper.h +++ b/cimgui_wrapper.h @@ -11,34 +11,34 @@ extern "C" { extern void wrap_ImDrawList_AddText_FontPtrV(ImDrawList* self,const ImFont* font,float font_size,const ImVec2 pos,ImU32 col,const char* text_begin,float wrap_width,const ImVec4* cpu_fine_clip_rect); extern void wrap_ImDrawList_AddText_Vec2V(ImDrawList* self,const ImVec2 pos,ImU32 col,const char* text_begin); -extern void wrap_ImFontGlyphRangesBuilder_AddTextV(ImFontGlyphRangesBuilder* self,const char* text); +extern void wrap_ImFontGlyphRangesBuilder_AddTextV(ImFontGlyphRangesBuilder* self,const char* text,const int text_len); extern void wrap_ImFont_CalcTextSizeAV(ImVec2 *pOut,ImFont* self,float size,float max_width,float wrap_width,const char* text_begin,const char** remaining); -extern const char* wrap_ImFont_CalcWordWrapPositionA(ImFont* self,float scale,const char* text,float wrap_width); +extern const char* wrap_ImFont_CalcWordWrapPositionA(ImFont* self,float scale,const char* text,const int text_len,float wrap_width); extern void wrap_ImFont_RenderTextV(ImFont* self,ImDrawList* draw_list,float size,const ImVec2 pos,ImU32 col,const ImVec4 clip_rect,const char* text_begin,float wrap_width,bool cpu_fine_clip); -extern void wrap_ImGuiInputTextCallbackData_InsertCharsV(ImGuiInputTextCallbackData* self,int pos,const char* text); +extern void wrap_ImGuiInputTextCallbackData_InsertCharsV(ImGuiInputTextCallbackData* self,int pos,const char* text,const int text_len); extern void wrap_ImGuiTextBuffer_Appendf(ImGuiTextBuffer* self,const char* fmt); -extern bool wrap_ImGuiTextFilter_PassFilterV(ImGuiTextFilter* self,const char* text); +extern bool wrap_ImGuiTextFilter_PassFilterV(ImGuiTextFilter* self,const char* text,const int text_len); extern void wrap_igBulletText(const char* fmt); -extern void wrap_igCalcTextSizeV(ImVec2 *pOut,const char* text,bool hide_text_after_double_hash,float wrap_width); +extern void wrap_igCalcTextSizeV(ImVec2 *pOut,const char* text,const int text_len,bool hide_text_after_double_hash,float wrap_width); extern void wrap_igDebugLog(const char* fmt); -extern const char* wrap_igFindRenderedTextEndV(const char* text); +extern const char* wrap_igFindRenderedTextEndV(const char* text,const int text_len); extern int wrap_igImFormatString(char* buf,size_t buf_size,const char* fmt); extern void wrap_igImFormatStringToTempBuffer(const char** out_buf,const char** out_buf_end,const char* fmt); extern void wrap_igLabelText(const char* label,const char* fmt); -extern void wrap_igLogRenderedTextV(const ImVec2* ref_pos,const char* text); +extern void wrap_igLogRenderedTextV(const ImVec2* ref_pos,const char* text,const int text_len); extern void wrap_igLogText(const char* fmt); -extern void wrap_igRenderTextV(ImVec2 pos,const char* text,bool hide_text_after_hash); -extern void wrap_igRenderTextClippedV(const ImVec2 pos_min,const ImVec2 pos_max,const char* text,const ImVec2* text_size_if_known,const ImVec2 align,const ImRect* clip_rect); -extern void wrap_igRenderTextClippedExV(ImDrawList* draw_list,const ImVec2 pos_min,const ImVec2 pos_max,const char* text,const ImVec2* text_size_if_known,const ImVec2 align,const ImRect* clip_rect); -extern void wrap_igRenderTextEllipsis(ImDrawList* draw_list,const ImVec2 pos_min,const ImVec2 pos_max,float clip_max_x,float ellipsis_max_x,const char* text,const ImVec2* text_size_if_known); -extern void wrap_igRenderTextWrapped(ImVec2 pos,const char* text,float wrap_width); +extern void wrap_igRenderTextV(ImVec2 pos,const char* text,const int text_len,bool hide_text_after_hash); +extern void wrap_igRenderTextClippedV(const ImVec2 pos_min,const ImVec2 pos_max,const char* text,const int text_len,const ImVec2* text_size_if_known,const ImVec2 align,const ImRect* clip_rect); +extern void wrap_igRenderTextClippedExV(ImDrawList* draw_list,const ImVec2 pos_min,const ImVec2 pos_max,const char* text,const int text_len,const ImVec2* text_size_if_known,const ImVec2 align,const ImRect* clip_rect); +extern void wrap_igRenderTextEllipsis(ImDrawList* draw_list,const ImVec2 pos_min,const ImVec2 pos_max,float clip_max_x,float ellipsis_max_x,const char* text,const int text_len,const ImVec2* text_size_if_known); +extern void wrap_igRenderTextWrapped(ImVec2 pos,const char* text,const int text_len,float wrap_width); extern void wrap_igSetItemTooltip(const char* fmt); extern void wrap_igSetTooltip(const char* fmt); extern void wrap_igText(const char* fmt); extern void wrap_igTextColored(const ImVec4 col,const char* fmt); extern void wrap_igTextDisabled(const char* fmt); -extern void wrap_igTextExV(const char* text,ImGuiTextFlags flags); -extern void wrap_igTextUnformattedV(const char* text); +extern void wrap_igTextExV(const char* text,const int text_len,ImGuiTextFlags flags); +extern void wrap_igTextUnformattedV(const char* text,const int text_len); extern void wrap_igTextWrapped(const char* fmt); extern bool wrap_igTreeNodeEx_Ptr(const void* ptr_id,ImGuiTreeNodeFlags flags,const char* fmt); extern bool wrap_igTreeNodeEx_StrStr(const char* str_id,ImGuiTreeNodeFlags flags,const char* fmt); @@ -78,12 +78,12 @@ extern ImFont* wrap_ImFontAtlas_AddFontFromMemoryCompressedTTF(ImFontAtlas* self extern ImFont* wrap_ImFontAtlas_AddFontFromMemoryTTF(ImFontAtlas* self,void* font_data,int font_data_size,float size_pixels); extern void wrap_ImFontAtlas_GetTexDataAsAlpha8(ImFontAtlas* self,unsigned char** out_pixels,int* out_width,int* out_height); extern void wrap_ImFontAtlas_GetTexDataAsRGBA32(ImFontAtlas* self,unsigned char** out_pixels,int* out_width,int* out_height); -extern void wrap_ImFontGlyphRangesBuilder_AddText(ImFontGlyphRangesBuilder* self,const char* text); +extern void wrap_ImFontGlyphRangesBuilder_AddText(ImFontGlyphRangesBuilder* self,const char* text,const int text_len); extern void wrap_ImFont_AddRemapChar(ImFont* self,ImWchar dst,ImWchar src); extern void wrap_ImFont_CalcTextSizeA(ImVec2* pOut,ImFont* self,float size,float max_width,float wrap_width,const char* text_begin); extern void wrap_ImFont_RenderText(ImFont* self,ImDrawList* draw_list,float size,const ImVec2 pos,ImU32 col,const ImVec4 clip_rect,const char* text_begin); extern void wrap_ImGuiIO_SetKeyEventNativeData(ImGuiIO* self,ImGuiKey key,int native_keycode,int native_scancode); -extern void wrap_ImGuiInputTextCallbackData_InsertChars(ImGuiInputTextCallbackData* self,int pos,const char* text); +extern void wrap_ImGuiInputTextCallbackData_InsertChars(ImGuiInputTextCallbackData* self,int pos,const char* text,const int text_len); extern void wrap_ImGuiListClipper_Begin(ImGuiListClipper* self,int items_count); extern bool wrap_ImGuiStorage_GetBool(ImGuiStorage* self,ImGuiID key); extern bool* wrap_ImGuiStorage_GetBoolRef(ImGuiStorage* self,ImGuiID key); @@ -94,7 +94,7 @@ extern int* wrap_ImGuiStorage_GetIntRef(ImGuiStorage* self,ImGuiID key); extern void** wrap_ImGuiStorage_GetVoidPtrRef(ImGuiStorage* self,ImGuiID key); extern void wrap_ImGuiTextBuffer_Append(ImGuiTextBuffer* self,const char* str); extern bool wrap_ImGuiTextFilter_Draw(ImGuiTextFilter* self); -extern bool wrap_ImGuiTextFilter_PassFilter(ImGuiTextFilter* self,const char* text); +extern bool wrap_ImGuiTextFilter_PassFilter(ImGuiTextFilter* self,const char* text,const int text_len); extern ImGuiID wrap_ImGuiWindow_GetID_Str(ImGuiWindow* self,const char* str); extern const ImGuiPayload* wrap_igAcceptDragDropPayload(const char* type); extern bool wrap_igArrowButtonEx(const char* str_id,ImGuiDir dir,ImVec2 size_arg); @@ -121,7 +121,7 @@ extern bool wrap_igBeginTableEx(const char* name,ImGuiID id,int columns_count); extern bool wrap_igButton(const char* label); extern bool wrap_igButtonBehavior(const ImRect bb,ImGuiID id,bool* out_hovered,bool* out_held); extern bool wrap_igButtonEx(const char* label); -extern void wrap_igCalcTextSize(ImVec2* pOut,const char* text); +extern void wrap_igCalcTextSize(ImVec2* pOut,const char* text,const int text_len); extern bool wrap_igCollapsingHeader_BoolPtr(const char* label,bool* p_visible); extern bool wrap_igCollapsingHeader_TreeNodeFlags(const char* label); extern bool wrap_igColorButton(const char* desc_id,const ImVec4 col); @@ -156,7 +156,7 @@ extern bool wrap_igDragScalar(const char* label,ImGuiDataType data_type,void* p_ extern bool wrap_igDragScalarN(const char* label,ImGuiDataType data_type,void* p_data,int components); extern void wrap_igErrorCheckEndFrameRecover(ImGuiErrorLogCallback log_callback); extern void wrap_igErrorCheckEndWindowRecover(ImGuiErrorLogCallback log_callback); -extern const char* wrap_igFindRenderedTextEnd(const char* text); +extern const char* wrap_igFindRenderedTextEnd(const char* text,const int text_len); extern void wrap_igFocusWindow(ImGuiWindow* window); extern ImU32 wrap_igGetColorU32_Col(ImGuiCol idx); extern float wrap_igGetColumnOffset(); @@ -207,7 +207,7 @@ extern void wrap_igItemSize_Rect(const ImRect bb); extern void wrap_igItemSize_Vec2(const ImVec2 size); extern bool wrap_igListBox_Str_arr(const char* label,int* current_item,const char* const items[],int items_count); extern void wrap_igLoadIniSettingsFromMemory(const char* ini_data); -extern void wrap_igLogRenderedText(const ImVec2* ref_pos,const char* text); +extern void wrap_igLogRenderedText(const ImVec2* ref_pos,const char* text,const int text_len); extern void wrap_igLogToBuffer(); extern void wrap_igLogToClipboard(); extern void wrap_igLogToFile(); @@ -231,9 +231,9 @@ extern void wrap_igRenderFrame(ImVec2 p_min,ImVec2 p_max,ImU32 fill_col); extern void wrap_igRenderFrameBorder(ImVec2 p_min,ImVec2 p_max); extern void wrap_igRenderNavHighlight(const ImRect bb,ImGuiID id); extern void wrap_igRenderPlatformWindowsDefault(); -extern void wrap_igRenderText(ImVec2 pos,const char* text); -extern void wrap_igRenderTextClipped(const ImVec2 pos_min,const ImVec2 pos_max,const char* text,const ImVec2* text_size_if_known); -extern void wrap_igRenderTextClippedEx(ImDrawList* draw_list,const ImVec2 pos_min,const ImVec2 pos_max,const char* text,const ImVec2* text_size_if_known); +extern void wrap_igRenderText(ImVec2 pos,const char* text,const int text_len); +extern void wrap_igRenderTextClipped(const ImVec2 pos_min,const ImVec2 pos_max,const char* text,const int text_len,const ImVec2* text_size_if_known); +extern void wrap_igRenderTextClippedEx(ImDrawList* draw_list,const ImVec2 pos_min,const ImVec2 pos_max,const char* text,const int text_len,const ImVec2* text_size_if_known); extern void wrap_igResetMouseDragDelta(); extern void wrap_igSameLine(); extern const char* wrap_igSaveIniSettingsToMemory(); @@ -300,8 +300,8 @@ extern void wrap_igTableOpenContextMenu(); extern void wrap_igTableSetBgColor(ImGuiTableBgTarget target,ImU32 color); extern void wrap_igTableSetupColumn(const char* label); extern bool wrap_igTempInputScalar(const ImRect bb,ImGuiID id,const char* label,ImGuiDataType data_type,void* p_data,const char* format); -extern void wrap_igTextEx(const char* text); -extern void wrap_igTextUnformatted(const char* text); +extern void wrap_igTextEx(const char* text,const int text_len); +extern void wrap_igTextUnformatted(const char* text,const int text_len); extern bool wrap_igTreeNodeBehavior(ImGuiID id,ImGuiTreeNodeFlags flags,const char* label); extern bool wrap_igTreeNodeEx_Str(const char* label); extern void wrap_igUnindent(); diff --git a/cmd/codegen/gencpp.go b/cmd/codegen/gencpp.go index ba262318d..a79e82b5b 100644 --- a/cmd/codegen/gencpp.go +++ b/cmd/codegen/gencpp.go @@ -7,6 +7,11 @@ import ( "unicode" ) +// Name of argument in cpp/go files. +// It is used by functions that has text and text_end arguments. +// In this case text_end is replaced by this argument (of type int) +const textLenRegisteredName = "text_len" + // Returns if should export func func shouldExportFunc(funcName CIdentifier) bool { switch { @@ -107,8 +112,8 @@ extern "C" { // Remove all ... arg f.Args = strings.Replace(f.Args, ",...", "", 1) // Remove text_end arg - f.Args = strings.Replace(f.Args, ",const char* text_end_", "", 1) // sometimes happens in cimmarkdown - f.Args = strings.Replace(f.Args, ",const char* text_end", "", 1) + f.Args = strings.Replace(f.Args, ",const char* text_end_", fmt.Sprintf(",const int %s", textLenRegisteredName), 1) // sometimes happens in cimmarkdown + f.Args = strings.Replace(f.Args, ",const char* text_end", fmt.Sprintf(",const int %s", textLenRegisteredName), 1) var argsT []ArgDef var actualCallArgs []CIdentifier @@ -119,8 +124,25 @@ extern "C" { case a.Name == "...": continue case a.Name == "text_end", a.Name == "text_end_": - actualCallArgs = append(actualCallArgs, "0") - continue + //chck if there is `text` argument + var found bool + for _, aa := range f.ArgsT { + if aa.Name == "text" { + found = true + break + } + } + if found { + argsT = append(argsT, ArgDef{ + Name: "text_len", + Type: "const int", + }) + actualCallArgs = append(actualCallArgs, "(text_len > 0) ? text + text_len*sizeof(char)-1 : 0") + } else { + f.Args = strings.Replace(f.Args, ",const int text_len", "", 1) + actualCallArgs = append(actualCallArgs, "0") + continue + } default: argsT = append(argsT, a) actualCallArgs = append(actualCallArgs, a.Name) @@ -230,6 +252,10 @@ extern "C" { v = "NULL" } + if k == "text_end" || k == "text_end_" { + v = "0" + } + if strings.Contains(invocationStmt, ","+k) { invocationStmt = strings.Replace(invocationStmt, ","+k, ","+v, 1) } else { diff --git a/cmd/codegen/gengo_funcs.go b/cmd/codegen/gengo_funcs.go index 14e3a33b0..8de82964d 100644 --- a/cmd/codegen/gengo_funcs.go +++ b/cmd/codegen/gengo_funcs.go @@ -351,6 +351,15 @@ func (g *goFuncsGenerator) generateFuncArgs(f FuncDef) (args []GoIdentifier, arg for i, a := range f.ArgsT { g.shouldGenerate = false + if a.Name == textLenRegisteredName { + g.shouldGenerate = true + argWrappers = append(argWrappers, ArgumentWrapperData{ + VarName: "C.int(len(text))", + }) + + continue + } + decl, wrapper, err := getArgWrapper( &a, i == 0 && f.StructSetter, diff --git a/go.mod b/go.mod index 848ceec04..0ac060ce2 100644 --- a/go.mod +++ b/go.mod @@ -3,9 +3,9 @@ module github.com/AllenDang/cimgui-go go 1.21 require ( - github.com/google/go-cmp v0.5.9 // indirect - golang.org/x/mod v0.10.0 // indirect - golang.org/x/sync v0.1.0 // indirect - golang.org/x/tools v0.8.0 // indirect - mvdan.cc/gofumpt v0.5.0 // indirect + github.com/google/go-cmp v0.6.0 // indirect + golang.org/x/mod v0.14.0 // indirect + golang.org/x/sync v0.6.0 // indirect + golang.org/x/tools v0.17.0 // indirect + mvdan.cc/gofumpt v0.6.0 // indirect ) diff --git a/go.sum b/go.sum index 787f70293..a89ad3c5d 100644 --- a/go.sum +++ b/go.sum @@ -1,10 +1,10 @@ -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= -golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= -golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/tools v0.8.0 h1:vSDcovVPld282ceKgDimkRSC8kpaH1dgyc9UMzlt84Y= -golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= -mvdan.cc/gofumpt v0.5.0 h1:0EQ+Z56k8tXjj/6TQD25BFNKQXpCvT0rnansIc7Ug5E= -mvdan.cc/gofumpt v0.5.0/go.mod h1:HBeVDtMKRZpXyxFciAirzdKklDlGu8aAy1wEbH5Y9js= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= +golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/tools v0.17.0 h1:FvmRgNOcs3kOa+T20R1uhfP9F6HgG2mfxDv1vrx1Htc= +golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps= +mvdan.cc/gofumpt v0.6.0 h1:G3QvahNDmpD+Aek/bNOLrFR2XC6ZAdo62dZu65gmwGo= +mvdan.cc/gofumpt v0.6.0/go.mod h1:4L0wf+kgIPZtcCWXynNS2e6bhmj73umwnuXSZarixzA=