From 11cd0fde42bc0c774ded10f888869d65be3171d0 Mon Sep 17 00:00:00 2001 From: Zahary Karadjov Date: Thu, 11 Oct 2012 13:22:18 +0300 Subject: [PATCH 1/2] add static assertions in the generated code about platform-related assumptions --- compiler/cgen.nim | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/compiler/cgen.nim b/compiler/cgen.nim index 57dd85d9ce..ffd9babde0 100755 --- a/compiler/cgen.nim +++ b/compiler/cgen.nim @@ -40,15 +40,7 @@ proc addForwardedProc(m: BModule, prc: PSym) = proc findPendingModule(m: BModule, s: PSym): BModule = var ms = getModule(s) - if ms.id == m.module.id: return m - for i in countup(0, high(gModules)): - result = gModules[i] - if result.module.id == ms.id: return - # else we found no pending module: This can happen for procs that are in - # a module that is already closed. This is fine, don't generate code for - # it then: - result = nil - #InternalError(s.info, "no pending module found for: " & s.name.s) + result = gModules[ms.position] proc emitLazily(s: PSym): bool {.inline.} = result = optDeadCodeElim in gGlobalOptions or @@ -1139,6 +1131,11 @@ proc writeModule(m: BModule, pending: bool) = addFileToCompile(cfilenoext) addFileToLink(cfilenoext) +proc genPlatformAsserts(m: BModule) = + appf(m.s[cfsForwardTypes], + "typedef assert_numbits[sizeof(NI) == sizeof(void*) &&" & + "NIM_INTBITS == sizeof(NI)*8 ? 1 : -1];$N") + proc myClose(b: PPassContext, n: PNode): PNode = result = n if b == nil or passes.skipCodegen(n): return @@ -1152,6 +1149,7 @@ proc myClose(b: PPassContext, n: PNode): PNode = if sfMainModule in m.module.flags: var disp = generateMethodDispatchers() for i in 0..sonsLen(disp)-1: genProcAux(m, disp.sons[i].sym) + genPlatformAsserts(m) genMainProc(m) # we need to process the transitive closure because recursive module # deps are allowed (and the system module is processed in the wrong From b3913a28c9a88fbec6063ad96f929557be14b794 Mon Sep 17 00:00:00 2001 From: Dominik Picheta Date: Thu, 11 Oct 2012 22:14:59 +0100 Subject: [PATCH 2/2] Wrapped GtkInfoBar, GtkComboBox and GtkComboBoxText --- lib/wrappers/gtk/gtk2.nim | 122 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) diff --git a/lib/wrappers/gtk/gtk2.nim b/lib/wrappers/gtk/gtk2.nim index ed56321400..a1bfa7fe1f 100755 --- a/lib/wrappers/gtk/gtk2.nim +++ b/lib/wrappers/gtk/gtk2.nim @@ -16914,6 +16914,128 @@ proc set_visible_window*(evBox: PEventBox, v: gboolean){.cdecl, dynlib: lib, proc get_vadjustment*(scrolled_window: PTextView): PAdjustment{. cdecl, dynlib: lib, importc: "gtk_text_view_get_vadjustment".} +type + TInfoBar* = object of THBox + PInfoBar* = ptr TInfoBar + +proc info_bar_new*(): PInfoBar{.cdecl, dynlib: lib, importc: "gtk_info_bar_new".} +proc info_bar_new_with_buttons*(first_button_text: cstring): PInfoBar {.cdecl, dynlib:lib, + varargs, importc: "gtk_info_bar_new_with_buttons".} +proc add_action_widget*(infobar: PInfoBar, child: PWidget, respID: gint) {. + cdecl, dynlib: lib, importc: "gtk_info_bar_add_action_widget".} +proc add_button*(infobar: PInfoBar, btnText: cstring, respID: gint): PWidget{. + cdecl, dynlib: lib, importc: "gtk_info_bar_add_button".} +proc set_response_sensitive*(infobar: PInfoBar, respID: gint, setting: gboolean){. + cdecl, dynlib: lib, importc: "gtk_info_bar_set_response_sensitive".} +proc set_default_response*(infobar: PInfoBar, respID: gint){.cdecl, + dynlib: lib, importc: "gtk_info_bar_set_default_response".} +proc response*(infobar: PInfoBar, respID: gint){.cdecl, dynlib: lib, + importc: "gtk_info_bar_response".} +proc set_message_type*(infobar: PInfoBar, messageType: TMessageType){.cdecl, + dynlib: lib, importc: "gtk_info_bar_set_message_type".} +proc get_message_type*(infobar: PInfoBar): TMessageType{.cdecl, dynlib: lib, + importc: "gtk_info_bar_get_message_type".} +proc get_action_area*(infobar: PInfoBar): PWidget{.cdecl, dynlib: lib, + importc: "gtk_info_bar_get_action_area".} +proc get_content_area*(infobar: PInfoBar): PContainer{.cdecl, dynlib: lib, + importc: "gtk_info_bar_get_content_area".} + +type + TComboBox* = object of TWidget + PComboBox* = ptr TComboBox + +proc comboBoxNew*(): PComboBox{.cdecl, importc: "gtk_combo_box_new", dynlib: lib.} +proc comboBox_new_with_entry*(): PComboBox{.cdecl, + importc: "gtk_combo_box_new_with_entry", + dynlib: lib.} +proc comboBox_new_with_model*(model: PTreeModel): PComboBox{.cdecl, + importc: "gtk_combo_box_new_with_model", dynlib: lib.} +proc comboBox_new_with_model_and_entry*(model: PTreeModel): PComboBox{.cdecl, + importc: "gtk_combo_box_new_with_model_and_entry", dynlib: lib.} + +proc get_wrap_width*(combo_box: PComboBox): gint{.cdecl, + importc: "gtk_combo_box_get_wrap_width", dynlib: lib.} +proc set_wrap_width*(combo_box: PComboBox; width: gint){.cdecl, + importc: "gtk_combo_box_set_wrap_width", dynlib: lib.} +proc get_row_span_column*(combo_box: PComboBox): gint{.cdecl, + importc: "gtk_combo_box_get_row_span_column", dynlib: lib.} +proc set_row_span_column*(combo_box: PComboBox; row_span: gint){.cdecl, + importc: "gtk_combo_box_set_row_span_column", dynlib: lib.} +proc get_column_span_column*(combo_box: PComboBox): gint{.cdecl, + importc: "gtk_combo_box_get_column_span_column", dynlib: lib.} +proc set_column_span_column*(combo_box: PComboBox; column_span: gint){. + cdecl, importc: "gtk_combo_box_set_column_span_column", dynlib: lib.} +proc get_add_tearoffs*(combo_box: PComboBox): gboolean{.cdecl, + importc: "gtk_combo_box_get_add_tearoffs", dynlib: lib.} +proc set_add_tearoffs*(combo_box: PComboBox; add_tearoffs: gboolean){. + cdecl, importc: "gtk_combo_box_set_add_tearoffs", dynlib: lib.} +proc get_title*(combo_box: PComboBox): ptr gchar{.cdecl, + importc: "gtk_combo_box_get_title", dynlib: lib.} +proc set_title*(combo_box: PComboBox; title: ptr gchar){.cdecl, + importc: "gtk_combo_box_set_title", dynlib: lib.} +proc get_focus_on_click*(combo: PComboBox): gboolean{.cdecl, + importc: "gtk_combo_box_get_focus_on_click", dynlib: lib.} +proc set_focus_on_click*(combo: PComboBox; focus_on_click: gboolean){. + cdecl, importc: "gtk_combo_box_set_focus_on_click", dynlib: lib.} + +proc get_active*(combo_box: PComboBox): gint{.cdecl, + importc: "gtk_combo_box_get_active", dynlib: lib.} +proc set_active*(combo_box: PComboBox; index: gint){.cdecl, + importc: "gtk_combo_box_set_active", dynlib: lib.} +proc get_active_iter*(combo_box: PComboBox; iter: PTreeIter): gboolean{. + cdecl, importc: "gtk_combo_box_get_active_iter", dynlib: lib.} +proc set_active_iter*(combo_box: PComboBox; iter: PTreeIter){.cdecl, + importc: "gtk_combo_box_set_active_iter", dynlib: lib.} + +proc set_model*(combo_box: PComboBox; model: PTreeModel){.cdecl, + importc: "gtk_combo_box_set_model", dynlib: lib.} +proc get_model*(combo_box: PComboBox): PTreeModel{.cdecl, + importc: "gtk_combo_box_get_model", dynlib: lib.} +discard """proc get_row_separator_func*(combo_box: PComboBox): GtkTreeViewRowSeparatorFunc{. + cdecl, importc: "gtk_combo_box_get_row_separator_func", dynlib: lib.} +proc set_row_separator_func*(combo_box: PComboBox; + func: GtkTreeViewRowSeparatorFunc; data: gpointer; + destroy: GDestroyNotify){.cdecl, + importc: "gtk_combo_box_set_row_separator_func", dynlib: lib.}""" +discard """proc set_button_sensitivity*(combo_box: PComboBox; + sensitivity: GtkSensitivityType){.cdecl, + importc: "gtk_combo_box_set_button_sensitivity", dynlib: lib.} +proc get_button_sensitivity*(combo_box: PComboBox): GtkSensitivityType{. + cdecl, importc: "gtk_combo_box_get_button_sensitivity", dynlib: lib.}""" +proc get_has_entry*(combo_box: PComboBox): gboolean{.cdecl, + importc: "gtk_combo_box_get_has_entry", dynlib: lib.} +proc set_entry_text_column*(combo_box: PComboBox; text_column: gint){. + cdecl, importc: "gtk_combo_box_set_entry_text_column", dynlib: lib.} +proc get_entry_text_column*(combo_box: PComboBox): gint{.cdecl, + importc: "gtk_combo_box_get_entry_text_column", dynlib: lib.} + +proc popup*(combo_box: PComboBox){.cdecl, importc: "gtk_combo_box_popup", + dynlib: lib.} +proc popdown*(combo_box: PComboBox){.cdecl, + importc: "gtk_combo_box_popdown", dynlib: lib.} +discard """proc get_popup_accessible*(combo_box: PComboBox): ptr AtkObject{.cdecl, + importc: "gtk_combo_box_get_popup_accessible", dynlib: lib.}""" + +type + TComboBoxText* = object of TComboBox + PComboBoxText* = ptr TComboBoxText + +proc combo_box_text_new*(): PComboBoxText{.cdecl, importc: "gtk_combo_box_text_new", + dynlib: lib.} +proc combo_box_text_new_with_entry*(): PComboBoxText{.cdecl, + importc: "gtk_combo_box_text_new_with_entry", dynlib: lib.} +proc append_text*(combo_box: PComboBoxText; text: cstring){.cdecl, + importc: "gtk_combo_box_text_append_text", dynlib: lib.} +proc insert_text*(combo_box: PComboBoxText; position: gint; + text: cstring){.cdecl, + importc: "gtk_combo_box_text_insert_text", dynlib: lib.} +proc prepend_text*(combo_box: PComboBoxText; text: cstring){.cdecl, + importc: "gtk_combo_box_text_prepend_text", dynlib: lib.} +proc remove*(combo_box: PComboBoxText; position: gint){.cdecl, + importc: "gtk_combo_box_text_remove", dynlib: lib.} +proc get_active_text*(combo_box: PComboBoxText): cstring{.cdecl, + importc: "gtk_combo_box_text_get_active_text", dynlib: lib.} + proc nimrod_init*() = var cmdLine{.importc: "cmdLine".}: array[0..255, cstring]