diff options
Diffstat (limited to 'lib')
53 files changed, 7224 insertions, 8005 deletions
diff --git a/lib/ansi_c.nim b/lib/ansi_c.nim index 6691ca4cc..8e39c9e39 100644 --- a/lib/ansi_c.nim +++ b/lib/ansi_c.nim @@ -47,7 +47,7 @@ else: # only Mac OS X has this shit proc c_longjmp(jmpb: C_JmpBuf, retval: cint) {.nodecl, importc: "longjmp".} -proc c_setjmp(jmpb: var C_JmpBuf) {.nodecl, importc: "setjmp".} +proc c_setjmp(jmpb: var C_JmpBuf): cint {.nodecl, importc: "setjmp".} proc c_signal(sig: cint, handler: proc (a: cint) {.noconv.}) {. importc: "signal", header: "<signal.h>".} diff --git a/lib/arithm.nim b/lib/arithm.nim index c8abded91..91a2232c9 100644 --- a/lib/arithm.nim +++ b/lib/arithm.nim @@ -1,7 +1,7 @@ # # # Nimrod's Runtime Library -# (c) Copyright 2006 Andreas Rumpf +# (c) Copyright 2008 Andreas Rumpf # # See the file "copying.txt", included in this # distribution, for details about the copyright. @@ -10,11 +10,11 @@ # simple integer arithmetic with overflow checking -proc raiseOverflow {.exportc: "raiseOverflow".} = +proc raiseOverflow {.compilerproc, noinline.} = # a single proc to reduce code size to a minimum raise newException(EOverflow, "over- or underflow") -proc raiseDivByZero {.exportc: "raiseDivByZero".} = +proc raiseDivByZero {.exportc: "raiseDivByZero", noinline.} = raise newException(EDivByZero, "divison by zero") proc addInt64(a, b: int64): int64 {.compilerProc, inline.} = @@ -75,9 +75,9 @@ proc mulInt64(a, b: int64): int64 {.compilerproc.} = var resAsFloat, floatProd: float64 result = a *% b - floatProd = float64(a) # conversion - floatProd = floatProd * float64(b) - resAsFloat = float64(result) + floatProd = toBiggestFloat(a) # conversion + floatProd = floatProd * toBiggestFloat(b) + resAsFloat = toBiggestFloat(result) # Fast path for normal case: small multiplicands, and no info # is lost in either method. @@ -101,16 +101,14 @@ proc absInt(a: int): int {.compilerProc, inline.} = else: return -a raiseOverflow() -when defined(I386) and (defined(vcc) or defined(wcc) or defined(dmc)): - # or defined(gcc)): - {.define: asmVersion.} - # my Version of Borland C++Builder does not have - # tasm32, which is needed for assembler blocks - # this is why Borland is not included in the 'when' -else: - {.define: useInline.} +const + asmVersion = defined(I386) and (defined(vcc) or defined(wcc) or defined(dmc)) + # my Version of Borland C++Builder does not have + # tasm32, which is needed for assembler blocks + # this is why Borland is not included in the 'when' + useInline = not asmVersion -when defined(asmVersion) and defined(gcc): +when asmVersion and defined(gcc): proc addInt(a, b: int): int {.compilerProc, pure, inline.} proc subInt(a, b: int): int {.compilerProc, pure, inline.} proc mulInt(a, b: int): int {.compilerProc, pure, inline.} @@ -118,7 +116,7 @@ when defined(asmVersion) and defined(gcc): proc modInt(a, b: int): int {.compilerProc, pure, inline.} proc negInt(a: int): int {.compilerProc, pure, inline.} -elif defined(asmVersion): +elif asmVersion: proc addInt(a, b: int): int {.compilerProc, pure.} proc subInt(a, b: int): int {.compilerProc, pure.} proc mulInt(a, b: int): int {.compilerProc, pure.} @@ -126,7 +124,7 @@ elif defined(asmVersion): proc modInt(a, b: int): int {.compilerProc, pure.} proc negInt(a: int): int {.compilerProc, pure.} -elif defined(useInline): +elif useInline: proc addInt(a, b: int): int {.compilerProc, inline.} proc subInt(a, b: int): int {.compilerProc, inline.} proc mulInt(a, b: int): int {.compilerProc.} @@ -145,7 +143,7 @@ else: # implementation: -when defined(asmVersion) and not defined(gcc): +when asmVersion and not defined(gcc): # assembler optimized versions for compilers that # have an intel syntax assembler: proc addInt(a, b: int): int = @@ -210,7 +208,7 @@ when defined(asmVersion) and not defined(gcc): theEnd: """ -elif defined(asmVersion) and defined(gcc): +elif asmVersion and defined(gcc): proc addInt(a, b: int): int = asm """ "addl %1,%%eax\n" "jno 1\n" diff --git a/lib/assign.nim b/lib/assign.nim index 5ac475ef0..3d4bf4d61 100644 --- a/lib/assign.nim +++ b/lib/assign.nim @@ -1,120 +1,120 @@ -# -# -# Nimrod's Runtime Library -# (c) Copyright 2006 Andreas Rumpf -# -# See the file "copying.txt", included in this -# distribution, for details about the copyright. -# - -#when defined(debugGC): -# {.define: logAssign.} -proc genericAssign(dest, src: Pointer, mt: PNimType) {.compilerProc.} -proc genericAssignAux(dest, src: Pointer, n: ptr TNimNode) = - var - d = cast[TAddress](dest) - s = cast[TAddress](src) - case n.kind - of nkNone: assert(false) - of nkSlot: - genericAssign(cast[pointer](d +% n.offset), cast[pointer](s +% n.offset), - n.typ) - of nkList: - for i in 0..n.len-1: - genericAssignAux(dest, src, n.sons[i]) - of nkCase: - copyMem(cast[pointer](d +% n.offset), cast[pointer](s +% n.offset), - n.typ.size) - var m = selectBranch(src, n) - if m != nil: genericAssignAux(dest, src, m) - -proc genericAssign(dest, src: Pointer, mt: PNimType) = - var - d = cast[TAddress](dest) - s = cast[TAddress](src) - - assert(mt != nil) - case mt.Kind - of tySequence: - var s2 = cast[ppointer](src)^ - var seq = cast[PGenericSeq](s2) - if s2 == nil: # this can happen! nil sequences are allowed - var x = cast[ppointer](dest) - x^ = nil - return - assert(dest != nil) - unsureAsgnRef(cast[ppointer](dest), - newObj(mt, seq.len * mt.base.size + GenericSeqSize)) - var dst = cast[taddress](cast[ppointer](dest)^) - for i in 0..seq.len-1: - genericAssign( - cast[pointer](dst +% i*% mt.base.size +% GenericSeqSize), - cast[pointer](cast[taddress](s2) +% i *% mt.base.size +% - GenericSeqSize), - mt.Base) - var dstseq = cast[PGenericSeq](dst) - dstseq.len = seq.len - dstseq.space = seq.len - of tyObject, tyTuple, tyPureObject: - # we don't need to copy m_type field for tyObject, as they are equal anyway - genericAssignAux(dest, src, mt.node) - of tyArray, tyArrayConstr: - for i in 0..(mt.size div mt.base.size)-1: - genericAssign(cast[pointer](d +% i*% mt.base.size), - cast[pointer](s +% i*% mt.base.size), mt.base) - of tyString: # a leaf - var s2 = cast[ppointer](s)^ - if s2 != nil: # nil strings are possible! - unsureAsgnRef(cast[ppointer](dest), copyString(cast[mstring](s2))) - else: - var x = cast[ppointer](dest) - x^ = nil - return - of tyRef: # BUGFIX: a long time this has been forgotten! - unsureAsgnRef(cast[ppointer](dest), cast[ppointer](s)^) - else: - copyMem(dest, src, mt.size) # copy raw bits - -proc genericSeqAssign(dest, src: Pointer, mt: PNimType) {.compilerProc.} = - var src = src # ugly, but I like to stress the parser sometimes :-) - genericAssign(dest, addr(src), mt) - -proc genericAssignOpenArray(dest, src: pointer, len: int, - mt: PNimType) {.compilerproc.} = - var - d = cast[TAddress](dest) - s = cast[TAddress](src) - for i in 0..len-1: - genericAssign(cast[pointer](d +% i*% mt.base.size), - cast[pointer](s +% i*% mt.base.size), mt.base) - -proc objectInit(dest: Pointer, typ: PNimType) {.compilerProc.} -proc objectInitAux(dest: Pointer, n: ptr TNimNode) = - var d = cast[TAddress](dest) - case n.kind - of nkNone: assert(false) - of nkSLot: objectInit(cast[pointer](d +% n.offset), n.typ) - of nkList: - for i in 0..n.len-1: - objectInitAux(dest, n.sons[i]) - of nkCase: - var m = selectBranch(dest, n) - if m != nil: objectInitAux(dest, m) - -proc objectInit(dest: Pointer, typ: PNimType) = - # the generic init proc that takes care of initialization of complex - # objects on the stack or heap - var d = cast[TAddress](dest) - case typ.kind - of tyObject: - # iterate over any structural type - # here we have to init the type field: - var pint = cast[ptr PNimType](dest) - pint^ = typ - objectInitAux(dest, typ.node) - of tyTuple, tyPureObject: - objectInitAux(dest, typ.node) - of tyArray, tyArrayConstr: - for i in 0..(typ.size div typ.base.size)-1: - objectInit(cast[pointer](d +% i * typ.base.size), typ.base) - else: nil # nothing to do +# +# +# Nimrod's Runtime Library +# (c) Copyright 2006 Andreas Rumpf +# +# See the file "copying.txt", included in this +# distribution, for details about the copyright. +# + +#when defined(debugGC): +# {.define: logAssign.} +proc genericAssign(dest, src: Pointer, mt: PNimType) {.compilerProc.} +proc genericAssignAux(dest, src: Pointer, n: ptr TNimNode) = + var + d = cast[TAddress](dest) + s = cast[TAddress](src) + case n.kind + of nkNone: assert(false) + of nkSlot: + genericAssign(cast[pointer](d +% n.offset), cast[pointer](s +% n.offset), + n.typ) + of nkList: + for i in 0..n.len-1: + genericAssignAux(dest, src, n.sons[i]) + of nkCase: + copyMem(cast[pointer](d +% n.offset), cast[pointer](s +% n.offset), + n.typ.size) + var m = selectBranch(src, n) + if m != nil: genericAssignAux(dest, src, m) + +proc genericAssign(dest, src: Pointer, mt: PNimType) = + var + d = cast[TAddress](dest) + s = cast[TAddress](src) + + assert(mt != nil) + case mt.Kind + of tySequence: + var s2 = cast[ppointer](src)^ + var seq = cast[PGenericSeq](s2) + if s2 == nil: # this can happen! nil sequences are allowed + var x = cast[ppointer](dest) + x^ = nil + return + assert(dest != nil) + unsureAsgnRef(cast[ppointer](dest), + newObj(mt, seq.len * mt.base.size + GenericSeqSize)) + var dst = cast[taddress](cast[ppointer](dest)^) + for i in 0..seq.len-1: + genericAssign( + cast[pointer](dst +% i*% mt.base.size +% GenericSeqSize), + cast[pointer](cast[taddress](s2) +% i *% mt.base.size +% + GenericSeqSize), + mt.Base) + var dstseq = cast[PGenericSeq](dst) + dstseq.len = seq.len + dstseq.space = seq.len + of tyObject, tyTuple, tyPureObject: + # we don't need to copy m_type field for tyObject, as they are equal anyway + genericAssignAux(dest, src, mt.node) + of tyArray, tyArrayConstr: + for i in 0..(mt.size div mt.base.size)-1: + genericAssign(cast[pointer](d +% i*% mt.base.size), + cast[pointer](s +% i*% mt.base.size), mt.base) + of tyString: # a leaf + var s2 = cast[ppointer](s)^ + if s2 != nil: # nil strings are possible! + unsureAsgnRef(cast[ppointer](dest), copyString(cast[NimString](s2))) + else: + var x = cast[ppointer](dest) + x^ = nil + return + of tyRef: # BUGFIX: a long time this has been forgotten! + unsureAsgnRef(cast[ppointer](dest), cast[ppointer](s)^) + else: + copyMem(dest, src, mt.size) # copy raw bits + +proc genericSeqAssign(dest, src: Pointer, mt: PNimType) {.compilerProc.} = + var src = src # ugly, but I like to stress the parser sometimes :-) + genericAssign(dest, addr(src), mt) + +proc genericAssignOpenArray(dest, src: pointer, len: int, + mt: PNimType) {.compilerproc.} = + var + d = cast[TAddress](dest) + s = cast[TAddress](src) + for i in 0..len-1: + genericAssign(cast[pointer](d +% i*% mt.base.size), + cast[pointer](s +% i*% mt.base.size), mt.base) + +proc objectInit(dest: Pointer, typ: PNimType) {.compilerProc.} +proc objectInitAux(dest: Pointer, n: ptr TNimNode) = + var d = cast[TAddress](dest) + case n.kind + of nkNone: assert(false) + of nkSLot: objectInit(cast[pointer](d +% n.offset), n.typ) + of nkList: + for i in 0..n.len-1: + objectInitAux(dest, n.sons[i]) + of nkCase: + var m = selectBranch(dest, n) + if m != nil: objectInitAux(dest, m) + +proc objectInit(dest: Pointer, typ: PNimType) = + # the generic init proc that takes care of initialization of complex + # objects on the stack or heap + var d = cast[TAddress](dest) + case typ.kind + of tyObject: + # iterate over any structural type + # here we have to init the type field: + var pint = cast[ptr PNimType](dest) + pint^ = typ + objectInitAux(dest, typ.node) + of tyTuple, tyPureObject: + objectInitAux(dest, typ.node) + of tyArray, tyArrayConstr: + for i in 0..(typ.size div typ.base.size)-1: + objectInit(cast[pointer](d +% i * typ.base.size), typ.base) + else: nil # nothing to do diff --git a/lib/base/cairo/cairo.nim b/lib/base/cairo/cairo.nim index d2a99f355..6da8183f3 100644 --- a/lib/base/cairo/cairo.nim +++ b/lib/base/cairo/cairo.nim @@ -58,7 +58,7 @@ else: type PByte = cstring - cairo_status_t* = enum + TCairoStatus* = enum CAIRO_STATUS_SUCCESS = 0, CAIRO_STATUS_NO_MEMORY, CAIRO_STATUS_INVALID_RESTORE, CAIRO_STATUS_INVALID_POP_GROUP, CAIRO_STATUS_NO_CURRENT_POINT, CAIRO_STATUS_INVALID_MATRIX, @@ -69,93 +69,93 @@ type CAIRO_STATUS_PATTERN_TYPE_MISMATCH, CAIRO_STATUS_INVALID_CONTENT, CAIRO_STATUS_INVALID_FORMAT, CAIRO_STATUS_INVALID_VISUAL, CAIRO_STATUS_FILE_NOT_FOUND, CAIRO_STATUS_INVALID_DASH - cairo_operator_t* = enum + TCairoOperator* = enum CAIRO_OPERATOR_CLEAR, CAIRO_OPERATOR_SOURCE, CAIRO_OPERATOR_OVER, CAIRO_OPERATOR_IN, CAIRO_OPERATOR_OUT, CAIRO_OPERATOR_ATOP, CAIRO_OPERATOR_DEST, CAIRO_OPERATOR_DEST_OVER, CAIRO_OPERATOR_DEST_IN, CAIRO_OPERATOR_DEST_OUT, CAIRO_OPERATOR_DEST_ATOP, CAIRO_OPERATOR_XOR, CAIRO_OPERATOR_ADD, CAIRO_OPERATOR_SATURATE - cairo_antialias_t* = enum + TCairoAntialias* = enum CAIRO_ANTIALIAS_DEFAULT, CAIRO_ANTIALIAS_NONE, CAIRO_ANTIALIAS_GRAY, CAIRO_ANTIALIAS_SUBPIXEL - cairo_fill_rule_t* = enum + TCairoFillRule* = enum CAIRO_FILL_RULE_WINDING, CAIRO_FILL_RULE_EVEN_ODD - cairo_line_cap_t* = enum + TCairoLineCap* = enum CAIRO_LINE_CAP_BUTT, CAIRO_LINE_CAP_ROUND, CAIRO_LINE_CAP_SQUARE - cairo_line_join_t* = enum + TCairoLineJoin* = enum CAIRO_LINE_JOIN_MITER, CAIRO_LINE_JOIN_ROUND, CAIRO_LINE_JOIN_BEVEL - cairo_font_slant_t* = enum + TCairoFontSlant* = enum CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_SLANT_ITALIC, CAIRO_FONT_SLANT_OBLIQUE - cairo_font_weight_t* = enum + TCairoFontWeight* = enum CAIRO_FONT_WEIGHT_NORMAL, CAIRO_FONT_WEIGHT_BOLD - cairo_subpixel_order_t* = enum + TCairoSubpixelOrder* = enum CAIRO_SUBPIXEL_ORDER_DEFAULT, CAIRO_SUBPIXEL_ORDER_RGB, CAIRO_SUBPIXEL_ORDER_BGR, CAIRO_SUBPIXEL_ORDER_VRGB, CAIRO_SUBPIXEL_ORDER_VBGR - cairo_hint_style_t* = enum + TCairoHintStyle* = enum CAIRO_HINT_STYLE_DEFAULT, CAIRO_HINT_STYLE_NONE, CAIRO_HINT_STYLE_SLIGHT, CAIRO_HINT_STYLE_MEDIUM, CAIRO_HINT_STYLE_FULL - cairo_hint_metrics_t* = enum + TCairoHintMetrics* = enum CAIRO_HINT_METRICS_DEFAULT, CAIRO_HINT_METRICS_OFF, CAIRO_HINT_METRICS_ON - cairo_path_data_type_t* = enum + TCairoPathDataType* = enum CAIRO_PATH_MOVE_TO, CAIRO_PATH_LINE_TO, CAIRO_PATH_CURVE_TO, CAIRO_PATH_CLOSE_PATH - cairo_content_t* = enum + TCairoContent* = enum CAIRO_CONTENT_COLOR = 0x00001000, CAIRO_CONTENT_ALPHA = 0x00002000, CAIRO_CONTENT_COLOR_ALPHA = 0x00003000 - cairo_format_t* = enum + TCairoFormat* = enum CAIRO_FORMAT_ARGB32, CAIRO_FORMAT_RGB24, CAIRO_FORMAT_A8, CAIRO_FORMAT_A1 - cairo_extend_t* = enum + TCairoExtend* = enum CAIRO_EXTEND_NONE, CAIRO_EXTEND_REPEAT, CAIRO_EXTEND_REFLECT, CAIRO_EXTEND_PAD - cairo_filter_t* = enum + TCairoFilter* = enum CAIRO_FILTER_FAST, CAIRO_FILTER_GOOD, CAIRO_FILTER_BEST, CAIRO_FILTER_NEAREST, CAIRO_FILTER_BILINEAR, CAIRO_FILTER_GAUSSIAN - cairo_font_type_t* = enum + TCairoFontType* = enum CAIRO_FONT_TYPE_TOY, CAIRO_FONT_TYPE_FT, CAIRO_FONT_TYPE_WIN32, CAIRO_FONT_TYPE_ATSUI - cairo_pattern_type_t* = enum + TCairoPatternType* = enum CAIRO_PATTERN_TYPE_SOLID, CAIRO_PATTERN_TYPE_SURFACE, CAIRO_PATTERN_TYPE_LINEAR, CAIRO_PATTERN_TYPE_RADIAL - cairo_surface_type_t* = enum + TCairoSurfaceType* = enum CAIRO_SURFACE_TYPE_IMAGE, CAIRO_SURFACE_TYPE_PDF, CAIRO_SURFACE_TYPE_PS, CAIRO_SURFACE_TYPE_XLIB, CAIRO_SURFACE_TYPE_XCB, CAIRO_SURFACE_TYPE_GLITZ, CAIRO_SURFACE_TYPE_QUARTZ, CAIRO_SURFACE_TYPE_WIN32, CAIRO_SURFACE_TYPE_BEOS, CAIRO_SURFACE_TYPE_DIRECTFB, CAIRO_SURFACE_TYPE_SVG, CAIRO_SURFACE_TYPE_OS2 - cairo_svg_version_t* = enum + TCairoSvgVersion* = enum CAIRO_SVG_VERSION_1_1, CAIRO_SVG_VERSION_1_2 - Pcairo_surface_t* = ref cairo_surface_t - PPcairo_surface_t* = ref Pcairo_surface_t - Pcairo_t* = ref cairo_t - Pcairo_pattern_t* = ref cairo_pattern_t - Pcairo_font_options_t* = ref cairo_font_options_t - Pcairo_font_face_t* = ref cairo_font_face_t - Pcairo_scaled_font_t* = ref cairo_scaled_font_t - Pcairo_bool_t* = ref cairo_bool_t - cairo_bool_t* = int32 - Pcairo_matrix_t* = ref cairo_matrix_t - Pcairo_user_data_key_t* = ref cairo_user_data_key_t - Pcairo_glyph_t* = ref cairo_glyph_t - Pcairo_text_extents_t* = ref cairo_text_extents_t - Pcairo_font_extents_t* = ref cairo_font_extents_t - Pcairo_path_data_type_t* = ref cairo_path_data_type_t - Pcairo_path_data_t* = ref cairo_path_data_t - Pcairo_path_t* = ref cairo_path_t - Pcairo_rectangle_t* = ref cairo_rectangle_t - Pcairo_rectangle_list_t* = ref cairo_rectangle_list_t - cairo_destroy_func_t* = proc (data: Pointer){.cdecl.} - cairo_write_func_t* = proc (closure: Pointer, data: PByte, len: int32): cairo_status_t{. + PCairoSurface* = ptr TCairoSurface + PPCairoSurface* = ptr PCairoSurface + PCairo* = ptr TCairo + PCairoPattern* = ptr TCairoPattern + PCairoFontOptions* = ptr TCairoFontOptions + PCairoFontFace* = ptr TCairoFontFace + PCairoScaledFont* = ptr TCairoScaledFont + PCairoBool* = ptr TCairoBool + TCairoBool* = int32 + PCairoMatrix* = ptr TCairoMatrix + PCairoUserDataKey* = ptr TCairoUserDataKey + PCairoGlyph* = ptr TCairoGlyph + PCairoTextExtents* = ptr TCairoTextExtents + PCairoFontExtents* = ptr TCairoFontExtents + PCairoPathDataType* = ptr TCairoPathDataType + PCairoPathData* = ptr TCairoPathData + PCairoPath* = ptr TCairoPath + PCairoRectangle* = ptr TCairoRectangle + PCairoRectangleList* = ptr TCairoRectangleList + TCairoDestroyFunc* = proc (data: Pointer){.cdecl.} + TCairoWriteFunc* = proc (closure: Pointer, data: PByte, len: int32): TCairoStatus{. cdecl.} - cairo_read_func_t* = proc (closure: Pointer, data: PByte, len: int32): cairo_status_t{. + TCairoReadFunc* = proc (closure: Pointer, data: PByte, len: int32): TCairoStatus{. cdecl.} - cairo_t* {.final.} = object #OPAQUE - cairo_surface_t* {.final.} = object #OPAQUE - cairo_pattern_t* {.final.} = object #OPAQUE - cairo_scaled_font_t* {.final.} = object #OPAQUE - cairo_font_face_t* {.final.} = object #OPAQUE - cairo_font_options_t* {.final.} = object #OPAQUE - cairo_matrix_t* {.final.} = object + TCairo* {.final.} = object #OPAQUE + TCairoSurface* {.final.} = object #OPAQUE + TCairoPattern* {.final.} = object #OPAQUE + TCairoScaledFont* {.final.} = object #OPAQUE + TCairoFontFace* {.final.} = object #OPAQUE + TCairoFontOptions* {.final.} = object #OPAQUE + TCairoMatrix* {.final.} = object xx: float64 yx: float64 xy: float64 @@ -163,15 +163,15 @@ type x0: float64 y0: float64 - cairo_user_data_key_t* {.final.} = object + TCairoUserDataKey* {.final.} = object unused: int32 - cairo_glyph_t* {.final.} = object + TCairoGlyph* {.final.} = object index: int32 x: float64 y: float64 - cairo_text_extents_t* {.final.} = object + TCairoTextExtents* {.final.} = object x_bearing: float64 y_bearing: float64 width: float64 @@ -179,30 +179,30 @@ type x_advance: float64 y_advance: float64 - cairo_font_extents_t* {.final.} = object + TCairoFontExtents* {.final.} = object ascent: float64 descent: float64 height: float64 max_x_advance: float64 max_y_advance: float64 - cairo_path_data_t* {.final.} = object #* _type : cairo_path_data_type_t; - # length : LongInt; - # end + TCairoPathData* {.final.} = object #* _type : TCairoPathDataType; + # length : LongInt; + # end x: float64 y: float64 - cairo_path_t* {.final.} = object - status: cairo_status_t - data: Pcairo_path_data_t + TCairoPath* {.final.} = object + status: TCairoStatus + data: PCairoPathData num_data: int32 - cairo_rectangle_t* {.final.} = object + TCairoRectangle* {.final.} = object x, y, width, height: float64 - cairo_rectangle_list_t* {.final.} = object - status: cairo_status_t - rectangles: Pcairo_rectangle_t + TCairoRectangleList* {.final.} = object + status: TCairoStatus + rectangles: PCairoRectangle num_rectangles: int32 @@ -211,480 +211,480 @@ proc cairo_version_string*(): cstring{.cdecl, importc, dynlib: LIB_CAIRO.} #Helper function to retrieve decoded version proc cairo_version*(major, minor, micro: var int32) #* Functions for manipulating state objects -proc cairo_create*(target: Pcairo_surface_t): Pcairo_t{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_reference*(cr: Pcairo_t): Pcairo_t{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_destroy*(cr: Pcairo_t){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_get_reference_count*(cr: Pcairo_t): int32{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_get_user_data*(cr: Pcairo_t, key: Pcairo_user_data_key_t): pointer{. - cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_set_user_data*(cr: PCairo_t, key: Pcairo_user_data_key_t, - user_data: Pointer, destroy: cairo_destroy_func_t): cairo_status_t{. - cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_save*(cr: Pcairo_t){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_restore*(cr: Pcairo_t){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_push_group*(cr: PCairo_t){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_push_group_with_content*(cr: PCairo_t, content: cairo_content_t){. - cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_pop_group*(cr: PCairo_t): Pcairo_pattern_t{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_pop_group_to_source*(cr: PCairo_t){.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_create*(target: PCairoSurface): PCairo{.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_reference*(cr: PCairo): PCairo{.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_destroy*(cr: PCairo){.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_get_reference_count*(cr: PCairo): int32{.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_get_user_data*(cr: PCairo, key: PCairoUserDataKey): pointer{. + cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_set_user_data*(cr: PCairo, key: PCairoUserDataKey, + user_data: Pointer, destroy: TCairoDestroyFunc): TCairoStatus{. + cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_save*(cr: PCairo){.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_restore*(cr: PCairo){.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_push_group*(cr: PCairo){.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_push_group_with_content*(cr: PCairo, content: TCairoContent){. + cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_pop_group*(cr: PCairo): PCairoPattern{.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_pop_group_to_source*(cr: PCairo){.cdecl, importc, dynlib: LIB_CAIRO.} #* Modify state -proc cairo_set_operator*(cr: Pcairo_t, op: cairo_operator_t){.cdecl, importc, +proc cairo_set_operator*(cr: PCairo, op: TCairoOperator){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_set_source*(cr: Pcairo_t, source: Pcairo_pattern_t){.cdecl, importc, +proc cairo_set_source*(cr: PCairo, source: PCairoPattern){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_set_source_rgb*(cr: Pcairo_t, red, green, blue: float64){.cdecl, importc, +proc cairo_set_source_rgb*(cr: PCairo, red, green, blue: float64){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_set_source_rgba*(cr: Pcairo_t, red, green, blue, alpha: float64){. +proc cairo_set_source_rgba*(cr: PCairo, red, green, blue, alpha: float64){. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_set_source_surface*(cr: Pcairo_t, surface: Pcairo_surface_t, +proc cairo_set_source_surface*(cr: PCairo, surface: PCairoSurface, x, y: float64){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_set_tolerance*(cr: Pcairo_t, tolerance: float64){.cdecl, importc, +proc cairo_set_tolerance*(cr: PCairo, tolerance: float64){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_set_antialias*(cr: Pcairo_t, antialias: cairo_antialias_t){.cdecl, importc, +proc cairo_set_antialias*(cr: PCairo, antialias: TCairoAntialias){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_set_fill_rule*(cr: Pcairo_t, fill_rule: cairo_fill_rule_t){.cdecl, importc, +proc cairo_set_fill_rule*(cr: PCairo, fill_rule: TCairoFillRule){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_set_line_width*(cr: Pcairo_t, width: float64){.cdecl, importc, +proc cairo_set_line_width*(cr: PCairo, width: float64){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_set_line_cap*(cr: Pcairo_t, line_cap: cairo_line_cap_t){.cdecl, importc, +proc cairo_set_line_cap*(cr: PCairo, line_cap: TCairoLineCap){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_set_line_join*(cr: Pcairo_t, line_join: cairo_line_join_t){.cdecl, importc, +proc cairo_set_line_join*(cr: PCairo, line_join: TCairoLineJoin){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_set_dash*(cr: Pcairo_t, dashes: openarray[float64], +proc cairo_set_dash*(cr: PCairo, dashes: openarray[float64], offset: float64){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_set_miter_limit*(cr: Pcairo_t, limit: float64){.cdecl, importc, +proc cairo_set_miter_limit*(cr: PCairo, limit: float64){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_translate*(cr: Pcairo_t, tx, ty: float64){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_scale*(cr: Pcairo_t, sx, sy: float64){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_rotate*(cr: Pcairo_t, angle: float64){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_transform*(cr: Pcairo_t, matrix: Pcairo_matrix_t){.cdecl, importc, +proc cairo_translate*(cr: PCairo, tx, ty: float64){.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_scale*(cr: PCairo, sx, sy: float64){.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_rotate*(cr: PCairo, angle: float64){.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_transform*(cr: PCairo, matrix: PCairoMatrix){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_set_matrix*(cr: Pcairo_t, matrix: Pcairo_matrix_t){.cdecl, importc, +proc cairo_set_matrix*(cr: PCairo, matrix: PCairoMatrix){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_identity_matrix*(cr: Pcairo_t){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_user_to_device*(cr: Pcairo_t, x, y: var float64){.cdecl, importc, +proc cairo_identity_matrix*(cr: PCairo){.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_user_to_device*(cr: PCairo, x, y: var float64){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_user_to_device_distance*(cr: Pcairo_t, dx, dy: var float64){.cdecl, importc, +proc cairo_user_to_device_distance*(cr: PCairo, dx, dy: var float64){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_device_to_user*(cr: Pcairo_t, x, y: var float64){.cdecl, importc, +proc cairo_device_to_user*(cr: PCairo, x, y: var float64){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_device_to_user_distance*(cr: Pcairo_t, dx, dy: var float64){.cdecl, importc, +proc cairo_device_to_user_distance*(cr: PCairo, dx, dy: var float64){.cdecl, importc, dynlib: LIB_CAIRO.} #* Path creation functions -proc cairo_new_path*(cr: Pcairo_t){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_move_to*(cr: Pcairo_t, x, y: float64){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_new_sub_path*(cr: Pcairo_t){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_line_to*(cr: Pcairo_t, x, y: float64){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_curve_to*(cr: Pcairo_t, x1, y1, x2, y2, x3, y3: float64){.cdecl, importc, +proc cairo_new_path*(cr: PCairo){.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_move_to*(cr: PCairo, x, y: float64){.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_new_sub_path*(cr: PCairo){.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_line_to*(cr: PCairo, x, y: float64){.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_curve_to*(cr: PCairo, x1, y1, x2, y2, x3, y3: float64){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_arc*(cr: Pcairo_t, xc, yc, radius, angle1, angle2: float64){.cdecl, importc, +proc cairo_arc*(cr: PCairo, xc, yc, radius, angle1, angle2: float64){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_arc_negative*(cr: Pcairo_t, xc, yc, radius, angle1, angle2: float64){. +proc cairo_arc_negative*(cr: PCairo, xc, yc, radius, angle1, angle2: float64){. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_rel_move_to*(cr: Pcairo_t, dx, dy: float64){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_rel_line_to*(cr: Pcairo_t, dx, dy: float64){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_rel_curve_to*(cr: Pcairo_t, dx1, dy1, dx2, dy2, dx3, dy3: float64){. +proc cairo_rel_move_to*(cr: PCairo, dx, dy: float64){.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_rel_line_to*(cr: PCairo, dx, dy: float64){.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_rel_curve_to*(cr: PCairo, dx1, dy1, dx2, dy2, dx3, dy3: float64){. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_rectangle*(cr: Pcairo_t, x, y, width, height: float64){.cdecl, importc, +proc cairo_rectangle*(cr: PCairo, x, y, width, height: float64){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_close_path*(cr: Pcairo_t){.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_close_path*(cr: PCairo){.cdecl, importc, dynlib: LIB_CAIRO.} #* Painting functions -proc cairo_paint*(cr: Pcairo_t){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_paint_with_alpha*(cr: Pcairo_t, alpha: float64){.cdecl, importc, +proc cairo_paint*(cr: PCairo){.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_paint_with_alpha*(cr: PCairo, alpha: float64){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_mask*(cr: Pcairo_t, pattern: Pcairo_pattern_t){.cdecl, importc, +proc cairo_mask*(cr: PCairo, pattern: PCairoPattern){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_mask_surface*(cr: Pcairo_t, surface: Pcairo_surface_t, +proc cairo_mask_surface*(cr: PCairo, surface: PCairoSurface, surface_x, surface_y: float64){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_stroke*(cr: Pcairo_t){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_stroke_preserve*(cr: Pcairo_t){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_fill*(cr: Pcairo_t){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_fill_preserve*(cr: Pcairo_t){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_copy_page*(cr: Pcairo_t){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_show_page*(cr: Pcairo_t){.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_stroke*(cr: PCairo){.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_stroke_preserve*(cr: PCairo){.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_fill*(cr: PCairo){.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_fill_preserve*(cr: PCairo){.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_copy_page*(cr: PCairo){.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_show_page*(cr: PCairo){.cdecl, importc, dynlib: LIB_CAIRO.} #* Insideness testing -proc cairo_in_stroke*(cr: Pcairo_t, x, y: float64): cairo_bool_t{.cdecl, importc, +proc cairo_in_stroke*(cr: PCairo, x, y: float64): TCairoBool{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_in_fill*(cr: Pcairo_t, x, y: float64): cairo_bool_t{.cdecl, importc, +proc cairo_in_fill*(cr: PCairo, x, y: float64): TCairoBool{.cdecl, importc, dynlib: LIB_CAIRO.} #* Rectangular extents -proc cairo_stroke_extents*(cr: Pcairo_t, x1, y1, x2, y2: var float64){.cdecl, importc, +proc cairo_stroke_extents*(cr: PCairo, x1, y1, x2, y2: var float64){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_fill_extents*(cr: Pcairo_t, x1, y1, x2, y2: var float64){.cdecl, importc, +proc cairo_fill_extents*(cr: PCairo, x1, y1, x2, y2: var float64){.cdecl, importc, dynlib: LIB_CAIRO.} #* Clipping -proc cairo_reset_clip*(cr: Pcairo_t){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_clip*(cr: Pcairo_t){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_clip_preserve*(cr: Pcairo_t){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_clip_extents*(cr: Pcairo_t, x1, y1, x2, y2: var float64){.cdecl, importc, +proc cairo_reset_clip*(cr: PCairo){.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_clip*(cr: PCairo){.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_clip_preserve*(cr: PCairo){.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_clip_extents*(cr: PCairo, x1, y1, x2, y2: var float64){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_copy_clip_rectangle_list*(cr: Pcairo_t): Pcairo_rectangle_list_t{. +proc cairo_copy_clip_rectangle_list*(cr: PCairo): PCairoRectangleList{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_rectangle_list_destroy*(rectangle_list: Pcairo_rectangle_list_t){. +proc cairo_rectangle_list_destroy*(rectangle_list: PCairoRectangleList){. cdecl, importc, dynlib: LIB_CAIRO.} #* Font/Text functions -proc cairo_font_options_create*(): Pcairo_font_options_t{.cdecl, importc, +proc cairo_font_options_create*(): PCairoFontOptions{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_font_options_copy*(original: Pcairo_font_options_t): Pcairo_font_options_t{. +proc cairo_font_options_copy*(original: PCairoFontOptions): PCairoFontOptions{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_font_options_destroy*(options: Pcairo_font_options_t){.cdecl, importc, +proc cairo_font_options_destroy*(options: PCairoFontOptions){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_font_options_status*(options: Pcairo_font_options_t): cairo_status_t{. +proc cairo_font_options_status*(options: PCairoFontOptions): TCairoStatus{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_font_options_merge*(options, other: Pcairo_font_options_t){.cdecl, importc, +proc cairo_font_options_merge*(options, other: PCairoFontOptions){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_font_options_equal*(options, other: Pcairo_font_options_t): cairo_bool_t{. +proc cairo_font_options_equal*(options, other: PCairoFontOptions): TCairoBool{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_font_options_hash*(options: Pcairo_font_options_t): int32{.cdecl, importc, +proc cairo_font_options_hash*(options: PCairoFontOptions): int32{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_font_options_set_antialias*(options: Pcairo_font_options_t, - antialias: cairo_antialias_t){.cdecl, importc, +proc cairo_font_options_set_antialias*(options: PCairoFontOptions, + antialias: TCairoAntialias){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_font_options_get_antialias*(options: Pcairo_font_options_t): cairo_antialias_t{. +proc cairo_font_options_get_antialias*(options: PCairoFontOptions): TCairoAntialias{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_font_options_set_subpixel_order*(options: Pcairo_font_options_t, - subpixel_order: cairo_subpixel_order_t){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_font_options_get_subpixel_order*(options: Pcairo_font_options_t): cairo_subpixel_order_t{. +proc cairo_font_options_set_subpixel_order*(options: PCairoFontOptions, + subpixel_order: TCairoSubpixelOrder){.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_font_options_get_subpixel_order*(options: PCairoFontOptions): TCairoSubpixelOrder{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_font_options_set_hint_style*(options: Pcairo_font_options_t, - hint_style: cairo_hint_style_t){.cdecl, importc, +proc cairo_font_options_set_hint_style*(options: PCairoFontOptions, + hint_style: TCairoHintStyle){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_font_options_get_hint_style*(options: Pcairo_font_options_t): cairo_hint_style_t{. +proc cairo_font_options_get_hint_style*(options: PCairoFontOptions): TCairoHintStyle{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_font_options_set_hint_metrics*(options: Pcairo_font_options_t, - hint_metrics: cairo_hint_metrics_t){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_font_options_get_hint_metrics*(options: Pcairo_font_options_t): cairo_hint_metrics_t{. +proc cairo_font_options_set_hint_metrics*(options: PCairoFontOptions, + hint_metrics: TCairoHintMetrics){.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_font_options_get_hint_metrics*(options: PCairoFontOptions): TCairoHintMetrics{. cdecl, importc, dynlib: LIB_CAIRO.} #* This interface is for dealing with text as text, not caring about the - # font object inside the the cairo_t. -proc cairo_select_font_face*(cr: Pcairo_t, family: cstring, - slant: cairo_font_slant_t, - weight: cairo_font_weight_t){.cdecl, importc, + # font object inside the the TCairo. +proc cairo_select_font_face*(cr: PCairo, family: cstring, + slant: TCairoFontSlant, + weight: TCairoFontWeight){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_set_font_size*(cr: Pcairo_t, size: float64){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_set_font_matrix*(cr: Pcairo_t, matrix: Pcairo_matrix_t){.cdecl, importc, +proc cairo_set_font_size*(cr: PCairo, size: float64){.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_set_font_matrix*(cr: PCairo, matrix: PCairoMatrix){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_get_font_matrix*(cr: Pcairo_t, matrix: Pcairo_matrix_t){.cdecl, importc, +proc cairo_get_font_matrix*(cr: PCairo, matrix: PCairoMatrix){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_set_font_options*(cr: Pcairo_t, options: Pcairo_font_options_t){. +proc cairo_set_font_options*(cr: PCairo, options: PCairoFontOptions){. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_get_font_options*(cr: Pcairo_t, options: Pcairo_font_options_t){. +proc cairo_get_font_options*(cr: PCairo, options: PCairoFontOptions){. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_set_font_face*(cr: Pcairo_t, font_face: Pcairo_font_face_t){.cdecl, importc, +proc cairo_set_font_face*(cr: PCairo, font_face: PCairoFontFace){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_get_font_face*(cr: Pcairo_t): Pcairo_font_face_t{.cdecl, importc, +proc cairo_get_font_face*(cr: PCairo): PCairoFontFace{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_set_scaled_font*(cr: PCairo_t, scaled_font: Pcairo_scaled_font_t){. +proc cairo_set_scaled_font*(cr: PCairo, scaled_font: PCairoScaledFont){. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_get_scaled_font*(cr: Pcairo_t): Pcairo_scaled_font_t{.cdecl, importc, +proc cairo_get_scaled_font*(cr: PCairo): PCairoScaledFont{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_show_text*(cr: Pcairo_t, utf8: cstring){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_show_glyphs*(cr: Pcairo_t, glyphs: Pcairo_glyph_t, num_glyphs: int32){. +proc cairo_show_text*(cr: PCairo, utf8: cstring){.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_show_glyphs*(cr: PCairo, glyphs: PCairoGlyph, num_glyphs: int32){. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_text_path*(cr: Pcairo_t, utf8: cstring){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_glyph_path*(cr: Pcairo_t, glyphs: Pcairo_glyph_t, num_glyphs: int32){. +proc cairo_text_path*(cr: PCairo, utf8: cstring){.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_glyph_path*(cr: PCairo, glyphs: PCairoGlyph, num_glyphs: int32){. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_text_extents*(cr: Pcairo_t, utf8: cstring, - extents: Pcairo_text_extents_t){.cdecl, importc, +proc cairo_text_extents*(cr: PCairo, utf8: cstring, + extents: PCairoTextExtents){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_glyph_extents*(cr: Pcairo_t, glyphs: Pcairo_glyph_t, - num_glyphs: int32, extents: Pcairo_text_extents_t){. +proc cairo_glyph_extents*(cr: PCairo, glyphs: PCairoGlyph, + num_glyphs: int32, extents: PCairoTextExtents){. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_font_extents*(cr: Pcairo_t, extents: Pcairo_font_extents_t){.cdecl, importc, +proc cairo_font_extents*(cr: PCairo, extents: PCairoFontExtents){.cdecl, importc, dynlib: LIB_CAIRO.} #* Generic identifier for a font style -proc cairo_font_face_reference*(font_face: Pcairo_font_face_t): Pcairo_font_face_t{. +proc cairo_font_face_reference*(font_face: PCairoFontFace): PCairoFontFace{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_font_face_destroy*(font_face: Pcairo_font_face_t){.cdecl, importc, +proc cairo_font_face_destroy*(font_face: PCairoFontFace){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_font_face_get_reference_count*(font_face: Pcairo_font_face_t): int32{. +proc cairo_font_face_get_reference_count*(font_face: PCairoFontFace): int32{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_font_face_status*(font_face: Pcairo_font_face_t): cairo_status_t{. +proc cairo_font_face_status*(font_face: PCairoFontFace): TCairoStatus{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_font_face_get_type*(font_face: Pcairo_font_face_t): cairo_font_type_t{. +proc cairo_font_face_get_type*(font_face: PCairoFontFace): TCairoFontType{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_font_face_get_user_data*(font_face: Pcairo_font_face_t, - key: Pcairo_user_data_key_t): pointer{. +proc cairo_font_face_get_user_data*(font_face: PCairoFontFace, + key: PCairoUserDataKey): pointer{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_font_face_set_user_data*(font_face: Pcairo_font_face_t, - key: Pcairo_user_data_key_t, +proc cairo_font_face_set_user_data*(font_face: PCairoFontFace, + key: PCairoUserDataKey, user_data: pointer, - destroy: cairo_destroy_func_t): cairo_status_t{. + destroy: TCairoDestroyFunc): TCairoStatus{. cdecl, importc, dynlib: LIB_CAIRO.} #* Portable interface to general font features -proc cairo_scaled_font_create*(font_face: Pcairo_font_face_t, - font_matrix: Pcairo_matrix_t, - ctm: Pcairo_matrix_t, - options: Pcairo_font_options_t): Pcairo_scaled_font_t{. +proc cairo_scaled_font_create*(font_face: PCairoFontFace, + font_matrix: PCairoMatrix, + ctm: PCairoMatrix, + options: PCairoFontOptions): PCairoScaledFont{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_scaled_font_reference*(scaled_font: Pcairo_scaled_font_t): Pcairo_scaled_font_t{. +proc cairo_scaled_font_reference*(scaled_font: PCairoScaledFont): PCairoScaledFont{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_scaled_font_destroy*(scaled_font: Pcairo_scaled_font_t){.cdecl, importc, +proc cairo_scaled_font_destroy*(scaled_font: PCairoScaledFont){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_scaled_font_get_reference_count*(scaled_font: Pcairo_scaled_font_t): int32{. +proc cairo_scaled_font_get_reference_count*(scaled_font: PCairoScaledFont): int32{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_scaled_font_status*(scaled_font: Pcairo_scaled_font_t): cairo_status_t{. +proc cairo_scaled_font_status*(scaled_font: PCairoScaledFont): TCairoStatus{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_scaled_font_get_type*(scaled_font: Pcairo_scaled_font_t): cairo_font_type_t{. +proc cairo_scaled_font_get_type*(scaled_font: PCairoScaledFont): TCairoFontType{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_scaled_font_get_user_data*(scaled_font: Pcairo_scaled_font_t, - key: Pcairo_user_data_key_t): Pointer{. +proc cairo_scaled_font_get_user_data*(scaled_font: PCairoScaledFont, + key: PCairoUserDataKey): Pointer{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_scaled_font_set_user_data*(scaled_font: Pcairo_scaled_font_t, - key: Pcairo_user_data_key_t, +proc cairo_scaled_font_set_user_data*(scaled_font: PCairoScaledFont, + key: PCairoUserDataKey, user_data: Pointer, - destroy: cairo_destroy_func_t): cairo_status_t{. + destroy: TCairoDestroyFunc): TCairoStatus{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_scaled_font_extents*(scaled_font: Pcairo_scaled_font_t, - extents: Pcairo_font_extents_t){.cdecl, importc, +proc cairo_scaled_font_extents*(scaled_font: PCairoScaledFont, + extents: PCairoFontExtents){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_scaled_font_text_extents*(scaled_font: Pcairo_scaled_font_t, +proc cairo_scaled_font_text_extents*(scaled_font: PCairoScaledFont, utf8: cstring, - extents: Pcairo_text_extents_t){.cdecl, importc, + extents: PCairoTextExtents){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_scaled_font_glyph_extents*(scaled_font: Pcairo_scaled_font_t, - glyphs: Pcairo_glyph_t, num_glyphs: int32, - extents: Pcairo_text_extents_t){.cdecl, importc, +proc cairo_scaled_font_glyph_extents*(scaled_font: PCairoScaledFont, + glyphs: PCairoGlyph, num_glyphs: int32, + extents: PCairoTextExtents){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_scaled_font_get_font_face*(scaled_font: Pcairo_scaled_font_t): Pcairo_font_face_t{. +proc cairo_scaled_font_get_font_face*(scaled_font: PCairoScaledFont): PCairoFontFace{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_scaled_font_get_font_matrix*(scaled_font: Pcairo_scaled_font_t, - font_matrix: Pcairo_matrix_t){.cdecl, importc, +proc cairo_scaled_font_get_font_matrix*(scaled_font: PCairoScaledFont, + font_matrix: PCairoMatrix){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_scaled_font_get_ctm*(scaled_font: Pcairo_scaled_font_t, - ctm: Pcairo_matrix_t){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_scaled_font_get_font_options*(scaled_font: Pcairo_scaled_font_t, - options: Pcairo_font_options_t){.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_scaled_font_get_ctm*(scaled_font: PCairoScaledFont, + ctm: PCairoMatrix){.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_scaled_font_get_font_options*(scaled_font: PCairoScaledFont, + options: PCairoFontOptions){.cdecl, importc, dynlib: LIB_CAIRO.} #* Query functions -proc cairo_get_operator*(cr: Pcairo_t): cairo_operator_t{.cdecl, importc, +proc cairo_get_operator*(cr: PCairo): TCairoOperator{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_get_source*(cr: Pcairo_t): Pcairo_pattern_t{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_get_tolerance*(cr: Pcairo_t): float64{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_get_antialias*(cr: Pcairo_t): cairo_antialias_t{.cdecl, importc, +proc cairo_get_source*(cr: PCairo): PCairoPattern{.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_get_tolerance*(cr: PCairo): float64{.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_get_antialias*(cr: PCairo): TCairoAntialias{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_get_current_point*(cr: Pcairo_t, x, y: var float64){.cdecl, importc, +proc cairo_get_current_point*(cr: PCairo, x, y: var float64){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_get_fill_rule*(cr: Pcairo_t): cairo_fill_rule_t{.cdecl, importc, +proc cairo_get_fill_rule*(cr: PCairo): TCairoFillRule{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_get_line_width*(cr: Pcairo_t): float64{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_get_line_cap*(cr: Pcairo_t): cairo_line_cap_t{.cdecl, importc, +proc cairo_get_line_width*(cr: PCairo): float64{.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_get_line_cap*(cr: PCairo): TCairoLineCap{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_get_line_join*(cr: Pcairo_t): cairo_line_join_t{.cdecl, importc, +proc cairo_get_line_join*(cr: PCairo): TCairoLineJoin{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_get_miter_limit*(cr: Pcairo_t): float64{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_get_dash_count*(cr: Pcairo_t): int32{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_get_dash*(cr: Pcairo_t, dashes, offset: var float64){.cdecl, importc, +proc cairo_get_miter_limit*(cr: PCairo): float64{.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_get_dash_count*(cr: PCairo): int32{.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_get_dash*(cr: PCairo, dashes, offset: var float64){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_get_matrix*(cr: Pcairo_t, matrix: Pcairo_matrix_t){.cdecl, importc, +proc cairo_get_matrix*(cr: PCairo, matrix: PCairoMatrix){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_get_target*(cr: Pcairo_t): Pcairo_surface_t{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_get_group_target*(cr: Pcairo_t): Pcairo_surface_t{.cdecl, importc, +proc cairo_get_target*(cr: PCairo): PCairoSurface{.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_get_group_target*(cr: PCairo): PCairoSurface{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_copy_path*(cr: Pcairo_t): Pcairo_path_t{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_copy_path_flat*(cr: Pcairo_t): Pcairo_path_t{.cdecl, importc, +proc cairo_copy_path*(cr: PCairo): PCairoPath{.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_copy_path_flat*(cr: PCairo): PCairoPath{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_append_path*(cr: Pcairo_t, path: Pcairo_path_t){.cdecl, importc, +proc cairo_append_path*(cr: PCairo, path: PCairoPath){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_path_destroy*(path: Pcairo_path_t){.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_path_destroy*(path: PCairoPath){.cdecl, importc, dynlib: LIB_CAIRO.} #* Error status queries -proc cairo_status*(cr: Pcairo_t): cairo_status_t{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_status_to_string*(status: cairo_status_t): cstring{.cdecl, importc, +proc cairo_status*(cr: PCairo): TCairoStatus{.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_status_to_string*(status: TCairoStatus): cstring{.cdecl, importc, dynlib: LIB_CAIRO.} #* Surface manipulation -proc cairo_surface_create_similar*(other: Pcairo_surface_t, - content: cairo_content_t, - width, height: int32): Pcairo_surface_t{. +proc cairo_surface_create_similar*(other: PCairoSurface, + content: TCairoContent, + width, height: int32): PCairoSurface{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_surface_reference*(surface: Pcairo_surface_t): Pcairo_surface_t{. +proc cairo_surface_reference*(surface: PCairoSurface): PCairoSurface{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_surface_finish*(surface: Pcairo_surface_t){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_surface_destroy*(surface: Pcairo_surface_t){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_surface_get_reference_count*(surface: Pcairo_surface_t): int32{. +proc cairo_surface_finish*(surface: PCairoSurface){.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_surface_destroy*(surface: PCairoSurface){.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_surface_get_reference_count*(surface: PCairoSurface): int32{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_surface_status*(surface: Pcairo_surface_t): cairo_status_t{.cdecl, importc, +proc cairo_surface_status*(surface: PCairoSurface): TCairoStatus{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_surface_get_type*(surface: Pcairo_surface_t): cairo_surface_type_t{. +proc cairo_surface_get_type*(surface: PCairoSurface): TCairoSurfaceType{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_surface_get_content*(surface: Pcairo_surface_t): cairo_content_t{. +proc cairo_surface_get_content*(surface: PCairoSurface): TCairoContent{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_surface_write_to_png*(surface: Pcairo_surface_t, filename: cstring): cairo_status_t{. +proc cairo_surface_write_to_png*(surface: PCairoSurface, filename: cstring): TCairoStatus{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_surface_write_to_png_stream*(surface: Pcairo_surface_t, - write_func: cairo_write_func_t, - closure: pointer): cairo_status_t{. +proc cairo_surface_write_to_png_stream*(surface: PCairoSurface, + write_func: TCairoWriteFunc, + closure: pointer): TCairoStatus{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_surface_get_user_data*(surface: Pcairo_surface_t, - key: Pcairo_user_data_key_t): pointer{.cdecl, importc, +proc cairo_surface_get_user_data*(surface: PCairoSurface, + key: PCairoUserDataKey): pointer{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_surface_set_user_data*(surface: Pcairo_surface_t, - key: Pcairo_user_data_key_t, +proc cairo_surface_set_user_data*(surface: PCairoSurface, + key: PCairoUserDataKey, user_data: pointer, - destroy: cairo_destroy_func_t): cairo_status_t{. + destroy: TCairoDestroyFunc): TCairoStatus{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_surface_get_font_options*(surface: Pcairo_surface_t, - options: Pcairo_font_options_t){.cdecl, importc, +proc cairo_surface_get_font_options*(surface: PCairoSurface, + options: PCairoFontOptions){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_surface_flush*(surface: Pcairo_surface_t){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_surface_mark_dirty*(surface: Pcairo_surface_t){.cdecl, importc, +proc cairo_surface_flush*(surface: PCairoSurface){.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_surface_mark_dirty*(surface: PCairoSurface){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_surface_mark_dirty_rectangle*(surface: Pcairo_surface_t, +proc cairo_surface_mark_dirty_rectangle*(surface: PCairoSurface, x, y, width, height: int32){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_surface_set_device_offset*(surface: Pcairo_surface_t, +proc cairo_surface_set_device_offset*(surface: PCairoSurface, x_offset, y_offset: float64){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_surface_get_device_offset*(surface: Pcairo_surface_t, +proc cairo_surface_get_device_offset*(surface: PCairoSurface, x_offset, y_offset: var float64){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_surface_set_fallback_resolution*(surface: Pcairo_surface_t, +proc cairo_surface_set_fallback_resolution*(surface: PCairoSurface, x_pixels_per_inch, y_pixels_per_inch: float64){.cdecl, importc, dynlib: LIB_CAIRO.} #* Image-surface functions -proc cairo_image_surface_create*(format: cairo_format_t, width, height: int32): Pcairo_surface_t{. +proc cairo_image_surface_create*(format: TCairoFormat, width, height: int32): PCairoSurface{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_image_surface_create_for_data*(data: Pbyte, format: cairo_format_t, - width, height, stride: int32): Pcairo_surface_t{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_image_surface_get_data*(surface: Pcairo_surface_t): cstring{.cdecl, importc, +proc cairo_image_surface_create_for_data*(data: Pbyte, format: TCairoFormat, + width, height, stride: int32): PCairoSurface{.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_image_surface_get_data*(surface: PCairoSurface): cstring{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_image_surface_get_format*(surface: Pcairo_surface_t): cairo_format_t{. +proc cairo_image_surface_get_format*(surface: PCairoSurface): TCairoFormat{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_image_surface_get_width*(surface: Pcairo_surface_t): int32{.cdecl, importc, +proc cairo_image_surface_get_width*(surface: PCairoSurface): int32{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_image_surface_get_height*(surface: Pcairo_surface_t): int32{.cdecl, importc, +proc cairo_image_surface_get_height*(surface: PCairoSurface): int32{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_image_surface_get_stride*(surface: Pcairo_surface_t): int32{.cdecl, importc, +proc cairo_image_surface_get_stride*(surface: PCairoSurface): int32{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_image_surface_create_from_png*(filename: cstring): Pcairo_surface_t{. +proc cairo_image_surface_create_from_png*(filename: cstring): PCairoSurface{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_image_surface_create_from_png_stream*(read_func: cairo_read_func_t, - closure: pointer): Pcairo_surface_t{.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_image_surface_create_from_png_stream*(read_func: TCairoReadFunc, + closure: pointer): PCairoSurface{.cdecl, importc, dynlib: LIB_CAIRO.} #* Pattern creation functions -proc cairo_pattern_create_rgb*(red, green, blue: float64): Pcairo_pattern_t{. +proc cairo_pattern_create_rgb*(red, green, blue: float64): PCairoPattern{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_pattern_create_rgba*(red, green, blue, alpha: float64): Pcairo_pattern_t{. +proc cairo_pattern_create_rgba*(red, green, blue, alpha: float64): PCairoPattern{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_pattern_create_for_surface*(surface: Pcairo_surface_t): Pcairo_pattern_t{. +proc cairo_pattern_create_for_surface*(surface: PCairoSurface): PCairoPattern{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_pattern_create_linear*(x0, y0, x1, y1: float64): Pcairo_pattern_t{. +proc cairo_pattern_create_linear*(x0, y0, x1, y1: float64): PCairoPattern{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_pattern_create_radial*(cx0, cy0, radius0, cx1, cy1, radius1: float64): Pcairo_pattern_t{. +proc cairo_pattern_create_radial*(cx0, cy0, radius0, cx1, cy1, radius1: float64): PCairoPattern{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_pattern_reference*(pattern: Pcairo_pattern_t): Pcairo_pattern_t{. +proc cairo_pattern_reference*(pattern: PCairoPattern): PCairoPattern{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_pattern_destroy*(pattern: Pcairo_pattern_t){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_pattern_get_reference_count*(pattern: Pcairo_pattern_t): int32{. +proc cairo_pattern_destroy*(pattern: PCairoPattern){.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_pattern_get_reference_count*(pattern: PCairoPattern): int32{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_pattern_status*(pattern: Pcairo_pattern_t): cairo_status_t{.cdecl, importc, +proc cairo_pattern_status*(pattern: PCairoPattern): TCairoStatus{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_pattern_get_user_data*(pattern: Pcairo_pattern_t, - key: Pcairo_user_data_key_t): Pointer{.cdecl, importc, +proc cairo_pattern_get_user_data*(pattern: PCairoPattern, + key: PCairoUserDataKey): Pointer{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_pattern_set_user_data*(pattern: Pcairo_pattern_t, - key: Pcairo_user_data_key_t, +proc cairo_pattern_set_user_data*(pattern: PCairoPattern, + key: PCairoUserDataKey, user_data: Pointer, - destroy: cairo_destroy_func_t): cairo_status_t{. + destroy: TCairoDestroyFunc): TCairoStatus{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_pattern_get_type*(pattern: Pcairo_pattern_t): cairo_pattern_type_t{. +proc cairo_pattern_get_type*(pattern: PCairoPattern): TCairoPatternType{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_pattern_add_color_stop_rgb*(pattern: Pcairo_pattern_t, +proc cairo_pattern_add_color_stop_rgb*(pattern: PCairoPattern, offset, red, green, blue: float64){. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_pattern_add_color_stop_rgba*(pattern: Pcairo_pattern_t, offset, red, +proc cairo_pattern_add_color_stop_rgba*(pattern: PCairoPattern, offset, red, green, blue, alpha: float64){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_pattern_set_matrix*(pattern: Pcairo_pattern_t, - matrix: Pcairo_matrix_t){.cdecl, importc, +proc cairo_pattern_set_matrix*(pattern: PCairoPattern, + matrix: PCairoMatrix){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_pattern_get_matrix*(pattern: Pcairo_pattern_t, - matrix: Pcairo_matrix_t){.cdecl, importc, +proc cairo_pattern_get_matrix*(pattern: PCairoPattern, + matrix: PCairoMatrix){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_pattern_set_extend*(pattern: Pcairo_pattern_t, extend: cairo_extend_t){. +proc cairo_pattern_set_extend*(pattern: PCairoPattern, extend: TCairoExtend){. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_pattern_get_extend*(pattern: Pcairo_pattern_t): cairo_extend_t{. +proc cairo_pattern_get_extend*(pattern: PCairoPattern): TCairoExtend{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_pattern_set_filter*(pattern: Pcairo_pattern_t, filter: cairo_filter_t){. +proc cairo_pattern_set_filter*(pattern: PCairoPattern, filter: TCairoFilter){. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_pattern_get_filter*(pattern: Pcairo_pattern_t): cairo_filter_t{. +proc cairo_pattern_get_filter*(pattern: PCairoPattern): TCairoFilter{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_pattern_get_rgba*(pattern: Pcairo_pattern_t, - red, green, blue, alpha: var float64): cairo_status_t{. +proc cairo_pattern_get_rgba*(pattern: PCairoPattern, + red, green, blue, alpha: var float64): TCairoStatus{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_pattern_get_surface*(pattern: Pcairo_pattern_t, - surface: PPcairo_surface_t): cairo_status_t{. +proc cairo_pattern_get_surface*(pattern: PCairoPattern, + surface: PPCairoSurface): TCairoStatus{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_pattern_get_color_stop_rgba*(pattern: Pcairo_pattern_t, index: int32, - offset, red, green, blue, alpha: var float64): cairo_status_t{.cdecl, importc, +proc cairo_pattern_get_color_stop_rgba*(pattern: PCairoPattern, index: int32, + offset, red, green, blue, alpha: var float64): TCairoStatus{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_pattern_get_color_stop_count*(pattern: Pcairo_pattern_t, - count: var int32): cairo_status_t{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_pattern_get_linear_points*(pattern: Pcairo_pattern_t, - x0, y0, x1, y1: var float64): cairo_status_t{. +proc cairo_pattern_get_color_stop_count*(pattern: PCairoPattern, + count: var int32): TCairoStatus{.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_pattern_get_linear_points*(pattern: PCairoPattern, + x0, y0, x1, y1: var float64): TCairoStatus{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_pattern_get_radial_circles*(pattern: Pcairo_pattern_t, - x0, y0, r0, x1, y1, r1: var float64): cairo_status_t{. +proc cairo_pattern_get_radial_circles*(pattern: PCairoPattern, + x0, y0, r0, x1, y1, r1: var float64): TCairoStatus{. cdecl, importc, dynlib: LIB_CAIRO.} #* Matrix functions -proc cairo_matrix_init*(matrix: Pcairo_matrix_t, xx, yx, xy, yy, x0, y0: float64){. +proc cairo_matrix_init*(matrix: PCairoMatrix, xx, yx, xy, yy, x0, y0: float64){. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_matrix_init_identity*(matrix: Pcairo_matrix_t){.cdecl, importc, +proc cairo_matrix_init_identity*(matrix: PCairoMatrix){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_matrix_init_translate*(matrix: Pcairo_matrix_t, tx, ty: float64){. +proc cairo_matrix_init_translate*(matrix: PCairoMatrix, tx, ty: float64){. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_matrix_init_scale*(matrix: Pcairo_matrix_t, sx, sy: float64){.cdecl, importc, +proc cairo_matrix_init_scale*(matrix: PCairoMatrix, sx, sy: float64){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_matrix_init_rotate*(matrix: Pcairo_matrix_t, radians: float64){. +proc cairo_matrix_init_rotate*(matrix: PCairoMatrix, radians: float64){. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_matrix_translate*(matrix: Pcairo_matrix_t, tx, ty: float64){.cdecl, importc, +proc cairo_matrix_translate*(matrix: PCairoMatrix, tx, ty: float64){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_matrix_scale*(matrix: Pcairo_matrix_t, sx, sy: float64){.cdecl, importc, +proc cairo_matrix_scale*(matrix: PCairoMatrix, sx, sy: float64){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_matrix_rotate*(matrix: Pcairo_matrix_t, radians: float64){.cdecl, importc, +proc cairo_matrix_rotate*(matrix: PCairoMatrix, radians: float64){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_matrix_invert*(matrix: Pcairo_matrix_t): cairo_status_t{.cdecl, importc, +proc cairo_matrix_invert*(matrix: PCairoMatrix): TCairoStatus{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_matrix_multiply*(result, a, b: Pcairo_matrix_t){.cdecl, importc, +proc cairo_matrix_multiply*(result, a, b: PCairoMatrix){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_matrix_transform_distance*(matrix: Pcairo_matrix_t, dx, dy: var float64){. +proc cairo_matrix_transform_distance*(matrix: PCairoMatrix, dx, dy: var float64){. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_matrix_transform_point*(matrix: Pcairo_matrix_t, x, y: var float64){. +proc cairo_matrix_transform_point*(matrix: PCairoMatrix, x, y: var float64){. cdecl, importc, dynlib: LIB_CAIRO.} #* PDF functions proc cairo_pdf_surface_create*(filename: cstring, - width_in_points, height_in_points: float64): Pcairo_surface_t{. + width_in_points, height_in_points: float64): PCairoSurface{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_pdf_surface_create_for_stream*(write_func: cairo_write_func_t, - closure: Pointer, width_in_points, height_in_points: float64): Pcairo_surface_t{. +proc cairo_pdf_surface_create_for_stream*(write_func: TCairoWriteFunc, + closure: Pointer, width_in_points, height_in_points: float64): PCairoSurface{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_pdf_surface_set_size*(surface: Pcairo_surface_t, +proc cairo_pdf_surface_set_size*(surface: PCairoSurface, width_in_points, height_in_points: float64){. cdecl, importc, dynlib: LIB_CAIRO.} #* PS functions proc cairo_ps_surface_create*(filename: cstring, - width_in_points, height_in_points: float64): Pcairo_surface_t{. + width_in_points, height_in_points: float64): PCairoSurface{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_ps_surface_create_for_stream*(write_func: cairo_write_func_t, - closure: Pointer, width_in_points, height_in_points: float64): Pcairo_surface_t{. +proc cairo_ps_surface_create_for_stream*(write_func: TCairoWriteFunc, + closure: Pointer, width_in_points, height_in_points: float64): PCairoSurface{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_ps_surface_set_size*(surface: Pcairo_surface_t, +proc cairo_ps_surface_set_size*(surface: PCairoSurface, width_in_points, height_in_points: float64){. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_ps_surface_dsc_comment*(surface: Pcairo_surface_t, comment: cstring){. +proc cairo_ps_surface_dsc_comment*(surface: PCairoSurface, comment: cstring){. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_ps_surface_dsc_begin_setup*(surface: Pcairo_surface_t){.cdecl, importc, +proc cairo_ps_surface_dsc_begin_setup*(surface: PCairoSurface){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_ps_surface_dsc_begin_page_setup*(surface: Pcairo_surface_t){.cdecl, importc, +proc cairo_ps_surface_dsc_begin_page_setup*(surface: PCairoSurface){.cdecl, importc, dynlib: LIB_CAIRO.} #* SVG functions proc cairo_svg_surface_create*(filename: cstring, - width_in_points, height_in_points: float64): Pcairo_surface_t{. + width_in_points, height_in_points: float64): PCairoSurface{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_svg_surface_create_for_stream*(write_func: cairo_write_func_t, - closure: Pointer, width_in_points, height_in_points: float64): Pcairo_surface_t{. +proc cairo_svg_surface_create_for_stream*(write_func: TCairoWriteFunc, + closure: Pointer, width_in_points, height_in_points: float64): PCairoSurface{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_svg_surface_restrict_to_version*(surface: Pcairo_surface_t, - version: cairo_svg_version_t){.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_svg_surface_restrict_to_version*(surface: PCairoSurface, + version: TCairoSvgVersion){.cdecl, importc, dynlib: LIB_CAIRO.} #todo: see how translate this - #procedure cairo_svg_get_versions(cairo_svg_version_t const **versions, + #procedure cairo_svg_get_versions(TCairoSvgVersion const **versions, # int *num_versions); -proc cairo_svg_version_to_string*(version: cairo_svg_version_t): cstring{.cdecl, importc, +proc cairo_svg_version_to_string*(version: TCairoSvgVersion): cstring{.cdecl, importc, dynlib: LIB_CAIRO.} #* Functions to be used while debugging (not intended for use in production code) proc cairo_debug_reset_static_data*(){.cdecl, importc, dynlib: LIB_CAIRO.} @@ -693,6 +693,6 @@ proc cairo_debug_reset_static_data*(){.cdecl, importc, dynlib: LIB_CAIRO.} proc cairo_version(major, minor, micro: var int32) = var version: int32 version = cairo_version() - major = version div 10000 - minor = (version mod (major * 10000)) div 100 - micro = (version mod ((major * 10000) + (minor * 100))) + major = version div 10000'i32 + minor = (version mod (major * 10000'i32)) div 100'i32 + micro = (version mod ((major * 10000'i32) + (minor * 100'i32))) diff --git a/lib/base/cairo/cairoft.nim b/lib/base/cairo/cairoft.nim index c564d1afa..2418aa922 100644 --- a/lib/base/cairo/cairoft.nim +++ b/lib/base/cairo/cairoft.nim @@ -4,7 +4,7 @@ # updated to version 1.4 by Luiz Américo Pereira Câmara 2007 # -import Cairo, freetypeh +import cairo, freetypeh #todo: properly define FcPattern: #It will require translate FontConfig header @@ -20,17 +20,17 @@ import Cairo, freetypeh type FcPattern* = Pointer - PFcPattern* = ref FcPattern + PFcPattern* = ptr FcPattern -proc cairo_ft_font_face_create_for_pattern*(pattern: PFcPattern): Pcairo_font_face_t{. +proc cairo_ft_font_face_create_for_pattern*(pattern: PFcPattern): PCairoFontFace{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_ft_font_options_substitute*(options: Pcairo_font_options_t, +proc cairo_ft_font_options_substitute*(options: PCairoFontOptions, pattern: PFcPattern){.cdecl, importc, dynlib: LIB_CAIRO.} proc cairo_ft_font_face_create_for_ft_face*(face: TFT_Face, - load_flags: int32): Pcairo_font_face_t {.cdecl, importc, dynlib: LIB_CAIRO.} + load_flags: int32): PCairoFontFace {.cdecl, importc, dynlib: LIB_CAIRO.} proc cairo_ft_scaled_font_lock_face*( - scaled_font: Pcairo_scaled_font_t): TFT_Face{.cdecl, importc, dynlib: LIB_CAIRO.} + scaled_font: PCairoScaledFont): TFT_Face{.cdecl, importc, dynlib: LIB_CAIRO.} proc cairo_ft_scaled_font_unlock_face*( - scaled_font: Pcairo_scaled_font_t){.cdecl, importc, dynlib: LIB_CAIRO.} + scaled_font: PCairoScaledFont){.cdecl, importc, dynlib: LIB_CAIRO.} diff --git a/lib/base/cairo/cairowin32.nim b/lib/base/cairo/cairowin32.nim index cbd1a6d4c..5d07c2611 100644 --- a/lib/base/cairo/cairowin32.nim +++ b/lib/base/cairo/cairowin32.nim @@ -7,30 +7,30 @@ import Cairo, windows -proc cairo_win32_surface_create*(hdc: HDC): Pcairo_surface_t{.cdecl, importc, +proc cairo_win32_surface_create*(hdc: HDC): PCairoSurface{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_win32_surface_create_with_ddb*(hdc: HDC, format: cairo_format_t, - width, height: int32): Pcairo_surface_t{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_win32_surface_create_with_dib*(format: cairo_format_t, - width, height: int32): Pcairo_surface_t{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_win32_surface_get_dc*(surface: pcairo_surface_t): HDC{.cdecl, importc, +proc cairo_win32_surface_create_with_ddb*(hdc: HDC, format: TCairoFormat, + width, height: int32): PCairoSurface{.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_win32_surface_create_with_dib*(format: TCairoFormat, + width, height: int32): PCairoSurface{.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_win32_surface_get_dc*(surface: PCairoSurface): HDC{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_win32_surface_get_image*(surface: pcairo_surface_t): Pcairo_surface_t{. +proc cairo_win32_surface_get_image*(surface: PCairoSurface): PCairoSurface{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_win32_font_face_create_for_logfontw*(logfont: pLOGFONTW): Pcairo_font_face_t{. +proc cairo_win32_font_face_create_for_logfontw*(logfont: pLOGFONTW): PCairoFontFace{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_win32_font_face_create_for_hfont*(font: HFONT): Pcairo_font_face_t{. +proc cairo_win32_font_face_create_for_hfont*(font: HFONT): PCairoFontFace{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_win32_scaled_font_select_font*(scaled_font: pcairo_scaled_font_t, - hdc: HDC): cairo_status_t{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_win32_scaled_font_done_font*(scaled_font: pcairo_scaled_font_t){. +proc cairo_win32_scaled_font_select_font*(scaled_font: PCairoScaledFont, + hdc: HDC): TCairoStatus{.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_win32_scaled_font_done_font*(scaled_font: PCairoScaledFont){. cdecl, importc, dynlib: LIB_CAIRO.} proc cairo_win32_scaled_font_get_metrics_factor*( - scaled_font: pcairo_scaled_font_t): float64{.cdecl, importc, dynlib: LIB_CAIRO.} + scaled_font: PCairoScaledFont): float64{.cdecl, importc, dynlib: LIB_CAIRO.} proc cairo_win32_scaled_font_get_logical_to_device*( - scaled_font: pcairo_scaled_font_t, logical_to_device: pcairo_matrix_t){. + scaled_font: PCairoScaledFont, logical_to_device: PCairoMatrix){. cdecl, importc, dynlib: LIB_CAIRO.} proc cairo_win32_scaled_font_get_device_to_logical*( - scaled_font: pcairo_scaled_font_t, device_to_logical: pcairo_matrix_t){. + scaled_font: PCairoScaledFont, device_to_logical: PCairoMatrix){. cdecl, importc, dynlib: LIB_CAIRO.} # implementation diff --git a/lib/base/cairo/cairoxlib.nim b/lib/base/cairo/cairoxlib.nim index 61a9fb283..dfe44eb87 100644 --- a/lib/base/cairo/cairoxlib.nim +++ b/lib/base/cairo/cairoxlib.nim @@ -9,32 +9,32 @@ import Cairo, x, xlib, xrender proc cairo_xlib_surface_create*(dpy: PDisplay, drawable: TDrawable, - visual: PVisual, width, height: int32): Pcairo_surface_t{. + visual: PVisual, width, height: int32): PCairoSurface{. cdecl, importc, dynlib: LIB_CAIRO.} proc cairo_xlib_surface_create_for_bitmap*(dpy: PDisplay, bitmap: TPixmap, - screen: PScreen, width, height: int32): Pcairo_surface_t{.cdecl, importc, + screen: PScreen, width, height: int32): PCairoSurface{.cdecl, importc, dynlib: LIB_CAIRO.} proc cairo_xlib_surface_create_with_xrender_format*(dpy: PDisplay, drawable: TDrawable, screen: PScreen, format: PXRenderPictFormat, - width, height: int32): Pcairo_surface_t{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_xlib_surface_get_depth*(surface: Pcairo_surface_t): int32{.cdecl, importc, + width, height: int32): PCairoSurface{.cdecl, importc, dynlib: LIB_CAIRO.} +proc cairo_xlib_surface_get_depth*(surface: PCairoSurface): int32{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_xlib_surface_get_display*(surface: Pcairo_surface_t): PDisplay{. +proc cairo_xlib_surface_get_display*(surface: PCairoSurface): PDisplay{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_xlib_surface_get_drawable*(surface: Pcairo_surface_t): TDrawable{. +proc cairo_xlib_surface_get_drawable*(surface: PCairoSurface): TDrawable{. cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_xlib_surface_get_height*(surface: Pcairo_surface_t): int32{.cdecl, importc, +proc cairo_xlib_surface_get_height*(surface: PCairoSurface): int32{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_xlib_surface_get_screen*(surface: Pcairo_surface_t): PScreen{.cdecl, importc, +proc cairo_xlib_surface_get_screen*(surface: PCairoSurface): PScreen{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_xlib_surface_get_visual*(surface: Pcairo_surface_t): PVisual{.cdecl, importc, +proc cairo_xlib_surface_get_visual*(surface: PCairoSurface): PVisual{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_xlib_surface_get_width*(surface: Pcairo_surface_t): int32{.cdecl, importc, +proc cairo_xlib_surface_get_width*(surface: PCairoSurface): int32{.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_xlib_surface_set_size*(surface: Pcairo_surface_t, +proc cairo_xlib_surface_set_size*(surface: PCairoSurface, width, height: int32){.cdecl, importc, dynlib: LIB_CAIRO.} -proc cairo_xlib_surface_set_drawable*(surface: Pcairo_surface_t, +proc cairo_xlib_surface_set_drawable*(surface: PCairoSurface, drawable: TDrawable, width, height: int32){. cdecl, importc, dynlib: LIB_CAIRO.} # implementation diff --git a/lib/base/dialogs.nim b/lib/base/dialogs.nim index cd9c7c6b8..144283a69 100644 --- a/lib/base/dialogs.nim +++ b/lib/base/dialogs.nim @@ -90,7 +90,7 @@ proc ChooseFileToOpen*(window: PWindow, root: string = ""): string = GTK_STOCK_OPEN, GTK_RESPONSE_OK, nil)) if root.len > 0: discard gtk_file_chooser_set_current_folder(chooser, root) - if gtk_dialog_run(chooser) == GTK_RESPONSE_OK: + if gtk_dialog_run(chooser) == cint(GTK_RESPONSE_OK): var x = gtk_file_chooser_get_filename(chooser) result = $x g_free(x) @@ -99,7 +99,7 @@ proc ChooseFileToOpen*(window: PWindow, root: string = ""): string = gtk_widget_destroy(chooser) proc ChooseFilesToOpen*(window: PWindow, root: string = ""): seq[string] = - ## Opens a dialog that requests filenames from the user. Returns [] + ## Opens a dialog that requests filenames from the user. Returns ``@[]`` ## if the user closed the dialog without selecting a file. On Windows, ## the native dialog is used, else the GTK dialog is used. when defined(Windows): @@ -114,7 +114,7 @@ proc ChooseFilesToOpen*(window: PWindow, root: string = ""): seq[string] = opf.lpstrFile = buf opf.nMaxFile = sizeof(buf) var res = GetOpenFileName(addr(opf)) - result = [] + result = @[] if res != 0: # parsing the result is horrible: var @@ -145,8 +145,8 @@ proc ChooseFilesToOpen*(window: PWindow, root: string = ""): seq[string] = if root.len > 0: discard gtk_file_chooser_set_current_folder(chooser, root) gtk_file_chooser_set_select_multiple(chooser, true) - result = [] - if gtk_dialog_run(chooser) == GTK_RESPONSE_OK: + result = @[] + if gtk_dialog_run(chooser) == cint(GTK_RESPONSE_OK): var L = gtk_file_chooser_get_filenames(chooser) var it = L while it != nil: @@ -187,7 +187,7 @@ proc ChooseFileToSave*(window: PWindow, root: string = ""): string = if root.len > 0: discard gtk_file_chooser_set_current_folder(chooser, root) gtk_file_chooser_set_do_overwrite_confirmation(chooser, true) - if gtk_dialog_run(chooser) == GTK_RESPONSE_OK: + if gtk_dialog_run(chooser) == cint(GTK_RESPONSE_OK): var x = gtk_file_chooser_get_filename(chooser) result = $x g_free(x) @@ -224,7 +224,7 @@ proc ChooseDir*(window: PWindow, root: string = ""): string = GTK_STOCK_OPEN, GTK_RESPONSE_OK, nil)) if root.len > 0: discard gtk_file_chooser_set_current_folder(chooser, root) - if gtk_dialog_run(chooser) == GTK_RESPONSE_OK: + if gtk_dialog_run(chooser) == cint(GTK_RESPONSE_OK): var x = gtk_file_chooser_get_filename(chooser) result = $x g_free(x) diff --git a/lib/base/gtk/atk.nim b/lib/base/gtk/atk.nim index 96fde8af6..84017bf03 100644 --- a/lib/base/gtk/atk.nim +++ b/lib/base/gtk/atk.nim @@ -2,7 +2,6 @@ import glib2 when defined(windows): - {.define: atkwin.} const atklib = "libatk-1.0-0.dll" else: diff --git a/lib/base/gtk/gdk2.nim b/lib/base/gtk/gdk2.nim index 621a64bca..497f5619f 100644 --- a/lib/base/gtk/gdk2.nim +++ b/lib/base/gtk/gdk2.nim @@ -1,13 +1,12 @@ -import +import glib2, gdk2pixbuf, pango -when defined(win32): - {.define: GDK_WINDOWING_WIN32.} - const +when defined(win32): + const gdklib = "libgdk-win32-2.0-0.dll" GDK_HAVE_WCHAR_H = 1 GDK_HAVE_WCTYPE_H = 1 -elif defined(darwin): +elif defined(darwin): # linklib gtk-x11-2.0 # linklib gdk-x11-2.0 # linklib pango-1.0.0 @@ -15,16 +14,16 @@ elif defined(darwin): # linklib gobject-2.0.0 # linklib gdk_pixbuf-2.0.0 # linklib atk-1.0.0 - const + const gdklib = "gdk-x11-2.0" -else: - const +else: + const gdklib = "libgdk-x11-2.0.so" -const +const NUMPTSTOBUFFER* = 200 GDK_MAX_TIMECOORD_AXES* = 128 -type +type PGdkDeviceClass* = ptr TGdkDeviceClass TGdkDeviceClass* = object of TGObjectClass @@ -32,7 +31,7 @@ type TGdkVisualClass* = object of TGObjectClass PGdkColor* = ptr TGdkColor - TGdkColor* {.final.} = object + TGdkColor* {.final.} = object pixel*: guint32 red*: guint16 green*: guint16 @@ -49,37 +48,37 @@ type PGdkBitmap* = ptr TGdkBitmap TGdkBitmap* = TGdkDrawable PGdkFontType* = ptr TGdkFontType - TGdkFontType* = enum + TGdkFontType* = enum GDK_FONT_FONT, GDK_FONT_FONTSET PGdkFont* = ptr TGdkFont - TGdkFont* {.final.} = object + TGdkFont* {.final.} = object `type`*: TGdkFontType ascent*: gint descent*: gint PGdkFunction* = ptr TGdkFunction - TGdkFunction* = enum - GDK_COPY, GDK_INVERT, GDK_XOR, GDK_CLEAR, GDK_AND, GDK_AND_REVERSE, - GDK_AND_INVERT, GDK_NOOP, GDK_OR, GDK_EQUIV, GDK_OR_REVERSE, + TGdkFunction* = enum + GDK_COPY, GDK_INVERT, GDK_XOR, GDK_CLEAR, GDK_AND, GDK_AND_REVERSE, + GDK_AND_INVERT, GDK_NOOP, GDK_OR, GDK_EQUIV, GDK_OR_REVERSE, GDK_COPY_INVERT, GDK_OR_INVERT, GDK_NAND, GDK_NOR, GDK_SET PGdkCapStyle* = ptr TGdkCapStyle - TGdkCapStyle* = enum + TGdkCapStyle* = enum GDK_CAP_NOT_LAST, GDK_CAP_BUTT, GDK_CAP_ROUND, GDK_CAP_PROJECTING PGdkFill* = ptr TGdkFill - TGdkFill* = enum + TGdkFill* = enum GDK_SOLID, GDK_TILED, GDK_STIPPLED, GDK_OPAQUE_STIPPLED PGdkJoinStyle* = ptr TGdkJoinStyle - TGdkJoinStyle* = enum + TGdkJoinStyle* = enum GDK_JOIN_MITER, GDK_JOIN_ROUND, GDK_JOIN_BEVEL PGdkLineStyle* = ptr TGdkLineStyle - TGdkLineStyle* = enum + TGdkLineStyle* = enum GDK_LINE_SOLID, GDK_LINE_ON_OFF_DASH, GDK_LINE_DOUBLE_DASH PGdkSubwindowMode* = ptr TGdkSubwindowMode TGdkSubwindowMode* = int PGdkGCValuesMask* = ptr TGdkGCValuesMask TGdkGCValuesMask* = int32 PGdkGCValues* = ptr TGdkGCValues - TGdkGCValues* {.final.} = object + TGdkGCValues* {.final.} = object foreground*: TGdkColor background*: TGdkColor font*: PGdkFont @@ -108,14 +107,14 @@ type colormap*: PGdkColormap PGdkImageType* = ptr TGdkImageType - TGdkImageType* = enum + TGdkImageType* = enum GDK_IMAGE_NORMAL, GDK_IMAGE_SHARED, GDK_IMAGE_FASTEST PGdkImage* = ptr TGdkImage PGdkDevice* = ptr TGdkDevice PGdkTimeCoord* = ptr TGdkTimeCoord PPGdkTimeCoord* = ptr PGdkTimeCoord PGdkRgbDither* = ptr TGdkRgbDither - TGdkRgbDither* = enum + TGdkRgbDither* = enum GDK_RGB_DITHER_NONE, GDK_RGB_DITHER_NORMAL, GDK_RGB_DITHER_MAX PGdkDisplay* = ptr TGdkDisplay PGdkScreen* = ptr TGdkScreen @@ -125,7 +124,7 @@ type TGdkInputCondition* = int32 PGdkStatus* = ptr TGdkStatus TGdkStatus* = int32 - TGdkPoint* {.final.} = object + TGdkPoint* {.final.} = object x*: gint y*: gint @@ -135,14 +134,14 @@ type PGdkWChar* = ptr TGdkWChar TGdkWChar* = guint32 PGdkSegment* = ptr TGdkSegment - TGdkSegment* {.final.} = object + TGdkSegment* {.final.} = object x1*: gint y1*: gint x2*: gint y2*: gint PGdkRectangle* = ptr TGdkRectangle - TGdkRectangle* {.final.} = object + TGdkRectangle* {.final.} = object x*: gint y*: gint width*: gint @@ -151,13 +150,13 @@ type PGdkAtom* = ptr TGdkAtom TGdkAtom* = gulong PGdkByteOrder* = ptr TGdkByteOrder - TGdkByteOrder* = enum + TGdkByteOrder* = enum GDK_LSB_FIRST, GDK_MSB_FIRST PGdkModifierType* = ptr TGdkModifierType TGdkModifierType* = gint PGdkVisualType* = ptr TGdkVisualType - TGdkVisualType* = enum - GDK_VISUAL_STATIC_GRAY, GDK_VISUAL_GRAYSCALE, GDK_VISUAL_STATIC_COLOR, + TGdkVisualType* = enum + GDK_VISUAL_STATIC_GRAY, GDK_VISUAL_GRAYSCALE, GDK_VISUAL_STATIC_COLOR, GDK_VISUAL_PSEUDO_COLOR, GDK_VISUAL_TRUE_COLOR, GDK_VISUAL_DIRECT_COLOR PGdkVisual* = ptr TGdkVisual TGdkVisual* = object of TGObject @@ -190,16 +189,16 @@ type PGdkCursorType* = ptr TGdkCursorType TGdkCursorType* = gint PGdkCursor* = ptr TGdkCursor - TGdkCursor* {.final.} = object + TGdkCursor* {.final.} = object `type`*: TGdkCursorType ref_count*: guint PGdkDragAction* = ptr TGdkDragAction TGdkDragAction* = int32 PGdkDragProtocol* = ptr TGdkDragProtocol - TGdkDragProtocol* = enum - GDK_DRAG_PROTO_MOTIF, GDK_DRAG_PROTO_XDND, GDK_DRAG_PROTO_ROOTWIN, - GDK_DRAG_PROTO_NONE, GDK_DRAG_PROTO_WIN32_DROPFILES, GDK_DRAG_PROTO_OLE2, + TGdkDragProtocol* = enum + GDK_DRAG_PROTO_MOTIF, GDK_DRAG_PROTO_XDND, GDK_DRAG_PROTO_ROOTWIN, + GDK_DRAG_PROTO_NONE, GDK_DRAG_PROTO_WIN32_DROPFILES, GDK_DRAG_PROTO_OLE2, GDK_DRAG_PROTO_LOCAL PGdkDragContext* = ptr TGdkDragContext TGdkDragContext* = object of TGObject @@ -220,46 +219,46 @@ type PGdkRegionBox* = ptr TGdkRegionBox TGdkRegionBox* = TGdkSegment PGdkRegion* = ptr TGdkRegion - TGdkRegion* {.final.} = object + TGdkRegion* {.final.} = object size*: int32 numRects*: int32 rects*: PGdkRegionBox extents*: TGdkRegionBox PPOINTBLOCK* = ptr TPOINTBLOCK - TPOINTBLOCK* {.final.} = object + TPOINTBLOCK* {.final.} = object pts*: array[0..(NUMPTSTOBUFFER) - 1, TGdkPoint] next*: PPOINTBLOCK PGdkDrawableClass* = ptr TGdkDrawableClass TGdkDrawableClass* = object of TGObjectClass - create_gc*: proc (drawable: PGdkDrawable, values: PGdkGCValues, + create_gc*: proc (drawable: PGdkDrawable, values: PGdkGCValues, mask: TGdkGCValuesMask): PGdkGC{.cdecl.} - draw_rectangle*: proc (drawable: PGdkDrawable, gc: PGdkGC, filled: gint, + draw_rectangle*: proc (drawable: PGdkDrawable, gc: PGdkGC, filled: gint, x: gint, y: gint, width: gint, height: gint){.cdecl.} - draw_arc*: proc (drawable: PGdkDrawable, gc: PGdkGC, filled: gint, x: gint, - y: gint, width: gint, height: gint, angle1: gint, + draw_arc*: proc (drawable: PGdkDrawable, gc: PGdkGC, filled: gint, x: gint, + y: gint, width: gint, height: gint, angle1: gint, angle2: gint){.cdecl.} - draw_polygon*: proc (drawable: PGdkDrawable, gc: PGdkGC, filled: gint, + draw_polygon*: proc (drawable: PGdkDrawable, gc: PGdkGC, filled: gint, points: PGdkPoint, npoints: gint){.cdecl.} - draw_text*: proc (drawable: PGdkDrawable, font: PGdkFont, gc: PGdkGC, + draw_text*: proc (drawable: PGdkDrawable, font: PGdkFont, gc: PGdkGC, x: gint, y: gint, text: cstring, text_length: gint){.cdecl.} - draw_text_wc*: proc (drawable: PGdkDrawable, font: PGdkFont, gc: PGdkGC, + draw_text_wc*: proc (drawable: PGdkDrawable, font: PGdkFont, gc: PGdkGC, x: gint, y: gint, text: PGdkWChar, text_length: gint){. cdecl.} - draw_drawable*: proc (drawable: PGdkDrawable, gc: PGdkGC, src: PGdkDrawable, - xsrc: gint, ysrc: gint, xdest: gint, ydest: gint, + draw_drawable*: proc (drawable: PGdkDrawable, gc: PGdkGC, src: PGdkDrawable, + xsrc: gint, ysrc: gint, xdest: gint, ydest: gint, width: gint, height: gint){.cdecl.} - draw_points*: proc (drawable: PGdkDrawable, gc: PGdkGC, points: PGdkPoint, + draw_points*: proc (drawable: PGdkDrawable, gc: PGdkGC, points: PGdkPoint, npoints: gint){.cdecl.} - draw_segments*: proc (drawable: PGdkDrawable, gc: PGdkGC, segs: PGdkSegment, + draw_segments*: proc (drawable: PGdkDrawable, gc: PGdkGC, segs: PGdkSegment, nsegs: gint){.cdecl.} - draw_lines*: proc (drawable: PGdkDrawable, gc: PGdkGC, points: PGdkPoint, + draw_lines*: proc (drawable: PGdkDrawable, gc: PGdkGC, points: PGdkPoint, npoints: gint){.cdecl.} - draw_glyphs*: proc (drawable: PGdkDrawable, gc: PGdkGC, font: PPangoFont, + draw_glyphs*: proc (drawable: PGdkDrawable, gc: PGdkGC, font: PPangoFont, x: gint, y: gint, glyphs: PPangoGlyphString){.cdecl.} - draw_image*: proc (drawable: PGdkDrawable, gc: PGdkGC, image: PGdkImage, - xsrc: gint, ysrc: gint, xdest: gint, ydest: gint, + draw_image*: proc (drawable: PGdkDrawable, gc: PGdkGC, image: PGdkImage, + xsrc: gint, ysrc: gint, xdest: gint, ydest: gint, width: gint, height: gint){.cdecl.} get_depth*: proc (drawable: PGdkDrawable): gint{.cdecl.} get_size*: proc (drawable: PGdkDrawable, width: Pgint, height: Pgint){.cdecl.} @@ -267,22 +266,22 @@ type get_colormap*: proc (drawable: PGdkDrawable): PGdkColormap{.cdecl.} get_visual*: proc (drawable: PGdkDrawable): PGdkVisual{.cdecl.} get_screen*: proc (drawable: PGdkDrawable): PGdkScreen{.cdecl.} - get_image*: proc (drawable: PGdkDrawable, x: gint, y: gint, width: gint, + get_image*: proc (drawable: PGdkDrawable, x: gint, y: gint, width: gint, height: gint): PGdkImage{.cdecl.} get_clip_region*: proc (drawable: PGdkDrawable): PGdkRegion{.cdecl.} get_visible_region*: proc (drawable: PGdkDrawable): PGdkRegion{.cdecl.} - get_composite_drawable*: proc (drawable: PGdkDrawable, x: gint, y: gint, - width: gint, height: gint, - composite_x_offset: Pgint, + get_composite_drawable*: proc (drawable: PGdkDrawable, x: gint, y: gint, + width: gint, height: gint, + composite_x_offset: Pgint, composite_y_offset: Pgint): PGdkDrawable{. cdecl.} - `draw_pixbuf`*: proc (drawable: PGdkDrawable, gc: PGdkGC, - pixbuf: PGdkPixbuf, src_x: gint, src_y: gint, - dest_x: gint, dest_y: gint, width: gint, height: gint, + `draw_pixbuf`*: proc (drawable: PGdkDrawable, gc: PGdkGC, + pixbuf: PGdkPixbuf, src_x: gint, src_y: gint, + dest_x: gint, dest_y: gint, width: gint, height: gint, dither: TGdkRgbDither, x_dither: gint, y_dither: gint){. cdecl.} - `copy_to_image`*: proc (drawable: PGdkDrawable, image: PGdkImage, - src_x: gint, src_y: gint, dest_x: gint, + `copy_to_image`*: proc (drawable: PGdkDrawable, image: PGdkImage, + src_x: gint, src_y: gint, dest_x: gint, dest_y: gint, width: gint, height: gint): PGdkImage{. cdecl.} `gdk_reserved1`: proc (){.cdecl.} @@ -306,7 +305,7 @@ type PGdkXEvent* = ptr TGdkXEvent TGdkXEvent* = proc () PGdkFilterReturn* = ptr TGdkFilterReturn - TGdkFilterReturn* = enum + TGdkFilterReturn* = enum GDK_FILTER_CONTINUE, GDK_FILTER_TRANSLATE, GDK_FILTER_REMOVE TGdkFilterFunc* = proc (xevent: PGdkXEvent, event: PGdkEvent, data: gpointer): TGdkFilterReturn{. cdecl.} @@ -315,34 +314,34 @@ type PGdkEventMask* = ptr TGdkEventMask TGdkEventMask* = gint32 PGdkVisibilityState* = ptr TGdkVisibilityState - TGdkVisibilityState* = enum - GDK_VISIBILITY_UNOBSCURED, GDK_VISIBILITY_PARTIAL, + TGdkVisibilityState* = enum + GDK_VISIBILITY_UNOBSCURED, GDK_VISIBILITY_PARTIAL, GDK_VISIBILITY_FULLY_OBSCURED PGdkScrollDirection* = ptr TGdkScrollDirection - TGdkScrollDirection* = enum + TGdkScrollDirection* = enum GDK_SCROLL_UP, GDK_SCROLL_DOWN, GDK_SCROLL_LEFT, GDK_SCROLL_RIGHT PGdkNotifyType* = ptr TGdkNotifyType TGdkNotifyType* = int PGdkCrossingMode* = ptr TGdkCrossingMode - TGdkCrossingMode* = enum + TGdkCrossingMode* = enum GDK_CROSSING_NORMAL, GDK_CROSSING_GRAB, GDK_CROSSING_UNGRAB PGdkPropertyState* = ptr TGdkPropertyState - TGdkPropertyState* = enum + TGdkPropertyState* = enum GDK_PROPERTY_NEW_VALUE, GDK_PROPERTY_STATE_DELETE PGdkWindowState* = ptr TGdkWindowState TGdkWindowState* = gint PGdkSettingAction* = ptr TGdkSettingAction - TGdkSettingAction* = enum - GDK_SETTING_ACTION_NEW, GDK_SETTING_ACTION_CHANGED, + TGdkSettingAction* = enum + GDK_SETTING_ACTION_NEW, GDK_SETTING_ACTION_CHANGED, GDK_SETTING_ACTION_DELETED PGdkEventAny* = ptr TGdkEventAny - TGdkEventAny* {.final.} = object + TGdkEventAny* {.final.} = object `type`*: TGdkEventType window*: PGdkWindow send_event*: gint8 PGdkEventExpose* = ptr TGdkEventExpose - TGdkEventExpose* {.final.} = object + TGdkEventExpose* {.final.} = object `type`*: TGdkEventType window*: PGdkWindow send_event*: gint8 @@ -351,20 +350,20 @@ type count*: gint PGdkEventNoExpose* = ptr TGdkEventNoExpose - TGdkEventNoExpose* {.final.} = object + TGdkEventNoExpose* {.final.} = object `type`*: TGdkEventType window*: PGdkWindow send_event*: gint8 PGdkEventVisibility* = ptr TGdkEventVisibility - TGdkEventVisibility* {.final.} = object + TGdkEventVisibility* {.final.} = object `type`*: TGdkEventType window*: PGdkWindow send_event*: gint8 state*: TGdkVisibilityState PGdkEventMotion* = ptr TGdkEventMotion - TGdkEventMotion* {.final.} = object + TGdkEventMotion* {.final.} = object `type`*: TGdkEventType window*: PGdkWindow send_event*: gint8 @@ -379,7 +378,7 @@ type y_root*: gdouble PGdkEventButton* = ptr TGdkEventButton - TGdkEventButton* {.final.} = object + TGdkEventButton* {.final.} = object `type`*: TGdkEventType window*: PGdkWindow send_event*: gint8 @@ -394,7 +393,7 @@ type y_root*: gdouble PGdkEventScroll* = ptr TGdkEventScroll - TGdkEventScroll* {.final.} = object + TGdkEventScroll* {.final.} = object `type`*: TGdkEventType window*: PGdkWindow send_event*: gint8 @@ -408,7 +407,7 @@ type y_root*: gdouble PGdkEventKey* = ptr TGdkEventKey - TGdkEventKey* {.final.} = object + TGdkEventKey* {.final.} = object `type`*: TGdkEventType window*: PGdkWindow send_event*: gint8 @@ -421,7 +420,7 @@ type group*: guint8 PGdkEventCrossing* = ptr TGdkEventCrossing - TGdkEventCrossing* {.final.} = object + TGdkEventCrossing* {.final.} = object `type`*: TGdkEventType window*: PGdkWindow send_event*: gint8 @@ -437,14 +436,14 @@ type state*: guint PGdkEventFocus* = ptr TGdkEventFocus - TGdkEventFocus* {.final.} = object + TGdkEventFocus* {.final.} = object `type`*: TGdkEventType window*: PGdkWindow send_event*: gint8 `in`*: gint16 PGdkEventConfigure* = ptr TGdkEventConfigure - TGdkEventConfigure* {.final.} = object + TGdkEventConfigure* {.final.} = object `type`*: TGdkEventType window*: PGdkWindow send_event*: gint8 @@ -454,7 +453,7 @@ type height*: gint PGdkEventProperty* = ptr TGdkEventProperty - TGdkEventProperty* {.final.} = object + TGdkEventProperty* {.final.} = object `type`*: TGdkEventType window*: PGdkWindow send_event*: gint8 @@ -464,7 +463,7 @@ type TGdkNativeWindow* = pointer PGdkEventSelection* = ptr TGdkEventSelection - TGdkEventSelection* {.final.} = object + TGdkEventSelection* {.final.} = object `type`*: TGdkEventType window*: PGdkWindow send_event*: gint8 @@ -475,7 +474,7 @@ type requestor*: TGdkNativeWindow PGdkEventProximity* = ptr TGdkEventProximity - TGdkEventProximity* {.final.} = object + TGdkEventProximity* {.final.} = object `type`*: TGdkEventType window*: PGdkWindow send_event*: gint8 @@ -483,11 +482,11 @@ type device*: PGdkDevice PmatDUMMY* = ptr TmatDUMMY - TmatDUMMY* {.final.} = object + TmatDUMMY* {.final.} = object b*: array[0..19, char] PGdkEventClient* = ptr TGdkEventClient - TGdkEventClient* {.final.} = object + TGdkEventClient* {.final.} = object `type`*: TGdkEventType window*: PGdkWindow send_event*: gint8 @@ -496,7 +495,7 @@ type b*: array[0..19, char] PGdkEventSetting* = ptr TGdkEventSetting - TGdkEventSetting* {.final.} = object + TGdkEventSetting* {.final.} = object `type`*: TGdkEventType window*: PGdkWindow send_event*: gint8 @@ -504,7 +503,7 @@ type name*: cstring PGdkEventWindowState* = ptr TGdkEventWindowState - TGdkEventWindowState* {.final.} = object + TGdkEventWindowState* {.final.} = object `type`*: TGdkEventType window*: PGdkWindow send_event*: gint8 @@ -512,7 +511,7 @@ type new_window_state*: TGdkWindowState PGdkEventDND* = ptr TGdkEventDND - TGdkEventDND* {.final.} = object + TGdkEventDND* {.final.} = object `type`*: TGdkEventType window*: PGdkWindow send_event*: gint8 @@ -521,13 +520,13 @@ type x_root*: gshort y_root*: gshort - TGdkEvent* {.final.} = object + TGdkEvent* {.final.} = object data*: array[0..255, char] # union of # `type`: TGdkEventType # any: TGdkEventAny - # expose: TGdkEventExpose - # no_expose: TGdkEventNoExpose - # visibility: TGdkEventVisibility + # expose: TGdkEventExpose + # no_expose: TGdkEventNoExpose + # visibility: TGdkEventVisibility # motion: TGdkEventMotion # button: TGdkEventButton # scroll: TGdkEventScroll @@ -542,13 +541,13 @@ type # dnd: TGdkEventDND # window_state: TGdkEventWindowState # setting: TGdkEventSetting - + PGdkGCClass* = ptr TGdkGCClass TGdkGCClass* = object of TGObjectClass get_values*: proc (gc: PGdkGC, values: PGdkGCValues){.cdecl.} set_values*: proc (gc: PGdkGC, values: PGdkGCValues, mask: TGdkGCValuesMask){. cdecl.} - set_dashes*: proc (gc: PGdkGC, dash_offset: gint, + set_dashes*: proc (gc: PGdkGC, dash_offset: gint, dash_list: openarray[gint8]){.cdecl.} `gdk_reserved1`*: proc (){.cdecl.} `gdk_reserved2`*: proc (){.cdecl.} @@ -573,24 +572,24 @@ type windowing_data*: gpointer PGdkExtensionMode* = ptr TGdkExtensionMode - TGdkExtensionMode* = enum - GDK_EXTENSION_EVENTS_NONE, GDK_EXTENSION_EVENTS_ALL, + TGdkExtensionMode* = enum + GDK_EXTENSION_EVENTS_NONE, GDK_EXTENSION_EVENTS_ALL, GDK_EXTENSION_EVENTS_CURSOR PGdkInputSource* = ptr TGdkInputSource - TGdkInputSource* = enum + TGdkInputSource* = enum GDK_SOURCE_MOUSE, GDK_SOURCE_PEN, GDK_SOURCE_ERASER, GDK_SOURCE_CURSOR PGdkInputMode* = ptr TGdkInputMode - TGdkInputMode* = enum + TGdkInputMode* = enum GDK_MODE_DISABLED, GDK_MODE_SCREEN, GDK_MODE_WINDOW PGdkAxisUse* = ptr TGdkAxisUse TGdkAxisUse* = int32 PGdkDeviceKey* = ptr TGdkDeviceKey - TGdkDeviceKey* {.final.} = object + TGdkDeviceKey* {.final.} = object keyval*: guint modifiers*: TGdkModifierType PGdkDeviceAxis* = ptr TGdkDeviceAxis - TGdkDeviceAxis* {.final.} = object + TGdkDeviceAxis* {.final.} = object use*: TGdkAxisUse min*: gdouble max*: gdouble @@ -605,12 +604,12 @@ type num_keys*: gint keys*: PGdkDeviceKey - TGdkTimeCoord* {.final.} = object + TGdkTimeCoord* {.final.} = object time*: guint32 axes*: array[0..(GDK_MAX_TIMECOORD_AXES) - 1, gdouble] PGdkKeymapKey* = ptr TGdkKeymapKey - TGdkKeymapKey* {.final.} = object + TGdkKeymapKey* {.final.} = object keycode*: guint group*: gint level*: gint @@ -624,12 +623,12 @@ type direction_changed*: proc (keymap: PGdkKeymap){.cdecl.} PGdkPangoAttrStipple* = ptr TGdkPangoAttrStipple - TGdkPangoAttrStipple* {.final.} = object + TGdkPangoAttrStipple* {.final.} = object attr*: TPangoAttribute stipple*: PGdkBitmap PGdkPangoAttrEmbossed* = ptr TGdkPangoAttrEmbossed - TGdkPangoAttrEmbossed* {.final.} = object + TGdkPangoAttrEmbossed* {.final.} = object attr*: TPangoAttribute embossed*: gboolean @@ -642,18 +641,18 @@ type TGdkPixmapObjectClass* = object of TGdkDrawableClass PGdkPropMode* = ptr TGdkPropMode - TGdkPropMode* = enum + TGdkPropMode* = enum GDK_PROP_MODE_REPLACE, GDK_PROP_MODE_PREPEND, GDK_PROP_MODE_APPEND PGdkFillRule* = ptr TGdkFillRule - TGdkFillRule* = enum + TGdkFillRule* = enum GDK_EVEN_ODD_RULE, GDK_WINDING_RULE PGdkOverlapType* = ptr TGdkOverlapType - TGdkOverlapType* = enum - GDK_OVERLAP_RECTANGLE_IN, GDK_OVERLAP_RECTANGLE_OUT, + TGdkOverlapType* = enum + GDK_OVERLAP_RECTANGLE_IN, GDK_OVERLAP_RECTANGLE_OUT, GDK_OVERLAP_RECTANGLE_PART TGdkSpanFunc* = proc (span: PGdkSpan, data: gpointer){.cdecl.} PGdkRgbCmap* = ptr TGdkRgbCmap - TGdkRgbCmap* {.final.} = object + TGdkRgbCmap* {.final.} = object colors*: array[0..255, guint32] n_colors*: gint info_list*: PGSList @@ -690,33 +689,33 @@ type get_window_at_pointer*: proc (screen: PGdkScreen, win_x: Pgint, win_y: Pgint): PGdkWindow{. cdecl.} get_n_monitors*: proc (screen: PGdkScreen): gint{.cdecl.} - get_monitor_geometry*: proc (screen: PGdkScreen, monitor_num: gint, + get_monitor_geometry*: proc (screen: PGdkScreen, monitor_num: gint, dest: PGdkRectangle){.cdecl.} PGdkGrabStatus* = ptr TGdkGrabStatus TGdkGrabStatus* = int - TGdkInputFunction* = proc (data: gpointer, source: gint, + TGdkInputFunction* = proc (data: gpointer, source: gint, condition: TGdkInputCondition){.cdecl.} TGdkDestroyNotify* = proc (data: gpointer){.cdecl.} - TGdkSpan* {.final.} = object + TGdkSpan* {.final.} = object x*: gint y*: gint width*: gint PGdkWindowClass* = ptr TGdkWindowClass - TGdkWindowClass* = enum + TGdkWindowClass* = enum GDK_INPUT_OUTPUT, GDK_INPUT_ONLY PGdkWindowType* = ptr TGdkWindowType - TGdkWindowType* = enum - GDK_WINDOW_ROOT, GDK_WINDOW_TOPLEVEL, GDK_WINDOW_CHILD, GDK_WINDOW_DIALOG, + TGdkWindowType* = enum + GDK_WINDOW_ROOT, GDK_WINDOW_TOPLEVEL, GDK_WINDOW_CHILD, GDK_WINDOW_DIALOG, GDK_WINDOW_TEMP, GDK_WINDOW_FOREIGN PGdkWindowAttributesType* = ptr TGdkWindowAttributesType TGdkWindowAttributesType* = int32 PGdkWindowHints* = ptr TGdkWindowHints TGdkWindowHints* = int32 PGdkWindowTypeHint* = ptr TGdkWindowTypeHint - TGdkWindowTypeHint* = enum - GDK_WINDOW_TYPE_HINT_NORMAL, GDK_WINDOW_TYPE_HINT_DIALOG, + TGdkWindowTypeHint* = enum + GDK_WINDOW_TYPE_HINT_NORMAL, GDK_WINDOW_TYPE_HINT_DIALOG, GDK_WINDOW_TYPE_HINT_MENU, GDK_WINDOW_TYPE_HINT_TOOLBAR PGdkWMDecoration* = ptr TGdkWMDecoration TGdkWMDecoration* = int32 @@ -725,13 +724,13 @@ type PGdkGravity* = ptr TGdkGravity TGdkGravity* = int PGdkWindowEdge* = ptr TGdkWindowEdge - TGdkWindowEdge* = enum - GDK_WINDOW_EDGE_NORTH_WEST, GDK_WINDOW_EDGE_NORTH, - GDK_WINDOW_EDGE_NORTH_EAST, GDK_WINDOW_EDGE_WEST, GDK_WINDOW_EDGE_EAST, - GDK_WINDOW_EDGE_SOUTH_WEST, GDK_WINDOW_EDGE_SOUTH, + TGdkWindowEdge* = enum + GDK_WINDOW_EDGE_NORTH_WEST, GDK_WINDOW_EDGE_NORTH, + GDK_WINDOW_EDGE_NORTH_EAST, GDK_WINDOW_EDGE_WEST, GDK_WINDOW_EDGE_EAST, + GDK_WINDOW_EDGE_SOUTH_WEST, GDK_WINDOW_EDGE_SOUTH, GDK_WINDOW_EDGE_SOUTH_EAST PGdkWindowAttr* = ptr TGdkWindowAttr - TGdkWindowAttr* {.final.} = object + TGdkWindowAttr* {.final.} = object title*: cstring event_mask*: gint x*: gint @@ -748,7 +747,7 @@ type override_redirect*: gboolean PGdkGeometry* = ptr TGdkGeometry - TGdkGeometry* {.final.} = object + TGdkGeometry* {.final.} = object min_width*: gint min_height*: gint max_width*: gint @@ -762,8 +761,8 @@ type win_gravity*: TGdkGravity PGdkPointerHooks* = ptr TGdkPointerHooks - TGdkPointerHooks* {.final.} = object - get_pointer*: proc (window: PGdkWindow, x: Pgint, y: Pgint, + TGdkPointerHooks* {.final.} = object + get_pointer*: proc (window: PGdkWindow, x: Pgint, y: Pgint, mask: PGdkModifierType): PGdkWindow{.cdecl.} window_at_pointer*: proc (screen: PGdkScreen, win_x: Pgint, win_y: Pgint): PGdkWindow{. cdecl.} @@ -793,7 +792,7 @@ type PGdkWindowObjectClass* = ptr TGdkWindowObjectClass TGdkWindowObjectClass* = object of TGdkDrawableClass - gdk_window_invalidate_maybe_recurse_child_func* = proc (para1: PGdkWindow, + gdk_window_invalidate_maybe_recurse_child_func* = proc (para1: PGdkWindow, para2: gpointer): gboolean proc GDK_TYPE_COLORMAP*(): GType @@ -803,38 +802,38 @@ proc GDK_IS_COLORMAP*(anObject: pointer): bool proc GDK_IS_COLORMAP_CLASS*(klass: pointer): bool proc GDK_COLORMAP_GET_CLASS*(obj: pointer): PGdkColormapClass proc GDK_TYPE_COLOR*(): GType -proc gdk_colormap_get_type*(): GType{.cdecl, dynlib: gdklib, +proc gdk_colormap_get_type*(): GType{.cdecl, dynlib: gdklib, importc: "gdk_colormap_get_type".} proc gdk_colormap_new*(visual: PGdkVisual, allocate: gboolean): PGdkColormap{. cdecl, dynlib: gdklib, importc: "gdk_colormap_new".} -proc gdk_colormap_alloc_colors*(colormap: PGdkColormap, colors: PGdkColor, - ncolors: gint, writeable: gboolean, +proc gdk_colormap_alloc_colors*(colormap: PGdkColormap, colors: PGdkColor, + ncolors: gint, writeable: gboolean, best_match: gboolean, success: Pgboolean): gint{. cdecl, dynlib: gdklib, importc: "gdk_colormap_alloc_colors".} -proc gdk_colormap_alloc_color*(colormap: PGdkColormap, color: PGdkColor, +proc gdk_colormap_alloc_color*(colormap: PGdkColormap, color: PGdkColor, writeable: gboolean, best_match: gboolean): gboolean{. cdecl, dynlib: gdklib, importc: "gdk_colormap_alloc_color".} -proc gdk_colormap_free_colors*(colormap: PGdkColormap, colors: PGdkColor, - ncolors: gint){.cdecl, dynlib: gdklib, +proc gdk_colormap_free_colors*(colormap: PGdkColormap, colors: PGdkColor, + ncolors: gint){.cdecl, dynlib: gdklib, importc: "gdk_colormap_free_colors".} -proc gdk_colormap_query_color*(colormap: PGdkColormap, pixel: gulong, - result: PGdkColor){.cdecl, dynlib: gdklib, +proc gdk_colormap_query_color*(colormap: PGdkColormap, pixel: gulong, + result: PGdkColor){.cdecl, dynlib: gdklib, importc: "gdk_colormap_query_color".} -proc gdk_colormap_get_visual*(colormap: PGdkColormap): PGdkVisual{.cdecl, +proc gdk_colormap_get_visual*(colormap: PGdkColormap): PGdkVisual{.cdecl, dynlib: gdklib, importc: "gdk_colormap_get_visual".} -proc gdk_color_copy*(color: PGdkColor): PGdkColor{.cdecl, dynlib: gdklib, +proc gdk_color_copy*(color: PGdkColor): PGdkColor{.cdecl, dynlib: gdklib, importc: "gdk_color_copy".} -proc gdk_color_free*(color: PGdkColor){.cdecl, dynlib: gdklib, +proc gdk_color_free*(color: PGdkColor){.cdecl, dynlib: gdklib, importc: "gdk_color_free".} -proc gdk_color_parse*(spec: cstring, color: PGdkColor): gint{.cdecl, +proc gdk_color_parse*(spec: cstring, color: PGdkColor): gint{.cdecl, dynlib: gdklib, importc: "gdk_color_parse".} -proc gdk_color_hash*(colora: PGdkColor): guint{.cdecl, dynlib: gdklib, +proc gdk_color_hash*(colora: PGdkColor): guint{.cdecl, dynlib: gdklib, importc: "gdk_color_hash".} -proc gdk_color_equal*(colora: PGdkColor, colorb: PGdkColor): gboolean{.cdecl, +proc gdk_color_equal*(colora: PGdkColor, colorb: PGdkColor): gboolean{.cdecl, dynlib: gdklib, importc: "gdk_color_equal".} -proc gdk_color_get_type*(): GType{.cdecl, dynlib: gdklib, +proc gdk_color_get_type*(): GType{.cdecl, dynlib: gdklib, importc: "gdk_color_get_type".} -const +const GDK_CURSOR_IS_PIXMAP* = - (1) GDK_X_CURSOR* = 0 GDK_ARROW* = 2 @@ -916,20 +915,20 @@ const GDK_LAST_CURSOR* = GDK_XTERM + 1 proc GDK_TYPE_CURSOR*(): GType -proc gdk_cursor_get_type*(): GType{.cdecl, dynlib: gdklib, +proc gdk_cursor_get_type*(): GType{.cdecl, dynlib: gdklib, importc: "gdk_cursor_get_type".} proc gdk_cursor_new_for_screen*(screen: PGdkScreen, cursor_type: TGdkCursorType): PGdkCursor{. cdecl, dynlib: gdklib, importc: "gdk_cursor_new_for_screen".} -proc gdk_cursor_new_from_pixmap*(source: PGdkPixmap, mask: PGdkPixmap, +proc gdk_cursor_new_from_pixmap*(source: PGdkPixmap, mask: PGdkPixmap, fg: PGdkColor, bg: PGdkColor, x: gint, y: gint): PGdkCursor{. cdecl, dynlib: gdklib, importc: "gdk_cursor_new_from_pixmap".} -proc gdk_cursor_get_screen*(cursor: PGdkCursor): PGdkScreen{.cdecl, +proc gdk_cursor_get_screen*(cursor: PGdkCursor): PGdkScreen{.cdecl, dynlib: gdklib, importc: "gdk_cursor_get_screen".} -proc gdk_cursor_ref*(cursor: PGdkCursor): PGdkCursor{.cdecl, dynlib: gdklib, +proc gdk_cursor_ref*(cursor: PGdkCursor): PGdkCursor{.cdecl, dynlib: gdklib, importc: "gdk_cursor_ref".} -proc gdk_cursor_unref*(cursor: PGdkCursor){.cdecl, dynlib: gdklib, +proc gdk_cursor_unref*(cursor: PGdkCursor){.cdecl, dynlib: gdklib, importc: "gdk_cursor_unref".} -const +const GDK_ACTION_DEFAULT* = 1 shl 0 GDK_ACTION_COPY* = 1 shl 1 GDK_ACTION_MOVE* = 1 shl 2 @@ -943,45 +942,45 @@ proc GDK_DRAG_CONTEXT_CLASS*(klass: Pointer): PGdkDragContextClass proc GDK_IS_DRAG_CONTEXT*(anObject: Pointer): bool proc GDK_IS_DRAG_CONTEXT_CLASS*(klass: Pointer): bool proc GDK_DRAG_CONTEXT_GET_CLASS*(obj: Pointer): PGdkDragContextClass -proc gdk_drag_context_get_type*(): GType{.cdecl, dynlib: gdklib, +proc gdk_drag_context_get_type*(): GType{.cdecl, dynlib: gdklib, importc: "gdk_drag_context_get_type".} -proc gdk_drag_context_new*(): PGdkDragContext{.cdecl, dynlib: gdklib, +proc gdk_drag_context_new*(): PGdkDragContext{.cdecl, dynlib: gdklib, importc: "gdk_drag_context_new".} -proc gdk_drag_status*(context: PGdkDragContext, action: TGdkDragAction, - time: guint32){.cdecl, dynlib: gdklib, +proc gdk_drag_status*(context: PGdkDragContext, action: TGdkDragAction, + time: guint32){.cdecl, dynlib: gdklib, importc: "gdk_drag_status".} proc gdk_drop_reply*(context: PGdkDragContext, ok: gboolean, time: guint32){. cdecl, dynlib: gdklib, importc: "gdk_drop_reply".} proc gdk_drop_finish*(context: PGdkDragContext, success: gboolean, time: guint32){. cdecl, dynlib: gdklib, importc: "gdk_drop_finish".} -proc gdk_drag_get_selection*(context: PGdkDragContext): TGdkAtom{.cdecl, +proc gdk_drag_get_selection*(context: PGdkDragContext): TGdkAtom{.cdecl, dynlib: gdklib, importc: "gdk_drag_get_selection".} proc gdk_drag_begin*(window: PGdkWindow, targets: PGList): PGdkDragContext{. cdecl, dynlib: gdklib, importc: "gdk_drag_begin".} -proc gdk_drag_get_protocol_for_display*(display: PGdkDisplay, xid: guint32, +proc gdk_drag_get_protocol_for_display*(display: PGdkDisplay, xid: guint32, protocol: PGdkDragProtocol): guint32{. cdecl, dynlib: gdklib, importc: "gdk_drag_get_protocol_for_display".} -proc gdk_drag_find_window*(context: PGdkDragContext, drag_window: PGdkWindow, - x_root: gint, y_root: gint, w: var PGdkWindow, - protocol: PGdkDragProtocol){.cdecl, dynlib: gdklib, +proc gdk_drag_find_window*(context: PGdkDragContext, drag_window: PGdkWindow, + x_root: gint, y_root: gint, w: var PGdkWindow, + protocol: PGdkDragProtocol){.cdecl, dynlib: gdklib, importc: "gdk_drag_find_window".} -proc gdk_drag_motion*(context: PGdkDragContext, dest_window: PGdkWindow, - protocol: TGdkDragProtocol, x_root: gint, y_root: gint, - suggested_action: TGdkDragAction, +proc gdk_drag_motion*(context: PGdkDragContext, dest_window: PGdkWindow, + protocol: TGdkDragProtocol, x_root: gint, y_root: gint, + suggested_action: TGdkDragAction, possible_actions: TGdkDragAction, time: guint32): gboolean{. cdecl, dynlib: gdklib, importc: "gdk_drag_motion".} -proc gdk_drag_drop*(context: PGdkDragContext, time: guint32){.cdecl, +proc gdk_drag_drop*(context: PGdkDragContext, time: guint32){.cdecl, dynlib: gdklib, importc: "gdk_drag_drop".} -proc gdk_drag_abort*(context: PGdkDragContext, time: guint32){.cdecl, +proc gdk_drag_abort*(context: PGdkDragContext, time: guint32){.cdecl, dynlib: gdklib, importc: "gdk_drag_abort".} proc gdkregion_EXTENTCHECK*(r1, r2: PGdkRegionBox): bool proc gdkregion_EXTENTS*(r: PGdkRegionBox, idRect: PGdkRegion) proc gdkregion_MEMCHECK*(reg: PGdkRegion, ARect, firstrect: var PGdkRegionBox): bool -proc gdkregion_CHECK_PREVIOUS*(Reg: PGdkRegion, R: PGdkRegionBox, +proc gdkregion_CHECK_PREVIOUS*(Reg: PGdkRegion, R: PGdkRegionBox, Rx1, Ry1, Rx2, Ry2: gint): bool -proc gdkregion_ADDRECT*(reg: PGdkRegion, r: PGdkRegionBox, +proc gdkregion_ADDRECT*(reg: PGdkRegion, r: PGdkRegionBox, rx1, ry1, rx2, ry2: gint) -proc gdkregion_ADDRECTNOX*(reg: PGdkRegion, r: PGdkRegionBox, +proc gdkregion_ADDRECTNOX*(reg: PGdkRegion, r: PGdkRegionBox, rx1, ry1, rx2, ry2: gint) proc gdkregion_EMPTY_REGION*(pReg: PGdkRegion): bool proc gdkregion_REGION_NOT_EMPTY*(pReg: PGdkRegion): bool @@ -992,79 +991,79 @@ proc GDK_DRAWABLE_CLASS*(klass: Pointer): PGdkDrawableClass proc GDK_IS_DRAWABLE*(anObject: Pointer): bool proc GDK_IS_DRAWABLE_CLASS*(klass: Pointer): bool proc GDK_DRAWABLE_GET_CLASS*(obj: Pointer): PGdkDrawableClass -proc gdk_drawable_get_type*(): GType{.cdecl, dynlib: gdklib, +proc gdk_drawable_get_type*(): GType{.cdecl, dynlib: gdklib, importc: "gdk_drawable_get_type".} proc gdk_drawable_get_size*(drawable: PGdkDrawable, width: Pgint, height: Pgint){. cdecl, dynlib: gdklib, importc: "gdk_drawable_get_size".} proc gdk_drawable_set_colormap*(drawable: PGdkDrawable, colormap: PGdkColormap){. cdecl, dynlib: gdklib, importc: "gdk_drawable_set_colormap".} -proc gdk_drawable_get_colormap*(drawable: PGdkDrawable): PGdkColormap{.cdecl, +proc gdk_drawable_get_colormap*(drawable: PGdkDrawable): PGdkColormap{.cdecl, dynlib: gdklib, importc: "gdk_drawable_get_colormap".} -proc gdk_drawable_get_visual*(drawable: PGdkDrawable): PGdkVisual{.cdecl, +proc gdk_drawable_get_visual*(drawable: PGdkDrawable): PGdkVisual{.cdecl, dynlib: gdklib, importc: "gdk_drawable_get_visual".} -proc gdk_drawable_get_depth*(drawable: PGdkDrawable): gint{.cdecl, +proc gdk_drawable_get_depth*(drawable: PGdkDrawable): gint{.cdecl, dynlib: gdklib, importc: "gdk_drawable_get_depth".} -proc gdk_drawable_get_screen*(drawable: PGdkDrawable): PGdkScreen{.cdecl, +proc gdk_drawable_get_screen*(drawable: PGdkDrawable): PGdkScreen{.cdecl, dynlib: gdklib, importc: "gdk_drawable_get_screen".} -proc gdk_drawable_get_display*(drawable: PGdkDrawable): PGdkDisplay{.cdecl, +proc gdk_drawable_get_display*(drawable: PGdkDrawable): PGdkDisplay{.cdecl, dynlib: gdklib, importc: "gdk_drawable_get_display".} proc gdk_draw_point*(drawable: PGdkDrawable, gc: PGdkGC, x: gint, y: gint){. cdecl, dynlib: gdklib, importc: "gdk_draw_point".} -proc gdk_draw_line*(drawable: PGdkDrawable, gc: PGdkGC, x1: gint, y1: gint, - x2: gint, y2: gint){.cdecl, dynlib: gdklib, +proc gdk_draw_line*(drawable: PGdkDrawable, gc: PGdkGC, x1: gint, y1: gint, + x2: gint, y2: gint){.cdecl, dynlib: gdklib, importc: "gdk_draw_line".} -proc gdk_draw_rectangle*(drawable: PGdkDrawable, gc: PGdkGC, filled: gint, - x: gint, y: gint, width: gint, height: gint){.cdecl, +proc gdk_draw_rectangle*(drawable: PGdkDrawable, gc: PGdkGC, filled: gint, + x: gint, y: gint, width: gint, height: gint){.cdecl, dynlib: gdklib, importc: "gdk_draw_rectangle".} -proc gdk_draw_arc*(drawable: PGdkDrawable, gc: PGdkGC, filled: gint, x: gint, - y: gint, width: gint, height: gint, angle1: gint, +proc gdk_draw_arc*(drawable: PGdkDrawable, gc: PGdkGC, filled: gint, x: gint, + y: gint, width: gint, height: gint, angle1: gint, angle2: gint){.cdecl, dynlib: gdklib, importc: "gdk_draw_arc".} -proc gdk_draw_polygon*(drawable: PGdkDrawable, gc: PGdkGC, filled: gint, - points: PGdkPoint, npoints: gint){.cdecl, dynlib: gdklib, +proc gdk_draw_polygon*(drawable: PGdkDrawable, gc: PGdkGC, filled: gint, + points: PGdkPoint, npoints: gint){.cdecl, dynlib: gdklib, importc: "gdk_draw_polygon".} -proc gdk_draw_drawable*(drawable: PGdkDrawable, gc: PGdkGC, src: PGdkDrawable, - xsrc: gint, ysrc: gint, xdest: gint, ydest: gint, - width: gint, height: gint){.cdecl, dynlib: gdklib, +proc gdk_draw_drawable*(drawable: PGdkDrawable, gc: PGdkGC, src: PGdkDrawable, + xsrc: gint, ysrc: gint, xdest: gint, ydest: gint, + width: gint, height: gint){.cdecl, dynlib: gdklib, importc: "gdk_draw_drawable".} -proc gdk_draw_image*(drawable: PGdkDrawable, gc: PGdkGC, image: PGdkImage, - xsrc: gint, ysrc: gint, xdest: gint, ydest: gint, - width: gint, height: gint){.cdecl, dynlib: gdklib, +proc gdk_draw_image*(drawable: PGdkDrawable, gc: PGdkGC, image: PGdkImage, + xsrc: gint, ysrc: gint, xdest: gint, ydest: gint, + width: gint, height: gint){.cdecl, dynlib: gdklib, importc: "gdk_draw_image".} -proc gdk_draw_points*(drawable: PGdkDrawable, gc: PGdkGC, points: PGdkPoint, - npoints: gint){.cdecl, dynlib: gdklib, +proc gdk_draw_points*(drawable: PGdkDrawable, gc: PGdkGC, points: PGdkPoint, + npoints: gint){.cdecl, dynlib: gdklib, importc: "gdk_draw_points".} -proc gdk_draw_segments*(drawable: PGdkDrawable, gc: PGdkGC, segs: PGdkSegment, - nsegs: gint){.cdecl, dynlib: gdklib, +proc gdk_draw_segments*(drawable: PGdkDrawable, gc: PGdkGC, segs: PGdkSegment, + nsegs: gint){.cdecl, dynlib: gdklib, importc: "gdk_draw_segments".} -proc gdk_draw_lines*(drawable: PGdkDrawable, gc: PGdkGC, points: PGdkPoint, - npoints: gint){.cdecl, dynlib: gdklib, +proc gdk_draw_lines*(drawable: PGdkDrawable, gc: PGdkGC, points: PGdkPoint, + npoints: gint){.cdecl, dynlib: gdklib, importc: "gdk_draw_lines".} -proc gdk_draw_glyphs*(drawable: PGdkDrawable, gc: PGdkGC, font: PPangoFont, - x: gint, y: gint, glyphs: PPangoGlyphString){.cdecl, +proc gdk_draw_glyphs*(drawable: PGdkDrawable, gc: PGdkGC, font: PPangoFont, + x: gint, y: gint, glyphs: PPangoGlyphString){.cdecl, dynlib: gdklib, importc: "gdk_draw_glyphs".} -proc gdk_draw_layout_line*(drawable: PGdkDrawable, gc: PGdkGC, x: gint, y: gint, - line: PPangoLayoutLine){.cdecl, dynlib: gdklib, +proc gdk_draw_layout_line*(drawable: PGdkDrawable, gc: PGdkGC, x: gint, y: gint, + line: PPangoLayoutLine){.cdecl, dynlib: gdklib, importc: "gdk_draw_layout_line".} -proc gdk_draw_layout*(drawable: PGdkDrawable, gc: PGdkGC, x: gint, y: gint, - layout: PPangoLayout){.cdecl, dynlib: gdklib, +proc gdk_draw_layout*(drawable: PGdkDrawable, gc: PGdkGC, x: gint, y: gint, + layout: PPangoLayout){.cdecl, dynlib: gdklib, importc: "gdk_draw_layout".} -proc gdk_draw_layout_line_with_colors*(drawable: PGdkDrawable, gc: PGdkGC, - x: gint, y: gint, line: PPangoLayoutLine, - foreground: PGdkColor, - background: PGdkColor){.cdecl, +proc gdk_draw_layout_line_with_colors*(drawable: PGdkDrawable, gc: PGdkGC, + x: gint, y: gint, line: PPangoLayoutLine, + foreground: PGdkColor, + background: PGdkColor){.cdecl, dynlib: gdklib, importc: "gdk_draw_layout_line_with_colors".} -proc gdk_draw_layout_with_colors*(drawable: PGdkDrawable, gc: PGdkGC, x: gint, - y: gint, layout: PPangoLayout, +proc gdk_draw_layout_with_colors*(drawable: PGdkDrawable, gc: PGdkGC, x: gint, + y: gint, layout: PPangoLayout, foreground: PGdkColor, background: PGdkColor){. cdecl, dynlib: gdklib, importc: "gdk_draw_layout_with_colors".} -proc gdk_drawable_get_image*(drawable: PGdkDrawable, x: gint, y: gint, - width: gint, height: gint): PGdkImage{.cdecl, +proc gdk_drawable_get_image*(drawable: PGdkDrawable, x: gint, y: gint, + width: gint, height: gint): PGdkImage{.cdecl, dynlib: gdklib, importc: "gdk_drawable_get_image".} -proc gdk_drawable_get_clip_region*(drawable: PGdkDrawable): PGdkRegion{.cdecl, +proc gdk_drawable_get_clip_region*(drawable: PGdkDrawable): PGdkRegion{.cdecl, dynlib: gdklib, importc: "gdk_drawable_get_clip_region".} proc gdk_drawable_get_visible_region*(drawable: PGdkDrawable): PGdkRegion{. cdecl, dynlib: gdklib, importc: "gdk_drawable_get_visible_region".} -const +const GDK_NOTHING* = - (1) GDK_DELETE* = 0 GDK_DESTROY* = 1 @@ -1108,7 +1107,7 @@ const GDK_NOTIFY_UNKNOWN* = 5 proc GDK_TYPE_EVENT*(): GType -const +const G_PRIORITY_DEFAULT* = 0 GDK_PRIORITY_EVENTS* = G_PRIORITY_DEFAULT #GDK_PRIORITY_REDRAW* = G_PRIORITY_HIGH_IDLE + 20 @@ -1139,96 +1138,96 @@ const GDK_WINDOW_STATE_MAXIMIZED* = 1 shl 2 GDK_WINDOW_STATE_STICKY* = 1 shl 3 -proc gdk_event_get_type*(): GType{.cdecl, dynlib: gdklib, +proc gdk_event_get_type*(): GType{.cdecl, dynlib: gdklib, importc: "gdk_event_get_type".} -proc gdk_events_pending*(): gboolean{.cdecl, dynlib: gdklib, +proc gdk_events_pending*(): gboolean{.cdecl, dynlib: gdklib, importc: "gdk_events_pending".} -proc gdk_event_get*(): PGdkEvent{.cdecl, dynlib: gdklib, +proc gdk_event_get*(): PGdkEvent{.cdecl, dynlib: gdklib, importc: "gdk_event_get".} -proc gdk_event_peek*(): PGdkEvent{.cdecl, dynlib: gdklib, +proc gdk_event_peek*(): PGdkEvent{.cdecl, dynlib: gdklib, importc: "gdk_event_peek".} -proc gdk_event_get_graphics_expose*(window: PGdkWindow): PGdkEvent{.cdecl, +proc gdk_event_get_graphics_expose*(window: PGdkWindow): PGdkEvent{.cdecl, dynlib: gdklib, importc: "gdk_event_get_graphics_expose".} -proc gdk_event_put*(event: PGdkEvent){.cdecl, dynlib: gdklib, +proc gdk_event_put*(event: PGdkEvent){.cdecl, dynlib: gdklib, importc: "gdk_event_put".} -proc gdk_event_copy*(event: PGdkEvent): PGdkEvent{.cdecl, dynlib: gdklib, +proc gdk_event_copy*(event: PGdkEvent): PGdkEvent{.cdecl, dynlib: gdklib, importc: "gdk_event_copy".} -proc gdk_event_free*(event: PGdkEvent){.cdecl, dynlib: gdklib, +proc gdk_event_free*(event: PGdkEvent){.cdecl, dynlib: gdklib, importc: "gdk_event_free".} -proc gdk_event_get_time*(event: PGdkEvent): guint32{.cdecl, dynlib: gdklib, +proc gdk_event_get_time*(event: PGdkEvent): guint32{.cdecl, dynlib: gdklib, importc: "gdk_event_get_time".} proc gdk_event_get_state*(event: PGdkEvent, state: PGdkModifierType): gboolean{. cdecl, dynlib: gdklib, importc: "gdk_event_get_state".} proc gdk_event_get_coords*(event: PGdkEvent, x_win: Pgdouble, y_win: Pgdouble): gboolean{. cdecl, dynlib: gdklib, importc: "gdk_event_get_coords".} -proc gdk_event_get_root_coords*(event: PGdkEvent, x_root: Pgdouble, - y_root: Pgdouble): gboolean{.cdecl, +proc gdk_event_get_root_coords*(event: PGdkEvent, x_root: Pgdouble, + y_root: Pgdouble): gboolean{.cdecl, dynlib: gdklib, importc: "gdk_event_get_root_coords".} -proc gdk_event_get_axis*(event: PGdkEvent, axis_use: TGdkAxisUse, - value: Pgdouble): gboolean{.cdecl, dynlib: gdklib, +proc gdk_event_get_axis*(event: PGdkEvent, axis_use: TGdkAxisUse, + value: Pgdouble): gboolean{.cdecl, dynlib: gdklib, importc: "gdk_event_get_axis".} -proc gdk_event_handler_set*(func: TGdkEventFunc, data: gpointer, - notify: TGDestroyNotify){.cdecl, dynlib: gdklib, +proc gdk_event_handler_set*(func: TGdkEventFunc, data: gpointer, + notify: TGDestroyNotify){.cdecl, dynlib: gdklib, importc: "gdk_event_handler_set".} -proc gdk_set_show_events*(show_events: gboolean){.cdecl, dynlib: gdklib, +proc gdk_set_show_events*(show_events: gboolean){.cdecl, dynlib: gdklib, importc: "gdk_set_show_events".} -proc gdk_get_show_events*(): gboolean{.cdecl, dynlib: gdklib, +proc gdk_get_show_events*(): gboolean{.cdecl, dynlib: gdklib, importc: "gdk_get_show_events".} proc GDK_TYPE_FONT*(): GType -proc gdk_font_get_type*(): GType{.cdecl, dynlib: gdklib, +proc gdk_font_get_type*(): GType{.cdecl, dynlib: gdklib, importc: "gdk_font_get_type".} proc gdk_font_load_for_display*(display: PGdkDisplay, font_name: cstring): PGdkFont{. cdecl, dynlib: gdklib, importc: "gdk_font_load_for_display".} proc gdk_fontset_load_for_display*(display: PGdkDisplay, fontset_name: cstring): PGdkFont{. cdecl, dynlib: gdklib, importc: "gdk_fontset_load_for_display".} -proc gdk_font_from_description_for_display*(display: PGdkDisplay, - font_desc: PPangoFontDescription): PGdkFont{.cdecl, dynlib: gdklib, +proc gdk_font_from_description_for_display*(display: PGdkDisplay, + font_desc: PPangoFontDescription): PGdkFont{.cdecl, dynlib: gdklib, importc: "gdk_font_from_description_for_display".} -proc gdk_font_ref*(font: PGdkFont): PGdkFont{.cdecl, dynlib: gdklib, +proc gdk_font_ref*(font: PGdkFont): PGdkFont{.cdecl, dynlib: gdklib, importc: "gdk_font_ref".} -proc gdk_font_unref*(font: PGdkFont){.cdecl, dynlib: gdklib, +proc gdk_font_unref*(font: PGdkFont){.cdecl, dynlib: gdklib, importc: "gdk_font_unref".} -proc gdk_font_id*(font: PGdkFont): gint{.cdecl, dynlib: gdklib, +proc gdk_font_id*(font: PGdkFont): gint{.cdecl, dynlib: gdklib, importc: "gdk_font_id".} -proc gdk_font_equal*(fonta: PGdkFont, fontb: PGdkFont): gboolean{.cdecl, +proc gdk_font_equal*(fonta: PGdkFont, fontb: PGdkFont): gboolean{.cdecl, dynlib: gdklib, importc: "gdk_font_equal".} -proc gdk_string_width*(font: PGdkFont, `string`: cstring): gint{.cdecl, +proc gdk_string_width*(font: PGdkFont, `string`: cstring): gint{.cdecl, dynlib: gdklib, importc: "gdk_string_width".} proc gdk_text_width*(font: PGdkFont, text: cstring, text_length: gint): gint{. cdecl, dynlib: gdklib, importc: "gdk_text_width".} proc gdk_text_width_wc*(font: PGdkFont, text: PGdkWChar, text_length: gint): gint{. cdecl, dynlib: gdklib, importc: "gdk_text_width_wc".} -proc gdk_char_width*(font: PGdkFont, character: gchar): gint{.cdecl, +proc gdk_char_width*(font: PGdkFont, character: gchar): gint{.cdecl, dynlib: gdklib, importc: "gdk_char_width".} -proc gdk_char_width_wc*(font: PGdkFont, character: TGdkWChar): gint{.cdecl, +proc gdk_char_width_wc*(font: PGdkFont, character: TGdkWChar): gint{.cdecl, dynlib: gdklib, importc: "gdk_char_width_wc".} -proc gdk_string_measure*(font: PGdkFont, `string`: cstring): gint{.cdecl, +proc gdk_string_measure*(font: PGdkFont, `string`: cstring): gint{.cdecl, dynlib: gdklib, importc: "gdk_string_measure".} proc gdk_text_measure*(font: PGdkFont, text: cstring, text_length: gint): gint{. cdecl, dynlib: gdklib, importc: "gdk_text_measure".} -proc gdk_char_measure*(font: PGdkFont, character: gchar): gint{.cdecl, +proc gdk_char_measure*(font: PGdkFont, character: gchar): gint{.cdecl, dynlib: gdklib, importc: "gdk_char_measure".} -proc gdk_string_height*(font: PGdkFont, `string`: cstring): gint{.cdecl, +proc gdk_string_height*(font: PGdkFont, `string`: cstring): gint{.cdecl, dynlib: gdklib, importc: "gdk_string_height".} proc gdk_text_height*(font: PGdkFont, text: cstring, text_length: gint): gint{. cdecl, dynlib: gdklib, importc: "gdk_text_height".} -proc gdk_char_height*(font: PGdkFont, character: gchar): gint{.cdecl, +proc gdk_char_height*(font: PGdkFont, character: gchar): gint{.cdecl, dynlib: gdklib, importc: "gdk_char_height".} -proc gdk_text_extents*(font: PGdkFont, text: cstring, text_length: gint, - lbearing: Pgint, rbearing: Pgint, width: Pgint, - ascent: Pgint, descent: Pgint){.cdecl, dynlib: gdklib, +proc gdk_text_extents*(font: PGdkFont, text: cstring, text_length: gint, + lbearing: Pgint, rbearing: Pgint, width: Pgint, + ascent: Pgint, descent: Pgint){.cdecl, dynlib: gdklib, importc: "gdk_text_extents".} -proc gdk_text_extents_wc*(font: PGdkFont, text: PGdkWChar, text_length: gint, - lbearing: Pgint, rbearing: Pgint, width: Pgint, - ascent: Pgint, descent: Pgint){.cdecl, dynlib: gdklib, +proc gdk_text_extents_wc*(font: PGdkFont, text: PGdkWChar, text_length: gint, + lbearing: Pgint, rbearing: Pgint, width: Pgint, + ascent: Pgint, descent: Pgint){.cdecl, dynlib: gdklib, importc: "gdk_text_extents_wc".} -proc gdk_string_extents*(font: PGdkFont, `string`: cstring, lbearing: Pgint, - rbearing: Pgint, width: Pgint, ascent: Pgint, - descent: Pgint){.cdecl, dynlib: gdklib, +proc gdk_string_extents*(font: PGdkFont, `string`: cstring, lbearing: Pgint, + rbearing: Pgint, width: Pgint, ascent: Pgint, + descent: Pgint){.cdecl, dynlib: gdklib, importc: "gdk_string_extents".} -proc gdk_font_get_display*(font: PGdkFont): PGdkDisplay{.cdecl, dynlib: gdklib, +proc gdk_font_get_display*(font: PGdkFont): PGdkDisplay{.cdecl, dynlib: gdklib, importc: "gdk_font_get_display".} -const +const GDK_GC_FOREGROUND* = 1 shl 0 GDK_GC_BACKGROUND* = 1 shl 1 GDK_GC_FONT* = 1 shl 2 @@ -1256,65 +1255,65 @@ proc GDK_GC_CLASS*(klass: Pointer): PGdkGCClass proc GDK_IS_GC*(anObject: Pointer): bool proc GDK_IS_GC_CLASS*(klass: Pointer): bool proc GDK_GC_GET_CLASS*(obj: Pointer): PGdkGCClass -proc gdk_gc_get_type*(): GType{.cdecl, dynlib: gdklib, +proc gdk_gc_get_type*(): GType{.cdecl, dynlib: gdklib, importc: "gdk_gc_get_type".} -proc gdk_gc_new*(drawable: PGdkDrawable): PGdkGC{.cdecl, dynlib: gdklib, +proc gdk_gc_new*(drawable: PGdkDrawable): PGdkGC{.cdecl, dynlib: gdklib, importc: "gdk_gc_new".} -proc gdk_gc_new_with_values*(drawable: PGdkDrawable, values: PGdkGCValues, - values_mask: TGdkGCValuesMask): PGdkGC{.cdecl, +proc gdk_gc_new_with_values*(drawable: PGdkDrawable, values: PGdkGCValues, + values_mask: TGdkGCValuesMask): PGdkGC{.cdecl, dynlib: gdklib, importc: "gdk_gc_new_with_values".} -proc gdk_gc_get_values*(gc: PGdkGC, values: PGdkGCValues){.cdecl, +proc gdk_gc_get_values*(gc: PGdkGC, values: PGdkGCValues){.cdecl, dynlib: gdklib, importc: "gdk_gc_get_values".} -proc gdk_gc_set_values*(gc: PGdkGC, values: PGdkGCValues, - values_mask: TGdkGCValuesMask){.cdecl, dynlib: gdklib, +proc gdk_gc_set_values*(gc: PGdkGC, values: PGdkGCValues, + values_mask: TGdkGCValuesMask){.cdecl, dynlib: gdklib, importc: "gdk_gc_set_values".} -proc gdk_gc_set_foreground*(gc: PGdkGC, color: PGdkColor){.cdecl, +proc gdk_gc_set_foreground*(gc: PGdkGC, color: PGdkColor){.cdecl, dynlib: gdklib, importc: "gdk_gc_set_foreground".} -proc gdk_gc_set_background*(gc: PGdkGC, color: PGdkColor){.cdecl, +proc gdk_gc_set_background*(gc: PGdkGC, color: PGdkColor){.cdecl, dynlib: gdklib, importc: "gdk_gc_set_background".} -proc gdk_gc_set_function*(gc: PGdkGC, `function`: TGdkFunction){.cdecl, +proc gdk_gc_set_function*(gc: PGdkGC, `function`: TGdkFunction){.cdecl, dynlib: gdklib, importc: "gdk_gc_set_function".} -proc gdk_gc_set_fill*(gc: PGdkGC, fill: TGdkFill){.cdecl, dynlib: gdklib, +proc gdk_gc_set_fill*(gc: PGdkGC, fill: TGdkFill){.cdecl, dynlib: gdklib, importc: "gdk_gc_set_fill".} -proc gdk_gc_set_tile*(gc: PGdkGC, tile: PGdkPixmap){.cdecl, dynlib: gdklib, +proc gdk_gc_set_tile*(gc: PGdkGC, tile: PGdkPixmap){.cdecl, dynlib: gdklib, importc: "gdk_gc_set_tile".} -proc gdk_gc_set_stipple*(gc: PGdkGC, stipple: PGdkPixmap){.cdecl, +proc gdk_gc_set_stipple*(gc: PGdkGC, stipple: PGdkPixmap){.cdecl, dynlib: gdklib, importc: "gdk_gc_set_stipple".} -proc gdk_gc_set_ts_origin*(gc: PGdkGC, x: gint, y: gint){.cdecl, dynlib: gdklib, +proc gdk_gc_set_ts_origin*(gc: PGdkGC, x: gint, y: gint){.cdecl, dynlib: gdklib, importc: "gdk_gc_set_ts_origin".} -proc gdk_gc_set_clip_origin*(gc: PGdkGC, x: gint, y: gint){.cdecl, +proc gdk_gc_set_clip_origin*(gc: PGdkGC, x: gint, y: gint){.cdecl, dynlib: gdklib, importc: "gdk_gc_set_clip_origin".} -proc gdk_gc_set_clip_mask*(gc: PGdkGC, mask: PGdkBitmap){.cdecl, dynlib: gdklib, +proc gdk_gc_set_clip_mask*(gc: PGdkGC, mask: PGdkBitmap){.cdecl, dynlib: gdklib, importc: "gdk_gc_set_clip_mask".} -proc gdk_gc_set_clip_rectangle*(gc: PGdkGC, rectangle: PGdkRectangle){.cdecl, +proc gdk_gc_set_clip_rectangle*(gc: PGdkGC, rectangle: PGdkRectangle){.cdecl, dynlib: gdklib, importc: "gdk_gc_set_clip_rectangle".} -proc gdk_gc_set_clip_region*(gc: PGdkGC, region: PGdkRegion){.cdecl, +proc gdk_gc_set_clip_region*(gc: PGdkGC, region: PGdkRegion){.cdecl, dynlib: gdklib, importc: "gdk_gc_set_clip_region".} -proc gdk_gc_set_subwindow*(gc: PGdkGC, mode: TGdkSubwindowMode){.cdecl, +proc gdk_gc_set_subwindow*(gc: PGdkGC, mode: TGdkSubwindowMode){.cdecl, dynlib: gdklib, importc: "gdk_gc_set_subwindow".} -proc gdk_gc_set_exposures*(gc: PGdkGC, exposures: gboolean){.cdecl, +proc gdk_gc_set_exposures*(gc: PGdkGC, exposures: gboolean){.cdecl, dynlib: gdklib, importc: "gdk_gc_set_exposures".} -proc gdk_gc_set_line_attributes*(gc: PGdkGC, line_width: gint, - line_style: TGdkLineStyle, - cap_style: TGdkCapStyle, - join_style: TGdkJoinStyle){.cdecl, +proc gdk_gc_set_line_attributes*(gc: PGdkGC, line_width: gint, + line_style: TGdkLineStyle, + cap_style: TGdkCapStyle, + join_style: TGdkJoinStyle){.cdecl, dynlib: gdklib, importc: "gdk_gc_set_line_attributes".} -proc gdk_gc_set_dashes*(gc: PGdkGC, dash_offset: gint, - dash_list: openarray[gint8]){.cdecl, dynlib: gdklib, +proc gdk_gc_set_dashes*(gc: PGdkGC, dash_offset: gint, + dash_list: openarray[gint8]){.cdecl, dynlib: gdklib, importc: "gdk_gc_set_dashes".} -proc gdk_gc_offset*(gc: PGdkGC, x_offset: gint, y_offset: gint){.cdecl, +proc gdk_gc_offset*(gc: PGdkGC, x_offset: gint, y_offset: gint){.cdecl, dynlib: gdklib, importc: "gdk_gc_offset".} -proc gdk_gc_copy*(dst_gc: PGdkGC, src_gc: PGdkGC){.cdecl, dynlib: gdklib, +proc gdk_gc_copy*(dst_gc: PGdkGC, src_gc: PGdkGC){.cdecl, dynlib: gdklib, importc: "gdk_gc_copy".} -proc gdk_gc_set_colormap*(gc: PGdkGC, colormap: PGdkColormap){.cdecl, +proc gdk_gc_set_colormap*(gc: PGdkGC, colormap: PGdkColormap){.cdecl, dynlib: gdklib, importc: "gdk_gc_set_colormap".} -proc gdk_gc_get_colormap*(gc: PGdkGC): PGdkColormap{.cdecl, dynlib: gdklib, +proc gdk_gc_get_colormap*(gc: PGdkGC): PGdkColormap{.cdecl, dynlib: gdklib, importc: "gdk_gc_get_colormap".} -proc gdk_gc_set_rgb_fg_color*(gc: PGdkGC, color: PGdkColor){.cdecl, +proc gdk_gc_set_rgb_fg_color*(gc: PGdkGC, color: PGdkColor){.cdecl, dynlib: gdklib, importc: "gdk_gc_set_rgb_fg_color".} -proc gdk_gc_set_rgb_bg_color*(gc: PGdkGC, color: PGdkColor){.cdecl, +proc gdk_gc_set_rgb_bg_color*(gc: PGdkGC, color: PGdkColor){.cdecl, dynlib: gdklib, importc: "gdk_gc_set_rgb_bg_color".} -proc gdk_gc_get_screen*(gc: PGdkGC): PGdkScreen{.cdecl, dynlib: gdklib, +proc gdk_gc_get_screen*(gc: PGdkGC): PGdkScreen{.cdecl, dynlib: gdklib, importc: "gdk_gc_get_screen".} proc GDK_TYPE_IMAGE*(): GType proc GDK_IMAGE*(anObject: Pointer): PGdkImage @@ -1322,20 +1321,20 @@ proc GDK_IMAGE_CLASS*(klass: Pointer): PGdkImageClass proc GDK_IS_IMAGE*(anObject: Pointer): bool proc GDK_IS_IMAGE_CLASS*(klass: Pointer): bool proc GDK_IMAGE_GET_CLASS*(obj: Pointer): PGdkImageClass -proc gdk_image_get_type*(): GType{.cdecl, dynlib: gdklib, +proc gdk_image_get_type*(): GType{.cdecl, dynlib: gdklib, importc: "gdk_image_get_type".} -proc gdk_image_new*(`type`: TGdkImageType, visual: PGdkVisual, width: gint, - height: gint): PGdkImage{.cdecl, dynlib: gdklib, +proc gdk_image_new*(`type`: TGdkImageType, visual: PGdkVisual, width: gint, + height: gint): PGdkImage{.cdecl, dynlib: gdklib, importc: "gdk_image_new".} proc gdk_image_put_pixel*(image: PGdkImage, x: gint, y: gint, pixel: guint32){. cdecl, dynlib: gdklib, importc: "gdk_image_put_pixel".} -proc gdk_image_get_pixel*(image: PGdkImage, x: gint, y: gint): guint32{.cdecl, +proc gdk_image_get_pixel*(image: PGdkImage, x: gint, y: gint): guint32{.cdecl, dynlib: gdklib, importc: "gdk_image_get_pixel".} -proc gdk_image_set_colormap*(image: PGdkImage, colormap: PGdkColormap){.cdecl, +proc gdk_image_set_colormap*(image: PGdkImage, colormap: PGdkColormap){.cdecl, dynlib: gdklib, importc: "gdk_image_set_colormap".} -proc gdk_image_get_colormap*(image: PGdkImage): PGdkColormap{.cdecl, +proc gdk_image_get_colormap*(image: PGdkImage): PGdkColormap{.cdecl, dynlib: gdklib, importc: "gdk_image_get_colormap".} -const +const GDK_AXIS_IGNORE* = 0 GDK_AXIS_X* = 1 GDK_AXIS_Y* = 2 @@ -1351,33 +1350,33 @@ proc GDK_DEVICE_CLASS*(klass: Pointer): PGdkDeviceClass proc GDK_IS_DEVICE*(anObject: Pointer): bool proc GDK_IS_DEVICE_CLASS*(klass: Pointer): bool proc GDK_DEVICE_GET_CLASS*(obj: Pointer): PGdkDeviceClass -proc gdk_device_get_type*(): GType{.cdecl, dynlib: gdklib, +proc gdk_device_get_type*(): GType{.cdecl, dynlib: gdklib, importc: "gdk_device_get_type".} -proc gdk_device_set_source*(device: PGdkDevice, source: TGdkInputSource){.cdecl, +proc gdk_device_set_source*(device: PGdkDevice, source: TGdkInputSource){.cdecl, dynlib: gdklib, importc: "gdk_device_set_source".} proc gdk_device_set_mode*(device: PGdkDevice, mode: TGdkInputMode): gboolean{. cdecl, dynlib: gdklib, importc: "gdk_device_set_mode".} -proc gdk_device_set_key*(device: PGdkDevice, index: guint, keyval: guint, - modifiers: TGdkModifierType){.cdecl, dynlib: gdklib, +proc gdk_device_set_key*(device: PGdkDevice, index: guint, keyval: guint, + modifiers: TGdkModifierType){.cdecl, dynlib: gdklib, importc: "gdk_device_set_key".} proc gdk_device_set_axis_use*(device: PGdkDevice, index: guint, use: TGdkAxisUse){. cdecl, dynlib: gdklib, importc: "gdk_device_set_axis_use".} -proc gdk_device_get_state*(device: PGdkDevice, window: PGdkWindow, - axes: Pgdouble, mask: PGdkModifierType){.cdecl, +proc gdk_device_get_state*(device: PGdkDevice, window: PGdkWindow, + axes: Pgdouble, mask: PGdkModifierType){.cdecl, dynlib: gdklib, importc: "gdk_device_get_state".} -proc gdk_device_get_history*(device: PGdkDevice, window: PGdkWindow, - start: guint32, stop: guint32, +proc gdk_device_get_history*(device: PGdkDevice, window: PGdkWindow, + start: guint32, stop: guint32, s: var PPGdkTimeCoord, n_events: Pgint): gboolean{. cdecl, dynlib: gdklib, importc: "gdk_device_get_history".} -proc gdk_device_free_history*(events: PPGdkTimeCoord, n_events: gint){.cdecl, +proc gdk_device_free_history*(events: PPGdkTimeCoord, n_events: gint){.cdecl, dynlib: gdklib, importc: "gdk_device_free_history".} -proc gdk_device_get_axis*(device: PGdkDevice, axes: Pgdouble, use: TGdkAxisUse, - value: Pgdouble): gboolean{.cdecl, dynlib: gdklib, +proc gdk_device_get_axis*(device: PGdkDevice, axes: Pgdouble, use: TGdkAxisUse, + value: Pgdouble): gboolean{.cdecl, dynlib: gdklib, importc: "gdk_device_get_axis".} -proc gdk_input_set_extension_events*(window: PGdkWindow, mask: gint, - mode: TGdkExtensionMode){.cdecl, +proc gdk_input_set_extension_events*(window: PGdkWindow, mask: gint, + mode: TGdkExtensionMode){.cdecl, dynlib: gdklib, importc: "gdk_input_set_extension_events".} -proc gdk_device_get_core_pointer*(): PGdkDevice{.cdecl, dynlib: gdklib, +proc gdk_device_get_core_pointer*(): PGdkDevice{.cdecl, dynlib: gdklib, importc: "gdk_device_get_core_pointer".} proc GDK_TYPE_KEYMAP*(): GType proc GDK_KEYMAP*(anObject: Pointer): PGdkKeymap @@ -1385,45 +1384,45 @@ proc GDK_KEYMAP_CLASS*(klass: Pointer): PGdkKeymapClass proc GDK_IS_KEYMAP*(anObject: Pointer): bool proc GDK_IS_KEYMAP_CLASS*(klass: Pointer): bool proc GDK_KEYMAP_GET_CLASS*(obj: Pointer): PGdkKeymapClass -proc gdk_keymap_get_type*(): GType{.cdecl, dynlib: gdklib, +proc gdk_keymap_get_type*(): GType{.cdecl, dynlib: gdklib, importc: "gdk_keymap_get_type".} -proc gdk_keymap_get_for_display*(display: PGdkDisplay): PGdkKeymap{.cdecl, +proc gdk_keymap_get_for_display*(display: PGdkDisplay): PGdkKeymap{.cdecl, dynlib: gdklib, importc: "gdk_keymap_get_for_display".} proc gdk_keymap_lookup_key*(keymap: PGdkKeymap, key: PGdkKeymapKey): guint{. cdecl, dynlib: gdklib, importc: "gdk_keymap_lookup_key".} -proc gdk_keymap_translate_keyboard_state*(keymap: PGdkKeymap, - hardware_keycode: guint, state: TGdkModifierType, group: gint, - keyval: Pguint, effective_group: Pgint, level: Pgint, - consumed_modifiers: PGdkModifierType): gboolean{.cdecl, dynlib: gdklib, +proc gdk_keymap_translate_keyboard_state*(keymap: PGdkKeymap, + hardware_keycode: guint, state: TGdkModifierType, group: gint, + keyval: Pguint, effective_group: Pgint, level: Pgint, + consumed_modifiers: PGdkModifierType): gboolean{.cdecl, dynlib: gdklib, importc: "gdk_keymap_translate_keyboard_state".} -proc gdk_keymap_get_entries_for_keyval*(keymap: PGdkKeymap, keyval: guint, +proc gdk_keymap_get_entries_for_keyval*(keymap: PGdkKeymap, keyval: guint, s: var PGdkKeymapKey, n_keys: Pgint): gboolean{. cdecl, dynlib: gdklib, importc: "gdk_keymap_get_entries_for_keyval".} -proc gdk_keymap_get_entries_for_keycode*(keymap: PGdkKeymap, - hardware_keycode: guint, s: var PGdkKeymapKey, sasdf: var Pguint, - n_entries: Pgint): gboolean{.cdecl, dynlib: gdklib, +proc gdk_keymap_get_entries_for_keycode*(keymap: PGdkKeymap, + hardware_keycode: guint, s: var PGdkKeymapKey, sasdf: var Pguint, + n_entries: Pgint): gboolean{.cdecl, dynlib: gdklib, importc: "gdk_keymap_get_entries_for_keycode".} -proc gdk_keymap_get_direction*(keymap: PGdkKeymap): TPangoDirection{.cdecl, +proc gdk_keymap_get_direction*(keymap: PGdkKeymap): TPangoDirection{.cdecl, dynlib: gdklib, importc: "gdk_keymap_get_direction".} -proc gdk_keyval_name*(keyval: guint): cstring{.cdecl, dynlib: gdklib, +proc gdk_keyval_name*(keyval: guint): cstring{.cdecl, dynlib: gdklib, importc: "gdk_keyval_name".} -proc gdk_keyval_from_name*(keyval_name: cstring): guint{.cdecl, dynlib: gdklib, +proc gdk_keyval_from_name*(keyval_name: cstring): guint{.cdecl, dynlib: gdklib, importc: "gdk_keyval_from_name".} proc gdk_keyval_convert_case*(symbol: guint, lower: Pguint, upper: Pguint){. cdecl, dynlib: gdklib, importc: "gdk_keyval_convert_case".} -proc gdk_keyval_to_upper*(keyval: guint): guint{.cdecl, dynlib: gdklib, +proc gdk_keyval_to_upper*(keyval: guint): guint{.cdecl, dynlib: gdklib, importc: "gdk_keyval_to_upper".} -proc gdk_keyval_to_lower*(keyval: guint): guint{.cdecl, dynlib: gdklib, +proc gdk_keyval_to_lower*(keyval: guint): guint{.cdecl, dynlib: gdklib, importc: "gdk_keyval_to_lower".} -proc gdk_keyval_is_upper*(keyval: guint): gboolean{.cdecl, dynlib: gdklib, +proc gdk_keyval_is_upper*(keyval: guint): gboolean{.cdecl, dynlib: gdklib, importc: "gdk_keyval_is_upper".} -proc gdk_keyval_is_lower*(keyval: guint): gboolean{.cdecl, dynlib: gdklib, +proc gdk_keyval_is_lower*(keyval: guint): gboolean{.cdecl, dynlib: gdklib, importc: "gdk_keyval_is_lower".} -proc gdk_keyval_to_unicode*(keyval: guint): guint32{.cdecl, dynlib: gdklib, +proc gdk_keyval_to_unicode*(keyval: guint): guint32{.cdecl, dynlib: gdklib, importc: "gdk_keyval_to_unicode".} -proc gdk_unicode_to_keyval*(wc: guint32): guint{.cdecl, dynlib: gdklib, +proc gdk_unicode_to_keyval*(wc: guint32): guint{.cdecl, dynlib: gdklib, importc: "gdk_unicode_to_keyval".} -const +const GDK_KEY_VoidSymbol* = 0x00FFFFFF GDK_KEY_BackSpace* = 0x0000FF08 GDK_KEY_Tab* = 0x0000FF09 @@ -2760,50 +2759,50 @@ const proc gdk_pango_context_get_for_screen*(screen: PGdkScreen): PPangoContext{. cdecl, dynlib: gdklib, importc: "gdk_pango_context_get_for_screen".} -proc gdk_pango_context_set_colormap*(context: PPangoContext, - colormap: PGdkColormap){.cdecl, +proc gdk_pango_context_set_colormap*(context: PPangoContext, + colormap: PGdkColormap){.cdecl, dynlib: gdklib, importc: "gdk_pango_context_set_colormap".} -proc gdk_pango_layout_line_get_clip_region*(line: PPangoLayoutLine, +proc gdk_pango_layout_line_get_clip_region*(line: PPangoLayoutLine, x_origin: gint, y_origin: gint, index_ranges: Pgint, n_ranges: gint): PGdkRegion{. cdecl, dynlib: gdklib, importc: "gdk_pango_layout_line_get_clip_region".} -proc gdk_pango_layout_get_clip_region*(layout: PPangoLayout, x_origin: gint, - y_origin: gint, index_ranges: Pgint, - n_ranges: gint): PGdkRegion{.cdecl, +proc gdk_pango_layout_get_clip_region*(layout: PPangoLayout, x_origin: gint, + y_origin: gint, index_ranges: Pgint, + n_ranges: gint): PGdkRegion{.cdecl, dynlib: gdklib, importc: "gdk_pango_layout_get_clip_region".} -proc gdk_pango_attr_stipple_new*(stipple: PGdkBitmap): PPangoAttribute{.cdecl, +proc gdk_pango_attr_stipple_new*(stipple: PGdkBitmap): PPangoAttribute{.cdecl, dynlib: gdklib, importc: "gdk_pango_attr_stipple_new".} -proc gdk_pango_attr_embossed_new*(embossed: gboolean): PPangoAttribute{.cdecl, +proc gdk_pango_attr_embossed_new*(embossed: gboolean): PPangoAttribute{.cdecl, dynlib: gdklib, importc: "gdk_pango_attr_embossed_new".} -proc gdk_pixbuf_render_threshold_alpha*(pixbuf: PGdkPixbuf, bitmap: PGdkBitmap, - src_x: int32, src_y: int32, - dest_x: int32, dest_y: int32, - width: int32, height: int32, - alpha_threshold: int32){.cdecl, +proc gdk_pixbuf_render_threshold_alpha*(pixbuf: PGdkPixbuf, bitmap: PGdkBitmap, + src_x: int32, src_y: int32, + dest_x: int32, dest_y: int32, + width: int32, height: int32, + alpha_threshold: int32){.cdecl, dynlib: gdklib, importc: "gdk_pixbuf_render_threshold_alpha".} -proc gdk_pixbuf_render_to_drawable*(pixbuf: PGdkPixbuf, drawable: PGdkDrawable, - gc: PGdkGC, src_x: int32, src_y: int32, - dest_x: int32, dest_y: int32, width: int32, - height: int32, dither: TGdkRgbDither, - x_dither: int32, y_dither: int32){.cdecl, +proc gdk_pixbuf_render_to_drawable*(pixbuf: PGdkPixbuf, drawable: PGdkDrawable, + gc: PGdkGC, src_x: int32, src_y: int32, + dest_x: int32, dest_y: int32, width: int32, + height: int32, dither: TGdkRgbDither, + x_dither: int32, y_dither: int32){.cdecl, dynlib: gdklib, importc: "gdk_pixbuf_render_to_drawable".} -proc gdk_pixbuf_render_to_drawable_alpha*(pixbuf: PGdkPixbuf, - drawable: PGdkDrawable, src_x: int32, src_y: int32, dest_x: int32, - dest_y: int32, width: int32, height: int32, alpha_mode: TGdkPixbufAlphaMode, - alpha_threshold: int32, dither: TGdkRgbDither, x_dither: int32, - y_dither: int32){.cdecl, dynlib: gdklib, +proc gdk_pixbuf_render_to_drawable_alpha*(pixbuf: PGdkPixbuf, + drawable: PGdkDrawable, src_x: int32, src_y: int32, dest_x: int32, + dest_y: int32, width: int32, height: int32, alpha_mode: TGdkPixbufAlphaMode, + alpha_threshold: int32, dither: TGdkRgbDither, x_dither: int32, + y_dither: int32){.cdecl, dynlib: gdklib, importc: "gdk_pixbuf_render_to_drawable_alpha".} -proc gdk_pixbuf_render_pixmap_and_mask_for_colormap*(pixbuf: PGdkPixbuf, - colormap: PGdkColormap, n: var PGdkPixmap, nasdfdsafw4e: var PGdkBitmap, +proc gdk_pixbuf_render_pixmap_and_mask_for_colormap*(pixbuf: PGdkPixbuf, + colormap: PGdkColormap, n: var PGdkPixmap, nasdfdsafw4e: var PGdkBitmap, alpha_threshold: int32){.cdecl, dynlib: gdklib, importc: "gdk_pixbuf_render_pixmap_and_mask_for_colormap".} -proc gdk_pixbuf_get_from_drawable*(dest: PGdkPixbuf, src: PGdkDrawable, - cmap: PGdkColormap, src_x: int32, - src_y: int32, dest_x: int32, dest_y: int32, +proc gdk_pixbuf_get_from_drawable*(dest: PGdkPixbuf, src: PGdkDrawable, + cmap: PGdkColormap, src_x: int32, + src_y: int32, dest_x: int32, dest_y: int32, width: int32, height: int32): PGdkPixbuf{. cdecl, dynlib: gdklib, importc: "gdk_pixbuf_get_from_drawable".} -proc gdk_pixbuf_get_from_image*(dest: PGdkPixbuf, src: PGdkImage, - cmap: PGdkColormap, src_x: int32, src_y: int32, - dest_x: int32, dest_y: int32, width: int32, - height: int32): PGdkPixbuf{.cdecl, +proc gdk_pixbuf_get_from_image*(dest: PGdkPixbuf, src: PGdkImage, + cmap: PGdkColormap, src_x: int32, src_y: int32, + dest_x: int32, dest_y: int32, width: int32, + height: int32): PGdkPixbuf{.cdecl, dynlib: gdklib, importc: "gdk_pixbuf_get_from_image".} proc GDK_TYPE_PIXMAP*(): GType proc GDK_PIXMAP*(anObject: Pointer): PGdkPixmap @@ -2812,85 +2811,85 @@ proc GDK_IS_PIXMAP*(anObject: Pointer): bool proc GDK_IS_PIXMAP_CLASS*(klass: Pointer): bool proc GDK_PIXMAP_GET_CLASS*(obj: Pointer): PGdkPixmapObjectClass proc GDK_PIXMAP_OBJECT*(anObject: Pointer): PGdkPixmapObject -proc gdk_pixmap_get_type*(): GType{.cdecl, dynlib: gdklib, +proc gdk_pixmap_get_type*(): GType{.cdecl, dynlib: gdklib, importc: "gdk_pixmap_get_type".} proc gdk_pixmap_new*(window: PGdkWindow, width: gint, height: gint, depth: gint): PGdkPixmap{. cdecl, dynlib: gdklib, importc: "gdk_pixmap_new".} -proc gdk_bitmap_create_from_data*(window: PGdkWindow, data: cstring, width: gint, - height: gint): PGdkBitmap{.cdecl, +proc gdk_bitmap_create_from_data*(window: PGdkWindow, data: cstring, width: gint, + height: gint): PGdkBitmap{.cdecl, dynlib: gdklib, importc: "gdk_bitmap_create_from_data".} -proc gdk_pixmap_create_from_data*(window: PGdkWindow, data: cstring, width: gint, - height: gint, depth: gint, fg: PGdkColor, - bg: PGdkColor): PGdkPixmap{.cdecl, +proc gdk_pixmap_create_from_data*(window: PGdkWindow, data: cstring, width: gint, + height: gint, depth: gint, fg: PGdkColor, + bg: PGdkColor): PGdkPixmap{.cdecl, dynlib: gdklib, importc: "gdk_pixmap_create_from_data".} -proc gdk_pixmap_create_from_xpm*(window: PGdkWindow, k: var PGdkBitmap, +proc gdk_pixmap_create_from_xpm*(window: PGdkWindow, k: var PGdkBitmap, transparent_color: PGdkColor, filename: cstring): PGdkPixmap{. cdecl, dynlib: gdklib, importc: "gdk_pixmap_create_from_xpm".} -proc gdk_pixmap_colormap_create_from_xpm*(window: PGdkWindow, - colormap: PGdkColormap, k: var PGdkBitmap, transparent_color: PGdkColor, +proc gdk_pixmap_colormap_create_from_xpm*(window: PGdkWindow, + colormap: PGdkColormap, k: var PGdkBitmap, transparent_color: PGdkColor, filename: cstring): PGdkPixmap{.cdecl, dynlib: gdklib, importc: "gdk_pixmap_colormap_create_from_xpm".} -proc gdk_pixmap_create_from_xpm_d*(window: PGdkWindow, k: var PGdkBitmap, +proc gdk_pixmap_create_from_xpm_d*(window: PGdkWindow, k: var PGdkBitmap, transparent_color: PGdkColor, data: PPgchar): PGdkPixmap{. cdecl, dynlib: gdklib, importc: "gdk_pixmap_create_from_xpm_d".} -proc gdk_pixmap_colormap_create_from_xpm_d*(window: PGdkWindow, - colormap: PGdkColormap, k: var PGdkBitmap, transparent_color: PGdkColor, +proc gdk_pixmap_colormap_create_from_xpm_d*(window: PGdkWindow, + colormap: PGdkColormap, k: var PGdkBitmap, transparent_color: PGdkColor, data: PPgchar): PGdkPixmap{.cdecl, dynlib: gdklib, importc: "gdk_pixmap_colormap_create_from_xpm_d".} -proc gdk_pixmap_foreign_new_for_display*(display: PGdkDisplay, - anid: TGdkNativeWindow): PGdkPixmap{.cdecl, dynlib: gdklib, +proc gdk_pixmap_foreign_new_for_display*(display: PGdkDisplay, + anid: TGdkNativeWindow): PGdkPixmap{.cdecl, dynlib: gdklib, importc: "gdk_pixmap_foreign_new_for_display".} proc gdk_pixmap_lookup_for_display*(display: PGdkDisplay, anid: TGdkNativeWindow): PGdkPixmap{. cdecl, dynlib: gdklib, importc: "gdk_pixmap_lookup_for_display".} proc gdk_atom_intern*(atom_name: cstring, only_if_exists: gboolean): TGdkAtom{. cdecl, dynlib: gdklib, importc: "gdk_atom_intern".} -proc gdk_atom_name*(atom: TGdkAtom): cstring{.cdecl, dynlib: gdklib, +proc gdk_atom_name*(atom: TGdkAtom): cstring{.cdecl, dynlib: gdklib, importc: "gdk_atom_name".} -proc gdk_property_get*(window: PGdkWindow, `property`: TGdkAtom, - `type`: TGdkAtom, offset: gulong, length: gulong, - pdelete: gint, actual_property_type: PGdkAtom, - actual_format: Pgint, actual_length: Pgint, - data: PPguchar): gboolean{.cdecl, dynlib: gdklib, +proc gdk_property_get*(window: PGdkWindow, `property`: TGdkAtom, + `type`: TGdkAtom, offset: gulong, length: gulong, + pdelete: gint, actual_property_type: PGdkAtom, + actual_format: Pgint, actual_length: Pgint, + data: PPguchar): gboolean{.cdecl, dynlib: gdklib, importc: "gdk_property_get".} -proc gdk_property_change*(window: PGdkWindow, `property`: TGdkAtom, - `type`: TGdkAtom, format: gint, mode: TGdkPropMode, - data: Pguchar, nelements: gint){.cdecl, +proc gdk_property_change*(window: PGdkWindow, `property`: TGdkAtom, + `type`: TGdkAtom, format: gint, mode: TGdkPropMode, + data: Pguchar, nelements: gint){.cdecl, dynlib: gdklib, importc: "gdk_property_change".} -proc gdk_property_delete*(window: PGdkWindow, `property`: TGdkAtom){.cdecl, +proc gdk_property_delete*(window: PGdkWindow, `property`: TGdkAtom){.cdecl, dynlib: gdklib, importc: "gdk_property_delete".} -proc gdk_text_property_to_text_list_for_display*(display: PGdkDisplay, - encoding: TGdkAtom, format: gint, text: Pguchar, length: gint, +proc gdk_text_property_to_text_list_for_display*(display: PGdkDisplay, + encoding: TGdkAtom, format: gint, text: Pguchar, length: gint, t: var PPgchar): gint{.cdecl, dynlib: gdklib, importc: "gdk_text_property_to_text_list_for_display".} -proc gdk_text_property_to_utf8_list_for_display*(display: PGdkDisplay, - encoding: TGdkAtom, format: gint, text: Pguchar, length: gint, +proc gdk_text_property_to_utf8_list_for_display*(display: PGdkDisplay, + encoding: TGdkAtom, format: gint, text: Pguchar, length: gint, t: var PPgchar): gint{.cdecl, dynlib: gdklib, importc: "gdk_text_property_to_utf8_list_for_display".} -proc gdk_utf8_to_string_target*(str: cstring): cstring{.cdecl, dynlib: gdklib, +proc gdk_utf8_to_string_target*(str: cstring): cstring{.cdecl, dynlib: gdklib, importc: "gdk_utf8_to_string_target".} -proc gdk_string_to_compound_text_for_display*(display: PGdkDisplay, str: cstring, +proc gdk_string_to_compound_text_for_display*(display: PGdkDisplay, str: cstring, encoding: PGdkAtom, format: Pgint, ctext: PPguchar, length: Pgint): gint{. cdecl, dynlib: gdklib, importc: "gdk_string_to_compound_text_for_display".} -proc gdk_utf8_to_compound_text_for_display*(display: PGdkDisplay, str: cstring, +proc gdk_utf8_to_compound_text_for_display*(display: PGdkDisplay, str: cstring, encoding: PGdkAtom, format: Pgint, ctext: PPguchar, length: Pgint): gboolean{. cdecl, dynlib: gdklib, importc: "gdk_utf8_to_compound_text_for_display".} -proc gdk_free_text_list*(list: PPgchar){.cdecl, dynlib: gdklib, +proc gdk_free_text_list*(list: PPgchar){.cdecl, dynlib: gdklib, importc: "gdk_free_text_list".} -proc gdk_free_compound_text*(ctext: Pguchar){.cdecl, dynlib: gdklib, +proc gdk_free_compound_text*(ctext: Pguchar){.cdecl, dynlib: gdklib, importc: "gdk_free_compound_text".} -proc gdk_region_new*(): PGdkRegion{.cdecl, dynlib: gdklib, +proc gdk_region_new*(): PGdkRegion{.cdecl, dynlib: gdklib, importc: "gdk_region_new".} -proc gdk_region_polygon*(points: PGdkPoint, npoints: gint, - fill_rule: TGdkFillRule): PGdkRegion{.cdecl, +proc gdk_region_polygon*(points: PGdkPoint, npoints: gint, + fill_rule: TGdkFillRule): PGdkRegion{.cdecl, dynlib: gdklib, importc: "gdk_region_polygon".} -proc gdk_region_copy*(region: PGdkRegion): PGdkRegion{.cdecl, dynlib: gdklib, +proc gdk_region_copy*(region: PGdkRegion): PGdkRegion{.cdecl, dynlib: gdklib, importc: "gdk_region_copy".} -proc gdk_region_rectangle*(rectangle: PGdkRectangle): PGdkRegion{.cdecl, +proc gdk_region_rectangle*(rectangle: PGdkRectangle): PGdkRegion{.cdecl, dynlib: gdklib, importc: "gdk_region_rectangle".} -proc gdk_region_destroy*(region: PGdkRegion){.cdecl, dynlib: gdklib, +proc gdk_region_destroy*(region: PGdkRegion){.cdecl, dynlib: gdklib, importc: "gdk_region_destroy".} proc gdk_region_get_clipbox*(region: PGdkRegion, rectangle: PGdkRectangle){. cdecl, dynlib: gdklib, importc: "gdk_region_get_clipbox".} -proc gdk_region_get_rectangles*(region: PGdkRegion, s: var PGdkRectangle, - n_rectangles: Pgint){.cdecl, dynlib: gdklib, +proc gdk_region_get_rectangles*(region: PGdkRegion, s: var PGdkRectangle, + n_rectangles: Pgint){.cdecl, dynlib: gdklib, importc: "gdk_region_get_rectangles".} -proc gdk_region_empty*(region: PGdkRegion): gboolean{.cdecl, dynlib: gdklib, +proc gdk_region_empty*(region: PGdkRegion): gboolean{.cdecl, dynlib: gdklib, importc: "gdk_region_empty".} proc gdk_region_equal*(region1: PGdkRegion, region2: PGdkRegion): gboolean{. cdecl, dynlib: gdklib, importc: "gdk_region_equal".} @@ -2898,62 +2897,62 @@ proc gdk_region_point_in*(region: PGdkRegion, x: int32, y: int32): gboolean{. cdecl, dynlib: gdklib, importc: "gdk_region_point_in".} proc gdk_region_rect_in*(region: PGdkRegion, rect: PGdkRectangle): TGdkOverlapType{. cdecl, dynlib: gdklib, importc: "gdk_region_rect_in".} -proc gdk_region_offset*(region: PGdkRegion, dx: gint, dy: gint){.cdecl, +proc gdk_region_offset*(region: PGdkRegion, dx: gint, dy: gint){.cdecl, dynlib: gdklib, importc: "gdk_region_offset".} -proc gdk_region_shrink*(region: PGdkRegion, dx: gint, dy: gint){.cdecl, +proc gdk_region_shrink*(region: PGdkRegion, dx: gint, dy: gint){.cdecl, dynlib: gdklib, importc: "gdk_region_shrink".} proc gdk_region_union_with_rect*(region: PGdkRegion, rect: PGdkRectangle){. cdecl, dynlib: gdklib, importc: "gdk_region_union_with_rect".} -proc gdk_region_intersect*(source1: PGdkRegion, source2: PGdkRegion){.cdecl, +proc gdk_region_intersect*(source1: PGdkRegion, source2: PGdkRegion){.cdecl, dynlib: gdklib, importc: "gdk_region_intersect".} -proc gdk_region_union*(source1: PGdkRegion, source2: PGdkRegion){.cdecl, +proc gdk_region_union*(source1: PGdkRegion, source2: PGdkRegion){.cdecl, dynlib: gdklib, importc: "gdk_region_union".} -proc gdk_region_subtract*(source1: PGdkRegion, source2: PGdkRegion){.cdecl, +proc gdk_region_subtract*(source1: PGdkRegion, source2: PGdkRegion){.cdecl, dynlib: gdklib, importc: "gdk_region_subtract".} -proc gdk_region_xor*(source1: PGdkRegion, source2: PGdkRegion){.cdecl, +proc gdk_region_xor*(source1: PGdkRegion, source2: PGdkRegion){.cdecl, dynlib: gdklib, importc: "gdk_region_xor".} -proc gdk_region_spans_intersect_foreach*(region: PGdkRegion, spans: PGdkSpan, +proc gdk_region_spans_intersect_foreach*(region: PGdkRegion, spans: PGdkSpan, n_spans: int32, sorted: gboolean, `function`: TGdkSpanFunc, data: gpointer){. cdecl, dynlib: gdklib, importc: "gdk_region_spans_intersect_foreach".} -proc gdk_rgb_find_color*(colormap: PGdkColormap, color: PGdkColor){.cdecl, +proc gdk_rgb_find_color*(colormap: PGdkColormap, color: PGdkColor){.cdecl, dynlib: gdklib, importc: "gdk_rgb_find_color".} -proc gdk_draw_rgb_image*(drawable: PGdkDrawable, gc: PGdkGC, x: gint, y: gint, - width: gint, height: gint, dith: TGdkRgbDither, - rgb_buf: Pguchar, rowstride: gint){.cdecl, +proc gdk_draw_rgb_image*(drawable: PGdkDrawable, gc: PGdkGC, x: gint, y: gint, + width: gint, height: gint, dith: TGdkRgbDither, + rgb_buf: Pguchar, rowstride: gint){.cdecl, dynlib: gdklib, importc: "gdk_draw_rgb_image".} -proc gdk_draw_rgb_image_dithalign*(drawable: PGdkDrawable, gc: PGdkGC, x: gint, - y: gint, width: gint, height: gint, - dith: TGdkRgbDither, rgb_buf: Pguchar, +proc gdk_draw_rgb_image_dithalign*(drawable: PGdkDrawable, gc: PGdkGC, x: gint, + y: gint, width: gint, height: gint, + dith: TGdkRgbDither, rgb_buf: Pguchar, rowstride: gint, xdith: gint, ydith: gint){. cdecl, dynlib: gdklib, importc: "gdk_draw_rgb_image_dithalign".} -proc gdk_draw_rgb_32_image*(drawable: PGdkDrawable, gc: PGdkGC, x: gint, - y: gint, width: gint, height: gint, +proc gdk_draw_rgb_32_image*(drawable: PGdkDrawable, gc: PGdkGC, x: gint, + y: gint, width: gint, height: gint, dith: TGdkRgbDither, buf: Pguchar, rowstride: gint){. cdecl, dynlib: gdklib, importc: "gdk_draw_rgb_32_image".} -proc gdk_draw_rgb_32_image_dithalign*(drawable: PGdkDrawable, gc: PGdkGC, - x: gint, y: gint, width: gint, - height: gint, dith: TGdkRgbDither, - buf: Pguchar, rowstride: gint, - xdith: gint, ydith: gint){.cdecl, +proc gdk_draw_rgb_32_image_dithalign*(drawable: PGdkDrawable, gc: PGdkGC, + x: gint, y: gint, width: gint, + height: gint, dith: TGdkRgbDither, + buf: Pguchar, rowstride: gint, + xdith: gint, ydith: gint){.cdecl, dynlib: gdklib, importc: "gdk_draw_rgb_32_image_dithalign".} -proc gdk_draw_gray_image*(drawable: PGdkDrawable, gc: PGdkGC, x: gint, y: gint, - width: gint, height: gint, dith: TGdkRgbDither, - buf: Pguchar, rowstride: gint){.cdecl, dynlib: gdklib, +proc gdk_draw_gray_image*(drawable: PGdkDrawable, gc: PGdkGC, x: gint, y: gint, + width: gint, height: gint, dith: TGdkRgbDither, + buf: Pguchar, rowstride: gint){.cdecl, dynlib: gdklib, importc: "gdk_draw_gray_image".} -proc gdk_draw_indexed_image*(drawable: PGdkDrawable, gc: PGdkGC, x: gint, - y: gint, width: gint, height: gint, - dith: TGdkRgbDither, buf: Pguchar, rowstride: gint, - cmap: PGdkRgbCmap){.cdecl, dynlib: gdklib, +proc gdk_draw_indexed_image*(drawable: PGdkDrawable, gc: PGdkGC, x: gint, + y: gint, width: gint, height: gint, + dith: TGdkRgbDither, buf: Pguchar, rowstride: gint, + cmap: PGdkRgbCmap){.cdecl, dynlib: gdklib, importc: "gdk_draw_indexed_image".} -proc gdk_rgb_cmap_new*(colors: Pguint32, n_colors: gint): PGdkRgbCmap{.cdecl, +proc gdk_rgb_cmap_new*(colors: Pguint32, n_colors: gint): PGdkRgbCmap{.cdecl, dynlib: gdklib, importc: "gdk_rgb_cmap_new".} -proc gdk_rgb_cmap_free*(cmap: PGdkRgbCmap){.cdecl, dynlib: gdklib, +proc gdk_rgb_cmap_free*(cmap: PGdkRgbCmap){.cdecl, dynlib: gdklib, importc: "gdk_rgb_cmap_free".} -proc gdk_rgb_set_verbose*(verbose: gboolean){.cdecl, dynlib: gdklib, +proc gdk_rgb_set_verbose*(verbose: gboolean){.cdecl, dynlib: gdklib, importc: "gdk_rgb_set_verbose".} -proc gdk_rgb_set_install*(install: gboolean){.cdecl, dynlib: gdklib, +proc gdk_rgb_set_install*(install: gboolean){.cdecl, dynlib: gdklib, importc: "gdk_rgb_set_install".} -proc gdk_rgb_set_min_colors*(min_colors: gint){.cdecl, dynlib: gdklib, +proc gdk_rgb_set_min_colors*(min_colors: gint){.cdecl, dynlib: gdklib, importc: "gdk_rgb_set_min_colors".} proc GDK_TYPE_DISPLAY*(): GType proc GDK_DISPLAY_OBJECT*(anObject: pointer): PGdkDisplay @@ -2961,46 +2960,46 @@ proc GDK_DISPLAY_CLASS*(klass: pointer): PGdkDisplayClass proc GDK_IS_DISPLAY*(anObject: pointer): bool proc GDK_IS_DISPLAY_CLASS*(klass: pointer): bool proc GDK_DISPLAY_GET_CLASS*(obj: pointer): PGdkDisplayClass -proc gdk_display_open*(display_name: cstring): PGdkDisplay{.cdecl, +proc gdk_display_open*(display_name: cstring): PGdkDisplay{.cdecl, dynlib: gdklib, importc: "gdk_display_open".} -proc gdk_display_get_name*(display: PGdkDisplay): cstring{.cdecl, dynlib: gdklib, +proc gdk_display_get_name*(display: PGdkDisplay): cstring{.cdecl, dynlib: gdklib, importc: "gdk_display_get_name".} -proc gdk_display_get_n_screens*(display: PGdkDisplay): gint{.cdecl, +proc gdk_display_get_n_screens*(display: PGdkDisplay): gint{.cdecl, dynlib: gdklib, importc: "gdk_display_get_n_screens".} proc gdk_display_get_screen*(display: PGdkDisplay, screen_num: gint): PGdkScreen{. cdecl, dynlib: gdklib, importc: "gdk_display_get_screen".} -proc gdk_display_get_default_screen*(display: PGdkDisplay): PGdkScreen{.cdecl, +proc gdk_display_get_default_screen*(display: PGdkDisplay): PGdkScreen{.cdecl, dynlib: gdklib, importc: "gdk_display_get_default_screen".} -proc gdk_display_pointer_ungrab*(display: PGdkDisplay, time: guint32){.cdecl, +proc gdk_display_pointer_ungrab*(display: PGdkDisplay, time: guint32){.cdecl, dynlib: gdklib, importc: "gdk_display_pointer_ungrab".} -proc gdk_display_keyboard_ungrab*(display: PGdkDisplay, time: guint32){.cdecl, +proc gdk_display_keyboard_ungrab*(display: PGdkDisplay, time: guint32){.cdecl, dynlib: gdklib, importc: "gdk_display_keyboard_ungrab".} -proc gdk_display_pointer_is_grabbed*(display: PGdkDisplay): gboolean{.cdecl, +proc gdk_display_pointer_is_grabbed*(display: PGdkDisplay): gboolean{.cdecl, dynlib: gdklib, importc: "gdk_display_pointer_is_grabbed".} -proc gdk_display_beep*(display: PGdkDisplay){.cdecl, dynlib: gdklib, +proc gdk_display_beep*(display: PGdkDisplay){.cdecl, dynlib: gdklib, importc: "gdk_display_beep".} -proc gdk_display_sync*(display: PGdkDisplay){.cdecl, dynlib: gdklib, +proc gdk_display_sync*(display: PGdkDisplay){.cdecl, dynlib: gdklib, importc: "gdk_display_sync".} -proc gdk_display_close*(display: PGdkDisplay){.cdecl, dynlib: gdklib, +proc gdk_display_close*(display: PGdkDisplay){.cdecl, dynlib: gdklib, importc: "gdk_display_close".} -proc gdk_display_list_devices*(display: PGdkDisplay): PGList{.cdecl, +proc gdk_display_list_devices*(display: PGdkDisplay): PGList{.cdecl, dynlib: gdklib, importc: "gdk_display_list_devices".} -proc gdk_display_get_event*(display: PGdkDisplay): PGdkEvent{.cdecl, +proc gdk_display_get_event*(display: PGdkDisplay): PGdkEvent{.cdecl, dynlib: gdklib, importc: "gdk_display_get_event".} -proc gdk_display_peek_event*(display: PGdkDisplay): PGdkEvent{.cdecl, +proc gdk_display_peek_event*(display: PGdkDisplay): PGdkEvent{.cdecl, dynlib: gdklib, importc: "gdk_display_peek_event".} -proc gdk_display_put_event*(display: PGdkDisplay, event: PGdkEvent){.cdecl, +proc gdk_display_put_event*(display: PGdkDisplay, event: PGdkEvent){.cdecl, dynlib: gdklib, importc: "gdk_display_put_event".} -proc gdk_display_add_client_message_filter*(display: PGdkDisplay, - message_type: TGdkAtom, func: TGdkFilterFunc, data: gpointer){.cdecl, +proc gdk_display_add_client_message_filter*(display: PGdkDisplay, + message_type: TGdkAtom, func: TGdkFilterFunc, data: gpointer){.cdecl, dynlib: gdklib, importc: "gdk_display_add_client_message_filter".} proc gdk_display_set_double_click_time*(display: PGdkDisplay, msec: guint){. cdecl, dynlib: gdklib, importc: "gdk_display_set_double_click_time".} proc gdk_display_set_sm_client_id*(display: PGdkDisplay, sm_client_id: cstring){. cdecl, dynlib: gdklib, importc: "gdk_display_set_sm_client_id".} -proc gdk_set_default_display*(display: PGdkDisplay){.cdecl, dynlib: gdklib, +proc gdk_set_default_display*(display: PGdkDisplay){.cdecl, dynlib: gdklib, importc: "gdk_set_default_display".} -proc gdk_get_default_display*(): PGdkDisplay{.cdecl, dynlib: gdklib, +proc gdk_get_default_display*(): PGdkDisplay{.cdecl, dynlib: gdklib, importc: "gdk_get_default_display".} proc GDK_TYPE_SCREEN*(): GType proc GDK_SCREEN*(anObject: Pointer): PGdkScreen @@ -3008,45 +3007,45 @@ proc GDK_SCREEN_CLASS*(klass: Pointer): PGdkScreenClass proc GDK_IS_SCREEN*(anObject: Pointer): bool proc GDK_IS_SCREEN_CLASS*(klass: Pointer): bool proc GDK_SCREEN_GET_CLASS*(obj: Pointer): PGdkScreenClass -proc gdk_screen_get_default_colormap*(screen: PGdkScreen): PGdkColormap{.cdecl, +proc gdk_screen_get_default_colormap*(screen: PGdkScreen): PGdkColormap{.cdecl, dynlib: gdklib, importc: "gdk_screen_get_default_colormap".} proc gdk_screen_set_default_colormap*(screen: PGdkScreen, colormap: PGdkColormap){. cdecl, dynlib: gdklib, importc: "gdk_screen_set_default_colormap".} -proc gdk_screen_get_system_colormap*(screen: PGdkScreen): PGdkColormap{.cdecl, +proc gdk_screen_get_system_colormap*(screen: PGdkScreen): PGdkColormap{.cdecl, dynlib: gdklib, importc: "gdk_screen_get_system_colormap".} -proc gdk_screen_get_system_visual*(screen: PGdkScreen): PGdkVisual{.cdecl, +proc gdk_screen_get_system_visual*(screen: PGdkScreen): PGdkVisual{.cdecl, dynlib: gdklib, importc: "gdk_screen_get_system_visual".} -proc gdk_screen_get_rgb_colormap*(screen: PGdkScreen): PGdkColormap{.cdecl, +proc gdk_screen_get_rgb_colormap*(screen: PGdkScreen): PGdkColormap{.cdecl, dynlib: gdklib, importc: "gdk_screen_get_rgb_colormap".} -proc gdk_screen_get_rgb_visual*(screen: PGdkScreen): PGdkVisual{.cdecl, +proc gdk_screen_get_rgb_visual*(screen: PGdkScreen): PGdkVisual{.cdecl, dynlib: gdklib, importc: "gdk_screen_get_rgb_visual".} -proc gdk_screen_get_root_window*(screen: PGdkScreen): PGdkWindow{.cdecl, +proc gdk_screen_get_root_window*(screen: PGdkScreen): PGdkWindow{.cdecl, dynlib: gdklib, importc: "gdk_screen_get_root_window".} -proc gdk_screen_get_display*(screen: PGdkScreen): PGdkDisplay{.cdecl, +proc gdk_screen_get_display*(screen: PGdkScreen): PGdkDisplay{.cdecl, dynlib: gdklib, importc: "gdk_screen_get_display".} -proc gdk_screen_get_number*(screen: PGdkScreen): gint{.cdecl, dynlib: gdklib, +proc gdk_screen_get_number*(screen: PGdkScreen): gint{.cdecl, dynlib: gdklib, importc: "gdk_screen_get_number".} -proc gdk_screen_get_window_at_pointer*(screen: PGdkScreen, win_x: Pgint, - win_y: Pgint): PGdkWindow{.cdecl, +proc gdk_screen_get_window_at_pointer*(screen: PGdkScreen, win_x: Pgint, + win_y: Pgint): PGdkWindow{.cdecl, dynlib: gdklib, importc: "gdk_screen_get_window_at_pointer".} -proc gdk_screen_get_width*(screen: PGdkScreen): gint{.cdecl, dynlib: gdklib, +proc gdk_screen_get_width*(screen: PGdkScreen): gint{.cdecl, dynlib: gdklib, importc: "gdk_screen_get_width".} -proc gdk_screen_get_height*(screen: PGdkScreen): gint{.cdecl, dynlib: gdklib, +proc gdk_screen_get_height*(screen: PGdkScreen): gint{.cdecl, dynlib: gdklib, importc: "gdk_screen_get_height".} -proc gdk_screen_get_width_mm*(screen: PGdkScreen): gint{.cdecl, dynlib: gdklib, +proc gdk_screen_get_width_mm*(screen: PGdkScreen): gint{.cdecl, dynlib: gdklib, importc: "gdk_screen_get_width_mm".} -proc gdk_screen_get_height_mm*(screen: PGdkScreen): gint{.cdecl, dynlib: gdklib, +proc gdk_screen_get_height_mm*(screen: PGdkScreen): gint{.cdecl, dynlib: gdklib, importc: "gdk_screen_get_height_mm".} -proc gdk_screen_close*(screen: PGdkScreen){.cdecl, dynlib: gdklib, +proc gdk_screen_close*(screen: PGdkScreen){.cdecl, dynlib: gdklib, importc: "gdk_screen_close".} -proc gdk_screen_list_visuals*(screen: PGdkScreen): PGList{.cdecl, +proc gdk_screen_list_visuals*(screen: PGdkScreen): PGList{.cdecl, dynlib: gdklib, importc: "gdk_screen_list_visuals".} -proc gdk_screen_get_toplevel_windows*(screen: PGdkScreen): PGList{.cdecl, +proc gdk_screen_get_toplevel_windows*(screen: PGdkScreen): PGList{.cdecl, dynlib: gdklib, importc: "gdk_screen_get_toplevel_windows".} -proc gdk_screen_get_n_monitors*(screen: PGdkScreen): gint{.cdecl, +proc gdk_screen_get_n_monitors*(screen: PGdkScreen): gint{.cdecl, dynlib: gdklib, importc: "gdk_screen_get_n_monitors".} -proc gdk_screen_get_monitor_geometry*(screen: PGdkScreen, monitor_num: gint, - dest: PGdkRectangle){.cdecl, +proc gdk_screen_get_monitor_geometry*(screen: PGdkScreen, monitor_num: gint, + dest: PGdkRectangle){.cdecl, dynlib: gdklib, importc: "gdk_screen_get_monitor_geometry".} proc gdk_screen_get_monitor_at_point*(screen: PGdkScreen, x: gint, y: gint): gint{. cdecl, dynlib: gdklib, importc: "gdk_screen_get_monitor_at_point".} @@ -3054,7 +3053,7 @@ proc gdk_screen_get_monitor_at_window*(screen: PGdkScreen, window: PGdkWindow): cdecl, dynlib: gdklib, importc: "gdk_screen_get_monitor_at_window".} proc gdk_screen_broadcast_client_message*(screen: PGdkScreen, event: PGdkEvent){. cdecl, dynlib: gdklib, importc: "gdk_screen_broadcast_client_message".} -proc gdk_get_default_screen*(): PGdkScreen{.cdecl, dynlib: gdklib, +proc gdk_get_default_screen*(): PGdkScreen{.cdecl, dynlib: gdklib, importc: "gdk_get_default_screen".} proc gdk_screen_get_setting*(screen: PGdkScreen, name: cstring, value: PGValue): gboolean{. cdecl, dynlib: gdklib, importc: "gdk_screen_get_setting".} @@ -3074,22 +3073,22 @@ proc GDK_SELECTION_TYPE_INTEGER*(): TGdkAtom proc GDK_SELECTION_TYPE_PIXMAP*(): TGdkAtom proc GDK_SELECTION_TYPE_WINDOW*(): TGdkAtom proc GDK_SELECTION_TYPE_STRING*(): TGdkAtom -proc gdk_selection_owner_set_for_display*(display: PGdkDisplay, +proc gdk_selection_owner_set_for_display*(display: PGdkDisplay, owner: PGdkWindow, selection: TGdkAtom, time: guint32, send_event: gboolean): gboolean{. cdecl, dynlib: gdklib, importc: "gdk_selection_owner_set_for_display".} -proc gdk_selection_owner_get_for_display*(display: PGdkDisplay, +proc gdk_selection_owner_get_for_display*(display: PGdkDisplay, selection: TGdkAtom): PGdkWindow{.cdecl, dynlib: gdklib, importc: "gdk_selection_owner_get_for_display".} -proc gdk_selection_convert*(requestor: PGdkWindow, selection: TGdkAtom, - target: TGdkAtom, time: guint32){.cdecl, +proc gdk_selection_convert*(requestor: PGdkWindow, selection: TGdkAtom, + target: TGdkAtom, time: guint32){.cdecl, dynlib: gdklib, importc: "gdk_selection_convert".} -proc gdk_selection_property_get*(requestor: PGdkWindow, data: PPguchar, +proc gdk_selection_property_get*(requestor: PGdkWindow, data: PPguchar, prop_type: PGdkAtom, prop_format: Pgint): gboolean{. cdecl, dynlib: gdklib, importc: "gdk_selection_property_get".} -proc gdk_selection_send_notify_for_display*(display: PGdkDisplay, - requestor: guint32, selection: TGdkAtom, target: TGdkAtom, - `property`: TGdkAtom, time: guint32){.cdecl, dynlib: gdklib, +proc gdk_selection_send_notify_for_display*(display: PGdkDisplay, + requestor: guint32, selection: TGdkAtom, target: TGdkAtom, + `property`: TGdkAtom, time: guint32){.cdecl, dynlib: gdklib, importc: "gdk_selection_send_notify_for_display".} -const +const GDK_CURRENT_TIME* = 0 GDK_PARENT_RELATIVE* = 1 GDK_OK* = 0 @@ -3131,9 +3130,9 @@ proc GDK_VISUAL_CLASS*(klass: Pointer): PGdkVisualClass proc GDK_IS_VISUAL*(anObject: Pointer): bool proc GDK_IS_VISUAL_CLASS*(klass: Pointer): bool proc GDK_VISUAL_GET_CLASS*(obj: Pointer): PGdkVisualClass -proc gdk_visual_get_type*(): GType{.cdecl, dynlib: gdklib, +proc gdk_visual_get_type*(): GType{.cdecl, dynlib: gdklib, importc: "gdk_visual_get_type".} -const +const GDK_WA_TITLE* = 1 shl 1 GDK_WA_X* = 1 shl 2 GDK_WA_Y* = 1 shl 3 @@ -3182,776 +3181,776 @@ proc GDK_IS_WINDOW*(anObject: Pointer): bool proc GDK_IS_WINDOW_CLASS*(klass: Pointer): bool proc GDK_WINDOW_GET_CLASS*(obj: Pointer): PGdkWindowObjectClass proc GDK_WINDOW_OBJECT*(anObject: Pointer): PGdkWindowObject -const - bm_TGdkWindowObject_guffaw_gravity* = 0x00000001 - bp_TGdkWindowObject_guffaw_gravity* = 0 - bm_TGdkWindowObject_input_only* = 0x00000002 - bp_TGdkWindowObject_input_only* = 1 - bm_TGdkWindowObject_modal_hint* = 0x00000004 - bp_TGdkWindowObject_modal_hint* = 2 - bm_TGdkWindowObject_destroyed* = 0x00000018 - bp_TGdkWindowObject_destroyed* = 3 +const + bm_TGdkWindowObject_guffaw_gravity* = 0x00000001'i16 + bp_TGdkWindowObject_guffaw_gravity* = 0'i16 + bm_TGdkWindowObject_input_only* = 0x00000002'i16 + bp_TGdkWindowObject_input_only* = 1'i16 + bm_TGdkWindowObject_modal_hint* = 0x00000004'i16 + bp_TGdkWindowObject_modal_hint* = 2'i16 + bm_TGdkWindowObject_destroyed* = 0x00000018'i16 + bp_TGdkWindowObject_destroyed* = 3'i16 proc GdkWindowObject_guffaw_gravity*(a: var TGdkWindowObject): guint -proc GdkWindowObject_set_guffaw_gravity*(a: var TGdkWindowObject, +proc GdkWindowObject_set_guffaw_gravity*(a: var TGdkWindowObject, `guffaw_gravity`: guint) proc GdkWindowObject_input_only*(a: var TGdkWindowObject): guint -proc GdkWindowObject_set_input_only*(a: var TGdkWindowObject, +proc GdkWindowObject_set_input_only*(a: var TGdkWindowObject, `input_only`: guint) proc GdkWindowObject_modal_hint*(a: var TGdkWindowObject): guint -proc GdkWindowObject_set_modal_hint*(a: var TGdkWindowObject, +proc GdkWindowObject_set_modal_hint*(a: var TGdkWindowObject, `modal_hint`: guint) proc GdkWindowObject_destroyed*(a: var TGdkWindowObject): guint proc GdkWindowObject_set_destroyed*(a: var TGdkWindowObject, `destroyed`: guint) -proc gdk_window_object_get_type*(): GType{.cdecl, dynlib: gdklib, +proc gdk_window_object_get_type*(): GType{.cdecl, dynlib: gdklib, importc: "gdk_window_object_get_type".} -proc gdk_window_new*(parent: PGdkWindow, attributes: PGdkWindowAttr, - attributes_mask: gint): PGdkWindow{.cdecl, dynlib: gdklib, +proc gdk_window_new*(parent: PGdkWindow, attributes: PGdkWindowAttr, + attributes_mask: gint): PGdkWindow{.cdecl, dynlib: gdklib, importc: "gdk_window_new".} -proc gdk_window_destroy*(window: PGdkWindow){.cdecl, dynlib: gdklib, +proc gdk_window_destroy*(window: PGdkWindow){.cdecl, dynlib: gdklib, importc: "gdk_window_destroy".} -proc gdk_window_get_window_type*(window: PGdkWindow): TGdkWindowType{.cdecl, +proc gdk_window_get_window_type*(window: PGdkWindow): TGdkWindowType{.cdecl, dynlib: gdklib, importc: "gdk_window_get_window_type".} -proc gdk_window_at_pointer*(win_x: Pgint, win_y: Pgint): PGdkWindow{.cdecl, +proc gdk_window_at_pointer*(win_x: Pgint, win_y: Pgint): PGdkWindow{.cdecl, dynlib: gdklib, importc: "gdk_window_at_pointer".} -proc gdk_window_show*(window: PGdkWindow){.cdecl, dynlib: gdklib, +proc gdk_window_show*(window: PGdkWindow){.cdecl, dynlib: gdklib, importc: "gdk_window_show".} -proc gdk_window_hide*(window: PGdkWindow){.cdecl, dynlib: gdklib, +proc gdk_window_hide*(window: PGdkWindow){.cdecl, dynlib: gdklib, importc: "gdk_window_hide".} -proc gdk_window_withdraw*(window: PGdkWindow){.cdecl, dynlib: gdklib, +proc gdk_window_withdraw*(window: PGdkWindow){.cdecl, dynlib: gdklib, importc: "gdk_window_withdraw".} -proc gdk_window_show_unraised*(window: PGdkWindow){.cdecl, dynlib: gdklib, +proc gdk_window_show_unraised*(window: PGdkWindow){.cdecl, dynlib: gdklib, importc: "gdk_window_show_unraised".} -proc gdk_window_move*(window: PGdkWindow, x: gint, y: gint){.cdecl, +proc gdk_window_move*(window: PGdkWindow, x: gint, y: gint){.cdecl, dynlib: gdklib, importc: "gdk_window_move".} -proc gdk_window_resize*(window: PGdkWindow, width: gint, height: gint){.cdecl, +proc gdk_window_resize*(window: PGdkWindow, width: gint, height: gint){.cdecl, dynlib: gdklib, importc: "gdk_window_resize".} -proc gdk_window_move_resize*(window: PGdkWindow, x: gint, y: gint, width: gint, - height: gint){.cdecl, dynlib: gdklib, +proc gdk_window_move_resize*(window: PGdkWindow, x: gint, y: gint, width: gint, + height: gint){.cdecl, dynlib: gdklib, importc: "gdk_window_move_resize".} -proc gdk_window_reparent*(window: PGdkWindow, new_parent: PGdkWindow, x: gint, - y: gint){.cdecl, dynlib: gdklib, +proc gdk_window_reparent*(window: PGdkWindow, new_parent: PGdkWindow, x: gint, + y: gint){.cdecl, dynlib: gdklib, importc: "gdk_window_reparent".} -proc gdk_window_clear*(window: PGdkWindow){.cdecl, dynlib: gdklib, +proc gdk_window_clear*(window: PGdkWindow){.cdecl, dynlib: gdklib, importc: "gdk_window_clear".} -proc gdk_window_clear_area*(window: PGdkWindow, x: gint, y: gint, width: gint, - height: gint){.cdecl, dynlib: gdklib, +proc gdk_window_clear_area*(window: PGdkWindow, x: gint, y: gint, width: gint, + height: gint){.cdecl, dynlib: gdklib, importc: "gdk_window_clear_area".} -proc gdk_window_clear_area_e*(window: PGdkWindow, x: gint, y: gint, width: gint, - height: gint){.cdecl, dynlib: gdklib, +proc gdk_window_clear_area_e*(window: PGdkWindow, x: gint, y: gint, width: gint, + height: gint){.cdecl, dynlib: gdklib, importc: "gdk_window_clear_area_e".} -proc gdk_window_raise*(window: PGdkWindow){.cdecl, dynlib: gdklib, +proc gdk_window_raise*(window: PGdkWindow){.cdecl, dynlib: gdklib, importc: "gdk_window_raise".} -proc gdk_window_lower*(window: PGdkWindow){.cdecl, dynlib: gdklib, +proc gdk_window_lower*(window: PGdkWindow){.cdecl, dynlib: gdklib, importc: "gdk_window_lower".} -proc gdk_window_focus*(window: PGdkWindow, timestamp: guint32){.cdecl, +proc gdk_window_focus*(window: PGdkWindow, timestamp: guint32){.cdecl, dynlib: gdklib, importc: "gdk_window_focus".} -proc gdk_window_set_user_data*(window: PGdkWindow, user_data: gpointer){.cdecl, +proc gdk_window_set_user_data*(window: PGdkWindow, user_data: gpointer){.cdecl, dynlib: gdklib, importc: "gdk_window_set_user_data".} -proc gdk_window_set_override_redirect*(window: PGdkWindow, - override_redirect: gboolean){.cdecl, +proc gdk_window_set_override_redirect*(window: PGdkWindow, + override_redirect: gboolean){.cdecl, dynlib: gdklib, importc: "gdk_window_set_override_redirect".} -proc gdk_window_add_filter*(window: PGdkWindow, `function`: TGdkFilterFunc, - data: gpointer){.cdecl, dynlib: gdklib, +proc gdk_window_add_filter*(window: PGdkWindow, `function`: TGdkFilterFunc, + data: gpointer){.cdecl, dynlib: gdklib, importc: "gdk_window_add_filter".} -proc gdk_window_remove_filter*(window: PGdkWindow, `function`: TGdkFilterFunc, - data: gpointer){.cdecl, dynlib: gdklib, +proc gdk_window_remove_filter*(window: PGdkWindow, `function`: TGdkFilterFunc, + data: gpointer){.cdecl, dynlib: gdklib, importc: "gdk_window_remove_filter".} -proc gdk_window_scroll*(window: PGdkWindow, dx: gint, dy: gint){.cdecl, +proc gdk_window_scroll*(window: PGdkWindow, dx: gint, dy: gint){.cdecl, dynlib: gdklib, importc: "gdk_window_scroll".} -proc gdk_window_shape_combine_mask*(window: PGdkWindow, mask: PGdkBitmap, - x: gint, y: gint){.cdecl, dynlib: gdklib, +proc gdk_window_shape_combine_mask*(window: PGdkWindow, mask: PGdkBitmap, + x: gint, y: gint){.cdecl, dynlib: gdklib, importc: "gdk_window_shape_combine_mask".} -proc gdk_window_shape_combine_region*(window: PGdkWindow, - shape_region: PGdkRegion, offset_x: gint, - offset_y: gint){.cdecl, dynlib: gdklib, +proc gdk_window_shape_combine_region*(window: PGdkWindow, + shape_region: PGdkRegion, offset_x: gint, + offset_y: gint){.cdecl, dynlib: gdklib, importc: "gdk_window_shape_combine_region".} -proc gdk_window_set_child_shapes*(window: PGdkWindow){.cdecl, dynlib: gdklib, +proc gdk_window_set_child_shapes*(window: PGdkWindow){.cdecl, dynlib: gdklib, importc: "gdk_window_set_child_shapes".} -proc gdk_window_merge_child_shapes*(window: PGdkWindow){.cdecl, dynlib: gdklib, +proc gdk_window_merge_child_shapes*(window: PGdkWindow){.cdecl, dynlib: gdklib, importc: "gdk_window_merge_child_shapes".} -proc gdk_window_is_visible*(window: PGdkWindow): gboolean{.cdecl, +proc gdk_window_is_visible*(window: PGdkWindow): gboolean{.cdecl, dynlib: gdklib, importc: "gdk_window_is_visible".} -proc gdk_window_is_viewable*(window: PGdkWindow): gboolean{.cdecl, +proc gdk_window_is_viewable*(window: PGdkWindow): gboolean{.cdecl, dynlib: gdklib, importc: "gdk_window_is_viewable".} -proc gdk_window_get_state*(window: PGdkWindow): TGdkWindowState{.cdecl, +proc gdk_window_get_state*(window: PGdkWindow): TGdkWindowState{.cdecl, dynlib: gdklib, importc: "gdk_window_get_state".} proc gdk_window_set_static_gravities*(window: PGdkWindow, use_static: gboolean): gboolean{. cdecl, dynlib: gdklib, importc: "gdk_window_set_static_gravities".} -proc gdk_window_foreign_new_for_display*(display: PGdkDisplay, - anid: TGdkNativeWindow): PGdkWindow{.cdecl, dynlib: gdklib, +proc gdk_window_foreign_new_for_display*(display: PGdkDisplay, + anid: TGdkNativeWindow): PGdkWindow{.cdecl, dynlib: gdklib, importc: "gdk_window_foreign_new_for_display".} proc gdk_window_lookup_for_display*(display: PGdkDisplay, anid: TGdkNativeWindow): PGdkWindow{. cdecl, dynlib: gdklib, importc: "gdk_window_lookup_for_display".} proc gdk_window_set_type_hint*(window: PGdkWindow, hint: TGdkWindowTypeHint){. cdecl, dynlib: gdklib, importc: "gdk_window_set_type_hint".} -proc gdk_window_set_modal_hint*(window: PGdkWindow, modal: gboolean){.cdecl, +proc gdk_window_set_modal_hint*(window: PGdkWindow, modal: gboolean){.cdecl, dynlib: gdklib, importc: "gdk_window_set_modal_hint".} -proc gdk_window_set_geometry_hints*(window: PGdkWindow, geometry: PGdkGeometry, - geom_mask: TGdkWindowHints){.cdecl, +proc gdk_window_set_geometry_hints*(window: PGdkWindow, geometry: PGdkGeometry, + geom_mask: TGdkWindowHints){.cdecl, dynlib: gdklib, importc: "gdk_window_set_geometry_hints".} -proc gdk_set_sm_client_id*(sm_client_id: cstring){.cdecl, dynlib: gdklib, +proc gdk_set_sm_client_id*(sm_client_id: cstring){.cdecl, dynlib: gdklib, importc: "gdk_set_sm_client_id".} proc gdk_window_begin_paint_rect*(window: PGdkWindow, rectangle: PGdkRectangle){. cdecl, dynlib: gdklib, importc: "gdk_window_begin_paint_rect".} proc gdk_window_begin_paint_region*(window: PGdkWindow, region: PGdkRegion){. cdecl, dynlib: gdklib, importc: "gdk_window_begin_paint_region".} -proc gdk_window_end_paint*(window: PGdkWindow){.cdecl, dynlib: gdklib, +proc gdk_window_end_paint*(window: PGdkWindow){.cdecl, dynlib: gdklib, importc: "gdk_window_end_paint".} -proc gdk_window_set_title*(window: PGdkWindow, title: cstring){.cdecl, +proc gdk_window_set_title*(window: PGdkWindow, title: cstring){.cdecl, dynlib: gdklib, importc: "gdk_window_set_title".} -proc gdk_window_set_role*(window: PGdkWindow, role: cstring){.cdecl, +proc gdk_window_set_role*(window: PGdkWindow, role: cstring){.cdecl, dynlib: gdklib, importc: "gdk_window_set_role".} proc gdk_window_set_transient_for*(window: PGdkWindow, parent: PGdkWindow){. cdecl, dynlib: gdklib, importc: "gdk_window_set_transient_for".} -proc gdk_window_set_background*(window: PGdkWindow, color: PGdkColor){.cdecl, +proc gdk_window_set_background*(window: PGdkWindow, color: PGdkColor){.cdecl, dynlib: gdklib, importc: "gdk_window_set_background".} -proc gdk_window_set_back_pixmap*(window: PGdkWindow, pixmap: PGdkPixmap, - parent_relative: gboolean){.cdecl, +proc gdk_window_set_back_pixmap*(window: PGdkWindow, pixmap: PGdkPixmap, + parent_relative: gboolean){.cdecl, dynlib: gdklib, importc: "gdk_window_set_back_pixmap".} -proc gdk_window_set_cursor*(window: PGdkWindow, cursor: PGdkCursor){.cdecl, +proc gdk_window_set_cursor*(window: PGdkWindow, cursor: PGdkCursor){.cdecl, dynlib: gdklib, importc: "gdk_window_set_cursor".} -proc gdk_window_get_user_data*(window: PGdkWindow, data: gpointer){.cdecl, +proc gdk_window_get_user_data*(window: PGdkWindow, data: gpointer){.cdecl, dynlib: gdklib, importc: "gdk_window_get_user_data".} -proc gdk_window_get_geometry*(window: PGdkWindow, x: Pgint, y: Pgint, - width: Pgint, height: Pgint, depth: Pgint){.cdecl, +proc gdk_window_get_geometry*(window: PGdkWindow, x: Pgint, y: Pgint, + width: Pgint, height: Pgint, depth: Pgint){.cdecl, dynlib: gdklib, importc: "gdk_window_get_geometry".} -proc gdk_window_get_position*(window: PGdkWindow, x: Pgint, y: Pgint){.cdecl, +proc gdk_window_get_position*(window: PGdkWindow, x: Pgint, y: Pgint){.cdecl, dynlib: gdklib, importc: "gdk_window_get_position".} proc gdk_window_get_origin*(window: PGdkWindow, x: Pgint, y: Pgint): gint{. cdecl, dynlib: gdklib, importc: "gdk_window_get_origin".} -proc gdk_window_get_root_origin*(window: PGdkWindow, x: Pgint, y: Pgint){.cdecl, +proc gdk_window_get_root_origin*(window: PGdkWindow, x: Pgint, y: Pgint){.cdecl, dynlib: gdklib, importc: "gdk_window_get_root_origin".} proc gdk_window_get_frame_extents*(window: PGdkWindow, rect: PGdkRectangle){. cdecl, dynlib: gdklib, importc: "gdk_window_get_frame_extents".} -proc gdk_window_get_pointer*(window: PGdkWindow, x: Pgint, y: Pgint, - mask: PGdkModifierType): PGdkWindow{.cdecl, +proc gdk_window_get_pointer*(window: PGdkWindow, x: Pgint, y: Pgint, + mask: PGdkModifierType): PGdkWindow{.cdecl, dynlib: gdklib, importc: "gdk_window_get_pointer".} -proc gdk_window_get_parent*(window: PGdkWindow): PGdkWindow{.cdecl, +proc gdk_window_get_parent*(window: PGdkWindow): PGdkWindow{.cdecl, dynlib: gdklib, importc: "gdk_window_get_parent".} -proc gdk_window_get_toplevel*(window: PGdkWindow): PGdkWindow{.cdecl, +proc gdk_window_get_toplevel*(window: PGdkWindow): PGdkWindow{.cdecl, dynlib: gdklib, importc: "gdk_window_get_toplevel".} -proc gdk_window_get_children*(window: PGdkWindow): PGList{.cdecl, +proc gdk_window_get_children*(window: PGdkWindow): PGList{.cdecl, dynlib: gdklib, importc: "gdk_window_get_children".} -proc gdk_window_peek_children*(window: PGdkWindow): PGList{.cdecl, +proc gdk_window_peek_children*(window: PGdkWindow): PGList{.cdecl, dynlib: gdklib, importc: "gdk_window_peek_children".} -proc gdk_window_get_events*(window: PGdkWindow): TGdkEventMask{.cdecl, +proc gdk_window_get_events*(window: PGdkWindow): TGdkEventMask{.cdecl, dynlib: gdklib, importc: "gdk_window_get_events".} proc gdk_window_set_events*(window: PGdkWindow, event_mask: TGdkEventMask){. cdecl, dynlib: gdklib, importc: "gdk_window_set_events".} -proc gdk_window_set_icon_list*(window: PGdkWindow, pixbufs: PGList){.cdecl, +proc gdk_window_set_icon_list*(window: PGdkWindow, pixbufs: PGList){.cdecl, dynlib: gdklib, importc: "gdk_window_set_icon_list".} -proc gdk_window_set_icon*(window: PGdkWindow, icon_window: PGdkWindow, - pixmap: PGdkPixmap, mask: PGdkBitmap){.cdecl, +proc gdk_window_set_icon*(window: PGdkWindow, icon_window: PGdkWindow, + pixmap: PGdkPixmap, mask: PGdkBitmap){.cdecl, dynlib: gdklib, importc: "gdk_window_set_icon".} -proc gdk_window_set_icon_name*(window: PGdkWindow, name: cstring){.cdecl, +proc gdk_window_set_icon_name*(window: PGdkWindow, name: cstring){.cdecl, dynlib: gdklib, importc: "gdk_window_set_icon_name".} -proc gdk_window_set_group*(window: PGdkWindow, leader: PGdkWindow){.cdecl, +proc gdk_window_set_group*(window: PGdkWindow, leader: PGdkWindow){.cdecl, dynlib: gdklib, importc: "gdk_window_set_group".} -proc gdk_window_set_decorations*(window: PGdkWindow, - decorations: TGdkWMDecoration){.cdecl, +proc gdk_window_set_decorations*(window: PGdkWindow, + decorations: TGdkWMDecoration){.cdecl, dynlib: gdklib, importc: "gdk_window_set_decorations".} -proc gdk_window_get_decorations*(window: PGdkWindow, +proc gdk_window_get_decorations*(window: PGdkWindow, decorations: PGdkWMDecoration): gboolean{. cdecl, dynlib: gdklib, importc: "gdk_window_get_decorations".} proc gdk_window_set_functions*(window: PGdkWindow, functions: TGdkWMFunction){. cdecl, dynlib: gdklib, importc: "gdk_window_set_functions".} -proc gdk_window_iconify*(window: PGdkWindow){.cdecl, dynlib: gdklib, +proc gdk_window_iconify*(window: PGdkWindow){.cdecl, dynlib: gdklib, importc: "gdk_window_iconify".} -proc gdk_window_deiconify*(window: PGdkWindow){.cdecl, dynlib: gdklib, +proc gdk_window_deiconify*(window: PGdkWindow){.cdecl, dynlib: gdklib, importc: "gdk_window_deiconify".} -proc gdk_window_stick*(window: PGdkWindow){.cdecl, dynlib: gdklib, +proc gdk_window_stick*(window: PGdkWindow){.cdecl, dynlib: gdklib, importc: "gdk_window_stick".} -proc gdk_window_unstick*(window: PGdkWindow){.cdecl, dynlib: gdklib, +proc gdk_window_unstick*(window: PGdkWindow){.cdecl, dynlib: gdklib, importc: "gdk_window_unstick".} -proc gdk_window_maximize*(window: PGdkWindow){.cdecl, dynlib: gdklib, +proc gdk_window_maximize*(window: PGdkWindow){.cdecl, dynlib: gdklib, importc: "gdk_window_maximize".} -proc gdk_window_unmaximize*(window: PGdkWindow){.cdecl, dynlib: gdklib, +proc gdk_window_unmaximize*(window: PGdkWindow){.cdecl, dynlib: gdklib, importc: "gdk_window_unmaximize".} -proc gdk_window_register_dnd*(window: PGdkWindow){.cdecl, dynlib: gdklib, +proc gdk_window_register_dnd*(window: PGdkWindow){.cdecl, dynlib: gdklib, importc: "gdk_window_register_dnd".} -proc gdk_window_begin_resize_drag*(window: PGdkWindow, edge: TGdkWindowEdge, - button: gint, root_x: gint, root_y: gint, - timestamp: guint32){.cdecl, dynlib: gdklib, +proc gdk_window_begin_resize_drag*(window: PGdkWindow, edge: TGdkWindowEdge, + button: gint, root_x: gint, root_y: gint, + timestamp: guint32){.cdecl, dynlib: gdklib, importc: "gdk_window_begin_resize_drag".} -proc gdk_window_begin_move_drag*(window: PGdkWindow, button: gint, root_x: gint, - root_y: gint, timestamp: guint32){.cdecl, +proc gdk_window_begin_move_drag*(window: PGdkWindow, button: gint, root_x: gint, + root_y: gint, timestamp: guint32){.cdecl, dynlib: gdklib, importc: "gdk_window_begin_move_drag".} -proc gdk_window_invalidate_rect*(window: PGdkWindow, rect: PGdkRectangle, - invalidate_children: gboolean){.cdecl, +proc gdk_window_invalidate_rect*(window: PGdkWindow, rect: PGdkRectangle, + invalidate_children: gboolean){.cdecl, dynlib: gdklib, importc: "gdk_window_invalidate_rect".} -proc gdk_window_invalidate_region*(window: PGdkWindow, region: PGdkRegion, - invalidate_children: gboolean){.cdecl, +proc gdk_window_invalidate_region*(window: PGdkWindow, region: PGdkRegion, + invalidate_children: gboolean){.cdecl, dynlib: gdklib, importc: "gdk_window_invalidate_region".} -proc gdk_window_invalidate_maybe_recurse*(window: PGdkWindow, - region: PGdkRegion, - child_func: gdk_window_invalidate_maybe_recurse_child_func, - user_data: gpointer){.cdecl, dynlib: gdklib, +proc gdk_window_invalidate_maybe_recurse*(window: PGdkWindow, + region: PGdkRegion, + child_func: gdk_window_invalidate_maybe_recurse_child_func, + user_data: gpointer){.cdecl, dynlib: gdklib, importc: "gdk_window_invalidate_maybe_recurse".} -proc gdk_window_get_update_area*(window: PGdkWindow): PGdkRegion{.cdecl, +proc gdk_window_get_update_area*(window: PGdkWindow): PGdkRegion{.cdecl, dynlib: gdklib, importc: "gdk_window_get_update_area".} -proc gdk_window_freeze_updates*(window: PGdkWindow){.cdecl, dynlib: gdklib, +proc gdk_window_freeze_updates*(window: PGdkWindow){.cdecl, dynlib: gdklib, importc: "gdk_window_freeze_updates".} -proc gdk_window_thaw_updates*(window: PGdkWindow){.cdecl, dynlib: gdklib, +proc gdk_window_thaw_updates*(window: PGdkWindow){.cdecl, dynlib: gdklib, importc: "gdk_window_thaw_updates".} proc gdk_window_process_all_updates*(){.cdecl, dynlib: gdklib, importc: "gdk_window_process_all_updates".} proc gdk_window_process_updates*(window: PGdkWindow, update_children: gboolean){. cdecl, dynlib: gdklib, importc: "gdk_window_process_updates".} -proc gdk_window_set_debug_updates*(setting: gboolean){.cdecl, dynlib: gdklib, +proc gdk_window_set_debug_updates*(setting: gboolean){.cdecl, dynlib: gdklib, importc: "gdk_window_set_debug_updates".} -proc gdk_window_constrain_size*(geometry: PGdkGeometry, flags: guint, - width: gint, height: gint, new_width: Pgint, - new_height: Pgint){.cdecl, dynlib: gdklib, +proc gdk_window_constrain_size*(geometry: PGdkGeometry, flags: guint, + width: gint, height: gint, new_width: Pgint, + new_height: Pgint){.cdecl, dynlib: gdklib, importc: "gdk_window_constrain_size".} -proc gdk_window_get_internal_paint_info*(window: PGdkWindow, - e: var PGdkDrawable, x_offset: Pgint, y_offset: Pgint){.cdecl, +proc gdk_window_get_internal_paint_info*(window: PGdkWindow, + e: var PGdkDrawable, x_offset: Pgint, y_offset: Pgint){.cdecl, dynlib: gdklib, importc: "gdk_window_get_internal_paint_info".} proc gdk_set_pointer_hooks*(new_hooks: PGdkPointerHooks): PGdkPointerHooks{. cdecl, dynlib: gdklib, importc: "gdk_set_pointer_hooks".} -proc gdk_get_default_root_window*(): PGdkWindow{.cdecl, dynlib: gdklib, +proc gdk_get_default_root_window*(): PGdkWindow{.cdecl, dynlib: gdklib, importc: "gdk_get_default_root_window".} -proc gdk_parse_args*(argc: Pgint, v: var PPgchar){.cdecl, dynlib: gdklib, +proc gdk_parse_args*(argc: Pgint, v: var PPgchar){.cdecl, dynlib: gdklib, importc: "gdk_parse_args".} -proc gdk_init*(argc: Pgint, v: var PPgchar){.cdecl, dynlib: gdklib, +proc gdk_init*(argc: Pgint, v: var PPgchar){.cdecl, dynlib: gdklib, importc: "gdk_init".} -proc gdk_init_check*(argc: Pgint, v: var PPgchar): gboolean{.cdecl, +proc gdk_init_check*(argc: Pgint, v: var PPgchar): gboolean{.cdecl, dynlib: gdklib, importc: "gdk_init_check".} -when not defined(GDK_DISABLE_DEPRECATED): - proc gdk_exit(error_code: gint){.cdecl, dynlib: gdklib, importc: "gdk_exit".} +when not defined(GDK_DISABLE_DEPRECATED): + proc gdk_exit*(error_code: gint){.cdecl, dynlib: gdklib, importc: "gdk_exit".} proc gdk_set_locale*(): cstring{.cdecl, dynlib: gdklib, importc: "gdk_set_locale".} -proc gdk_get_program_class*(): cstring{.cdecl, dynlib: gdklib, +proc gdk_get_program_class*(): cstring{.cdecl, dynlib: gdklib, importc: "gdk_get_program_class".} -proc gdk_set_program_class*(program_class: cstring){.cdecl, dynlib: gdklib, +proc gdk_set_program_class*(program_class: cstring){.cdecl, dynlib: gdklib, importc: "gdk_set_program_class".} -proc gdk_error_trap_push*(){.cdecl, dynlib: gdklib, +proc gdk_error_trap_push*(){.cdecl, dynlib: gdklib, importc: "gdk_error_trap_push".} -proc gdk_error_trap_pop*(): gint{.cdecl, dynlib: gdklib, +proc gdk_error_trap_pop*(): gint{.cdecl, dynlib: gdklib, importc: "gdk_error_trap_pop".} -when not defined(GDK_DISABLE_DEPRECATED): - proc gdk_set_use_xshm(use_xshm: gboolean){.cdecl, dynlib: gdklib, +when not defined(GDK_DISABLE_DEPRECATED): + proc gdk_set_use_xshm*(use_xshm: gboolean){.cdecl, dynlib: gdklib, importc: "gdk_set_use_xshm".} - proc gdk_get_use_xshm(): gboolean{.cdecl, dynlib: gdklib, + proc gdk_get_use_xshm*(): gboolean{.cdecl, dynlib: gdklib, importc: "gdk_get_use_xshm".} -proc gdk_get_display*(): cstring{.cdecl, dynlib: gdklib, +proc gdk_get_display*(): cstring{.cdecl, dynlib: gdklib, importc: "gdk_get_display".} -proc gdk_get_display_arg_name*(): cstring{.cdecl, dynlib: gdklib, +proc gdk_get_display_arg_name*(): cstring{.cdecl, dynlib: gdklib, importc: "gdk_get_display_arg_name".} -when not defined(GDK_DISABLE_DEPRECATED): - proc gdk_input_add_full(source: gint, condition: TGdkInputCondition, - `function`: TGdkInputFunction, data: gpointer, - destroy: TGdkDestroyNotify): gint{.cdecl, +when not defined(GDK_DISABLE_DEPRECATED): + proc gdk_input_add_full*(source: gint, condition: TGdkInputCondition, + `function`: TGdkInputFunction, data: gpointer, + destroy: TGdkDestroyNotify): gint{.cdecl, dynlib: gdklib, importc: "gdk_input_add_full".} - proc gdk_input_add(source: gint, condition: TGdkInputCondition, + proc gdk_input_add*(source: gint, condition: TGdkInputCondition, `function`: TGdkInputFunction, data: gpointer): gint{. cdecl, dynlib: gdklib, importc: "gdk_input_add".} - proc gdk_input_remove(tag: gint){.cdecl, dynlib: gdklib, + proc gdk_input_remove*(tag: gint){.cdecl, dynlib: gdklib, importc: "gdk_input_remove".} -proc gdk_pointer_grab*(window: PGdkWindow, owner_events: gboolean, - event_mask: TGdkEventMask, confine_to: PGdkWindow, +proc gdk_pointer_grab*(window: PGdkWindow, owner_events: gboolean, + event_mask: TGdkEventMask, confine_to: PGdkWindow, cursor: PGdkCursor, time: guint32): TGdkGrabStatus{. cdecl, dynlib: gdklib, importc: "gdk_pointer_grab".} -proc gdk_keyboard_grab*(window: PGdkWindow, owner_events: gboolean, - time: guint32): TGdkGrabStatus{.cdecl, dynlib: gdklib, +proc gdk_keyboard_grab*(window: PGdkWindow, owner_events: gboolean, + time: guint32): TGdkGrabStatus{.cdecl, dynlib: gdklib, importc: "gdk_keyboard_grab".} -when not defined(GDK_MULTIHEAD_SAFE): - proc gdk_pointer_ungrab(time: guint32){.cdecl, dynlib: gdklib, +when not defined(GDK_MULTIHEAD_SAFE): + proc gdk_pointer_ungrab*(time: guint32){.cdecl, dynlib: gdklib, importc: "gdk_pointer_ungrab".} - proc gdk_keyboard_ungrab(time: guint32){.cdecl, dynlib: gdklib, + proc gdk_keyboard_ungrab*(time: guint32){.cdecl, dynlib: gdklib, importc: "gdk_keyboard_ungrab".} - proc gdk_pointer_is_grabbed(): gboolean{.cdecl, dynlib: gdklib, + proc gdk_pointer_is_grabbed*(): gboolean{.cdecl, dynlib: gdklib, importc: "gdk_pointer_is_grabbed".} - proc gdk_screen_width(): gint{.cdecl, dynlib: gdklib, + proc gdk_screen_width*(): gint{.cdecl, dynlib: gdklib, importc: "gdk_screen_width".} - proc gdk_screen_height(): gint{.cdecl, dynlib: gdklib, + proc gdk_screen_height*(): gint{.cdecl, dynlib: gdklib, importc: "gdk_screen_height".} - proc gdk_screen_width_mm(): gint{.cdecl, dynlib: gdklib, + proc gdk_screen_width_mm*(): gint{.cdecl, dynlib: gdklib, importc: "gdk_screen_width_mm".} - proc gdk_screen_height_mm(): gint{.cdecl, dynlib: gdklib, + proc gdk_screen_height_mm*(): gint{.cdecl, dynlib: gdklib, importc: "gdk_screen_height_mm".} - proc gdk_beep(){.cdecl, dynlib: gdklib, importc: "gdk_beep".} + proc gdk_beep*(){.cdecl, dynlib: gdklib, importc: "gdk_beep".} proc gdk_flush*(){.cdecl, dynlib: gdklib, importc: "gdk_flush".} -when not defined(GDK_MULTIHEAD_SAFE): - proc gdk_set_double_click_time(msec: guint){.cdecl, dynlib: gdklib, +when not defined(GDK_MULTIHEAD_SAFE): + proc gdk_set_double_click_time*(msec: guint){.cdecl, dynlib: gdklib, importc: "gdk_set_double_click_time".} -proc gdk_rectangle_intersect*(src1: PGdkRectangle, src2: PGdkRectangle, - dest: PGdkRectangle): gboolean{.cdecl, +proc gdk_rectangle_intersect*(src1: PGdkRectangle, src2: PGdkRectangle, + dest: PGdkRectangle): gboolean{.cdecl, dynlib: gdklib, importc: "gdk_rectangle_intersect".} -proc gdk_rectangle_union*(src1: PGdkRectangle, src2: PGdkRectangle, - dest: PGdkRectangle){.cdecl, dynlib: gdklib, +proc gdk_rectangle_union*(src1: PGdkRectangle, src2: PGdkRectangle, + dest: PGdkRectangle){.cdecl, dynlib: gdklib, importc: "gdk_rectangle_union".} -proc gdk_rectangle_get_type*(): GType{.cdecl, dynlib: gdklib, +proc gdk_rectangle_get_type*(): GType{.cdecl, dynlib: gdklib, importc: "gdk_rectangle_get_type".} proc GDK_TYPE_RECTANGLE*(): GType -proc gdk_wcstombs*(src: PGdkWChar): cstring{.cdecl, dynlib: gdklib, +proc gdk_wcstombs*(src: PGdkWChar): cstring{.cdecl, dynlib: gdklib, importc: "gdk_wcstombs".} -proc gdk_mbstowcs*(dest: PGdkWChar, src: cstring, dest_max: gint): gint{.cdecl, +proc gdk_mbstowcs*(dest: PGdkWChar, src: cstring, dest_max: gint): gint{.cdecl, dynlib: gdklib, importc: "gdk_mbstowcs".} -when not defined(GDK_MULTIHEAD_SAFE): - proc gdk_event_send_client_message(event: PGdkEvent, xid: guint32): gboolean{. +when not defined(GDK_MULTIHEAD_SAFE): + proc gdk_event_send_client_message*(event: PGdkEvent, xid: guint32): gboolean{. cdecl, dynlib: gdklib, importc: "gdk_event_send_client_message".} - proc gdk_event_send_clientmessage_toall(event: PGdkEvent){.cdecl, + proc gdk_event_send_clientmessage_toall*(event: PGdkEvent){.cdecl, dynlib: gdklib, importc: "gdk_event_send_clientmessage_toall".} -proc gdk_event_send_client_message_for_display*(display: PGdkDisplay, - event: PGdkEvent, xid: guint32): gboolean{.cdecl, dynlib: gdklib, +proc gdk_event_send_client_message_for_display*(display: PGdkDisplay, + event: PGdkEvent, xid: guint32): gboolean{.cdecl, dynlib: gdklib, importc: "gdk_event_send_client_message_for_display".} proc gdk_threads_enter*(){.cdecl, dynlib: gdklib, importc: "gdk_threads_enter".} proc gdk_threads_leave*(){.cdecl, dynlib: gdklib, importc: "gdk_threads_leave".} proc gdk_threads_init*(){.cdecl, dynlib: gdklib, importc: "gdk_threads_init".} -proc GDK_TYPE_RECTANGLE*(): GType = +proc GDK_TYPE_RECTANGLE*(): GType = result = gdk_rectangle_get_type() -proc GDK_TYPE_COLORMAP*(): GType = +proc GDK_TYPE_COLORMAP*(): GType = result = gdk_colormap_get_type() -proc GDK_COLORMAP*(anObject: pointer): PGdkColormap = +proc GDK_COLORMAP*(anObject: pointer): PGdkColormap = result = cast[PGdkColormap](G_TYPE_CHECK_INSTANCE_CAST(anObject, GDK_TYPE_COLORMAP())) -proc GDK_COLORMAP_CLASS*(klass: pointer): PGdkColormapClass = +proc GDK_COLORMAP_CLASS*(klass: pointer): PGdkColormapClass = result = cast[PGdkColormapClass](G_TYPE_CHECK_CLASS_CAST(klass, GDK_TYPE_COLORMAP())) -proc GDK_IS_COLORMAP*(anObject: pointer): bool = +proc GDK_IS_COLORMAP*(anObject: pointer): bool = result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GDK_TYPE_COLORMAP()) -proc GDK_IS_COLORMAP_CLASS*(klass: pointer): bool = +proc GDK_IS_COLORMAP_CLASS*(klass: pointer): bool = result = G_TYPE_CHECK_CLASS_TYPE(klass, GDK_TYPE_COLORMAP()) -proc GDK_COLORMAP_GET_CLASS*(obj: pointer): PGdkColormapClass = +proc GDK_COLORMAP_GET_CLASS*(obj: pointer): PGdkColormapClass = result = cast[PGdkColormapClass](G_TYPE_INSTANCE_GET_CLASS(obj, GDK_TYPE_COLORMAP())) -proc GDK_TYPE_COLOR*(): GType = +proc GDK_TYPE_COLOR*(): GType = result = gdk_color_get_type() -proc gdk_cursor_destroy*(cursor: PGdkCursor) = +proc gdk_cursor_destroy*(cursor: PGdkCursor) = gdk_cursor_unref(cursor) -proc GDK_TYPE_CURSOR*(): GType = +proc GDK_TYPE_CURSOR*(): GType = result = gdk_cursor_get_type() -proc GDK_TYPE_DRAG_CONTEXT*(): GType = +proc GDK_TYPE_DRAG_CONTEXT*(): GType = result = gdk_drag_context_get_type() -proc GDK_DRAG_CONTEXT*(anObject: Pointer): PGdkDragContext = - result = cast[PGdkDragContext](G_TYPE_CHECK_INSTANCE_CAST(anObject, +proc GDK_DRAG_CONTEXT*(anObject: Pointer): PGdkDragContext = + result = cast[PGdkDragContext](G_TYPE_CHECK_INSTANCE_CAST(anObject, GDK_TYPE_DRAG_CONTEXT())) -proc GDK_DRAG_CONTEXT_CLASS*(klass: Pointer): PGdkDragContextClass = - result = cast[PGdkDragContextClass](G_TYPE_CHECK_CLASS_CAST(klass, +proc GDK_DRAG_CONTEXT_CLASS*(klass: Pointer): PGdkDragContextClass = + result = cast[PGdkDragContextClass](G_TYPE_CHECK_CLASS_CAST(klass, GDK_TYPE_DRAG_CONTEXT())) -proc GDK_IS_DRAG_CONTEXT*(anObject: Pointer): bool = +proc GDK_IS_DRAG_CONTEXT*(anObject: Pointer): bool = result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GDK_TYPE_DRAG_CONTEXT()) -proc GDK_IS_DRAG_CONTEXT_CLASS*(klass: Pointer): bool = +proc GDK_IS_DRAG_CONTEXT_CLASS*(klass: Pointer): bool = result = G_TYPE_CHECK_CLASS_TYPE(klass, GDK_TYPE_DRAG_CONTEXT()) -proc GDK_DRAG_CONTEXT_GET_CLASS*(obj: Pointer): PGdkDragContextClass = - result = cast[PGdkDragContextClass](G_TYPE_INSTANCE_GET_CLASS(obj, +proc GDK_DRAG_CONTEXT_GET_CLASS*(obj: Pointer): PGdkDragContextClass = + result = cast[PGdkDragContextClass](G_TYPE_INSTANCE_GET_CLASS(obj, GDK_TYPE_DRAG_CONTEXT())) -proc gdkregion_EXTENTCHECK*(r1, r2: PGdkRegionBox): bool = - result = (int(r1.x2) > r2.x1) and (int(r1.x1) < r2.x2) and - (int(r1.y2) > r2.y1) and (int(r1.y1) < r2.y2) +proc gdkregion_EXTENTCHECK*(r1, r2: PGdkRegionBox): bool = + result = ((r1.x2) > r2.x1) and ((r1.x1) < r2.x2) and + ((r1.y2) > r2.y1) and ((r1.y1) < r2.y2) -proc gdkregion_EXTENTS*(r: PGdkRegionBox, idRect: PGdkRegion) = - if (int(r.x1) < idRect.extents.x1): +proc gdkregion_EXTENTS*(r: PGdkRegionBox, idRect: PGdkRegion) = + if ((r.x1) < idRect.extents.x1): idRect.extents.x1 = r.x1 - if int(r.y1) < idRect.extents.y1: + if (r.y1) < idRect.extents.y1: idRect.extents.y1 = r.y1 - if int(r.x2) > idRect.extents.x2: + if (r.x2) > idRect.extents.x2: idRect.extents.x2 = r.x2 -proc gdkregion_MEMCHECK*(reg: PGdkRegion, ARect, firstrect: var PGdkRegionBox): bool = - nil +proc gdkregion_MEMCHECK*(reg: PGdkRegion, ARect, firstrect: var PGdkRegionBox): bool = + assert(false) # to implement -proc gdkregion_CHECK_PREVIOUS*(Reg: PGdkRegion, R: PGdkRegionBox, - Rx1, Ry1, Rx2, Ry2: gint): bool = - nil +proc gdkregion_CHECK_PREVIOUS*(Reg: PGdkRegion, R: PGdkRegionBox, + Rx1, Ry1, Rx2, Ry2: gint): bool = + assert(false) # to implement -proc gdkregion_ADDRECT*(reg: PGdkRegion, r: PGdkRegionBox, - rx1, ry1, rx2, ry2: gint) = - if ((int(rx1) < rx2) and (int(ry1) < ry2) and - gdkregion_CHECK_PREVIOUS(reg, r, rx1, ry1, rx2, ry2)): +proc gdkregion_ADDRECT*(reg: PGdkRegion, r: PGdkRegionBox, + rx1, ry1, rx2, ry2: gint) = + if (((rx1) < rx2) and ((ry1) < ry2) and + gdkregion_CHECK_PREVIOUS(reg, r, rx1, ry1, rx2, ry2)): r.x1 = rx1 r.y1 = ry1 r.x2 = rx2 r.y2 = ry2 -proc gdkregion_ADDRECTNOX*(reg: PGdkRegion, r: PGdkRegionBox, - rx1, ry1, rx2, ry2: gint) = - if ((int(rx1) < rx2) and (int(ry1) < ry2) and - gdkregion_CHECK_PREVIOUS(reg, r, rx1, ry1, rx2, ry2)): +proc gdkregion_ADDRECTNOX*(reg: PGdkRegion, r: PGdkRegionBox, + rx1, ry1, rx2, ry2: gint) = + if (((rx1) < rx2) and ((ry1) < ry2) and + gdkregion_CHECK_PREVIOUS(reg, r, rx1, ry1, rx2, ry2)): r.x1 = rx1 r.y1 = ry1 r.x2 = rx2 r.y2 = ry2 inc(reg . numRects) -proc gdkregion_EMPTY_REGION*(pReg: PGdkRegion): bool = - result = pReg.numRects == 0 +proc gdkregion_EMPTY_REGION*(pReg: PGdkRegion): bool = + result = pReg.numRects == 0'i32 -proc gdkregion_REGION_NOT_EMPTY*(pReg: PGdkRegion): bool = - result = pReg.numRects != 0 +proc gdkregion_REGION_NOT_EMPTY*(pReg: PGdkRegion): bool = + result = pReg.numRects != 0'i32 -proc gdkregion_INBOX*(r: TGdkRegionBox, x, y: gint): bool = - result = (((int(r.x2) > x) and (int(r.x1) <= x)) and - (int(r.y2) > y)) and (int(r.y1) <= y) +proc gdkregion_INBOX*(r: TGdkRegionBox, x, y: gint): bool = + result = ((((r.x2) > x) and ((r.x1) <= x)) and + ((r.y2) > y)) and ((r.y1) <= y) -proc GDK_TYPE_DRAWABLE*(): GType = +proc GDK_TYPE_DRAWABLE*(): GType = result = gdk_drawable_get_type() -proc GDK_DRAWABLE*(anObject: Pointer): PGdkDrawable = +proc GDK_DRAWABLE*(anObject: Pointer): PGdkDrawable = result = cast[PGdkDrawable](G_TYPE_CHECK_INSTANCE_CAST(anObject, GDK_TYPE_DRAWABLE())) -proc GDK_DRAWABLE_CLASS*(klass: Pointer): PGdkDrawableClass = +proc GDK_DRAWABLE_CLASS*(klass: Pointer): PGdkDrawableClass = result = cast[PGdkDrawableClass](G_TYPE_CHECK_CLASS_CAST(klass, GDK_TYPE_DRAWABLE())) -proc GDK_IS_DRAWABLE*(anObject: Pointer): bool = +proc GDK_IS_DRAWABLE*(anObject: Pointer): bool = result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GDK_TYPE_DRAWABLE()) -proc GDK_IS_DRAWABLE_CLASS*(klass: Pointer): bool = +proc GDK_IS_DRAWABLE_CLASS*(klass: Pointer): bool = result = G_TYPE_CHECK_CLASS_TYPE(klass, GDK_TYPE_DRAWABLE()) -proc GDK_DRAWABLE_GET_CLASS*(obj: Pointer): PGdkDrawableClass = +proc GDK_DRAWABLE_GET_CLASS*(obj: Pointer): PGdkDrawableClass = result = cast[PGdkDrawableClass](G_TYPE_INSTANCE_GET_CLASS(obj, GDK_TYPE_DRAWABLE())) -proc gdk_draw_pixmap*(drawable: PGdkDrawable, gc: PGdkGC, src: PGdkDrawable, - xsrc: gint, ysrc: gint, xdest: gint, ydest: gint, - width: gint, height: gint) = +proc gdk_draw_pixmap*(drawable: PGdkDrawable, gc: PGdkGC, src: PGdkDrawable, + xsrc: gint, ysrc: gint, xdest: gint, ydest: gint, + width: gint, height: gint) = gdk_draw_drawable(drawable, gc, src, xsrc, ysrc, xdest, ydest, width, height) -proc gdk_draw_bitmap*(drawable: PGdkDrawable, gc: PGdkGC, src: PGdkDrawable, - xsrc: gint, ysrc: gint, xdest: gint, ydest: gint, - width: gint, height: gint) = +proc gdk_draw_bitmap*(drawable: PGdkDrawable, gc: PGdkGC, src: PGdkDrawable, + xsrc: gint, ysrc: gint, xdest: gint, ydest: gint, + width: gint, height: gint) = gdk_draw_drawable(drawable, gc, src, xsrc, ysrc, xdest, ydest, width, height) -proc GDK_TYPE_EVENT*(): GType = +proc GDK_TYPE_EVENT*(): GType = result = gdk_event_get_type() -proc GDK_TYPE_FONT*(): GType = +proc GDK_TYPE_FONT*(): GType = result = gdk_font_get_type() -proc GDK_TYPE_GC*(): GType = +proc GDK_TYPE_GC*(): GType = result = gdk_gc_get_type() -proc GDK_GC*(anObject: Pointer): PGdkGC = +proc GDK_GC*(anObject: Pointer): PGdkGC = result = cast[PGdkGC](G_TYPE_CHECK_INSTANCE_CAST(anObject, GDK_TYPE_GC())) -proc GDK_GC_CLASS*(klass: Pointer): PGdkGCClass = +proc GDK_GC_CLASS*(klass: Pointer): PGdkGCClass = result = cast[PGdkGCClass](G_TYPE_CHECK_CLASS_CAST(klass, GDK_TYPE_GC())) -proc GDK_IS_GC*(anObject: Pointer): bool = +proc GDK_IS_GC*(anObject: Pointer): bool = result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GDK_TYPE_GC()) -proc GDK_IS_GC_CLASS*(klass: Pointer): bool = +proc GDK_IS_GC_CLASS*(klass: Pointer): bool = result = G_TYPE_CHECK_CLASS_TYPE(klass, GDK_TYPE_GC()) -proc GDK_GC_GET_CLASS*(obj: Pointer): PGdkGCClass = +proc GDK_GC_GET_CLASS*(obj: Pointer): PGdkGCClass = result = cast[PGdkGCClass](G_TYPE_INSTANCE_GET_CLASS(obj, GDK_TYPE_GC())) -proc gdk_gc_destroy*(gc: PGdkGC) = +proc gdk_gc_destroy*(gc: PGdkGC) = g_object_unref(G_OBJECT(gc)) -proc GDK_TYPE_IMAGE*(): GType = +proc GDK_TYPE_IMAGE*(): GType = result = gdk_image_get_type() -proc GDK_IMAGE*(anObject: Pointer): PGdkImage = +proc GDK_IMAGE*(anObject: Pointer): PGdkImage = result = cast[PGdkImage](G_TYPE_CHECK_INSTANCE_CAST(anObject, GDK_TYPE_IMAGE())) -proc GDK_IMAGE_CLASS*(klass: Pointer): PGdkImageClass = +proc GDK_IMAGE_CLASS*(klass: Pointer): PGdkImageClass = result = cast[PGdkImageClass](G_TYPE_CHECK_CLASS_CAST(klass, GDK_TYPE_IMAGE())) -proc GDK_IS_IMAGE*(anObject: Pointer): bool = +proc GDK_IS_IMAGE*(anObject: Pointer): bool = result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GDK_TYPE_IMAGE()) -proc GDK_IS_IMAGE_CLASS*(klass: Pointer): bool = +proc GDK_IS_IMAGE_CLASS*(klass: Pointer): bool = result = G_TYPE_CHECK_CLASS_TYPE(klass, GDK_TYPE_IMAGE()) -proc GDK_IMAGE_GET_CLASS*(obj: Pointer): PGdkImageClass = +proc GDK_IMAGE_GET_CLASS*(obj: Pointer): PGdkImageClass = result = cast[PGdkImageClass](G_TYPE_INSTANCE_GET_CLASS(obj, GDK_TYPE_IMAGE())) -proc gdk_image_destroy*(image: PGdkImage) = +proc gdk_image_destroy*(image: PGdkImage) = g_object_unref(G_OBJECT(image)) -proc GDK_TYPE_DEVICE*(): GType = +proc GDK_TYPE_DEVICE*(): GType = result = gdk_device_get_type() -proc GDK_DEVICE*(anObject: Pointer): PGdkDevice = +proc GDK_DEVICE*(anObject: Pointer): PGdkDevice = result = cast[PGdkDevice](G_TYPE_CHECK_INSTANCE_CAST(anObject, GDK_TYPE_DEVICE())) -proc GDK_DEVICE_CLASS*(klass: Pointer): PGdkDeviceClass = +proc GDK_DEVICE_CLASS*(klass: Pointer): PGdkDeviceClass = result = cast[PGdkDeviceClass](G_TYPE_CHECK_CLASS_CAST(klass, GDK_TYPE_DEVICE())) -proc GDK_IS_DEVICE*(anObject: Pointer): bool = +proc GDK_IS_DEVICE*(anObject: Pointer): bool = result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GDK_TYPE_DEVICE()) -proc GDK_IS_DEVICE_CLASS*(klass: Pointer): bool = +proc GDK_IS_DEVICE_CLASS*(klass: Pointer): bool = result = G_TYPE_CHECK_CLASS_TYPE(klass, GDK_TYPE_DEVICE()) -proc GDK_DEVICE_GET_CLASS*(obj: Pointer): PGdkDeviceClass = +proc GDK_DEVICE_GET_CLASS*(obj: Pointer): PGdkDeviceClass = result = cast[PGdkDeviceClass](G_TYPE_INSTANCE_GET_CLASS(obj, GDK_TYPE_DEVICE())) -proc GDK_TYPE_KEYMAP*(): GType = +proc GDK_TYPE_KEYMAP*(): GType = result = gdk_keymap_get_type() -proc GDK_KEYMAP*(anObject: Pointer): PGdkKeymap = +proc GDK_KEYMAP*(anObject: Pointer): PGdkKeymap = result = cast[PGdkKeymap](G_TYPE_CHECK_INSTANCE_CAST(anObject, GDK_TYPE_KEYMAP())) -proc GDK_KEYMAP_CLASS*(klass: Pointer): PGdkKeymapClass = +proc GDK_KEYMAP_CLASS*(klass: Pointer): PGdkKeymapClass = result = cast[PGdkKeymapClass](G_TYPE_CHECK_CLASS_CAST(klass, GDK_TYPE_KEYMAP())) -proc GDK_IS_KEYMAP*(anObject: Pointer): bool = +proc GDK_IS_KEYMAP*(anObject: Pointer): bool = result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GDK_TYPE_KEYMAP()) -proc GDK_IS_KEYMAP_CLASS*(klass: Pointer): bool = +proc GDK_IS_KEYMAP_CLASS*(klass: Pointer): bool = result = G_TYPE_CHECK_CLASS_TYPE(klass, GDK_TYPE_KEYMAP()) -proc GDK_KEYMAP_GET_CLASS*(obj: Pointer): PGdkKeymapClass = +proc GDK_KEYMAP_GET_CLASS*(obj: Pointer): PGdkKeymapClass = result = cast[PGdkKeymapClass](G_TYPE_INSTANCE_GET_CLASS(obj, GDK_TYPE_KEYMAP())) -proc GDK_TYPE_PIXMAP*(): GType = +proc GDK_TYPE_PIXMAP*(): GType = result = gdk_pixmap_get_type() -proc GDK_PIXMAP*(anObject: Pointer): PGdkPixmap = +proc GDK_PIXMAP*(anObject: Pointer): PGdkPixmap = result = cast[PGdkPixmap](G_TYPE_CHECK_INSTANCE_CAST(anObject, GDK_TYPE_PIXMAP())) -proc GDK_PIXMAP_CLASS*(klass: Pointer): PGdkPixmapObjectClass = +proc GDK_PIXMAP_CLASS*(klass: Pointer): PGdkPixmapObjectClass = result = cast[PGdkPixmapObjectClass](G_TYPE_CHECK_CLASS_CAST(klass, GDK_TYPE_PIXMAP())) -proc GDK_IS_PIXMAP*(anObject: Pointer): bool = +proc GDK_IS_PIXMAP*(anObject: Pointer): bool = result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GDK_TYPE_PIXMAP()) -proc GDK_IS_PIXMAP_CLASS*(klass: Pointer): bool = +proc GDK_IS_PIXMAP_CLASS*(klass: Pointer): bool = result = G_TYPE_CHECK_CLASS_TYPE(klass, GDK_TYPE_PIXMAP()) -proc GDK_PIXMAP_GET_CLASS*(obj: Pointer): PGdkPixmapObjectClass = +proc GDK_PIXMAP_GET_CLASS*(obj: Pointer): PGdkPixmapObjectClass = result = cast[PGdkPixmapObjectClass](G_TYPE_INSTANCE_GET_CLASS(obj, GDK_TYPE_PIXMAP())) -proc GDK_PIXMAP_OBJECT*(anObject: Pointer): PGdkPixmapObject = +proc GDK_PIXMAP_OBJECT*(anObject: Pointer): PGdkPixmapObject = result = cast[PGdkPixmapObject](GDK_PIXMAP(anObject)) -proc gdk_bitmap_ref*(drawable: PGdkDrawable): PGdkDrawable = +proc gdk_bitmap_ref*(drawable: PGdkDrawable): PGdkDrawable = result = GDK_DRAWABLE(g_object_ref(G_OBJECT(drawable))) -proc gdk_bitmap_unref*(drawable: PGdkDrawable) = +proc gdk_bitmap_unref*(drawable: PGdkDrawable) = g_object_unref(G_OBJECT(drawable)) -proc gdk_pixmap_ref*(drawable: PGdkDrawable): PGdkDrawable = +proc gdk_pixmap_ref*(drawable: PGdkDrawable): PGdkDrawable = result = GDK_DRAWABLE(g_object_ref(G_OBJECT(drawable))) -proc gdk_pixmap_unref*(drawable: PGdkDrawable) = +proc gdk_pixmap_unref*(drawable: PGdkDrawable) = g_object_unref(G_OBJECT(drawable)) -proc gdk_rgb_get_cmap*(): PGdkColormap = +proc gdk_rgb_get_cmap*(): PGdkColormap = result = nil #gdk_rgb_get_colormap() -proc GDK_TYPE_DISPLAY*(): GType = +proc GDK_TYPE_DISPLAY*(): GType = nil #result = nil -proc GDK_DISPLAY_OBJECT*(anObject: pointer): PGdkDisplay = +proc GDK_DISPLAY_OBJECT*(anObject: pointer): PGdkDisplay = result = cast[PGdkDisplay](G_TYPE_CHECK_INSTANCE_CAST(anObject, GDK_TYPE_DISPLAY())) -proc GDK_DISPLAY_CLASS*(klass: pointer): PGdkDisplayClass = +proc GDK_DISPLAY_CLASS*(klass: pointer): PGdkDisplayClass = result = cast[PGdkDisplayClass](G_TYPE_CHECK_CLASS_CAST(klass, GDK_TYPE_DISPLAY())) -proc GDK_IS_DISPLAY*(anObject: pointer): bool = +proc GDK_IS_DISPLAY*(anObject: pointer): bool = result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GDK_TYPE_DISPLAY()) -proc GDK_IS_DISPLAY_CLASS*(klass: pointer): bool = +proc GDK_IS_DISPLAY_CLASS*(klass: pointer): bool = result = G_TYPE_CHECK_CLASS_TYPE(klass, GDK_TYPE_DISPLAY()) -proc GDK_DISPLAY_GET_CLASS*(obj: pointer): PGdkDisplayClass = +proc GDK_DISPLAY_GET_CLASS*(obj: pointer): PGdkDisplayClass = result = cast[PGdkDisplayClass](G_TYPE_INSTANCE_GET_CLASS(obj, GDK_TYPE_DISPLAY())) -proc GDK_TYPE_SCREEN*(): GType = +proc GDK_TYPE_SCREEN*(): GType = nil -proc GDK_SCREEN*(anObject: Pointer): PGdkScreen = +proc GDK_SCREEN*(anObject: Pointer): PGdkScreen = result = cast[PGdkScreen](G_TYPE_CHECK_INSTANCE_CAST(anObject, GDK_TYPE_SCREEN())) -proc GDK_SCREEN_CLASS*(klass: Pointer): PGdkScreenClass = +proc GDK_SCREEN_CLASS*(klass: Pointer): PGdkScreenClass = result = cast[PGdkScreenClass](G_TYPE_CHECK_CLASS_CAST(klass, GDK_TYPE_SCREEN())) -proc GDK_IS_SCREEN*(anObject: Pointer): bool = +proc GDK_IS_SCREEN*(anObject: Pointer): bool = result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GDK_TYPE_SCREEN()) -proc GDK_IS_SCREEN_CLASS*(klass: Pointer): bool = +proc GDK_IS_SCREEN_CLASS*(klass: Pointer): bool = result = G_TYPE_CHECK_CLASS_TYPE(klass, GDK_TYPE_SCREEN()) -proc GDK_SCREEN_GET_CLASS*(obj: Pointer): PGdkScreenClass = +proc GDK_SCREEN_GET_CLASS*(obj: Pointer): PGdkScreenClass = result = cast[PGdkScreenClass](G_TYPE_INSTANCE_GET_CLASS(obj, GDK_TYPE_SCREEN())) -proc GDK_SELECTION_PRIMARY*(): TGdkAtom = +proc GDK_SELECTION_PRIMARY*(): TGdkAtom = result = `GDK_MAKE_ATOM`(1) -proc GDK_SELECTION_SECONDARY*(): TGdkAtom = +proc GDK_SELECTION_SECONDARY*(): TGdkAtom = result = `GDK_MAKE_ATOM`(2) -proc GDK_SELECTION_CLIPBOARD*(): TGdkAtom = +proc GDK_SELECTION_CLIPBOARD*(): TGdkAtom = result = `GDK_MAKE_ATOM`(69) -proc GDK_TARGET_BITMAP*(): TGdkAtom = +proc GDK_TARGET_BITMAP*(): TGdkAtom = result = `GDK_MAKE_ATOM`(5) -proc GDK_TARGET_COLORMAP*(): TGdkAtom = +proc GDK_TARGET_COLORMAP*(): TGdkAtom = result = `GDK_MAKE_ATOM`(7) -proc GDK_TARGET_DRAWABLE*(): TGdkAtom = +proc GDK_TARGET_DRAWABLE*(): TGdkAtom = result = `GDK_MAKE_ATOM`(17) -proc GDK_TARGET_PIXMAP*(): TGdkAtom = +proc GDK_TARGET_PIXMAP*(): TGdkAtom = result = `GDK_MAKE_ATOM`(20) -proc GDK_TARGET_STRING*(): TGdkAtom = +proc GDK_TARGET_STRING*(): TGdkAtom = result = `GDK_MAKE_ATOM`(31) -proc GDK_SELECTION_TYPE_ATOM*(): TGdkAtom = +proc GDK_SELECTION_TYPE_ATOM*(): TGdkAtom = result = `GDK_MAKE_ATOM`(4) -proc GDK_SELECTION_TYPE_BITMAP*(): TGdkAtom = +proc GDK_SELECTION_TYPE_BITMAP*(): TGdkAtom = result = `GDK_MAKE_ATOM`(5) -proc GDK_SELECTION_TYPE_COLORMAP*(): TGdkAtom = +proc GDK_SELECTION_TYPE_COLORMAP*(): TGdkAtom = result = `GDK_MAKE_ATOM`(7) -proc GDK_SELECTION_TYPE_DRAWABLE*(): TGdkAtom = +proc GDK_SELECTION_TYPE_DRAWABLE*(): TGdkAtom = result = `GDK_MAKE_ATOM`(17) -proc GDK_SELECTION_TYPE_INTEGER*(): TGdkAtom = +proc GDK_SELECTION_TYPE_INTEGER*(): TGdkAtom = result = `GDK_MAKE_ATOM`(19) -proc GDK_SELECTION_TYPE_PIXMAP*(): TGdkAtom = +proc GDK_SELECTION_TYPE_PIXMAP*(): TGdkAtom = result = `GDK_MAKE_ATOM`(20) -proc GDK_SELECTION_TYPE_WINDOW*(): TGdkAtom = +proc GDK_SELECTION_TYPE_WINDOW*(): TGdkAtom = result = `GDK_MAKE_ATOM`(33) -proc GDK_SELECTION_TYPE_STRING*(): TGdkAtom = +proc GDK_SELECTION_TYPE_STRING*(): TGdkAtom = result = `GDK_MAKE_ATOM`(31) -proc GDK_ATOM_TO_POINTER*(atom: TGdkAtom): pointer = +proc GDK_ATOM_TO_POINTER*(atom: TGdkAtom): pointer = result = cast[Pointer](atom) -proc GDK_POINTER_TO_ATOM*(p: Pointer): TGdkAtom = +proc GDK_POINTER_TO_ATOM*(p: Pointer): TGdkAtom = result = cast[TGdkAtom](p) -proc `GDK_MAKE_ATOM`*(val: guint): TGdkAtom = +proc `GDK_MAKE_ATOM`*(val: guint): TGdkAtom = result = cast[TGdkAtom](val) -proc GDK_NONE*(): TGdkAtom = +proc GDK_NONE*(): TGdkAtom = result = `GDK_MAKE_ATOM`(0) -proc GDK_TYPE_VISUAL*(): GType = +proc GDK_TYPE_VISUAL*(): GType = result = gdk_visual_get_type() -proc GDK_VISUAL*(anObject: Pointer): PGdkVisual = +proc GDK_VISUAL*(anObject: Pointer): PGdkVisual = result = cast[PGdkVisual](G_TYPE_CHECK_INSTANCE_CAST(anObject, GDK_TYPE_VISUAL())) -proc GDK_VISUAL_CLASS*(klass: Pointer): PGdkVisualClass = +proc GDK_VISUAL_CLASS*(klass: Pointer): PGdkVisualClass = result = cast[PGdkVisualClass](G_TYPE_CHECK_CLASS_CAST(klass, GDK_TYPE_VISUAL())) -proc GDK_IS_VISUAL*(anObject: Pointer): bool = +proc GDK_IS_VISUAL*(anObject: Pointer): bool = result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GDK_TYPE_VISUAL()) -proc GDK_IS_VISUAL_CLASS*(klass: Pointer): bool = +proc GDK_IS_VISUAL_CLASS*(klass: Pointer): bool = result = G_TYPE_CHECK_CLASS_TYPE(klass, GDK_TYPE_VISUAL()) -proc GDK_VISUAL_GET_CLASS*(obj: Pointer): PGdkVisualClass = +proc GDK_VISUAL_GET_CLASS*(obj: Pointer): PGdkVisualClass = result = cast[PGdkVisualClass](G_TYPE_INSTANCE_GET_CLASS(obj, GDK_TYPE_VISUAL())) -proc gdk_visual_ref*(v: PGdkVisual) = +proc gdk_visual_ref*(v: PGdkVisual) = discard g_object_ref(v) -proc gdk_visual_unref*(v: PGdkVisual) = +proc gdk_visual_unref*(v: PGdkVisual) = g_object_unref(v) -proc GDK_TYPE_WINDOW*(): GType = +proc GDK_TYPE_WINDOW*(): GType = result = gdk_window_object_get_type() -proc GDK_WINDOW*(anObject: Pointer): PGdkWindow = +proc GDK_WINDOW*(anObject: Pointer): PGdkWindow = result = cast[PGdkWindow](G_TYPE_CHECK_INSTANCE_CAST(anObject, GDK_TYPE_WINDOW())) -proc GDK_WINDOW_CLASS*(klass: Pointer): PGdkWindowObjectClass = +proc GDK_WINDOW_CLASS*(klass: Pointer): PGdkWindowObjectClass = result = cast[PGdkWindowObjectClass](G_TYPE_CHECK_CLASS_CAST(klass, GDK_TYPE_WINDOW())) -proc GDK_IS_WINDOW*(anObject: Pointer): bool = +proc GDK_IS_WINDOW*(anObject: Pointer): bool = result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GDK_TYPE_WINDOW()) -proc GDK_IS_WINDOW_CLASS*(klass: Pointer): bool = +proc GDK_IS_WINDOW_CLASS*(klass: Pointer): bool = result = G_TYPE_CHECK_CLASS_TYPE(klass, GDK_TYPE_WINDOW()) -proc GDK_WINDOW_GET_CLASS*(obj: Pointer): PGdkWindowObjectClass = +proc GDK_WINDOW_GET_CLASS*(obj: Pointer): PGdkWindowObjectClass = result = cast[PGdkWindowObjectClass](G_TYPE_INSTANCE_GET_CLASS(obj, GDK_TYPE_WINDOW())) -proc GDK_WINDOW_OBJECT*(anObject: Pointer): PGdkWindowObject = +proc GDK_WINDOW_OBJECT*(anObject: Pointer): PGdkWindowObject = result = cast[PGdkWindowObject](GDK_WINDOW(anObject)) -proc GdkWindowObject_guffaw_gravity*(a: var TGdkWindowObject): guint = +proc GdkWindowObject_guffaw_gravity*(a: var TGdkWindowObject): guint = result = (a.flag0 and bm_TGdkWindowObject_guffaw_gravity) shr bp_TGdkWindowObject_guffaw_gravity -proc GdkWindowObject_set_guffaw_gravity*(a: var TGdkWindowObject, - `guffaw_gravity`: guint) = +proc GdkWindowObject_set_guffaw_gravity*(a: var TGdkWindowObject, + `guffaw_gravity`: guint) = a.flag0 = a.flag0 or - ((`guffaw_gravity` shl bp_TGdkWindowObject_guffaw_gravity) and + (int16(`guffaw_gravity` shl bp_TGdkWindowObject_guffaw_gravity) and bm_TGdkWindowObject_guffaw_gravity) -proc GdkWindowObject_input_only*(a: var TGdkWindowObject): guint = +proc GdkWindowObject_input_only*(a: var TGdkWindowObject): guint = result = (a.flag0 and bm_TGdkWindowObject_input_only) shr bp_TGdkWindowObject_input_only -proc GdkWindowObject_set_input_only*(a: var TGdkWindowObject, - `input_only`: guint) = +proc GdkWindowObject_set_input_only*(a: var TGdkWindowObject, + `input_only`: guint) = a.flag0 = a.flag0 or - ((`input_only` shl bp_TGdkWindowObject_input_only) and + (int16(`input_only` shl bp_TGdkWindowObject_input_only) and bm_TGdkWindowObject_input_only) -proc GdkWindowObject_modal_hint*(a: var TGdkWindowObject): guint = +proc GdkWindowObject_modal_hint*(a: var TGdkWindowObject): guint = result = (a.flag0 and bm_TGdkWindowObject_modal_hint) shr bp_TGdkWindowObject_modal_hint -proc GdkWindowObject_set_modal_hint*(a: var TGdkWindowObject, - `modal_hint`: guint) = +proc GdkWindowObject_set_modal_hint*(a: var TGdkWindowObject, + `modal_hint`: guint) = a.flag0 = a.flag0 or - ((`modal_hint` shl bp_TGdkWindowObject_modal_hint) and + (int16(`modal_hint` shl bp_TGdkWindowObject_modal_hint) and bm_TGdkWindowObject_modal_hint) -proc GdkWindowObject_destroyed*(a: var TGdkWindowObject): guint = +proc GdkWindowObject_destroyed*(a: var TGdkWindowObject): guint = result = (a.flag0 and bm_TGdkWindowObject_destroyed) shr bp_TGdkWindowObject_destroyed -proc GdkWindowObject_set_destroyed*(a: var TGdkWindowObject, `destroyed`: guint) = +proc GdkWindowObject_set_destroyed*(a: var TGdkWindowObject, `destroyed`: guint) = a.flag0 = a.flag0 or - ((`destroyed` shl bp_TGdkWindowObject_destroyed) and + (int16(`destroyed` shl bp_TGdkWindowObject_destroyed) and bm_TGdkWindowObject_destroyed) -proc GDK_ROOT_PARENT*(): PGdkWindow = +proc GDK_ROOT_PARENT*(): PGdkWindow = result = gdk_get_default_root_window() -proc gdk_window_get_size*(drawable: PGdkDrawable, width: Pgint, height: Pgint) = +proc gdk_window_get_size*(drawable: PGdkDrawable, width: Pgint, height: Pgint) = gdk_drawable_get_size(drawable, width, height) -proc gdk_window_get_type*(window: PGdkWindow): TGdkWindowType = +proc gdk_window_get_type*(window: PGdkWindow): TGdkWindowType = result = gdk_window_get_window_type(window) -proc gdk_window_get_colormap*(drawable: PGdkDrawable): PGdkColormap = +proc gdk_window_get_colormap*(drawable: PGdkDrawable): PGdkColormap = result = gdk_drawable_get_colormap(drawable) -proc gdk_window_set_colormap*(drawable: PGdkDrawable, colormap: PGdkColormap) = +proc gdk_window_set_colormap*(drawable: PGdkDrawable, colormap: PGdkColormap) = gdk_drawable_set_colormap(drawable, colormap) -proc gdk_window_get_visual*(drawable: PGdkDrawable): PGdkVisual = +proc gdk_window_get_visual*(drawable: PGdkDrawable): PGdkVisual = result = gdk_drawable_get_visual(drawable) -proc gdk_window_ref*(drawable: PGdkDrawable): PGdkDrawable = +proc gdk_window_ref*(drawable: PGdkDrawable): PGdkDrawable = result = GDK_DRAWABLE(g_object_ref(G_OBJECT(drawable))) -proc gdk_window_unref*(drawable: PGdkDrawable) = +proc gdk_window_unref*(drawable: PGdkDrawable) = g_object_unref(G_OBJECT(drawable)) -proc gdk_window_copy_area*(drawable: PGdkDrawable, gc: PGdkGC, x, y: gint, - source_drawable: PGdkDrawable, - source_x, source_y: gint, width, height: gint) = - gdk_draw_pixmap(drawable, gc, source_drawable, source_x, source_y, x, y, +proc gdk_window_copy_area*(drawable: PGdkDrawable, gc: PGdkGC, x, y: gint, + source_drawable: PGdkDrawable, + source_x, source_y: gint, width, height: gint) = + gdk_draw_pixmap(drawable, gc, source_drawable, source_x, source_y, x, y, width, height) diff --git a/lib/base/gtk/gdk2pixbuf.nim b/lib/base/gtk/gdk2pixbuf.nim index b9ab472c2..bcf9690e8 100644 --- a/lib/base/gtk/gdk2pixbuf.nim +++ b/lib/base/gtk/gdk2pixbuf.nim @@ -1,12 +1,11 @@ -import +import glib2 -when defined(win32): - {.define: gdkpixbufwin.} - const +when defined(win32): + const gdkpixbuflib = "libgdk_pixbuf-2.0-0.dll" -elif defined(darwin): - const +elif defined(darwin): + const gdkpixbuflib = "gdk_pixbuf-2.0.0" # linklib gtk-x11-2.0 # linklib gdk-x11-2.0 @@ -15,29 +14,28 @@ elif defined(darwin): # linklib gobject-2.0.0 # linklib gdk_pixbuf-2.0.0 # linklib atk-1.0.0 -else: - const +else: + const gdkpixbuflib = "libgdk_pixbuf-2.0.so" -{.define: HasGTK2_4.} -{.define: HasGTK2_6.} -type + +type PGdkPixbuf* = pointer PGdkPixbufAnimation* = pointer PGdkPixbufAnimationIter* = pointer PGdkPixbufAlphaMode* = ptr TGdkPixbufAlphaMode - TGdkPixbufAlphaMode* = enum + TGdkPixbufAlphaMode* = enum GDK_PIXBUF_ALPHA_BILEVEL, GDK_PIXBUF_ALPHA_FULL PGdkColorspace* = ptr TGdkColorspace - TGdkColorspace* = enum + TGdkColorspace* = enum GDK_COLORSPACE_RGB TGdkPixbufDestroyNotify* = proc (pixels: Pguchar, data: gpointer){.cdecl.} PGdkPixbufError* = ptr TGdkPixbufError - TGdkPixbufError* = enum - GDK_PIXBUF_ERROR_CORRUPT_IMAGE, GDK_PIXBUF_ERROR_INSUFFICIENT_MEMORY, - GDK_PIXBUF_ERROR_BAD_OPTION, GDK_PIXBUF_ERROR_UNKNOWN_TYPE, + TGdkPixbufError* = enum + GDK_PIXBUF_ERROR_CORRUPT_IMAGE, GDK_PIXBUF_ERROR_INSUFFICIENT_MEMORY, + GDK_PIXBUF_ERROR_BAD_OPTION, GDK_PIXBUF_ERROR_UNKNOWN_TYPE, GDK_PIXBUF_ERROR_UNSUPPORTED_OPERATION, GDK_PIXBUF_ERROR_FAILED PGdkInterpType* = ptr TGdkInterpType - TGdkInterpType* = enum + TGdkInterpType* = enum GDK_INTERP_NEAREST, GDK_INTERP_TILES, GDK_INTERP_BILINEAR, GDK_INTERP_HYPER proc GDK_TYPE_PIXBUF*(): GType @@ -50,117 +48,115 @@ proc GDK_TYPE_PIXBUF_ANIMATION_ITER*(): GType proc GDK_PIXBUF_ANIMATION_ITER*(anObject: pointer): PGdkPixbufAnimationIter proc GDK_IS_PIXBUF_ANIMATION_ITER*(anObject: pointer): bool proc GDK_PIXBUF_ERROR*(): TGQuark -proc gdk_pixbuf_error_quark*(): TGQuark{.cdecl, dynlib: gdkpixbuflib, +proc gdk_pixbuf_error_quark*(): TGQuark{.cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_error_quark".} -proc gdk_pixbuf_get_type*(): GType{.cdecl, dynlib: gdkpixbuflib, +proc gdk_pixbuf_get_type*(): GType{.cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_get_type".} -when not defined(GDK_PIXBUF_DISABLE_DEPRECATED): - proc gdk_pixbuf_ref(pixbuf: PGdkPixbuf): PGdkPixbuf{.cdecl, +when not defined(GDK_PIXBUF_DISABLE_DEPRECATED): + proc gdk_pixbuf_ref*(pixbuf: PGdkPixbuf): PGdkPixbuf{.cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_ref".} - proc gdk_pixbuf_unref(pixbuf: PGdkPixbuf){.cdecl, dynlib: gdkpixbuflib, + proc gdk_pixbuf_unref*(pixbuf: PGdkPixbuf){.cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_unref".} -proc gdk_pixbuf_get_colorspace*(pixbuf: PGdkPixbuf): TGdkColorspace{.cdecl, +proc gdk_pixbuf_get_colorspace*(pixbuf: PGdkPixbuf): TGdkColorspace{.cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_get_colorspace".} -proc gdk_pixbuf_get_n_channels*(pixbuf: PGdkPixbuf): int32{.cdecl, +proc gdk_pixbuf_get_n_channels*(pixbuf: PGdkPixbuf): int32{.cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_get_n_channels".} -proc gdk_pixbuf_get_has_alpha*(pixbuf: PGdkPixbuf): gboolean{.cdecl, +proc gdk_pixbuf_get_has_alpha*(pixbuf: PGdkPixbuf): gboolean{.cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_get_has_alpha".} -proc gdk_pixbuf_get_bits_per_sample*(pixbuf: PGdkPixbuf): int32{.cdecl, +proc gdk_pixbuf_get_bits_per_sample*(pixbuf: PGdkPixbuf): int32{.cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_get_bits_per_sample".} -proc gdk_pixbuf_get_pixels*(pixbuf: PGdkPixbuf): Pguchar{.cdecl, +proc gdk_pixbuf_get_pixels*(pixbuf: PGdkPixbuf): Pguchar{.cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_get_pixels".} -proc gdk_pixbuf_get_width*(pixbuf: PGdkPixbuf): int32{.cdecl, +proc gdk_pixbuf_get_width*(pixbuf: PGdkPixbuf): int32{.cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_get_width".} -proc gdk_pixbuf_get_height*(pixbuf: PGdkPixbuf): int32{.cdecl, +proc gdk_pixbuf_get_height*(pixbuf: PGdkPixbuf): int32{.cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_get_height".} -proc gdk_pixbuf_get_rowstride*(pixbuf: PGdkPixbuf): int32{.cdecl, +proc gdk_pixbuf_get_rowstride*(pixbuf: PGdkPixbuf): int32{.cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_get_rowstride".} -proc gdk_pixbuf_new*(colorspace: TGdkColorspace, has_alpha: gboolean, +proc gdk_pixbuf_new*(colorspace: TGdkColorspace, has_alpha: gboolean, bits_per_sample: int32, width: int32, height: int32): PGdkPixbuf{. cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_new".} -proc gdk_pixbuf_copy*(pixbuf: PGdkPixbuf): PGdkPixbuf{.cdecl, +proc gdk_pixbuf_copy*(pixbuf: PGdkPixbuf): PGdkPixbuf{.cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_copy".} -proc gdk_pixbuf_new_subpixbuf*(src_pixbuf: PGdkPixbuf, src_x: int32, +proc gdk_pixbuf_new_subpixbuf*(src_pixbuf: PGdkPixbuf, src_x: int32, src_y: int32, width: int32, height: int32): PGdkPixbuf{. cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_new_subpixbuf".} proc gdk_pixbuf_new_from_file*(filename: cstring, error: pointer): PGdkPixbuf{. cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_new_from_file".} -proc gdk_pixbuf_new_from_data*(data: Pguchar, colorspace: TGdkColorspace, - has_alpha: gboolean, bits_per_sample: int32, - width: int32, height: int32, rowstride: int32, - destroy_fn: TGdkPixbufDestroyNotify, - destroy_fn_data: gpointer): PGdkPixbuf{.cdecl, +proc gdk_pixbuf_new_from_data*(data: Pguchar, colorspace: TGdkColorspace, + has_alpha: gboolean, bits_per_sample: int32, + width: int32, height: int32, rowstride: int32, + destroy_fn: TGdkPixbufDestroyNotify, + destroy_fn_data: gpointer): PGdkPixbuf{.cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_new_from_data".} -proc gdk_pixbuf_new_from_xpm_data*(data: PPchar): PGdkPixbuf{.cdecl, +proc gdk_pixbuf_new_from_xpm_data*(data: PPchar): PGdkPixbuf{.cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_new_from_xpm_data".} -proc gdk_pixbuf_new_from_inline*(data_length: gint, a: var guint8, +proc gdk_pixbuf_new_from_inline*(data_length: gint, a: var guint8, copy_pixels: gboolean, error: pointer): PGdkPixbuf{. cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_new_from_inline".} -when defined(HasGTK2_4): - proc gdk_pixbuf_new_from_file_at_size(filename: cstring, width, height: gint, - error: pointer): PGdkPixbuf{.cdecl, - dynlib: gdkpixbuflib, importc: "gdk_pixbuf_new_from_file_at_size".} -when defined(HasGTK2_6): - proc gdk_pixbuf_new_from_file_at_scale(filename: cstring, width, height: gint, - preserve_aspect_ratio: gboolean, error: pointer): PGdkPixbuf{.cdecl, - dynlib: gdkpixbuflib, importc: "gdk_pixbuf_new_from_file_at_scale".} -proc gdk_pixbuf_fill*(pixbuf: PGdkPixbuf, pixel: guint32){.cdecl, +proc gdk_pixbuf_new_from_file_at_size*(filename: cstring, width, height: gint, + error: pointer): PGdkPixbuf{.cdecl, + dynlib: gdkpixbuflib, importc: "gdk_pixbuf_new_from_file_at_size".} +proc gdk_pixbuf_new_from_file_at_scale*(filename: cstring, width, height: gint, + preserve_aspect_ratio: gboolean, error: pointer): PGdkPixbuf{.cdecl, + dynlib: gdkpixbuflib, importc: "gdk_pixbuf_new_from_file_at_scale".} +proc gdk_pixbuf_fill*(pixbuf: PGdkPixbuf, pixel: guint32){.cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_fill".} -proc gdk_pixbuf_save*(pixbuf: PGdkPixbuf, filename: cstring, `type`: cstring, - error: pointer): gboolean{.cdecl, varargs, +proc gdk_pixbuf_save*(pixbuf: PGdkPixbuf, filename: cstring, `type`: cstring, + error: pointer): gboolean{.cdecl, varargs, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_save".} -proc gdk_pixbuf_savev*(pixbuf: PGdkPixbuf, filename: cstring, `type`: cstring, - option_keys: PPchar, option_values: PPchar, - error: pointer): gboolean{.cdecl, dynlib: gdkpixbuflib, +proc gdk_pixbuf_savev*(pixbuf: PGdkPixbuf, filename: cstring, `type`: cstring, + option_keys: PPchar, option_values: PPchar, + error: pointer): gboolean{.cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_savev".} -proc gdk_pixbuf_add_alpha*(pixbuf: PGdkPixbuf, substitute_color: gboolean, - r: guchar, g: guchar, b: guchar): PGdkPixbuf{.cdecl, +proc gdk_pixbuf_add_alpha*(pixbuf: PGdkPixbuf, substitute_color: gboolean, + r: guchar, g: guchar, b: guchar): PGdkPixbuf{.cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_add_alpha".} -proc gdk_pixbuf_copy_area*(src_pixbuf: PGdkPixbuf, src_x: int32, src_y: int32, - width: int32, height: int32, dest_pixbuf: PGdkPixbuf, - dest_x: int32, dest_y: int32){.cdecl, +proc gdk_pixbuf_copy_area*(src_pixbuf: PGdkPixbuf, src_x: int32, src_y: int32, + width: int32, height: int32, dest_pixbuf: PGdkPixbuf, + dest_x: int32, dest_y: int32){.cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_copy_area".} -proc gdk_pixbuf_saturate_and_pixelate*(src: PGdkPixbuf, dest: PGdkPixbuf, +proc gdk_pixbuf_saturate_and_pixelate*(src: PGdkPixbuf, dest: PGdkPixbuf, saturation: gfloat, pixelate: gboolean){. cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_saturate_and_pixelate".} -proc gdk_pixbuf_scale*(src: PGdkPixbuf, dest: PGdkPixbuf, dest_x: int32, - dest_y: int32, dest_width: int32, dest_height: int32, - offset_x: float64, offset_y: float64, scale_x: float64, - scale_y: float64, interp_type: TGdkInterpType){.cdecl, +proc gdk_pixbuf_scale*(src: PGdkPixbuf, dest: PGdkPixbuf, dest_x: int32, + dest_y: int32, dest_width: int32, dest_height: int32, + offset_x: float64, offset_y: float64, scale_x: float64, + scale_y: float64, interp_type: TGdkInterpType){.cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_scale".} -proc gdk_pixbuf_composite*(src: PGdkPixbuf, dest: PGdkPixbuf, dest_x: int32, - dest_y: int32, dest_width: int32, dest_height: int32, - offset_x: float64, offset_y: float64, - scale_x: float64, scale_y: float64, +proc gdk_pixbuf_composite*(src: PGdkPixbuf, dest: PGdkPixbuf, dest_x: int32, + dest_y: int32, dest_width: int32, dest_height: int32, + offset_x: float64, offset_y: float64, + scale_x: float64, scale_y: float64, interp_type: TGdkInterpType, overall_alpha: int32){. cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_composite".} -proc gdk_pixbuf_composite_color*(src: PGdkPixbuf, dest: PGdkPixbuf, - dest_x: int32, dest_y: int32, - dest_width: int32, dest_height: int32, - offset_x: float64, offset_y: float64, - scale_x: float64, scale_y: float64, - interp_type: TGdkInterpType, - overall_alpha: int32, check_x: int32, - check_y: int32, check_size: int32, - color1: guint32, color2: guint32){.cdecl, +proc gdk_pixbuf_composite_color*(src: PGdkPixbuf, dest: PGdkPixbuf, + dest_x: int32, dest_y: int32, + dest_width: int32, dest_height: int32, + offset_x: float64, offset_y: float64, + scale_x: float64, scale_y: float64, + interp_type: TGdkInterpType, + overall_alpha: int32, check_x: int32, + check_y: int32, check_size: int32, + color1: guint32, color2: guint32){.cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_composite_color".} -proc gdk_pixbuf_scale_simple*(src: PGdkPixbuf, dest_width: int32, +proc gdk_pixbuf_scale_simple*(src: PGdkPixbuf, dest_width: int32, dest_height: int32, interp_type: TGdkInterpType): PGdkPixbuf{. cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_scale_simple".} -proc gdk_pixbuf_composite_color_simple*(src: PGdkPixbuf, dest_width: int32, - dest_height: int32, - interp_type: TGdkInterpType, - overall_alpha: int32, check_size: int32, +proc gdk_pixbuf_composite_color_simple*(src: PGdkPixbuf, dest_width: int32, + dest_height: int32, + interp_type: TGdkInterpType, + overall_alpha: int32, check_size: int32, color1: guint32, color2: guint32): PGdkPixbuf{. cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_composite_color_simple".} -proc gdk_pixbuf_animation_get_type*(): GType{.cdecl, dynlib: gdkpixbuflib, +proc gdk_pixbuf_animation_get_type*(): GType{.cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_animation_get_type".} proc gdk_pixbuf_animation_new_from_file*(filename: cstring, error: pointer): PGdkPixbufAnimation{. cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_animation_new_from_file".} -when not defined(GDK_PIXBUF_DISABLE_DEPRECATED): - proc gdk_pixbuf_animation_ref(animation: PGdkPixbufAnimation): PGdkPixbufAnimation{. +when not defined(GDK_PIXBUF_DISABLE_DEPRECATED): + proc gdk_pixbuf_animation_ref*(animation: PGdkPixbufAnimation): PGdkPixbufAnimation{. cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_animation_ref".} - proc gdk_pixbuf_animation_unref(animation: PGdkPixbufAnimation){.cdecl, + proc gdk_pixbuf_animation_unref*(animation: PGdkPixbufAnimation){.cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_animation_unref".} proc gdk_pixbuf_animation_get_width*(animation: PGdkPixbufAnimation): int32{. cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_animation_get_width".} @@ -169,37 +165,37 @@ proc gdk_pixbuf_animation_get_height*(animation: PGdkPixbufAnimation): int32{. proc gdk_pixbuf_animation_is_static_image*(animation: PGdkPixbufAnimation): gboolean{. cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_animation_is_static_image".} proc gdk_pixbuf_animation_get_static_image*(animation: PGdkPixbufAnimation): PGdkPixbuf{. - cdecl, dynlib: gdkpixbuflib, + cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_animation_get_static_image".} -proc gdk_pixbuf_animation_get_iter*(animation: PGdkPixbufAnimation, +proc gdk_pixbuf_animation_get_iter*(animation: PGdkPixbufAnimation, e: var TGTimeVal): PGdkPixbufAnimationIter{. cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_animation_get_iter".} -proc gdk_pixbuf_animation_iter_get_type*(): GType{.cdecl, dynlib: gdkpixbuflib, +proc gdk_pixbuf_animation_iter_get_type*(): GType{.cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_animation_iter_get_type".} proc gdk_pixbuf_animation_iter_get_delay_time*(iter: PGdkPixbufAnimationIter): int32{. - cdecl, dynlib: gdkpixbuflib, + cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_animation_iter_get_delay_time".} proc gdk_pixbuf_animation_iter_get_pixbuf*(iter: PGdkPixbufAnimationIter): PGdkPixbuf{. cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_animation_iter_get_pixbuf".} proc gdk_pixbuf_animation_iter_on_currently_loading_frame*( - iter: PGdkPixbufAnimationIter): gboolean{.cdecl, dynlib: gdkpixbuflib, + iter: PGdkPixbufAnimationIter): gboolean{.cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_animation_iter_on_currently_loading_frame".} -proc gdk_pixbuf_animation_iter_advance*(iter: PGdkPixbufAnimationIter, - e: var TGTimeVal): gboolean{.cdecl, +proc gdk_pixbuf_animation_iter_advance*(iter: PGdkPixbufAnimationIter, + e: var TGTimeVal): gboolean{.cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_animation_iter_advance".} -proc gdk_pixbuf_get_option*(pixbuf: PGdkPixbuf, key: cstring): cstring{.cdecl, +proc gdk_pixbuf_get_option*(pixbuf: PGdkPixbuf, key: cstring): cstring{.cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_get_option".} -type +type PGdkPixbufLoader* = ptr TGdkPixbufLoader - TGdkPixbufLoader* {.final.} = object + TGdkPixbufLoader* {.final.} = object parent_instance*: TGObject priv*: gpointer PGdkPixbufLoaderClass* = ptr TGdkPixbufLoaderClass - TGdkPixbufLoaderClass* {.final.} = object + TGdkPixbufLoaderClass* {.final.} = object parent_class*: TGObjectClass area_prepared*: proc (loader: PGdkPixbufLoader){.cdecl.} - area_updated*: proc (loader: PGdkPixbufLoader, x: int32, y: int32, + area_updated*: proc (loader: PGdkPixbufLoader, x: int32, y: int32, width: int32, height: int32){.cdecl.} closed*: proc (loader: PGdkPixbufLoader){.cdecl.} @@ -210,70 +206,70 @@ proc GDK_PIXBUF_LOADER_CLASS*(klass: pointer): PGdkPixbufLoaderClass proc GDK_IS_PIXBUF_LOADER*(obj: pointer): bool proc GDK_IS_PIXBUF_LOADER_CLASS*(klass: pointer): bool proc GDK_PIXBUF_LOADER_GET_CLASS*(obj: pointer): PGdkPixbufLoaderClass -proc gdk_pixbuf_loader_get_type*(): GType{.cdecl, dynlib: gdkpixbuflib, +proc gdk_pixbuf_loader_get_type*(): GType{.cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_loader_get_type".} -proc gdk_pixbuf_loader_new*(): PGdkPixbufLoader{.cdecl, dynlib: gdkpixbuflib, +proc gdk_pixbuf_loader_new*(): PGdkPixbufLoader{.cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_loader_new".} proc gdk_pixbuf_loader_new_with_type*(image_type: cstring, error: pointer): PGdkPixbufLoader{. cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_loader_new_with_type".} -proc gdk_pixbuf_loader_write*(loader: PGdkPixbufLoader, buf: Pguchar, - count: gsize, error: pointer): gboolean{.cdecl, +proc gdk_pixbuf_loader_write*(loader: PGdkPixbufLoader, buf: Pguchar, + count: gsize, error: pointer): gboolean{.cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_loader_write".} -proc gdk_pixbuf_loader_get_pixbuf*(loader: PGdkPixbufLoader): PGdkPixbuf{.cdecl, +proc gdk_pixbuf_loader_get_pixbuf*(loader: PGdkPixbufLoader): PGdkPixbuf{.cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_loader_get_pixbuf".} proc gdk_pixbuf_loader_get_animation*(loader: PGdkPixbufLoader): PGdkPixbufAnimation{. cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_loader_get_animation".} proc gdk_pixbuf_loader_close*(loader: PGdkPixbufLoader, error: pointer): gboolean{. cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_loader_close".} -proc GDK_TYPE_PIXBUF_LOADER*(): GType = +proc GDK_TYPE_PIXBUF_LOADER*(): GType = result = gdk_pixbuf_loader_get_type() -proc GDK_PIXBUF_LOADER*(obj: pointer): PGdkPixbufLoader = - result = cast[PGdkPixbufLoader](G_TYPE_CHECK_INSTANCE_CAST(obj, +proc GDK_PIXBUF_LOADER*(obj: pointer): PGdkPixbufLoader = + result = cast[PGdkPixbufLoader](G_TYPE_CHECK_INSTANCE_CAST(obj, GDK_TYPE_PIXBUF_LOADER())) -proc GDK_PIXBUF_LOADER_CLASS*(klass: pointer): PGdkPixbufLoaderClass = - result = cast[PGdkPixbufLoaderClass](G_TYPE_CHECK_CLASS_CAST(klass, +proc GDK_PIXBUF_LOADER_CLASS*(klass: pointer): PGdkPixbufLoaderClass = + result = cast[PGdkPixbufLoaderClass](G_TYPE_CHECK_CLASS_CAST(klass, GDK_TYPE_PIXBUF_LOADER())) -proc GDK_IS_PIXBUF_LOADER*(obj: pointer): bool = +proc GDK_IS_PIXBUF_LOADER*(obj: pointer): bool = result = G_TYPE_CHECK_INSTANCE_TYPE(obj, GDK_TYPE_PIXBUF_LOADER()) -proc GDK_IS_PIXBUF_LOADER_CLASS*(klass: pointer): bool = +proc GDK_IS_PIXBUF_LOADER_CLASS*(klass: pointer): bool = result = G_TYPE_CHECK_CLASS_TYPE(klass, GDK_TYPE_PIXBUF_LOADER()) -proc GDK_PIXBUF_LOADER_GET_CLASS*(obj: pointer): PGdkPixbufLoaderClass = - result = cast[PGdkPixbufLoaderClass](G_TYPE_INSTANCE_GET_CLASS(obj, +proc GDK_PIXBUF_LOADER_GET_CLASS*(obj: pointer): PGdkPixbufLoaderClass = + result = cast[PGdkPixbufLoaderClass](G_TYPE_INSTANCE_GET_CLASS(obj, GDK_TYPE_PIXBUF_LOADER())) -proc GDK_TYPE_PIXBUF*(): GType = +proc GDK_TYPE_PIXBUF*(): GType = result = gdk_pixbuf_get_type() -proc GDK_PIXBUF*(anObject: pointer): PGdkPixbuf = +proc GDK_PIXBUF*(anObject: pointer): PGdkPixbuf = result = cast[PGdkPixbuf](G_TYPE_CHECK_INSTANCE_CAST(anObject, GDK_TYPE_PIXBUF())) -proc GDK_IS_PIXBUF*(anObject: pointer): bool = +proc GDK_IS_PIXBUF*(anObject: pointer): bool = result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GDK_TYPE_PIXBUF()) -proc GDK_TYPE_PIXBUF_ANIMATION*(): GType = +proc GDK_TYPE_PIXBUF_ANIMATION*(): GType = result = gdk_pixbuf_animation_get_type() -proc GDK_PIXBUF_ANIMATION*(anObject: pointer): PGdkPixbufAnimation = - result = cast[PGdkPixbufAnimation](G_TYPE_CHECK_INSTANCE_CAST(anObject, +proc GDK_PIXBUF_ANIMATION*(anObject: pointer): PGdkPixbufAnimation = + result = cast[PGdkPixbufAnimation](G_TYPE_CHECK_INSTANCE_CAST(anObject, GDK_TYPE_PIXBUF_ANIMATION())) -proc GDK_IS_PIXBUF_ANIMATION*(anObject: pointer): bool = +proc GDK_IS_PIXBUF_ANIMATION*(anObject: pointer): bool = result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GDK_TYPE_PIXBUF_ANIMATION()) -proc GDK_TYPE_PIXBUF_ANIMATION_ITER*(): GType = +proc GDK_TYPE_PIXBUF_ANIMATION_ITER*(): GType = result = gdk_pixbuf_animation_iter_get_type() -proc GDK_PIXBUF_ANIMATION_ITER*(anObject: pointer): PGdkPixbufAnimationIter = - result = cast[PGdkPixbufAnimationIter](G_TYPE_CHECK_INSTANCE_CAST(anObject, +proc GDK_PIXBUF_ANIMATION_ITER*(anObject: pointer): PGdkPixbufAnimationIter = + result = cast[PGdkPixbufAnimationIter](G_TYPE_CHECK_INSTANCE_CAST(anObject, GDK_TYPE_PIXBUF_ANIMATION_ITER())) -proc GDK_IS_PIXBUF_ANIMATION_ITER*(anObject: pointer): bool = +proc GDK_IS_PIXBUF_ANIMATION_ITER*(anObject: pointer): bool = result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GDK_TYPE_PIXBUF_ANIMATION_ITER()) -proc GDK_PIXBUF_ERROR*(): TGQuark = +proc GDK_PIXBUF_ERROR*(): TGQuark = result = gdk_pixbuf_error_quark() diff --git a/lib/base/gtk/glib2.nim b/lib/base/gtk/glib2.nim index c84bc26eb..dfcc586da 100644 --- a/lib/base/gtk/glib2.nim +++ b/lib/base/gtk/glib2.nim @@ -1,16 +1,16 @@ when defined(windows): - {.define: gtkwin.} const gliblib = "libglib-2.0-0.dll" - gthreadlib = "libgthread-2.0-0.dll" gmodulelib = "libgmodule-2.0-0.dll" gobjectlib = "libgobject-2.0-0.dll" else: const gliblib = "libglib-2.0.so" - gthreadlib = "libgthread-2.0.so" gmodulelib = "libgmodule-2.0.so" gobjectlib = "libgobject-2.0.so" + +# gthreadlib = "libgthread-2.0.so" + type PGTypePlugin* = pointer PGParamSpecPool* = pointer @@ -19,29 +19,29 @@ type PPPgchar* = ptr PPgchar PPgchar* = ptr cstring gchar* = char - Pgshort* = ptr gshort gshort* = cshort - Pglong* = ptr glong glong* = clong + gint* = cint + gboolean* = bool + guchar* = char + gushort* = int16 + gulong* = int + guint* = cint + gfloat* = cfloat + gdouble* = cdouble + gpointer* = pointer + Pgshort* = ptr gshort + Pglong* = ptr glong Pgint* = ptr gint PPgint* = ptr Pgint - gint* = cint Pgboolean* = ptr gboolean - gboolean* = bool Pguchar* = ptr guchar PPguchar* = ptr Pguchar - guchar* = char Pgushort* = ptr gushort - gushort* = int16 Pgulong* = ptr gulong - gulong* = int - guint* = cint Pguint* = ptr guint - gfloat* = cfloat Pgfloat* = ptr gfloat - gdouble* = cdouble Pgdouble* = ptr gdouble - gpointer* = pointer pgpointer* = ptr gpointer gconstpointer* = pointer PGCompareFunc* = ptr TGCompareFunc @@ -118,8 +118,8 @@ type g_type*: GType data*: array[0..1, gdouble] - PPGData* = ptr PGData PGData* = pointer + PPGData* = ptr PGData PGSList* = ptr TGSList PPGSList* = ptr PGSList TGSList* {.final.} = object @@ -132,8 +132,8 @@ type next*: PGList prev*: PGList - PGParamFlags* = ptr TGParamFlags TGParamFlags* = int32 + PGParamFlags* = ptr TGParamFlags PGParamSpec* = ptr TGParamSpec PPGParamSpec* = ptr PGParamSpec TGParamSpec* {.final.} = object @@ -194,7 +194,7 @@ const G_TYPE_PARAM* = GType(19 shl G_TYPE_FUNDAMENTAL_SHIFT) G_TYPE_OBJECT* = GType(20 shl G_TYPE_FUNDAMENTAL_SHIFT) -proc G_TYPE_MAKE_FUNDAMENTAL*(x: int32): GType +proc G_TYPE_MAKE_FUNDAMENTAL*(x: int): GType const G_TYPE_RESERVED_GLIB_FIRST* = 21 G_TYPE_RESERVED_GLIB_LAST* = 31 @@ -226,8 +226,8 @@ proc G_TYPE_FROM_INSTANCE*(instance: Pointer): GType proc G_TYPE_FROM_CLASS*(g_class: Pointer): GType proc G_TYPE_FROM_INTERFACE*(g_iface: Pointer): GType type - PGTypeDebugFlags* = ptr TGTypeDebugFlags TGTypeDebugFlags* = int32 + PGTypeDebugFlags* = ptr TGTypeDebugFlags const G_TYPE_DEBUG_NONE* = 0 @@ -296,8 +296,8 @@ const G_TYPE_FLAG_DEEP_DERIVABLE* = 1 shl 3 type - PGTypeFlags* = ptr TGTypeFlags TGTypeFlags* = int32 + PGTypeFlags* = ptr TGTypeFlags const G_TYPE_FLAG_ABSTRACT* = 1 shl 4 @@ -562,8 +562,8 @@ proc g_strdup_value_contents*(value: PGValue): cstring{.cdecl, proc g_value_set_string_take_ownership*(value: PGValue, v_string: cstring){. cdecl, dynlib: gobjectlib, importc: "g_value_set_string_take_ownership".} type - Pgchararray* = ptr Tgchararray Tgchararray* = gchar + Pgchararray* = ptr Tgchararray proc G_TYPE_IS_PARAM*(theType: GType): bool proc G_PARAM_SPEC*(pspec: Pointer): PGParamSpec @@ -692,26 +692,26 @@ proc G_CLOSURE_N_NOTIFIERS*(cl: PGClosure): int32 proc G_CCLOSURE_SWAP_DATA*(cclosure: PGClosure): int32 proc G_CALLBACK*(f: pointer): TGCallback const - bm_TGClosure_ref_count* = 0x00007FFF - bp_TGClosure_ref_count* = 0 - bm_TGClosure_meta_marshal* = 0x00008000 - bp_TGClosure_meta_marshal* = 15 - bm_TGClosure_n_guards* = 0x00010000 - bp_TGClosure_n_guards* = 16 - bm_TGClosure_n_fnotifiers* = 0x00060000 - bp_TGClosure_n_fnotifiers* = 17 - bm_TGClosure_n_inotifiers* = 0x07F80000 - bp_TGClosure_n_inotifiers* = 19 - bm_TGClosure_in_inotify* = 0x08000000 - bp_TGClosure_in_inotify* = 27 - bm_TGClosure_floating* = 0x10000000 - bp_TGClosure_floating* = 28 - bm_TGClosure_derivative_flag* = 0x20000000 - bp_TGClosure_derivative_flag* = 29 - bm_TGClosure_in_marshal* = 0x40000000 - bp_TGClosure_in_marshal* = 30 - bm_TGClosure_is_invalid* = 0x80000000 - bp_TGClosure_is_invalid* = 31 + bm_TGClosure_ref_count* = 0x00007FFF'i32 + bp_TGClosure_ref_count* = 0'i32 + bm_TGClosure_meta_marshal* = 0x00008000'i32 + bp_TGClosure_meta_marshal* = 15'i32 + bm_TGClosure_n_guards* = 0x00010000'i32 + bp_TGClosure_n_guards* = 16'i32 + bm_TGClosure_n_fnotifiers* = 0x00060000'i32 + bp_TGClosure_n_fnotifiers* = 17'i32 + bm_TGClosure_n_inotifiers* = 0x07F80000'i32 + bp_TGClosure_n_inotifiers* = 19'i32 + bm_TGClosure_in_inotify* = 0x08000000'i32 + bp_TGClosure_in_inotify* = 27'i32 + bm_TGClosure_floating* = 0x10000000'i32 + bp_TGClosure_floating* = 28'i32 + bm_TGClosure_derivative_flag* = 0x20000000'i32 + bp_TGClosure_derivative_flag* = 29'i32 + bm_TGClosure_in_marshal* = 0x40000000'i32 + bp_TGClosure_in_marshal* = 30'i32 + bm_TGClosure_is_invalid* = 0x80000000'i32 + bp_TGClosure_is_invalid* = 31'i32 proc ref_count*(a: var TGClosure): guint proc set_ref_count*(a: var TGClosure, ref_count: guint) @@ -2061,16 +2061,16 @@ type TGHookFlagMask* = int const - G_HOOK_FLAG_ACTIVE* = 1 shl 0 - G_HOOK_FLAG_IN_CALL* = 1 shl 1 - G_HOOK_FLAG_MASK* = 0x0000000F + G_HOOK_FLAG_ACTIVE* = 1'i32 shl 0'i32 + G_HOOK_FLAG_IN_CALL* = 1'i32 shl 1'i32 + G_HOOK_FLAG_MASK* = 0x0000000F'i32 const - G_HOOK_FLAG_USER_SHIFT* = 4 - bm_TGHookList_hook_size* = 0x0000FFFF - bp_TGHookList_hook_size* = 0 - bm_TGHookList_is_setup* = 0x00010000 - bp_TGHookList_is_setup* = 16 + G_HOOK_FLAG_USER_SHIFT* = 4'i32 + bm_TGHookList_hook_size* = 0x0000FFFF'i32 + bp_TGHookList_hook_size* = 0'i32 + bm_TGHookList_is_setup* = 0x00010000'i32 + bp_TGHookList_is_setup* = 16'i32 proc TGHookList_hook_size*(a: var TGHookList): guint proc TGHookList_set_hook_size*(a: var TGHookList, `hook_size`: guint) @@ -2502,18 +2502,18 @@ type const - bm_TGIOChannel_use_buffer* = 0x00000001 - bp_TGIOChannel_use_buffer* = 0 - bm_TGIOChannel_do_encode* = 0x00000002 - bp_TGIOChannel_do_encode* = 1 - bm_TGIOChannel_close_on_unref* = 0x00000004 - bp_TGIOChannel_close_on_unref* = 2 - bm_TGIOChannel_is_readable* = 0x00000008 - bp_TGIOChannel_is_readable* = 3 - bm_TGIOChannel_is_writeable* = 0x00000010 - bp_TGIOChannel_is_writeable* = 4 - bm_TGIOChannel_is_seekable* = 0x00000020 - bp_TGIOChannel_is_seekable* = 5 + bm_TGIOChannel_use_buffer* = 0x00000001'i16 + bp_TGIOChannel_use_buffer* = 0'i16 + bm_TGIOChannel_do_encode* = 0x00000002'i16 + bp_TGIOChannel_do_encode* = 1'i16 + bm_TGIOChannel_close_on_unref* = 0x00000004'i16 + bp_TGIOChannel_close_on_unref* = 2'i16 + bm_TGIOChannel_is_readable* = 0x00000008'i16 + bp_TGIOChannel_is_readable* = 3'i16 + bm_TGIOChannel_is_writeable* = 0x00000010'i16 + bp_TGIOChannel_is_writeable* = 4'i16 + bm_TGIOChannel_is_seekable* = 0x00000020'i16 + bp_TGIOChannel_is_seekable* = 5'i16 proc TGIOChannel_use_buffer*(a: var TGIOChannel): guint proc TGIOChannel_set_use_buffer*(a: var TGIOChannel, `use_buffer`: guint) @@ -3046,48 +3046,48 @@ const G_CSET_DIGITS* = "0123456789" const - bm_TGScannerConfig_case_sensitive* = 0x00000001 - bp_TGScannerConfig_case_sensitive* = 0 - bm_TGScannerConfig_skip_comment_multi* = 0x00000002 - bp_TGScannerConfig_skip_comment_multi* = 1 - bm_TGScannerConfig_skip_comment_single* = 0x00000004 - bp_TGScannerConfig_skip_comment_single* = 2 - bm_TGScannerConfig_scan_comment_multi* = 0x00000008 - bp_TGScannerConfig_scan_comment_multi* = 3 - bm_TGScannerConfig_scan_identifier* = 0x00000010 - bp_TGScannerConfig_scan_identifier* = 4 - bm_TGScannerConfig_scan_identifier_1char* = 0x00000020 - bp_TGScannerConfig_scan_identifier_1char* = 5 - bm_TGScannerConfig_scan_identifier_NULL* = 0x00000040 - bp_TGScannerConfig_scan_identifier_NULL* = 6 - bm_TGScannerConfig_scan_symbols* = 0x00000080 - bp_TGScannerConfig_scan_symbols* = 7 - bm_TGScannerConfig_scan_binary* = 0x00000100 - bp_TGScannerConfig_scan_binary* = 8 - bm_TGScannerConfig_scan_octal* = 0x00000200 - bp_TGScannerConfig_scan_octal* = 9 - bm_TGScannerConfig_scan_float* = 0x00000400 - bp_TGScannerConfig_scan_float* = 10 - bm_TGScannerConfig_scan_hex* = 0x00000800 - bp_TGScannerConfig_scan_hex* = 11 - bm_TGScannerConfig_scan_hex_dollar* = 0x00001000 - bp_TGScannerConfig_scan_hex_dollar* = 12 - bm_TGScannerConfig_scan_string_sq* = 0x00002000 - bp_TGScannerConfig_scan_string_sq* = 13 - bm_TGScannerConfig_scan_string_dq* = 0x00004000 - bp_TGScannerConfig_scan_string_dq* = 14 - bm_TGScannerConfig_numbers_2_int* = 0x00008000 - bp_TGScannerConfig_numbers_2_int* = 15 - bm_TGScannerConfig_int_2_float* = 0x00010000 - bp_TGScannerConfig_int_2_float* = 16 - bm_TGScannerConfig_identifier_2_string* = 0x00020000 - bp_TGScannerConfig_identifier_2_string* = 17 - bm_TGScannerConfig_char_2_token* = 0x00040000 - bp_TGScannerConfig_char_2_token* = 18 - bm_TGScannerConfig_symbol_2_token* = 0x00080000 - bp_TGScannerConfig_symbol_2_token* = 19 - bm_TGScannerConfig_scope_0_fallback* = 0x00100000 - bp_TGScannerConfig_scope_0_fallback* = 20 + bm_TGScannerConfig_case_sensitive* = 0x00000001'i32 + bp_TGScannerConfig_case_sensitive* = 0'i32 + bm_TGScannerConfig_skip_comment_multi* = 0x00000002'i32 + bp_TGScannerConfig_skip_comment_multi* = 1'i32 + bm_TGScannerConfig_skip_comment_single* = 0x00000004'i32 + bp_TGScannerConfig_skip_comment_single* = 2'i32 + bm_TGScannerConfig_scan_comment_multi* = 0x00000008'i32 + bp_TGScannerConfig_scan_comment_multi* = 3'i32 + bm_TGScannerConfig_scan_identifier* = 0x00000010'i32 + bp_TGScannerConfig_scan_identifier* = 4'i32 + bm_TGScannerConfig_scan_identifier_1char* = 0x00000020'i32 + bp_TGScannerConfig_scan_identifier_1char* = 5'i32 + bm_TGScannerConfig_scan_identifier_NULL* = 0x00000040'i32 + bp_TGScannerConfig_scan_identifier_NULL* = 6'i32 + bm_TGScannerConfig_scan_symbols* = 0x00000080'i32 + bp_TGScannerConfig_scan_symbols* = 7'i32 + bm_TGScannerConfig_scan_binary* = 0x00000100'i32 + bp_TGScannerConfig_scan_binary* = 8'i32 + bm_TGScannerConfig_scan_octal* = 0x00000200'i32 + bp_TGScannerConfig_scan_octal* = 9'i32 + bm_TGScannerConfig_scan_float* = 0x00000400'i32 + bp_TGScannerConfig_scan_float* = 10'i32 + bm_TGScannerConfig_scan_hex* = 0x00000800'i32 + bp_TGScannerConfig_scan_hex* = 11'i32 + bm_TGScannerConfig_scan_hex_dollar* = 0x00001000'i32 + bp_TGScannerConfig_scan_hex_dollar* = 12'i32 + bm_TGScannerConfig_scan_string_sq* = 0x00002000'i32 + bp_TGScannerConfig_scan_string_sq* = 13'i32 + bm_TGScannerConfig_scan_string_dq* = 0x00004000'i32 + bp_TGScannerConfig_scan_string_dq* = 14'i32 + bm_TGScannerConfig_numbers_2_int* = 0x00008000'i32 + bp_TGScannerConfig_numbers_2_int* = 15'i32 + bm_TGScannerConfig_int_2_float* = 0x00010000'i32 + bp_TGScannerConfig_int_2_float* = 16'i32 + bm_TGScannerConfig_identifier_2_string* = 0x00020000'i32 + bp_TGScannerConfig_identifier_2_string* = 17'i32 + bm_TGScannerConfig_char_2_token* = 0x00040000'i32 + bp_TGScannerConfig_char_2_token* = 18'i32 + bm_TGScannerConfig_symbol_2_token* = 0x00080000'i32 + bp_TGScannerConfig_symbol_2_token* = 19'i32 + bm_TGScannerConfig_scope_0_fallback* = 0x00100000'i32 + bp_TGScannerConfig_scope_0_fallback* = 20'i32 proc TGScannerConfig_case_sensitive*(a: var TGScannerConfig): guint proc TGScannerConfig_set_case_sensitive*(a: var TGScannerConfig, @@ -3439,19 +3439,21 @@ proc g_cclosure_marshal_BOOL__FLAGS*(closure: PGClosure, return_value: PGValue, marshal_data: GPointer){.cdecl, dynlib: gliblib, importc: "g_cclosure_marshal_BOOLEAN__FLAGS".} proc GUINT16_SWAP_LE_BE_CONSTANT*(val: guint16): guint16 = - Result = ((val and 0x000000FF) shl 8) or ((val and 0x0000FF00) shr 8) + Result = ((val and 0x00FF'i16) shl 8'i16) or ((val and 0xFF00'i16) shr 8'i16) proc GUINT32_SWAP_LE_BE_CONSTANT*(val: guint32): guint32 = - Result = ((val and 0x000000FF) shl 24) or ((val and 0x0000FF00) shl 8) or - ((val and 0x00FF0000) shr 8) or ((val and 0xFF000000) shr 24) + Result = ((val and 0x000000FF'i32) shl 24'i32) or ((val and 0x0000FF00'i32) shl 8'i32) or + ((val and 0x00FF0000'i32) shr 8'i32) or ((val and 0xFF000000'i32) shr 24'i32) proc GUINT_TO_POINTER*(i: guint): pointer = Result = cast[Pointer](TAddress(i)) -type - PGArray = pointer when false: + + type + PGArray* = pointer + proc g_array_append_val*(a: PGArray, v: gpointer): PGArray = result = g_array_append_vals(a, addr(v), 1) @@ -3678,17 +3680,17 @@ proc G_HOOK_FLAGS*(hook: PGHook): guint = result = hook.flags proc G_HOOK_ACTIVE*(hook: PGHook): bool = - result = (hook.flags and G_HOOK_FLAG_ACTIVE) != 0 + result = (hook.flags and G_HOOK_FLAG_ACTIVE) != 0'i32 proc G_HOOK_IN_CALL*(hook: PGHook): bool = - result = (hook.flags and G_HOOK_FLAG_IN_CALL) != 0 + result = (hook.flags and G_HOOK_FLAG_IN_CALL) != 0'i32 proc G_HOOK_IS_VALID*(hook: PGHook): bool = result = (hook.hook_id != 0) and G_HOOK_ACTIVE(hook) proc G_HOOK_IS_UNLINKED*(hook: PGHook): bool = result = (hook.next == nil) and (hook.prev == nil) and - (hook.hook_id == 0) and (hook.ref_count == 0) + (hook.hook_id == 0) and (hook.ref_count == 0'i32) proc g_hook_append*(hook_list: PGHookList, hook: PGHook) = g_hook_insert_before(hook_list, nil, hook) @@ -3702,7 +3704,7 @@ proc TGIOChannel_use_buffer*(a: var TGIOChannel): guint = proc TGIOChannel_set_use_buffer*(a: var TGIOChannel, `use_buffer`: guint) = a.flag0 = a.flag0 or - ((`use_buffer` shl bp_TGIOChannel_use_buffer) and + (int16(`use_buffer` shl bp_TGIOChannel_use_buffer) and bm_TGIOChannel_use_buffer) proc TGIOChannel_do_encode*(a: var TGIOChannel): guint = @@ -3711,7 +3713,7 @@ proc TGIOChannel_do_encode*(a: var TGIOChannel): guint = proc TGIOChannel_set_do_encode*(a: var TGIOChannel, `do_encode`: guint) = a.flag0 = a.flag0 or - ((`do_encode` shl bp_TGIOChannel_do_encode) and + (int16(`do_encode` shl bp_TGIOChannel_do_encode) and bm_TGIOChannel_do_encode) proc TGIOChannel_close_on_unref*(a: var TGIOChannel): guint = @@ -3720,7 +3722,7 @@ proc TGIOChannel_close_on_unref*(a: var TGIOChannel): guint = proc TGIOChannel_set_close_on_unref*(a: var TGIOChannel, `close_on_unref`: guint) = a.flag0 = a.flag0 or - ((`close_on_unref` shl bp_TGIOChannel_close_on_unref) and + (int16(`close_on_unref` shl bp_TGIOChannel_close_on_unref) and bm_TGIOChannel_close_on_unref) proc TGIOChannel_is_readable*(a: var TGIOChannel): guint = @@ -3729,7 +3731,7 @@ proc TGIOChannel_is_readable*(a: var TGIOChannel): guint = proc TGIOChannel_set_is_readable*(a: var TGIOChannel, `is_readable`: guint) = a.flag0 = a.flag0 or - ((`is_readable` shl bp_TGIOChannel_is_readable) and + (int16(`is_readable` shl bp_TGIOChannel_is_readable) and bm_TGIOChannel_is_readable) proc TGIOChannel_is_writeable*(a: var TGIOChannel): guint = @@ -3738,7 +3740,7 @@ proc TGIOChannel_is_writeable*(a: var TGIOChannel): guint = proc TGIOChannel_set_is_writeable*(a: var TGIOChannel, `is_writeable`: guint) = a.flag0 = a.flag0 or - ((`is_writeable` shl bp_TGIOChannel_is_writeable) and + (int16(`is_writeable` shl bp_TGIOChannel_is_writeable) and bm_TGIOChannel_is_writeable) proc TGIOChannel_is_seekable*(a: var TGIOChannel): guint = @@ -3747,7 +3749,7 @@ proc TGIOChannel_is_seekable*(a: var TGIOChannel): guint = proc TGIOChannel_set_is_seekable*(a: var TGIOChannel, `is_seekable`: guint) = a.flag0 = a.flag0 or - ((`is_seekable` shl bp_TGIOChannel_is_seekable) and + (int16(`is_seekable` shl bp_TGIOChannel_is_seekable) and bm_TGIOChannel_is_seekable) proc g_utf8_next_char*(p: pguchar): pguchar = @@ -3816,10 +3818,10 @@ proc g_node_first_child*(node: PGNode): PGNode = result = nil proc g_rand_boolean*(rand: PGRand): gboolean = - result = ((g_rand_int(rand)) and (1 shl 15)) != 0 + result = (int(g_rand_int(rand)) and (1 shl 15)) != 0 proc g_random_boolean*(): gboolean = - result = (g_random_int() and (1 shl 15)) != 0 + result = (int(g_random_int()) and (1 shl 15)) != 0 proc TGScannerConfig_case_sensitive*(a: var TGScannerConfig): guint = result = (a.flag0 and bm_TGScannerConfig_case_sensitive) shr @@ -4077,7 +4079,7 @@ when false: proc g_strstrip*(str: cstring): cstring = result = g_strchomp(g_strchug(str)) -proc G_TYPE_MAKE_FUNDAMENTAL*(x: int32): GType = +proc G_TYPE_MAKE_FUNDAMENTAL*(x: int): GType = result = GType(x shl G_TYPE_FUNDAMENTAL_SHIFT) proc G_TYPE_IS_FUNDAMENTAL*(theType: GType): bool = @@ -4202,7 +4204,7 @@ proc G_CLOSURE_NEEDS_MARSHAL*(closure: Pointer): bool = result = cast[PGClosure](closure).marshal == nil proc G_CLOSURE_N_NOTIFIERS*(cl: PGClosure): int32 = - result = ((meta_marshal(cl) + ((n_guards(cl)) shl 1)) + (n_fnotifiers(cl))) + + result = ((meta_marshal(cl) + ((n_guards(cl)) shl 1'i32)) + (n_fnotifiers(cl))) + (n_inotifiers(cl)) proc G_CCLOSURE_SWAP_DATA*(cclosure: PGClosure): int32 = diff --git a/lib/base/gtk/gtk2.nim b/lib/base/gtk/gtk2.nim index b7cf6e64f..81e09f85d 100644 --- a/lib/base/gtk/gtk2.nim +++ b/lib/base/gtk/gtk2.nim @@ -3626,10 +3626,10 @@ const GTK_DOUBLE_BUFFERED* = 1 shl 21 const - bm_TGtkWidgetAuxInfo_x_set* = 0x00000001 - bp_TGtkWidgetAuxInfo_x_set* = 0 - bm_TGtkWidgetAuxInfo_y_set* = 0x00000002 - bp_TGtkWidgetAuxInfo_y_set* = 1 + bm_TGtkWidgetAuxInfo_x_set* = 0x00000001'i16 + bp_TGtkWidgetAuxInfo_x_set* = 0'i16 + bm_TGtkWidgetAuxInfo_y_set* = 0x00000002'i16 + bp_TGtkWidgetAuxInfo_y_set* = 1'i16 proc GTK_TYPE_WIDGET*(): GType proc GTK_WIDGET*(widget: pointer): PGtkWidget @@ -3956,8 +3956,8 @@ const GTK_ACCEL_VISIBLE* = 1 shl 0 GTK_ACCEL_LOCKED* = 1 shl 1 GTK_ACCEL_MASK* = 0x00000007 - bm_TGtkAccelKey_accel_flags* = 0x0000FFFF - bp_TGtkAccelKey_accel_flags* = 0 + bm_TGtkAccelKey_accel_flags* = 0x0000FFFF'i16 + bp_TGtkAccelKey_accel_flags* = 0'i16 proc GTK_TYPE_ACCEL_GROUP*(): GType proc GTK_ACCEL_GROUP*(anObject: pointer): PGtkAccelGroup @@ -4021,16 +4021,16 @@ proc gtk_accel_group_reconnect*(accel_group: PGtkAccelGroup, accel_path_quark: TGQuark){.cdecl, dynlib: gtklib, importc: "_gtk_accel_group_reconnect".} const - bm_TGtkContainer_border_width* = 0x0000FFFF - bp_TGtkContainer_border_width* = 0 - bm_TGtkContainer_need_resize* = 0x00010000 - bp_TGtkContainer_need_resize* = 16 - bm_TGtkContainer_resize_mode* = 0x00060000 - bp_TGtkContainer_resize_mode* = 17 - bm_TGtkContainer_reallocate_redraws* = 0x00080000 - bp_TGtkContainer_reallocate_redraws* = 19 - bm_TGtkContainer_has_focus_chain* = 0x00100000 - bp_TGtkContainer_has_focus_chain* = 20 + bm_TGtkContainer_border_width* = 0x0000FFFF'i32 + bp_TGtkContainer_border_width* = 0'i32 + bm_TGtkContainer_need_resize* = 0x00010000'i32 + bp_TGtkContainer_need_resize* = 16'i32 + bm_TGtkContainer_resize_mode* = 0x00060000'i32 + bp_TGtkContainer_resize_mode* = 17'i32 + bm_TGtkContainer_reallocate_redraws* = 0x00080000'i32 + bp_TGtkContainer_reallocate_redraws* = 19'i32 + bm_TGtkContainer_has_focus_chain* = 0x00100000'i32 + bp_TGtkContainer_has_focus_chain* = 20'i32 proc GTK_TYPE_CONTAINER*(): GType proc GTK_CONTAINER*(obj: pointer): PGtkContainer @@ -4147,42 +4147,42 @@ proc gtk_bin_get_type*(): TGtkType{.cdecl, dynlib: gtklib, proc gtk_bin_get_child*(bin: PGtkBin): PGtkWidget{.cdecl, dynlib: gtklib, importc: "gtk_bin_get_child".} const - bm_TGtkWindow_allow_shrink* = 0x00000001 - bp_TGtkWindow_allow_shrink* = 0 - bm_TGtkWindow_allow_grow* = 0x00000002 - bp_TGtkWindow_allow_grow* = 1 - bm_TGtkWindow_configure_notify_received* = 0x00000004 - bp_TGtkWindow_configure_notify_received* = 2 - bm_TGtkWindow_need_default_position* = 0x00000008 - bp_TGtkWindow_need_default_position* = 3 - bm_TGtkWindow_need_default_size* = 0x00000010 - bp_TGtkWindow_need_default_size* = 4 - bm_TGtkWindow_position* = 0x000000E0 - bp_TGtkWindow_position* = 5 - bm_TGtkWindow_type* = 0x00000F00 - bp_TGtkWindow_type* = 8 - bm_TGtkWindow_has_user_ref_count* = 0x00001000 - bp_TGtkWindow_has_user_ref_count* = 12 - bm_TGtkWindow_has_focus* = 0x00002000 - bp_TGtkWindow_has_focus* = 13 - bm_TGtkWindow_modal* = 0x00004000 - bp_TGtkWindow_modal* = 14 - bm_TGtkWindow_destroy_with_parent* = 0x00008000 - bp_TGtkWindow_destroy_with_parent* = 15 - bm_TGtkWindow_has_frame* = 0x00010000 - bp_TGtkWindow_has_frame* = 16 - bm_TGtkWindow_iconify_initially* = 0x00020000 - bp_TGtkWindow_iconify_initially* = 17 - bm_TGtkWindow_stick_initially* = 0x00040000 - bp_TGtkWindow_stick_initially* = 18 - bm_TGtkWindow_maximize_initially* = 0x00080000 - bp_TGtkWindow_maximize_initially* = 19 - bm_TGtkWindow_decorated* = 0x00100000 - bp_TGtkWindow_decorated* = 20 - bm_TGtkWindow_type_hint* = 0x00E00000 - bp_TGtkWindow_type_hint* = 21 - bm_TGtkWindow_gravity* = 0x1F000000 - bp_TGtkWindow_gravity* = 24 + bm_TGtkWindow_allow_shrink* = 0x00000001'i32 + bp_TGtkWindow_allow_shrink* = 0'i32 + bm_TGtkWindow_allow_grow* = 0x00000002'i32 + bp_TGtkWindow_allow_grow* = 1'i32 + bm_TGtkWindow_configure_notify_received* = 0x00000004'i32 + bp_TGtkWindow_configure_notify_received* = 2'i32 + bm_TGtkWindow_need_default_position* = 0x00000008'i32 + bp_TGtkWindow_need_default_position* = 3'i32 + bm_TGtkWindow_need_default_size* = 0x00000010'i32 + bp_TGtkWindow_need_default_size* = 4'i32 + bm_TGtkWindow_position* = 0x000000E0'i32 + bp_TGtkWindow_position* = 5'i32 + bm_TGtkWindow_type* = 0x00000F00'i32 + bp_TGtkWindow_type* = 8'i32 + bm_TGtkWindow_has_user_ref_count* = 0x00001000'i32 + bp_TGtkWindow_has_user_ref_count* = 12'i32 + bm_TGtkWindow_has_focus* = 0x00002000'i32 + bp_TGtkWindow_has_focus* = 13'i32 + bm_TGtkWindow_modal* = 0x00004000'i32 + bp_TGtkWindow_modal* = 14'i32 + bm_TGtkWindow_destroy_with_parent* = 0x00008000'i32 + bp_TGtkWindow_destroy_with_parent* = 15'i32 + bm_TGtkWindow_has_frame* = 0x00010000'i32 + bp_TGtkWindow_has_frame* = 16'i32 + bm_TGtkWindow_iconify_initially* = 0x00020000'i32 + bp_TGtkWindow_iconify_initially* = 17'i32 + bm_TGtkWindow_stick_initially* = 0x00040000'i32 + bp_TGtkWindow_stick_initially* = 18'i32 + bm_TGtkWindow_maximize_initially* = 0x00080000'i32 + bp_TGtkWindow_maximize_initially* = 19'i32 + bm_TGtkWindow_decorated* = 0x00100000'i32 + bp_TGtkWindow_decorated* = 20'i32 + bm_TGtkWindow_type_hint* = 0x00E00000'i32 + bp_TGtkWindow_type_hint* = 21'i32 + bm_TGtkWindow_gravity* = 0x1F000000'i32 + bp_TGtkWindow_gravity* = 24'i32 proc GTK_TYPE_WINDOW*(): GType proc GTK_WINDOW*(obj: pointer): PGtkWindow @@ -4412,14 +4412,14 @@ proc gtk_window_query_nonaccels*(window: PGtkWindow, accel_key: guint, accel_mods: TGdkModifierType): gboolean{. cdecl, dynlib: gtklib, importc: "_gtk_window_query_nonaccels".} const - bm_TGtkLabel_jtype* = 0x00000003 - bp_TGtkLabel_jtype* = 0 - bm_TGtkLabel_wrap* = 0x00000004 - bp_TGtkLabel_wrap* = 2 - bm_TGtkLabel_use_underline* = 0x00000008 - bp_TGtkLabel_use_underline* = 3 - bm_TGtkLabel_use_markup* = 0x00000010 - bp_TGtkLabel_use_markup* = 4 + bm_TGtkLabel_jtype* = 0x00000003'i16 + bp_TGtkLabel_jtype* = 0'i16 + bm_TGtkLabel_wrap* = 0x00000004'i16 + bp_TGtkLabel_wrap* = 2'i16 + bm_TGtkLabel_use_underline* = 0x00000008'i16 + bp_TGtkLabel_use_underline* = 3'i16 + bm_TGtkLabel_use_markup* = 0x00000010'i16 + bp_TGtkLabel_use_markup* = 4'i16 proc GTK_TYPE_LABEL*(): GType proc GTK_LABEL*(obj: pointer): PGtkLabel @@ -4498,8 +4498,8 @@ proc gtk_label_get_layout*(`label`: PGtkLabel): PPangoLayout{.cdecl, proc gtk_label_get_layout_offsets*(`label`: PGtkLabel, x: Pgint, y: Pgint){. cdecl, dynlib: gtklib, importc: "gtk_label_get_layout_offsets".} const - bm_TGtkAccelLabelClass_latin1_to_char* = 0x00000001 - bp_TGtkAccelLabelClass_latin1_to_char* = 0 + bm_TGtkAccelLabelClass_latin1_to_char* = 0x00000001'i16 + bp_TGtkAccelLabelClass_latin1_to_char* = 0'i16 proc GTK_TYPE_ACCEL_LABEL*(): GType proc GTK_ACCEL_LABEL*(obj: pointer): PGtkAccelLabel @@ -4661,12 +4661,12 @@ proc gtk_arrow_set*(arrow: PGtkArrow, arrow_type: TGtkArrowType, shadow_type: TGtkShadowType){.cdecl, dynlib: gtklib, importc: "gtk_arrow_set".} const - bm_TGtkBindingSet_parsed* = 0x00000001 - bp_TGtkBindingSet_parsed* = 0 - bm_TGtkBindingEntry_destroyed* = 0x00000001 - bp_TGtkBindingEntry_destroyed* = 0 - bm_TGtkBindingEntry_in_emission* = 0x00000002 - bp_TGtkBindingEntry_in_emission* = 1 + bm_TGtkBindingSet_parsed* = 0x00000001'i16 + bp_TGtkBindingSet_parsed* = 0'i16 + bm_TGtkBindingEntry_destroyed* = 0x00000001'i16 + bp_TGtkBindingEntry_destroyed* = 0'i16 + bm_TGtkBindingEntry_in_emission* = 0x00000002'i16 + bp_TGtkBindingEntry_in_emission* = 1'i16 proc gtk_binding_entry_add*(binding_set: PGtkBindingSet, keyval: guint, modifiers: TGdkModifierType) @@ -4709,16 +4709,16 @@ proc gtk_bindings_activate_event*(anObject: PGtkObject, event: PGdkEventKey): gb proc gtk_binding_reset_parsed*(){.cdecl, dynlib: gtklib, importc: "_gtk_binding_reset_parsed".} const - bm_TGtkBox_homogeneous* = 0x00000001 - bp_TGtkBox_homogeneous* = 0 - bm_TGtkBoxChild_expand* = 0x00000001 - bp_TGtkBoxChild_expand* = 0 - bm_TGtkBoxChild_fill* = 0x00000002 - bp_TGtkBoxChild_fill* = 1 - bm_TGtkBoxChild_pack* = 0x00000004 - bp_TGtkBoxChild_pack* = 2 - bm_TGtkBoxChild_is_secondary* = 0x00000008 - bp_TGtkBoxChild_is_secondary* = 3 + bm_TGtkBox_homogeneous* = 0x00000001'i16 + bp_TGtkBox_homogeneous* = 0'i16 + bm_TGtkBoxChild_expand* = 0x00000001'i16 + bp_TGtkBoxChild_expand* = 0'i16 + bm_TGtkBoxChild_fill* = 0x00000002'i16 + bp_TGtkBoxChild_fill* = 1'i16 + bm_TGtkBoxChild_pack* = 0x00000004'i16 + bp_TGtkBoxChild_pack* = 2'i16 + bm_TGtkBoxChild_is_secondary* = 0x00000008'i16 + bp_TGtkBoxChild_is_secondary* = 3'i16 proc GTK_TYPE_BOX*(): GType proc GTK_BOX*(obj: pointer): PGtkBox @@ -4790,22 +4790,22 @@ proc gtk_button_box_child_requisition*(widget: PGtkWidget, height: var int32){.cdecl, dynlib: gtklib, importc: "_gtk_button_box_child_requisition".} const - bm_TGtkButton_constructed* = 0x00000001 - bp_TGtkButton_constructed* = 0 - bm_TGtkButton_in_button* = 0x00000002 - bp_TGtkButton_in_button* = 1 - bm_TGtkButton_button_down* = 0x00000004 - bp_TGtkButton_button_down* = 2 - bm_TGtkButton_relief* = 0x00000018 - bp_TGtkButton_relief* = 3 - bm_TGtkButton_use_underline* = 0x00000020 - bp_TGtkButton_use_underline* = 5 - bm_TGtkButton_use_stock* = 0x00000040 - bp_TGtkButton_use_stock* = 6 - bm_TGtkButton_depressed* = 0x00000080 - bp_TGtkButton_depressed* = 7 - bm_TGtkButton_depress_on_activate* = 0x00000100 - bp_TGtkButton_depress_on_activate* = 8 + bm_TGtkButton_constructed* = 0x00000001'i16 + bp_TGtkButton_constructed* = 0'i16 + bm_TGtkButton_in_button* = 0x00000002'i16 + bp_TGtkButton_in_button* = 1'i16 + bm_TGtkButton_button_down* = 0x00000004'i16 + bp_TGtkButton_button_down* = 2'i16 + bm_TGtkButton_relief* = 0x00000018'i16 + bp_TGtkButton_relief* = 3'i16 + bm_TGtkButton_use_underline* = 0x00000020'i16 + bp_TGtkButton_use_underline* = 5'i16 + bm_TGtkButton_use_stock* = 0x00000040'i16 + bp_TGtkButton_use_stock* = 6'i16 + bm_TGtkButton_depressed* = 0x00000080'i16 + bp_TGtkButton_depressed* = 7'i16 + bm_TGtkButton_depress_on_activate* = 0x00000100'i16 + bp_TGtkButton_depress_on_activate* = 8'i16 proc GTK_TYPE_BUTTON*(): GType proc GTK_BUTTON*(obj: pointer): PGtkButton @@ -4930,16 +4930,16 @@ const GTK_CELL_RENDERER_SORTED* = 1 shl 3 const - bm_TGtkCellRenderer_mode* = 0x00000003 - bp_TGtkCellRenderer_mode* = 0 - bm_TGtkCellRenderer_visible* = 0x00000004 - bp_TGtkCellRenderer_visible* = 2 - bm_TGtkCellRenderer_is_expander* = 0x00000008 - bp_TGtkCellRenderer_is_expander* = 3 - bm_TGtkCellRenderer_is_expanded* = 0x00000010 - bp_TGtkCellRenderer_is_expanded* = 4 - bm_TGtkCellRenderer_cell_background_set* = 0x00000020 - bp_TGtkCellRenderer_cell_background_set* = 5 + bm_TGtkCellRenderer_mode* = 0x00000003'i16 + bp_TGtkCellRenderer_mode* = 0'i16 + bm_TGtkCellRenderer_visible* = 0x00000004'i16 + bp_TGtkCellRenderer_visible* = 2'i16 + bm_TGtkCellRenderer_is_expander* = 0x00000008'i16 + bp_TGtkCellRenderer_is_expander* = 3'i16 + bm_TGtkCellRenderer_is_expanded* = 0x00000010'i16 + bp_TGtkCellRenderer_is_expanded* = 4'i16 + bm_TGtkCellRenderer_cell_background_set* = 0x00000020'i16 + bp_TGtkCellRenderer_cell_background_set* = 5'i16 proc GTK_TYPE_CELL_RENDERER*(): GType proc GTK_CELL_RENDERER*(obj: pointer): PGtkCellRenderer @@ -4990,26 +4990,26 @@ proc gtk_cell_renderer_get_fixed_size*(cell: PGtkCellRenderer, width: Pgint, height: Pgint){.cdecl, dynlib: gtklib, importc: "gtk_cell_renderer_get_fixed_size".} const - bm_TGtkCellRendererText_strikethrough* = 0x00000001 - bp_TGtkCellRendererText_strikethrough* = 0 - bm_TGtkCellRendererText_editable* = 0x00000002 - bp_TGtkCellRendererText_editable* = 1 - bm_TGtkCellRendererText_scale_set* = 0x00000004 - bp_TGtkCellRendererText_scale_set* = 2 - bm_TGtkCellRendererText_foreground_set* = 0x00000008 - bp_TGtkCellRendererText_foreground_set* = 3 - bm_TGtkCellRendererText_background_set* = 0x00000010 - bp_TGtkCellRendererText_background_set* = 4 - bm_TGtkCellRendererText_underline_set* = 0x00000020 - bp_TGtkCellRendererText_underline_set* = 5 - bm_TGtkCellRendererText_rise_set* = 0x00000040 - bp_TGtkCellRendererText_rise_set* = 6 - bm_TGtkCellRendererText_strikethrough_set* = 0x00000080 - bp_TGtkCellRendererText_strikethrough_set* = 7 - bm_TGtkCellRendererText_editable_set* = 0x00000100 - bp_TGtkCellRendererText_editable_set* = 8 - bm_TGtkCellRendererText_calc_fixed_height* = 0x00000200 - bp_TGtkCellRendererText_calc_fixed_height* = 9 + bm_TGtkCellRendererText_strikethrough* = 0x00000001'i16 + bp_TGtkCellRendererText_strikethrough* = 0'i16 + bm_TGtkCellRendererText_editable* = 0x00000002'i16 + bp_TGtkCellRendererText_editable* = 1'i16 + bm_TGtkCellRendererText_scale_set* = 0x00000004'i16 + bp_TGtkCellRendererText_scale_set* = 2'i16 + bm_TGtkCellRendererText_foreground_set* = 0x00000008'i16 + bp_TGtkCellRendererText_foreground_set* = 3'i16 + bm_TGtkCellRendererText_background_set* = 0x00000010'i16 + bp_TGtkCellRendererText_background_set* = 4'i16 + bm_TGtkCellRendererText_underline_set* = 0x00000020'i16 + bp_TGtkCellRendererText_underline_set* = 5'i16 + bm_TGtkCellRendererText_rise_set* = 0x00000040'i16 + bp_TGtkCellRendererText_rise_set* = 6'i16 + bm_TGtkCellRendererText_strikethrough_set* = 0x00000080'i16 + bp_TGtkCellRendererText_strikethrough_set* = 7'i16 + bm_TGtkCellRendererText_editable_set* = 0x00000100'i16 + bp_TGtkCellRendererText_editable_set* = 8'i16 + bm_TGtkCellRendererText_calc_fixed_height* = 0x00000200'i16 + bp_TGtkCellRendererText_calc_fixed_height* = 9'i16 proc GTK_TYPE_CELL_RENDERER_TEXT*(): GType proc GTK_CELL_RENDERER_TEXT*(obj: pointer): PGtkCellRendererText @@ -5047,12 +5047,12 @@ proc gtk_cell_renderer_text_set_fixed_height_from_font*( renderer: PGtkCellRendererText, number_of_rows: gint){.cdecl, dynlib: gtklib, importc: "gtk_cell_renderer_text_set_fixed_height_from_font".} const - bm_TGtkCellRendererToggle_active* = 0x00000001 - bp_TGtkCellRendererToggle_active* = 0 - bm_TGtkCellRendererToggle_activatable* = 0x00000002 - bp_TGtkCellRendererToggle_activatable* = 1 - bm_TGtkCellRendererToggle_radio* = 0x00000004 - bp_TGtkCellRendererToggle_radio* = 2 + bm_TGtkCellRendererToggle_active* = 0x00000001'i16 + bp_TGtkCellRendererToggle_active* = 0'i16 + bm_TGtkCellRendererToggle_activatable* = 0x00000002'i16 + bp_TGtkCellRendererToggle_activatable* = 1'i16 + bm_TGtkCellRendererToggle_radio* = 0x00000004'i16 + bp_TGtkCellRendererToggle_radio* = 2'i16 proc GTK_TYPE_CELL_RENDERER_TOGGLE*(): GType proc GTK_CELL_RENDERER_TOGGLE*(obj: pointer): PGtkCellRendererToggle @@ -5105,18 +5105,18 @@ proc gtk_item_deselect*(item: PGtkItem){.cdecl, dynlib: gtklib, proc gtk_item_toggle*(item: PGtkItem){.cdecl, dynlib: gtklib, importc: "gtk_item_toggle".} const - bm_TGtkMenuItem_show_submenu_indicator* = 0x00000001 - bp_TGtkMenuItem_show_submenu_indicator* = 0 - bm_TGtkMenuItem_submenu_placement* = 0x00000002 - bp_TGtkMenuItem_submenu_placement* = 1 - bm_TGtkMenuItem_submenu_direction* = 0x00000004 - bp_TGtkMenuItem_submenu_direction* = 2 - bm_TGtkMenuItem_right_justify* = 0x00000008 - bp_TGtkMenuItem_right_justify* = 3 - bm_TGtkMenuItem_timer_from_keypress* = 0x00000010 - bp_TGtkMenuItem_timer_from_keypress* = 4 - bm_TGtkMenuItemClass_hide_on_activate* = 0x00000001 - bp_TGtkMenuItemClass_hide_on_activate* = 0 + bm_TGtkMenuItem_show_submenu_indicator* = 0x00000001'i16 + bp_TGtkMenuItem_show_submenu_indicator* = 0'i16 + bm_TGtkMenuItem_submenu_placement* = 0x00000002'i16 + bp_TGtkMenuItem_submenu_placement* = 1'i16 + bm_TGtkMenuItem_submenu_direction* = 0x00000004'i16 + bp_TGtkMenuItem_submenu_direction* = 2'i16 + bm_TGtkMenuItem_right_justify* = 0x00000008'i16 + bp_TGtkMenuItem_right_justify* = 3'i16 + bm_TGtkMenuItem_timer_from_keypress* = 0x00000010'i16 + bp_TGtkMenuItem_timer_from_keypress* = 4'i16 + bm_TGtkMenuItemClass_hide_on_activate* = 0x00000001'i16 + bp_TGtkMenuItemClass_hide_on_activate* = 0'i16 proc GTK_TYPE_MENU_ITEM*(): GType proc GTK_MENU_ITEM*(obj: pointer): PGtkMenuItem @@ -5176,12 +5176,12 @@ proc gtk_menu_item_refresh_accel_path*(menu_item: PGtkMenuItem, proc gtk_menu_item_is_selectable*(menu_item: PGtkWidget): gboolean{.cdecl, dynlib: gtklib, importc: "_gtk_menu_item_is_selectable".} const - bm_TGtkToggleButton_active* = 0x00000001 - bp_TGtkToggleButton_active* = 0 - bm_TGtkToggleButton_draw_indicator* = 0x00000002 - bp_TGtkToggleButton_draw_indicator* = 1 - bm_TGtkToggleButton_inconsistent* = 0x00000004 - bp_TGtkToggleButton_inconsistent* = 2 + bm_TGtkToggleButton_active* = 0x00000001'i16 + bp_TGtkToggleButton_active* = 0'i16 + bm_TGtkToggleButton_draw_indicator* = 0x00000002'i16 + bp_TGtkToggleButton_draw_indicator* = 1'i16 + bm_TGtkToggleButton_inconsistent* = 0x00000004'i16 + bp_TGtkToggleButton_inconsistent* = 2'i16 proc GTK_TYPE_TOGGLE_BUTTON*(): GType proc GTK_TOGGLE_BUTTON*(obj: pointer): PGtkToggleButton @@ -5239,12 +5239,12 @@ proc gtk_check_button_get_props*(check_button: PGtkCheckButton, indicator_spacing: Pgint){.cdecl, dynlib: gtklib, importc: "_gtk_check_button_get_props".} const - bm_TGtkCheckMenuItem_active* = 0x00000001 - bp_TGtkCheckMenuItem_active* = 0 - bm_TGtkCheckMenuItem_always_show_toggle* = 0x00000002 - bp_TGtkCheckMenuItem_always_show_toggle* = 1 - bm_TGtkCheckMenuItem_inconsistent* = 0x00000004 - bp_TGtkCheckMenuItem_inconsistent* = 2 + bm_TGtkCheckMenuItem_active* = 0x00000001'i16 + bp_TGtkCheckMenuItem_active* = 0'i16 + bm_TGtkCheckMenuItem_always_show_toggle* = 0x00000002'i16 + bp_TGtkCheckMenuItem_always_show_toggle* = 1'i16 + bm_TGtkCheckMenuItem_inconsistent* = 0x00000004'i16 + bp_TGtkCheckMenuItem_inconsistent* = 2'i16 proc GTK_TYPE_CHECK_MENU_ITEM*(): GType proc GTK_CHECK_MENU_ITEM*(obj: pointer): PGtkCheckMenuItem @@ -5332,22 +5332,22 @@ const GTK_BUTTON_EXPANDS* = 1 shl 2 const - bm_TGtkCListColumn_visible* = 0x00000001 - bp_TGtkCListColumn_visible* = 0 - bm_TGtkCListColumn_width_set* = 0x00000002 - bp_TGtkCListColumn_width_set* = 1 - bm_TGtkCListColumn_resizeable* = 0x00000004 - bp_TGtkCListColumn_resizeable* = 2 - bm_TGtkCListColumn_auto_resize* = 0x00000008 - bp_TGtkCListColumn_auto_resize* = 3 - bm_TGtkCListColumn_button_passive* = 0x00000010 - bp_TGtkCListColumn_button_passive* = 4 - bm_TGtkCListRow_fg_set* = 0x00000001 - bp_TGtkCListRow_fg_set* = 0 - bm_TGtkCListRow_bg_set* = 0x00000002 - bp_TGtkCListRow_bg_set* = 1 - bm_TGtkCListRow_selectable* = 0x00000004 - bp_TGtkCListRow_selectable* = 2 + bm_TGtkCListColumn_visible* = 0x00000001'i16 + bp_TGtkCListColumn_visible* = 0'i16 + bm_TGtkCListColumn_width_set* = 0x00000002'i16 + bp_TGtkCListColumn_width_set* = 1'i16 + bm_TGtkCListColumn_resizeable* = 0x00000004'i16 + bp_TGtkCListColumn_resizeable* = 2'i16 + bm_TGtkCListColumn_auto_resize* = 0x00000008'i16 + bp_TGtkCListColumn_auto_resize* = 3'i16 + bm_TGtkCListColumn_button_passive* = 0x00000010'i16 + bp_TGtkCListColumn_button_passive* = 4'i16 + bm_TGtkCListRow_fg_set* = 0x00000001'i16 + bp_TGtkCListRow_fg_set* = 0'i16 + bm_TGtkCListRow_bg_set* = 0x00000002'i16 + bp_TGtkCListRow_bg_set* = 1'i16 + bm_TGtkCListRow_selectable* = 0x00000004'i16 + bp_TGtkCListRow_selectable* = 2'i16 proc GTK_TYPE_CLIST*(): GType proc GTK_CLIST*(obj: pointer): PGtkCList @@ -5677,16 +5677,16 @@ proc gtk_hbox_get_type*(): TGtkType{.cdecl, dynlib: gtklib, proc gtk_hbox_new*(homogeneous: gboolean, spacing: gint): PGtkWidget{.cdecl, dynlib: gtklib, importc: "gtk_hbox_new".} const - bm_TGtkCombo_value_in_list* = 0x00000001 - bp_TGtkCombo_value_in_list* = 0 - bm_TGtkCombo_ok_if_empty* = 0x00000002 - bp_TGtkCombo_ok_if_empty* = 1 - bm_TGtkCombo_case_sensitive* = 0x00000004 - bp_TGtkCombo_case_sensitive* = 2 - bm_TGtkCombo_use_arrows* = 0x00000008 - bp_TGtkCombo_use_arrows* = 3 - bm_TGtkCombo_use_arrows_always* = 0x00000010 - bp_TGtkCombo_use_arrows_always* = 4 + bm_TGtkCombo_value_in_list* = 0x00000001'i16 + bp_TGtkCombo_value_in_list* = 0'i16 + bm_TGtkCombo_ok_if_empty* = 0x00000002'i16 + bp_TGtkCombo_ok_if_empty* = 1'i16 + bm_TGtkCombo_case_sensitive* = 0x00000004'i16 + bp_TGtkCombo_case_sensitive* = 2'i16 + bm_TGtkCombo_use_arrows* = 0x00000008'i16 + bp_TGtkCombo_use_arrows* = 3'i16 + bm_TGtkCombo_use_arrows_always* = 0x00000010'i16 + bp_TGtkCombo_use_arrows_always* = 4'i16 proc GTK_TYPE_COMBO*(): GType proc GTK_COMBO*(obj: pointer): PGtkCombo @@ -5725,16 +5725,16 @@ proc gtk_combo_set_popdown_strings*(combo: PGtkCombo, strings: PGList){.cdecl, proc gtk_combo_disable_activate*(combo: PGtkCombo){.cdecl, dynlib: gtklib, importc: "gtk_combo_disable_activate".} const - bm_TGtkCTree_line_style* = 0x00000003 - bp_TGtkCTree_line_style* = 0 - bm_TGtkCTree_expander_style* = 0x0000000C - bp_TGtkCTree_expander_style* = 2 - bm_TGtkCTree_show_stub* = 0x00000010 - bp_TGtkCTree_show_stub* = 4 - bm_TGtkCTreeRow_is_leaf* = 0x00000001 - bp_TGtkCTreeRow_is_leaf* = 0 - bm_TGtkCTreeRow_expanded* = 0x00000002 - bp_TGtkCTreeRow_expanded* = 1 + bm_TGtkCTree_line_style* = 0x00000003'i16 + bp_TGtkCTree_line_style* = 0'i16 + bm_TGtkCTree_expander_style* = 0x0000000C'i16 + bp_TGtkCTree_expander_style* = 2'i16 + bm_TGtkCTree_show_stub* = 0x00000010'i16 + bp_TGtkCTree_show_stub* = 4'i16 + bm_TGtkCTreeRow_is_leaf* = 0x00000001'i16 + bp_TGtkCTreeRow_is_leaf* = 0'i16 + bm_TGtkCTreeRow_expanded* = 0x00000002'i16 + bp_TGtkCTreeRow_expanded* = 1'i16 proc GTK_TYPE_CTREE*(): GType proc GTK_CTREE*(obj: pointer): PGtkCTree @@ -6119,20 +6119,20 @@ proc gtk_im_context_delete_surrounding*(context: PGtkIMContext, offset: gint, n_chars: gint): gboolean{.cdecl, dynlib: gtklib, importc: "gtk_im_context_delete_surrounding".} const - bm_TGtkMenuShell_active* = 0x00000001 - bp_TGtkMenuShell_active* = 0 - bm_TGtkMenuShell_have_grab* = 0x00000002 - bp_TGtkMenuShell_have_grab* = 1 - bm_TGtkMenuShell_have_xgrab* = 0x00000004 - bp_TGtkMenuShell_have_xgrab* = 2 - bm_TGtkMenuShell_ignore_leave* = 0x00000008 - bp_TGtkMenuShell_ignore_leave* = 3 - bm_TGtkMenuShell_menu_flag* = 0x00000010 - bp_TGtkMenuShell_menu_flag* = 4 - bm_TGtkMenuShell_ignore_enter* = 0x00000020 - bp_TGtkMenuShell_ignore_enter* = 5 - bm_TGtkMenuShellClass_submenu_placement* = 0x00000001 - bp_TGtkMenuShellClass_submenu_placement* = 0 + bm_TGtkMenuShell_active* = 0x00000001'i16 + bp_TGtkMenuShell_active* = 0'i16 + bm_TGtkMenuShell_have_grab* = 0x00000002'i16 + bp_TGtkMenuShell_have_grab* = 1'i16 + bm_TGtkMenuShell_have_xgrab* = 0x00000004'i16 + bp_TGtkMenuShell_have_xgrab* = 2'i16 + bm_TGtkMenuShell_ignore_leave* = 0x00000008'i16 + bp_TGtkMenuShell_ignore_leave* = 3'i16 + bm_TGtkMenuShell_menu_flag* = 0x00000010'i16 + bp_TGtkMenuShell_menu_flag* = 4'i16 + bm_TGtkMenuShell_ignore_enter* = 0x00000020'i16 + bp_TGtkMenuShell_ignore_enter* = 5'i16 + bm_TGtkMenuShellClass_submenu_placement* = 0x00000001'i16 + bp_TGtkMenuShellClass_submenu_placement* = 0'i16 proc GTK_TYPE_MENU_SHELL*(): GType proc GTK_MENU_SHELL*(obj: pointer): PGtkMenuShell @@ -6180,22 +6180,22 @@ proc gtk_menu_shell_select_first*(menu_shell: PGtkMenuShell){.cdecl, proc gtk_menu_shell_activate*(menu_shell: PGtkMenuShell){.cdecl, dynlib: gtklib, importc: "_gtk_menu_shell_activate".} const - bm_TGtkMenu_needs_destruction_ref_count* = 0x00000001 - bp_TGtkMenu_needs_destruction_ref_count* = 0 - bm_TGtkMenu_torn_off* = 0x00000002 - bp_TGtkMenu_torn_off* = 1 - bm_TGtkMenu_tearoff_active* = 0x00000004 - bp_TGtkMenu_tearoff_active* = 2 - bm_TGtkMenu_scroll_fast* = 0x00000008 - bp_TGtkMenu_scroll_fast* = 3 - bm_TGtkMenu_upper_arrow_visible* = 0x00000010 - bp_TGtkMenu_upper_arrow_visible* = 4 - bm_TGtkMenu_lower_arrow_visible* = 0x00000020 - bp_TGtkMenu_lower_arrow_visible* = 5 - bm_TGtkMenu_upper_arrow_prelight* = 0x00000040 - bp_TGtkMenu_upper_arrow_prelight* = 6 - bm_TGtkMenu_lower_arrow_prelight* = 0x00000080 - bp_TGtkMenu_lower_arrow_prelight* = 7 + bm_TGtkMenu_needs_destruction_ref_count* = 0x00000001'i16 + bp_TGtkMenu_needs_destruction_ref_count* = 0'i16 + bm_TGtkMenu_torn_off* = 0x00000002'i16 + bp_TGtkMenu_torn_off* = 1'i16 + bm_TGtkMenu_tearoff_active* = 0x00000004'i16 + bp_TGtkMenu_tearoff_active* = 2'i16 + bm_TGtkMenu_scroll_fast* = 0x00000008'i16 + bp_TGtkMenu_scroll_fast* = 3'i16 + bm_TGtkMenu_upper_arrow_visible* = 0x00000010'i16 + bp_TGtkMenu_upper_arrow_visible* = 4'i16 + bm_TGtkMenu_lower_arrow_visible* = 0x00000020'i16 + bp_TGtkMenu_lower_arrow_visible* = 5'i16 + bm_TGtkMenu_upper_arrow_prelight* = 0x00000040'i16 + bp_TGtkMenu_upper_arrow_prelight* = 6'i16 + bm_TGtkMenu_lower_arrow_prelight* = 0x00000080'i16 + bp_TGtkMenu_lower_arrow_prelight* = 7'i16 proc GTK_TYPE_MENU*(): GType proc GTK_MENU*(obj: pointer): PGtkMenu @@ -6261,32 +6261,32 @@ proc gtk_menu_reorder_child*(menu: PGtkMenu, child: PGtkWidget, position: gint){ proc gtk_menu_set_screen*(menu: PGtkMenu, screen: PGdkScreen){.cdecl, dynlib: gtklib, importc: "gtk_menu_set_screen".} const - bm_TGtkEntry_editable* = 0x00000001 - bp_TGtkEntry_editable* = 0 - bm_TGtkEntry_visible* = 0x00000002 - bp_TGtkEntry_visible* = 1 - bm_TGtkEntry_overwrite_mode* = 0x00000004 - bp_TGtkEntry_overwrite_mode* = 2 - bm_TGtkEntry_in_drag* = 0x00000008 - bp_TGtkEntry_in_drag* = 3 - bm_TGtkEntry_cache_includes_preedit* = 0x00000001 - bp_TGtkEntry_cache_includes_preedit* = 0 - bm_TGtkEntry_need_im_reset* = 0x00000002 - bp_TGtkEntry_need_im_reset* = 1 - bm_TGtkEntry_has_frame* = 0x00000004 - bp_TGtkEntry_has_frame* = 2 - bm_TGtkEntry_activates_default* = 0x00000008 - bp_TGtkEntry_activates_default* = 3 - bm_TGtkEntry_cursor_visible* = 0x00000010 - bp_TGtkEntry_cursor_visible* = 4 - bm_TGtkEntry_in_click* = 0x00000020 - bp_TGtkEntry_in_click* = 5 - bm_TGtkEntry_is_cell_renderer* = 0x00000040 - bp_TGtkEntry_is_cell_renderer* = 6 - bm_TGtkEntry_editing_canceled* = 0x00000080 - bp_TGtkEntry_editing_canceled* = 7 - bm_TGtkEntry_mouse_cursor_obscured* = 0x00000100 - bp_TGtkEntry_mouse_cursor_obscured* = 8 + bm_TGtkEntry_editable* = 0x00000001'i16 + bp_TGtkEntry_editable* = 0'i16 + bm_TGtkEntry_visible* = 0x00000002'i16 + bp_TGtkEntry_visible* = 1'i16 + bm_TGtkEntry_overwrite_mode* = 0x00000004'i16 + bp_TGtkEntry_overwrite_mode* = 2'i16 + bm_TGtkEntry_in_drag* = 0x00000008'i16 + bp_TGtkEntry_in_drag* = 3'i16 + bm_TGtkEntry_cache_includes_preedit* = 0x00000001'i16 + bp_TGtkEntry_cache_includes_preedit* = 0'i16 + bm_TGtkEntry_need_im_reset* = 0x00000002'i16 + bp_TGtkEntry_need_im_reset* = 1'i16 + bm_TGtkEntry_has_frame* = 0x00000004'i16 + bp_TGtkEntry_has_frame* = 2'i16 + bm_TGtkEntry_activates_default* = 0x00000008'i16 + bp_TGtkEntry_activates_default* = 3'i16 + bm_TGtkEntry_cursor_visible* = 0x00000010'i16 + bp_TGtkEntry_cursor_visible* = 4'i16 + bm_TGtkEntry_in_click* = 0x00000020'i16 + bp_TGtkEntry_in_click* = 5'i16 + bm_TGtkEntry_is_cell_renderer* = 0x00000040'i16 + bp_TGtkEntry_is_cell_renderer* = 6'i16 + bm_TGtkEntry_editing_canceled* = 0x00000080'i16 + bp_TGtkEntry_editing_canceled* = 7'i16 + bm_TGtkEntry_mouse_cursor_obscured* = 0x00000100'i16 + bp_TGtkEntry_mouse_cursor_obscured* = 8'i16 proc GTK_TYPE_ENTRY*(): GType proc GTK_ENTRY*(obj: pointer): PGtkEntry @@ -6653,18 +6653,18 @@ proc gtk_gc_get*(depth: gint, colormap: PGdkColormap, values: PGdkGCValues, proc gtk_gc_release*(gc: PGdkGC){.cdecl, dynlib: gtklib, importc: "gtk_gc_release".} const - bm_TGtkHandleBox_handle_position* = 0x00000003 - bp_TGtkHandleBox_handle_position* = 0 - bm_TGtkHandleBox_float_window_mapped* = 0x00000004 - bp_TGtkHandleBox_float_window_mapped* = 2 - bm_TGtkHandleBox_child_detached* = 0x00000008 - bp_TGtkHandleBox_child_detached* = 3 - bm_TGtkHandleBox_in_drag* = 0x00000010 - bp_TGtkHandleBox_in_drag* = 4 - bm_TGtkHandleBox_shrink_on_detach* = 0x00000020 - bp_TGtkHandleBox_shrink_on_detach* = 5 - bm_TGtkHandleBox_snap_edge* = 0x000001C0 - bp_TGtkHandleBox_snap_edge* = 6 + bm_TGtkHandleBox_handle_position* = 0x00000003'i16 + bp_TGtkHandleBox_handle_position* = 0'i16 + bm_TGtkHandleBox_float_window_mapped* = 0x00000004'i16 + bp_TGtkHandleBox_float_window_mapped* = 2'i16 + bm_TGtkHandleBox_child_detached* = 0x00000008'i16 + bp_TGtkHandleBox_child_detached* = 3'i16 + bm_TGtkHandleBox_in_drag* = 0x00000010'i16 + bp_TGtkHandleBox_in_drag* = 4'i16 + bm_TGtkHandleBox_shrink_on_detach* = 0x00000020'i16 + bp_TGtkHandleBox_shrink_on_detach* = 5'i16 + bm_TGtkHandleBox_snap_edge* = 0x000001C0'i16 + bp_TGtkHandleBox_snap_edge* = 6'i16 proc GTK_TYPE_HANDLE_BOX*(): GType proc GTK_HANDLE_BOX*(obj: pointer): PGtkHandleBox @@ -6704,24 +6704,24 @@ proc gtk_handle_box_set_snap_edge*(handle_box: PGtkHandleBox, proc gtk_handle_box_get_snap_edge*(handle_box: PGtkHandleBox): TGtkPositionType{. cdecl, dynlib: gtklib, importc: "gtk_handle_box_get_snap_edge".} const - bm_TGtkPaned_position_set* = 0x00000001 - bp_TGtkPaned_position_set* = 0 - bm_TGtkPaned_in_drag* = 0x00000002 - bp_TGtkPaned_in_drag* = 1 - bm_TGtkPaned_child1_shrink* = 0x00000004 - bp_TGtkPaned_child1_shrink* = 2 - bm_TGtkPaned_child1_resize* = 0x00000008 - bp_TGtkPaned_child1_resize* = 3 - bm_TGtkPaned_child2_shrink* = 0x00000010 - bp_TGtkPaned_child2_shrink* = 4 - bm_TGtkPaned_child2_resize* = 0x00000020 - bp_TGtkPaned_child2_resize* = 5 - bm_TGtkPaned_orientation* = 0x00000040 - bp_TGtkPaned_orientation* = 6 - bm_TGtkPaned_in_recursion* = 0x00000080 - bp_TGtkPaned_in_recursion* = 7 - bm_TGtkPaned_handle_prelit* = 0x00000100 - bp_TGtkPaned_handle_prelit* = 8 + bm_TGtkPaned_position_set* = 0x00000001'i16 + bp_TGtkPaned_position_set* = 0'i16 + bm_TGtkPaned_in_drag* = 0x00000002'i16 + bp_TGtkPaned_in_drag* = 1'i16 + bm_TGtkPaned_child1_shrink* = 0x00000004'i16 + bp_TGtkPaned_child1_shrink* = 2'i16 + bm_TGtkPaned_child1_resize* = 0x00000008'i16 + bp_TGtkPaned_child1_resize* = 3'i16 + bm_TGtkPaned_child2_shrink* = 0x00000010'i16 + bp_TGtkPaned_child2_shrink* = 4'i16 + bm_TGtkPaned_child2_resize* = 0x00000020'i16 + bp_TGtkPaned_child2_resize* = 5'i16 + bm_TGtkPaned_orientation* = 0x00000040'i16 + bp_TGtkPaned_orientation* = 6'i16 + bm_TGtkPaned_in_recursion* = 0x00000080'i16 + bp_TGtkPaned_in_recursion* = 7'i16 + bm_TGtkPaned_handle_prelit* = 0x00000100'i16 + bp_TGtkPaned_handle_prelit* = 8'i16 proc GTK_TYPE_PANED*(): GType proc GTK_PANED*(obj: pointer): PGtkPaned @@ -6872,8 +6872,8 @@ const GTK_RC_BG* = 1 shl 1 GTK_RC_TEXT* = 1 shl 2 GTK_RC_BASE* = 1 shl 3 - bm_TGtkRcStyle_engine_specified* = 0x00000001 - bp_TGtkRcStyle_engine_specified* = 0 + bm_TGtkRcStyle_engine_specified* = 0x00000001'i16 + bp_TGtkRcStyle_engine_specified* = 0'i16 proc GTK_TYPE_RC_STYLE*(): GType proc GTK_RC_STYLE_get*(anObject: pointer): PGtkRcStyle @@ -7101,26 +7101,26 @@ proc gtk_draw_insertion_cursor*(widget: PGtkWidget, drawable: PGdkDrawable, draw_arrow: gboolean){.cdecl, dynlib: gtklib, importc: "_gtk_draw_insertion_cursor".} const - bm_TGtkRange_inverted* = 0x00000001 - bp_TGtkRange_inverted* = 0 - bm_TGtkRange_flippable* = 0x00000002 - bp_TGtkRange_flippable* = 1 - bm_TGtkRange_has_stepper_a* = 0x00000004 - bp_TGtkRange_has_stepper_a* = 2 - bm_TGtkRange_has_stepper_b* = 0x00000008 - bp_TGtkRange_has_stepper_b* = 3 - bm_TGtkRange_has_stepper_c* = 0x00000010 - bp_TGtkRange_has_stepper_c* = 4 - bm_TGtkRange_has_stepper_d* = 0x00000020 - bp_TGtkRange_has_stepper_d* = 5 - bm_TGtkRange_need_recalc* = 0x00000040 - bp_TGtkRange_need_recalc* = 6 - bm_TGtkRange_slider_size_fixed* = 0x00000080 - bp_TGtkRange_slider_size_fixed* = 7 - bm_TGtkRange_trough_click_forward* = 0x00000001 - bp_TGtkRange_trough_click_forward* = 0 - bm_TGtkRange_update_pending* = 0x00000002 - bp_TGtkRange_update_pending* = 1 + bm_TGtkRange_inverted* = 0x00000001'i16 + bp_TGtkRange_inverted* = 0'i16 + bm_TGtkRange_flippable* = 0x00000002'i16 + bp_TGtkRange_flippable* = 1'i16 + bm_TGtkRange_has_stepper_a* = 0x00000004'i16 + bp_TGtkRange_has_stepper_a* = 2'i16 + bm_TGtkRange_has_stepper_b* = 0x00000008'i16 + bp_TGtkRange_has_stepper_b* = 3'i16 + bm_TGtkRange_has_stepper_c* = 0x00000010'i16 + bp_TGtkRange_has_stepper_c* = 4'i16 + bm_TGtkRange_has_stepper_d* = 0x00000020'i16 + bp_TGtkRange_has_stepper_d* = 5'i16 + bm_TGtkRange_need_recalc* = 0x00000040'i16 + bp_TGtkRange_need_recalc* = 6'i16 + bm_TGtkRange_slider_size_fixed* = 0x00000080'i16 + bp_TGtkRange_slider_size_fixed* = 7'i16 + bm_TGtkRange_trough_click_forward* = 0x00000001'i16 + bp_TGtkRange_trough_click_forward* = 0'i16 + bm_TGtkRange_update_pending* = 0x00000002'i16 + bp_TGtkRange_update_pending* = 1'i16 proc GTK_TYPE_RANGE*(): GType proc GTK_RANGE*(obj: pointer): PGtkRange @@ -7171,10 +7171,10 @@ proc gtk_range_set_value*(range: PGtkRange, value: gdouble){.cdecl, proc gtk_range_get_value*(range: PGtkRange): gdouble{.cdecl, dynlib: gtklib, importc: "gtk_range_get_value".} const - bm_TGtkScale_draw_value* = 0x00000001 - bp_TGtkScale_draw_value* = 0 - bm_TGtkScale_value_pos* = 0x00000006 - bp_TGtkScale_value_pos* = 1 + bm_TGtkScale_draw_value* = 0x00000001'i16 + bp_TGtkScale_draw_value* = 0'i16 + bm_TGtkScale_value_pos* = 0x00000006'i16 + bp_TGtkScale_value_pos* = 1'i16 proc GTK_TYPE_SCALE*(): GType proc GTK_SCALE*(obj: pointer): PGtkScale @@ -7430,8 +7430,8 @@ proc gtk_image_menu_item_set_image*(image_menu_item: PGtkImageMenuItem, proc gtk_image_menu_item_get_image*(image_menu_item: PGtkImageMenuItem): PGtkWidget{. cdecl, dynlib: gtklib, importc: "gtk_image_menu_item_get_image".} const - bm_TGtkIMContextSimple_in_hex_sequence* = 0x00000001 - bp_TGtkIMContextSimple_in_hex_sequence* = 0 + bm_TGtkIMContextSimple_in_hex_sequence* = 0x00000001'i16 + bp_TGtkIMContextSimple_in_hex_sequence* = 0'i16 proc GTK_TYPE_IM_CONTEXT_SIMPLE*(): GType proc GTK_IM_CONTEXT_SIMPLE*(obj: pointer): PGtkIMContextSimple @@ -7581,12 +7581,12 @@ proc gtk_layout_set_hadjustment*(layout: PGtkLayout, adjustment: PGtkAdjustment) proc gtk_layout_set_vadjustment*(layout: PGtkLayout, adjustment: PGtkAdjustment){. cdecl, dynlib: gtklib, importc: "gtk_layout_set_vadjustment".} const - bm_TGtkList_selection_mode* = 0x00000003 - bp_TGtkList_selection_mode* = 0 - bm_TGtkList_drag_selection* = 0x00000004 - bp_TGtkList_drag_selection* = 2 - bm_TGtkList_add_mode* = 0x00000008 - bp_TGtkList_add_mode* = 3 + bm_TGtkList_selection_mode* = 0x00000003'i16 + bp_TGtkList_selection_mode* = 0'i16 + bm_TGtkList_drag_selection* = 0x00000004'i16 + bp_TGtkList_drag_selection* = 2'i16 + bm_TGtkList_add_mode* = 0x00000008'i16 + bp_TGtkList_add_mode* = 3'i16 proc GTK_TYPE_LIST*(): GType proc GTK_LIST*(obj: pointer): PGtkList @@ -7850,8 +7850,8 @@ proc gtk_tree_model_sort_reset_default_sort_func*( proc gtk_tree_model_sort_clear_cache*(tree_model_sort: PGtkTreeModelSort){. cdecl, dynlib: gtklib, importc: "gtk_tree_model_sort_clear_cache".} const - bm_TGtkListStore_columns_dirty* = 0x00000001 - bp_TGtkListStore_columns_dirty* = 0 + bm_TGtkListStore_columns_dirty* = 0x00000001'i16 + bp_TGtkListStore_columns_dirty* = 0'i16 proc GTK_TYPE_LIST_STORE*(): GType proc GTK_LIST_STORE*(obj: pointer): PGtkListStore @@ -8007,30 +8007,30 @@ proc GTK_MESSAGE_DIALOG_GET_CLASS*(obj: pointer): PGtkMessageDialogClass proc gtk_message_dialog_get_type*(): TGtkType{.cdecl, dynlib: gtklib, importc: "gtk_message_dialog_get_type".} const - bm_TGtkNotebook_show_tabs* = 0x00000001 - bp_TGtkNotebook_show_tabs* = 0 - bm_TGtkNotebook_homogeneous* = 0x00000002 - bp_TGtkNotebook_homogeneous* = 1 - bm_TGtkNotebook_show_border* = 0x00000004 - bp_TGtkNotebook_show_border* = 2 - bm_TGtkNotebook_tab_pos* = 0x00000018 - bp_TGtkNotebook_tab_pos* = 3 - bm_TGtkNotebook_scrollable* = 0x00000020 - bp_TGtkNotebook_scrollable* = 5 - bm_TGtkNotebook_in_child* = 0x000000C0 - bp_TGtkNotebook_in_child* = 6 - bm_TGtkNotebook_click_child* = 0x00000300 - bp_TGtkNotebook_click_child* = 8 - bm_TGtkNotebook_button* = 0x00000C00 - bp_TGtkNotebook_button* = 10 - bm_TGtkNotebook_need_timer* = 0x00001000 - bp_TGtkNotebook_need_timer* = 12 - bm_TGtkNotebook_child_has_focus* = 0x00002000 - bp_TGtkNotebook_child_has_focus* = 13 - bm_TGtkNotebook_have_visible_child* = 0x00004000 - bp_TGtkNotebook_have_visible_child* = 14 - bm_TGtkNotebook_focus_out* = 0x00008000 - bp_TGtkNotebook_focus_out* = 15 + bm_TGtkNotebook_show_tabs* = 0x00000001'i16 + bp_TGtkNotebook_show_tabs* = 0'i16 + bm_TGtkNotebook_homogeneous* = 0x00000002'i16 + bp_TGtkNotebook_homogeneous* = 1'i16 + bm_TGtkNotebook_show_border* = 0x00000004'i16 + bp_TGtkNotebook_show_border* = 2'i16 + bm_TGtkNotebook_tab_pos* = 0x00000018'i16 + bp_TGtkNotebook_tab_pos* = 3'i16 + bm_TGtkNotebook_scrollable* = 0x00000020'i16 + bp_TGtkNotebook_scrollable* = 5'i16 + bm_TGtkNotebook_in_child* = 0x000000C0'i16 + bp_TGtkNotebook_in_child* = 6'i16 + bm_TGtkNotebook_click_child* = 0x00000300'i16 + bp_TGtkNotebook_click_child* = 8'i16 + bm_TGtkNotebook_button* = 0x00000C00'i16 + bp_TGtkNotebook_button* = 10'i16 + bm_TGtkNotebook_need_timer* = 0x00001000'i16 + bp_TGtkNotebook_need_timer* = 12'i16 + bm_TGtkNotebook_child_has_focus* = 0x00002000'i16 + bp_TGtkNotebook_child_has_focus* = 13'i16 + bm_TGtkNotebook_have_visible_child* = 0x00004000'i16 + bp_TGtkNotebook_have_visible_child* = 14'i16 + bm_TGtkNotebook_focus_out* = 0x00008000'i16 + bp_TGtkNotebook_focus_out* = 15'i16 proc GTK_TYPE_NOTEBOOK*(): GType proc GTK_NOTEBOOK*(obj: pointer): PGtkNotebook @@ -8152,12 +8152,12 @@ proc gtk_notebook_reorder_child*(notebook: PGtkNotebook, child: PGtkWidget, position: gint){.cdecl, dynlib: gtklib, importc: "gtk_notebook_reorder_child".} const - bm_TGtkOldEditable_has_selection* = 0x00000001 - bp_TGtkOldEditable_has_selection* = 0 - bm_TGtkOldEditable_editable* = 0x00000002 - bp_TGtkOldEditable_editable* = 1 - bm_TGtkOldEditable_visible* = 0x00000004 - bp_TGtkOldEditable_visible* = 2 + bm_TGtkOldEditable_has_selection* = 0x00000001'i16 + bp_TGtkOldEditable_has_selection* = 0'i16 + bm_TGtkOldEditable_editable* = 0x00000002'i16 + bp_TGtkOldEditable_editable* = 1'i16 + bm_TGtkOldEditable_visible* = 0x00000004'i16 + bp_TGtkOldEditable_visible* = 2'i16 proc GTK_TYPE_OLD_EDITABLE*(): GType proc GTK_OLD_EDITABLE*(obj: pointer): PGtkOldEditable @@ -8199,8 +8199,8 @@ proc gtk_option_menu_get_history*(option_menu: PGtkOptionMenu): gint{.cdecl, proc gtk_option_menu_set_history*(option_menu: PGtkOptionMenu, index: guint){. cdecl, dynlib: gtklib, importc: "gtk_option_menu_set_history".} const - bm_TGtkPixmap_build_insensitive* = 0x00000001 - bp_TGtkPixmap_build_insensitive* = 0 + bm_TGtkPixmap_build_insensitive* = 0x00000001'i16 + bp_TGtkPixmap_build_insensitive* = 0'i16 proc GTK_TYPE_PIXMAP*(): GType proc GTK_PIXMAP*(obj: pointer): PGtkPixmap @@ -8222,8 +8222,8 @@ proc gtk_pixmap_get*(pixmap: PGtkPixmap, val: var PGdkPixmap, proc gtk_pixmap_set_build_insensitive*(pixmap: PGtkPixmap, build: gboolean){. cdecl, dynlib: gtklib, importc: "gtk_pixmap_set_build_insensitive".} const - bm_TGtkPlug_same_app* = 0x00000001 - bp_TGtkPlug_same_app* = 0 + bm_TGtkPlug_same_app* = 0x00000001'i16 + bp_TGtkPlug_same_app* = 0'i16 proc GTK_TYPE_PLUG*(): GType proc GTK_PLUG*(obj: pointer): PGtkPlug @@ -8247,10 +8247,10 @@ proc gtk_plug_add_to_socket*(plug: PGtkPlug, socket: PGtkSocket){.cdecl, proc gtk_plug_remove_from_socket*(plug: PGtkPlug, socket: PGtkSocket){.cdecl, dynlib: gtklib, importc: "_gtk_plug_remove_from_socket".} const - bm_TGtkPreview_type* = 0x00000001 - bp_TGtkPreview_type* = 0 - bm_TGtkPreview_expand* = 0x00000002 - bp_TGtkPreview_expand* = 1 + bm_TGtkPreview_type* = 0x00000001'i16 + bp_TGtkPreview_type* = 0'i16 + bm_TGtkPreview_expand* = 0x00000002'i16 + bp_TGtkPreview_expand* = 1'i16 proc GTK_TYPE_PREVIEW*(): GType proc GTK_PREVIEW*(obj: pointer): PGtkPreview @@ -8293,12 +8293,12 @@ proc gtk_preview_get_info*(): PGtkPreviewInfo{.cdecl, dynlib: gtklib, importc: "gtk_preview_get_info".} proc gtk_preview_reset*(){.cdecl, dynlib: gtklib, importc: "gtk_preview_reset".} const - bm_TGtkProgress_show_text* = 0x00000001 - bp_TGtkProgress_show_text* = 0 - bm_TGtkProgress_activity_mode* = 0x00000002 - bp_TGtkProgress_activity_mode* = 1 - bm_TGtkProgress_use_text_format* = 0x00000004 - bp_TGtkProgress_use_text_format* = 2 + bm_TGtkProgress_show_text* = 0x00000001'i16 + bp_TGtkProgress_show_text* = 0'i16 + bm_TGtkProgress_activity_mode* = 0x00000002'i16 + bp_TGtkProgress_activity_mode* = 1'i16 + bm_TGtkProgress_use_text_format* = 0x00000004'i16 + bp_TGtkProgress_use_text_format* = 2'i16 proc show_text*(a: var TGtkProgress): guint proc set_show_text*(a: var TGtkProgress, `show_text`: guint) @@ -8307,8 +8307,8 @@ proc set_activity_mode*(a: var TGtkProgress, `activity_mode`: guint) proc use_text_format*(a: var TGtkProgress): guint proc set_use_text_format*(a: var TGtkProgress, `use_text_format`: guint) const - bm_TGtkProgressBar_activity_dir* = 0x00000001 - bp_TGtkProgressBar_activity_dir* = 0 + bm_TGtkProgressBar_activity_dir* = 0x00000001'i16 + bp_TGtkProgressBar_activity_dir* = 0'i16 proc GTK_TYPE_PROGRESS_BAR*(): GType proc GTK_PROGRESS_BAR*(obj: pointer): PGtkProgressBar @@ -8385,18 +8385,18 @@ proc gtk_radio_menu_item_set_group*(radio_menu_item: PGtkRadioMenuItem, group: PGSList){.cdecl, dynlib: gtklib, importc: "gtk_radio_menu_item_set_group".} const - bm_TGtkScrolledWindow_hscrollbar_policy* = 0x00000003 - bp_TGtkScrolledWindow_hscrollbar_policy* = 0 - bm_TGtkScrolledWindow_vscrollbar_policy* = 0x0000000C - bp_TGtkScrolledWindow_vscrollbar_policy* = 2 - bm_TGtkScrolledWindow_hscrollbar_visible* = 0x00000010 - bp_TGtkScrolledWindow_hscrollbar_visible* = 4 - bm_TGtkScrolledWindow_vscrollbar_visible* = 0x00000020 - bp_TGtkScrolledWindow_vscrollbar_visible* = 5 - bm_TGtkScrolledWindow_window_placement* = 0x000000C0 - bp_TGtkScrolledWindow_window_placement* = 6 - bm_TGtkScrolledWindow_focus_out* = 0x00000100 - bp_TGtkScrolledWindow_focus_out* = 8 + bm_TGtkScrolledWindow_hscrollbar_policy* = 0x00000003'i16 + bp_TGtkScrolledWindow_hscrollbar_policy* = 0'i16 + bm_TGtkScrolledWindow_vscrollbar_policy* = 0x0000000C'i16 + bp_TGtkScrolledWindow_vscrollbar_policy* = 2'i16 + bm_TGtkScrolledWindow_hscrollbar_visible* = 0x00000010'i16 + bp_TGtkScrolledWindow_hscrollbar_visible* = 4'i16 + bm_TGtkScrolledWindow_vscrollbar_visible* = 0x00000020'i16 + bp_TGtkScrolledWindow_vscrollbar_visible* = 5'i16 + bm_TGtkScrolledWindow_window_placement* = 0x000000C0'i16 + bp_TGtkScrolledWindow_window_placement* = 6'i16 + bm_TGtkScrolledWindow_focus_out* = 0x00000100'i16 + bp_TGtkScrolledWindow_focus_out* = 8'i16 proc GTK_TYPE_SCROLLED_WINDOW*(): GType proc GTK_SCROLLED_WINDOW*(obj: pointer): PGtkScrolledWindow @@ -8528,10 +8528,10 @@ proc gtk_separator_menu_item_get_type*(): GType{.cdecl, dynlib: gtklib, proc gtk_separator_menu_item_new*(): PGtkWidget{.cdecl, dynlib: gtklib, importc: "gtk_separator_menu_item_new".} const - bm_TGtkSizeGroup_have_width* = 0x00000001 - bp_TGtkSizeGroup_have_width* = 0 - bm_TGtkSizeGroup_have_height* = 0x00000002 - bp_TGtkSizeGroup_have_height* = 1 + bm_TGtkSizeGroup_have_width* = 0x00000001'i16 + bp_TGtkSizeGroup_have_width* = 0'i16 + bm_TGtkSizeGroup_have_height* = 0x00000002'i16 + bp_TGtkSizeGroup_have_height* = 1'i16 proc GTK_TYPE_SIZE_GROUP*(): GType proc GTK_SIZE_GROUP*(obj: pointer): PGtkSizeGroup @@ -8562,16 +8562,16 @@ proc gtk_size_group_compute_requisition*(widget: PGtkWidget, proc gtk_size_group_queue_resize*(widget: PGtkWidget){.cdecl, dynlib: gtklib, importc: "_gtk_size_group_queue_resize".} const - bm_TGtkSocket_same_app* = 0x00000001 - bp_TGtkSocket_same_app* = 0 - bm_TGtkSocket_focus_in* = 0x00000002 - bp_TGtkSocket_focus_in* = 1 - bm_TGtkSocket_have_size* = 0x00000004 - bp_TGtkSocket_have_size* = 2 - bm_TGtkSocket_need_map* = 0x00000008 - bp_TGtkSocket_need_map* = 3 - bm_TGtkSocket_is_mapped* = 0x00000010 - bp_TGtkSocket_is_mapped* = 4 + bm_TGtkSocket_same_app* = 0x00000001'i16 + bp_TGtkSocket_same_app* = 0'i16 + bm_TGtkSocket_focus_in* = 0x00000002'i16 + bp_TGtkSocket_focus_in* = 1'i16 + bm_TGtkSocket_have_size* = 0x00000004'i16 + bp_TGtkSocket_have_size* = 2'i16 + bm_TGtkSocket_need_map* = 0x00000008'i16 + bp_TGtkSocket_need_map* = 3'i16 + bm_TGtkSocket_is_mapped* = 0x00000010'i16 + bp_TGtkSocket_is_mapped* = 4'i16 proc GTK_TYPE_SOCKET*(): GType proc GTK_SOCKET*(obj: pointer): PGtkSocket @@ -8599,24 +8599,24 @@ proc gtk_socket_get_id*(socket: PGtkSocket): TGdkNativeWindow{.cdecl, dynlib: gtklib, importc: "gtk_socket_get_id".} const GTK_INPUT_ERROR* = - (1) - bm_TGtkSpinButton_in_child* = 0x00000003 - bp_TGtkSpinButton_in_child* = 0 - bm_TGtkSpinButton_click_child* = 0x0000000C - bp_TGtkSpinButton_click_child* = 2 - bm_TGtkSpinButton_button* = 0x00000030 - bp_TGtkSpinButton_button* = 4 - bm_TGtkSpinButton_need_timer* = 0x00000040 - bp_TGtkSpinButton_need_timer* = 6 - bm_TGtkSpinButton_timer_calls* = 0x00000380 - bp_TGtkSpinButton_timer_calls* = 7 - bm_TGtkSpinButton_digits* = 0x000FFC00 - bp_TGtkSpinButton_digits* = 10 - bm_TGtkSpinButton_numeric* = 0x00100000 - bp_TGtkSpinButton_numeric* = 20 - bm_TGtkSpinButton_wrap* = 0x00200000 - bp_TGtkSpinButton_wrap* = 21 - bm_TGtkSpinButton_snap_to_ticks* = 0x00400000 - bp_TGtkSpinButton_snap_to_ticks* = 22 + bm_TGtkSpinButton_in_child* = 0x00000003'i32 + bp_TGtkSpinButton_in_child* = 0'i32 + bm_TGtkSpinButton_click_child* = 0x0000000C'i32 + bp_TGtkSpinButton_click_child* = 2'i32 + bm_TGtkSpinButton_button* = 0x00000030'i32 + bp_TGtkSpinButton_button* = 4'i32 + bm_TGtkSpinButton_need_timer* = 0x00000040'i32 + bp_TGtkSpinButton_need_timer* = 6'i32 + bm_TGtkSpinButton_timer_calls* = 0x00000380'i32 + bp_TGtkSpinButton_timer_calls* = 7'i32 + bm_TGtkSpinButton_digits* = 0x000FFC00'i32 + bp_TGtkSpinButton_digits* = 10'i32 + bm_TGtkSpinButton_numeric* = 0x00100000'i32 + bp_TGtkSpinButton_numeric* = 20'i32 + bm_TGtkSpinButton_wrap* = 0x00200000'i32 + bp_TGtkSpinButton_wrap* = 21'i32 + bm_TGtkSpinButton_snap_to_ticks* = 0x00400000'i32 + bp_TGtkSpinButton_snap_to_ticks* = 22'i32 proc GTK_TYPE_SPIN_BUTTON*(): GType proc GTK_SPIN_BUTTON*(obj: pointer): PGtkSpinButton @@ -8805,8 +8805,8 @@ proc GTK_IS_STATUSBAR*(obj: pointer): bool proc GTK_IS_STATUSBAR_CLASS*(klass: pointer): bool proc GTK_STATUSBAR_GET_CLASS*(obj: pointer): PGtkStatusbarClass const - bm_TGtkStatusbar_has_resize_grip* = 0x00000001 - bp_TGtkStatusbar_has_resize_grip* = 0 + bm_TGtkStatusbar_has_resize_grip* = 0x00000001'i16 + bp_TGtkStatusbar_has_resize_grip* = 0'i16 proc has_resize_grip*(a: var TGtkStatusbar): guint proc set_has_resize_grip*(a: var TGtkStatusbar, `has_resize_grip`: guint) @@ -8831,30 +8831,30 @@ proc gtk_statusbar_set_has_resize_grip*(statusbar: PGtkStatusbar, proc gtk_statusbar_get_has_resize_grip*(statusbar: PGtkStatusbar): gboolean{. cdecl, dynlib: gtklib, importc: "gtk_statusbar_get_has_resize_grip".} const - bm_TGtkTable_homogeneous* = 0x00000001 - bp_TGtkTable_homogeneous* = 0 - bm_TGtkTableChild_xexpand* = 0x00000001 - bp_TGtkTableChild_xexpand* = 0 - bm_TGtkTableChild_yexpand* = 0x00000002 - bp_TGtkTableChild_yexpand* = 1 - bm_TGtkTableChild_xshrink* = 0x00000004 - bp_TGtkTableChild_xshrink* = 2 - bm_TGtkTableChild_yshrink* = 0x00000008 - bp_TGtkTableChild_yshrink* = 3 - bm_TGtkTableChild_xfill* = 0x00000010 - bp_TGtkTableChild_xfill* = 4 - bm_TGtkTableChild_yfill* = 0x00000020 - bp_TGtkTableChild_yfill* = 5 - bm_TGtkTableRowCol_need_expand* = 0x00000001 - bp_TGtkTableRowCol_need_expand* = 0 - bm_TGtkTableRowCol_need_shrink* = 0x00000002 - bp_TGtkTableRowCol_need_shrink* = 1 - bm_TGtkTableRowCol_expand* = 0x00000004 - bp_TGtkTableRowCol_expand* = 2 - bm_TGtkTableRowCol_shrink* = 0x00000008 - bp_TGtkTableRowCol_shrink* = 3 - bm_TGtkTableRowCol_empty* = 0x00000010 - bp_TGtkTableRowCol_empty* = 4 + bm_TGtkTable_homogeneous* = 0x00000001'i16 + bp_TGtkTable_homogeneous* = 0'i16 + bm_TGtkTableChild_xexpand* = 0x00000001'i16 + bp_TGtkTableChild_xexpand* = 0'i16 + bm_TGtkTableChild_yexpand* = 0x00000002'i16 + bp_TGtkTableChild_yexpand* = 1'i16 + bm_TGtkTableChild_xshrink* = 0x00000004'i16 + bp_TGtkTableChild_xshrink* = 2'i16 + bm_TGtkTableChild_yshrink* = 0x00000008'i16 + bp_TGtkTableChild_yshrink* = 3'i16 + bm_TGtkTableChild_xfill* = 0x00000010'i16 + bp_TGtkTableChild_xfill* = 4'i16 + bm_TGtkTableChild_yfill* = 0x00000020'i16 + bp_TGtkTableChild_yfill* = 5'i16 + bm_TGtkTableRowCol_need_expand* = 0x00000001'i16 + bp_TGtkTableRowCol_need_expand* = 0'i16 + bm_TGtkTableRowCol_need_shrink* = 0x00000002'i16 + bp_TGtkTableRowCol_need_shrink* = 1'i16 + bm_TGtkTableRowCol_expand* = 0x00000004'i16 + bp_TGtkTableRowCol_expand* = 2'i16 + bm_TGtkTableRowCol_shrink* = 0x00000008'i16 + bp_TGtkTableRowCol_shrink* = 3'i16 + bm_TGtkTableRowCol_empty* = 0x00000010'i16 + bp_TGtkTableRowCol_empty* = 4'i16 proc GTK_TYPE_TABLE*(): GType proc GTK_TABLE*(obj: pointer): PGtkTable @@ -8923,8 +8923,8 @@ proc gtk_table_set_homogeneous*(table: PGtkTable, homogeneous: gboolean){.cdecl, proc gtk_table_get_homogeneous*(table: PGtkTable): gboolean{.cdecl, dynlib: gtklib, importc: "gtk_table_get_homogeneous".} const - bm_TGtkTearoffMenuItem_torn_off* = 0x00000001 - bp_TGtkTearoffMenuItem_torn_off* = 0 + bm_TGtkTearoffMenuItem_torn_off* = 0x00000001'i16 + bp_TGtkTearoffMenuItem_torn_off* = 0'i16 proc GTK_TYPE_TEAROFF_MENU_ITEM*(): GType proc GTK_TEAROFF_MENU_ITEM*(obj: pointer): PGtkTearoffMenuItem @@ -8939,12 +8939,12 @@ proc gtk_tearoff_menu_item_get_type*(): TGtkType{.cdecl, dynlib: gtklib, proc gtk_tearoff_menu_item_new*(): PGtkWidget{.cdecl, dynlib: gtklib, importc: "gtk_tearoff_menu_item_new".} const - bm_TGtkText_line_wrap* = 0x00000001 - bp_TGtkText_line_wrap* = 0 - bm_TGtkText_word_wrap* = 0x00000002 - bp_TGtkText_word_wrap* = 1 - bm_TGtkText_use_wchar* = 0x00000004 - bp_TGtkText_use_wchar* = 2 + bm_TGtkText_line_wrap* = 0x00000001'i16 + bp_TGtkText_line_wrap* = 0'i16 + bm_TGtkText_word_wrap* = 0x00000002'i16 + bp_TGtkText_word_wrap* = 1'i16 + bm_TGtkText_use_wchar* = 0x00000004'i16 + bp_TGtkText_use_wchar* = 2'i16 proc GTK_TYPE_TEXT*(): GType proc GTK_TEXT*(obj: pointer): PGtkText @@ -9199,54 +9199,54 @@ proc gtk_text_attributes_ref*(values: PGtkTextAttributes){.cdecl, proc gtk_text_attributes_get_type*(): GType{.cdecl, dynlib: gtklib, importc: "gtk_text_attributes_get_type".} const - bm_TGtkTextTag_bg_color_set* = 0x00000001 - bp_TGtkTextTag_bg_color_set* = 0 - bm_TGtkTextTag_bg_stipple_set* = 0x00000002 - bp_TGtkTextTag_bg_stipple_set* = 1 - bm_TGtkTextTag_fg_color_set* = 0x00000004 - bp_TGtkTextTag_fg_color_set* = 2 - bm_TGtkTextTag_scale_set* = 0x00000008 - bp_TGtkTextTag_scale_set* = 3 - bm_TGtkTextTag_fg_stipple_set* = 0x00000010 - bp_TGtkTextTag_fg_stipple_set* = 4 - bm_TGtkTextTag_justification_set* = 0x00000020 - bp_TGtkTextTag_justification_set* = 5 - bm_TGtkTextTag_left_margin_set* = 0x00000040 - bp_TGtkTextTag_left_margin_set* = 6 - bm_TGtkTextTag_indent_set* = 0x00000080 - bp_TGtkTextTag_indent_set* = 7 - bm_TGtkTextTag_rise_set* = 0x00000100 - bp_TGtkTextTag_rise_set* = 8 - bm_TGtkTextTag_strikethrough_set* = 0x00000200 - bp_TGtkTextTag_strikethrough_set* = 9 - bm_TGtkTextTag_right_margin_set* = 0x00000400 - bp_TGtkTextTag_right_margin_set* = 10 - bm_TGtkTextTag_pixels_above_lines_set* = 0x00000800 - bp_TGtkTextTag_pixels_above_lines_set* = 11 - bm_TGtkTextTag_pixels_below_lines_set* = 0x00001000 - bp_TGtkTextTag_pixels_below_lines_set* = 12 - bm_TGtkTextTag_pixels_inside_wrap_set* = 0x00002000 - bp_TGtkTextTag_pixels_inside_wrap_set* = 13 - bm_TGtkTextTag_tabs_set* = 0x00004000 - bp_TGtkTextTag_tabs_set* = 14 - bm_TGtkTextTag_underline_set* = 0x00008000 - bp_TGtkTextTag_underline_set* = 15 - bm_TGtkTextTag_wrap_mode_set* = 0x00010000 - bp_TGtkTextTag_wrap_mode_set* = 16 - bm_TGtkTextTag_bg_full_height_set* = 0x00020000 - bp_TGtkTextTag_bg_full_height_set* = 17 - bm_TGtkTextTag_invisible_set* = 0x00040000 - bp_TGtkTextTag_invisible_set* = 18 - bm_TGtkTextTag_editable_set* = 0x00080000 - bp_TGtkTextTag_editable_set* = 19 - bm_TGtkTextTag_language_set* = 0x00100000 - bp_TGtkTextTag_language_set* = 20 - bm_TGtkTextTag_pad1* = 0x00200000 - bp_TGtkTextTag_pad1* = 21 - bm_TGtkTextTag_pad2* = 0x00400000 - bp_TGtkTextTag_pad2* = 22 - bm_TGtkTextTag_pad3* = 0x00800000 - bp_TGtkTextTag_pad3* = 23 + bm_TGtkTextTag_bg_color_set* = 0x00000001'i32 + bp_TGtkTextTag_bg_color_set* = 0'i32 + bm_TGtkTextTag_bg_stipple_set* = 0x00000002'i32 + bp_TGtkTextTag_bg_stipple_set* = 1'i32 + bm_TGtkTextTag_fg_color_set* = 0x00000004'i32 + bp_TGtkTextTag_fg_color_set* = 2'i32 + bm_TGtkTextTag_scale_set* = 0x00000008'i32 + bp_TGtkTextTag_scale_set* = 3'i32 + bm_TGtkTextTag_fg_stipple_set* = 0x00000010'i32 + bp_TGtkTextTag_fg_stipple_set* = 4'i32 + bm_TGtkTextTag_justification_set* = 0x00000020'i32 + bp_TGtkTextTag_justification_set* = 5'i32 + bm_TGtkTextTag_left_margin_set* = 0x00000040'i32 + bp_TGtkTextTag_left_margin_set* = 6'i32 + bm_TGtkTextTag_indent_set* = 0x00000080'i32 + bp_TGtkTextTag_indent_set* = 7'i32 + bm_TGtkTextTag_rise_set* = 0x00000100'i32 + bp_TGtkTextTag_rise_set* = 8'i32 + bm_TGtkTextTag_strikethrough_set* = 0x00000200'i32 + bp_TGtkTextTag_strikethrough_set* = 9'i32 + bm_TGtkTextTag_right_margin_set* = 0x00000400'i32 + bp_TGtkTextTag_right_margin_set* = 10'i32 + bm_TGtkTextTag_pixels_above_lines_set* = 0x00000800'i32 + bp_TGtkTextTag_pixels_above_lines_set* = 11'i32 + bm_TGtkTextTag_pixels_below_lines_set* = 0x00001000'i32 + bp_TGtkTextTag_pixels_below_lines_set* = 12'i32 + bm_TGtkTextTag_pixels_inside_wrap_set* = 0x00002000'i32 + bp_TGtkTextTag_pixels_inside_wrap_set* = 13'i32 + bm_TGtkTextTag_tabs_set* = 0x00004000'i32 + bp_TGtkTextTag_tabs_set* = 14'i32 + bm_TGtkTextTag_underline_set* = 0x00008000'i32 + bp_TGtkTextTag_underline_set* = 15'i32 + bm_TGtkTextTag_wrap_mode_set* = 0x00010000'i32 + bp_TGtkTextTag_wrap_mode_set* = 16'i32 + bm_TGtkTextTag_bg_full_height_set* = 0x00020000'i32 + bp_TGtkTextTag_bg_full_height_set* = 17'i32 + bm_TGtkTextTag_invisible_set* = 0x00040000'i32 + bp_TGtkTextTag_invisible_set* = 18'i32 + bm_TGtkTextTag_editable_set* = 0x00080000'i32 + bp_TGtkTextTag_editable_set* = 19'i32 + bm_TGtkTextTag_language_set* = 0x00100000'i32 + bp_TGtkTextTag_language_set* = 20'i32 + bm_TGtkTextTag_pad1* = 0x00200000'i32 + bp_TGtkTextTag_pad1* = 21'i32 + bm_TGtkTextTag_pad2* = 0x00400000'i32 + bp_TGtkTextTag_pad2* = 22'i32 + bm_TGtkTextTag_pad3* = 0x00800000'i32 + bp_TGtkTextTag_pad3* = 23'i32 proc bg_color_set*(a: var TGtkTextTag): guint proc set_bg_color_set*(a: var TGtkTextTag, `bg_color_set`: guint) @@ -9300,24 +9300,24 @@ proc set_pad2*(a: var TGtkTextTag, `pad2`: guint) proc pad3*(a: var TGtkTextTag): guint proc set_pad3*(a: var TGtkTextTag, `pad3`: guint) const - bm_TGtkTextAppearance_underline* = 0x0000000F - bp_TGtkTextAppearance_underline* = 0 - bm_TGtkTextAppearance_strikethrough* = 0x00000010 - bp_TGtkTextAppearance_strikethrough* = 4 - bm_TGtkTextAppearance_draw_bg* = 0x00000020 - bp_TGtkTextAppearance_draw_bg* = 5 - bm_TGtkTextAppearance_inside_selection* = 0x00000040 - bp_TGtkTextAppearance_inside_selection* = 6 - bm_TGtkTextAppearance_is_text* = 0x00000080 - bp_TGtkTextAppearance_is_text* = 7 - bm_TGtkTextAppearance_pad1* = 0x00000100 - bp_TGtkTextAppearance_pad1* = 8 - bm_TGtkTextAppearance_pad2* = 0x00000200 - bp_TGtkTextAppearance_pad2* = 9 - bm_TGtkTextAppearance_pad3* = 0x00000400 - bp_TGtkTextAppearance_pad3* = 10 - bm_TGtkTextAppearance_pad4* = 0x00000800 - bp_TGtkTextAppearance_pad4* = 11 + bm_TGtkTextAppearance_underline* = 0x0000000F'i16 + bp_TGtkTextAppearance_underline* = 0'i16 + bm_TGtkTextAppearance_strikethrough* = 0x00000010'i16 + bp_TGtkTextAppearance_strikethrough* = 4'i16 + bm_TGtkTextAppearance_draw_bg* = 0x00000020'i16 + bp_TGtkTextAppearance_draw_bg* = 5'i16 + bm_TGtkTextAppearance_inside_selection* = 0x00000040'i16 + bp_TGtkTextAppearance_inside_selection* = 6'i16 + bm_TGtkTextAppearance_is_text* = 0x00000080'i16 + bp_TGtkTextAppearance_is_text* = 7'i16 + bm_TGtkTextAppearance_pad1* = 0x00000100'i16 + bp_TGtkTextAppearance_pad1* = 8'i16 + bm_TGtkTextAppearance_pad2* = 0x00000200'i16 + bp_TGtkTextAppearance_pad2* = 9'i16 + bm_TGtkTextAppearance_pad3* = 0x00000400'i16 + bp_TGtkTextAppearance_pad3* = 10'i16 + bm_TGtkTextAppearance_pad4* = 0x00000800'i16 + bp_TGtkTextAppearance_pad4* = 11'i16 proc underline*(a: var TGtkTextAppearance): guint proc set_underline*(a: var TGtkTextAppearance, `underline`: guint) @@ -9338,22 +9338,22 @@ proc set_pad3*(a: var TGtkTextAppearance, `pad3`: guint) proc pad4*(a: var TGtkTextAppearance): guint proc set_pad4*(a: var TGtkTextAppearance, `pad4`: guint) const - bm_TGtkTextAttributes_invisible* = 0x00000001 - bp_TGtkTextAttributes_invisible* = 0 - bm_TGtkTextAttributes_bg_full_height* = 0x00000002 - bp_TGtkTextAttributes_bg_full_height* = 1 - bm_TGtkTextAttributes_editable* = 0x00000004 - bp_TGtkTextAttributes_editable* = 2 - bm_TGtkTextAttributes_realized* = 0x00000008 - bp_TGtkTextAttributes_realized* = 3 - bm_TGtkTextAttributes_pad1* = 0x00000010 - bp_TGtkTextAttributes_pad1* = 4 - bm_TGtkTextAttributes_pad2* = 0x00000020 - bp_TGtkTextAttributes_pad2* = 5 - bm_TGtkTextAttributes_pad3* = 0x00000040 - bp_TGtkTextAttributes_pad3* = 6 - bm_TGtkTextAttributes_pad4* = 0x00000080 - bp_TGtkTextAttributes_pad4* = 7 + bm_TGtkTextAttributes_invisible* = 0x00000001'i16 + bp_TGtkTextAttributes_invisible* = 0'i16 + bm_TGtkTextAttributes_bg_full_height* = 0x00000002'i16 + bp_TGtkTextAttributes_bg_full_height* = 1'i16 + bm_TGtkTextAttributes_editable* = 0x00000004'i16 + bp_TGtkTextAttributes_editable* = 2'i16 + bm_TGtkTextAttributes_realized* = 0x00000008'i16 + bp_TGtkTextAttributes_realized* = 3'i16 + bm_TGtkTextAttributes_pad1* = 0x00000010'i16 + bp_TGtkTextAttributes_pad1* = 4'i16 + bm_TGtkTextAttributes_pad2* = 0x00000020'i16 + bp_TGtkTextAttributes_pad2* = 5'i16 + bm_TGtkTextAttributes_pad3* = 0x00000040'i16 + bp_TGtkTextAttributes_pad3* = 6'i16 + bm_TGtkTextAttributes_pad4* = 0x00000080'i16 + bp_TGtkTextAttributes_pad4* = 7'i16 proc invisible*(a: var TGtkTextAttributes): guint proc set_invisible*(a: var TGtkTextAttributes, `invisible`: guint) @@ -9418,10 +9418,10 @@ proc gtk_text_mark_get_buffer*(mark: PGtkTextMark): PGtkTextBuffer{.cdecl, proc gtk_text_mark_get_left_gravity*(mark: PGtkTextMark): gboolean{.cdecl, dynlib: gtklib, importc: "gtk_text_mark_get_left_gravity".} const - bm_TGtkTextMarkBody_visible* = 0x00000001 - bp_TGtkTextMarkBody_visible* = 0 - bm_TGtkTextMarkBody_not_deleteable* = 0x00000002 - bp_TGtkTextMarkBody_not_deleteable* = 1 + bm_TGtkTextMarkBody_visible* = 0x00000001'i16 + bp_TGtkTextMarkBody_visible* = 0'i16 + bm_TGtkTextMarkBody_not_deleteable* = 0x00000002'i16 + bp_TGtkTextMarkBody_not_deleteable* = 1'i16 proc visible*(a: var TGtkTextMarkBody): guint proc set_visible*(a: var TGtkTextMarkBody, `visible`: guint) @@ -9607,10 +9607,10 @@ proc gtk_text_btree_first_could_contain_tag*(tree: PGtkTextBTree, proc gtk_text_btree_last_could_contain_tag*(tree: PGtkTextBTree, tag: PGtkTextTag): PGtkTextLine{.cdecl, dynlib: gtklib, importc: "_gtk_text_btree_last_could_contain_tag".} const - bm_TGtkTextLineData_width* = 0x00FFFFFF - bp_TGtkTextLineData_width* = 0 - bm_TGtkTextLineData_valid* = 0xFF000000 - bp_TGtkTextLineData_valid* = 24 + bm_TGtkTextLineData_width* = 0x00FFFFFF'i32 + bp_TGtkTextLineData_width* = 0'i32 + bm_TGtkTextLineData_valid* = 0xFF000000'i32 + bp_TGtkTextLineData_valid* = 24'i32 proc width*(a: PGtkTextLineData): gint proc set_width*(a: PGtkTextLineData, NewWidth: gint) @@ -9694,8 +9694,8 @@ proc gtk_text_btree_notify_will_remove_tag*(tree: PGtkTextBTree, tag: PGtkTextTag){.cdecl, dynlib: gtklib, importc: "_gtk_text_btree_notify_will_remove_tag".} const - bm_TGtkTextBuffer_modified* = 0x00000001 - bp_TGtkTextBuffer_modified* = 0 + bm_TGtkTextBuffer_modified* = 0x00000001'i16 + bp_TGtkTextBuffer_modified* = 0'i16 proc GTK_TYPE_TEXT_BUFFER*(): GType proc GTK_TEXT_BUFFER*(obj: pointer): PGtkTextBuffer @@ -9869,20 +9869,20 @@ proc GTK_IS_TEXT_LAYOUT*(obj: pointer): bool proc GTK_IS_TEXT_LAYOUT_CLASS*(klass: pointer): bool proc GTK_TEXT_LAYOUT_GET_CLASS*(obj: pointer): PGtkTextLayoutClass const - bm_TGtkTextLayout_cursor_visible* = 0x00000001 - bp_TGtkTextLayout_cursor_visible* = 0 - bm_TGtkTextLayout_cursor_direction* = 0x00000006 - bp_TGtkTextLayout_cursor_direction* = 1 + bm_TGtkTextLayout_cursor_visible* = 0x00000001'i16 + bp_TGtkTextLayout_cursor_visible* = 0'i16 + bm_TGtkTextLayout_cursor_direction* = 0x00000006'i16 + bp_TGtkTextLayout_cursor_direction* = 1'i16 proc cursor_visible*(a: var TGtkTextLayout): guint proc set_cursor_visible*(a: var TGtkTextLayout, `cursor_visible`: guint) proc cursor_direction*(a: var TGtkTextLayout): gint proc set_cursor_direction*(a: var TGtkTextLayout, `cursor_direction`: gint) const - bm_TGtkTextCursorDisplay_is_strong* = 0x00000001 - bp_TGtkTextCursorDisplay_is_strong* = 0 - bm_TGtkTextCursorDisplay_is_weak* = 0x00000002 - bp_TGtkTextCursorDisplay_is_weak* = 1 + bm_TGtkTextCursorDisplay_is_strong* = 0x00000001'i16 + bp_TGtkTextCursorDisplay_is_strong* = 0'i16 + bm_TGtkTextCursorDisplay_is_weak* = 0x00000002'i16 + bp_TGtkTextCursorDisplay_is_weak* = 1'i16 proc is_strong*(a: var TGtkTextCursorDisplay): guint proc set_is_strong*(a: var TGtkTextCursorDisplay, `is_strong`: guint) @@ -10012,22 +10012,22 @@ proc gtk_text_anchored_child_set_layout*(child: PGtkWidget, proc gtk_text_layout_spew*(layout: PGtkTextLayout){.cdecl, dynlib: gtklib, importc: "gtk_text_layout_spew".} const # GTK_TEXT_VIEW_PRIORITY_VALIDATE* = GDK_PRIORITY_REDRAW + 5 - bm_TGtkTextView_editable* = 0x00000001 - bp_TGtkTextView_editable* = 0 - bm_TGtkTextView_overwrite_mode* = 0x00000002 - bp_TGtkTextView_overwrite_mode* = 1 - bm_TGtkTextView_cursor_visible* = 0x00000004 - bp_TGtkTextView_cursor_visible* = 2 - bm_TGtkTextView_need_im_reset* = 0x00000008 - bp_TGtkTextView_need_im_reset* = 3 - bm_TGtkTextView_just_selected_element* = 0x00000010 - bp_TGtkTextView_just_selected_element* = 4 - bm_TGtkTextView_disable_scroll_on_focus* = 0x00000020 - bp_TGtkTextView_disable_scroll_on_focus* = 5 - bm_TGtkTextView_onscreen_validated* = 0x00000040 - bp_TGtkTextView_onscreen_validated* = 6 - bm_TGtkTextView_mouse_cursor_obscured* = 0x00000080 - bp_TGtkTextView_mouse_cursor_obscured* = 7 + bm_TGtkTextView_editable* = 0x00000001'i16 + bp_TGtkTextView_editable* = 0'i16 + bm_TGtkTextView_overwrite_mode* = 0x00000002'i16 + bp_TGtkTextView_overwrite_mode* = 1'i16 + bm_TGtkTextView_cursor_visible* = 0x00000004'i16 + bp_TGtkTextView_cursor_visible* = 2'i16 + bm_TGtkTextView_need_im_reset* = 0x00000008'i16 + bp_TGtkTextView_need_im_reset* = 3'i16 + bm_TGtkTextView_just_selected_element* = 0x00000010'i16 + bp_TGtkTextView_just_selected_element* = 4'i16 + bm_TGtkTextView_disable_scroll_on_focus* = 0x00000020'i16 + bp_TGtkTextView_disable_scroll_on_focus* = 5'i16 + bm_TGtkTextView_onscreen_validated* = 0x00000040'i16 + bp_TGtkTextView_onscreen_validated* = 6'i16 + bm_TGtkTextView_mouse_cursor_obscured* = 0x00000080'i16 + bp_TGtkTextView_mouse_cursor_obscured* = 7'i16 proc GTK_TYPE_TEXT_VIEW*(): GType proc GTK_TEXT_VIEW*(obj: pointer): PGtkTextView @@ -10193,10 +10193,10 @@ proc gtk_text_view_get_tabs*(text_view: PGtkTextView): PPangoTabArray{.cdecl, proc gtk_text_view_get_default_attributes*(text_view: PGtkTextView): PGtkTextAttributes{. cdecl, dynlib: gtklib, importc: "gtk_text_view_get_default_attributes".} const - bm_TGtkTipsQuery_emit_always* = 0x00000001 - bp_TGtkTipsQuery_emit_always* = 0 - bm_TGtkTipsQuery_in_query* = 0x00000002 - bp_TGtkTipsQuery_in_query* = 1 + bm_TGtkTipsQuery_emit_always* = 0x00000001'i16 + bp_TGtkTipsQuery_emit_always* = 0'i16 + bm_TGtkTipsQuery_in_query* = 0x00000002'i16 + bp_TGtkTipsQuery_in_query* = 1'i16 proc GTK_TYPE_TIPS_QUERY*(): GType proc GTK_TIPS_QUERY*(obj: pointer): PGtkTipsQuery @@ -10222,14 +10222,14 @@ proc gtk_tips_query_set_labels*(tips_query: PGtkTipsQuery, label_inactive: cstring, label_no_tip: cstring){. cdecl, dynlib: gtklib, importc: "gtk_tips_query_set_labels".} const - bm_TGtkTooltips_delay* = 0x3FFFFFFF - bp_TGtkTooltips_delay* = 0 - bm_TGtkTooltips_enabled* = 0x40000000 - bp_TGtkTooltips_enabled* = 30 - bm_TGtkTooltips_have_grab* = 0x80000000 - bp_TGtkTooltips_have_grab* = 31 - bm_TGtkTooltips_use_sticky_delay* = 0x00000001 - bp_TGtkTooltips_use_sticky_delay* = 0 + bm_TGtkTooltips_delay* = 0x3FFFFFFF'i32 + bp_TGtkTooltips_delay* = 0'i32 + bm_TGtkTooltips_enabled* = 0x40000000'i32 + bp_TGtkTooltips_enabled* = 30'i32 + bm_TGtkTooltips_have_grab* = 0x80000000'i32 + bp_TGtkTooltips_have_grab* = 31'i32 + bm_TGtkTooltips_use_sticky_delay* = 0x00000001'i32 + bp_TGtkTooltips_use_sticky_delay* = 0'i32 proc GTK_TYPE_TOOLTIPS*(): GType proc GTK_TOOLTIPS*(obj: pointer): PGtkTooltips @@ -10263,10 +10263,10 @@ proc gtk_tooltips_force_window*(tooltips: PGtkTooltips){.cdecl, dynlib: gtklib, proc gtk_tooltips_toggle_keyboard_mode*(widget: PGtkWidget){.cdecl, dynlib: gtklib, importc: "_gtk_tooltips_toggle_keyboard_mode".} const - bm_TGtkToolbar_style_set* = 0x00000001 - bp_TGtkToolbar_style_set* = 0 - bm_TGtkToolbar_icon_size_set* = 0x00000002 - bp_TGtkToolbar_icon_size_set* = 1 + bm_TGtkToolbar_style_set* = 0x00000001'i16 + bp_TGtkToolbar_style_set* = 0'i16 + bm_TGtkToolbar_icon_size_set* = 0x00000002'i16 + bp_TGtkToolbar_icon_size_set* = 1'i16 proc GTK_TYPE_TOOLBAR*(): GType proc GTK_TOOLBAR*(obj: pointer): PGtkToolbar @@ -10370,12 +10370,12 @@ proc gtk_toolbar_get_icon_size*(toolbar: PGtkToolbar): TGtkIconSize{.cdecl, proc gtk_toolbar_get_tooltips*(toolbar: PGtkToolbar): gboolean{.cdecl, dynlib: gtklib, importc: "gtk_toolbar_get_tooltips".} const - bm_TGtkTree_selection_mode* = 0x00000003 - bp_TGtkTree_selection_mode* = 0 - bm_TGtkTree_view_mode* = 0x00000004 - bp_TGtkTree_view_mode* = 2 - bm_TGtkTree_view_line* = 0x00000008 - bp_TGtkTree_view_line* = 3 + bm_TGtkTree_selection_mode* = 0x00000003'i16 + bp_TGtkTree_selection_mode* = 0'i16 + bm_TGtkTree_view_mode* = 0x00000004'i16 + bp_TGtkTree_view_mode* = 2'i16 + bm_TGtkTree_view_line* = 0x00000008'i16 + bp_TGtkTree_view_line* = 3'i16 proc GTK_TYPE_TREE*(): GType proc GTK_TREE*(obj: pointer): PGtkTree @@ -10452,8 +10452,8 @@ proc gtk_tree_set_row_drag_data*(selection_data: PGtkSelectionData, tree_model: PGtkTreeModel, path: PGtkTreePath): gboolean{. cdecl, dynlib: gtklib, importc: "gtk_tree_set_row_drag_data".} const - bm_TGtkTreeItem_expanded* = 0x00000001 - bp_TGtkTreeItem_expanded* = 0 + bm_TGtkTreeItem_expanded* = 0x00000001'i16 + bp_TGtkTreeItem_expanded* = 0'i16 proc GTK_TYPE_TREE_ITEM*(): GType proc GTK_TREE_ITEM*(obj: pointer): PGtkTreeItem @@ -10535,8 +10535,8 @@ proc gtk_tree_selection_select_range*(selection: PGtkTreeSelection, end_path: PGtkTreePath){.cdecl, dynlib: gtklib, importc: "gtk_tree_selection_select_range".} const - bm_TGtkTreeStore_columns_dirty* = 0x00000001 - bp_TGtkTreeStore_columns_dirty* = 0 + bm_TGtkTreeStore_columns_dirty* = 0x00000001'i16 + bp_TGtkTreeStore_columns_dirty* = 0'i16 proc GTK_TYPE_TREE_STORE*(): GType proc GTK_TREE_STORE*(obj: pointer): PGtkTreeStore @@ -10582,22 +10582,22 @@ proc gtk_tree_store_iter_depth*(tree_store: PGtkTreeStore, iter: PGtkTreeIter): proc gtk_tree_store_clear*(tree_store: PGtkTreeStore){.cdecl, dynlib: gtklib, importc: "gtk_tree_store_clear".} const - bm_TGtkTreeViewColumn_visible* = 0x00000001 - bp_TGtkTreeViewColumn_visible* = 0 - bm_TGtkTreeViewColumn_resizable* = 0x00000002 - bp_TGtkTreeViewColumn_resizable* = 1 - bm_TGtkTreeViewColumn_clickable* = 0x00000004 - bp_TGtkTreeViewColumn_clickable* = 2 - bm_TGtkTreeViewColumn_dirty* = 0x00000008 - bp_TGtkTreeViewColumn_dirty* = 3 - bm_TGtkTreeViewColumn_show_sort_indicator* = 0x00000010 - bp_TGtkTreeViewColumn_show_sort_indicator* = 4 - bm_TGtkTreeViewColumn_maybe_reordered* = 0x00000020 - bp_TGtkTreeViewColumn_maybe_reordered* = 5 - bm_TGtkTreeViewColumn_reorderable* = 0x00000040 - bp_TGtkTreeViewColumn_reorderable* = 6 - bm_TGtkTreeViewColumn_use_resized_width* = 0x00000080 - bp_TGtkTreeViewColumn_use_resized_width* = 7 + bm_TGtkTreeViewColumn_visible* = 0x00000001'i16 + bp_TGtkTreeViewColumn_visible* = 0'i16 + bm_TGtkTreeViewColumn_resizable* = 0x00000002'i16 + bp_TGtkTreeViewColumn_resizable* = 1'i16 + bm_TGtkTreeViewColumn_clickable* = 0x00000004'i16 + bp_TGtkTreeViewColumn_clickable* = 2'i16 + bm_TGtkTreeViewColumn_dirty* = 0x00000008'i16 + bp_TGtkTreeViewColumn_dirty* = 3'i16 + bm_TGtkTreeViewColumn_show_sort_indicator* = 0x00000010'i16 + bp_TGtkTreeViewColumn_show_sort_indicator* = 4'i16 + bm_TGtkTreeViewColumn_maybe_reordered* = 0x00000020'i16 + bp_TGtkTreeViewColumn_maybe_reordered* = 5'i16 + bm_TGtkTreeViewColumn_reorderable* = 0x00000040'i16 + bp_TGtkTreeViewColumn_reorderable* = 6'i16 + bm_TGtkTreeViewColumn_use_resized_width* = 0x00000080'i16 + bp_TGtkTreeViewColumn_use_resized_width* = 7'i16 proc GTK_TYPE_TREE_VIEW_COLUMN*(): GType proc GTK_TREE_VIEW_COLUMN*(obj: pointer): PGtkTreeViewColumn @@ -10760,10 +10760,10 @@ const GTK_RBNODE_COLUMN_INVALID or GTK_RBNODE_DESCENDANTS_INVALID const - bm_TGtkRBNode_flags* = 0x00003FFF - bp_TGtkRBNode_flags* = 0 - bm_TGtkRBNode_parity* = 0x00004000 - bp_TGtkRBNode_parity* = 14 + bm_TGtkRBNode_flags* = 0x00003FFF'i16 + bp_TGtkRBNode_flags* = 0'i16 + bm_TGtkRBNode_parity* = 0x00004000'i16 + bp_TGtkRBNode_parity* = 14'i16 proc flags*(a: PGtkRBNode): guint proc set_flags*(a: PGtkRBNode, `flags`: guint) @@ -10850,24 +10850,24 @@ proc TREE_VIEW_COLUMN_REQUESTED_WIDTH*(column: PGtkTreeViewColumn): int32 proc TREE_VIEW_DRAW_EXPANDERS*(tree_view: PGtkTreeView): bool proc TREE_VIEW_COLUMN_DRAG_DEAD_MULTIPLIER*(tree_view: PGtkTreeView): int32 const - bm_TGtkTreeViewPrivate_scroll_to_use_align* = 0x00000001 - bp_TGtkTreeViewPrivate_scroll_to_use_align* = 0 - bm_TGtkTreeViewPrivate_fixed_height_check* = 0x00000002 - bp_TGtkTreeViewPrivate_fixed_height_check* = 1 - bm_TGtkTreeViewPrivate_reorderable* = 0x00000004 - bp_TGtkTreeViewPrivate_reorderable* = 2 - bm_TGtkTreeViewPrivate_header_has_focus* = 0x00000008 - bp_TGtkTreeViewPrivate_header_has_focus* = 3 - bm_TGtkTreeViewPrivate_drag_column_window_state* = 0x00000070 - bp_TGtkTreeViewPrivate_drag_column_window_state* = 4 - bm_TGtkTreeViewPrivate_has_rules* = 0x00000080 - bp_TGtkTreeViewPrivate_has_rules* = 7 - bm_TGtkTreeViewPrivate_mark_rows_col_dirty* = 0x00000100 - bp_TGtkTreeViewPrivate_mark_rows_col_dirty* = 8 - bm_TGtkTreeViewPrivate_enable_search* = 0x00000200 - bp_TGtkTreeViewPrivate_enable_search* = 9 - bm_TGtkTreeViewPrivate_disable_popdown* = 0x00000400 - bp_TGtkTreeViewPrivate_disable_popdown* = 10 + bm_TGtkTreeViewPrivate_scroll_to_use_align* = 0x00000001'i16 + bp_TGtkTreeViewPrivate_scroll_to_use_align* = 0'i16 + bm_TGtkTreeViewPrivate_fixed_height_check* = 0x00000002'i16 + bp_TGtkTreeViewPrivate_fixed_height_check* = 1'i16 + bm_TGtkTreeViewPrivate_reorderable* = 0x00000004'i16 + bp_TGtkTreeViewPrivate_reorderable* = 2'i16 + bm_TGtkTreeViewPrivate_header_has_focus* = 0x00000008'i16 + bp_TGtkTreeViewPrivate_header_has_focus* = 3'i16 + bm_TGtkTreeViewPrivate_drag_column_window_state* = 0x00000070'i16 + bp_TGtkTreeViewPrivate_drag_column_window_state* = 4'i16 + bm_TGtkTreeViewPrivate_has_rules* = 0x00000080'i16 + bp_TGtkTreeViewPrivate_has_rules* = 7'i16 + bm_TGtkTreeViewPrivate_mark_rows_col_dirty* = 0x00000100'i16 + bp_TGtkTreeViewPrivate_mark_rows_col_dirty* = 8'i16 + bm_TGtkTreeViewPrivate_enable_search* = 0x00000200'i16 + bp_TGtkTreeViewPrivate_enable_search* = 9'i16 + bm_TGtkTreeViewPrivate_disable_popdown* = 0x00000400'i16 + bp_TGtkTreeViewPrivate_disable_popdown* = 10'i16 proc scroll_to_use_align*(a: var TGtkTreeViewPrivate): guint proc set_scroll_to_use_align*(a: var TGtkTreeViewPrivate, @@ -11259,13 +11259,13 @@ proc GTK_OBJECT_FLAGS*(obj: pointer): guint32 = result = (GTK_OBJECT(obj)).flags proc GTK_OBJECT_FLOATING*(obj: pointer): gboolean = - result = ((GTK_OBJECT_FLAGS(obj)) and GTK_FLOATING) != 0 + result = ((GTK_OBJECT_FLAGS(obj)) and cint(GTK_FLOATING)) != 0'i32 proc GTK_OBJECT_SET_FLAGS*(obj: pointer, flag: guint32) = - GTK_OBJECT(obj).flags = GTK_OBJECT(obj).flags or int(flag) + GTK_OBJECT(obj).flags = GTK_OBJECT(obj).flags or flag proc GTK_OBJECT_UNSET_FLAGS*(obj: pointer, flag: guint32) = - GTK_OBJECT(obj) . flags = GTK_OBJECT(obj). flags and not int(flag) + GTK_OBJECT(obj) . flags = GTK_OBJECT(obj). flags and not (flag) proc gtk_object_data_try_key*(`string`: cstring): TGQuark = result = g_quark_try_string(`string`) @@ -11458,61 +11458,61 @@ proc GTK_WIDGET_FLAGS*(wid: pointer): guint32 = result = GTK_OBJECT_FLAGS(wid) proc GTK_WIDGET_TOPLEVEL*(wid: pointer): gboolean = - result = ((GTK_WIDGET_FLAGS(wid)) and GTK_TOPLEVEL) != 0 + result = ((GTK_WIDGET_FLAGS(wid)) and cint(GTK_TOPLEVEL)) != 0'i32 proc GTK_WIDGET_NO_WINDOW*(wid: pointer): gboolean = - result = ((GTK_WIDGET_FLAGS(wid)) and GTK_NO_WINDOW) != 0 + result = ((GTK_WIDGET_FLAGS(wid)) and cint(GTK_NO_WINDOW)) != 0'i32 proc GTK_WIDGET_REALIZED*(wid: pointer): gboolean = - result = ((GTK_WIDGET_FLAGS(wid)) and GTK_REALIZED) != 0 + result = ((GTK_WIDGET_FLAGS(wid)) and cint(GTK_REALIZED)) != 0'i32 proc GTK_WIDGET_MAPPED*(wid: pointer): gboolean = - result = ((GTK_WIDGET_FLAGS(wid)) and GTK_MAPPED) != 0 + result = ((GTK_WIDGET_FLAGS(wid)) and cint(GTK_MAPPED)) != 0'i32 proc GTK_WIDGET_VISIBLE*(wid: pointer): gboolean = - result = ((GTK_WIDGET_FLAGS(wid)) and GTK_VISIBLE) != 0 + result = ((GTK_WIDGET_FLAGS(wid)) and cint(GTK_VISIBLE)) != 0'i32 proc GTK_WIDGET_DRAWABLE*(wid: pointer): gboolean = result = (GTK_WIDGET_VISIBLE(wid)) and (GTK_WIDGET_MAPPED(wid)) proc GTK_WIDGET_SENSITIVE*(wid: pointer): gboolean = - result = ((GTK_WIDGET_FLAGS(wid)) and GTK_SENSITIVE) != 0 + result = ((GTK_WIDGET_FLAGS(wid)) and cint(GTK_SENSITIVE)) != 0'i32 proc GTK_WIDGET_PARENT_SENSITIVE*(wid: pointer): gboolean = - result = ((GTK_WIDGET_FLAGS(wid)) and GTK_PARENT_SENSITIVE) != 0 + result = ((GTK_WIDGET_FLAGS(wid)) and cint(GTK_PARENT_SENSITIVE)) != 0'i32 proc GTK_WIDGET_IS_SENSITIVE*(wid: pointer): gboolean = result = (GTK_WIDGET_SENSITIVE(wid)) and (GTK_WIDGET_PARENT_SENSITIVE(wid)) proc GTK_WIDGET_CAN_FOCUS*(wid: pointer): gboolean = - result = ((GTK_WIDGET_FLAGS(wid)) and GTK_CAN_FOCUS) != 0 + result = ((GTK_WIDGET_FLAGS(wid)) and cint(GTK_CAN_FOCUS)) != 0'i32 proc GTK_WIDGET_HAS_FOCUS*(wid: pointer): gboolean = - result = ((GTK_WIDGET_FLAGS(wid)) and GTK_HAS_FOCUS) != 0 + result = ((GTK_WIDGET_FLAGS(wid)) and cint(GTK_HAS_FOCUS)) != 0'i32 proc GTK_WIDGET_CAN_DEFAULT*(wid: pointer): gboolean = - result = ((GTK_WIDGET_FLAGS(wid)) and GTK_CAN_DEFAULT) != 0 + result = ((GTK_WIDGET_FLAGS(wid)) and cint(GTK_CAN_DEFAULT)) != 0'i32 proc GTK_WIDGET_HAS_DEFAULT*(wid: pointer): gboolean = - result = ((GTK_WIDGET_FLAGS(wid)) and GTK_HAS_DEFAULT) != 0 + result = ((GTK_WIDGET_FLAGS(wid)) and cint(GTK_HAS_DEFAULT)) != 0'i32 proc GTK_WIDGET_HAS_GRAB*(wid: pointer): gboolean = - result = ((GTK_WIDGET_FLAGS(wid)) and GTK_HAS_GRAB) != 0 + result = ((GTK_WIDGET_FLAGS(wid)) and cint(GTK_HAS_GRAB)) != 0'i32 proc GTK_WIDGET_RC_STYLE*(wid: pointer): gboolean = - result = ((GTK_WIDGET_FLAGS(wid)) and GTK_RC_STYLE) != 0 + result = ((GTK_WIDGET_FLAGS(wid)) and cint(GTK_RC_STYLE)) != 0'i32 proc GTK_WIDGET_COMPOSITE_CHILD*(wid: pointer): gboolean = - result = ((GTK_WIDGET_FLAGS(wid)) and GTK_COMPOSITE_CHILD) != 0 + result = ((GTK_WIDGET_FLAGS(wid)) and cint(GTK_COMPOSITE_CHILD)) != 0'i32 proc GTK_WIDGET_APP_PAINTABLE*(wid: pointer): gboolean = - result = ((GTK_WIDGET_FLAGS(wid)) and GTK_APP_PAINTABLE) != 0 + result = ((GTK_WIDGET_FLAGS(wid)) and cint(GTK_APP_PAINTABLE)) != 0'i32 proc GTK_WIDGET_RECEIVES_DEFAULT*(wid: pointer): gboolean = - result = ((GTK_WIDGET_FLAGS(wid)) and GTK_RECEIVES_DEFAULT) != 0 + result = ((GTK_WIDGET_FLAGS(wid)) and cint(GTK_RECEIVES_DEFAULT)) != 0'i32 proc GTK_WIDGET_DOUBLE_BUFFERED*(wid: pointer): gboolean = - result = ((GTK_WIDGET_FLAGS(wid)) and GTK_DOUBLE_BUFFERED) != 0 + result = ((GTK_WIDGET_FLAGS(wid)) and cint(GTK_DOUBLE_BUFFERED)) != 0'i32 proc GTK_TYPE_REQUISITION*(): GType = result = gtk_requisition_get_type() @@ -11523,7 +11523,7 @@ proc x_set*(a: var TGtkWidgetAuxInfo): guint = proc set_x_set*(a: var TGtkWidgetAuxInfo, `x_set`: guint) = a.flag0 = a.flag0 or - ((`x_set` shl bp_TGtkWidgetAuxInfo_x_set) and + (int16(`x_set` shl bp_TGtkWidgetAuxInfo_x_set) and bm_TGtkWidgetAuxInfo_x_set) proc y_set*(a: var TGtkWidgetAuxInfo): guint = @@ -11532,7 +11532,7 @@ proc y_set*(a: var TGtkWidgetAuxInfo): guint = proc set_y_set*(a: var TGtkWidgetAuxInfo, `y_set`: guint) = a.flag0 = a.flag0 or - ((`y_set` shl bp_TGtkWidgetAuxInfo_y_set) and + (int16(`y_set` shl bp_TGtkWidgetAuxInfo_y_set) and bm_TGtkWidgetAuxInfo_y_set) proc gtk_widget_set_visual*(widget, visual: pointer) = @@ -11554,11 +11554,11 @@ proc gtk_widget_restore_default_style*(widget: pointer) = gtk_widget_set_style(cast[PGtkWidget](widget), nil) proc GTK_WIDGET_SET_FLAGS*(wid: PGtkWidget, flags: TGtkWidgetFlags): TGtkWidgetFlags = - cast[pGtkObject](wid).flags = cast[pGtkObject](wid).flags or int(flags) + cast[pGtkObject](wid).flags = cast[pGtkObject](wid).flags or (flags) result = cast[pGtkObject](wid).flags proc GTK_WIDGET_UNSET_FLAGS*(wid: PGtkWidget, flags: TGtkWidgetFlags): TGtkWidgetFlags = - cast[pGtkObject](wid).flags = cast[pGtkObject](wid).flags and (not int(flags)) + cast[pGtkObject](wid).flags = cast[pGtkObject](wid).flags and (not (flags)) result = cast[pGtkObject](wid).flags proc GTK_TYPE_MISC*(): GType = @@ -11606,7 +11606,7 @@ proc accel_flags*(a: var TGtkAccelKey): guint = proc set_accel_flags*(a: var TGtkAccelKey, `accel_flags`: guint) = a.flag0 = a.flag0 or - ((`accel_flags` shl bp_TGtkAccelKey_accel_flags) and + (int16(`accel_flags` shl bp_TGtkAccelKey_accel_flags) and bm_TGtkAccelKey_accel_flags) proc gtk_accel_group_ref*(AccelGroup: PGtkAccelGroup) = @@ -11635,7 +11635,7 @@ proc GTK_CONTAINER_GET_CLASS*(obj: pointer): PGtkContainerClass = proc GTK_IS_RESIZE_CONTAINER*(widget: pointer): bool = result = (GTK_IS_CONTAINER(widget)) and - ((resize_mode(cast[PGtkContainer](widget))) != ord(GTK_RESIZE_PARENT)) + ((resize_mode(cast[PGtkContainer](widget))) != cint(GTK_RESIZE_PARENT)) proc border_width*(a: var TGtkContainer): guint = result = (a.GtkContainer_flag0 and bm_TGtkContainer_border_width) shr @@ -11918,13 +11918,13 @@ proc jtype*(a: var TGtkLabel): guint = proc set_jtype*(a: var TGtkLabel, `jtype`: guint) = a.GtkLabelflag0 = a.GtkLabelflag0 or - ((`jtype` shl bp_TGtkLabel_jtype) and bm_TGtkLabel_jtype) + (int16(`jtype` shl bp_TGtkLabel_jtype) and bm_TGtkLabel_jtype) proc wrap*(a: var TGtkLabel): guint = result = (a.GtkLabelflag0 and bm_TGtkLabel_wrap) shr bp_TGtkLabel_wrap proc set_wrap*(a: var TGtkLabel, `wrap`: guint) = - a.GtkLabelflag0 = a.GtkLabelflag0 or ((`wrap` shl bp_TGtkLabel_wrap) and bm_TGtkLabel_wrap) + a.GtkLabelflag0 = a.GtkLabelflag0 or (int16(`wrap` shl bp_TGtkLabel_wrap) and bm_TGtkLabel_wrap) proc use_underline*(a: var TGtkLabel): guint = result = (a.GtkLabelflag0 and bm_TGtkLabel_use_underline) shr @@ -11932,7 +11932,7 @@ proc use_underline*(a: var TGtkLabel): guint = proc set_use_underline*(a: var TGtkLabel, `use_underline`: guint) = a.GtkLabelflag0 = a.GtkLabelflag0 or - ((`use_underline` shl bp_TGtkLabel_use_underline) and + (int16(`use_underline` shl bp_TGtkLabel_use_underline) and bm_TGtkLabel_use_underline) proc use_markup*(a: var TGtkLabel): guint = @@ -11940,7 +11940,7 @@ proc use_markup*(a: var TGtkLabel): guint = proc set_use_markup*(a: var TGtkLabel, `use_markup`: guint) = a.GtkLabelflag0 = a.GtkLabelflag0 or - ((`use_markup` shl bp_TGtkLabel_use_markup) and bm_TGtkLabel_use_markup) + (int16(`use_markup` shl bp_TGtkLabel_use_markup) and bm_TGtkLabel_use_markup) proc GTK_TYPE_ACCEL_LABEL*(): GType = result = gtk_accel_label_get_type() @@ -11966,7 +11966,7 @@ proc latin1_to_char*(a: var TGtkAccelLabelClass): guint = proc set_latin1_to_char*(a: var TGtkAccelLabelClass, `latin1_to_char`: guint) = a.GtkAccelLabelClassflag0 = a.GtkAccelLabelClassflag0 or - ((`latin1_to_char` shl bp_TGtkAccelLabelClass_latin1_to_char) and + (int16(`latin1_to_char` shl bp_TGtkAccelLabelClass_latin1_to_char) and bm_TGtkAccelLabelClass_latin1_to_char) proc gtk_accel_label_accelerator_width*(accel_label: PGtkAccelLabel): guint = @@ -12087,7 +12087,7 @@ proc parsed*(a: var TGtkBindingSet): guint = proc set_parsed*(a: var TGtkBindingSet, `parsed`: guint) = a.flag0 = a.flag0 or - ((`parsed` shl bp_TGtkBindingSet_parsed) and bm_TGtkBindingSet_parsed) + (int16(`parsed` shl bp_TGtkBindingSet_parsed) and bm_TGtkBindingSet_parsed) proc destroyed*(a: var TGtkBindingEntry): guint = result = (a.flag0 and bm_TGtkBindingEntry_destroyed) shr @@ -12095,7 +12095,7 @@ proc destroyed*(a: var TGtkBindingEntry): guint = proc set_destroyed*(a: var TGtkBindingEntry, `destroyed`: guint) = a.flag0 = a.flag0 or - ((`destroyed` shl bp_TGtkBindingEntry_destroyed) and + (int16(`destroyed` shl bp_TGtkBindingEntry_destroyed) and bm_TGtkBindingEntry_destroyed) proc in_emission*(a: var TGtkBindingEntry): guint = @@ -12104,7 +12104,7 @@ proc in_emission*(a: var TGtkBindingEntry): guint = proc set_in_emission*(a: var TGtkBindingEntry, `in_emission`: guint) = a.flag0 = a.flag0 or - ((`in_emission` shl bp_TGtkBindingEntry_in_emission) and + (int16(`in_emission` shl bp_TGtkBindingEntry_in_emission) and bm_TGtkBindingEntry_in_emission) proc gtk_binding_entry_add*(binding_set: PGtkBindingSet, keyval: guint, @@ -12134,28 +12134,28 @@ proc homogeneous*(a: var TGtkBox): guint = proc set_homogeneous*(a: var TGtkBox, `homogeneous`: guint) = a.GtkBoxflag0 = a.GtkBoxflag0 or - ((`homogeneous` shl bp_TGtkBox_homogeneous) and bm_TGtkBox_homogeneous) + (int16(`homogeneous` shl bp_TGtkBox_homogeneous) and bm_TGtkBox_homogeneous) proc expand*(a: var TGtkBoxChild): guint = result = (a.flag0 and bm_TGtkBoxChild_expand) shr bp_TGtkBoxChild_expand proc set_expand*(a: var TGtkBoxChild, `expand`: guint) = a.flag0 = a.flag0 or - ((`expand` shl bp_TGtkBoxChild_expand) and bm_TGtkBoxChild_expand) + (int16(`expand` shl bp_TGtkBoxChild_expand) and bm_TGtkBoxChild_expand) proc fill*(a: var TGtkBoxChild): guint = result = (a.flag0 and bm_TGtkBoxChild_fill) shr bp_TGtkBoxChild_fill proc set_fill*(a: var TGtkBoxChild, `fill`: guint) = a.flag0 = a.flag0 or - ((`fill` shl bp_TGtkBoxChild_fill) and bm_TGtkBoxChild_fill) + (int16(`fill` shl bp_TGtkBoxChild_fill) and bm_TGtkBoxChild_fill) proc pack*(a: var TGtkBoxChild): guint = result = (a.flag0 and bm_TGtkBoxChild_pack) shr bp_TGtkBoxChild_pack proc set_pack*(a: var TGtkBoxChild, `pack`: guint) = a.flag0 = a.flag0 or - ((`pack` shl bp_TGtkBoxChild_pack) and bm_TGtkBoxChild_pack) + (int16(`pack` shl bp_TGtkBoxChild_pack) and bm_TGtkBoxChild_pack) proc is_secondary*(a: var TGtkBoxChild): guint = result = (a.flag0 and bm_TGtkBoxChild_is_secondary) shr @@ -12163,7 +12163,7 @@ proc is_secondary*(a: var TGtkBoxChild): guint = proc set_is_secondary*(a: var TGtkBoxChild, `is_secondary`: guint) = a.flag0 = a.flag0 or - ((`is_secondary` shl bp_TGtkBoxChild_is_secondary) and + (int16(`is_secondary` shl bp_TGtkBoxChild_is_secondary) and bm_TGtkBoxChild_is_secondary) proc GTK_TYPE_BUTTON_BOX*(): GType = @@ -12214,7 +12214,7 @@ proc constructed*(a: var TGtkButton): guint = proc set_constructed*(a: var TGtkButton, `constructed`: guint) = a.GtkButtonflag0 = a.GtkButtonflag0 or - ((`constructed` shl bp_TGtkButton_constructed) and + (int16(`constructed` shl bp_TGtkButton_constructed) and bm_TGtkButton_constructed) proc in_button*(a: var TGtkButton): guint = @@ -12222,7 +12222,7 @@ proc in_button*(a: var TGtkButton): guint = proc set_in_button*(a: var TGtkButton, `in_button`: guint) = a.GtkButtonflag0 = a.GtkButtonflag0 or - ((`in_button` shl bp_TGtkButton_in_button) and bm_TGtkButton_in_button) + (int16(`in_button` shl bp_TGtkButton_in_button) and bm_TGtkButton_in_button) proc button_down*(a: var TGtkButton): guint = result = (a.GtkButtonflag0 and bm_TGtkButton_button_down) shr @@ -12230,7 +12230,7 @@ proc button_down*(a: var TGtkButton): guint = proc set_button_down*(a: var TGtkButton, `button_down`: guint) = a.GtkButtonflag0 = a.GtkButtonflag0 or - ((`button_down` shl bp_TGtkButton_button_down) and + (int16(`button_down` shl bp_TGtkButton_button_down) and bm_TGtkButton_button_down) proc relief*(a: var TGtkButton): guint = @@ -12238,7 +12238,7 @@ proc relief*(a: var TGtkButton): guint = proc set_relief*(a: var TGtkButton, `relief`: guint) = a.GtkButtonflag0 = a.GtkButtonflag0 or - ((`relief` shl bp_TGtkButton_relief) and bm_TGtkButton_relief) + (int16(`relief` shl bp_TGtkButton_relief) and bm_TGtkButton_relief) proc use_underline*(a: var TGtkButton): guint = result = (a.GtkButtonflag0 and bm_TGtkButton_use_underline) shr @@ -12246,7 +12246,7 @@ proc use_underline*(a: var TGtkButton): guint = proc set_use_underline*(a: var TGtkButton, `use_underline`: guint) = a.GtkButtonflag0 = a.GtkButtonflag0 or - ((`use_underline` shl bp_TGtkButton_use_underline) and + (int16(`use_underline` shl bp_TGtkButton_use_underline) and bm_TGtkButton_use_underline) proc use_stock*(a: var TGtkButton): guint = @@ -12254,14 +12254,14 @@ proc use_stock*(a: var TGtkButton): guint = proc set_use_stock*(a: var TGtkButton, `use_stock`: guint) = a.GtkButtonflag0 = a.GtkButtonflag0 or - ((`use_stock` shl bp_TGtkButton_use_stock) and bm_TGtkButton_use_stock) + (int16(`use_stock` shl bp_TGtkButton_use_stock) and bm_TGtkButton_use_stock) proc depressed*(a: var TGtkButton): guint = result = (a.GtkButtonflag0 and bm_TGtkButton_depressed) shr bp_TGtkButton_depressed proc set_depressed*(a: var TGtkButton, `depressed`: guint) = a.GtkButtonflag0 = a.GtkButtonflag0 or - ((`depressed` shl bp_TGtkButton_depressed) and bm_TGtkButton_depressed) + (int16(`depressed` shl bp_TGtkButton_depressed) and bm_TGtkButton_depressed) proc depress_on_activate*(a: var TGtkButton): guint = result = (a.GtkButtonflag0 and bm_TGtkButton_depress_on_activate) shr @@ -12269,7 +12269,7 @@ proc depress_on_activate*(a: var TGtkButton): guint = proc set_depress_on_activate*(a: var TGtkButton, `depress_on_activate`: guint) = a.GtkButtonflag0 = a.GtkButtonflag0 or - ((`depress_on_activate` shl bp_TGtkButton_depress_on_activate) and + (int16(`depress_on_activate` shl bp_TGtkButton_depress_on_activate) and bm_TGtkButton_depress_on_activate) proc GTK_TYPE_CALENDAR*(): GType = @@ -12333,7 +12333,7 @@ proc mode*(a: var TGtkCellRenderer): guint = proc set_mode*(a: var TGtkCellRenderer, `mode`: guint) = a.GtkCellRendererflag0 = a.GtkCellRendererflag0 or - ((`mode` shl bp_TGtkCellRenderer_mode) and bm_TGtkCellRenderer_mode) + (int16(`mode` shl bp_TGtkCellRenderer_mode) and bm_TGtkCellRenderer_mode) proc visible*(a: var TGtkCellRenderer): guint = result = (a.GtkCellRendererflag0 and bm_TGtkCellRenderer_visible) shr @@ -12341,7 +12341,7 @@ proc visible*(a: var TGtkCellRenderer): guint = proc set_visible*(a: var TGtkCellRenderer, `visible`: guint) = a.GtkCellRendererflag0 = a.GtkCellRendererflag0 or - ((`visible` shl bp_TGtkCellRenderer_visible) and + (int16(`visible` shl bp_TGtkCellRenderer_visible) and bm_TGtkCellRenderer_visible) proc is_expander*(a: var TGtkCellRenderer): guint = @@ -12350,7 +12350,7 @@ proc is_expander*(a: var TGtkCellRenderer): guint = proc set_is_expander*(a: var TGtkCellRenderer, `is_expander`: guint) = a.GtkCellRendererflag0 = a.GtkCellRendererflag0 or - ((`is_expander` shl bp_TGtkCellRenderer_is_expander) and + (int16(`is_expander` shl bp_TGtkCellRenderer_is_expander) and bm_TGtkCellRenderer_is_expander) proc is_expanded*(a: var TGtkCellRenderer): guint = @@ -12359,7 +12359,7 @@ proc is_expanded*(a: var TGtkCellRenderer): guint = proc set_is_expanded*(a: var TGtkCellRenderer, `is_expanded`: guint) = a.GtkCellRendererflag0 = a.GtkCellRendererflag0 or - ((`is_expanded` shl bp_TGtkCellRenderer_is_expanded) and + (int16(`is_expanded` shl bp_TGtkCellRenderer_is_expanded) and bm_TGtkCellRenderer_is_expanded) proc cell_background_set*(a: var TGtkCellRenderer): guint = @@ -12369,7 +12369,7 @@ proc cell_background_set*(a: var TGtkCellRenderer): guint = proc set_cell_background_set*(a: var TGtkCellRenderer, `cell_background_set`: guint) = a.GtkCellRendererflag0 = a.GtkCellRendererflag0 or - ((`cell_background_set` shl bp_TGtkCellRenderer_cell_background_set) and + (int16(`cell_background_set` shl bp_TGtkCellRenderer_cell_background_set) and bm_TGtkCellRenderer_cell_background_set) proc GTK_TYPE_CELL_RENDERER_TEXT*(): GType = @@ -12398,7 +12398,7 @@ proc strikethrough*(a: var TGtkCellRendererText): guint = proc set_strikethrough*(a: var TGtkCellRendererText, `strikethrough`: guint) = a.GtkCellRendererTextflag0 = a.GtkCellRendererTextflag0 or - ((`strikethrough` shl bp_TGtkCellRendererText_strikethrough) and + (int16(`strikethrough` shl bp_TGtkCellRendererText_strikethrough) and bm_TGtkCellRendererText_strikethrough) proc editable*(a: var TGtkCellRendererText): guint = @@ -12407,7 +12407,7 @@ proc editable*(a: var TGtkCellRendererText): guint = proc set_editable*(a: var TGtkCellRendererText, `editable`: guint) = a.GtkCellRendererTextflag0 = a.GtkCellRendererTextflag0 or - ((`editable` shl bp_TGtkCellRendererText_editable) and + (int16(`editable` shl bp_TGtkCellRendererText_editable) and bm_TGtkCellRendererText_editable) proc scale_set*(a: var TGtkCellRendererText): guint = @@ -12416,7 +12416,7 @@ proc scale_set*(a: var TGtkCellRendererText): guint = proc set_scale_set*(a: var TGtkCellRendererText, `scale_set`: guint) = a.GtkCellRendererTextflag0 = a.GtkCellRendererTextflag0 or - ((`scale_set` shl bp_TGtkCellRendererText_scale_set) and + (int16(`scale_set` shl bp_TGtkCellRendererText_scale_set) and bm_TGtkCellRendererText_scale_set) proc foreground_set*(a: var TGtkCellRendererText): guint = @@ -12425,7 +12425,7 @@ proc foreground_set*(a: var TGtkCellRendererText): guint = proc set_foreground_set*(a: var TGtkCellRendererText, `foreground_set`: guint) = a.GtkCellRendererTextflag0 = a.GtkCellRendererTextflag0 or - ((`foreground_set` shl bp_TGtkCellRendererText_foreground_set) and + (int16(`foreground_set` shl bp_TGtkCellRendererText_foreground_set) and bm_TGtkCellRendererText_foreground_set) proc background_set*(a: var TGtkCellRendererText): guint = @@ -12434,7 +12434,7 @@ proc background_set*(a: var TGtkCellRendererText): guint = proc set_background_set*(a: var TGtkCellRendererText, `background_set`: guint) = a.GtkCellRendererTextflag0 = a.GtkCellRendererTextflag0 or - ((`background_set` shl bp_TGtkCellRendererText_background_set) and + (int16(`background_set` shl bp_TGtkCellRendererText_background_set) and bm_TGtkCellRendererText_background_set) proc underline_set*(a: var TGtkCellRendererText): guint = @@ -12443,7 +12443,7 @@ proc underline_set*(a: var TGtkCellRendererText): guint = proc set_underline_set*(a: var TGtkCellRendererText, `underline_set`: guint) = a.GtkCellRendererTextflag0 = a.GtkCellRendererTextflag0 or - ((`underline_set` shl bp_TGtkCellRendererText_underline_set) and + (int16(`underline_set` shl bp_TGtkCellRendererText_underline_set) and bm_TGtkCellRendererText_underline_set) proc rise_set*(a: var TGtkCellRendererText): guint = @@ -12452,7 +12452,7 @@ proc rise_set*(a: var TGtkCellRendererText): guint = proc set_rise_set*(a: var TGtkCellRendererText, `rise_set`: guint) = a.GtkCellRendererTextflag0 = a.GtkCellRendererTextflag0 or - ((`rise_set` shl bp_TGtkCellRendererText_rise_set) and + (int16(`rise_set` shl bp_TGtkCellRendererText_rise_set) and bm_TGtkCellRendererText_rise_set) proc strikethrough_set*(a: var TGtkCellRendererText): guint = @@ -12462,7 +12462,7 @@ proc strikethrough_set*(a: var TGtkCellRendererText): guint = proc set_strikethrough_set*(a: var TGtkCellRendererText, `strikethrough_set`: guint) = a.GtkCellRendererTextflag0 = a.GtkCellRendererTextflag0 or - ((`strikethrough_set` shl bp_TGtkCellRendererText_strikethrough_set) and + (int16(`strikethrough_set` shl bp_TGtkCellRendererText_strikethrough_set) and bm_TGtkCellRendererText_strikethrough_set) proc editable_set*(a: var TGtkCellRendererText): guint = @@ -12471,7 +12471,7 @@ proc editable_set*(a: var TGtkCellRendererText): guint = proc set_editable_set*(a: var TGtkCellRendererText, `editable_set`: guint) = a.GtkCellRendererTextflag0 = a.GtkCellRendererTextflag0 or - ((`editable_set` shl bp_TGtkCellRendererText_editable_set) and + (int16(`editable_set` shl bp_TGtkCellRendererText_editable_set) and bm_TGtkCellRendererText_editable_set) proc calc_fixed_height*(a: var TGtkCellRendererText): guint = @@ -12481,7 +12481,7 @@ proc calc_fixed_height*(a: var TGtkCellRendererText): guint = proc set_calc_fixed_height*(a: var TGtkCellRendererText, `calc_fixed_height`: guint) = a.GtkCellRendererTextflag0 = a.GtkCellRendererTextflag0 or - ((`calc_fixed_height` shl bp_TGtkCellRendererText_calc_fixed_height) and + (int16(`calc_fixed_height` shl bp_TGtkCellRendererText_calc_fixed_height) and bm_TGtkCellRendererText_calc_fixed_height) proc GTK_TYPE_CELL_RENDERER_TOGGLE*(): GType = @@ -12511,7 +12511,7 @@ proc active*(a: var TGtkCellRendererToggle): guint = proc set_active*(a: var TGtkCellRendererToggle, `active`: guint) = a.GtkCellRendererToggleflag0 = a.GtkCellRendererToggleflag0 or - ((`active` shl bp_TGtkCellRendererToggle_active) and + (int16(`active` shl bp_TGtkCellRendererToggle_active) and bm_TGtkCellRendererToggle_active) proc activatable*(a: var TGtkCellRendererToggle): guint = @@ -12520,7 +12520,7 @@ proc activatable*(a: var TGtkCellRendererToggle): guint = proc set_activatable*(a: var TGtkCellRendererToggle, `activatable`: guint) = a.GtkCellRendererToggleflag0 = a.GtkCellRendererToggleflag0 or - ((`activatable` shl bp_TGtkCellRendererToggle_activatable) and + (int16(`activatable` shl bp_TGtkCellRendererToggle_activatable) and bm_TGtkCellRendererToggle_activatable) proc radio*(a: var TGtkCellRendererToggle): guint = @@ -12529,7 +12529,7 @@ proc radio*(a: var TGtkCellRendererToggle): guint = proc set_radio*(a: var TGtkCellRendererToggle, `radio`: guint) = a.GtkCellRendererToggleflag0 = a.GtkCellRendererToggleflag0 or - ((`radio` shl bp_TGtkCellRendererToggle_radio) and + (int16(`radio` shl bp_TGtkCellRendererToggle_radio) and bm_TGtkCellRendererToggle_radio) proc GTK_TYPE_CELL_RENDERER_PIXBUF*(): GType = @@ -12596,7 +12596,7 @@ proc show_submenu_indicator*(a: var TGtkMenuItem): guint = proc set_show_submenu_indicator*(a: var TGtkMenuItem, `show_submenu_indicator`: guint) = a.GtkMenuItemflag0 = a.GtkMenuItemflag0 or - ((`show_submenu_indicator` shl bp_TGtkMenuItem_show_submenu_indicator) and + (int16(`show_submenu_indicator` shl bp_TGtkMenuItem_show_submenu_indicator) and bm_TGtkMenuItem_show_submenu_indicator) proc submenu_placement*(a: var TGtkMenuItem): guint = @@ -12605,7 +12605,7 @@ proc submenu_placement*(a: var TGtkMenuItem): guint = proc set_submenu_placement*(a: var TGtkMenuItem, `submenu_placement`: guint) = a.GtkMenuItemflag0 = a.GtkMenuItemflag0 or - ((`submenu_placement` shl bp_TGtkMenuItem_submenu_placement) and + (int16(`submenu_placement` shl bp_TGtkMenuItem_submenu_placement) and bm_TGtkMenuItem_submenu_placement) proc submenu_direction*(a: var TGtkMenuItem): guint = @@ -12614,7 +12614,7 @@ proc submenu_direction*(a: var TGtkMenuItem): guint = proc set_submenu_direction*(a: var TGtkMenuItem, `submenu_direction`: guint) = a.GtkMenuItemflag0 = a.GtkMenuItemflag0 or - ((`submenu_direction` shl bp_TGtkMenuItem_submenu_direction) and + (int16(`submenu_direction` shl bp_TGtkMenuItem_submenu_direction) and bm_TGtkMenuItem_submenu_direction) proc right_justify*(a: var TGtkMenuItem): guint = @@ -12623,7 +12623,7 @@ proc right_justify*(a: var TGtkMenuItem): guint = proc set_right_justify*(a: var TGtkMenuItem, `right_justify`: guint) = a.GtkMenuItemflag0 = a.GtkMenuItemflag0 or - ((`right_justify` shl bp_TGtkMenuItem_right_justify) and + (int16(`right_justify` shl bp_TGtkMenuItem_right_justify) and bm_TGtkMenuItem_right_justify) proc timer_from_keypress*(a: var TGtkMenuItem): guint = @@ -12632,7 +12632,7 @@ proc timer_from_keypress*(a: var TGtkMenuItem): guint = proc set_timer_from_keypress*(a: var TGtkMenuItem, `timer_from_keypress`: guint) = a.GtkMenuItemflag0 = a.GtkMenuItemflag0 or - ((`timer_from_keypress` shl bp_TGtkMenuItem_timer_from_keypress) and + (int16(`timer_from_keypress` shl bp_TGtkMenuItem_timer_from_keypress) and bm_TGtkMenuItem_timer_from_keypress) proc hide_on_activate*(a: var TGtkMenuItemClass): guint = @@ -12641,7 +12641,7 @@ proc hide_on_activate*(a: var TGtkMenuItemClass): guint = proc set_hide_on_activate*(a: var TGtkMenuItemClass, `hide_on_activate`: guint) = a.GtkMenuItemClassflag0 = a.GtkMenuItemClassflag0 or - ((`hide_on_activate` shl bp_TGtkMenuItemClass_hide_on_activate) and + (int16(`hide_on_activate` shl bp_TGtkMenuItemClass_hide_on_activate) and bm_TGtkMenuItemClass_hide_on_activate) proc gtk_menu_item_right_justify*(menu_item: PGtkMenuItem) = @@ -12672,7 +12672,7 @@ proc active*(a: var TGtkToggleButton): guint = proc set_active*(a: var TGtkToggleButton, `active`: guint) = a.GtkToggleButtonflag0 = a.GtkToggleButtonflag0 or - ((`active` shl bp_TGtkToggleButton_active) and + (int16(`active` shl bp_TGtkToggleButton_active) and bm_TGtkToggleButton_active) proc draw_indicator*(a: var TGtkToggleButton): guint = @@ -12681,7 +12681,7 @@ proc draw_indicator*(a: var TGtkToggleButton): guint = proc set_draw_indicator*(a: var TGtkToggleButton, `draw_indicator`: guint) = a.GtkToggleButtonflag0 = a.GtkToggleButtonflag0 or - ((`draw_indicator` shl bp_TGtkToggleButton_draw_indicator) and + (int16(`draw_indicator` shl bp_TGtkToggleButton_draw_indicator) and bm_TGtkToggleButton_draw_indicator) proc inconsistent*(a: var TGtkToggleButton): guint = @@ -12690,7 +12690,7 @@ proc inconsistent*(a: var TGtkToggleButton): guint = proc set_inconsistent*(a: var TGtkToggleButton, `inconsistent`: guint) = a.GtkToggleButtonflag0 = a.GtkToggleButtonflag0 or - ((`inconsistent` shl bp_TGtkToggleButton_inconsistent) and + (int16(`inconsistent` shl bp_TGtkToggleButton_inconsistent) and bm_TGtkToggleButton_inconsistent) proc GTK_TYPE_CHECK_BUTTON*(): GType = @@ -12738,7 +12738,7 @@ proc active*(a: var TGtkCheckMenuItem): guint = proc set_active*(a: var TGtkCheckMenuItem, `active`: guint) = a.GtkCheckMenuItemflag0 = a.GtkCheckMenuItemflag0 or - ((`active` shl bp_TGtkCheckMenuItem_active) and + (int16(`active` shl bp_TGtkCheckMenuItem_active) and bm_TGtkCheckMenuItem_active) proc always_show_toggle*(a: var TGtkCheckMenuItem): guint = @@ -12748,7 +12748,7 @@ proc always_show_toggle*(a: var TGtkCheckMenuItem): guint = proc set_always_show_toggle*(a: var TGtkCheckMenuItem, `always_show_toggle`: guint) = a.GtkCheckMenuItemflag0 = a.GtkCheckMenuItemflag0 or - ((`always_show_toggle` shl bp_TGtkCheckMenuItem_always_show_toggle) and + (int16(`always_show_toggle` shl bp_TGtkCheckMenuItem_always_show_toggle) and bm_TGtkCheckMenuItem_always_show_toggle) proc inconsistent*(a: var TGtkCheckMenuItem): guint = @@ -12757,7 +12757,7 @@ proc inconsistent*(a: var TGtkCheckMenuItem): guint = proc set_inconsistent*(a: var TGtkCheckMenuItem, `inconsistent`: guint) = a.GtkCheckMenuItemflag0 = a.GtkCheckMenuItemflag0 or - ((`inconsistent` shl bp_TGtkCheckMenuItem_inconsistent) and + (int16(`inconsistent` shl bp_TGtkCheckMenuItem_inconsistent) and bm_TGtkCheckMenuItem_inconsistent) proc GTK_TYPE_CLIST*(): GType = @@ -12779,43 +12779,43 @@ proc GTK_CLIST_GET_CLASS*(obj: pointer): PGtkCListClass = result = cast[PGtkCListClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_CLIST())) proc GTK_CLIST_FLAGS*(clist: pointer): guint16 = - result = GTK_CLIST(clist).flags + result = toU16(GTK_CLIST(clist).flags) proc GTK_CLIST_SET_FLAG*(clist: PGtkCList, flag: guint16) = - clist . flags = GTK_CLIST(clist) . flags or int(flag) + clist.flags = GTK_CLIST(clist).flags or (flag) proc GTK_CLIST_UNSET_FLAG*(clist: PGtkCList, flag: guint16) = - clist . flags = GTK_CLIST(clist) . flags and not int(flag) + clist.flags = GTK_CLIST(clist).flags and not (flag) proc GTK_CLIST_IN_DRAG_get*(clist: pointer): bool = - result = ((GTK_CLIST_FLAGS(clist)) and GTK_CLIST_IN_DRAG) != 0 + result = ((GTK_CLIST_FLAGS(clist)) and cint(GTK_CLIST_IN_DRAG)) != 0'i32 proc GTK_CLIST_ROW_HEIGHT_SET_get*(clist: pointer): bool = - result = ((GTK_CLIST_FLAGS(clist)) and GTK_CLIST_ROW_HEIGHT_SET) != 0 + result = ((GTK_CLIST_FLAGS(clist)) and cint(GTK_CLIST_ROW_HEIGHT_SET)) != 0'i32 proc GTK_CLIST_SHOW_TITLES_get*(clist: pointer): bool = - result = ((GTK_CLIST_FLAGS(clist)) and GTK_CLIST_SHOW_TITLES) != 0 + result = ((GTK_CLIST_FLAGS(clist)) and cint(GTK_CLIST_SHOW_TITLES)) != 0'i32 proc GTK_CLIST_ADD_MODE_get*(clist: pointer): bool = - result = ((GTK_CLIST_FLAGS(clist)) and GTK_CLIST_ADD_MODE) != 0 + result = ((GTK_CLIST_FLAGS(clist)) and cint(GTK_CLIST_ADD_MODE)) != 0'i32 proc GTK_CLIST_AUTO_SORT_get*(clist: pointer): bool = - result = ((GTK_CLIST_FLAGS(clist)) and GTK_CLIST_AUTO_SORT) != 0 + result = ((GTK_CLIST_FLAGS(clist)) and cint(GTK_CLIST_AUTO_SORT)) != 0'i32 proc GTK_CLIST_AUTO_RESIZE_BLOCKED_get*(clist: pointer): bool = - result = ((GTK_CLIST_FLAGS(clist)) and GTK_CLIST_AUTO_RESIZE_BLOCKED) != 0 + result = ((GTK_CLIST_FLAGS(clist)) and cint(GTK_CLIST_AUTO_RESIZE_BLOCKED)) != 0'i32 proc GTK_CLIST_REORDERABLE_get*(clist: pointer): bool = - result = ((GTK_CLIST_FLAGS(clist)) and GTK_CLIST_REORDERABLE) != 0 + result = ((GTK_CLIST_FLAGS(clist)) and cint(GTK_CLIST_REORDERABLE)) != 0'i32 proc GTK_CLIST_USE_DRAG_ICONS_get*(clist: pointer): bool = - result = ((GTK_CLIST_FLAGS(clist)) and GTK_CLIST_USE_DRAG_ICONS) != 0 + result = ((GTK_CLIST_FLAGS(clist)) and cint(GTK_CLIST_USE_DRAG_ICONS)) != 0'i32 proc GTK_CLIST_DRAW_DRAG_LINE_get*(clist: pointer): bool = - result = ((GTK_CLIST_FLAGS(clist)) and GTK_CLIST_DRAW_DRAG_LINE) != 0 + result = ((GTK_CLIST_FLAGS(clist)) and cint(GTK_CLIST_DRAW_DRAG_LINE)) != 0'i32 proc GTK_CLIST_DRAW_DRAG_RECT_get*(clist: pointer): bool = - result = ((GTK_CLIST_FLAGS(clist)) and GTK_CLIST_DRAW_DRAG_RECT) != 0 + result = ((GTK_CLIST_FLAGS(clist)) and cint(GTK_CLIST_DRAW_DRAG_RECT)) != 0'i32 proc GTK_CLIST_ROW_get*(`glist_`: PGList): PGtkCListRow = result = cast[PGtkCListRow](`glist_` . data) @@ -12839,7 +12839,7 @@ proc visible*(a: var TGtkCListColumn): guint = proc set_visible*(a: var TGtkCListColumn, `visible`: guint) = a.flag0 = a.flag0 or - ((`visible` shl bp_TGtkCListColumn_visible) and + (int16(`visible` shl bp_TGtkCListColumn_visible) and bm_TGtkCListColumn_visible) proc width_set*(a: var TGtkCListColumn): guint = @@ -12848,7 +12848,7 @@ proc width_set*(a: var TGtkCListColumn): guint = proc set_width_set*(a: var TGtkCListColumn, `width_set`: guint) = a.flag0 = a.flag0 or - ((`width_set` shl bp_TGtkCListColumn_width_set) and + (int16(`width_set` shl bp_TGtkCListColumn_width_set) and bm_TGtkCListColumn_width_set) proc resizeable*(a: var TGtkCListColumn): guint = @@ -12857,7 +12857,7 @@ proc resizeable*(a: var TGtkCListColumn): guint = proc set_resizeable*(a: var TGtkCListColumn, `resizeable`: guint) = a.flag0 = a.flag0 or - ((`resizeable` shl bp_TGtkCListColumn_resizeable) and + (int16(`resizeable` shl bp_TGtkCListColumn_resizeable) and bm_TGtkCListColumn_resizeable) proc auto_resize*(a: var TGtkCListColumn): guint = @@ -12866,7 +12866,7 @@ proc auto_resize*(a: var TGtkCListColumn): guint = proc set_auto_resize*(a: var TGtkCListColumn, `auto_resize`: guint) = a.flag0 = a.flag0 or - ((`auto_resize` shl bp_TGtkCListColumn_auto_resize) and + (int16(`auto_resize` shl bp_TGtkCListColumn_auto_resize) and bm_TGtkCListColumn_auto_resize) proc button_passive*(a: var TGtkCListColumn): guint = @@ -12875,7 +12875,7 @@ proc button_passive*(a: var TGtkCListColumn): guint = proc set_button_passive*(a: var TGtkCListColumn, `button_passive`: guint) = a.flag0 = a.flag0 or - ((`button_passive` shl bp_TGtkCListColumn_button_passive) and + (int16(`button_passive` shl bp_TGtkCListColumn_button_passive) and bm_TGtkCListColumn_button_passive) proc fg_set*(a: var TGtkCListRow): guint = @@ -12883,14 +12883,14 @@ proc fg_set*(a: var TGtkCListRow): guint = proc set_fg_set*(a: var TGtkCListRow, `fg_set`: guint) = a.flag0 = a.flag0 or - ((`fg_set` shl bp_TGtkCListRow_fg_set) and bm_TGtkCListRow_fg_set) + (int16(`fg_set` shl bp_TGtkCListRow_fg_set) and bm_TGtkCListRow_fg_set) proc bg_set*(a: var TGtkCListRow): guint = result = (a.flag0 and bm_TGtkCListRow_bg_set) shr bp_TGtkCListRow_bg_set proc set_bg_set*(a: var TGtkCListRow, `bg_set`: guint) = a.flag0 = a.flag0 or - ((`bg_set` shl bp_TGtkCListRow_bg_set) and bm_TGtkCListRow_bg_set) + (int16(`bg_set` shl bp_TGtkCListRow_bg_set) and bm_TGtkCListRow_bg_set) proc selectable*(a: var TGtkCListRow): guint = result = (a.flag0 and bm_TGtkCListRow_selectable) shr @@ -12898,7 +12898,7 @@ proc selectable*(a: var TGtkCListRow): guint = proc set_selectable*(a: var TGtkCListRow, `selectable`: guint) = a.flag0 = a.flag0 or - ((`selectable` shl bp_TGtkCListRow_selectable) and + (int16(`selectable` shl bp_TGtkCListRow_selectable) and bm_TGtkCListRow_selectable) proc GTK_TYPE_DIALOG*(): GType = @@ -13020,7 +13020,7 @@ proc value_in_list*(a: var TGtkCombo): guint = proc set_value_in_list*(a: var TGtkCombo, `value_in_list`: guint) = a.GtkComboflag0 = a.GtkComboflag0 or - ((`value_in_list` shl bp_TGtkCombo_value_in_list) and + (int16(`value_in_list` shl bp_TGtkCombo_value_in_list) and bm_TGtkCombo_value_in_list) proc ok_if_empty*(a: var TGtkCombo): guint = @@ -13029,7 +13029,7 @@ proc ok_if_empty*(a: var TGtkCombo): guint = proc set_ok_if_empty*(a: var TGtkCombo, `ok_if_empty`: guint) = a.GtkComboflag0 = a.GtkComboflag0 or - ((`ok_if_empty` shl bp_TGtkCombo_ok_if_empty) and + (int16(`ok_if_empty` shl bp_TGtkCombo_ok_if_empty) and bm_TGtkCombo_ok_if_empty) proc case_sensitive*(a: var TGtkCombo): guint = @@ -13038,7 +13038,7 @@ proc case_sensitive*(a: var TGtkCombo): guint = proc set_case_sensitive*(a: var TGtkCombo, `case_sensitive`: guint) = a.GtkComboflag0 = a.GtkComboflag0 or - ((`case_sensitive` shl bp_TGtkCombo_case_sensitive) and + (int16(`case_sensitive` shl bp_TGtkCombo_case_sensitive) and bm_TGtkCombo_case_sensitive) proc use_arrows*(a: var TGtkCombo): guint = @@ -13046,7 +13046,7 @@ proc use_arrows*(a: var TGtkCombo): guint = proc set_use_arrows*(a: var TGtkCombo, `use_arrows`: guint) = a.GtkComboflag0 = a.GtkComboflag0 or - ((`use_arrows` shl bp_TGtkCombo_use_arrows) and bm_TGtkCombo_use_arrows) + (int16(`use_arrows` shl bp_TGtkCombo_use_arrows) and bm_TGtkCombo_use_arrows) proc use_arrows_always*(a: var TGtkCombo): guint = result = (a.GtkComboflag0 and bm_TGtkCombo_use_arrows_always) shr @@ -13054,7 +13054,7 @@ proc use_arrows_always*(a: var TGtkCombo): guint = proc set_use_arrows_always*(a: var TGtkCombo, `use_arrows_always`: guint) = a.GtkComboflag0 = a.GtkComboflag0 or - ((`use_arrows_always` shl bp_TGtkCombo_use_arrows_always) and + (int16(`use_arrows_always` shl bp_TGtkCombo_use_arrows_always) and bm_TGtkCombo_use_arrows_always) proc GTK_TYPE_CTREE*(): GType = @@ -13098,7 +13098,7 @@ proc line_style*(a: var TGtkCTree): guint = proc set_line_style*(a: var TGtkCTree, `line_style`: guint) = a.GtkCTreeflag0 = a.GtkCTreeflag0 or - ((`line_style` shl bp_TGtkCTree_line_style) and bm_TGtkCTree_line_style) + (int16(`line_style` shl bp_TGtkCTree_line_style) and bm_TGtkCTree_line_style) proc expander_style*(a: var TGtkCTree): guint = result = (a.GtkCTreeflag0 and bm_TGtkCTree_expander_style) shr @@ -13106,7 +13106,7 @@ proc expander_style*(a: var TGtkCTree): guint = proc set_expander_style*(a: var TGtkCTree, `expander_style`: guint) = a.GtkCTreeflag0 = a.GtkCTreeflag0 or - ((`expander_style` shl bp_TGtkCTree_expander_style) and + (int16(`expander_style` shl bp_TGtkCTree_expander_style) and bm_TGtkCTree_expander_style) proc show_stub*(a: var TGtkCTree): guint = @@ -13114,14 +13114,14 @@ proc show_stub*(a: var TGtkCTree): guint = proc set_show_stub*(a: var TGtkCTree, `show_stub`: guint) = a.GtkCTreeflag0 = a.GtkCTreeflag0 or - ((`show_stub` shl bp_TGtkCTree_show_stub) and bm_TGtkCTree_show_stub) + (int16(`show_stub` shl bp_TGtkCTree_show_stub) and bm_TGtkCTree_show_stub) proc is_leaf*(a: var TGtkCTreeRow): guint = result = (a.GtkCTreeRow_flag0 and bm_TGtkCTreeRow_is_leaf) shr bp_TGtkCTreeRow_is_leaf proc set_is_leaf*(a: var TGtkCTreeRow, `is_leaf`: guint) = a.GtkCTreeRow_flag0 = a.GtkCTreeRow_flag0 or - ((`is_leaf` shl bp_TGtkCTreeRow_is_leaf) and bm_TGtkCTreeRow_is_leaf) + (int16(`is_leaf` shl bp_TGtkCTreeRow_is_leaf) and bm_TGtkCTreeRow_is_leaf) proc expanded*(a: var TGtkCTreeRow): guint = result = (a.GtkCTreeRow_flag0 and bm_TGtkCTreeRow_expanded) shr @@ -13129,7 +13129,7 @@ proc expanded*(a: var TGtkCTreeRow): guint = proc set_expanded*(a: var TGtkCTreeRow, `expanded`: guint) = a.GtkCTreeRow_flag0 = a.GtkCTreeRowflag0 or - ((`expanded` shl bp_TGtkCTreeRow_expanded) and bm_TGtkCTreeRow_expanded) + (int16(`expanded` shl bp_TGtkCTreeRow_expanded) and bm_TGtkCTreeRow_expanded) proc gtk_ctree_set_reorderable*(t: pointer, r: bool) = gtk_clist_set_reorderable(cast[PGtkCList](t), r) @@ -13231,7 +13231,7 @@ proc active*(a: var TGtkMenuShell): guint = proc set_active*(a: var TGtkMenuShell, `active`: guint) = a.GtkMenuShellflag0 = a.GtkMenuShellflag0 or - ((`active` shl bp_TGtkMenuShell_active) and bm_TGtkMenuShell_active) + (int16(`active` shl bp_TGtkMenuShell_active) and bm_TGtkMenuShell_active) proc have_grab*(a: var TGtkMenuShell): guint = result = (a.GtkMenuShellflag0 and bm_TGtkMenuShell_have_grab) shr @@ -13239,7 +13239,7 @@ proc have_grab*(a: var TGtkMenuShell): guint = proc set_have_grab*(a: var TGtkMenuShell, `have_grab`: guint) = a.GtkMenuShellflag0 = a.GtkMenuShellflag0 or - ((`have_grab` shl bp_TGtkMenuShell_have_grab) and + (int16(`have_grab` shl bp_TGtkMenuShell_have_grab) and bm_TGtkMenuShell_have_grab) proc have_xgrab*(a: var TGtkMenuShell): guint = @@ -13248,7 +13248,7 @@ proc have_xgrab*(a: var TGtkMenuShell): guint = proc set_have_xgrab*(a: var TGtkMenuShell, `have_xgrab`: guint) = a.GtkMenuShellflag0 = a.GtkMenuShellflag0 or - ((`have_xgrab` shl bp_TGtkMenuShell_have_xgrab) and + (int16(`have_xgrab` shl bp_TGtkMenuShell_have_xgrab) and bm_TGtkMenuShell_have_xgrab) proc ignore_leave*(a: var TGtkMenuShell): guint = @@ -13257,7 +13257,7 @@ proc ignore_leave*(a: var TGtkMenuShell): guint = proc set_ignore_leave*(a: var TGtkMenuShell, `ignore_leave`: guint) = a.GtkMenuShellflag0 = a.GtkMenuShellflag0 or - ((`ignore_leave` shl bp_TGtkMenuShell_ignore_leave) and + (int16(`ignore_leave` shl bp_TGtkMenuShell_ignore_leave) and bm_TGtkMenuShell_ignore_leave) proc menu_flag*(a: var TGtkMenuShell): guint = @@ -13266,7 +13266,7 @@ proc menu_flag*(a: var TGtkMenuShell): guint = proc set_menu_flag*(a: var TGtkMenuShell, `menu_flag`: guint) = a.GtkMenuShellflag0 = a.GtkMenuShellflag0 or - ((`menu_flag` shl bp_TGtkMenuShell_menu_flag) and + (int16(`menu_flag` shl bp_TGtkMenuShell_menu_flag) and bm_TGtkMenuShell_menu_flag) proc ignore_enter*(a: var TGtkMenuShell): guint = @@ -13275,7 +13275,7 @@ proc ignore_enter*(a: var TGtkMenuShell): guint = proc set_ignore_enter*(a: var TGtkMenuShell, `ignore_enter`: guint) = a.GtkMenuShellflag0 = a.GtkMenuShellflag0 or - ((`ignore_enter` shl bp_TGtkMenuShell_ignore_enter) and + (int16(`ignore_enter` shl bp_TGtkMenuShell_ignore_enter) and bm_TGtkMenuShell_ignore_enter) proc submenu_placement*(a: var TGtkMenuShellClass): guint = @@ -13285,7 +13285,7 @@ proc submenu_placement*(a: var TGtkMenuShellClass): guint = proc set_submenu_placement*(a: var TGtkMenuShellClass, `submenu_placement`: guint) = a.GtkMenuShellClassflag0 = a.GtkMenuShellClassflag0 or - ((`submenu_placement` shl bp_TGtkMenuShellClass_submenu_placement) and + (int16(`submenu_placement` shl bp_TGtkMenuShellClass_submenu_placement) and bm_TGtkMenuShellClass_submenu_placement) proc GTK_TYPE_MENU*(): GType = @@ -13313,7 +13313,7 @@ proc needs_destruction_ref_count*(a: var TGtkMenu): guint = proc set_needs_destruction_ref_count*(a: var TGtkMenu, `needs_destruction_ref_count`: guint) = a.GtkMenuflag0 = a.GtkMenuflag0 or - ((`needs_destruction_ref_count` shl + (int16(`needs_destruction_ref_count` shl bp_TGtkMenu_needs_destruction_ref_count) and bm_TGtkMenu_needs_destruction_ref_count) @@ -13322,7 +13322,7 @@ proc torn_off*(a: var TGtkMenu): guint = proc set_torn_off*(a: var TGtkMenu, `torn_off`: guint) = a.GtkMenuflag0 = a.GtkMenuflag0 or - ((`torn_off` shl bp_TGtkMenu_torn_off) and bm_TGtkMenu_torn_off) + (int16(`torn_off` shl bp_TGtkMenu_torn_off) and bm_TGtkMenu_torn_off) proc tearoff_active*(a: var TGtkMenu): guint = result = (a.GtkMenuflag0 and bm_TGtkMenu_tearoff_active) shr @@ -13330,7 +13330,7 @@ proc tearoff_active*(a: var TGtkMenu): guint = proc set_tearoff_active*(a: var TGtkMenu, `tearoff_active`: guint) = a.GtkMenuflag0 = a.GtkMenuflag0 or - ((`tearoff_active` shl bp_TGtkMenu_tearoff_active) and + (int16(`tearoff_active` shl bp_TGtkMenu_tearoff_active) and bm_TGtkMenu_tearoff_active) proc scroll_fast*(a: var TGtkMenu): guint = @@ -13338,7 +13338,7 @@ proc scroll_fast*(a: var TGtkMenu): guint = proc set_scroll_fast*(a: var TGtkMenu, `scroll_fast`: guint) = a.GtkMenuflag0 = a.GtkMenuflag0 or - ((`scroll_fast` shl bp_TGtkMenu_scroll_fast) and + (int16(`scroll_fast` shl bp_TGtkMenu_scroll_fast) and bm_TGtkMenu_scroll_fast) proc upper_arrow_visible*(a: var TGtkMenu): guint = @@ -13347,7 +13347,7 @@ proc upper_arrow_visible*(a: var TGtkMenu): guint = proc set_upper_arrow_visible*(a: var TGtkMenu, `upper_arrow_visible`: guint) = a.GtkMenuflag0 = a.GtkMenuflag0 or - ((`upper_arrow_visible` shl bp_TGtkMenu_upper_arrow_visible) and + (int16(`upper_arrow_visible` shl bp_TGtkMenu_upper_arrow_visible) and bm_TGtkMenu_upper_arrow_visible) proc lower_arrow_visible*(a: var TGtkMenu): guint = @@ -13356,7 +13356,7 @@ proc lower_arrow_visible*(a: var TGtkMenu): guint = proc set_lower_arrow_visible*(a: var TGtkMenu, `lower_arrow_visible`: guint) = a.GtkMenuflag0 = a.GtkMenuflag0 or - ((`lower_arrow_visible` shl bp_TGtkMenu_lower_arrow_visible) and + (int16(`lower_arrow_visible` shl bp_TGtkMenu_lower_arrow_visible) and bm_TGtkMenu_lower_arrow_visible) proc upper_arrow_prelight*(a: var TGtkMenu): guint = @@ -13365,7 +13365,7 @@ proc upper_arrow_prelight*(a: var TGtkMenu): guint = proc set_upper_arrow_prelight*(a: var TGtkMenu, `upper_arrow_prelight`: guint) = a.GtkMenuflag0 = a.GtkMenuflag0 or - ((`upper_arrow_prelight` shl bp_TGtkMenu_upper_arrow_prelight) and + (int16(`upper_arrow_prelight` shl bp_TGtkMenu_upper_arrow_prelight) and bm_TGtkMenu_upper_arrow_prelight) proc lower_arrow_prelight*(a: var TGtkMenu): guint = @@ -13374,7 +13374,7 @@ proc lower_arrow_prelight*(a: var TGtkMenu): guint = proc set_lower_arrow_prelight*(a: var TGtkMenu, `lower_arrow_prelight`: guint) = a.GtkMenuflag0 = a.GtkMenuflag0 or - ((`lower_arrow_prelight` shl bp_TGtkMenu_lower_arrow_prelight) and + (int16(`lower_arrow_prelight` shl bp_TGtkMenu_lower_arrow_prelight) and bm_TGtkMenu_lower_arrow_prelight) proc gtk_menu_append*(menu, child: PGtkWidget) = @@ -13409,14 +13409,14 @@ proc editable*(a: var TGtkEntry): guint = proc set_editable*(a: var TGtkEntry, `editable`: guint) = a.GtkEntryflag0 = a.GtkEntryflag0 or - ((`editable` shl bp_TGtkEntry_editable) and bm_TGtkEntry_editable) + (int16(`editable` shl bp_TGtkEntry_editable) and bm_TGtkEntry_editable) proc visible*(a: var TGtkEntry): guint = result = (a.GtkEntryflag0 and bm_TGtkEntry_visible) shr bp_TGtkEntry_visible proc set_visible*(a: var TGtkEntry, `visible`: guint) = a.GtkEntryflag0 = a.GtkEntryflag0 or - ((`visible` shl bp_TGtkEntry_visible) and bm_TGtkEntry_visible) + (int16(`visible` shl bp_TGtkEntry_visible) and bm_TGtkEntry_visible) proc overwrite_mode*(a: var TGtkEntry): guint = result = (a.GtkEntryflag0 and bm_TGtkEntry_overwrite_mode) shr @@ -13424,7 +13424,7 @@ proc overwrite_mode*(a: var TGtkEntry): guint = proc set_overwrite_mode*(a: var TGtkEntry, `overwrite_mode`: guint) = a.GtkEntryflag0 = a.GtkEntryflag0 or - ((`overwrite_mode` shl bp_TGtkEntry_overwrite_mode) and + (int16(`overwrite_mode` shl bp_TGtkEntry_overwrite_mode) and bm_TGtkEntry_overwrite_mode) proc in_drag*(a: var TGtkEntry): guint = @@ -13432,7 +13432,7 @@ proc in_drag*(a: var TGtkEntry): guint = proc set_in_drag*(a: var TGtkEntry, `in_drag`: guint) = a.GtkEntryflag0 = a.GtkEntryflag0 or - ((`in_drag` shl bp_TGtkEntry_in_drag) and bm_TGtkEntry_in_drag) + (int16(`in_drag` shl bp_TGtkEntry_in_drag) and bm_TGtkEntry_in_drag) proc cache_includes_preedit*(a: var TGtkEntry): guint = result = (a.flag1 and bm_TGtkEntry_cache_includes_preedit) shr @@ -13441,7 +13441,7 @@ proc cache_includes_preedit*(a: var TGtkEntry): guint = proc set_cache_includes_preedit*(a: var TGtkEntry, `cache_includes_preedit`: guint) = a.flag1 = a.flag1 or - ((`cache_includes_preedit` shl bp_TGtkEntry_cache_includes_preedit) and + (int16(`cache_includes_preedit` shl bp_TGtkEntry_cache_includes_preedit) and bm_TGtkEntry_cache_includes_preedit) proc need_im_reset*(a: var TGtkEntry): guint = @@ -13450,7 +13450,7 @@ proc need_im_reset*(a: var TGtkEntry): guint = proc set_need_im_reset*(a: var TGtkEntry, `need_im_reset`: guint) = a.flag1 = a.flag1 or - ((`need_im_reset` shl bp_TGtkEntry_need_im_reset) and + (int16(`need_im_reset` shl bp_TGtkEntry_need_im_reset) and bm_TGtkEntry_need_im_reset) proc has_frame*(a: var TGtkEntry): guint = @@ -13458,7 +13458,7 @@ proc has_frame*(a: var TGtkEntry): guint = proc set_has_frame*(a: var TGtkEntry, `has_frame`: guint) = a.flag1 = a.flag1 or - ((`has_frame` shl bp_TGtkEntry_has_frame) and bm_TGtkEntry_has_frame) + (int16(`has_frame` shl bp_TGtkEntry_has_frame) and bm_TGtkEntry_has_frame) proc activates_default*(a: var TGtkEntry): guint = result = (a.flag1 and bm_TGtkEntry_activates_default) shr @@ -13466,7 +13466,7 @@ proc activates_default*(a: var TGtkEntry): guint = proc set_activates_default*(a: var TGtkEntry, `activates_default`: guint) = a.flag1 = a.flag1 or - ((`activates_default` shl bp_TGtkEntry_activates_default) and + (int16(`activates_default` shl bp_TGtkEntry_activates_default) and bm_TGtkEntry_activates_default) proc cursor_visible*(a: var TGtkEntry): guint = @@ -13475,7 +13475,7 @@ proc cursor_visible*(a: var TGtkEntry): guint = proc set_cursor_visible*(a: var TGtkEntry, `cursor_visible`: guint) = a.flag1 = a.flag1 or - ((`cursor_visible` shl bp_TGtkEntry_cursor_visible) and + (int16(`cursor_visible` shl bp_TGtkEntry_cursor_visible) and bm_TGtkEntry_cursor_visible) proc in_click*(a: var TGtkEntry): guint = @@ -13483,7 +13483,7 @@ proc in_click*(a: var TGtkEntry): guint = proc set_in_click*(a: var TGtkEntry, `in_click`: guint) = a.flag1 = a.flag1 or - ((`in_click` shl bp_TGtkEntry_in_click) and bm_TGtkEntry_in_click) + (int16(`in_click` shl bp_TGtkEntry_in_click) and bm_TGtkEntry_in_click) proc is_cell_renderer*(a: var TGtkEntry): guint = result = (a.flag1 and bm_TGtkEntry_is_cell_renderer) shr @@ -13491,7 +13491,7 @@ proc is_cell_renderer*(a: var TGtkEntry): guint = proc set_is_cell_renderer*(a: var TGtkEntry, `is_cell_renderer`: guint) = a.flag1 = a.flag1 or - ((`is_cell_renderer` shl bp_TGtkEntry_is_cell_renderer) and + (int16(`is_cell_renderer` shl bp_TGtkEntry_is_cell_renderer) and bm_TGtkEntry_is_cell_renderer) proc editing_canceled*(a: var TGtkEntry): guint = @@ -13500,7 +13500,7 @@ proc editing_canceled*(a: var TGtkEntry): guint = proc set_editing_canceled*(a: var TGtkEntry, `editing_canceled`: guint) = a.flag1 = a.flag1 or - ((`editing_canceled` shl bp_TGtkEntry_editing_canceled) and + (int16(`editing_canceled` shl bp_TGtkEntry_editing_canceled) and bm_TGtkEntry_editing_canceled) proc mouse_cursor_obscured*(a: var TGtkEntry): guint = @@ -13509,7 +13509,7 @@ proc mouse_cursor_obscured*(a: var TGtkEntry): guint = proc set_mouse_cursor_obscured*(a: var TGtkEntry, `mouse_cursor_obscured`: guint) = a.flag1 = a.flag1 or - ((`mouse_cursor_obscured` shl bp_TGtkEntry_mouse_cursor_obscured) and + (int16(`mouse_cursor_obscured` shl bp_TGtkEntry_mouse_cursor_obscured) and bm_TGtkEntry_mouse_cursor_obscured) proc GTK_TYPE_EVENT_BOX*(): GType = @@ -13651,7 +13651,7 @@ proc handle_position*(a: var TGtkHandleBox): guint = proc set_handle_position*(a: var TGtkHandleBox, `handle_position`: guint) = a.GtkHandleBoxflag0 = a.GtkHandleBoxflag0 or - ((`handle_position` shl bp_TGtkHandleBox_handle_position) and + (int16(`handle_position` shl bp_TGtkHandleBox_handle_position) and bm_TGtkHandleBox_handle_position) proc float_window_mapped*(a: var TGtkHandleBox): guint = @@ -13660,7 +13660,7 @@ proc float_window_mapped*(a: var TGtkHandleBox): guint = proc set_float_window_mapped*(a: var TGtkHandleBox, `float_window_mapped`: guint) = a.GtkHandleBoxflag0 = a.GtkHandleBoxflag0 or - ((`float_window_mapped` shl bp_TGtkHandleBox_float_window_mapped) and + (int16(`float_window_mapped` shl bp_TGtkHandleBox_float_window_mapped) and bm_TGtkHandleBox_float_window_mapped) proc child_detached*(a: var TGtkHandleBox): guint = @@ -13669,7 +13669,7 @@ proc child_detached*(a: var TGtkHandleBox): guint = proc set_child_detached*(a: var TGtkHandleBox, `child_detached`: guint) = a.GtkHandleBoxflag0 = a.GtkHandleBoxflag0 or - ((`child_detached` shl bp_TGtkHandleBox_child_detached) and + (int16(`child_detached` shl bp_TGtkHandleBox_child_detached) and bm_TGtkHandleBox_child_detached) proc in_drag*(a: var TGtkHandleBox): guint = @@ -13678,7 +13678,7 @@ proc in_drag*(a: var TGtkHandleBox): guint = proc set_in_drag*(a: var TGtkHandleBox, `in_drag`: guint) = a.GtkHandleBoxflag0 = a.GtkHandleBoxflag0 or - ((`in_drag` shl bp_TGtkHandleBox_in_drag) and bm_TGtkHandleBox_in_drag) + (int16(`in_drag` shl bp_TGtkHandleBox_in_drag) and bm_TGtkHandleBox_in_drag) proc shrink_on_detach*(a: var TGtkHandleBox): guint = result = (a.GtkHandleBoxflag0 and bm_TGtkHandleBox_shrink_on_detach) shr @@ -13686,7 +13686,7 @@ proc shrink_on_detach*(a: var TGtkHandleBox): guint = proc set_shrink_on_detach*(a: var TGtkHandleBox, `shrink_on_detach`: guint) = a.GtkHandleBoxflag0 = a.GtkHandleBoxflag0 or - ((`shrink_on_detach` shl bp_TGtkHandleBox_shrink_on_detach) and + (int16(`shrink_on_detach` shl bp_TGtkHandleBox_shrink_on_detach) and bm_TGtkHandleBox_shrink_on_detach) proc snap_edge*(a: var TGtkHandleBox): gint = @@ -13695,7 +13695,7 @@ proc snap_edge*(a: var TGtkHandleBox): gint = proc set_snap_edge*(a: var TGtkHandleBox, `snap_edge`: gint) = a.GtkHandleBoxflag0 = a.GtkHandleBoxflag0 or - ((`snap_edge` shl bp_TGtkHandleBox_snap_edge) and + (int16(`snap_edge` shl bp_TGtkHandleBox_snap_edge) and bm_TGtkHandleBox_snap_edge) proc GTK_TYPE_PANED*(): GType = @@ -13722,7 +13722,7 @@ proc position_set*(a: var TGtkPaned): guint = proc set_position_set*(a: var TGtkPaned, `position_set`: guint) = a.GtkPanedflag0 = a.GtkPanedflag0 or - ((`position_set` shl bp_TGtkPaned_position_set) and + (int16(`position_set` shl bp_TGtkPaned_position_set) and bm_TGtkPaned_position_set) proc in_drag*(a: var TGtkPaned): guint = @@ -13730,7 +13730,7 @@ proc in_drag*(a: var TGtkPaned): guint = proc set_in_drag*(a: var TGtkPaned, `in_drag`: guint) = a.GtkPanedflag0 = a.GtkPanedflag0 or - ((`in_drag` shl bp_TGtkPaned_in_drag) and bm_TGtkPaned_in_drag) + (int16(`in_drag` shl bp_TGtkPaned_in_drag) and bm_TGtkPaned_in_drag) proc child1_shrink*(a: var TGtkPaned): guint = result = (a.GtkPanedflag0 and bm_TGtkPaned_child1_shrink) shr @@ -13738,7 +13738,7 @@ proc child1_shrink*(a: var TGtkPaned): guint = proc set_child1_shrink*(a: var TGtkPaned, `child1_shrink`: guint) = a.GtkPanedflag0 = a.GtkPanedflag0 or - ((`child1_shrink` shl bp_TGtkPaned_child1_shrink) and + (int16(`child1_shrink` shl bp_TGtkPaned_child1_shrink) and bm_TGtkPaned_child1_shrink) proc child1_resize*(a: var TGtkPaned): guint = @@ -13747,7 +13747,7 @@ proc child1_resize*(a: var TGtkPaned): guint = proc set_child1_resize*(a: var TGtkPaned, `child1_resize`: guint) = a.GtkPanedflag0 = a.GtkPanedflag0 or - ((`child1_resize` shl bp_TGtkPaned_child1_resize) and + (int16(`child1_resize` shl bp_TGtkPaned_child1_resize) and bm_TGtkPaned_child1_resize) proc child2_shrink*(a: var TGtkPaned): guint = @@ -13756,7 +13756,7 @@ proc child2_shrink*(a: var TGtkPaned): guint = proc set_child2_shrink*(a: var TGtkPaned, `child2_shrink`: guint) = a.GtkPanedflag0 = a.GtkPanedflag0 or - ((`child2_shrink` shl bp_TGtkPaned_child2_shrink) and + (int16(`child2_shrink` shl bp_TGtkPaned_child2_shrink) and bm_TGtkPaned_child2_shrink) proc child2_resize*(a: var TGtkPaned): guint = @@ -13765,7 +13765,7 @@ proc child2_resize*(a: var TGtkPaned): guint = proc set_child2_resize*(a: var TGtkPaned, `child2_resize`: guint) = a.GtkPanedflag0 = a.GtkPanedflag0 or - ((`child2_resize` shl bp_TGtkPaned_child2_resize) and + (int16(`child2_resize` shl bp_TGtkPaned_child2_resize) and bm_TGtkPaned_child2_resize) proc orientation*(a: var TGtkPaned): guint = @@ -13774,7 +13774,7 @@ proc orientation*(a: var TGtkPaned): guint = proc set_orientation*(a: var TGtkPaned, `orientation`: guint) = a.GtkPanedflag0 = a.GtkPanedflag0 or - ((`orientation` shl bp_TGtkPaned_orientation) and + (int16(`orientation` shl bp_TGtkPaned_orientation) and bm_TGtkPaned_orientation) proc in_recursion*(a: var TGtkPaned): guint = @@ -13783,7 +13783,7 @@ proc in_recursion*(a: var TGtkPaned): guint = proc set_in_recursion*(a: var TGtkPaned, `in_recursion`: guint) = a.GtkPanedflag0 = a.GtkPanedflag0 or - ((`in_recursion` shl bp_TGtkPaned_in_recursion) and + (int16(`in_recursion` shl bp_TGtkPaned_in_recursion) and bm_TGtkPaned_in_recursion) proc handle_prelit*(a: var TGtkPaned): guint = @@ -13792,14 +13792,14 @@ proc handle_prelit*(a: var TGtkPaned): guint = proc set_handle_prelit*(a: var TGtkPaned, `handle_prelit`: guint) = a.GtkPanedflag0 = a.GtkPanedflag0 or - ((`handle_prelit` shl bp_TGtkPaned_handle_prelit) and + (int16(`handle_prelit` shl bp_TGtkPaned_handle_prelit) and bm_TGtkPaned_handle_prelit) proc gtk_paned_gutter_size*(p: pointer, s: gint) = - if (p != nil) and (s != 0): nil + if (p != nil) and (s != 0'i32): nil proc gtk_paned_set_gutter_size*(p: pointer, s: gint) = - if (p != nil) and (s != 0): nil + if (p != nil) and (s != 0'i32): nil proc GTK_TYPE_HBUTTON_BOX*(): GType = result = gtk_hbutton_box_get_type() @@ -13915,7 +13915,7 @@ proc engine_specified*(a: var TGtkRcStyle): guint = proc set_engine_specified*(a: var TGtkRcStyle, `engine_specified`: guint) = a.GtkRcStyleflag0 = a.GtkRcStyleflag0 or - ((`engine_specified` shl bp_TGtkRcStyle_engine_specified) and + (int16(`engine_specified` shl bp_TGtkRcStyle_engine_specified) and bm_TGtkRcStyle_engine_specified) proc GTK_TYPE_STYLE*(): GType = @@ -13940,7 +13940,7 @@ proc GTK_TYPE_BORDER*(): GType = result = gtk_border_get_type() proc GTK_STYLE_ATTACHED*(style: pointer): bool = - result = ((GTK_STYLE(style)).attach_count) > 0 + result = ((GTK_STYLE(style)).attach_count) > 0'i32 proc gtk_style_apply_default_pixmap*(style: PGtkStyle, window: PGdkWindow, state_type: TGtkStateType, @@ -13972,14 +13972,14 @@ proc inverted*(a: var TGtkRange): guint = proc set_inverted*(a: var TGtkRange, `inverted`: guint) = a.GtkRangeflag0 = a.GtkRangeflag0 or - ((`inverted` shl bp_TGtkRange_inverted) and bm_TGtkRange_inverted) + (int16(`inverted` shl bp_TGtkRange_inverted) and bm_TGtkRange_inverted) proc flippable*(a: var TGtkRange): guint = result = (a.GtkRangeflag0 and bm_TGtkRange_flippable) shr bp_TGtkRange_flippable proc set_flippable*(a: var TGtkRange, `flippable`: guint) = a.GtkRangeflag0 = a.GtkRangeflag0 or - ((`flippable` shl bp_TGtkRange_flippable) and bm_TGtkRange_flippable) + (int16(`flippable` shl bp_TGtkRange_flippable) and bm_TGtkRange_flippable) proc has_stepper_a*(a: var TGtkRange): guint = result = (a.GtkRangeflag0 and bm_TGtkRange_has_stepper_a) shr @@ -13987,7 +13987,7 @@ proc has_stepper_a*(a: var TGtkRange): guint = proc set_has_stepper_a*(a: var TGtkRange, `has_stepper_a`: guint) = a.GtkRangeflag0 = a.GtkRangeflag0 or - ((`has_stepper_a` shl bp_TGtkRange_has_stepper_a) and + (int16(`has_stepper_a` shl bp_TGtkRange_has_stepper_a) and bm_TGtkRange_has_stepper_a) proc has_stepper_b*(a: var TGtkRange): guint = @@ -13996,7 +13996,7 @@ proc has_stepper_b*(a: var TGtkRange): guint = proc set_has_stepper_b*(a: var TGtkRange, `has_stepper_b`: guint) = a.GtkRangeflag0 = a.GtkRangeflag0 or - ((`has_stepper_b` shl bp_TGtkRange_has_stepper_b) and + (int16(`has_stepper_b` shl bp_TGtkRange_has_stepper_b) and bm_TGtkRange_has_stepper_b) proc has_stepper_c*(a: var TGtkRange): guint = @@ -14005,7 +14005,7 @@ proc has_stepper_c*(a: var TGtkRange): guint = proc set_has_stepper_c*(a: var TGtkRange, `has_stepper_c`: guint) = a.GtkRangeflag0 = a.GtkRangeflag0 or - ((`has_stepper_c` shl bp_TGtkRange_has_stepper_c) and + (int16(`has_stepper_c` shl bp_TGtkRange_has_stepper_c) and bm_TGtkRange_has_stepper_c) proc has_stepper_d*(a: var TGtkRange): guint = @@ -14014,7 +14014,7 @@ proc has_stepper_d*(a: var TGtkRange): guint = proc set_has_stepper_d*(a: var TGtkRange, `has_stepper_d`: guint) = a.GtkRangeflag0 = a.GtkRangeflag0 or - ((`has_stepper_d` shl bp_TGtkRange_has_stepper_d) and + (int16(`has_stepper_d` shl bp_TGtkRange_has_stepper_d) and bm_TGtkRange_has_stepper_d) proc need_recalc*(a: var TGtkRange): guint = @@ -14023,7 +14023,7 @@ proc need_recalc*(a: var TGtkRange): guint = proc set_need_recalc*(a: var TGtkRange, `need_recalc`: guint) = a.GtkRangeflag0 = a.GtkRangeflag0 or - ((`need_recalc` shl bp_TGtkRange_need_recalc) and + (int16(`need_recalc` shl bp_TGtkRange_need_recalc) and bm_TGtkRange_need_recalc) proc slider_size_fixed*(a: var TGtkRange): guint = @@ -14032,7 +14032,7 @@ proc slider_size_fixed*(a: var TGtkRange): guint = proc set_slider_size_fixed*(a: var TGtkRange, `slider_size_fixed`: guint) = a.GtkRangeflag0 = a.GtkRangeflag0 or - ((`slider_size_fixed` shl bp_TGtkRange_slider_size_fixed) and + (int16(`slider_size_fixed` shl bp_TGtkRange_slider_size_fixed) and bm_TGtkRange_slider_size_fixed) proc trough_click_forward*(a: var TGtkRange): guint = @@ -14041,7 +14041,7 @@ proc trough_click_forward*(a: var TGtkRange): guint = proc set_trough_click_forward*(a: var TGtkRange, `trough_click_forward`: guint) = a.flag1 = a.flag1 or - ((`trough_click_forward` shl bp_TGtkRange_trough_click_forward) and + (int16(`trough_click_forward` shl bp_TGtkRange_trough_click_forward) and bm_TGtkRange_trough_click_forward) proc update_pending*(a: var TGtkRange): guint = @@ -14050,7 +14050,7 @@ proc update_pending*(a: var TGtkRange): guint = proc set_update_pending*(a: var TGtkRange, `update_pending`: guint) = a.flag1 = a.flag1 or - ((`update_pending` shl bp_TGtkRange_update_pending) and + (int16(`update_pending` shl bp_TGtkRange_update_pending) and bm_TGtkRange_update_pending) proc GTK_TYPE_SCALE*(): GType = @@ -14076,14 +14076,14 @@ proc draw_value*(a: var TGtkScale): guint = proc set_draw_value*(a: var TGtkScale, `draw_value`: guint) = a.GtkScaleflag0 = a.GtkScaleflag0 or - ((`draw_value` shl bp_TGtkScale_draw_value) and bm_TGtkScale_draw_value) + (int16(`draw_value` shl bp_TGtkScale_draw_value) and bm_TGtkScale_draw_value) proc value_pos*(a: var TGtkScale): guint = result = (a.GtkScaleflag0 and bm_TGtkScale_value_pos) shr bp_TGtkScale_value_pos proc set_value_pos*(a: var TGtkScale, `value_pos`: guint) = a.GtkScaleflag0 = a.GtkScaleflag0 or - ((`value_pos` shl bp_TGtkScale_value_pos) and bm_TGtkScale_value_pos) + (int16(`value_pos` shl bp_TGtkScale_value_pos) and bm_TGtkScale_value_pos) proc GTK_TYPE_HSCALE*(): GType = result = gtk_hscale_get_type() @@ -14265,7 +14265,7 @@ proc in_hex_sequence*(a: var TGtkIMContextSimple): guint = proc set_in_hex_sequence*(a: var TGtkIMContextSimple, `in_hex_sequence`: guint) = a.GtkIMContextSimpleflag0 = a.GtkIMContextSimpleflag0 or - ((`in_hex_sequence` shl bp_TGtkIMContextSimple_in_hex_sequence) and + (int16(`in_hex_sequence` shl bp_TGtkIMContextSimple_in_hex_sequence) and bm_TGtkIMContextSimple_in_hex_sequence) proc GTK_TYPE_IM_MULTICONTEXT*(): GType = @@ -14386,7 +14386,7 @@ proc selection_mode*(a: var TGtkList): guint = proc set_selection_mode*(a: var TGtkList, `selection_mode`: guint) = a.GtkListflag0 = a.GtkListflag0 or - ((`selection_mode` shl bp_TGtkList_selection_mode) and + (int16(`selection_mode` shl bp_TGtkList_selection_mode) and bm_TGtkList_selection_mode) proc drag_selection*(a: var TGtkList): guint = @@ -14395,7 +14395,7 @@ proc drag_selection*(a: var TGtkList): guint = proc set_drag_selection*(a: var TGtkList, `drag_selection`: guint) = a.GtkListflag0 = a.GtkListflag0 or - ((`drag_selection` shl bp_TGtkList_drag_selection) and + (int16(`drag_selection` shl bp_TGtkList_drag_selection) and bm_TGtkList_drag_selection) proc add_mode*(a: var TGtkList): guint = @@ -14403,7 +14403,7 @@ proc add_mode*(a: var TGtkList): guint = proc set_add_mode*(a: var TGtkList, `add_mode`: guint) = a.GtkListflag0 = a.GtkListflag0 or - ((`add_mode` shl bp_TGtkList_add_mode) and bm_TGtkList_add_mode) + (int16(`add_mode` shl bp_TGtkList_add_mode) and bm_TGtkList_add_mode) proc gtk_list_item_get_type(): GType {.importc, cdecl, dynlib: gtklib.} @@ -14520,7 +14520,7 @@ proc columns_dirty*(a: var TGtkListStore): guint = proc set_columns_dirty*(a: var TGtkListStore, `columns_dirty`: guint) = a.GtkListStoreflag0 = a.GtkListStoreflag0 or - ((`columns_dirty` shl bp_TGtkListStore_columns_dirty) and + (int16(`columns_dirty` shl bp_TGtkListStore_columns_dirty) and bm_TGtkListStore_columns_dirty) proc GTK_TYPE_MENU_BAR*(): GType = @@ -14594,7 +14594,7 @@ proc show_tabs*(a: var TGtkNotebook): guint = proc set_show_tabs*(a: var TGtkNotebook, `show_tabs`: guint) = a.GtkNotebookflag0 = a.GtkNotebookflag0 or - ((`show_tabs` shl bp_TGtkNotebook_show_tabs) and + (int16(`show_tabs` shl bp_TGtkNotebook_show_tabs) and bm_TGtkNotebook_show_tabs) proc homogeneous*(a: var TGtkNotebook): guint = @@ -14603,7 +14603,7 @@ proc homogeneous*(a: var TGtkNotebook): guint = proc set_homogeneous*(a: var TGtkNotebook, `homogeneous`: guint) = a.GtkNotebookflag0 = a.GtkNotebookflag0 or - ((`homogeneous` shl bp_TGtkNotebook_homogeneous) and + (int16(`homogeneous` shl bp_TGtkNotebook_homogeneous) and bm_TGtkNotebook_homogeneous) proc show_border*(a: var TGtkNotebook): guint = @@ -14612,7 +14612,7 @@ proc show_border*(a: var TGtkNotebook): guint = proc set_show_border*(a: var TGtkNotebook, `show_border`: guint) = a.GtkNotebookflag0 = a.GtkNotebookflag0 or - ((`show_border` shl bp_TGtkNotebook_show_border) and + (int16(`show_border` shl bp_TGtkNotebook_show_border) and bm_TGtkNotebook_show_border) proc tab_pos*(a: var TGtkNotebook): guint = @@ -14620,7 +14620,7 @@ proc tab_pos*(a: var TGtkNotebook): guint = proc set_tab_pos*(a: var TGtkNotebook, `tab_pos`: guint) = a.GtkNotebookflag0 = a.GtkNotebookflag0 or - ((`tab_pos` shl bp_TGtkNotebook_tab_pos) and bm_TGtkNotebook_tab_pos) + (int16(`tab_pos` shl bp_TGtkNotebook_tab_pos) and bm_TGtkNotebook_tab_pos) proc scrollable*(a: var TGtkNotebook): guint = result = (a.GtkNotebookflag0 and bm_TGtkNotebook_scrollable) shr @@ -14628,7 +14628,7 @@ proc scrollable*(a: var TGtkNotebook): guint = proc set_scrollable*(a: var TGtkNotebook, `scrollable`: guint) = a.GtkNotebookflag0 = a.GtkNotebookflag0 or - ((`scrollable` shl bp_TGtkNotebook_scrollable) and + (int16(`scrollable` shl bp_TGtkNotebook_scrollable) and bm_TGtkNotebook_scrollable) proc in_child*(a: var TGtkNotebook): guint = @@ -14637,7 +14637,7 @@ proc in_child*(a: var TGtkNotebook): guint = proc set_in_child*(a: var TGtkNotebook, `in_child`: guint) = a.GtkNotebookflag0 = a.GtkNotebookflag0 or - ((`in_child` shl bp_TGtkNotebook_in_child) and bm_TGtkNotebook_in_child) + (int16(`in_child` shl bp_TGtkNotebook_in_child) and bm_TGtkNotebook_in_child) proc click_child*(a: var TGtkNotebook): guint = result = (a.GtkNotebookflag0 and bm_TGtkNotebook_click_child) shr @@ -14645,7 +14645,7 @@ proc click_child*(a: var TGtkNotebook): guint = proc set_click_child*(a: var TGtkNotebook, `click_child`: guint) = a.GtkNotebookflag0 = a.GtkNotebookflag0 or - ((`click_child` shl bp_TGtkNotebook_click_child) and + (int16(`click_child` shl bp_TGtkNotebook_click_child) and bm_TGtkNotebook_click_child) proc button*(a: var TGtkNotebook): guint = @@ -14653,7 +14653,7 @@ proc button*(a: var TGtkNotebook): guint = proc set_button*(a: var TGtkNotebook, `button`: guint) = a.GtkNotebookflag0 = a.GtkNotebookflag0 or - ((`button` shl bp_TGtkNotebook_button) and bm_TGtkNotebook_button) + (int16(`button` shl bp_TGtkNotebook_button) and bm_TGtkNotebook_button) proc need_timer*(a: var TGtkNotebook): guint = result = (a.GtkNotebookflag0 and bm_TGtkNotebook_need_timer) shr @@ -14661,7 +14661,7 @@ proc need_timer*(a: var TGtkNotebook): guint = proc set_need_timer*(a: var TGtkNotebook, `need_timer`: guint) = a.GtkNotebookflag0 = a.GtkNotebookflag0 or - ((`need_timer` shl bp_TGtkNotebook_need_timer) and + (int16(`need_timer` shl bp_TGtkNotebook_need_timer) and bm_TGtkNotebook_need_timer) proc child_has_focus*(a: var TGtkNotebook): guint = @@ -14670,7 +14670,7 @@ proc child_has_focus*(a: var TGtkNotebook): guint = proc set_child_has_focus*(a: var TGtkNotebook, `child_has_focus`: guint) = a.GtkNotebookflag0 = a.GtkNotebookflag0 or - ((`child_has_focus` shl bp_TGtkNotebook_child_has_focus) and + (int16(`child_has_focus` shl bp_TGtkNotebook_child_has_focus) and bm_TGtkNotebook_child_has_focus) proc have_visible_child*(a: var TGtkNotebook): guint = @@ -14679,7 +14679,7 @@ proc have_visible_child*(a: var TGtkNotebook): guint = proc set_have_visible_child*(a: var TGtkNotebook, `have_visible_child`: guint) = a.GtkNotebookflag0 = a.GtkNotebookflag0 or - ((`have_visible_child` shl bp_TGtkNotebook_have_visible_child) and + (int16(`have_visible_child` shl bp_TGtkNotebook_have_visible_child) and bm_TGtkNotebook_have_visible_child) proc focus_out*(a: var TGtkNotebook): guint = @@ -14688,7 +14688,7 @@ proc focus_out*(a: var TGtkNotebook): guint = proc set_focus_out*(a: var TGtkNotebook, `focus_out`: guint) = a.GtkNotebookflag0 = a.GtkNotebookflag0 or - ((`focus_out` shl bp_TGtkNotebook_focus_out) and + (int16(`focus_out` shl bp_TGtkNotebook_focus_out) and bm_TGtkNotebook_focus_out) proc GTK_TYPE_OLD_EDITABLE*(): GType = @@ -14716,7 +14716,7 @@ proc has_selection*(a: var TGtkOldEditable): guint = proc set_has_selection*(a: var TGtkOldEditable, `has_selection`: guint) = a.GtkOldEditableflag0 = a.GtkOldEditableflag0 or - ((`has_selection` shl bp_TGtkOldEditable_has_selection) and + (int16(`has_selection` shl bp_TGtkOldEditable_has_selection) and bm_TGtkOldEditable_has_selection) proc editable*(a: var TGtkOldEditable): guint = @@ -14725,7 +14725,7 @@ proc editable*(a: var TGtkOldEditable): guint = proc set_editable*(a: var TGtkOldEditable, `editable`: guint) = a.GtkOldEditableflag0 = a.GtkOldEditableflag0 or - ((`editable` shl bp_TGtkOldEditable_editable) and + (int16(`editable` shl bp_TGtkOldEditable_editable) and bm_TGtkOldEditable_editable) proc visible*(a: var TGtkOldEditable): guint = @@ -14734,7 +14734,7 @@ proc visible*(a: var TGtkOldEditable): guint = proc set_visible*(a: var TGtkOldEditable, `visible`: guint) = a.GtkOldEditableflag0 = a.GtkOldEditableflag0 or - ((`visible` shl bp_TGtkOldEditable_visible) and + (int16(`visible` shl bp_TGtkOldEditable_visible) and bm_TGtkOldEditable_visible) proc GTK_TYPE_OPTION_MENU*(): GType = @@ -14779,7 +14779,7 @@ proc build_insensitive*(a: var TGtkPixmap): guint = proc set_build_insensitive*(a: var TGtkPixmap, `build_insensitive`: guint) = a.GtkPixmapflag0 = a.GtkPixmapflag0 or - ((`build_insensitive` shl bp_TGtkPixmap_build_insensitive) and + (int16(`build_insensitive` shl bp_TGtkPixmap_build_insensitive) and bm_TGtkPixmap_build_insensitive) proc GTK_TYPE_PLUG*(): GType = @@ -14805,7 +14805,7 @@ proc same_app*(a: var TGtkPlug): guint = proc set_same_app*(a: var TGtkPlug, `same_app`: guint) = a.GtkPlugflag0 = a.GtkPlugflag0 or - ((`same_app` shl bp_TGtkPlug_same_app) and bm_TGtkPlug_same_app) + (int16(`same_app` shl bp_TGtkPlug_same_app) and bm_TGtkPlug_same_app) proc GTK_TYPE_PREVIEW*(): GType = result = gtk_preview_get_type() @@ -14830,14 +14830,14 @@ proc get_type*(a: var TGtkPreview): guint = proc set_type*(a: var TGtkPreview, `type`: guint) = a.GtkPreviewflag0 = a.GtkPreviewflag0 or - ((`type` shl bp_TGtkPreview_type) and bm_TGtkPreview_type) + (int16(`type` shl bp_TGtkPreview_type) and bm_TGtkPreview_type) proc get_expand*(a: var TGtkPreview): guint = result = (a.GtkPreviewflag0 and bm_TGtkPreview_expand) shr bp_TGtkPreview_expand proc set_expand*(a: var TGtkPreview, `expand`: guint) = a.GtkPreviewflag0 = a.GtkPreviewflag0 or - ((`expand` shl bp_TGtkPreview_expand) and bm_TGtkPreview_expand) + (int16(`expand` shl bp_TGtkPreview_expand) and bm_TGtkPreview_expand) proc gtk_progress_get_type(): GType {.importc, cdecl, dynlib: gtklib.} @@ -14865,7 +14865,7 @@ proc show_text*(a: var TGtkProgress): guint = proc set_show_text*(a: var TGtkProgress, `show_text`: guint) = a.GtkProgressflag0 = a.GtkProgressflag0 or - ((`show_text` shl bp_TGtkProgress_show_text) and + (int16(`show_text` shl bp_TGtkProgress_show_text) and bm_TGtkProgress_show_text) proc activity_mode*(a: var TGtkProgress): guint = @@ -14874,7 +14874,7 @@ proc activity_mode*(a: var TGtkProgress): guint = proc set_activity_mode*(a: var TGtkProgress, `activity_mode`: guint) = a.GtkProgressflag0 = a.GtkProgressflag0 or - ((`activity_mode` shl bp_TGtkProgress_activity_mode) and + (int16(`activity_mode` shl bp_TGtkProgress_activity_mode) and bm_TGtkProgress_activity_mode) proc use_text_format*(a: var TGtkProgress): guint = @@ -14883,7 +14883,7 @@ proc use_text_format*(a: var TGtkProgress): guint = proc set_use_text_format*(a: var TGtkProgress, `use_text_format`: guint) = a.GtkProgressflag0 = a.GtkProgressflag0 or - ((`use_text_format` shl bp_TGtkProgress_use_text_format) and + (int16(`use_text_format` shl bp_TGtkProgress_use_text_format) and bm_TGtkProgress_use_text_format) proc GTK_TYPE_PROGRESS_BAR*(): GType = @@ -14911,7 +14911,7 @@ proc activity_dir*(a: var TGtkProgressBar): guint = proc set_activity_dir*(a: var TGtkProgressBar, `activity_dir`: guint) = a.GtkProgressBarflag0 = a.GtkProgressBarflag0 or - ((`activity_dir` shl bp_TGtkProgressBar_activity_dir) and + (int16(`activity_dir` shl bp_TGtkProgressBar_activity_dir) and bm_TGtkProgressBar_activity_dir) proc GTK_TYPE_RADIO_BUTTON*(): GType = @@ -14980,7 +14980,7 @@ proc hscrollbar_policy*(a: var TGtkScrolledWindow): guint = proc set_hscrollbar_policy*(a: var TGtkScrolledWindow, `hscrollbar_policy`: guint) = a.GtkScrolledWindowflag0 = a.GtkScrolledWindowflag0 or - ((`hscrollbar_policy` shl bp_TGtkScrolledWindow_hscrollbar_policy) and + (int16(`hscrollbar_policy` shl bp_TGtkScrolledWindow_hscrollbar_policy) and bm_TGtkScrolledWindow_hscrollbar_policy) proc vscrollbar_policy*(a: var TGtkScrolledWindow): guint = @@ -14990,7 +14990,7 @@ proc vscrollbar_policy*(a: var TGtkScrolledWindow): guint = proc set_vscrollbar_policy*(a: var TGtkScrolledWindow, `vscrollbar_policy`: guint) = a.GtkScrolledWindowflag0 = a.GtkScrolledWindowflag0 or - ((`vscrollbar_policy` shl bp_TGtkScrolledWindow_vscrollbar_policy) and + (int16(`vscrollbar_policy` shl bp_TGtkScrolledWindow_vscrollbar_policy) and bm_TGtkScrolledWindow_vscrollbar_policy) proc hscrollbar_visible*(a: var TGtkScrolledWindow): guint = @@ -15000,7 +15000,7 @@ proc hscrollbar_visible*(a: var TGtkScrolledWindow): guint = proc set_hscrollbar_visible*(a: var TGtkScrolledWindow, `hscrollbar_visible`: guint) = a.GtkScrolledWindowflag0 = a.GtkScrolledWindowflag0 or - ((`hscrollbar_visible` shl bp_TGtkScrolledWindow_hscrollbar_visible) and + (int16(`hscrollbar_visible` shl bp_TGtkScrolledWindow_hscrollbar_visible) and bm_TGtkScrolledWindow_hscrollbar_visible) proc vscrollbar_visible*(a: var TGtkScrolledWindow): guint = @@ -15010,7 +15010,7 @@ proc vscrollbar_visible*(a: var TGtkScrolledWindow): guint = proc set_vscrollbar_visible*(a: var TGtkScrolledWindow, `vscrollbar_visible`: guint) = a.GtkScrolledWindowflag0 = a.GtkScrolledWindowflag0 or - ((`vscrollbar_visible` shl bp_TGtkScrolledWindow_vscrollbar_visible) and + int16((`vscrollbar_visible` shl bp_TGtkScrolledWindow_vscrollbar_visible) and bm_TGtkScrolledWindow_vscrollbar_visible) proc window_placement*(a: var TGtkScrolledWindow): guint = @@ -15019,7 +15019,7 @@ proc window_placement*(a: var TGtkScrolledWindow): guint = proc set_window_placement*(a: var TGtkScrolledWindow, `window_placement`: guint) = a.GtkScrolledWindowflag0 = a.GtkScrolledWindowflag0 or - ((`window_placement` shl bp_TGtkScrolledWindow_window_placement) and + (int16(`window_placement` shl bp_TGtkScrolledWindow_window_placement) and bm_TGtkScrolledWindow_window_placement) proc focus_out*(a: var TGtkScrolledWindow): guint = @@ -15028,7 +15028,7 @@ proc focus_out*(a: var TGtkScrolledWindow): guint = proc set_focus_out*(a: var TGtkScrolledWindow, `focus_out`: guint) = a.GtkScrolledWindowflag0 = a.GtkScrolledWindowflag0 or - ((`focus_out` shl bp_TGtkScrolledWindow_focus_out) and + (int16(`focus_out` shl bp_TGtkScrolledWindow_focus_out) and bm_TGtkScrolledWindow_focus_out) proc GTK_TYPE_SELECTION_DATA*(): GType = @@ -15062,7 +15062,7 @@ proc gtk_signal_name*(signal_id: guint): cstring = result = g_signal_name(signal_id) proc gtk_signal_emit_stop*(instance: gpointer, signal_id: guint, detail: TGQuark) = - if detail != 0: g_signal_stop_emission(instance, signal_id, 0) + if detail != 0'i32: g_signal_stop_emission(instance, signal_id, 0) proc gtk_signal_connect_full*(anObject: PGtkObject, name: cstring, func_: TGtkSignalFunc, unknown1: pointer, @@ -15138,7 +15138,7 @@ proc gtk_signal_handler_pending_by_func*(anObject: PGtkObject, signal_id: guint, t = cast[TGSignalMatchType](G_SIGNAL_MATCH_ID or G_SIGNAL_MATCH_FUNC or G_SIGNAL_MATCH_DATA) if not may_be_blocked: - t = t or cast[int](G_SIGNAL_MATCH_UNBLOCKED) + t = t or cast[TGSignalMatchType](G_SIGNAL_MATCH_UNBLOCKED) Result = g_signal_handler_find(anObject, t, signal_id, 0, nil, func_, data) != 0 @@ -15166,7 +15166,7 @@ proc have_width*(a: var TGtkSizeGroup): guint = proc set_have_width*(a: var TGtkSizeGroup, `have_width`: guint) = a.GtkSizeGroupflag0 = a.GtkSizeGroupflag0 or - ((`have_width` shl bp_TGtkSizeGroup_have_width) and + (int16(`have_width` shl bp_TGtkSizeGroup_have_width) and bm_TGtkSizeGroup_have_width) proc have_height*(a: var TGtkSizeGroup): guint = @@ -15175,7 +15175,7 @@ proc have_height*(a: var TGtkSizeGroup): guint = proc set_have_height*(a: var TGtkSizeGroup, `have_height`: guint) = a.GtkSizeGroupflag0 = a.GtkSizeGroupflag0 or - ((`have_height` shl bp_TGtkSizeGroup_have_height) and + (int16(`have_height` shl bp_TGtkSizeGroup_have_height) and bm_TGtkSizeGroup_have_height) proc GTK_TYPE_SOCKET*(): GType = @@ -15201,35 +15201,35 @@ proc same_app*(a: var TGtkSocket): guint = proc set_same_app*(a: var TGtkSocket, `same_app`: guint) = a.GtkSocketflag0 = a.GtkSocketflag0 or - ((`same_app` shl bp_TGtkSocket_same_app) and bm_TGtkSocket_same_app) + (int16(`same_app` shl bp_TGtkSocket_same_app) and bm_TGtkSocket_same_app) proc focus_in*(a: var TGtkSocket): guint = result = (a.GtkSocketflag0 and bm_TGtkSocket_focus_in) shr bp_TGtkSocket_focus_in proc set_focus_in*(a: var TGtkSocket, `focus_in`: guint) = a.GtkSocketflag0 = a.GtkSocketflag0 or - ((`focus_in` shl bp_TGtkSocket_focus_in) and bm_TGtkSocket_focus_in) + (int16(`focus_in` shl bp_TGtkSocket_focus_in) and bm_TGtkSocket_focus_in) proc have_size*(a: var TGtkSocket): guint = result = (a.GtkSocketflag0 and bm_TGtkSocket_have_size) shr bp_TGtkSocket_have_size proc set_have_size*(a: var TGtkSocket, `have_size`: guint) = a.GtkSocketflag0 = a.GtkSocketflag0 or - ((`have_size` shl bp_TGtkSocket_have_size) and bm_TGtkSocket_have_size) + (int16(`have_size` shl bp_TGtkSocket_have_size) and bm_TGtkSocket_have_size) proc need_map*(a: var TGtkSocket): guint = result = (a.GtkSocketflag0 and bm_TGtkSocket_need_map) shr bp_TGtkSocket_need_map proc set_need_map*(a: var TGtkSocket, `need_map`: guint) = a.GtkSocketflag0 = a.GtkSocketflag0 or - ((`need_map` shl bp_TGtkSocket_need_map) and bm_TGtkSocket_need_map) + (int16(`need_map` shl bp_TGtkSocket_need_map) and bm_TGtkSocket_need_map) proc is_mapped*(a: var TGtkSocket): guint = result = (a.GtkSocketflag0 and bm_TGtkSocket_is_mapped) shr bp_TGtkSocket_is_mapped proc set_is_mapped*(a: var TGtkSocket, `is_mapped`: guint) = a.GtkSocketflag0 = a.GtkSocketflag0 or - ((`is_mapped` shl bp_TGtkSocket_is_mapped) and bm_TGtkSocket_is_mapped) + (int16(`is_mapped` shl bp_TGtkSocket_is_mapped) and bm_TGtkSocket_is_mapped) proc GTK_TYPE_SPIN_BUTTON*(): GType = result = gtk_spin_button_get_type() @@ -15350,7 +15350,7 @@ proc has_resize_grip*(a: var TGtkStatusbar): guint = proc set_has_resize_grip*(a: var TGtkStatusbar, `has_resize_grip`: guint) = a.GtkStatusbarflag0 = a.GtkStatusbarflag0 or - ((`has_resize_grip` shl bp_TGtkStatusbar_has_resize_grip) and + (int16(`has_resize_grip` shl bp_TGtkStatusbar_has_resize_grip) and bm_TGtkStatusbar_has_resize_grip) proc GTK_TYPE_TABLE*(): GType = @@ -15377,7 +15377,7 @@ proc homogeneous*(a: var TGtkTable): guint = proc set_homogeneous*(a: var TGtkTable, `homogeneous`: guint) = a.GtkTableflag0 = a.GtkTableflag0 or - ((`homogeneous` shl bp_TGtkTable_homogeneous) and + (int16(`homogeneous` shl bp_TGtkTable_homogeneous) and bm_TGtkTable_homogeneous) proc xexpand*(a: var TGtkTableChild): guint = @@ -15386,7 +15386,7 @@ proc xexpand*(a: var TGtkTableChild): guint = proc set_xexpand*(a: var TGtkTableChild, `xexpand`: guint) = a.GtkTableChildflag0 = a.GtkTableChildflag0 or - ((`xexpand` shl bp_TGtkTableChild_xexpand) and + (int16(`xexpand` shl bp_TGtkTableChild_xexpand) and bm_TGtkTableChild_xexpand) proc yexpand*(a: var TGtkTableChild): guint = @@ -15395,7 +15395,7 @@ proc yexpand*(a: var TGtkTableChild): guint = proc set_yexpand*(a: var TGtkTableChild, `yexpand`: guint) = a.GtkTableChildflag0 = a.GtkTableChildflag0 or - ((`yexpand` shl bp_TGtkTableChild_yexpand) and + (int16(`yexpand` shl bp_TGtkTableChild_yexpand) and bm_TGtkTableChild_yexpand) proc xshrink*(a: var TGtkTableChild): guint = @@ -15404,7 +15404,7 @@ proc xshrink*(a: var TGtkTableChild): guint = proc set_xshrink*(a: var TGtkTableChild, `xshrink`: guint) = a.GtkTableChildflag0 = a.GtkTableChildflag0 or - ((`xshrink` shl bp_TGtkTableChild_xshrink) and + (int16(`xshrink` shl bp_TGtkTableChild_xshrink) and bm_TGtkTableChild_xshrink) proc yshrink*(a: var TGtkTableChild): guint = @@ -15413,7 +15413,7 @@ proc yshrink*(a: var TGtkTableChild): guint = proc set_yshrink*(a: var TGtkTableChild, `yshrink`: guint) = a.GtkTableChildflag0 = a.GtkTableChildflag0 or - ((`yshrink` shl bp_TGtkTableChild_yshrink) and + (int16(`yshrink` shl bp_TGtkTableChild_yshrink) and bm_TGtkTableChild_yshrink) proc xfill*(a: var TGtkTableChild): guint = @@ -15421,14 +15421,14 @@ proc xfill*(a: var TGtkTableChild): guint = proc set_xfill*(a: var TGtkTableChild, `xfill`: guint) = a.GtkTableChildflag0 = a.GtkTableChildflag0 or - ((`xfill` shl bp_TGtkTableChild_xfill) and bm_TGtkTableChild_xfill) + (int16(`xfill` shl bp_TGtkTableChild_xfill) and bm_TGtkTableChild_xfill) proc yfill*(a: var TGtkTableChild): guint = result = (a.GtkTableChildflag0 and bm_TGtkTableChild_yfill) shr bp_TGtkTableChild_yfill proc set_yfill*(a: var TGtkTableChild, `yfill`: guint) = a.GtkTableChildflag0 = a.GtkTableChildflag0 or - ((`yfill` shl bp_TGtkTableChild_yfill) and bm_TGtkTableChild_yfill) + (int16(`yfill` shl bp_TGtkTableChild_yfill) and bm_TGtkTableChild_yfill) proc need_expand*(a: var TGtkTableRowCol): guint = result = (a.flag0 and bm_TGtkTableRowCol_need_expand) shr @@ -15436,7 +15436,7 @@ proc need_expand*(a: var TGtkTableRowCol): guint = proc set_need_expand*(a: var TGtkTableRowCol, `need_expand`: guint) = a.flag0 = a.flag0 or - ((`need_expand` shl bp_TGtkTableRowCol_need_expand) and + (int16(`need_expand` shl bp_TGtkTableRowCol_need_expand) and bm_TGtkTableRowCol_need_expand) proc need_shrink*(a: var TGtkTableRowCol): guint = @@ -15445,7 +15445,7 @@ proc need_shrink*(a: var TGtkTableRowCol): guint = proc set_need_shrink*(a: var TGtkTableRowCol, `need_shrink`: guint) = a.flag0 = a.flag0 or - ((`need_shrink` shl bp_TGtkTableRowCol_need_shrink) and + (int16(`need_shrink` shl bp_TGtkTableRowCol_need_shrink) and bm_TGtkTableRowCol_need_shrink) proc expand*(a: var TGtkTableRowCol): guint = @@ -15454,7 +15454,7 @@ proc expand*(a: var TGtkTableRowCol): guint = proc set_expand*(a: var TGtkTableRowCol, `expand`: guint) = a.flag0 = a.flag0 or - ((`expand` shl bp_TGtkTableRowCol_expand) and bm_TGtkTableRowCol_expand) + (int16(`expand` shl bp_TGtkTableRowCol_expand) and bm_TGtkTableRowCol_expand) proc shrink*(a: var TGtkTableRowCol): guint = result = (a.flag0 and bm_TGtkTableRowCol_shrink) shr @@ -15462,7 +15462,7 @@ proc shrink*(a: var TGtkTableRowCol): guint = proc set_shrink*(a: var TGtkTableRowCol, `shrink`: guint) = a.flag0 = a.flag0 or - ((`shrink` shl bp_TGtkTableRowCol_shrink) and bm_TGtkTableRowCol_shrink) + (int16(`shrink` shl bp_TGtkTableRowCol_shrink) and bm_TGtkTableRowCol_shrink) proc empty*(a: var TGtkTableRowCol): guint = result = (a.flag0 and bm_TGtkTableRowCol_empty) shr @@ -15470,7 +15470,7 @@ proc empty*(a: var TGtkTableRowCol): guint = proc set_empty*(a: var TGtkTableRowCol, `empty`: guint) = a.flag0 = a.flag0 or - ((`empty` shl bp_TGtkTableRowCol_empty) and bm_TGtkTableRowCol_empty) + (int16(`empty` shl bp_TGtkTableRowCol_empty) and bm_TGtkTableRowCol_empty) proc GTK_TYPE_TEAROFF_MENU_ITEM*(): GType = result = gtk_tearoff_menu_item_get_type() @@ -15497,7 +15497,7 @@ proc torn_off*(a: var TGtkTearoffMenuItem): guint = proc set_torn_off*(a: var TGtkTearoffMenuItem, `torn_off`: guint) = a.GtkTearoffMenuItemflag0 = a.GtkTearoffMenuItemflag0 or - ((`torn_off` shl bp_TGtkTearoffMenuItem_torn_off) and + (int16(`torn_off` shl bp_TGtkTearoffMenuItem_torn_off) and bm_TGtkTearoffMenuItem_torn_off) proc GTK_TYPE_TEXT*(): GType = @@ -15523,18 +15523,18 @@ proc line_wrap*(a: PGtkText): guint = proc set_line_wrap*(a: PGtkText, `line_wrap`: guint) = a.GtkTextflag0 = a.GtkTextflag0 or - ((`line_wrap` shl bp_TGtkText_line_wrap) and bm_TGtkText_line_wrap) + (int16(`line_wrap` shl bp_TGtkText_line_wrap) and bm_TGtkText_line_wrap) proc word_wrap*(a: PGtkText): guint = result = (a . GtkTextflag0 and bm_TGtkText_word_wrap) shr bp_TGtkText_word_wrap proc set_word_wrap*(a: PGtkText, `word_wrap`: guint) = a.GtkTextflag0 = a.GtkTextflag0 or - ((`word_wrap` shl bp_TGtkText_word_wrap) and bm_TGtkText_word_wrap) + (int16(`word_wrap` shl bp_TGtkText_word_wrap) and bm_TGtkText_word_wrap) proc use_wchar*(a: PGtkText): gboolean = result = ((a.GtkTextflag0 and bm_TGtkText_use_wchar) shr bp_TGtkText_use_wchar) > - 0 + 0'i16 proc set_use_wchar*(a: PGtkText, `use_wchar`: gboolean) = if `use_wchar`: @@ -15787,7 +15787,7 @@ proc underline*(a: var TGtkTextAppearance): guint = proc set_underline*(a: var TGtkTextAppearance, `underline`: guint) = a.flag0 = a.flag0 or - ((`underline` shl bp_TGtkTextAppearance_underline) and + (int16(`underline` shl bp_TGtkTextAppearance_underline) and bm_TGtkTextAppearance_underline) proc strikethrough*(a: var TGtkTextAppearance): guint = @@ -15796,7 +15796,7 @@ proc strikethrough*(a: var TGtkTextAppearance): guint = proc set_strikethrough*(a: var TGtkTextAppearance, `strikethrough`: guint) = a.flag0 = a.flag0 or - ((`strikethrough` shl bp_TGtkTextAppearance_strikethrough) and + (int16(`strikethrough` shl bp_TGtkTextAppearance_strikethrough) and bm_TGtkTextAppearance_strikethrough) proc draw_bg*(a: var TGtkTextAppearance): guint = @@ -15805,7 +15805,7 @@ proc draw_bg*(a: var TGtkTextAppearance): guint = proc set_draw_bg*(a: var TGtkTextAppearance, `draw_bg`: guint) = a.flag0 = a.flag0 or - ((`draw_bg` shl bp_TGtkTextAppearance_draw_bg) and + (int16(`draw_bg` shl bp_TGtkTextAppearance_draw_bg) and bm_TGtkTextAppearance_draw_bg) proc inside_selection*(a: var TGtkTextAppearance): guint = @@ -15814,7 +15814,7 @@ proc inside_selection*(a: var TGtkTextAppearance): guint = proc set_inside_selection*(a: var TGtkTextAppearance, `inside_selection`: guint) = a.flag0 = a.flag0 or - ((`inside_selection` shl bp_TGtkTextAppearance_inside_selection) and + (int16(`inside_selection` shl bp_TGtkTextAppearance_inside_selection) and bm_TGtkTextAppearance_inside_selection) proc is_text*(a: var TGtkTextAppearance): guint = @@ -15823,7 +15823,7 @@ proc is_text*(a: var TGtkTextAppearance): guint = proc set_is_text*(a: var TGtkTextAppearance, `is_text`: guint) = a.flag0 = a.flag0 or - ((`is_text` shl bp_TGtkTextAppearance_is_text) and + (int16(`is_text` shl bp_TGtkTextAppearance_is_text) and bm_TGtkTextAppearance_is_text) proc pad1*(a: var TGtkTextAppearance): guint = @@ -15832,7 +15832,7 @@ proc pad1*(a: var TGtkTextAppearance): guint = proc set_pad1*(a: var TGtkTextAppearance, `pad1`: guint) = a.flag0 = a.flag0 or - ((`pad1` shl bp_TGtkTextAppearance_pad1) and bm_TGtkTextAppearance_pad1) + (int16(`pad1` shl bp_TGtkTextAppearance_pad1) and bm_TGtkTextAppearance_pad1) proc pad2*(a: var TGtkTextAppearance): guint = result = (a.flag0 and bm_TGtkTextAppearance_pad2) shr @@ -15840,7 +15840,7 @@ proc pad2*(a: var TGtkTextAppearance): guint = proc set_pad2*(a: var TGtkTextAppearance, `pad2`: guint) = a.flag0 = a.flag0 or - ((`pad2` shl bp_TGtkTextAppearance_pad2) and bm_TGtkTextAppearance_pad2) + (int16(`pad2` shl bp_TGtkTextAppearance_pad2) and bm_TGtkTextAppearance_pad2) proc pad3*(a: var TGtkTextAppearance): guint = result = (a.flag0 and bm_TGtkTextAppearance_pad3) shr @@ -15848,7 +15848,7 @@ proc pad3*(a: var TGtkTextAppearance): guint = proc set_pad3*(a: var TGtkTextAppearance, `pad3`: guint) = a.flag0 = a.flag0 or - ((`pad3` shl bp_TGtkTextAppearance_pad3) and bm_TGtkTextAppearance_pad3) + (int16(`pad3` shl bp_TGtkTextAppearance_pad3) and bm_TGtkTextAppearance_pad3) proc pad4*(a: var TGtkTextAppearance): guint = result = (a.flag0 and bm_TGtkTextAppearance_pad4) shr @@ -15856,7 +15856,7 @@ proc pad4*(a: var TGtkTextAppearance): guint = proc set_pad4*(a: var TGtkTextAppearance, `pad4`: guint) = a.flag0 = a.flag0 or - ((`pad4` shl bp_TGtkTextAppearance_pad4) and bm_TGtkTextAppearance_pad4) + (int16(`pad4` shl bp_TGtkTextAppearance_pad4) and bm_TGtkTextAppearance_pad4) proc invisible*(a: var TGtkTextAttributes): guint = result = (a.flag0 and bm_TGtkTextAttributes_invisible) shr @@ -15864,7 +15864,7 @@ proc invisible*(a: var TGtkTextAttributes): guint = proc set_invisible*(a: var TGtkTextAttributes, `invisible`: guint) = a.flag0 = a.flag0 or - ((`invisible` shl bp_TGtkTextAttributes_invisible) and + (int16(`invisible` shl bp_TGtkTextAttributes_invisible) and bm_TGtkTextAttributes_invisible) proc bg_full_height*(a: var TGtkTextAttributes): guint = @@ -15873,7 +15873,7 @@ proc bg_full_height*(a: var TGtkTextAttributes): guint = proc set_bg_full_height*(a: var TGtkTextAttributes, `bg_full_height`: guint) = a.flag0 = a.flag0 or - ((`bg_full_height` shl bp_TGtkTextAttributes_bg_full_height) and + (int16(`bg_full_height` shl bp_TGtkTextAttributes_bg_full_height) and bm_TGtkTextAttributes_bg_full_height) proc editable*(a: var TGtkTextAttributes): guint = @@ -15882,7 +15882,7 @@ proc editable*(a: var TGtkTextAttributes): guint = proc set_editable*(a: var TGtkTextAttributes, `editable`: guint) = a.flag0 = a.flag0 or - ((`editable` shl bp_TGtkTextAttributes_editable) and + (int16(`editable` shl bp_TGtkTextAttributes_editable) and bm_TGtkTextAttributes_editable) proc realized*(a: var TGtkTextAttributes): guint = @@ -15891,7 +15891,7 @@ proc realized*(a: var TGtkTextAttributes): guint = proc set_realized*(a: var TGtkTextAttributes, `realized`: guint) = a.flag0 = a.flag0 or - ((`realized` shl bp_TGtkTextAttributes_realized) and + (int16(`realized` shl bp_TGtkTextAttributes_realized) and bm_TGtkTextAttributes_realized) proc pad1*(a: var TGtkTextAttributes): guint = @@ -15900,7 +15900,7 @@ proc pad1*(a: var TGtkTextAttributes): guint = proc set_pad1*(a: var TGtkTextAttributes, `pad1`: guint) = a.flag0 = a.flag0 or - ((`pad1` shl bp_TGtkTextAttributes_pad1) and bm_TGtkTextAttributes_pad1) + (int16(`pad1` shl bp_TGtkTextAttributes_pad1) and bm_TGtkTextAttributes_pad1) proc pad2*(a: var TGtkTextAttributes): guint = result = (a.flag0 and bm_TGtkTextAttributes_pad2) shr @@ -15908,7 +15908,7 @@ proc pad2*(a: var TGtkTextAttributes): guint = proc set_pad2*(a: var TGtkTextAttributes, `pad2`: guint) = a.flag0 = a.flag0 or - ((`pad2` shl bp_TGtkTextAttributes_pad2) and bm_TGtkTextAttributes_pad2) + (int16(`pad2` shl bp_TGtkTextAttributes_pad2) and bm_TGtkTextAttributes_pad2) proc pad3*(a: var TGtkTextAttributes): guint = result = (a.flag0 and bm_TGtkTextAttributes_pad3) shr @@ -15916,7 +15916,7 @@ proc pad3*(a: var TGtkTextAttributes): guint = proc set_pad3*(a: var TGtkTextAttributes, `pad3`: guint) = a.flag0 = a.flag0 or - ((`pad3` shl bp_TGtkTextAttributes_pad3) and bm_TGtkTextAttributes_pad3) + (int16(`pad3` shl bp_TGtkTextAttributes_pad3) and bm_TGtkTextAttributes_pad3) proc pad4*(a: var TGtkTextAttributes): guint = result = (a.flag0 and bm_TGtkTextAttributes_pad4) shr @@ -15924,7 +15924,7 @@ proc pad4*(a: var TGtkTextAttributes): guint = proc set_pad4*(a: var TGtkTextAttributes, `pad4`: guint) = a.flag0 = a.flag0 or - ((`pad4` shl bp_TGtkTextAttributes_pad4) and bm_TGtkTextAttributes_pad4) + (int16(`pad4` shl bp_TGtkTextAttributes_pad4) and bm_TGtkTextAttributes_pad4) proc GTK_TYPE_TEXT_TAG_TABLE*(): GType = result = gtk_text_tag_table_get_type() @@ -15970,7 +15970,7 @@ proc visible*(a: var TGtkTextMarkBody): guint = proc set_visible*(a: var TGtkTextMarkBody, `visible`: guint) = a.flag0 = a.flag0 or - ((`visible` shl bp_TGtkTextMarkBody_visible) and + (int16(`visible` shl bp_TGtkTextMarkBody_visible) and bm_TGtkTextMarkBody_visible) proc not_deleteable*(a: var TGtkTextMarkBody): guint = @@ -15979,7 +15979,7 @@ proc not_deleteable*(a: var TGtkTextMarkBody): guint = proc set_not_deleteable*(a: var TGtkTextMarkBody, `not_deleteable`: guint) = a.flag0 = a.flag0 or - ((`not_deleteable` shl bp_TGtkTextMarkBody_not_deleteable) and + (int16(`not_deleteable` shl bp_TGtkTextMarkBody_not_deleteable) and bm_TGtkTextMarkBody_not_deleteable) proc GTK_TYPE_TEXT_CHILD_ANCHOR*(): GType = @@ -16043,7 +16043,7 @@ proc modified*(a: var TGtkTextBuffer): guint = proc set_modified*(a: var TGtkTextBuffer, `modified`: guint) = a.GtkTextBufferflag0 = a.GtkTextBufferflag0 or - ((`modified` shl bp_TGtkTextBuffer_modified) and + (int16(`modified` shl bp_TGtkTextBuffer_modified) and bm_TGtkTextBuffer_modified) proc GTK_TYPE_TEXT_LAYOUT*(): GType = @@ -16072,7 +16072,7 @@ proc cursor_visible*(a: var TGtkTextLayout): guint = proc set_cursor_visible*(a: var TGtkTextLayout, `cursor_visible`: guint) = a.GtkTextLayoutflag0 = a.GtkTextLayoutflag0 or - ((`cursor_visible` shl bp_TGtkTextLayout_cursor_visible) and + (int16(`cursor_visible` shl bp_TGtkTextLayout_cursor_visible) and bm_TGtkTextLayout_cursor_visible) proc cursor_direction*(a: var TGtkTextLayout): gint = @@ -16081,7 +16081,7 @@ proc cursor_direction*(a: var TGtkTextLayout): gint = proc set_cursor_direction*(a: var TGtkTextLayout, `cursor_direction`: gint) = a.GtkTextLayoutflag0 = a.GtkTextLayoutflag0 or - ((`cursor_direction` shl bp_TGtkTextLayout_cursor_direction) and + (int16(`cursor_direction` shl bp_TGtkTextLayout_cursor_direction) and bm_TGtkTextLayout_cursor_direction) proc is_strong*(a: var TGtkTextCursorDisplay): guint = @@ -16090,7 +16090,7 @@ proc is_strong*(a: var TGtkTextCursorDisplay): guint = proc set_is_strong*(a: var TGtkTextCursorDisplay, `is_strong`: guint) = a.flag0 = a.flag0 or - ((`is_strong` shl bp_TGtkTextCursorDisplay_is_strong) and + (int16(`is_strong` shl bp_TGtkTextCursorDisplay_is_strong) and bm_TGtkTextCursorDisplay_is_strong) proc is_weak*(a: var TGtkTextCursorDisplay): guint = @@ -16099,7 +16099,7 @@ proc is_weak*(a: var TGtkTextCursorDisplay): guint = proc set_is_weak*(a: var TGtkTextCursorDisplay, `is_weak`: guint) = a.flag0 = a.flag0 or - ((`is_weak` shl bp_TGtkTextCursorDisplay_is_weak) and + (int16(`is_weak` shl bp_TGtkTextCursorDisplay_is_weak) and bm_TGtkTextCursorDisplay_is_weak) proc GTK_TYPE_TEXT_VIEW*(): GType = @@ -16126,7 +16126,7 @@ proc editable*(a: var TGtkTextView): guint = proc set_editable*(a: var TGtkTextView, `editable`: guint) = a.GtkTextViewflag0 = a.GtkTextViewflag0 or - ((`editable` shl bp_TGtkTextView_editable) and bm_TGtkTextView_editable) + (int16(`editable` shl bp_TGtkTextView_editable) and bm_TGtkTextView_editable) proc overwrite_mode*(a: var TGtkTextView): guint = result = (a.GtkTextViewflag0 and bm_TGtkTextView_overwrite_mode) shr @@ -16134,7 +16134,7 @@ proc overwrite_mode*(a: var TGtkTextView): guint = proc set_overwrite_mode*(a: var TGtkTextView, `overwrite_mode`: guint) = a.GtkTextViewflag0 = a.GtkTextViewflag0 or - ((`overwrite_mode` shl bp_TGtkTextView_overwrite_mode) and + (int16(`overwrite_mode` shl bp_TGtkTextView_overwrite_mode) and bm_TGtkTextView_overwrite_mode) proc cursor_visible*(a: var TGtkTextView): guint = @@ -16143,7 +16143,7 @@ proc cursor_visible*(a: var TGtkTextView): guint = proc set_cursor_visible*(a: var TGtkTextView, `cursor_visible`: guint) = a.GtkTextViewflag0 = a.GtkTextViewflag0 or - ((`cursor_visible` shl bp_TGtkTextView_cursor_visible) and + (int16(`cursor_visible` shl bp_TGtkTextView_cursor_visible) and bm_TGtkTextView_cursor_visible) proc need_im_reset*(a: var TGtkTextView): guint = @@ -16152,7 +16152,7 @@ proc need_im_reset*(a: var TGtkTextView): guint = proc set_need_im_reset*(a: var TGtkTextView, `need_im_reset`: guint) = a.GtkTextViewflag0 = a.GtkTextViewflag0 or - ((`need_im_reset` shl bp_TGtkTextView_need_im_reset) and + (int16(`need_im_reset` shl bp_TGtkTextView_need_im_reset) and bm_TGtkTextView_need_im_reset) proc just_selected_element*(a: var TGtkTextView): guint = @@ -16162,7 +16162,7 @@ proc just_selected_element*(a: var TGtkTextView): guint = proc set_just_selected_element*(a: var TGtkTextView, `just_selected_element`: guint) = a.GtkTextViewflag0 = a.GtkTextViewflag0 or - ((`just_selected_element` shl bp_TGtkTextView_just_selected_element) and + (int16(`just_selected_element` shl bp_TGtkTextView_just_selected_element) and bm_TGtkTextView_just_selected_element) proc disable_scroll_on_focus*(a: var TGtkTextView): guint = @@ -16172,7 +16172,7 @@ proc disable_scroll_on_focus*(a: var TGtkTextView): guint = proc set_disable_scroll_on_focus*(a: var TGtkTextView, `disable_scroll_on_focus`: guint) = a.GtkTextViewflag0 = a.GtkTextViewflag0 or - ((`disable_scroll_on_focus` shl bp_TGtkTextView_disable_scroll_on_focus) and + (int16(`disable_scroll_on_focus` shl bp_TGtkTextView_disable_scroll_on_focus) and bm_TGtkTextView_disable_scroll_on_focus) proc onscreen_validated*(a: var TGtkTextView): guint = @@ -16181,7 +16181,7 @@ proc onscreen_validated*(a: var TGtkTextView): guint = proc set_onscreen_validated*(a: var TGtkTextView, `onscreen_validated`: guint) = a.GtkTextViewflag0 = a.GtkTextViewflag0 or - ((`onscreen_validated` shl bp_TGtkTextView_onscreen_validated) and + (int16(`onscreen_validated` shl bp_TGtkTextView_onscreen_validated) and bm_TGtkTextView_onscreen_validated) proc mouse_cursor_obscured*(a: var TGtkTextView): guint = @@ -16191,7 +16191,7 @@ proc mouse_cursor_obscured*(a: var TGtkTextView): guint = proc set_mouse_cursor_obscured*(a: var TGtkTextView, `mouse_cursor_obscured`: guint) = a.GtkTextViewflag0 = a.GtkTextViewflag0 or - ((`mouse_cursor_obscured` shl bp_TGtkTextView_mouse_cursor_obscured) and + (int16(`mouse_cursor_obscured` shl bp_TGtkTextView_mouse_cursor_obscured) and bm_TGtkTextView_mouse_cursor_obscured) proc GTK_TYPE_TIPS_QUERY*(): GType = @@ -16218,7 +16218,7 @@ proc emit_always*(a: var TGtkTipsQuery): guint = proc set_emit_always*(a: var TGtkTipsQuery, `emit_always`: guint) = a.GtkTipsQueryflag0 = a.GtkTipsQueryflag0 or - ((`emit_always` shl bp_TGtkTipsQuery_emit_always) and + (int16(`emit_always` shl bp_TGtkTipsQuery_emit_always) and bm_TGtkTipsQuery_emit_always) proc in_query*(a: var TGtkTipsQuery): guint = @@ -16227,7 +16227,7 @@ proc in_query*(a: var TGtkTipsQuery): guint = proc set_in_query*(a: var TGtkTipsQuery, `in_query`: guint) = a.GtkTipsQueryflag0 = a.GtkTipsQueryflag0 or - ((`in_query` shl bp_TGtkTipsQuery_in_query) and + (int16(`in_query` shl bp_TGtkTipsQuery_in_query) and bm_TGtkTipsQuery_in_query) proc GTK_TYPE_TOOLTIPS*(): GType = @@ -16304,7 +16304,7 @@ proc style_set*(a: var TGtkToolbar): guint = proc set_style_set*(a: var TGtkToolbar, `style_set`: guint) = a.GtkToolbarflag0 = a.GtkToolbarflag0 or - ((`style_set` shl bp_TGtkToolbar_style_set) and + (int16(`style_set` shl bp_TGtkToolbar_style_set) and bm_TGtkToolbar_style_set) proc icon_size_set*(a: var TGtkToolbar): guint = @@ -16313,7 +16313,7 @@ proc icon_size_set*(a: var TGtkToolbar): guint = proc set_icon_size_set*(a: var TGtkToolbar, `icon_size_set`: guint) = a.GtkToolbarflag0 = a.GtkToolbarflag0 or - ((`icon_size_set` shl bp_TGtkToolbar_icon_size_set) and + (int16(`icon_size_set` shl bp_TGtkToolbar_icon_size_set) and bm_TGtkToolbar_icon_size_set) proc GTK_TYPE_TREE*(): GType = @@ -16350,7 +16350,7 @@ proc selection_mode*(a: var TGtkTree): guint = proc set_selection_mode*(a: var TGtkTree, `selection_mode`: guint) = a.GtkTreeflag0 = a.GtkTreeflag0 or - ((`selection_mode` shl bp_TGtkTree_selection_mode) and + (int16(`selection_mode` shl bp_TGtkTree_selection_mode) and bm_TGtkTree_selection_mode) proc view_mode*(a: var TGtkTree): guint = @@ -16358,14 +16358,14 @@ proc view_mode*(a: var TGtkTree): guint = proc set_view_mode*(a: var TGtkTree, `view_mode`: guint) = a.GtkTreeflag0 = a.GtkTreeflag0 or - ((`view_mode` shl bp_TGtkTree_view_mode) and bm_TGtkTree_view_mode) + (int16(`view_mode` shl bp_TGtkTree_view_mode) and bm_TGtkTree_view_mode) proc view_line*(a: var TGtkTree): guint = result = (a.GtkTreeflag0 and bm_TGtkTree_view_line) shr bp_TGtkTree_view_line proc set_view_line*(a: var TGtkTree, `view_line`: guint) = a.GtkTreeflag0 = a.GtkTreeflag0 or - ((`view_line` shl bp_TGtkTree_view_line) and bm_TGtkTree_view_line) + (int16(`view_line` shl bp_TGtkTree_view_line) and bm_TGtkTree_view_line) proc GTK_TYPE_TREE_DRAG_SOURCE*(): GType = result = gtk_tree_drag_source_get_type() @@ -16422,7 +16422,7 @@ proc expanded*(a: var TGtkTreeItem): guint = proc set_expanded*(a: var TGtkTreeItem, `expanded`: guint) = a.GtkTreeItemflag0 = a.GtkTreeItemflag0 or - ((`expanded` shl bp_TGtkTreeItem_expanded) and bm_TGtkTreeItem_expanded) + (int16(`expanded` shl bp_TGtkTreeItem_expanded) and bm_TGtkTreeItem_expanded) proc GTK_TYPE_TREE_SELECTION*(): GType = result = gtk_tree_selection_get_type() @@ -16468,7 +16468,7 @@ proc columns_dirty*(a: var TGtkTreeStore): guint = proc set_columns_dirty*(a: var TGtkTreeStore, `columns_dirty`: guint) = a.GtkTreeStoreflag0 = a.GtkTreeStoreflag0 or - ((`columns_dirty` shl bp_TGtkTreeStore_columns_dirty) and + (int16(`columns_dirty` shl bp_TGtkTreeStore_columns_dirty) and bm_TGtkTreeStore_columns_dirty) proc GTK_TYPE_TREE_VIEW_COLUMN*(): GType = @@ -16497,7 +16497,7 @@ proc visible*(a: var TGtkTreeViewColumn): guint = proc set_visible*(a: var TGtkTreeViewColumn, `visible`: guint) = a.GtkTreeViewColumnflag0 = a.GtkTreeViewColumnflag0 or - ((`visible` shl bp_TGtkTreeViewColumn_visible) and + (int16(`visible` shl bp_TGtkTreeViewColumn_visible) and bm_TGtkTreeViewColumn_visible) proc resizable*(a: var TGtkTreeViewColumn): guint = @@ -16506,7 +16506,7 @@ proc resizable*(a: var TGtkTreeViewColumn): guint = proc set_resizable*(a: var TGtkTreeViewColumn, `resizable`: guint) = a.GtkTreeViewColumnflag0 = a.GtkTreeViewColumnflag0 or - ((`resizable` shl bp_TGtkTreeViewColumn_resizable) and + (int16(`resizable` shl bp_TGtkTreeViewColumn_resizable) and bm_TGtkTreeViewColumn_resizable) proc clickable*(a: var TGtkTreeViewColumn): guint = @@ -16515,7 +16515,7 @@ proc clickable*(a: var TGtkTreeViewColumn): guint = proc set_clickable*(a: var TGtkTreeViewColumn, `clickable`: guint) = a.GtkTreeViewColumnflag0 = a.GtkTreeViewColumnflag0 or - ((`clickable` shl bp_TGtkTreeViewColumn_clickable) and + (int16(`clickable` shl bp_TGtkTreeViewColumn_clickable) and bm_TGtkTreeViewColumn_clickable) proc dirty*(a: var TGtkTreeViewColumn): guint = @@ -16524,7 +16524,7 @@ proc dirty*(a: var TGtkTreeViewColumn): guint = proc set_dirty*(a: var TGtkTreeViewColumn, `dirty`: guint) = a.GtkTreeViewColumnflag0 = a.GtkTreeViewColumnflag0 or - ((`dirty` shl bp_TGtkTreeViewColumn_dirty) and + (int16(`dirty` shl bp_TGtkTreeViewColumn_dirty) and bm_TGtkTreeViewColumn_dirty) proc show_sort_indicator*(a: var TGtkTreeViewColumn): guint = @@ -16534,7 +16534,7 @@ proc show_sort_indicator*(a: var TGtkTreeViewColumn): guint = proc set_show_sort_indicator*(a: var TGtkTreeViewColumn, `show_sort_indicator`: guint) = a.GtkTreeViewColumnflag0 = a.GtkTreeViewColumnflag0 or - ((`show_sort_indicator` shl bp_TGtkTreeViewColumn_show_sort_indicator) and + (int16(`show_sort_indicator` shl bp_TGtkTreeViewColumn_show_sort_indicator) and bm_TGtkTreeViewColumn_show_sort_indicator) proc maybe_reordered*(a: var TGtkTreeViewColumn): guint = @@ -16543,7 +16543,7 @@ proc maybe_reordered*(a: var TGtkTreeViewColumn): guint = proc set_maybe_reordered*(a: var TGtkTreeViewColumn, `maybe_reordered`: guint) = a.GtkTreeViewColumnflag0 = a.GtkTreeViewColumnflag0 or - ((`maybe_reordered` shl bp_TGtkTreeViewColumn_maybe_reordered) and + (int16(`maybe_reordered` shl bp_TGtkTreeViewColumn_maybe_reordered) and bm_TGtkTreeViewColumn_maybe_reordered) proc reorderable*(a: var TGtkTreeViewColumn): guint = @@ -16552,7 +16552,7 @@ proc reorderable*(a: var TGtkTreeViewColumn): guint = proc set_reorderable*(a: var TGtkTreeViewColumn, `reorderable`: guint) = a.GtkTreeViewColumnflag0 = a.GtkTreeViewColumnflag0 or - ((`reorderable` shl bp_TGtkTreeViewColumn_reorderable) and + (int16(`reorderable` shl bp_TGtkTreeViewColumn_reorderable) and bm_TGtkTreeViewColumn_reorderable) proc use_resized_width*(a: var TGtkTreeViewColumn): guint = @@ -16562,7 +16562,7 @@ proc use_resized_width*(a: var TGtkTreeViewColumn): guint = proc set_use_resized_width*(a: var TGtkTreeViewColumn, `use_resized_width`: guint) = a.GtkTreeViewColumnflag0 = a.GtkTreeViewColumnflag0 or - ((`use_resized_width` shl bp_TGtkTreeViewColumn_use_resized_width) and + (int16(`use_resized_width` shl bp_TGtkTreeViewColumn_use_resized_width) and bm_TGtkTreeViewColumn_use_resized_width) proc flags*(a: PGtkRBNode): guint = @@ -16570,19 +16570,19 @@ proc flags*(a: PGtkRBNode): guint = proc set_flags*(a: PGtkRBNode, `flags`: guint) = a . flag0 = a . - flag0 or ((`flags` shl bp_TGtkRBNode_flags) and bm_TGtkRBNode_flags) + flag0 or (int16(`flags` shl bp_TGtkRBNode_flags) and bm_TGtkRBNode_flags) proc parity*(a: PGtkRBNode): guint = result = (a . flag0 and bm_TGtkRBNode_parity) shr bp_TGtkRBNode_parity proc set_parity*(a: PGtkRBNode, `parity`: guint) = a . flag0 = a . - flag0 or ((`parity` shl bp_TGtkRBNode_parity) and bm_TGtkRBNode_parity) + flag0 or (int16(`parity` shl bp_TGtkRBNode_parity) and bm_TGtkRBNode_parity) proc GTK_RBNODE_GET_COLOR*(node_: PGtkRBNode): guint = if node_ == nil: Result = GTK_RBNODE_BLACK - elif (flags(node_) and GTK_RBNODE_RED) == GTK_RBNODE_RED: + elif (int(flags(node_)) and GTK_RBNODE_RED) == GTK_RBNODE_RED: Result = GTK_RBNODE_RED else: Result = GTK_RBNODE_BLACK @@ -16590,8 +16590,8 @@ proc GTK_RBNODE_GET_COLOR*(node_: PGtkRBNode): guint = proc GTK_RBNODE_SET_COLOR*(node_: PGtkRBNode, color: guint) = if node_ == nil: return - if ((flags(node_) and int(color)) != color): - set_flags(node_, flags(node_) xor (GTK_RBNODE_RED or GTK_RBNODE_BLACK)) + if ((flags(node_) and (color)) != color): + set_flags(node_, flags(node_) xor cint(GTK_RBNODE_RED or GTK_RBNODE_BLACK)) proc GTK_RBNODE_GET_HEIGHT*(node_: PGtkRBNode): gint = var if_local1: gint @@ -16599,19 +16599,19 @@ proc GTK_RBNODE_GET_HEIGHT*(node_: PGtkRBNode): gint = if_local1 = node_.children.root.offset else: if_local1 = 0 - result = node_.offset - (int(node_.left.offset) + node_.right.offset + if_local1) + result = node_.offset - ((node_.left.offset) + node_.right.offset + if_local1) proc GTK_RBNODE_FLAG_SET*(node_: PGtkRBNode, flag: guint): bool = - result = (node_ != nil) and ((flags(node_) and int(flag)) == flag) + result = (node_ != nil) and ((flags(node_) and (flag)) == flag) proc GTK_RBNODE_SET_FLAG*(node_: PGtkRBNode, flag: guint16) = - set_flags(node_, int(flag) or flags(node_)) + set_flags(node_, (flag) or flags(node_)) proc GTK_RBNODE_UNSET_FLAG*(node_: PGtkRBNode, flag: guint16) = - set_flags(node_, (not int(flag)) and flags(node_)) + set_flags(node_, (not (flag)) and flags(node_)) proc GTK_TREE_VIEW_FLAG_SET*(tree_view: PGtkTreeView, flag: guint): bool = - result = ((tree_view.priv.flags) and int(flag)) == flag + result = ((tree_view.priv.flags) and (flag)) == flag proc TREE_VIEW_HEADER_HEIGHT*(tree_view: PGtkTreeView): int32 = var if_local1: int32 @@ -16623,23 +16623,22 @@ proc TREE_VIEW_HEADER_HEIGHT*(tree_view: PGtkTreeView): int32 = proc TREE_VIEW_COLUMN_REQUESTED_WIDTH*(column: PGtkTreeViewColumn): int32 = var MinWidth, MaxWidth: int - if column . min_width != - 1: - MinWidth = column . min_width + if column.min_width != -1'i32: + MinWidth = column.min_width else: - MinWidth = column . requested_width - if column . max_width != - 1: - MaxWidth = column . max_width + MinWidth = column.requested_width + if column.max_width != - 1'i32: + MaxWidth = column.max_width else: - MaxWidth = column . requested_width - result = CLAMP(column . requested_width, MinWidth, - MaxWidth) + MaxWidth = column.requested_width + result = CLAMP(column.requested_width, MinWidth, MaxWidth) proc TREE_VIEW_DRAW_EXPANDERS*(tree_view: PGtkTreeView): bool = result = (not (GTK_TREE_VIEW_FLAG_SET(tree_view, GTK_TREE_VIEW_IS_LIST))) and (GTK_TREE_VIEW_FLAG_SET(tree_view, GTK_TREE_VIEW_SHOW_EXPANDERS)) proc TREE_VIEW_COLUMN_DRAG_DEAD_MULTIPLIER*(tree_view: PGtkTreeView): int32 = - result = 10 * (TREE_VIEW_HEADER_HEIGHT(tree_view)) + result = 10'i32 * (TREE_VIEW_HEADER_HEIGHT(tree_view)) proc scroll_to_use_align*(a: var TGtkTreeViewPrivate): guint = result = (a.flag0 and bm_TGtkTreeViewPrivate_scroll_to_use_align) shr @@ -16648,7 +16647,7 @@ proc scroll_to_use_align*(a: var TGtkTreeViewPrivate): guint = proc set_scroll_to_use_align*(a: var TGtkTreeViewPrivate, `scroll_to_use_align`: guint) = a.flag0 = a.flag0 or - ((`scroll_to_use_align` shl bp_TGtkTreeViewPrivate_scroll_to_use_align) and + (int16(`scroll_to_use_align` shl bp_TGtkTreeViewPrivate_scroll_to_use_align) and bm_TGtkTreeViewPrivate_scroll_to_use_align) proc fixed_height_check*(a: var TGtkTreeViewPrivate): guint = @@ -16658,7 +16657,7 @@ proc fixed_height_check*(a: var TGtkTreeViewPrivate): guint = proc set_fixed_height_check*(a: var TGtkTreeViewPrivate, `fixed_height_check`: guint) = a.flag0 = a.flag0 or - ((`fixed_height_check` shl bp_TGtkTreeViewPrivate_fixed_height_check) and + (int16(`fixed_height_check` shl bp_TGtkTreeViewPrivate_fixed_height_check) and bm_TGtkTreeViewPrivate_fixed_height_check) proc reorderable*(a: var TGtkTreeViewPrivate): guint = @@ -16667,7 +16666,7 @@ proc reorderable*(a: var TGtkTreeViewPrivate): guint = proc set_reorderable*(a: var TGtkTreeViewPrivate, `reorderable`: guint) = a.flag0 = a.flag0 or - ((`reorderable` shl bp_TGtkTreeViewPrivate_reorderable) and + (int16(`reorderable` shl bp_TGtkTreeViewPrivate_reorderable) and bm_TGtkTreeViewPrivate_reorderable) proc header_has_focus*(a: var TGtkTreeViewPrivate): guint = @@ -16676,7 +16675,7 @@ proc header_has_focus*(a: var TGtkTreeViewPrivate): guint = proc set_header_has_focus*(a: var TGtkTreeViewPrivate, `header_has_focus`: guint) = a.flag0 = a.flag0 or - ((`header_has_focus` shl bp_TGtkTreeViewPrivate_header_has_focus) and + (int16(`header_has_focus` shl bp_TGtkTreeViewPrivate_header_has_focus) and bm_TGtkTreeViewPrivate_header_has_focus) proc drag_column_window_state*(a: var TGtkTreeViewPrivate): guint = @@ -16686,7 +16685,7 @@ proc drag_column_window_state*(a: var TGtkTreeViewPrivate): guint = proc set_drag_column_window_state*(a: var TGtkTreeViewPrivate, `drag_column_window_state`: guint) = a.flag0 = a.flag0 or - ((`drag_column_window_state` shl + (int16(`drag_column_window_state` shl bp_TGtkTreeViewPrivate_drag_column_window_state) and bm_TGtkTreeViewPrivate_drag_column_window_state) @@ -16696,7 +16695,7 @@ proc has_rules*(a: var TGtkTreeViewPrivate): guint = proc set_has_rules*(a: var TGtkTreeViewPrivate, `has_rules`: guint) = a.flag0 = a.flag0 or - ((`has_rules` shl bp_TGtkTreeViewPrivate_has_rules) and + (int16(`has_rules` shl bp_TGtkTreeViewPrivate_has_rules) and bm_TGtkTreeViewPrivate_has_rules) proc mark_rows_col_dirty*(a: var TGtkTreeViewPrivate): guint = @@ -16706,7 +16705,7 @@ proc mark_rows_col_dirty*(a: var TGtkTreeViewPrivate): guint = proc set_mark_rows_col_dirty*(a: var TGtkTreeViewPrivate, `mark_rows_col_dirty`: guint) = a.flag0 = a.flag0 or - ((`mark_rows_col_dirty` shl bp_TGtkTreeViewPrivate_mark_rows_col_dirty) and + (int16(`mark_rows_col_dirty` shl bp_TGtkTreeViewPrivate_mark_rows_col_dirty) and bm_TGtkTreeViewPrivate_mark_rows_col_dirty) proc enable_search*(a: var TGtkTreeViewPrivate): guint = @@ -16715,7 +16714,7 @@ proc enable_search*(a: var TGtkTreeViewPrivate): guint = proc set_enable_search*(a: var TGtkTreeViewPrivate, `enable_search`: guint) = a.flag0 = a.flag0 or - ((`enable_search` shl bp_TGtkTreeViewPrivate_enable_search) and + (int16(`enable_search` shl bp_TGtkTreeViewPrivate_enable_search) and bm_TGtkTreeViewPrivate_enable_search) proc disable_popdown*(a: var TGtkTreeViewPrivate): guint = @@ -16724,14 +16723,14 @@ proc disable_popdown*(a: var TGtkTreeViewPrivate): guint = proc set_disable_popdown*(a: var TGtkTreeViewPrivate, `disable_popdown`: guint) = a.flag0 = a.flag0 or - ((`disable_popdown` shl bp_TGtkTreeViewPrivate_disable_popdown) and + (int16(`disable_popdown` shl bp_TGtkTreeViewPrivate_disable_popdown) and bm_TGtkTreeViewPrivate_disable_popdown) proc GTK_TREE_VIEW_SET_FLAG*(tree_view: PGtkTreeView, flag: guint) = - tree_view . priv . flags = tree_view . priv . flags or int(flag) + tree_view . priv . flags = tree_view . priv . flags or (flag) proc GTK_TREE_VIEW_UNSET_FLAG*(tree_view: PGtkTreeView, flag: guint) = - tree_view . priv . flags = tree_view . priv . flags and not int(flag) + tree_view . priv . flags = tree_view . priv . flags and not (flag) proc GTK_TYPE_TREE_VIEW*(): GType = result = gtk_tree_view_get_type() diff --git a/lib/base/gtk/libglade2.nim b/lib/base/gtk/libglade2.nim index 18e76584b..cc90b0623 100644 --- a/lib/base/gtk/libglade2.nim +++ b/lib/base/gtk/libglade2.nim @@ -1,14 +1,13 @@ -import +import glib2, gtk2 -when defined(win32): - {.define: gtkwin.} - const +when defined(win32): + const LibGladeLib = "libglade-2.0-0.dll" -else: - const +else: + const LibGladeLib = "libglade-2.0.so" -type +type PLongint* = ptr int32 PSmallInt* = ptr int16 PByte* = ptr int8 @@ -17,11 +16,11 @@ type PDouble* = ptr float64 proc glade_init*(){.cdecl, dynlib: LibGladeLib, importc: "glade_init".} -proc glade_require*(TheLibrary: cstring){.cdecl, dynlib: LibGladeLib, +proc glade_require*(TheLibrary: cstring){.cdecl, dynlib: LibGladeLib, importc: "glade_require".} -proc glade_provide*(TheLibrary: cstring){.cdecl, dynlib: LibGladeLib, +proc glade_provide*(TheLibrary: cstring){.cdecl, dynlib: LibGladeLib, importc: "glade_provide".} -type +type PGladeXMLPrivate* = pointer PGladeXML* = ptr TGladeXML TGladeXML* = object of TGObject @@ -31,9 +30,9 @@ type PGladeXMLClass* = ptr TGladeXMLClass TGladeXMLClass* = object of TGObjectClass - TGladeXMLConnectFunc* = proc (handler_name: cstring, anObject: PGObject, - signal_name: cstring, signal_data: cstring, - connect_object: PGObject, after: gboolean, + TGladeXMLConnectFunc* = proc (handler_name: cstring, anObject: PGObject, + signal_name: cstring, signal_data: cstring, + connect_object: PGObject, after: gboolean, user_data: gpointer){.cdecl.} proc GLADE_TYPE_XML*(): GType @@ -42,76 +41,76 @@ proc GLADE_XML_CLASS*(klass: pointer): PGladeXMLClass proc GLADE_IS_XML*(obj: pointer): gboolean proc GLADE_IS_XML_CLASS*(klass: pointer): gboolean proc GLADE_XML_GET_CLASS*(obj: pointer): PGladeXMLClass -proc glade_xml_get_type*(): GType{.cdecl, dynlib: LibGladeLib, +proc glade_xml_get_type*(): GType{.cdecl, dynlib: LibGladeLib, importc: "glade_xml_get_type".} proc glade_xml_new*(fname: cstring, root: cstring, domain: cstring): PGladeXML{. cdecl, dynlib: LibGladeLib, importc: "glade_xml_new".} -proc glade_xml_new_from_buffer*(buffer: cstring, size: int32, root: cstring, - domain: cstring): PGladeXML{.cdecl, +proc glade_xml_new_from_buffer*(buffer: cstring, size: int32, root: cstring, + domain: cstring): PGladeXML{.cdecl, dynlib: LibGladeLib, importc: "glade_xml_new_from_buffer".} -proc glade_xml_construct*(self: PGladeXML, fname: cstring, root: cstring, - domain: cstring): gboolean{.cdecl, +proc glade_xml_construct*(self: PGladeXML, fname: cstring, root: cstring, + domain: cstring): gboolean{.cdecl, dynlib: LibGladeLib, importc: "glade_xml_construct".} -proc glade_xml_signal_connect*(self: PGladeXML, handlername: cstring, - func: TGCallback){.cdecl, dynlib: LibGladeLib, +proc glade_xml_signal_connect*(self: PGladeXML, handlername: cstring, + func: TGCallback){.cdecl, dynlib: LibGladeLib, importc: "glade_xml_signal_connect".} -proc glade_xml_signal_connect_data*(self: PGladeXML, handlername: cstring, +proc glade_xml_signal_connect_data*(self: PGladeXML, handlername: cstring, func: TGCallback, user_data: gpointer){. cdecl, dynlib: LibGladeLib, importc: "glade_xml_signal_connect_data".} -proc glade_xml_signal_autoconnect*(self: PGladeXML){.cdecl, dynlib: LibGladeLib, +proc glade_xml_signal_autoconnect*(self: PGladeXML){.cdecl, dynlib: LibGladeLib, importc: "glade_xml_signal_autoconnect".} -proc glade_xml_signal_connect_full*(self: PGladeXML, handler_name: cstring, - func: TGladeXMLConnectFunc, - user_data: gpointer){.cdecl, +proc glade_xml_signal_connect_full*(self: PGladeXML, handler_name: cstring, + func: TGladeXMLConnectFunc, + user_data: gpointer){.cdecl, dynlib: LibGladeLib, importc: "glade_xml_signal_connect_full".} -proc glade_xml_signal_autoconnect_full*(self: PGladeXML, - func: TGladeXMLConnectFunc, - user_data: gpointer){.cdecl, +proc glade_xml_signal_autoconnect_full*(self: PGladeXML, + func: TGladeXMLConnectFunc, + user_data: gpointer){.cdecl, dynlib: LibGladeLib, importc: "glade_xml_signal_autoconnect_full".} -proc glade_xml_get_widget*(self: PGladeXML, name: cstring): PGtkWidget{.cdecl, +proc glade_xml_get_widget*(self: PGladeXML, name: cstring): PGtkWidget{.cdecl, dynlib: LibGladeLib, importc: "glade_xml_get_widget".} proc glade_xml_get_widget_prefix*(self: PGladeXML, name: cstring): PGList{. cdecl, dynlib: LibGladeLib, importc: "glade_xml_get_widget_prefix".} -proc glade_xml_relative_file*(self: PGladeXML, filename: cstring): cstring{.cdecl, +proc glade_xml_relative_file*(self: PGladeXML, filename: cstring): cstring{.cdecl, dynlib: LibGladeLib, importc: "glade_xml_relative_file".} -proc glade_get_widget_name*(widget: PGtkWidget): cstring{.cdecl, +proc glade_get_widget_name*(widget: PGtkWidget): cstring{.cdecl, dynlib: LibGladeLib, importc: "glade_get_widget_name".} -proc glade_get_widget_tree*(widget: PGtkWidget): PGladeXML{.cdecl, +proc glade_get_widget_tree*(widget: PGtkWidget): PGladeXML{.cdecl, dynlib: LibGladeLib, importc: "glade_get_widget_tree".} -type +type PGladeXMLCustomWidgetHandler* = ptr TGladeXMLCustomWidgetHandler TGladeXMLCustomWidgetHandler* = TGtkWidget -proc glade_set_custom_handler*(handler: TGladeXMLCustomWidgetHandler, - user_data: gpointer){.cdecl, dynlib: LibGladeLib, +proc glade_set_custom_handler*(handler: TGladeXMLCustomWidgetHandler, + user_data: gpointer){.cdecl, dynlib: LibGladeLib, importc: "glade_set_custom_handler".} -proc glade_gnome_init*() = +proc glade_gnome_init*() = glade_init() -proc glade_bonobo_init*() = +proc glade_bonobo_init*() = glade_init() -proc glade_xml_new_with_domain*(fname: cstring, root: cstring, domain: cstring): PGladeXML = +proc glade_xml_new_with_domain*(fname: cstring, root: cstring, domain: cstring): PGladeXML = result = glade_xml_new(fname, root, domain) -proc glade_xml_new_from_memory*(buffer: cstring, size: int32, root: cstring, - domain: cstring): PGladeXML = +proc glade_xml_new_from_memory*(buffer: cstring, size: int32, root: cstring, + domain: cstring): PGladeXML = result = glade_xml_new_from_buffer(buffer, size, root, domain) -proc GLADE_TYPE_XML*(): GType = +proc GLADE_TYPE_XML*(): GType = result = glade_xml_get_type() -proc GLADE_XML*(obj: pointer): PGladeXML = +proc GLADE_XML*(obj: pointer): PGladeXML = result = cast[PGladeXML](G_TYPE_CHECK_INSTANCE_CAST(obj, GLADE_TYPE_XML())) -proc GLADE_XML_CLASS*(klass: pointer): PGladeXMLClass = +proc GLADE_XML_CLASS*(klass: pointer): PGladeXMLClass = result = cast[PGladeXMLClass](G_TYPE_CHECK_CLASS_CAST(klass, GLADE_TYPE_XML())) -proc GLADE_IS_XML*(obj: pointer): gboolean = +proc GLADE_IS_XML*(obj: pointer): gboolean = result = G_TYPE_CHECK_INSTANCE_TYPE(obj, GLADE_TYPE_XML()) -proc GLADE_IS_XML_CLASS*(klass: pointer): gboolean = +proc GLADE_IS_XML_CLASS*(klass: pointer): gboolean = result = G_TYPE_CHECK_CLASS_TYPE(klass, GLADE_TYPE_XML()) -proc GLADE_XML_GET_CLASS*(obj: pointer): PGladeXMLClass = +proc GLADE_XML_GET_CLASS*(obj: pointer): PGladeXMLClass = result = cast[PGladeXMLClass](G_TYPE_INSTANCE_GET_CLASS(obj, GLADE_TYPE_XML())) diff --git a/lib/base/gtk/pango.nim b/lib/base/gtk/pango.nim index 142ab4aa2..363d02cd6 100644 --- a/lib/base/gtk/pango.nim +++ b/lib/base/gtk/pango.nim @@ -1,21 +1,18 @@ -import +import glib2 -{.define: PANGO_ENABLE_ENGINE.} -{.define: PANGO_ENABLE_BACKEND.} -when defined(win32): - {.define: pangowin.} - const +when defined(win32): + const pangolib* = "libpango-1.0-0.dll" -else: - const +else: + const pangolib* = "libpango-1.0.so.0" -type +type PPangoFont* = pointer PPangoFontFamily* = pointer PPangoFontset* = pointer PPangoFontMetrics* = pointer - PPangoFontFace* = pointer + PPangoFontFace* = pointer PPangoFontMap* = pointer PPangoFontsetClass* = pointer PPangoFontFamilyClass* = pointer @@ -50,18 +47,18 @@ type PPangoGlyph* = ptr TPangoGlyph TPangoGlyph* = guint32 PPangoRectangle* = ptr TPangoRectangle - TPangoRectangle* {.final.} = object + TPangoRectangle* {.final.} = object x*: int32 y*: int32 width*: int32 height*: int32 PPangoDirection* = ptr TPangoDirection - TPangoDirection* = enum - PANGO_DIRECTION_LTR, PANGO_DIRECTION_RTL, PANGO_DIRECTION_TTB_LTR, + TPangoDirection* = enum + PANGO_DIRECTION_LTR, PANGO_DIRECTION_RTL, PANGO_DIRECTION_TTB_LTR, PANGO_DIRECTION_TTB_RTL PPangoColor* = ptr TPangoColor - TPangoColor* {.final.} = object + TPangoColor* {.final.} = object red*: guint16 green*: guint16 blue*: guint16 @@ -72,12 +69,12 @@ type TPangoUnderline* = int32 PPangoAttribute* = ptr TPangoAttribute PPangoAttrClass* = ptr TPangoAttrClass - TPangoAttribute* {.final.} = object + TPangoAttribute* {.final.} = object klass*: PPangoAttrClass start_index*: int end_index*: int - TPangoAttrClass* {.final.} = object + TPangoAttrClass* {.final.} = object `type`*: TPangoAttrType copy*: proc (attr: PPangoAttribute): PPangoAttribute{.cdecl.} destroy*: proc (attr: PPangoAttribute){.cdecl.} @@ -85,69 +82,69 @@ type cdecl.} PPangoAttrString* = ptr TPangoAttrString - TPangoAttrString* {.final.} = object + TPangoAttrString* {.final.} = object attr*: TPangoAttribute value*: cstring PPangoAttrLanguage* = ptr TPangoAttrLanguage - TPangoAttrLanguage* {.final.} = object + TPangoAttrLanguage* {.final.} = object attr*: TPangoAttribute value*: PPangoLanguage PPangoAttrInt* = ptr TPangoAttrInt - TPangoAttrInt* {.final.} = object + TPangoAttrInt* {.final.} = object attr*: TPangoAttribute value*: int32 PPangoAttrFloat* = ptr TPangoAttrFloat - TPangoAttrFloat* {.final.} = object + TPangoAttrFloat* {.final.} = object attr*: TPangoAttribute value*: gdouble PPangoAttrColor* = ptr TPangoAttrColor - TPangoAttrColor* {.final.} = object + TPangoAttrColor* {.final.} = object attr*: TPangoAttribute color*: TPangoColor PPangoAttrShape* = ptr TPangoAttrShape - TPangoAttrShape* {.final.} = object + TPangoAttrShape* {.final.} = object attr*: TPangoAttribute ink_rect*: TPangoRectangle logical_rect*: TPangoRectangle PPangoAttrFontDesc* = ptr TPangoAttrFontDesc - TPangoAttrFontDesc* {.final.} = object + TPangoAttrFontDesc* {.final.} = object attr*: TPangoAttribute desc*: PPangoFontDescription PPangoLogAttr* = ptr TPangoLogAttr - TPangoLogAttr* {.final.} = object + TPangoLogAttr* {.final.} = object flag0*: guint16 PPangoCoverageLevel* = ptr TPangoCoverageLevel - TPangoCoverageLevel* = enum - PANGO_COVERAGE_NONE, PANGO_COVERAGE_FALLBACK, PANGO_COVERAGE_APPROXIMATE, + TPangoCoverageLevel* = enum + PANGO_COVERAGE_NONE, PANGO_COVERAGE_FALLBACK, PANGO_COVERAGE_APPROXIMATE, PANGO_COVERAGE_EXACT PPangoBlockInfo* = ptr TPangoBlockInfo - TPangoBlockInfo* {.final.} = object + TPangoBlockInfo* {.final.} = object data*: Pguchar level*: TPangoCoverageLevel PPangoCoverage* = ptr TPangoCoverage - TPangoCoverage* {.final.} = object + TPangoCoverage* {.final.} = object ref_count*: int n_blocks*: int32 data_size*: int32 blocks*: PPangoBlockInfo PPangoEngineRange* = ptr TPangoEngineRange - TPangoEngineRange* {.final.} = object + TPangoEngineRange* {.final.} = object start*: int32 theEnd*: int32 langs*: cstring PPangoEngineInfo* = ptr TPangoEngineInfo - TPangoEngineInfo* {.final.} = object + TPangoEngineInfo* {.final.} = object id*: cstring engine_type*: cstring render_type*: cstring @@ -155,28 +152,28 @@ type n_ranges*: gint PPangoEngine* = ptr TPangoEngine - TPangoEngine* {.final.} = object + TPangoEngine* {.final.} = object id*: cstring `type`*: cstring length*: gint - TPangoEngineLangScriptBreak* = proc (text: cstring, len: int32, - analysis: PPangoAnalysis, + TPangoEngineLangScriptBreak* = proc (text: cstring, len: int32, + analysis: PPangoAnalysis, attrs: PPangoLogAttr, attrs_len: int32){. cdecl.} PPangoEngineLang* = ptr TPangoEngineLang - TPangoEngineLang* {.final.} = object + TPangoEngineLang* {.final.} = object engine*: TPangoEngine script_break*: TPangoEngineLangScriptBreak - TPangoEngineShapeScript* = proc (font: PPangoFont, text: cstring, - length: int32, analysis: PPangoAnalysis, + TPangoEngineShapeScript* = proc (font: PPangoFont, text: cstring, + length: int32, analysis: PPangoAnalysis, glyphs: PPangoGlyphString){.cdecl.} - TPangoEngineShapeGetCoverage* = proc (font: PPangoFont, + TPangoEngineShapeGetCoverage* = proc (font: PPangoFont, language: PPangoLanguage): PPangoCoverage{. cdecl.} PPangoEngineShape* = ptr TPangoEngineShape - TPangoEngineShape* {.final.} = object + TPangoEngineShape* {.final.} = object engine*: TPangoEngine script_shape*: TPangoEngineShapeScript get_coverage*: TPangoEngineShapeGetCoverage @@ -194,28 +191,28 @@ type PPangoGlyphUnit* = ptr TPangoGlyphUnit TPangoGlyphUnit* = gint32 PPangoGlyphGeometry* = ptr TPangoGlyphGeometry - TPangoGlyphGeometry* {.final.} = object + TPangoGlyphGeometry* {.final.} = object width*: TPangoGlyphUnit x_offset*: TPangoGlyphUnit y_offset*: TPangoGlyphUnit PPangoGlyphVisAttr* = ptr TPangoGlyphVisAttr - TPangoGlyphVisAttr* {.final.} = object + TPangoGlyphVisAttr* {.final.} = object flag0*: int16 PPangoGlyphInfo* = ptr TPangoGlyphInfo - TPangoGlyphInfo* {.final.} = object + TPangoGlyphInfo* {.final.} = object glyph*: TPangoGlyph geometry*: TPangoGlyphGeometry attr*: TPangoGlyphVisAttr - TPangoGlyphString* {.final.} = object + TPangoGlyphString* {.final.} = object num_glyphs*: gint glyphs*: PPangoGlyphInfo log_clusters*: Pgint space*: gint - TPangoAnalysis* {.final.} = object + TPangoAnalysis* {.final.} = object shape_engine*: PPangoEngineShape lang_engine*: PPangoEngineLang font*: PPangoFont @@ -223,35 +220,35 @@ type language*: PPangoLanguage extra_attrs*: PGSList - TPangoItem* {.final.} = object + TPangoItem* {.final.} = object offset*: gint length*: gint num_chars*: gint analysis*: TPangoAnalysis PPangoAlignment* = ptr TPangoAlignment - TPangoAlignment* = enum + TPangoAlignment* = enum PANGO_ALIGN_LEFT, PANGO_ALIGN_CENTER, PANGO_ALIGN_RIGHT PPangoWrapMode* = ptr TPangoWrapMode - TPangoWrapMode* = enum + TPangoWrapMode* = enum PANGO_WRAP_WORD, PANGO_WRAP_CHAR PPangoLayoutLine* = ptr TPangoLayoutLine - TPangoLayoutLine* {.final.} = object + TPangoLayoutLine* {.final.} = object layout*: PPangoLayout start_index*: gint length*: gint runs*: PGSList PPangoLayoutRun* = ptr TPangoLayoutRun - TPangoLayoutRun* {.final.} = object + TPangoLayoutRun* {.final.} = object item*: PPangoItem glyphs*: PPangoGlyphString PPangoTabAlign* = ptr TPangoTabAlign - TPangoTabAlign* = enum + TPangoTabAlign* = enum PANGO_TAB_LEFT -const +const PANGO_SCALE* = 1024 proc PANGO_PIXELS*(d: int): int @@ -260,14 +257,14 @@ proc PANGO_DESCENT*(rect: TPangoRectangle): int32 proc PANGO_LBEARING*(rect: TPangoRectangle): int32 proc PANGO_RBEARING*(rect: TPangoRectangle): int32 proc PANGO_TYPE_LANGUAGE*(): GType -proc pango_language_get_type*(): GType{.cdecl, dynlib: pangolib, +proc pango_language_get_type*(): GType{.cdecl, dynlib: pangolib, importc: "pango_language_get_type".} -proc pango_language_from_string*(language: cstring): PPangoLanguage{.cdecl, +proc pango_language_from_string*(language: cstring): PPangoLanguage{.cdecl, dynlib: pangolib, importc: "pango_language_from_string".} proc pango_language_to_string*(language: PPangoLanguage): cstring proc pango_language_matches*(language: PPangoLanguage, range_list: cstring): gboolean{. cdecl, dynlib: pangolib, importc: "pango_language_matches".} -const +const PANGO_ATTR_INVALID* = 0 PANGO_ATTR_LANGUAGE* = 1 PANGO_ATTR_FAMILY* = 2 @@ -290,40 +287,40 @@ const PANGO_UNDERLINE_LOW* = 3 proc PANGO_TYPE_COLOR*(): GType -proc pango_color_get_type*(): GType{.cdecl, dynlib: pangolib, +proc pango_color_get_type*(): GType{.cdecl, dynlib: pangolib, importc: "pango_color_get_type".} -proc pango_color_copy*(src: PPangoColor): PPangoColor{.cdecl, dynlib: pangolib, +proc pango_color_copy*(src: PPangoColor): PPangoColor{.cdecl, dynlib: pangolib, importc: "pango_color_copy".} -proc pango_color_free*(color: PPangoColor){.cdecl, dynlib: pangolib, +proc pango_color_free*(color: PPangoColor){.cdecl, dynlib: pangolib, importc: "pango_color_free".} -proc pango_color_parse*(color: PPangoColor, spec: cstring): gboolean{.cdecl, +proc pango_color_parse*(color: PPangoColor, spec: cstring): gboolean{.cdecl, dynlib: pangolib, importc: "pango_color_parse".} proc PANGO_TYPE_ATTR_LIST*(): GType -proc pango_attr_type_register*(name: cstring): TPangoAttrType{.cdecl, +proc pango_attr_type_register*(name: cstring): TPangoAttrType{.cdecl, dynlib: pangolib, importc: "pango_attr_type_register".} -proc pango_attribute_copy*(attr: PPangoAttribute): PPangoAttribute{.cdecl, +proc pango_attribute_copy*(attr: PPangoAttribute): PPangoAttribute{.cdecl, dynlib: pangolib, importc: "pango_attribute_copy".} -proc pango_attribute_destroy*(attr: PPangoAttribute){.cdecl, dynlib: pangolib, +proc pango_attribute_destroy*(attr: PPangoAttribute){.cdecl, dynlib: pangolib, importc: "pango_attribute_destroy".} proc pango_attribute_equal*(attr1: PPangoAttribute, attr2: PPangoAttribute): gboolean{. cdecl, dynlib: pangolib, importc: "pango_attribute_equal".} -proc pango_attr_language_new*(language: PPangoLanguage): PPangoAttribute{.cdecl, +proc pango_attr_language_new*(language: PPangoLanguage): PPangoAttribute{.cdecl, dynlib: pangolib, importc: "pango_attr_language_new".} -proc pango_attr_family_new*(family: cstring): PPangoAttribute{.cdecl, +proc pango_attr_family_new*(family: cstring): PPangoAttribute{.cdecl, dynlib: pangolib, importc: "pango_attr_family_new".} proc pango_attr_foreground_new*(red: guint16, green: guint16, blue: guint16): PPangoAttribute{. cdecl, dynlib: pangolib, importc: "pango_attr_foreground_new".} proc pango_attr_background_new*(red: guint16, green: guint16, blue: guint16): PPangoAttribute{. cdecl, dynlib: pangolib, importc: "pango_attr_background_new".} -proc pango_attr_size_new*(size: int32): PPangoAttribute{.cdecl, +proc pango_attr_size_new*(size: int32): PPangoAttribute{.cdecl, dynlib: pangolib, importc: "pango_attr_size_new".} -proc pango_attr_style_new*(style: TPangoStyle): PPangoAttribute{.cdecl, +proc pango_attr_style_new*(style: TPangoStyle): PPangoAttribute{.cdecl, dynlib: pangolib, importc: "pango_attr_style_new".} -proc pango_attr_weight_new*(weight: TPangoWeight): PPangoAttribute{.cdecl, +proc pango_attr_weight_new*(weight: TPangoWeight): PPangoAttribute{.cdecl, dynlib: pangolib, importc: "pango_attr_weight_new".} -proc pango_attr_variant_new*(variant: TPangoVariant): PPangoAttribute{.cdecl, +proc pango_attr_variant_new*(variant: TPangoVariant): PPangoAttribute{.cdecl, dynlib: pangolib, importc: "pango_attr_variant_new".} -proc pango_attr_stretch_new*(stretch: TPangoStretch): PPangoAttribute{.cdecl, +proc pango_attr_stretch_new*(stretch: TPangoStretch): PPangoAttribute{.cdecl, dynlib: pangolib, importc: "pango_attr_stretch_new".} proc pango_attr_font_desc_new*(desc: PPangoFontDescription): PPangoAttribute{. cdecl, dynlib: pangolib, importc: "pango_attr_font_desc_new".} @@ -331,22 +328,22 @@ proc pango_attr_underline_new*(underline: TPangoUnderline): PPangoAttribute{. cdecl, dynlib: pangolib, importc: "pango_attr_underline_new".} proc pango_attr_strikethrough_new*(strikethrough: gboolean): PPangoAttribute{. cdecl, dynlib: pangolib, importc: "pango_attr_strikethrough_new".} -proc pango_attr_rise_new*(rise: int32): PPangoAttribute{.cdecl, +proc pango_attr_rise_new*(rise: int32): PPangoAttribute{.cdecl, dynlib: pangolib, importc: "pango_attr_rise_new".} -proc pango_attr_shape_new*(ink_rect: PPangoRectangle, +proc pango_attr_shape_new*(ink_rect: PPangoRectangle, logical_rect: PPangoRectangle): PPangoAttribute{. cdecl, dynlib: pangolib, importc: "pango_attr_shape_new".} -proc pango_attr_scale_new*(scale_factor: gdouble): PPangoAttribute{.cdecl, +proc pango_attr_scale_new*(scale_factor: gdouble): PPangoAttribute{.cdecl, dynlib: pangolib, importc: "pango_attr_scale_new".} -proc pango_attr_list_get_type*(): GType{.cdecl, dynlib: pangolib, +proc pango_attr_list_get_type*(): GType{.cdecl, dynlib: pangolib, importc: "pango_attr_list_get_type".} -proc pango_attr_list_new*(): PPangoAttrList{.cdecl, dynlib: pangolib, +proc pango_attr_list_new*(): PPangoAttrList{.cdecl, dynlib: pangolib, importc: "pango_attr_list_new".} -proc pango_attr_list_ref*(list: PPangoAttrList){.cdecl, dynlib: pangolib, +proc pango_attr_list_ref*(list: PPangoAttrList){.cdecl, dynlib: pangolib, importc: "pango_attr_list_ref".} -proc pango_attr_list_unref*(list: PPangoAttrList){.cdecl, dynlib: pangolib, +proc pango_attr_list_unref*(list: PPangoAttrList){.cdecl, dynlib: pangolib, importc: "pango_attr_list_unref".} -proc pango_attr_list_copy*(list: PPangoAttrList): PPangoAttrList{.cdecl, +proc pango_attr_list_copy*(list: PPangoAttrList): PPangoAttrList{.cdecl, dynlib: pangolib, importc: "pango_attr_list_copy".} proc pango_attr_list_insert*(list: PPangoAttrList, attr: PPangoAttribute){. cdecl, dynlib: pangolib, importc: "pango_attr_list_insert".} @@ -354,53 +351,53 @@ proc pango_attr_list_insert_before*(list: PPangoAttrList, attr: PPangoAttribute) cdecl, dynlib: pangolib, importc: "pango_attr_list_insert_before".} proc pango_attr_list_change*(list: PPangoAttrList, attr: PPangoAttribute){. cdecl, dynlib: pangolib, importc: "pango_attr_list_change".} -proc pango_attr_list_splice*(list: PPangoAttrList, other: PPangoAttrList, - pos: gint, len: gint){.cdecl, dynlib: pangolib, +proc pango_attr_list_splice*(list: PPangoAttrList, other: PPangoAttrList, + pos: gint, len: gint){.cdecl, dynlib: pangolib, importc: "pango_attr_list_splice".} proc pango_attr_list_get_iterator*(list: PPangoAttrList): PPangoAttrIterator{. cdecl, dynlib: pangolib, importc: "pango_attr_list_get_iterator".} -proc pango_attr_iterator_range*(`iterator`: PPangoAttrIterator, start: Pgint, - theEnd: Pgint){.cdecl, dynlib: pangolib, +proc pango_attr_iterator_range*(`iterator`: PPangoAttrIterator, start: Pgint, + theEnd: Pgint){.cdecl, dynlib: pangolib, importc: "pango_attr_iterator_range".} -proc pango_attr_iterator_next*(`iterator`: PPangoAttrIterator): gboolean{.cdecl, +proc pango_attr_iterator_next*(`iterator`: PPangoAttrIterator): gboolean{.cdecl, dynlib: pangolib, importc: "pango_attr_iterator_next".} proc pango_attr_iterator_copy*(`iterator`: PPangoAttrIterator): PPangoAttrIterator{. cdecl, dynlib: pangolib, importc: "pango_attr_iterator_copy".} -proc pango_attr_iterator_destroy*(`iterator`: PPangoAttrIterator){.cdecl, +proc pango_attr_iterator_destroy*(`iterator`: PPangoAttrIterator){.cdecl, dynlib: pangolib, importc: "pango_attr_iterator_destroy".} -proc pango_attr_iterator_get*(`iterator`: PPangoAttrIterator, - `type`: TPangoAttrType): PPangoAttribute{.cdecl, +proc pango_attr_iterator_get*(`iterator`: PPangoAttrIterator, + `type`: TPangoAttrType): PPangoAttribute{.cdecl, dynlib: pangolib, importc: "pango_attr_iterator_get".} -proc pango_attr_iterator_get_font*(`iterator`: PPangoAttrIterator, - desc: PPangoFontDescription, - language: var PPangoLanguage, - extra_attrs: PPGSList){.cdecl, +proc pango_attr_iterator_get_font*(`iterator`: PPangoAttrIterator, + desc: PPangoFontDescription, + language: var PPangoLanguage, + extra_attrs: PPGSList){.cdecl, dynlib: pangolib, importc: "pango_attr_iterator_get_font".} -proc pango_parse_markup*(markup_text: cstring, length: int32, - accel_marker: gunichar, attr_list: var PPangoAttrList, +proc pango_parse_markup*(markup_text: cstring, length: int32, + accel_marker: gunichar, attr_list: var PPangoAttrList, text: PPchar, accel_char: Pgunichar, error: pointer): gboolean{. cdecl, dynlib: pangolib, importc: "pango_parse_markup".} -const - bm_TPangoLogAttr_is_line_break* = 0x00000001 - bp_TPangoLogAttr_is_line_break* = 0 - bm_TPangoLogAttr_is_mandatory_break* = 0x00000002 - bp_TPangoLogAttr_is_mandatory_break* = 1 - bm_TPangoLogAttr_is_char_break* = 0x00000004 - bp_TPangoLogAttr_is_char_break* = 2 - bm_TPangoLogAttr_is_white* = 0x00000008 - bp_TPangoLogAttr_is_white* = 3 - bm_TPangoLogAttr_is_cursor_position* = 0x00000010 - bp_TPangoLogAttr_is_cursor_position* = 4 - bm_TPangoLogAttr_is_word_start* = 0x00000020 - bp_TPangoLogAttr_is_word_start* = 5 - bm_TPangoLogAttr_is_word_end* = 0x00000040 - bp_TPangoLogAttr_is_word_end* = 6 - bm_TPangoLogAttr_is_sentence_boundary* = 0x00000080 - bp_TPangoLogAttr_is_sentence_boundary* = 7 - bm_TPangoLogAttr_is_sentence_start* = 0x00000100 - bp_TPangoLogAttr_is_sentence_start* = 8 - bm_TPangoLogAttr_is_sentence_end* = 0x00000200 - bp_TPangoLogAttr_is_sentence_end* = 9 +const + bm_TPangoLogAttr_is_line_break* = 0x00000001'i16 + bp_TPangoLogAttr_is_line_break* = 0'i16 + bm_TPangoLogAttr_is_mandatory_break* = 0x00000002'i16 + bp_TPangoLogAttr_is_mandatory_break* = 1'i16 + bm_TPangoLogAttr_is_char_break* = 0x00000004'i16 + bp_TPangoLogAttr_is_char_break* = 2'i16 + bm_TPangoLogAttr_is_white* = 0x00000008'i16 + bp_TPangoLogAttr_is_white* = 3'i16 + bm_TPangoLogAttr_is_cursor_position* = 0x00000010'i16 + bp_TPangoLogAttr_is_cursor_position* = 4'i16 + bm_TPangoLogAttr_is_word_start* = 0x00000020'i16 + bp_TPangoLogAttr_is_word_start* = 5'i16 + bm_TPangoLogAttr_is_word_end* = 0x00000040'i16 + bp_TPangoLogAttr_is_word_end* = 6'i16 + bm_TPangoLogAttr_is_sentence_boundary* = 0x00000080'i16 + bp_TPangoLogAttr_is_sentence_boundary* = 7'i16 + bm_TPangoLogAttr_is_sentence_start* = 0x00000100'i16 + bp_TPangoLogAttr_is_sentence_start* = 8'i16 + bm_TPangoLogAttr_is_sentence_end* = 0x00000200'i16 + bp_TPangoLogAttr_is_sentence_end* = 9'i16 proc is_line_break*(a: var TPangoLogAttr): guint proc set_is_line_break*(a: var TPangoLogAttr, `is_line_break`: guint) @@ -417,22 +414,22 @@ proc set_is_word_start*(a: var TPangoLogAttr, `is_word_start`: guint) proc is_word_end*(a: var TPangoLogAttr): guint proc set_is_word_end*(a: var TPangoLogAttr, `is_word_end`: guint) proc is_sentence_boundary*(a: var TPangoLogAttr): guint -proc set_is_sentence_boundary*(a: var TPangoLogAttr, +proc set_is_sentence_boundary*(a: var TPangoLogAttr, `is_sentence_boundary`: guint) proc is_sentence_start*(a: var TPangoLogAttr): guint proc set_is_sentence_start*(a: var TPangoLogAttr, `is_sentence_start`: guint) proc is_sentence_end*(a: var TPangoLogAttr): guint proc set_is_sentence_end*(a: var TPangoLogAttr, `is_sentence_end`: guint) -proc pango_break*(text: cstring, length: int32, analysis: PPangoAnalysis, - attrs: PPangoLogAttr, attrs_len: int32){.cdecl, +proc pango_break*(text: cstring, length: int32, analysis: PPangoAnalysis, + attrs: PPangoLogAttr, attrs_len: int32){.cdecl, dynlib: pangolib, importc: "pango_break".} -proc pango_find_paragraph_boundary*(text: cstring, length: gint, - paragraph_delimiter_index: Pgint, - next_paragraph_start: Pgint){.cdecl, +proc pango_find_paragraph_boundary*(text: cstring, length: gint, + paragraph_delimiter_index: Pgint, + next_paragraph_start: Pgint){.cdecl, dynlib: pangolib, importc: "pango_find_paragraph_boundary".} -proc pango_get_log_attrs*(text: cstring, length: int32, level: int32, - language: PPangoLanguage, log_attrs: PPangoLogAttr, - attrs_len: int32){.cdecl, dynlib: pangolib, +proc pango_get_log_attrs*(text: cstring, length: int32, level: int32, + language: PPangoLanguage, log_attrs: PPangoLogAttr, + attrs_len: int32){.cdecl, dynlib: pangolib, importc: "pango_get_log_attrs".} proc PANGO_TYPE_CONTEXT*(): GType proc PANGO_CONTEXT*(anObject: pointer): PPangoContext @@ -440,71 +437,71 @@ proc PANGO_CONTEXT_CLASS*(klass: pointer): PPangoContextClass proc PANGO_IS_CONTEXT*(anObject: pointer): bool proc PANGO_IS_CONTEXT_CLASS*(klass: pointer): bool proc PANGO_CONTEXT_GET_CLASS*(obj: PPangoContext): PPangoContextClass -proc pango_context_get_type*(): GType{.cdecl, dynlib: pangolib, +proc pango_context_get_type*(): GType{.cdecl, dynlib: pangolib, importc: "pango_context_get_type".} -proc pango_context_list_families*(context: PPangoContext, - families: openarray[ptr PPangoFontFamily]){.cdecl, +proc pango_context_list_families*(context: PPangoContext, + families: openarray[ptr PPangoFontFamily]){.cdecl, dynlib: pangolib, importc: "pango_context_list_families".} -proc pango_context_load_font*(context: PPangoContext, - desc: PPangoFontDescription): PPangoFont{.cdecl, +proc pango_context_load_font*(context: PPangoContext, + desc: PPangoFontDescription): PPangoFont{.cdecl, dynlib: pangolib, importc: "pango_context_load_font".} -proc pango_context_load_fontset*(context: PPangoContext, - desc: PPangoFontDescription, +proc pango_context_load_fontset*(context: PPangoContext, + desc: PPangoFontDescription, language: PPangoLanguage): PPangoFontset{. cdecl, dynlib: pangolib, importc: "pango_context_load_fontset".} -proc pango_context_get_metrics*(context: PPangoContext, - desc: PPangoFontDescription, +proc pango_context_get_metrics*(context: PPangoContext, + desc: PPangoFontDescription, language: PPangoLanguage): PPangoFontMetrics{. cdecl, dynlib: pangolib, importc: "pango_context_get_metrics".} -proc pango_context_set_font_description*(context: PPangoContext, - desc: PPangoFontDescription){.cdecl, dynlib: pangolib, +proc pango_context_set_font_description*(context: PPangoContext, + desc: PPangoFontDescription){.cdecl, dynlib: pangolib, importc: "pango_context_set_font_description".} proc pango_context_get_font_description*(context: PPangoContext): PPangoFontDescription{. cdecl, dynlib: pangolib, importc: "pango_context_get_font_description".} -proc pango_context_get_language*(context: PPangoContext): PPangoLanguage{.cdecl, +proc pango_context_get_language*(context: PPangoContext): PPangoLanguage{.cdecl, dynlib: pangolib, importc: "pango_context_get_language".} -proc pango_context_set_language*(context: PPangoContext, - language: PPangoLanguage){.cdecl, +proc pango_context_set_language*(context: PPangoContext, + language: PPangoLanguage){.cdecl, dynlib: pangolib, importc: "pango_context_set_language".} -proc pango_context_set_base_dir*(context: PPangoContext, - direction: TPangoDirection){.cdecl, +proc pango_context_set_base_dir*(context: PPangoContext, + direction: TPangoDirection){.cdecl, dynlib: pangolib, importc: "pango_context_set_base_dir".} proc pango_context_get_base_dir*(context: PPangoContext): TPangoDirection{. cdecl, dynlib: pangolib, importc: "pango_context_get_base_dir".} -proc pango_itemize*(context: PPangoContext, text: cstring, start_index: int32, - length: int32, attrs: PPangoAttrList, - cached_iter: PPangoAttrIterator): PGList{.cdecl, +proc pango_itemize*(context: PPangoContext, text: cstring, start_index: int32, + length: int32, attrs: PPangoAttrList, + cached_iter: PPangoAttrIterator): PGList{.cdecl, dynlib: pangolib, importc: "pango_itemize".} -proc pango_coverage_new*(): PPangoCoverage{.cdecl, dynlib: pangolib, +proc pango_coverage_new*(): PPangoCoverage{.cdecl, dynlib: pangolib, importc: "pango_coverage_new".} -proc pango_coverage_ref*(coverage: PPangoCoverage): PPangoCoverage{.cdecl, +proc pango_coverage_ref*(coverage: PPangoCoverage): PPangoCoverage{.cdecl, dynlib: pangolib, importc: "pango_coverage_ref".} -proc pango_coverage_unref*(coverage: PPangoCoverage){.cdecl, dynlib: pangolib, +proc pango_coverage_unref*(coverage: PPangoCoverage){.cdecl, dynlib: pangolib, importc: "pango_coverage_unref".} -proc pango_coverage_copy*(coverage: PPangoCoverage): PPangoCoverage{.cdecl, +proc pango_coverage_copy*(coverage: PPangoCoverage): PPangoCoverage{.cdecl, dynlib: pangolib, importc: "pango_coverage_copy".} proc pango_coverage_get*(coverage: PPangoCoverage, index: int32): TPangoCoverageLevel{. cdecl, dynlib: pangolib, importc: "pango_coverage_get".} -proc pango_coverage_set*(coverage: PPangoCoverage, index: int32, - level: TPangoCoverageLevel){.cdecl, dynlib: pangolib, +proc pango_coverage_set*(coverage: PPangoCoverage, index: int32, + level: TPangoCoverageLevel){.cdecl, dynlib: pangolib, importc: "pango_coverage_set".} proc pango_coverage_max*(coverage: PPangoCoverage, other: PPangoCoverage){. cdecl, dynlib: pangolib, importc: "pango_coverage_max".} -proc pango_coverage_to_bytes*(coverage: PPangoCoverage, bytes: PPguchar, - n_bytes: var int32){.cdecl, dynlib: pangolib, +proc pango_coverage_to_bytes*(coverage: PPangoCoverage, bytes: PPguchar, + n_bytes: var int32){.cdecl, dynlib: pangolib, importc: "pango_coverage_to_bytes".} proc pango_coverage_from_bytes*(bytes: Pguchar, n_bytes: int32): PPangoCoverage{. cdecl, dynlib: pangolib, importc: "pango_coverage_from_bytes".} proc PANGO_TYPE_FONTSET*(): GType proc PANGO_FONTSET*(anObject: pointer): PPangoFontset proc PANGO_IS_FONTSET*(anObject: pointer): bool -proc pango_fontset_get_type*(): GType{.cdecl, dynlib: pangolib, +proc pango_fontset_get_type*(): GType{.cdecl, dynlib: pangolib, importc: "pango_fontset_get_type".} proc pango_fontset_get_font*(fontset: PPangoFontset, wc: guint): PPangoFont{. cdecl, dynlib: pangolib, importc: "pango_fontset_get_font".} proc pango_fontset_get_metrics*(fontset: PPangoFontset): PPangoFontMetrics{. cdecl, dynlib: pangolib, importc: "pango_fontset_get_metrics".} -const +const PANGO_STYLE_NORMAL* = 0 PANGO_STYLE_OBLIQUE* = 1 PANGO_STYLE_ITALIC* = 2 @@ -540,74 +537,74 @@ const PANGO_SCALE_XX_LARGE* = 1.728 proc PANGO_TYPE_FONT_DESCRIPTION*(): GType -proc pango_font_description_get_type*(): GType{.cdecl, dynlib: pangolib, +proc pango_font_description_get_type*(): GType{.cdecl, dynlib: pangolib, importc: "pango_font_description_get_type".} -proc pango_font_description_new*(): PPangoFontDescription{.cdecl, +proc pango_font_description_new*(): PPangoFontDescription{.cdecl, dynlib: pangolib, importc: "pango_font_description_new".} proc pango_font_description_copy*(desc: PPangoFontDescription): PPangoFontDescription{. cdecl, dynlib: pangolib, importc: "pango_font_description_copy".} proc pango_font_description_copy_static*(desc: PPangoFontDescription): PPangoFontDescription{. cdecl, dynlib: pangolib, importc: "pango_font_description_copy_static".} -proc pango_font_description_hash*(desc: PPangoFontDescription): guint{.cdecl, +proc pango_font_description_hash*(desc: PPangoFontDescription): guint{.cdecl, dynlib: pangolib, importc: "pango_font_description_hash".} -proc pango_font_description_equal*(desc1: PPangoFontDescription, +proc pango_font_description_equal*(desc1: PPangoFontDescription, desc2: PPangoFontDescription): gboolean{. cdecl, dynlib: pangolib, importc: "pango_font_description_equal".} -proc pango_font_description_free*(desc: PPangoFontDescription){.cdecl, +proc pango_font_description_free*(desc: PPangoFontDescription){.cdecl, dynlib: pangolib, importc: "pango_font_description_free".} -proc pango_font_descriptions_free*(descs: var PPangoFontDescription, - n_descs: int32){.cdecl, dynlib: pangolib, +proc pango_font_descriptions_free*(descs: var PPangoFontDescription, + n_descs: int32){.cdecl, dynlib: pangolib, importc: "pango_font_descriptions_free".} -proc pango_font_description_set_family*(desc: PPangoFontDescription, - family: cstring){.cdecl, +proc pango_font_description_set_family*(desc: PPangoFontDescription, + family: cstring){.cdecl, dynlib: pangolib, importc: "pango_font_description_set_family".} -proc pango_font_description_set_family_static*(desc: PPangoFontDescription, - family: cstring){.cdecl, dynlib: pangolib, +proc pango_font_description_set_family_static*(desc: PPangoFontDescription, + family: cstring){.cdecl, dynlib: pangolib, importc: "pango_font_description_set_family_static".} proc pango_font_description_get_family*(desc: PPangoFontDescription): cstring{. cdecl, dynlib: pangolib, importc: "pango_font_description_get_family".} -proc pango_font_description_set_style*(desc: PPangoFontDescription, - style: TPangoStyle){.cdecl, +proc pango_font_description_set_style*(desc: PPangoFontDescription, + style: TPangoStyle){.cdecl, dynlib: pangolib, importc: "pango_font_description_set_style".} proc pango_font_description_get_style*(desc: PPangoFontDescription): TPangoStyle{. cdecl, dynlib: pangolib, importc: "pango_font_description_get_style".} -proc pango_font_description_set_variant*(desc: PPangoFontDescription, - variant: TPangoVariant){.cdecl, dynlib: pangolib, +proc pango_font_description_set_variant*(desc: PPangoFontDescription, + variant: TPangoVariant){.cdecl, dynlib: pangolib, importc: "pango_font_description_set_variant".} proc pango_font_description_get_variant*(desc: PPangoFontDescription): TPangoVariant{. cdecl, dynlib: pangolib, importc: "pango_font_description_get_variant".} -proc pango_font_description_set_weight*(desc: PPangoFontDescription, - weight: TPangoWeight){.cdecl, +proc pango_font_description_set_weight*(desc: PPangoFontDescription, + weight: TPangoWeight){.cdecl, dynlib: pangolib, importc: "pango_font_description_set_weight".} proc pango_font_description_get_weight*(desc: PPangoFontDescription): TPangoWeight{. cdecl, dynlib: pangolib, importc: "pango_font_description_get_weight".} -proc pango_font_description_set_stretch*(desc: PPangoFontDescription, - stretch: TPangoStretch){.cdecl, dynlib: pangolib, +proc pango_font_description_set_stretch*(desc: PPangoFontDescription, + stretch: TPangoStretch){.cdecl, dynlib: pangolib, importc: "pango_font_description_set_stretch".} proc pango_font_description_get_stretch*(desc: PPangoFontDescription): TPangoStretch{. cdecl, dynlib: pangolib, importc: "pango_font_description_get_stretch".} proc pango_font_description_set_size*(desc: PPangoFontDescription, size: gint){. cdecl, dynlib: pangolib, importc: "pango_font_description_set_size".} -proc pango_font_description_get_size*(desc: PPangoFontDescription): gint{.cdecl, +proc pango_font_description_get_size*(desc: PPangoFontDescription): gint{.cdecl, dynlib: pangolib, importc: "pango_font_description_get_size".} -proc pango_font_description_set_absolute_size*(desc: PPangoFontDescription, - size: float64){.cdecl, dynlib: pangolib, +proc pango_font_description_set_absolute_size*(desc: PPangoFontDescription, + size: float64){.cdecl, dynlib: pangolib, importc: "pango_font_description_set_absolute_size".} -proc pango_font_description_get_size_is_absolute*(desc: PPangoFontDescription, +proc pango_font_description_get_size_is_absolute*(desc: PPangoFontDescription, size: float64): gboolean{.cdecl, dynlib: pangolib, importc: "pango_font_description_get_size_is_absolute".} proc pango_font_description_get_set_fields*(desc: PPangoFontDescription): TPangoFontMask{. cdecl, dynlib: pangolib, importc: "pango_font_description_get_set_fields".} -proc pango_font_description_unset_fields*(desc: PPangoFontDescription, - to_unset: TPangoFontMask){.cdecl, dynlib: pangolib, +proc pango_font_description_unset_fields*(desc: PPangoFontDescription, + to_unset: TPangoFontMask){.cdecl, dynlib: pangolib, importc: "pango_font_description_unset_fields".} -proc pango_font_description_merge*(desc: PPangoFontDescription, - desc_to_merge: PPangoFontDescription, - replace_existing: gboolean){.cdecl, +proc pango_font_description_merge*(desc: PPangoFontDescription, + desc_to_merge: PPangoFontDescription, + replace_existing: gboolean){.cdecl, dynlib: pangolib, importc: "pango_font_description_merge".} -proc pango_font_description_merge_static*(desc: PPangoFontDescription, - desc_to_merge: PPangoFontDescription, replace_existing: gboolean){.cdecl, +proc pango_font_description_merge_static*(desc: PPangoFontDescription, + desc_to_merge: PPangoFontDescription, replace_existing: gboolean){.cdecl, dynlib: pangolib, importc: "pango_font_description_merge_static".} -proc pango_font_description_better_match*(desc: PPangoFontDescription, +proc pango_font_description_better_match*(desc: PPangoFontDescription, old_match: PPangoFontDescription, new_match: PPangoFontDescription): gboolean{. cdecl, dynlib: pangolib, importc: "pango_font_description_better_match".} proc pango_font_description_from_string*(str: cstring): PPangoFontDescription{. @@ -617,125 +614,125 @@ proc pango_font_description_to_string*(desc: PPangoFontDescription): cstring{. proc pango_font_description_to_filename*(desc: PPangoFontDescription): cstring{. cdecl, dynlib: pangolib, importc: "pango_font_description_to_filename".} proc PANGO_TYPE_FONT_METRICS*(): GType -proc pango_font_metrics_get_type*(): GType{.cdecl, dynlib: pangolib, +proc pango_font_metrics_get_type*(): GType{.cdecl, dynlib: pangolib, importc: "pango_font_metrics_get_type".} proc pango_font_metrics_ref*(metrics: PPangoFontMetrics): PPangoFontMetrics{. cdecl, dynlib: pangolib, importc: "pango_font_metrics_ref".} -proc pango_font_metrics_unref*(metrics: PPangoFontMetrics){.cdecl, +proc pango_font_metrics_unref*(metrics: PPangoFontMetrics){.cdecl, dynlib: pangolib, importc: "pango_font_metrics_unref".} -proc pango_font_metrics_get_ascent*(metrics: PPangoFontMetrics): int32{.cdecl, +proc pango_font_metrics_get_ascent*(metrics: PPangoFontMetrics): int32{.cdecl, dynlib: pangolib, importc: "pango_font_metrics_get_ascent".} -proc pango_font_metrics_get_descent*(metrics: PPangoFontMetrics): int32{.cdecl, +proc pango_font_metrics_get_descent*(metrics: PPangoFontMetrics): int32{.cdecl, dynlib: pangolib, importc: "pango_font_metrics_get_descent".} proc pango_font_metrics_get_approximate_char_width*(metrics: PPangoFontMetrics): int32{. - cdecl, dynlib: pangolib, + cdecl, dynlib: pangolib, importc: "pango_font_metrics_get_approximate_char_width".} proc pango_font_metrics_get_approximate_digit_width*(metrics: PPangoFontMetrics): int32{. - cdecl, dynlib: pangolib, + cdecl, dynlib: pangolib, importc: "pango_font_metrics_get_approximate_digit_width".} proc PANGO_TYPE_FONT_FAMILY*(): GType proc PANGO_FONT_FAMILY*(anObject: Pointer): PPangoFontFamily proc PANGO_IS_FONT_FAMILY*(anObject: Pointer): bool -proc pango_font_family_get_type*(): GType{.cdecl, dynlib: pangolib, +proc pango_font_family_get_type*(): GType{.cdecl, dynlib: pangolib, importc: "pango_font_family_get_type".} -proc pango_font_family_list_faces*(family: PPangoFontFamily, +proc pango_font_family_list_faces*(family: PPangoFontFamily, faces: var openarray[ptr PPangoFontFace]){. cdecl, dynlib: pangolib, importc: "pango_font_family_list_faces".} -proc pango_font_family_get_name*(family: PPangoFontFamily): cstring{.cdecl, +proc pango_font_family_get_name*(family: PPangoFontFamily): cstring{.cdecl, dynlib: pangolib, importc: "pango_font_family_get_name".} proc PANGO_TYPE_FONT_FACE*(): GType proc PANGO_FONT_FACE*(anObject: pointer): PPangoFontFace proc PANGO_IS_FONT_FACE*(anObject: pointer): bool -proc pango_font_face_get_type*(): GType{.cdecl, dynlib: pangolib, +proc pango_font_face_get_type*(): GType{.cdecl, dynlib: pangolib, importc: "pango_font_face_get_type".} proc pango_font_face_describe*(face: PPangoFontFace): PPangoFontDescription{. cdecl, dynlib: pangolib, importc: "pango_font_face_describe".} -proc pango_font_face_get_face_name*(face: PPangoFontFace): cstring{.cdecl, +proc pango_font_face_get_face_name*(face: PPangoFontFace): cstring{.cdecl, dynlib: pangolib, importc: "pango_font_face_get_face_name".} proc PANGO_TYPE_FONT*(): GType proc PANGO_FONT*(anObject: pointer): PPangoFont proc PANGO_IS_FONT*(anObject: pointer): bool -proc pango_font_get_type*(): GType{.cdecl, dynlib: pangolib, +proc pango_font_get_type*(): GType{.cdecl, dynlib: pangolib, importc: "pango_font_get_type".} -proc pango_font_describe*(font: PPangoFont): PPangoFontDescription{.cdecl, +proc pango_font_describe*(font: PPangoFont): PPangoFontDescription{.cdecl, dynlib: pangolib, importc: "pango_font_describe".} proc pango_font_get_coverage*(font: PPangoFont, language: PPangoLanguage): PPangoCoverage{. cdecl, dynlib: pangolib, importc: "pango_font_get_coverage".} -proc pango_font_find_shaper*(font: PPangoFont, language: PPangoLanguage, - ch: guint32): PPangoEngineShape{.cdecl, +proc pango_font_find_shaper*(font: PPangoFont, language: PPangoLanguage, + ch: guint32): PPangoEngineShape{.cdecl, dynlib: pangolib, importc: "pango_font_find_shaper".} proc pango_font_get_metrics*(font: PPangoFont, language: PPangoLanguage): PPangoFontMetrics{. cdecl, dynlib: pangolib, importc: "pango_font_get_metrics".} -proc pango_font_get_glyph_extents*(font: PPangoFont, glyph: TPangoGlyph, - ink_rect: PPangoRectangle, - logical_rect: PPangoRectangle){.cdecl, +proc pango_font_get_glyph_extents*(font: PPangoFont, glyph: TPangoGlyph, + ink_rect: PPangoRectangle, + logical_rect: PPangoRectangle){.cdecl, dynlib: pangolib, importc: "pango_font_get_glyph_extents".} proc PANGO_TYPE_FONT_MAP*(): GType proc PANGO_FONT_MAP*(anObject: pointer): PPangoFontMap proc PANGO_IS_FONT_MAP*(anObject: pointer): bool -proc pango_font_map_get_type*(): GType{.cdecl, dynlib: pangolib, +proc pango_font_map_get_type*(): GType{.cdecl, dynlib: pangolib, importc: "pango_font_map_get_type".} -proc pango_font_map_load_font*(fontmap: PPangoFontMap, context: PPangoContext, - desc: PPangoFontDescription): PPangoFont{.cdecl, +proc pango_font_map_load_font*(fontmap: PPangoFontMap, context: PPangoContext, + desc: PPangoFontDescription): PPangoFont{.cdecl, dynlib: pangolib, importc: "pango_font_map_load_font".} -proc pango_font_map_load_fontset*(fontmap: PPangoFontMap, - context: PPangoContext, - desc: PPangoFontDescription, +proc pango_font_map_load_fontset*(fontmap: PPangoFontMap, + context: PPangoContext, + desc: PPangoFontDescription, language: PPangoLanguage): PPangoFontset{. cdecl, dynlib: pangolib, importc: "pango_font_map_load_fontset".} -proc pango_font_map_list_families*(fontmap: PPangoFontMap, - families: var openarray[ptr PPangoFontFamily]){.cdecl, +proc pango_font_map_list_families*(fontmap: PPangoFontMap, + families: var openarray[ptr PPangoFontFamily]){.cdecl, dynlib: pangolib, importc: "pango_font_map_list_families".} -const - bm_TPangoGlyphVisAttr_is_cluster_start* = 0x00000001 - bp_TPangoGlyphVisAttr_is_cluster_start* = 0 +const + bm_TPangoGlyphVisAttr_is_cluster_start* = 0x00000001'i16 + bp_TPangoGlyphVisAttr_is_cluster_start* = 0'i16 proc is_cluster_start*(a: var TPangoGlyphVisAttr): guint proc set_is_cluster_start*(a: var TPangoGlyphVisAttr, `is_cluster_start`: guint) proc PANGO_TYPE_GLYPH_STRING*(): GType -proc pango_glyph_string_new*(): PPangoGlyphString{.cdecl, dynlib: pangolib, +proc pango_glyph_string_new*(): PPangoGlyphString{.cdecl, dynlib: pangolib, importc: "pango_glyph_string_new".} proc pango_glyph_string_set_size*(`string`: PPangoGlyphString, new_len: gint){. cdecl, dynlib: pangolib, importc: "pango_glyph_string_set_size".} -proc pango_glyph_string_get_type*(): GType{.cdecl, dynlib: pangolib, +proc pango_glyph_string_get_type*(): GType{.cdecl, dynlib: pangolib, importc: "pango_glyph_string_get_type".} proc pango_glyph_string_copy*(`string`: PPangoGlyphString): PPangoGlyphString{. cdecl, dynlib: pangolib, importc: "pango_glyph_string_copy".} -proc pango_glyph_string_free*(`string`: PPangoGlyphString){.cdecl, +proc pango_glyph_string_free*(`string`: PPangoGlyphString){.cdecl, dynlib: pangolib, importc: "pango_glyph_string_free".} -proc pango_glyph_string_extents*(glyphs: PPangoGlyphString, font: PPangoFont, - ink_rect: PPangoRectangle, - logical_rect: PPangoRectangle){.cdecl, +proc pango_glyph_string_extents*(glyphs: PPangoGlyphString, font: PPangoFont, + ink_rect: PPangoRectangle, + logical_rect: PPangoRectangle){.cdecl, dynlib: pangolib, importc: "pango_glyph_string_extents".} -proc pango_glyph_string_extents_range*(glyphs: PPangoGlyphString, start: int32, - theEnd: int32, font: PPangoFont, - ink_rect: PPangoRectangle, - logical_rect: PPangoRectangle){.cdecl, +proc pango_glyph_string_extents_range*(glyphs: PPangoGlyphString, start: int32, + theEnd: int32, font: PPangoFont, + ink_rect: PPangoRectangle, + logical_rect: PPangoRectangle){.cdecl, dynlib: pangolib, importc: "pango_glyph_string_extents_range".} -proc pango_glyph_string_get_logical_widths*(glyphs: PPangoGlyphString, - text: cstring, length: int32, embedding_level: int32, - logical_widths: var int32){.cdecl, dynlib: pangolib, +proc pango_glyph_string_get_logical_widths*(glyphs: PPangoGlyphString, + text: cstring, length: int32, embedding_level: int32, + logical_widths: var int32){.cdecl, dynlib: pangolib, importc: "pango_glyph_string_get_logical_widths".} -proc pango_glyph_string_index_to_x*(glyphs: PPangoGlyphString, text: cstring, - length: int32, analysis: PPangoAnalysis, - index: int32, trailing: gboolean, - x_pos: var int32){.cdecl, dynlib: pangolib, +proc pango_glyph_string_index_to_x*(glyphs: PPangoGlyphString, text: cstring, + length: int32, analysis: PPangoAnalysis, + index: int32, trailing: gboolean, + x_pos: var int32){.cdecl, dynlib: pangolib, importc: "pango_glyph_string_index_to_x".} -proc pango_glyph_string_x_to_index*(glyphs: PPangoGlyphString, text: cstring, - length: int32, analysis: PPangoAnalysis, - x_pos: int32, index, - trailing: var int32){.cdecl, +proc pango_glyph_string_x_to_index*(glyphs: PPangoGlyphString, text: cstring, + length: int32, analysis: PPangoAnalysis, + x_pos: int32, index, + trailing: var int32){.cdecl, dynlib: pangolib, importc: "pango_glyph_string_x_to_index".} -proc pango_shape*(text: cstring, length: gint, analysis: PPangoAnalysis, - glyphs: PPangoGlyphString){.cdecl, dynlib: pangolib, +proc pango_shape*(text: cstring, length: gint, analysis: PPangoAnalysis, + glyphs: PPangoGlyphString){.cdecl, dynlib: pangolib, importc: "pango_shape".} -proc pango_reorder_items*(logical_items: PGList): PGList{.cdecl, +proc pango_reorder_items*(logical_items: PGList): PGList{.cdecl, dynlib: pangolib, importc: "pango_reorder_items".} -proc pango_item_new*(): PPangoItem{.cdecl, dynlib: pangolib, +proc pango_item_new*(): PPangoItem{.cdecl, dynlib: pangolib, importc: "pango_item_new".} -proc pango_item_copy*(item: PPangoItem): PPangoItem{.cdecl, dynlib: pangolib, +proc pango_item_copy*(item: PPangoItem): PPangoItem{.cdecl, dynlib: pangolib, importc: "pango_item_copy".} -proc pango_item_free*(item: PPangoItem){.cdecl, dynlib: pangolib, +proc pango_item_free*(item: PPangoItem){.cdecl, dynlib: pangolib, importc: "pango_item_free".} proc pango_item_split*(orig: PPangoItem, split_index: int32, split_offset: int32): PPangoItem{. cdecl, dynlib: pangolib, importc: "pango_item_split".} @@ -745,465 +742,465 @@ proc PANGO_LAYOUT_CLASS*(klass: pointer): PPangoLayoutClass proc PANGO_IS_LAYOUT*(anObject: pointer): bool proc PANGO_IS_LAYOUT_CLASS*(klass: pointer): bool proc PANGO_LAYOUT_GET_CLASS*(obj: PPangoLayout): PPangoLayoutClass -proc pango_layout_get_type*(): GType{.cdecl, dynlib: pangolib, +proc pango_layout_get_type*(): GType{.cdecl, dynlib: pangolib, importc: "pango_layout_get_type".} -proc pango_layout_new*(context: PPangoContext): PPangoLayout{.cdecl, +proc pango_layout_new*(context: PPangoContext): PPangoLayout{.cdecl, dynlib: pangolib, importc: "pango_layout_new".} -proc pango_layout_copy*(src: PPangoLayout): PPangoLayout{.cdecl, +proc pango_layout_copy*(src: PPangoLayout): PPangoLayout{.cdecl, dynlib: pangolib, importc: "pango_layout_copy".} -proc pango_layout_get_context*(layout: PPangoLayout): PPangoContext{.cdecl, +proc pango_layout_get_context*(layout: PPangoLayout): PPangoContext{.cdecl, dynlib: pangolib, importc: "pango_layout_get_context".} proc pango_layout_set_attributes*(layout: PPangoLayout, attrs: PPangoAttrList){. cdecl, dynlib: pangolib, importc: "pango_layout_set_attributes".} -proc pango_layout_get_attributes*(layout: PPangoLayout): PPangoAttrList{.cdecl, +proc pango_layout_get_attributes*(layout: PPangoLayout): PPangoAttrList{.cdecl, dynlib: pangolib, importc: "pango_layout_get_attributes".} proc pango_layout_set_text*(layout: PPangoLayout, text: cstring, length: int32){. cdecl, dynlib: pangolib, importc: "pango_layout_set_text".} -proc pango_layout_get_text*(layout: PPangoLayout): cstring{.cdecl, +proc pango_layout_get_text*(layout: PPangoLayout): cstring{.cdecl, dynlib: pangolib, importc: "pango_layout_get_text".} -proc pango_layout_set_markup*(layout: PPangoLayout, markup: cstring, - length: int32){.cdecl, dynlib: pangolib, +proc pango_layout_set_markup*(layout: PPangoLayout, markup: cstring, + length: int32){.cdecl, dynlib: pangolib, importc: "pango_layout_set_markup".} -proc pango_layout_set_markup_with_accel*(layout: PPangoLayout, markup: cstring, - length: int32, accel_marker: gunichar, accel_char: Pgunichar){.cdecl, +proc pango_layout_set_markup_with_accel*(layout: PPangoLayout, markup: cstring, + length: int32, accel_marker: gunichar, accel_char: Pgunichar){.cdecl, dynlib: pangolib, importc: "pango_layout_set_markup_with_accel".} -proc pango_layout_set_font_description*(layout: PPangoLayout, - desc: PPangoFontDescription){.cdecl, +proc pango_layout_set_font_description*(layout: PPangoLayout, + desc: PPangoFontDescription){.cdecl, dynlib: pangolib, importc: "pango_layout_set_font_description".} -proc pango_layout_set_width*(layout: PPangoLayout, width: int32){.cdecl, +proc pango_layout_set_width*(layout: PPangoLayout, width: int32){.cdecl, dynlib: pangolib, importc: "pango_layout_set_width".} -proc pango_layout_get_width*(layout: PPangoLayout): int32{.cdecl, +proc pango_layout_get_width*(layout: PPangoLayout): int32{.cdecl, dynlib: pangolib, importc: "pango_layout_get_width".} -proc pango_layout_set_wrap*(layout: PPangoLayout, wrap: TPangoWrapMode){.cdecl, +proc pango_layout_set_wrap*(layout: PPangoLayout, wrap: TPangoWrapMode){.cdecl, dynlib: pangolib, importc: "pango_layout_set_wrap".} -proc pango_layout_get_wrap*(layout: PPangoLayout): TPangoWrapMode{.cdecl, +proc pango_layout_get_wrap*(layout: PPangoLayout): TPangoWrapMode{.cdecl, dynlib: pangolib, importc: "pango_layout_get_wrap".} -proc pango_layout_set_indent*(layout: PPangoLayout, indent: int32){.cdecl, +proc pango_layout_set_indent*(layout: PPangoLayout, indent: int32){.cdecl, dynlib: pangolib, importc: "pango_layout_set_indent".} -proc pango_layout_get_indent*(layout: PPangoLayout): int32{.cdecl, +proc pango_layout_get_indent*(layout: PPangoLayout): int32{.cdecl, dynlib: pangolib, importc: "pango_layout_get_indent".} -proc pango_layout_set_spacing*(layout: PPangoLayout, spacing: int32){.cdecl, +proc pango_layout_set_spacing*(layout: PPangoLayout, spacing: int32){.cdecl, dynlib: pangolib, importc: "pango_layout_set_spacing".} -proc pango_layout_get_spacing*(layout: PPangoLayout): int32{.cdecl, +proc pango_layout_get_spacing*(layout: PPangoLayout): int32{.cdecl, dynlib: pangolib, importc: "pango_layout_get_spacing".} -proc pango_layout_set_justify*(layout: PPangoLayout, justify: gboolean){.cdecl, +proc pango_layout_set_justify*(layout: PPangoLayout, justify: gboolean){.cdecl, dynlib: pangolib, importc: "pango_layout_set_justify".} -proc pango_layout_get_justify*(layout: PPangoLayout): gboolean{.cdecl, +proc pango_layout_get_justify*(layout: PPangoLayout): gboolean{.cdecl, dynlib: pangolib, importc: "pango_layout_get_justify".} -proc pango_layout_set_alignment*(layout: PPangoLayout, - alignment: TPangoAlignment){.cdecl, +proc pango_layout_set_alignment*(layout: PPangoLayout, + alignment: TPangoAlignment){.cdecl, dynlib: pangolib, importc: "pango_layout_set_alignment".} -proc pango_layout_get_alignment*(layout: PPangoLayout): TPangoAlignment{.cdecl, +proc pango_layout_get_alignment*(layout: PPangoLayout): TPangoAlignment{.cdecl, dynlib: pangolib, importc: "pango_layout_get_alignment".} -proc pango_layout_set_tabs*(layout: PPangoLayout, tabs: PPangoTabArray){.cdecl, +proc pango_layout_set_tabs*(layout: PPangoLayout, tabs: PPangoTabArray){.cdecl, dynlib: pangolib, importc: "pango_layout_set_tabs".} -proc pango_layout_get_tabs*(layout: PPangoLayout): PPangoTabArray{.cdecl, +proc pango_layout_get_tabs*(layout: PPangoLayout): PPangoTabArray{.cdecl, dynlib: pangolib, importc: "pango_layout_get_tabs".} -proc pango_layout_set_single_paragraph_mode*(layout: PPangoLayout, - setting: gboolean){.cdecl, dynlib: pangolib, +proc pango_layout_set_single_paragraph_mode*(layout: PPangoLayout, + setting: gboolean){.cdecl, dynlib: pangolib, importc: "pango_layout_set_single_paragraph_mode".} proc pango_layout_get_single_paragraph_mode*(layout: PPangoLayout): gboolean{. cdecl, dynlib: pangolib, importc: "pango_layout_get_single_paragraph_mode".} -proc pango_layout_context_changed*(layout: PPangoLayout){.cdecl, +proc pango_layout_context_changed*(layout: PPangoLayout){.cdecl, dynlib: pangolib, importc: "pango_layout_context_changed".} -proc pango_layout_get_log_attrs*(layout: PPangoLayout, attrs: var PPangoLogAttr, - n_attrs: Pgint){.cdecl, dynlib: pangolib, +proc pango_layout_get_log_attrs*(layout: PPangoLayout, attrs: var PPangoLogAttr, + n_attrs: Pgint){.cdecl, dynlib: pangolib, importc: "pango_layout_get_log_attrs".} -proc pango_layout_index_to_pos*(layout: PPangoLayout, index: int32, - pos: PPangoRectangle){.cdecl, dynlib: pangolib, +proc pango_layout_index_to_pos*(layout: PPangoLayout, index: int32, + pos: PPangoRectangle){.cdecl, dynlib: pangolib, importc: "pango_layout_index_to_pos".} -proc pango_layout_get_cursor_pos*(layout: PPangoLayout, index: int32, - strong_pos: PPangoRectangle, - weak_pos: PPangoRectangle){.cdecl, +proc pango_layout_get_cursor_pos*(layout: PPangoLayout, index: int32, + strong_pos: PPangoRectangle, + weak_pos: PPangoRectangle){.cdecl, dynlib: pangolib, importc: "pango_layout_get_cursor_pos".} -proc pango_layout_move_cursor_visually*(layout: PPangoLayout, strong: gboolean, - old_index: int32, old_trailing: int32, - direction: int32, new_index, - new_trailing: var int32){.cdecl, +proc pango_layout_move_cursor_visually*(layout: PPangoLayout, strong: gboolean, + old_index: int32, old_trailing: int32, + direction: int32, new_index, + new_trailing: var int32){.cdecl, dynlib: pangolib, importc: "pango_layout_move_cursor_visually".} -proc pango_layout_xy_to_index*(layout: PPangoLayout, x: int32, y: int32, +proc pango_layout_xy_to_index*(layout: PPangoLayout, x: int32, y: int32, index, trailing: var int32): gboolean{. cdecl, dynlib: pangolib, importc: "pango_layout_xy_to_index".} -proc pango_layout_get_extents*(layout: PPangoLayout, ink_rect: PPangoRectangle, - logical_rect: PPangoRectangle){.cdecl, +proc pango_layout_get_extents*(layout: PPangoLayout, ink_rect: PPangoRectangle, + logical_rect: PPangoRectangle){.cdecl, dynlib: pangolib, importc: "pango_layout_get_extents".} -proc pango_layout_get_pixel_extents*(layout: PPangoLayout, - ink_rect: PPangoRectangle, - logical_rect: PPangoRectangle){.cdecl, +proc pango_layout_get_pixel_extents*(layout: PPangoLayout, + ink_rect: PPangoRectangle, + logical_rect: PPangoRectangle){.cdecl, dynlib: pangolib, importc: "pango_layout_get_pixel_extents".} -proc pango_layout_get_size*(layout: PPangoLayout, width: var int32, - height: var int32){.cdecl, dynlib: pangolib, +proc pango_layout_get_size*(layout: PPangoLayout, width: var int32, + height: var int32){.cdecl, dynlib: pangolib, importc: "pango_layout_get_size".} -proc pango_layout_get_pixel_size*(layout: PPangoLayout, width: var int32, - height: var int32){.cdecl, dynlib: pangolib, +proc pango_layout_get_pixel_size*(layout: PPangoLayout, width: var int32, + height: var int32){.cdecl, dynlib: pangolib, importc: "pango_layout_get_pixel_size".} -proc pango_layout_get_line_count*(layout: PPangoLayout): int32{.cdecl, +proc pango_layout_get_line_count*(layout: PPangoLayout): int32{.cdecl, dynlib: pangolib, importc: "pango_layout_get_line_count".} proc pango_layout_get_line*(layout: PPangoLayout, line: int32): PPangoLayoutLine{. cdecl, dynlib: pangolib, importc: "pango_layout_get_line".} -proc pango_layout_get_lines*(layout: PPangoLayout): PGSList{.cdecl, +proc pango_layout_get_lines*(layout: PPangoLayout): PGSList{.cdecl, dynlib: pangolib, importc: "pango_layout_get_lines".} -proc pango_layout_line_ref*(line: PPangoLayoutLine){.cdecl, dynlib: pangolib, +proc pango_layout_line_ref*(line: PPangoLayoutLine){.cdecl, dynlib: pangolib, importc: "pango_layout_line_ref".} -proc pango_layout_line_unref*(line: PPangoLayoutLine){.cdecl, dynlib: pangolib, +proc pango_layout_line_unref*(line: PPangoLayoutLine){.cdecl, dynlib: pangolib, importc: "pango_layout_line_unref".} -proc pango_layout_line_x_to_index*(line: PPangoLayoutLine, x_pos: int32, +proc pango_layout_line_x_to_index*(line: PPangoLayoutLine, x_pos: int32, index: var int32, trailing: var int32): gboolean{. cdecl, dynlib: pangolib, importc: "pango_layout_line_x_to_index".} -proc pango_layout_line_index_to_x*(line: PPangoLayoutLine, index: int32, - trailing: gboolean, x_pos: var int32){.cdecl, +proc pango_layout_line_index_to_x*(line: PPangoLayoutLine, index: int32, + trailing: gboolean, x_pos: var int32){.cdecl, dynlib: pangolib, importc: "pango_layout_line_index_to_x".} -proc pango_layout_line_get_extents*(line: PPangoLayoutLine, - ink_rect: PPangoRectangle, - logical_rect: PPangoRectangle){.cdecl, +proc pango_layout_line_get_extents*(line: PPangoLayoutLine, + ink_rect: PPangoRectangle, + logical_rect: PPangoRectangle){.cdecl, dynlib: pangolib, importc: "pango_layout_line_get_extents".} -proc pango_layout_line_get_pixel_extents*(layout_line: PPangoLayoutLine, - ink_rect: PPangoRectangle, logical_rect: PPangoRectangle){.cdecl, +proc pango_layout_line_get_pixel_extents*(layout_line: PPangoLayoutLine, + ink_rect: PPangoRectangle, logical_rect: PPangoRectangle){.cdecl, dynlib: pangolib, importc: "pango_layout_line_get_pixel_extents".} -proc pango_layout_get_iter*(layout: PPangoLayout): PPangoLayoutIter{.cdecl, +proc pango_layout_get_iter*(layout: PPangoLayout): PPangoLayoutIter{.cdecl, dynlib: pangolib, importc: "pango_layout_get_iter".} -proc pango_layout_iter_free*(iter: PPangoLayoutIter){.cdecl, dynlib: pangolib, +proc pango_layout_iter_free*(iter: PPangoLayoutIter){.cdecl, dynlib: pangolib, importc: "pango_layout_iter_free".} -proc pango_layout_iter_get_index*(iter: PPangoLayoutIter): int32{.cdecl, +proc pango_layout_iter_get_index*(iter: PPangoLayoutIter): int32{.cdecl, dynlib: pangolib, importc: "pango_layout_iter_get_index".} -proc pango_layout_iter_get_run*(iter: PPangoLayoutIter): PPangoLayoutRun{.cdecl, +proc pango_layout_iter_get_run*(iter: PPangoLayoutIter): PPangoLayoutRun{.cdecl, dynlib: pangolib, importc: "pango_layout_iter_get_run".} proc pango_layout_iter_get_line*(iter: PPangoLayoutIter): PPangoLayoutLine{. cdecl, dynlib: pangolib, importc: "pango_layout_iter_get_line".} -proc pango_layout_iter_at_last_line*(iter: PPangoLayoutIter): gboolean{.cdecl, +proc pango_layout_iter_at_last_line*(iter: PPangoLayoutIter): gboolean{.cdecl, dynlib: pangolib, importc: "pango_layout_iter_at_last_line".} -proc pango_layout_iter_next_char*(iter: PPangoLayoutIter): gboolean{.cdecl, +proc pango_layout_iter_next_char*(iter: PPangoLayoutIter): gboolean{.cdecl, dynlib: pangolib, importc: "pango_layout_iter_next_char".} -proc pango_layout_iter_next_cluster*(iter: PPangoLayoutIter): gboolean{.cdecl, +proc pango_layout_iter_next_cluster*(iter: PPangoLayoutIter): gboolean{.cdecl, dynlib: pangolib, importc: "pango_layout_iter_next_cluster".} -proc pango_layout_iter_next_run*(iter: PPangoLayoutIter): gboolean{.cdecl, +proc pango_layout_iter_next_run*(iter: PPangoLayoutIter): gboolean{.cdecl, dynlib: pangolib, importc: "pango_layout_iter_next_run".} -proc pango_layout_iter_next_line*(iter: PPangoLayoutIter): gboolean{.cdecl, +proc pango_layout_iter_next_line*(iter: PPangoLayoutIter): gboolean{.cdecl, dynlib: pangolib, importc: "pango_layout_iter_next_line".} -proc pango_layout_iter_get_char_extents*(iter: PPangoLayoutIter, +proc pango_layout_iter_get_char_extents*(iter: PPangoLayoutIter, logical_rect: PPangoRectangle){.cdecl, dynlib: pangolib, importc: "pango_layout_iter_get_char_extents".} -proc pango_layout_iter_get_cluster_extents*(iter: PPangoLayoutIter, - ink_rect: PPangoRectangle, logical_rect: PPangoRectangle){.cdecl, +proc pango_layout_iter_get_cluster_extents*(iter: PPangoLayoutIter, + ink_rect: PPangoRectangle, logical_rect: PPangoRectangle){.cdecl, dynlib: pangolib, importc: "pango_layout_iter_get_cluster_extents".} -proc pango_layout_iter_get_run_extents*(iter: PPangoLayoutIter, - ink_rect: PPangoRectangle, - logical_rect: PPangoRectangle){.cdecl, +proc pango_layout_iter_get_run_extents*(iter: PPangoLayoutIter, + ink_rect: PPangoRectangle, + logical_rect: PPangoRectangle){.cdecl, dynlib: pangolib, importc: "pango_layout_iter_get_run_extents".} -proc pango_layout_iter_get_line_extents*(iter: PPangoLayoutIter, - ink_rect: PPangoRectangle, logical_rect: PPangoRectangle){.cdecl, +proc pango_layout_iter_get_line_extents*(iter: PPangoLayoutIter, + ink_rect: PPangoRectangle, logical_rect: PPangoRectangle){.cdecl, dynlib: pangolib, importc: "pango_layout_iter_get_line_extents".} -proc pango_layout_iter_get_line_yrange*(iter: PPangoLayoutIter, y0: var int32, - y1: var int32){.cdecl, dynlib: pangolib, +proc pango_layout_iter_get_line_yrange*(iter: PPangoLayoutIter, y0: var int32, + y1: var int32){.cdecl, dynlib: pangolib, importc: "pango_layout_iter_get_line_yrange".} -proc pango_layout_iter_get_layout_extents*(iter: PPangoLayoutIter, - ink_rect: PPangoRectangle, logical_rect: PPangoRectangle){.cdecl, +proc pango_layout_iter_get_layout_extents*(iter: PPangoLayoutIter, + ink_rect: PPangoRectangle, logical_rect: PPangoRectangle){.cdecl, dynlib: pangolib, importc: "pango_layout_iter_get_layout_extents".} -proc pango_layout_iter_get_baseline*(iter: PPangoLayoutIter): int32{.cdecl, +proc pango_layout_iter_get_baseline*(iter: PPangoLayoutIter): int32{.cdecl, dynlib: pangolib, importc: "pango_layout_iter_get_baseline".} proc PANGO_TYPE_TAB_ARRAY*(): GType proc pango_tab_array_new*(initial_size: gint, positions_in_pixels: gboolean): PPangoTabArray{. cdecl, dynlib: pangolib, importc: "pango_tab_array_new".} -proc pango_tab_array_get_type*(): GType{.cdecl, dynlib: pangolib, +proc pango_tab_array_get_type*(): GType{.cdecl, dynlib: pangolib, importc: "pango_tab_array_get_type".} -proc pango_tab_array_copy*(src: PPangoTabArray): PPangoTabArray{.cdecl, +proc pango_tab_array_copy*(src: PPangoTabArray): PPangoTabArray{.cdecl, dynlib: pangolib, importc: "pango_tab_array_copy".} -proc pango_tab_array_free*(tab_array: PPangoTabArray){.cdecl, dynlib: pangolib, +proc pango_tab_array_free*(tab_array: PPangoTabArray){.cdecl, dynlib: pangolib, importc: "pango_tab_array_free".} -proc pango_tab_array_get_size*(tab_array: PPangoTabArray): gint{.cdecl, +proc pango_tab_array_get_size*(tab_array: PPangoTabArray): gint{.cdecl, dynlib: pangolib, importc: "pango_tab_array_get_size".} -proc pango_tab_array_resize*(tab_array: PPangoTabArray, new_size: gint){.cdecl, +proc pango_tab_array_resize*(tab_array: PPangoTabArray, new_size: gint){.cdecl, dynlib: pangolib, importc: "pango_tab_array_resize".} -proc pango_tab_array_set_tab*(tab_array: PPangoTabArray, tab_index: gint, - alignment: TPangoTabAlign, location: gint){.cdecl, +proc pango_tab_array_set_tab*(tab_array: PPangoTabArray, tab_index: gint, + alignment: TPangoTabAlign, location: gint){.cdecl, dynlib: pangolib, importc: "pango_tab_array_set_tab".} -proc pango_tab_array_get_tab*(tab_array: PPangoTabArray, tab_index: gint, +proc pango_tab_array_get_tab*(tab_array: PPangoTabArray, tab_index: gint, alignment: PPangoTabAlign, location: Pgint){. cdecl, dynlib: pangolib, importc: "pango_tab_array_get_tab".} proc pango_tab_array_get_positions_in_pixels*(tab_array: PPangoTabArray): gboolean{. cdecl, dynlib: pangolib, importc: "pango_tab_array_get_positions_in_pixels".} -proc PANGO_ASCENT*(rect: TPangoRectangle): int32 = +proc PANGO_ASCENT*(rect: TPangoRectangle): int32 = result = - int(rect.y) -proc PANGO_DESCENT*(rect: TPangoRectangle): int32 = +proc PANGO_DESCENT*(rect: TPangoRectangle): int32 = result = int(rect.y) + int(rect.height) -proc PANGO_LBEARING*(rect: TPangoRectangle): int32 = +proc PANGO_LBEARING*(rect: TPangoRectangle): int32 = result = rect.x -proc PANGO_RBEARING*(rect: TPangoRectangle): int32 = - result = int(rect.x) + (rect.width) +proc PANGO_RBEARING*(rect: TPangoRectangle): int32 = + result = (rect.x) + (rect.width) -proc PANGO_TYPE_LANGUAGE*(): GType = +proc PANGO_TYPE_LANGUAGE*(): GType = result = pango_language_get_type() -proc pango_language_to_string*(language: PPangoLanguage): cstring = +proc pango_language_to_string*(language: PPangoLanguage): cstring = result = cast[cstring](language) -proc PANGO_PIXELS*(d: int): int = - if d >= 0: +proc PANGO_PIXELS*(d: int): int = + if d >= 0: result = (d + (PANGO_SCALE div 2)) div PANGO_SCALE - else: + else: result = (d - (PANGO_SCALE div 2)) div PANGO_SCALE -proc PANGO_TYPE_COLOR*(): GType = +proc PANGO_TYPE_COLOR*(): GType = result = pango_color_get_type() -proc PANGO_TYPE_ATTR_LIST*(): GType = +proc PANGO_TYPE_ATTR_LIST*(): GType = result = pango_attr_list_get_type() -proc is_line_break*(a: var TPangoLogAttr): guint = +proc is_line_break*(a: var TPangoLogAttr): guint = result = (a.flag0 and bm_TPangoLogAttr_is_line_break) shr bp_TPangoLogAttr_is_line_break -proc set_is_line_break*(a: var TPangoLogAttr, `is_line_break`: guint) = +proc set_is_line_break*(a: var TPangoLogAttr, `is_line_break`: guint) = a.flag0 = a.flag0 or - ((`is_line_break` shl bp_TPangoLogAttr_is_line_break) and + (int16(`is_line_break` shl bp_TPangoLogAttr_is_line_break) and bm_TPangoLogAttr_is_line_break) -proc is_mandatory_break*(a: var TPangoLogAttr): guint = +proc is_mandatory_break*(a: var TPangoLogAttr): guint = result = (a.flag0 and bm_TPangoLogAttr_is_mandatory_break) shr bp_TPangoLogAttr_is_mandatory_break -proc set_is_mandatory_break*(a: var TPangoLogAttr, `is_mandatory_break`: guint) = +proc set_is_mandatory_break*(a: var TPangoLogAttr, `is_mandatory_break`: guint) = a.flag0 = a.flag0 or - ((`is_mandatory_break` shl bp_TPangoLogAttr_is_mandatory_break) and + (int16(`is_mandatory_break` shl bp_TPangoLogAttr_is_mandatory_break) and bm_TPangoLogAttr_is_mandatory_break) -proc is_char_break*(a: var TPangoLogAttr): guint = +proc is_char_break*(a: var TPangoLogAttr): guint = result = (a.flag0 and bm_TPangoLogAttr_is_char_break) shr bp_TPangoLogAttr_is_char_break -proc set_is_char_break*(a: var TPangoLogAttr, `is_char_break`: guint) = +proc set_is_char_break*(a: var TPangoLogAttr, `is_char_break`: guint) = a.flag0 = a.flag0 or - ((`is_char_break` shl bp_TPangoLogAttr_is_char_break) and + (int16(`is_char_break` shl bp_TPangoLogAttr_is_char_break) and bm_TPangoLogAttr_is_char_break) -proc is_white*(a: var TPangoLogAttr): guint = +proc is_white*(a: var TPangoLogAttr): guint = result = (a.flag0 and bm_TPangoLogAttr_is_white) shr bp_TPangoLogAttr_is_white -proc set_is_white*(a: var TPangoLogAttr, `is_white`: guint) = +proc set_is_white*(a: var TPangoLogAttr, `is_white`: guint) = a.flag0 = a.flag0 or - ((`is_white` shl bp_TPangoLogAttr_is_white) and + (int16(`is_white` shl bp_TPangoLogAttr_is_white) and bm_TPangoLogAttr_is_white) -proc is_cursor_position*(a: var TPangoLogAttr): guint = +proc is_cursor_position*(a: var TPangoLogAttr): guint = result = (a.flag0 and bm_TPangoLogAttr_is_cursor_position) shr bp_TPangoLogAttr_is_cursor_position -proc set_is_cursor_position*(a: var TPangoLogAttr, `is_cursor_position`: guint) = +proc set_is_cursor_position*(a: var TPangoLogAttr, `is_cursor_position`: guint) = a.flag0 = a.flag0 or - ((`is_cursor_position` shl bp_TPangoLogAttr_is_cursor_position) and + (int16(`is_cursor_position` shl bp_TPangoLogAttr_is_cursor_position) and bm_TPangoLogAttr_is_cursor_position) -proc is_word_start*(a: var TPangoLogAttr): guint = +proc is_word_start*(a: var TPangoLogAttr): guint = result = (a.flag0 and bm_TPangoLogAttr_is_word_start) shr bp_TPangoLogAttr_is_word_start -proc set_is_word_start*(a: var TPangoLogAttr, `is_word_start`: guint) = +proc set_is_word_start*(a: var TPangoLogAttr, `is_word_start`: guint) = a.flag0 = a.flag0 or - ((`is_word_start` shl bp_TPangoLogAttr_is_word_start) and + (int16(`is_word_start` shl bp_TPangoLogAttr_is_word_start) and bm_TPangoLogAttr_is_word_start) -proc is_word_end*(a: var TPangoLogAttr): guint = +proc is_word_end*(a: var TPangoLogAttr): guint = result = (a.flag0 and bm_TPangoLogAttr_is_word_end) shr bp_TPangoLogAttr_is_word_end -proc set_is_word_end*(a: var TPangoLogAttr, `is_word_end`: guint) = +proc set_is_word_end*(a: var TPangoLogAttr, `is_word_end`: guint) = a.flag0 = a.flag0 or - ((`is_word_end` shl bp_TPangoLogAttr_is_word_end) and + (int16(`is_word_end` shl bp_TPangoLogAttr_is_word_end) and bm_TPangoLogAttr_is_word_end) -proc is_sentence_boundary*(a: var TPangoLogAttr): guint = +proc is_sentence_boundary*(a: var TPangoLogAttr): guint = result = (a.flag0 and bm_TPangoLogAttr_is_sentence_boundary) shr bp_TPangoLogAttr_is_sentence_boundary -proc set_is_sentence_boundary*(a: var TPangoLogAttr, - `is_sentence_boundary`: guint) = +proc set_is_sentence_boundary*(a: var TPangoLogAttr, + `is_sentence_boundary`: guint) = a.flag0 = a.flag0 or - ((`is_sentence_boundary` shl bp_TPangoLogAttr_is_sentence_boundary) and + (int16(`is_sentence_boundary` shl bp_TPangoLogAttr_is_sentence_boundary) and bm_TPangoLogAttr_is_sentence_boundary) -proc is_sentence_start*(a: var TPangoLogAttr): guint = +proc is_sentence_start*(a: var TPangoLogAttr): guint = result = (a.flag0 and bm_TPangoLogAttr_is_sentence_start) shr bp_TPangoLogAttr_is_sentence_start -proc set_is_sentence_start*(a: var TPangoLogAttr, `is_sentence_start`: guint) = +proc set_is_sentence_start*(a: var TPangoLogAttr, `is_sentence_start`: guint) = a.flag0 = a.flag0 or - ((`is_sentence_start` shl bp_TPangoLogAttr_is_sentence_start) and + (int16(`is_sentence_start` shl bp_TPangoLogAttr_is_sentence_start) and bm_TPangoLogAttr_is_sentence_start) -proc is_sentence_end*(a: var TPangoLogAttr): guint = +proc is_sentence_end*(a: var TPangoLogAttr): guint = result = (a.flag0 and bm_TPangoLogAttr_is_sentence_end) shr bp_TPangoLogAttr_is_sentence_end -proc set_is_sentence_end*(a: var TPangoLogAttr, `is_sentence_end`: guint) = +proc set_is_sentence_end*(a: var TPangoLogAttr, `is_sentence_end`: guint) = a.flag0 = a.flag0 or - ((`is_sentence_end` shl bp_TPangoLogAttr_is_sentence_end) and + (int16(`is_sentence_end` shl bp_TPangoLogAttr_is_sentence_end) and bm_TPangoLogAttr_is_sentence_end) -proc PANGO_TYPE_CONTEXT*(): GType = +proc PANGO_TYPE_CONTEXT*(): GType = result = pango_context_get_type() -proc PANGO_CONTEXT*(anObject: pointer): PPangoContext = +proc PANGO_CONTEXT*(anObject: pointer): PPangoContext = result = cast[PPangoContext](G_TYPE_CHECK_INSTANCE_CAST(anObject, PANGO_TYPE_CONTEXT())) -proc PANGO_CONTEXT_CLASS*(klass: pointer): PPangoContextClass = +proc PANGO_CONTEXT_CLASS*(klass: pointer): PPangoContextClass = result = cast[PPangoContextClass](G_TYPE_CHECK_CLASS_CAST(klass, PANGO_TYPE_CONTEXT())) -proc PANGO_IS_CONTEXT*(anObject: pointer): bool = +proc PANGO_IS_CONTEXT*(anObject: pointer): bool = result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, PANGO_TYPE_CONTEXT()) -proc PANGO_IS_CONTEXT_CLASS*(klass: pointer): bool = +proc PANGO_IS_CONTEXT_CLASS*(klass: pointer): bool = result = G_TYPE_CHECK_CLASS_TYPE(klass, PANGO_TYPE_CONTEXT()) -proc PANGO_CONTEXT_GET_CLASS*(obj: PPangoContext): PPangoContextClass = +proc PANGO_CONTEXT_GET_CLASS*(obj: PPangoContext): PPangoContextClass = result = cast[PPangoContextClass](G_TYPE_INSTANCE_GET_CLASS(obj, PANGO_TYPE_CONTEXT())) -proc PANGO_TYPE_FONTSET*(): GType = +proc PANGO_TYPE_FONTSET*(): GType = result = pango_fontset_get_type() -proc PANGO_FONTSET*(anObject: pointer): PPangoFontset = +proc PANGO_FONTSET*(anObject: pointer): PPangoFontset = result = cast[PPangoFontset](G_TYPE_CHECK_INSTANCE_CAST(anObject, PANGO_TYPE_FONTSET())) -proc PANGO_IS_FONTSET*(anObject: pointer): bool = +proc PANGO_IS_FONTSET*(anObject: pointer): bool = result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, PANGO_TYPE_FONTSET()) -proc PANGO_FONTSET_CLASS*(klass: pointer): PPangoFontsetClass = +proc PANGO_FONTSET_CLASS*(klass: pointer): PPangoFontsetClass = result = cast[PPangoFontsetClass](G_TYPE_CHECK_CLASS_CAST(klass, PANGO_TYPE_FONTSET())) -proc PANGO_IS_FONTSET_CLASS*(klass: pointer): bool = +proc PANGO_IS_FONTSET_CLASS*(klass: pointer): bool = result = G_TYPE_CHECK_CLASS_TYPE(klass, PANGO_TYPE_FONTSET()) -proc PANGO_FONTSET_GET_CLASS*(obj: PPangoFontset): PPangoFontsetClass = +proc PANGO_FONTSET_GET_CLASS*(obj: PPangoFontset): PPangoFontsetClass = result = cast[PPangoFontsetClass](G_TYPE_INSTANCE_GET_CLASS(obj, PANGO_TYPE_FONTSET())) proc pango_fontset_simple_get_type(): GType {.importc, cdecl, dynlib: pangolib.} -proc PANGO_TYPE_FONTSET_SIMPLE*(): GType = +proc PANGO_TYPE_FONTSET_SIMPLE*(): GType = result = pango_fontset_simple_get_type() -proc PANGO_FONTSET_SIMPLE*(anObject: pointer): PPangoFontsetSimple = - result = cast[PPangoFontsetSimple](G_TYPE_CHECK_INSTANCE_CAST(anObject, +proc PANGO_FONTSET_SIMPLE*(anObject: pointer): PPangoFontsetSimple = + result = cast[PPangoFontsetSimple](G_TYPE_CHECK_INSTANCE_CAST(anObject, PANGO_TYPE_FONTSET_SIMPLE())) -proc PANGO_IS_FONTSET_SIMPLE*(anObject: pointer): bool = +proc PANGO_IS_FONTSET_SIMPLE*(anObject: pointer): bool = result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, PANGO_TYPE_FONTSET_SIMPLE()) -proc PANGO_TYPE_FONT_DESCRIPTION*(): GType = +proc PANGO_TYPE_FONT_DESCRIPTION*(): GType = result = pango_font_description_get_type() -proc PANGO_TYPE_FONT_METRICS*(): GType = +proc PANGO_TYPE_FONT_METRICS*(): GType = result = pango_font_metrics_get_type() -proc PANGO_TYPE_FONT_FAMILY*(): GType = +proc PANGO_TYPE_FONT_FAMILY*(): GType = result = pango_font_family_get_type() -proc PANGO_FONT_FAMILY*(anObject: pointer): PPangoFontFamily = - result = cast[PPangoFontFamily](G_TYPE_CHECK_INSTANCE_CAST(anObject, +proc PANGO_FONT_FAMILY*(anObject: pointer): PPangoFontFamily = + result = cast[PPangoFontFamily](G_TYPE_CHECK_INSTANCE_CAST(anObject, PANGO_TYPE_FONT_FAMILY())) -proc PANGO_IS_FONT_FAMILY*(anObject: Pointer): bool = +proc PANGO_IS_FONT_FAMILY*(anObject: Pointer): bool = result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, PANGO_TYPE_FONT_FAMILY()) -proc PANGO_FONT_FAMILY_CLASS*(klass: Pointer): PPangoFontFamilyClass = - result = cast[PPangoFontFamilyClass](G_TYPE_CHECK_CLASS_CAST(klass, +proc PANGO_FONT_FAMILY_CLASS*(klass: Pointer): PPangoFontFamilyClass = + result = cast[PPangoFontFamilyClass](G_TYPE_CHECK_CLASS_CAST(klass, PANGO_TYPE_FONT_FAMILY())) -proc PANGO_IS_FONT_FAMILY_CLASS*(klass: Pointer): bool = +proc PANGO_IS_FONT_FAMILY_CLASS*(klass: Pointer): bool = result = G_TYPE_CHECK_CLASS_TYPE(klass, PANGO_TYPE_FONT_FAMILY()) -proc PANGO_FONT_FAMILY_GET_CLASS*(obj: PPangoFontFamily): PPangoFontFamilyClass = - result = cast[PPangoFontFamilyClass](G_TYPE_INSTANCE_GET_CLASS(obj, +proc PANGO_FONT_FAMILY_GET_CLASS*(obj: PPangoFontFamily): PPangoFontFamilyClass = + result = cast[PPangoFontFamilyClass](G_TYPE_INSTANCE_GET_CLASS(obj, PANGO_TYPE_FONT_FAMILY())) -proc PANGO_TYPE_FONT_FACE*(): GType = +proc PANGO_TYPE_FONT_FACE*(): GType = result = pango_font_face_get_type() -proc PANGO_FONT_FACE*(anObject: Pointer): PPangoFontFace = - result = cast[PPangoFontFace](G_TYPE_CHECK_INSTANCE_CAST(anObject, +proc PANGO_FONT_FACE*(anObject: Pointer): PPangoFontFace = + result = cast[PPangoFontFace](G_TYPE_CHECK_INSTANCE_CAST(anObject, PANGO_TYPE_FONT_FACE())) -proc PANGO_IS_FONT_FACE*(anObject: Pointer): bool = +proc PANGO_IS_FONT_FACE*(anObject: Pointer): bool = result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, PANGO_TYPE_FONT_FACE()) -proc PANGO_FONT_FACE_CLASS*(klass: Pointer): PPangoFontFaceClass = - result = cast[PPangoFontFaceClass](G_TYPE_CHECK_CLASS_CAST(klass, +proc PANGO_FONT_FACE_CLASS*(klass: Pointer): PPangoFontFaceClass = + result = cast[PPangoFontFaceClass](G_TYPE_CHECK_CLASS_CAST(klass, PANGO_TYPE_FONT_FACE())) -proc PANGO_IS_FONT_FACE_CLASS*(klass: Pointer): bool = +proc PANGO_IS_FONT_FACE_CLASS*(klass: Pointer): bool = result = G_TYPE_CHECK_CLASS_TYPE(klass, PANGO_TYPE_FONT_FACE()) -proc PANGO_FONT_FACE_GET_CLASS*(obj: Pointer): PPangoFontFaceClass = - result = cast[PPangoFontFaceClass](G_TYPE_INSTANCE_GET_CLASS(obj, +proc PANGO_FONT_FACE_GET_CLASS*(obj: Pointer): PPangoFontFaceClass = + result = cast[PPangoFontFaceClass](G_TYPE_INSTANCE_GET_CLASS(obj, PANGO_TYPE_FONT_FACE())) -proc PANGO_TYPE_FONT*(): GType = +proc PANGO_TYPE_FONT*(): GType = result = pango_font_get_type() -proc PANGO_FONT*(anObject: Pointer): PPangoFont = +proc PANGO_FONT*(anObject: Pointer): PPangoFont = result = cast[PPangoFont](G_TYPE_CHECK_INSTANCE_CAST(anObject, PANGO_TYPE_FONT())) -proc PANGO_IS_FONT*(anObject: Pointer): bool = +proc PANGO_IS_FONT*(anObject: Pointer): bool = result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, PANGO_TYPE_FONT()) -proc PANGO_FONT_CLASS*(klass: Pointer): PPangoFontClass = +proc PANGO_FONT_CLASS*(klass: Pointer): PPangoFontClass = result = cast[PPangoFontClass](G_TYPE_CHECK_CLASS_CAST(klass, PANGO_TYPE_FONT())) -proc PANGO_IS_FONT_CLASS*(klass: Pointer): bool = +proc PANGO_IS_FONT_CLASS*(klass: Pointer): bool = result = G_TYPE_CHECK_CLASS_TYPE(klass, PANGO_TYPE_FONT()) -proc PANGO_FONT_GET_CLASS*(obj: PPangoFont): PPangoFontClass = +proc PANGO_FONT_GET_CLASS*(obj: PPangoFont): PPangoFontClass = result = cast[PPangoFontClass](G_TYPE_INSTANCE_GET_CLASS(obj, PANGO_TYPE_FONT())) -proc PANGO_TYPE_FONT_MAP*(): GType = +proc PANGO_TYPE_FONT_MAP*(): GType = result = pango_font_map_get_type() -proc PANGO_FONT_MAP*(anObject: pointer): PPangoFontmap = - result = cast[PPangoFontmap](G_TYPE_CHECK_INSTANCE_CAST(anObject, +proc PANGO_FONT_MAP*(anObject: pointer): PPangoFontmap = + result = cast[PPangoFontmap](G_TYPE_CHECK_INSTANCE_CAST(anObject, PANGO_TYPE_FONT_MAP())) -proc PANGO_IS_FONT_MAP*(anObject: pointer): bool = +proc PANGO_IS_FONT_MAP*(anObject: pointer): bool = result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, PANGO_TYPE_FONT_MAP()) -proc PANGO_FONT_MAP_CLASS*(klass: pointer): PPangoFontMapClass = +proc PANGO_FONT_MAP_CLASS*(klass: pointer): PPangoFontMapClass = result = cast[PPangoFontMapClass](G_TYPE_CHECK_CLASS_CAST(klass, PANGO_TYPE_FONT_MAP())) -proc PANGO_IS_FONT_MAP_CLASS*(klass: pointer): bool = +proc PANGO_IS_FONT_MAP_CLASS*(klass: pointer): bool = result = G_TYPE_CHECK_CLASS_TYPE(klass, PANGO_TYPE_FONT_MAP()) -proc PANGO_FONT_MAP_GET_CLASS*(obj: PPangoFontMap): PPangoFontMapClass = +proc PANGO_FONT_MAP_GET_CLASS*(obj: PPangoFontMap): PPangoFontMapClass = result = cast[PPangoFontMapClass](G_TYPE_INSTANCE_GET_CLASS(obj, PANGO_TYPE_FONT_MAP())) -proc is_cluster_start*(a: var TPangoGlyphVisAttr): guint = +proc is_cluster_start*(a: var TPangoGlyphVisAttr): guint = result = (a.flag0 and bm_TPangoGlyphVisAttr_is_cluster_start) shr bp_TPangoGlyphVisAttr_is_cluster_start -proc set_is_cluster_start*(a: var TPangoGlyphVisAttr, `is_cluster_start`: guint) = +proc set_is_cluster_start*(a: var TPangoGlyphVisAttr, `is_cluster_start`: guint) = a.flag0 = a.flag0 or - ((`is_cluster_start` shl bp_TPangoGlyphVisAttr_is_cluster_start) and + (int16(`is_cluster_start` shl bp_TPangoGlyphVisAttr_is_cluster_start) and bm_TPangoGlyphVisAttr_is_cluster_start) -proc PANGO_TYPE_GLYPH_STRING*(): GType = +proc PANGO_TYPE_GLYPH_STRING*(): GType = result = pango_glyph_string_get_type() -proc PANGO_TYPE_LAYOUT*(): GType = +proc PANGO_TYPE_LAYOUT*(): GType = result = pango_layout_get_type() -proc PANGO_LAYOUT*(anObject: pointer): PPangoLayout = +proc PANGO_LAYOUT*(anObject: pointer): PPangoLayout = result = cast[PPangoLayout](G_TYPE_CHECK_INSTANCE_CAST(anObject, PANGO_TYPE_LAYOUT())) -proc PANGO_LAYOUT_CLASS*(klass: pointer): PPangoLayoutClass = +proc PANGO_LAYOUT_CLASS*(klass: pointer): PPangoLayoutClass = result = cast[PPangoLayoutClass](G_TYPE_CHECK_CLASS_CAST(klass, PANGO_TYPE_LAYOUT())) -proc PANGO_IS_LAYOUT*(anObject: pointer): bool = +proc PANGO_IS_LAYOUT*(anObject: pointer): bool = result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, PANGO_TYPE_LAYOUT()) -proc PANGO_IS_LAYOUT_CLASS*(klass: pointer): bool = +proc PANGO_IS_LAYOUT_CLASS*(klass: pointer): bool = result = G_TYPE_CHECK_CLASS_TYPE(klass, PANGO_TYPE_LAYOUT()) -proc PANGO_LAYOUT_GET_CLASS*(obj: PPangoLayout): PPangoLayoutClass = +proc PANGO_LAYOUT_GET_CLASS*(obj: PPangoLayout): PPangoLayoutClass = result = cast[PPangoLayoutClass](G_TYPE_INSTANCE_GET_CLASS(obj, PANGO_TYPE_LAYOUT())) -proc PANGO_TYPE_TAB_ARRAY*(): GType = +proc PANGO_TYPE_TAB_ARRAY*(): GType = result = pango_tab_array_get_type() diff --git a/lib/base/gtk/pangoutils.nim b/lib/base/gtk/pangoutils.nim index 2c328b59a..6033cca7d 100644 --- a/lib/base/gtk/pangoutils.nim +++ b/lib/base/gtk/pangoutils.nim @@ -1,29 +1,28 @@ -import +import glib2, pango -type +type pint32* = ptr int32 -proc pango_split_file_list*(str: cstring): PPchar{.cdecl, dynlib: pangolib, +proc pango_split_file_list*(str: cstring): PPchar{.cdecl, dynlib: pangolib, importc: "pango_split_file_list".} -proc pango_trim_string*(str: cstring): cstring{.cdecl, dynlib: pangolib, +proc pango_trim_string*(str: cstring): cstring{.cdecl, dynlib: pangolib, importc: "pango_trim_string".} -proc pango_read_line*(stream: TFile, str: PGString): gint{.cdecl, +proc pango_read_line*(stream: TFile, str: PGString): gint{.cdecl, dynlib: pangolib, importc: "pango_read_line".} -proc pango_skip_space*(pos: PPchar): gboolean{.cdecl, dynlib: pangolib, +proc pango_skip_space*(pos: PPchar): gboolean{.cdecl, dynlib: pangolib, importc: "pango_skip_space".} -proc pango_scan_word*(pos: PPchar, OutStr: PGString): gboolean{.cdecl, +proc pango_scan_word*(pos: PPchar, OutStr: PGString): gboolean{.cdecl, dynlib: pangolib, importc: "pango_scan_word".} -proc pango_scan_string*(pos: PPchar, OutStr: PGString): gboolean{.cdecl, +proc pango_scan_string*(pos: PPchar, OutStr: PGString): gboolean{.cdecl, dynlib: pangolib, importc: "pango_scan_string".} -proc pango_scan_int*(pos: PPchar, OutInt: pint32): gboolean{.cdecl, +proc pango_scan_int*(pos: PPchar, OutInt: pint32): gboolean{.cdecl, dynlib: pangolib, importc: "pango_scan_int".} -when defined(PANGO_ENABLE_BACKEND): - proc pango_config_key_get(key: cstring): cstring{.cdecl, dynlib: pangolib, - importc: "pango_config_key_get".} - proc pango_lookup_aliases(fontname: cstring, families: PPPchar, - n_families: pint32){.cdecl, dynlib: pangolib, - importc: "pango_lookup_aliases".} +proc pango_config_key_get(key: cstring): cstring{.cdecl, dynlib: pangolib, + importc: "pango_config_key_get".} +proc pango_lookup_aliases(fontname: cstring, families: PPPchar, + n_families: pint32){.cdecl, dynlib: pangolib, + importc: "pango_lookup_aliases".} proc pango_parse_style*(str: cstring, style: PPangoStyle, warn: gboolean): gboolean{. cdecl, dynlib: pangolib, importc: "pango_parse_style".} proc pango_parse_variant*(str: cstring, variant: PPangoVariant, warn: gboolean): gboolean{. @@ -32,15 +31,14 @@ proc pango_parse_weight*(str: cstring, weight: PPangoWeight, warn: gboolean): gb cdecl, dynlib: pangolib, importc: "pango_parse_weight".} proc pango_parse_stretch*(str: cstring, stretch: PPangoStretch, warn: gboolean): gboolean{. cdecl, dynlib: pangolib, importc: "pango_parse_stretch".} -when defined(PANGO_ENABLE_BACKEND): - proc pango_get_sysconf_subdirectory(): cstring{.cdecl, dynlib: pangolib, - importc: "pango_get_sysconf_subdirectory".} - proc pango_get_lib_subdirectory(): cstring{.cdecl, dynlib: pangolib, - importc: "pango_get_lib_subdirectory".} -proc pango_log2vis_get_embedding_levels*(str: Pgunichar, len: int32, - pbase_dir: PPangoDirection, embedding_level_list: Pguint8): gboolean{.cdecl, +proc pango_get_sysconf_subdirectory(): cstring{.cdecl, dynlib: pangolib, + importc: "pango_get_sysconf_subdirectory".} +proc pango_get_lib_subdirectory(): cstring{.cdecl, dynlib: pangolib, + importc: "pango_get_lib_subdirectory".} +proc pango_log2vis_get_embedding_levels*(str: Pgunichar, len: int32, + pbase_dir: PPangoDirection, embedding_level_list: Pguint8): gboolean{.cdecl, dynlib: pangolib, importc: "pango_log2vis_get_embedding_levels".} proc pango_get_mirror_char*(ch: gunichar, mirrored_ch: Pgunichar): gboolean{. cdecl, dynlib: pangolib, importc: "pango_get_mirror_char".} proc pango_language_get_sample_string*(language: PPangoLanguage): cstring{. - cdecl, dynlib: pangolib, importc: "pango_language_get_sample_string".} \ No newline at end of file + cdecl, dynlib: pangolib, importc: "pango_language_get_sample_string".} diff --git a/lib/base/lex.nim b/lib/base/lex.nim deleted file mode 100644 index 34f0c32a8..000000000 --- a/lib/base/lex.nim +++ /dev/null @@ -1,73 +0,0 @@ -# Lexer generator for Nimrod -# (c) 2008 Andreas Rumpf - -# Stress testing for the macro feature - -# the syntax that should be supported is: - -# template numpostfix = -# '\'' & 'F'|'f'|'i'|'I' & "32"|"64"|"8"|"16" -# template edigits = -# 'e'|'E' & +digits -# tokens( -# tkIdent: +UniIdentStart & *UniIdentRest, -# tkHexNumber: '0' & ('x'|'X') & +hexDigits & ?( numpostfix ), -# tkOctNumber: '0' & ('c'|'C') & +octDigits & ?( numpostfix ), -# tkBinNumber: '0' & ('b'|'B') & +binDigits & ?( numpostfix ), -# tkIntNumber: +digits & ?( numpostfix ), -# tkFloatNumber: +digits & ('.' & +digits & ?(edigits) | edigits) & ?(numpostfix), -# -# ) -# actions( -# tkIdent: lookup -# ) -# - -# -# match inputstream -# of +('A'..'Z' | '_' | 'a'..'z') *('A'..'Z' | '_' | 'a'..'z' | '0'..'9') : -# -# x = inputstream[pos..length] -# of '0' 'x' +('0'..'9' | 'a'..'f' | '_' | 'A'..'F') : -# y = ... - -const - AsciiLetter = {'A'..'Z', 'a'..'z'} - uniLetter = AsciiLetter + {'\128'..'\255'} - digits = {'0'..'9'} - hexDigits = {'0'..'9', 'a'..'f', 'A'..'F'} - octDigits = {'0'..'7'} - binDigits = {'0'..'1'} - AsciiIdentStart = AsciiLetter + {'_'} - AsciiIdentRest = AsciiIdentStart + Digits - UniIdentStart = UniLetter + {'_'} - UniIdentRest = UniIdentStart + Digits - -# --> if match(s, +AsciiIdentStart & *AsciiIdentRest): - -# Regular expressions in Nimrod itself! -# ------------------------------------- -# -# 'a' -- matches the character a -# 'a'..'z' -- range operator '-' -# 'A' | 'B' -- alternative operator | -# * 'a' -- prefix * is needed -# + 'a' -- prefix + is needed -# ? 'a' -- prefix ? is needed -# *? prefix is needed -# +? prefix is needed -# letter -- character classes with real names! -# letters -# white -# whites -# any -- any character -# () -- are Nimrod syntax -# ! 'a'-'z' -# -# -- concatentation via proc call: -# -# re('A' 'Z' *word ) - -macro re(n: expr): expr = - - result = newCall("magic_re", x) diff --git a/lib/base/nregex.nim b/lib/base/nregex.nim deleted file mode 100644 index 77afb8421..000000000 --- a/lib/base/nregex.nim +++ /dev/null @@ -1,124 +0,0 @@ -# new implementation of regular expressions - -type - TRegexKind = enum - regNone, - regChar, - regSet, - regConc, - regAlt, - regStar, - regPlus, - regMN, - regNewline - - TRegex = object of TObject - case kind: TRegexKind - of regChar: c: char - of regSet: s: ref set[char] - else: a, b: PRegEx - - PRegEx* = ref TRegEx - - TRegExFlag* = enum ## Flags concerning the semantics of regular expressions - reCaseInsensitive, ## case insensitive match - reStyleInsensitive ## style insensitive match - - - TRegExFlags* = set[TRegExFlag] - ## Flags concerning the semantics of regular expressions - -proc raiseRegex(msg: string) {.noreturn.} = - var e: ref Exception - new(e) - e.msg = msg - raise e - -proc compileAux(i: int, s: string, r: PRegEx): int - -proc compileBackslash(i: int, s: string, r: PRegEx): int = - var i = i - inc(i) - case s[i] - of 'A'..'Z': - of 'a'..'z': - of '0': - of '1'..'9': - - else: - r.kind = regChar - r.c = s[i] - inc(i) - result = i - -proc compileAtom(i: int, s: string, r: PRegEx): int = - var i = i - case s[i] - of '[': - inc(i) - var inverse = s[i] == '^' - if inverse: inc(i) - r.kind = regSet - new(r.s) - while true: - case s[i] - of '\\': i = compileBackslash(i, s, r) - of ']': - inc(i) - break - of '\0': - raiseRegex("']' expected") - elif s[i+1] == '-': - var x = s[i] - inc(i, 2) - var y = s[i] - inc(i) - r.s = r.s + {x..y} - else: - incl(r.s, s[i]) - inc(i) - if inverse: - r.s = {'\0'..'\255'} - r.s - of '\\': - inc(i) - i = compileBackslash(i, s, r) - of '.': - r.kind = regAny - inc(i) - of '(': - inc(i) - i = compileAux(i, s, r) - if s[i] = ')': inc(i) - else: raiseRegex("')' expected") - of '\0': nil # do nothing - else: - r.kind = regChar - r.c = s[i] - inc(i) - result = i - -proc compilePostfix(i: int, s: string, r: PRegEx): int = - var i = compileAtom(i, s, r) - var a: PRegEx - case s[i] - of '*': - of '+': - of '?': - else: nil - -proc compileAux(i: int, s: string, r: PRegEx): int = - var i = i - i = compileAtom(i, s, r) - - while s[i] != '\0': - - result = i - -proc compile*(regex: string, flags: TRegExFlags = {}): PRegEx = - ## Compiles the string `regex` that represents a regular expression into - ## an internal data structure that can be used for matching. - new(result) - var i = compileAux(0, regex, result) - if i < len(regex)-1: - # not all characters used for the regular expression? - raiseRegEx("invalid regular expression") diff --git a/lib/base/pcre.nim b/lib/base/pcre.nim index 1023f86f3..ebebd8bd7 100644 --- a/lib/base/pcre.nim +++ b/lib/base/pcre.nim @@ -1,296 +1,291 @@ -# -# -# Nimrod's Runtime Library -# (c) Copyright 2006 Andreas Rumpf -# -# See the file "copying.txt", included in this -# distribution, for details about the copyright. -# - -# This file was created by a complicated procedure which saved me a considerable -# amount of time: the pcre.h header was converted to modpcre.h by hand, so that -# h2pas could handle it. Then I used pas2mor to generate a Morpork binding. -# Unfortunately, I had to fix some things later on; thus don't do all this -# again! My manual changes will be lost! - -# Converted by Pas2mor v1.37 -# -# Automatically converted by H2Pas 0.99.16 from modpcre.h -# The following command line parameters were used: -# -D -c -l pcre.lib -T modpcre.h - -{.compile: "pcre_all.c" .} - -type - Pbyte = ptr byte - Pchar = CString - PPchar = ptr PChar - Pint = ptr cint - Ppcre* = ptr TPcre - Ppcre_callout_block = ptr tpcre_callout_block - Ppcre_extra = ptr Tpcre_extra - -#************************************************ -#* Perl-Compatible Regular Expressions * -#************************************************ -# -# Modified by Andreas Rumpf for h2pas. - -# In its original form, this is the .in file that is transformed by -# "configure" into pcre.h. -# -# Copyright (c) 1997-2005 University of Cambridge -# -# ----------------------------------------------------------------------------- -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# * Neither the name of the University of Cambridge nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. -# ----------------------------------------------------------------------------- - -# The file pcre.h is build by "configure". Do not edit it; instead -# make changes to pcre.in. - -const - PCRE_MAJOR* = 6 - PCRE_MINOR* = 3 - PCRE_DATE* = "2005/11/29" - # Options - PCRE_CASELESS* = 0x00000001 - PCRE_MULTILINE* = 0x00000002 - PCRE_DOTALL* = 0x00000004 - PCRE_EXTENDED* = 0x00000008 - PCRE_ANCHORED* = 0x00000010 - PCRE_DOLLAR_ENDONLY* = 0x00000020 - PCRE_EXTRA* = 0x00000040 - PCRE_NOTBOL* = 0x00000080 - PCRE_NOTEOL* = 0x00000100 - PCRE_UNGREEDY* = 0x00000200 - PCRE_NOTEMPTY* = 0x00000400 - PCRE_UTF8* = 0x00000800 - PCRE_NO_AUTO_CAPTURE* = 0x00001000 - PCRE_NO_UTF8_CHECK* = 0x00002000 - PCRE_AUTO_CALLOUT* = 0x00004000 - PCRE_PARTIAL* = 0x00008000 - PCRE_DFA_SHORTEST* = 0x00010000 - PCRE_DFA_RESTART* = 0x00020000 - PCRE_FIRSTLINE* = 0x00040000 - # Exec-time and get/set-time error codes - PCRE_ERROR_NOMATCH* = -(1) - PCRE_ERROR_NULL* = -(2) - PCRE_ERROR_BADOPTION* = -(3) - PCRE_ERROR_BADMAGIC* = -(4) - PCRE_ERROR_UNKNOWN_NODE* = -(5) - PCRE_ERROR_NOMEMORY* = -(6) - PCRE_ERROR_NOSUBSTRING* = -(7) - PCRE_ERROR_MATCHLIMIT* = -(8) - # Never used by PCRE itself - PCRE_ERROR_CALLOUT* = -(9) - PCRE_ERROR_BADUTF8* = -(10) - PCRE_ERROR_BADUTF8_OFFSET* = -(11) - PCRE_ERROR_PARTIAL* = -(12) - PCRE_ERROR_BADPARTIAL* = -(13) - PCRE_ERROR_INTERNAL* = -(14) - PCRE_ERROR_BADCOUNT* = -(15) - PCRE_ERROR_DFA_UITEM* = -(16) - PCRE_ERROR_DFA_UCOND* = -(17) - PCRE_ERROR_DFA_UMLIMIT* = -(18) - PCRE_ERROR_DFA_WSSIZE* = -(19) - PCRE_ERROR_DFA_RECURSE* = -(20) - # Request types for pcre_fullinfo() - PCRE_INFO_OPTIONS* = 0 - PCRE_INFO_SIZE* = 1 - PCRE_INFO_CAPTURECOUNT* = 2 - PCRE_INFO_BACKREFMAX* = 3 - PCRE_INFO_FIRSTBYTE* = 4 - # For backwards compatibility - PCRE_INFO_FIRSTCHAR* = 4 - PCRE_INFO_FIRSTTABLE* = 5 - PCRE_INFO_LASTLITERAL* = 6 - PCRE_INFO_NAMEENTRYSIZE* = 7 - PCRE_INFO_NAMECOUNT* = 8 - PCRE_INFO_NAMETABLE* = 9 - PCRE_INFO_STUDYSIZE* = 10 - PCRE_INFO_DEFAULT_TABLES* = 11 - # Request types for pcre_config() - PCRE_CONFIG_UTF8* = 0 - PCRE_CONFIG_NEWLINE* = 1 - PCRE_CONFIG_LINK_SIZE* = 2 - PCRE_CONFIG_POSIX_MALLOC_THRESHOLD* = 3 - PCRE_CONFIG_MATCH_LIMIT* = 4 - PCRE_CONFIG_STACKRECURSE* = 5 - PCRE_CONFIG_UNICODE_PROPERTIES* = 6 - # Bit flags for the pcre_extra structure - PCRE_EXTRA_STUDY_DATA* = 0x0001 - PCRE_EXTRA_MATCH_LIMIT* = 0x0002 - PCRE_EXTRA_CALLOUT_DATA* = 0x0004 - PCRE_EXTRA_TABLES* = 0x0008 - # Types - -type - TPcre = record - #undefined structure - - - # The structure for passing additional data to pcre_exec(). This is defined - # in such as way as to be extensible. Always add new fields at the end, - # in order to remain compatible. - # Bits for which fields are set - # Opaque data from pcre_study() - # Maximum number of calls to match() - # Data passed back in callouts - # Const before type ignored - # Pointer to character tables - Tpcre_extra* {.final.} = object - flags: cuint - study_data: pointer - match_limit: cuint - callout_data: pointer - tables: ptr byte - - # The structure for passing out data via the pcre_callout_function. We use a - # structure so that new fields can be added on the end in future versions, - # without changing the API of the function, thereby allowing old clients to - # work without modification. - # Identifies version of block - # ------------------------ Version 0 ------------------------------- - # Number compiled into pattern - # The offset vector - # Const before type ignored - # The subject being matched - # The length of the subject - # Offset to start of this match attempt - # Where we currently are in the subject - # Max current capture - # Most recently closed capture - # Data passed in with the call - # ------------------- Added for Version 1 -------------------------- - # Offset to next item in the pattern - # Length of next item in the pattern - # ------------------------------------------------------------------ - TPcre_callout_block* {.final.} = object - version: cint - callout_number: cint - offset_vector: ptr cint - subject: ptr char - subject_length: cint - start_match: cint - current_position: cint - capture_top: cint - capture_last: cint - callout_data: pointer - pattern_position: cint - next_item_length: cint - -# Exported PCRE functions - -proc pcre_compile*(para1: Pchar, para2: cint, para3: ptr Pchar, - para4: Pint, para5: Pbyte): Ppcre {. - importc: "pcre_compile", noconv.} - -proc pcre_compile2*(para1: Pchar, para2: cint, para3: Pint, para4: PPchar, - para5: Pint, para6: Pbyte): Ppcre {. - importc: "pcre_compile2", noconv.} - -proc pcre_config*(para1: cint, para2: pointer): cint {. - importc: "pcre_config", noconv.} - -proc pcre_copy_named_substring*(para1: Ppcre, para2: Pchar, para3: Pint, - para4: cint, para5: Pchar, para6: Pchar, - para7: cint): cint {. - importc: "pcre_copy_named_substring", noconv.} - -proc pcre_copy_substring*(para1: Pchar, para2: Pint, para3: cint, para4: cint, - para5: Pchar, para6: cint): cint {. - importc: "pcre_copy_substring", noconv.} - -proc pcre_dfa_exec*(para1: Ppcre, para2: Ppcre_extra, para3: Pchar, - para4: cint, para5: cint, para6: cint, para7: Pint, - para8: cint, para9: Pint, para10: cint): cint {. - importc: "pcre_dfa_exec", noconv.} - -proc pcre_exec*(para1: Ppcre, para2: Ppcre_extra, para3: Pchar, - para4: cint, para5: cint, para6: cint, para7: Pint, - para8: cint): cint {.importc: "pcre_exec", noconv.} - -proc pcre_free_substring*(para1: Pchar) {. - importc: "pcre_free_substring", noconv.} - -proc pcre_free_substring_list*(para1: PPchar) {. - importc: "pcre_free_substring_list", noconv.} - -proc pcre_fullinfo*(para1: Ppcre, para2: Ppcre_extra, para3: cint, - para4: pointer): cint {.importc: "pcre_fullinfo", noconv.} - -proc pcre_get_named_substring*(para1: Ppcre, para2: Pchar, para3: Pint, - para4: cint, para5: Pchar, para6: PPchar): cint {. - importc: "pcre_get_named_substring", noconv.} - -proc pcre_get_stringnumber*(para1: Ppcre, para2: Pchar): cint {. - importc: "pcre_get_stringnumber", noconv.} - -proc pcre_get_substring*(para1: Pchar, para2: Pint, para3: cint, - para4: cint, para5: PPchar): cint {. - importc: "pcre_get_substring", noconv.} - -proc pcre_get_substring_list*(para1: Pchar, para2: Pint, para3: cint, - para4: ptr PPchar): cint {. - importc: "pcre_get_substring_list", noconv.} - -proc pcre_info*(para1: Ppcre, para2: Pint, para3: Pint): cint {. - importc: "pcre_info", noconv.} - -proc pcre_maketables*: ptr byte {. - importc: "pcre_maketables", noconv.} - -proc pcre_refcount*(para1: Ppcre, para2: cint): cint {. - importc: "pcre_refcount", noconv.} - -proc pcre_study*(para1: Ppcre, para2: cint, - para3: ptr CString): Ppcre_extra {.importc, noconv.} - -proc pcre_version*: CString {.importc: "pcre_version", noconv.} - -# Indirection for store get and free functions. These can be set to -# alternative malloc/free functions if required. Special ones are used in the -# non-recursive case for "frames". There is also an optional callout function -# that is triggered by the (?) regex item. -# - -# we use Nimrod's memory manager (but not GC!) for these functions: -var - pcre_malloc {.importc: "pcre_malloc".}: proc (para1: int): pointer {.noconv.} - pcre_free {.importc: "pcre_free".}: proc (para1: pointer) {.noconv.} - pcre_stack_malloc {.importc: "pcre_stack_malloc".}: - proc (para1: int): pointer {.noconv.} - pcre_stack_free {.importc: "pcre_stack_free".}: - proc (para1: pointer) {.noconv.} - pcre_callout {.importc: "pcre_callout".}: - proc (para1: Ppcre_callout_block): cint {.noconv.} - -pcre_malloc = system.alloc -pcre_free = system.dealloc -pcre_stack_malloc = system.alloc -pcre_stack_free = system.dealloc -pcre_callout = nil +# +# +# Nimrod's Runtime Library +# (c) Copyright 2006 Andreas Rumpf +# +# See the file "copying.txt", included in this +# distribution, for details about the copyright. +# + +# This file was created by a complicated procedure which saved me a considerable +# amount of time: the pcre.h header was converted to modpcre.h by hand, so that +# h2pas could handle it. Then I used pas2mor to generate a Nimrod binding. +# Unfortunately, I had to fix some things later on; thus don't do all this +# again! My manual changes will be lost! + +# Converted by Pas2mor v1.37 +# +# Automatically converted by H2Pas 0.99.16 from modpcre.h +# The following command line parameters were used: +# -D -c -l pcre.lib -T modpcre.h + +{.compile: "pcre_all.c" .} + +type + Pbyte = ptr byte + PPchar = ptr cstring + Pint = ptr cint + Ppcre* = ptr TPcre + Ppcre_callout_block* = ptr tpcre_callout_block + Ppcre_extra* = ptr Tpcre_extra + TPcre {.final, pure.} = object + + # The structure for passing additional data to pcre_exec(). This is defined + # in such as way as to be extensible. + # Bits for which fields are set + # Opaque data from pcre_study() + # Maximum number of calls to match() + # Data passed back in callouts + # Const before type ignored + # Pointer to character tables + Tpcre_extra* {.final, pure.} = object + flags: cint + study_data: pointer + match_limit: cint + callout_data: pointer + tables: ptr byte + + # The structure for passing out data via the pcre_callout_function. We use a + # structure so that new fields can be added on the end in future versions, + # without changing the API of the function, thereby allowing old clients to + # work without modification. + # Identifies version of block + # ------------------------ Version 0 ------------------------------- + # Number compiled into pattern + # The offset vector + # Const before type ignored + # The subject being matched + # The length of the subject + # Offset to start of this match attempt + # Where we currently are in the subject + # Max current capture + # Most recently closed capture + # Data passed in with the call + # ------------------- Added for Version 1 -------------------------- + # Offset to next item in the pattern + # Length of next item in the pattern + # ------------------------------------------------------------------ + TPcre_callout_block* {.final, pure.} = object + version: cint + callout_number: cint + offset_vector: ptr cint + subject: ptr char + subject_length: cint + start_match: cint + current_position: cint + capture_top: cint + capture_last: cint + callout_data: pointer + pattern_position: cint + next_item_length: cint + + +#************************************************ +#* Perl-Compatible Regular Expressions * +#************************************************ +# +# Modified by Andreas Rumpf for h2pas. + +# In its original form, this is the .in file that is transformed by +# "configure" into pcre.h. +# +# Copyright (c) 1997-2005 University of Cambridge +# +# ----------------------------------------------------------------------------- +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# * Neither the name of the University of Cambridge nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# ----------------------------------------------------------------------------- + +# The file pcre.h is build by "configure". Do not edit it; instead +# make changes to pcre.in. + +const + PCRE_MAJOR* = 6 + PCRE_MINOR* = 3 + PCRE_DATE* = "2005/11/29" + # Options + PCRE_CASELESS* = 0x00000001 + PCRE_MULTILINE* = 0x00000002 + PCRE_DOTALL* = 0x00000004 + PCRE_EXTENDED* = 0x00000008 + PCRE_ANCHORED* = 0x00000010 + PCRE_DOLLAR_ENDONLY* = 0x00000020 + PCRE_EXTRA* = 0x00000040 + PCRE_NOTBOL* = 0x00000080 + PCRE_NOTEOL* = 0x00000100 + PCRE_UNGREEDY* = 0x00000200 + PCRE_NOTEMPTY* = 0x00000400 + PCRE_UTF8* = 0x00000800 + PCRE_NO_AUTO_CAPTURE* = 0x00001000 + PCRE_NO_UTF8_CHECK* = 0x00002000 + PCRE_AUTO_CALLOUT* = 0x00004000 + PCRE_PARTIAL* = 0x00008000 + PCRE_DFA_SHORTEST* = 0x00010000 + PCRE_DFA_RESTART* = 0x00020000 + PCRE_FIRSTLINE* = 0x00040000 + # Exec-time and get/set-time error codes + PCRE_ERROR_NOMATCH* = -(1) + PCRE_ERROR_NULL* = -(2) + PCRE_ERROR_BADOPTION* = -(3) + PCRE_ERROR_BADMAGIC* = -(4) + PCRE_ERROR_UNKNOWN_NODE* = -(5) + PCRE_ERROR_NOMEMORY* = -(6) + PCRE_ERROR_NOSUBSTRING* = -(7) + PCRE_ERROR_MATCHLIMIT* = -(8) + # Never used by PCRE itself + PCRE_ERROR_CALLOUT* = -(9) + PCRE_ERROR_BADUTF8* = -(10) + PCRE_ERROR_BADUTF8_OFFSET* = -(11) + PCRE_ERROR_PARTIAL* = -(12) + PCRE_ERROR_BADPARTIAL* = -(13) + PCRE_ERROR_INTERNAL* = -(14) + PCRE_ERROR_BADCOUNT* = -(15) + PCRE_ERROR_DFA_UITEM* = -(16) + PCRE_ERROR_DFA_UCOND* = -(17) + PCRE_ERROR_DFA_UMLIMIT* = -(18) + PCRE_ERROR_DFA_WSSIZE* = -(19) + PCRE_ERROR_DFA_RECURSE* = -(20) + # Request types for pcre_fullinfo() + PCRE_INFO_OPTIONS* = 0 + PCRE_INFO_SIZE* = 1 + PCRE_INFO_CAPTURECOUNT* = 2 + PCRE_INFO_BACKREFMAX* = 3 + PCRE_INFO_FIRSTBYTE* = 4 + # For backwards compatibility + PCRE_INFO_FIRSTCHAR* = 4 + PCRE_INFO_FIRSTTABLE* = 5 + PCRE_INFO_LASTLITERAL* = 6 + PCRE_INFO_NAMEENTRYSIZE* = 7 + PCRE_INFO_NAMECOUNT* = 8 + PCRE_INFO_NAMETABLE* = 9 + PCRE_INFO_STUDYSIZE* = 10 + PCRE_INFO_DEFAULT_TABLES* = 11 + # Request types for pcre_config() + PCRE_CONFIG_UTF8* = 0 + PCRE_CONFIG_NEWLINE* = 1 + PCRE_CONFIG_LINK_SIZE* = 2 + PCRE_CONFIG_POSIX_MALLOC_THRESHOLD* = 3 + PCRE_CONFIG_MATCH_LIMIT* = 4 + PCRE_CONFIG_STACKRECURSE* = 5 + PCRE_CONFIG_UNICODE_PROPERTIES* = 6 + # Bit flags for the pcre_extra structure + PCRE_EXTRA_STUDY_DATA* = 0x0001 + PCRE_EXTRA_MATCH_LIMIT* = 0x0002 + PCRE_EXTRA_CALLOUT_DATA* = 0x0004 + PCRE_EXTRA_TABLES* = 0x0008 + +# Exported PCRE functions + +proc pcre_compile*(para1: cstring, para2: cint, para3: ptr cstring, + para4: ptr int, para5: Pbyte): Ppcre {. + importc: "pcre_compile", noconv.} + +proc pcre_compile2*(para1: cstring, para2: cint, para3: Pint, para4: PPchar, + para5: ptr int, para6: Pbyte): Ppcre {. + importc: "pcre_compile2", noconv.} + +proc pcre_config*(para1: cint, para2: pointer): cint {. + importc: "pcre_config", noconv.} + +proc pcre_copy_named_substring*(para1: Ppcre, para2: cstring, para3: Pint, + para4: cint, para5: cstring, para6: cstring, + para7: cint): cint {. + importc: "pcre_copy_named_substring", noconv.} + +proc pcre_copy_substring*(para1: cstring, para2: Pint, para3: cint, para4: cint, + para5: cstring, para6: cint): cint {. + importc: "pcre_copy_substring", noconv.} + +proc pcre_dfa_exec*(para1: Ppcre, para2: Ppcre_extra, para3: cstring, + para4: cint, para5: cint, para6: cint, para7: Pint, + para8: cint, para9: Pint, para10: cint): cint {. + importc: "pcre_dfa_exec", noconv.} + +proc pcre_exec*(para1: Ppcre, para2: Ppcre_extra, para3: cstring, + para4: cint, para5: cint, para6: cint, para7: Pint, + para8: cint): cint {.importc: "pcre_exec", noconv.} + +proc pcre_free_substring*(para1: cstring) {. + importc: "pcre_free_substring", noconv.} + +proc pcre_free_substring_list*(para1: PPchar) {. + importc: "pcre_free_substring_list", noconv.} + +proc pcre_fullinfo*(para1: Ppcre, para2: Ppcre_extra, para3: cint, + para4: pointer): cint {.importc: "pcre_fullinfo", noconv.} + +proc pcre_get_named_substring*(para1: Ppcre, para2: cstring, para3: Pint, + para4: cint, para5: cstring, para6: PPchar): cint {. + importc: "pcre_get_named_substring", noconv.} + +proc pcre_get_stringnumber*(para1: Ppcre, para2: cstring): cint {. + importc: "pcre_get_stringnumber", noconv.} + +proc pcre_get_substring*(para1: cstring, para2: Pint, para3: cint, + para4: cint, para5: PPchar): cint {. + importc: "pcre_get_substring", noconv.} + +proc pcre_get_substring_list*(para1: cstring, para2: Pint, para3: cint, + para4: ptr PPchar): cint {. + importc: "pcre_get_substring_list", noconv.} + +proc pcre_info*(para1: Ppcre, para2: Pint, para3: Pint): cint {. + importc: "pcre_info", noconv.} + +proc pcre_maketables*: ptr byte {. + importc: "pcre_maketables", noconv.} + +proc pcre_refcount*(para1: Ppcre, para2: cint): cint {. + importc: "pcre_refcount", noconv.} + +proc pcre_study*(para1: Ppcre, para2: cint, + para3: ptr CString): Ppcre_extra {.importc, noconv.} + +proc pcre_version*: CString {.importc: "pcre_version", noconv.} + +# Indirection for store get and free functions. These can be set to +# alternative malloc/free functions if required. Special ones are used in the +# non-recursive case for "frames". There is also an optional callout function +# that is triggered by the (?) regex item. +# + +# we use Nimrod's memory manager (but not GC!) for these functions: +type + TMalloc = proc (para1: int): pointer {.noconv.} + TFree = proc (para1: pointer) {.noconv.} +var + pcre_malloc {.importc: "pcre_malloc".}: TMalloc + pcre_free {.importc: "pcre_free".}: TFree + pcre_stack_malloc {.importc: "pcre_stack_malloc".}: TMalloc + pcre_stack_free {.importc: "pcre_stack_free".}: TFree + pcre_callout {.importc: "pcre_callout".}: + proc (para1: Ppcre_callout_block): cint {.noconv.} + +pcre_malloc = cast[TMalloc](system.alloc) +pcre_free = cast[TFree](system.dealloc) +pcre_stack_malloc = cast[TMalloc](system.alloc) +pcre_stack_free = cast[TFree](system.dealloc) +pcre_callout = nil diff --git a/lib/base/regexprs.nim b/lib/base/regexprs.nim index b9272ca47..9979035b8 100644 --- a/lib/base/regexprs.nim +++ b/lib/base/regexprs.nim @@ -1,114 +1,115 @@ -# -# -# Nimrod's Runtime Library -# (c) Copyright 2006 Andreas Rumpf -# -# See the file "copying.txt", included in this -# distribution, for details about the copyright. -# - -## Regular expression support for Nimrod. -## Currently this module is implemented by providing a wrapper around the -## `PRCE (Perl-Compatible Regular Expressions) <http://www.pcre.org>`_ -## C library. This means that your application will depend on the PRCE -## library's licence when using this module, which should not be a problem -## though. -## PRCE's licence follows: -## -## .. include:: ../doc/regexprs.txt -## - -# This is not just a convenient wrapper for the pcre library; the -# API will stay the same if the implementation should change. - -import - pcre, strutils - -type - EInvalidRegEx* = object of EInvalidValue - ## is raised if the pattern is no valid regular expression. - -const - MaxSubpatterns* = 10 - ## defines the maximum number of subpatterns that can be captured. - ## More subpatterns cannot be captured! - -proc match*(s, pattern: string, substrs: var openarray[string], - start: int = 0): bool - ## returns ``true`` if ``s`` matches the ``pattern[start..]`` and - ## the captured substrings in the array ``substrs``. If it does not - ## match, nothing is written into ``substrs`` and ``false`` is - ## returned. - -proc match*(s, pattern: string, start: int = 0): bool - ## returns ``true`` if ``s`` matches the ``pattern`` beginning from ``start``. - -proc matchLen*(s, pattern: string, substrs: var openarray[string], - start: int = 0): int - ## the same as ``match``, but it returns the length of the match, - ## if there is no match, -1 is returned. Note that a match length - ## of zero can happen. - -proc find*(s, pattern: string, substrs: var openarray[string], - start: int = 0): bool - ## returns ``true`` if ``pattern`` occurs in ``s`` and the captured - ## substrings in the array ``substrs``. If it does not match, nothing - ## is written into ``substrs``. -proc find*(s, pattern: string, start: int = 0): bool - ## returns ``true`` if ``pattern`` occurs in ``s``. - - -proc rawCompile(pattern: string, flags: cint): PPcre = - var - msg: CString - offset: cint - com = pcreCompile(pattern, flags, addr(msg), addr(offset), nil) - if com == nil: - var e: ref EInvalidRegEx - new(e) - e.msg = $msg & "\n" & pattern & "\n" & repeatChar(offset) & "^\n" - raise e - return com - -proc matchOrFind(s: string, pattern: PPcre, substrs: var openarray[string], - start: cint): cint = - var - rawMatches: array [0..maxSubpatterns * 3 - 1, cint] - res = int(pcreExec(pattern, nil, s, length(s), start, 0, - cast[pint](addr(rawMatches)), maxSubpatterns * 3)) - dealloc(pattern) - if res < 0: return res - for i in 0..res-1: - var - a = rawMatches[i * 3] - b = rawMatches[i * 3 + 1] - if a >= 0: substrs[i] = copy(s, a, b) - else: substrs[i] = "" - return res - -proc matchOrFind(s: string, pattern: PPcre, start: cint): cint = - var - rawMatches: array [0..maxSubpatterns * 3 - 1, cint] - res = pcreExec(pattern, nil, s, length(s), start, 0, - cast[pint](addr(rawMatches)), maxSubpatterns * 3) - dealloc(pattern) - return res - -proc match(s, pattern: string, substrs: var openarray[string], - start: int = 0): bool = - return matchOrFind(s, rawCompile(pattern, PCRE_ANCHORED), - substrs, start) >= 0 - -proc matchLen(s, pattern: string, substrs: var openarray[string], - start: int = 0): int = - return matchOrFind(s, rawCompile(pattern, PCRE_ANCHORED), substrs, start) - -proc find(s, pattern: string, substrs: var openarray[string], - start: int = 0): bool = - return matchOrFind(s, rawCompile(pattern, 0), substrs, start) >= 0 - -proc match(s, pattern: string, start: int = 0): bool = - return matchOrFind(s, rawCompile(pattern, PCRE_ANCHORED), start) >= 0 - -proc find(s, pattern: string, start: int = 0): bool = - return matchOrFind(s, rawCompile(pattern, 0), start) >= 0 +# +# +# Nimrod's Runtime Library +# (c) Copyright 2006 Andreas Rumpf +# +# See the file "copying.txt", included in this +# distribution, for details about the copyright. +# + +## Regular expression support for Nimrod. +## Currently this module is implemented by providing a wrapper around the +## `PRCE (Perl-Compatible Regular Expressions) <http://www.pcre.org>`_ +## C library. This means that your application will depend on the PRCE +## library's licence when using this module, which should not be a problem +## though. +## PRCE's licence follows: +## +## .. include:: ../doc/regexprs.txt +## + +# This is not just a convenient wrapper for the pcre library; the +# API will stay the same if the implementation should change. + +import + pcre, strutils + +type + EInvalidRegEx* = object of EInvalidValue + ## is raised if the pattern is no valid regular expression. + +const + MaxSubpatterns* = 10 + ## defines the maximum number of subpatterns that can be captured. + ## More subpatterns cannot be captured! + +proc match*(s, pattern: string, matches: var openarray[string], + start: int = 0): bool + ## returns ``true`` if ``s`` matches the ``pattern[start..]`` and + ## the captured substrings in the array ``matches``. If it does not + ## match, nothing is written into ``matches`` and ``false`` is + ## returned. + +proc match*(s, pattern: string, start: int = 0): bool + ## returns ``true`` if ``s`` matches the ``pattern`` beginning from ``start``. + +proc matchLen*(s, pattern: string, matches: var openarray[string], + start: int = 0): int + ## the same as ``match``, but it returns the length of the match, + ## if there is no match, -1 is returned. Note that a match length + ## of zero can happen. + +proc find*(s, pattern: string, matches: var openarray[string], + start: int = 0): bool + ## returns ``true`` if ``pattern`` occurs in ``s`` and the captured + ## substrings in the array ``matches``. If it does not match, nothing + ## is written into ``matches``. +proc find*(s, pattern: string, start: int = 0): bool + ## returns ``true`` if ``pattern`` occurs in ``s``. + + +proc rawCompile(pattern: string, flags: cint): PPcre = + var + msg: CString + offset: int + com = pcreCompile(pattern, flags, addr(msg), addr(offset), nil) + if com == nil: + var e: ref EInvalidRegEx + new(e) + e.msg = $msg & "\n" & pattern & "\n" & repeatChar(offset) & "^\n" + raise e + return com + +proc matchOrFind(s: string, pattern: PPcre, matches: var openarray[string], + start: cint): cint = + var + rawMatches: array [0..maxSubpatterns * 3 - 1, cint] + res = int(pcreExec(pattern, nil, s, len(s), start, 0, + cast[ptr cint](addr(rawMatches)), maxSubpatterns * 3)) + dealloc(pattern) + if res < 0: return res + for i in 0..res-1: + var + a = rawMatches[i * 2] + b = rawMatches[i * 2 + 1] + if a >= 0'i32: matches[i] = copy(s, a, int(b)-1) + else: matches[i] = "" + return res + +proc matchOrFind(s: string, pattern: PPcre, start: cint): cint = + var + rawMatches: array [0..maxSubpatterns * 3 - 1, cint] + res = pcreExec(pattern, nil, s, len(s), start, 0, + cast[ptr cint](addr(rawMatches)), maxSubpatterns * 3) + dealloc(pattern) + return res + +proc match(s, pattern: string, matches: var openarray[string], + start: int = 0): bool = + return matchOrFind(s, rawCompile(pattern, PCRE_ANCHORED), + matches, start) >= 0'i32 + +proc matchLen(s, pattern: string, matches: var openarray[string], + start: int = 0): int = + return matchOrFind(s, rawCompile(pattern, PCRE_ANCHORED), matches, start) + +proc find(s, pattern: string, matches: var openarray[string], + start: int = 0): bool = + return matchOrFind(s, rawCompile(pattern, PCRE_MULTILINE), + matches, start) >= 0'i32 + +proc match(s, pattern: string, start: int = 0): bool = + return matchOrFind(s, rawCompile(pattern, PCRE_ANCHORED), start) >= 0'i32 + +proc find(s, pattern: string, start: int = 0): bool = + return matchOrFind(s, rawCompile(pattern, PCRE_MULTILINE), start) >= 0'i32 diff --git a/lib/cntbits.nim b/lib/cntbits.nim index 0218bf4f2..a975f38ae 100644 --- a/lib/cntbits.nim +++ b/lib/cntbits.nim @@ -1,20 +1,20 @@ -# -# -# Nimrod's Runtime Library -# (c) Copyright 2006 Andreas Rumpf -# -# See the file "copying.txt", included in this -# distribution, for details about the copyright. -# - - -proc population16(a: int): int {.inline.} = - var x = a - x = ((x and 0xAAAA) shr 1) + (x and 0x5555) - x = ((x and 0xCCCC) shr 2) + (x and 0x3333) - x = ((x and 0xF0F0) shr 4) + (x and 0x0F0F) - x = ((x and 0xFF00) shr 8) + (x and 0x00FF) - return x - -proc countBits(n: int32): int = - result = population16(n and 0xffff) + population16(n shr 16) +# +# +# Nimrod's Runtime Library +# (c) Copyright 2006 Andreas Rumpf +# +# See the file "copying.txt", included in this +# distribution, for details about the copyright. +# + + +proc population16(a: int): int {.inline.} = + var x = a + x = ((x and 0xAAAA) shr 1) + (x and 0x5555) + x = ((x and 0xCCCC) shr 2) + (x and 0x3333) + x = ((x and 0xF0F0) shr 4) + (x and 0x0F0F) + x = ((x and 0xFF00) shr 8) + (x and 0x00FF) + return x + +proc countBits(n: int32): int = + result = population16(n and 0xffff'i32) + population16(n shr 16'i32) diff --git a/lib/complex.nim b/lib/complex.nim index 6f0f568a3..f50ff4bd0 100644 --- a/lib/complex.nim +++ b/lib/complex.nim @@ -1,106 +1,106 @@ -# -# -# Nimrod's Runtime Library -# (c) Copyright 2006 Andreas Rumpf -# -# See the file "copying.txt", included in this -# distribution, for details about the copyright. -# - - - -## This module implements complex numbers. - -{.push checks:off, line_dir:off, stack_trace:off, debugger:off.} -# the user does not want to trace a part -# of the standard library! - -import - math - -type - TComplex* = tuple[re, im: float] - ## a complex number, consisting of a real and an imaginary part - -proc `==` *(x, y: TComplex): bool = - ## Compare two complex numbers `x` and `y` for equality. - result = x.re == y.re and x.im == y.im - -proc `+` *(x, y: TComplex): TComplex = - ## Add two complex numbers. - result.re = x.re + y.re - result.im = x.im + y.im - -proc `-` *(x, y: TComplex): TComplex = - ## Subtract two complex numbers. - result.re = x.re - y.re - result.im = x.im - y.im - -proc `-` *(z: TComplex): TComplex = - ## Unary minus for complex numbers. - result.re = -z.re - result.im = -z.im - -proc `/` *(x, y: TComplex): TComplex = - ## Divide `x` by `y`. - var - r, den: float - if abs(y.re) < abs(y.im): - r = y.re / y.im - den = y.im + r * y.re - result.re = (x.re * r + x.im) / den - result.im = (x.im * r - x.re) / den - else: - r = y.im / y.re - den = y.re + r * y.im - result.re = (x.re + r * x.im) / den - result.im = (x.im - r * x.re) / den - -proc `*` *(x, y: TComplex): TComplex = - ## Multiply `x` with `y`. - result.re = x.re * y.re - x.im * y.im - result.im = x.im * y.re + x.re * y.im - -proc abs*(z: TComplex): float = - ## Return the distance from (0,0) to `z`. - - # optimized by checking special cases (sqrt is expensive) - var x, y, temp: float - - x = abs(z.re) - y = abs(z.im) - if x == 0.0: - result = y - elif y == 0.0: - result = x - elif x > y: - temp = y / x - result = x * sqrt(1.0 + temp * temp) - else: - temp = x / y - result = y * sqrt(1.0 + temp * temp) - -proc sqrt*(z: TComplex): TComplex = - ## Square root for a complex number `z`. - var x, y, w, r: float - - if z.re == 0.0 and z.im == 0.0: - result = z - else: - x = abs(z.re) - y = abs(z.im) - if x >= y: - r = y / x - w = sqrt(x) * sqrt(0.5 * (1.0 + sqrt(1.0 + r * r))) - else: - r = x / y - w = sqrt(y) * sqrt(0.5 * (r + sqrt(1.0 + r * r))) - if z.re >= 0.0: - result.re = w - result.im = z.im / (w * 2) - else: - if z.im >= 0.0: result.im = w - else: result.im = -w - result.re = z.im / (c.im + c.im) - -{.pop.} +# +# +# Nimrod's Runtime Library +# (c) Copyright 2006 Andreas Rumpf +# +# See the file "copying.txt", included in this +# distribution, for details about the copyright. +# + + + +## This module implements complex numbers. + +{.push checks:off, line_dir:off, stack_trace:off, debugger:off.} +# the user does not want to trace a part +# of the standard library! + +import + math + +type + TComplex* = tuple[re, im: float] + ## a complex number, consisting of a real and an imaginary part + +proc `==` *(x, y: TComplex): bool = + ## Compare two complex numbers `x` and `y` for equality. + result = x.re == y.re and x.im == y.im + +proc `+` *(x, y: TComplex): TComplex = + ## Add two complex numbers. + result.re = x.re + y.re + result.im = x.im + y.im + +proc `-` *(x, y: TComplex): TComplex = + ## Subtract two complex numbers. + result.re = x.re - y.re + result.im = x.im - y.im + +proc `-` *(z: TComplex): TComplex = + ## Unary minus for complex numbers. + result.re = -z.re + result.im = -z.im + +proc `/` *(x, y: TComplex): TComplex = + ## Divide `x` by `y`. + var + r, den: float + if abs(y.re) < abs(y.im): + r = y.re / y.im + den = y.im + r * y.re + result.re = (x.re * r + x.im) / den + result.im = (x.im * r - x.re) / den + else: + r = y.im / y.re + den = y.re + r * y.im + result.re = (x.re + r * x.im) / den + result.im = (x.im - r * x.re) / den + +proc `*` *(x, y: TComplex): TComplex = + ## Multiply `x` with `y`. + result.re = x.re * y.re - x.im * y.im + result.im = x.im * y.re + x.re * y.im + +proc abs*(z: TComplex): float = + ## Return the distance from (0,0) to `z`. + + # optimized by checking special cases (sqrt is expensive) + var x, y, temp: float + + x = abs(z.re) + y = abs(z.im) + if x == 0.0: + result = y + elif y == 0.0: + result = x + elif x > y: + temp = y / x + result = x * sqrt(1.0 + temp * temp) + else: + temp = x / y + result = y * sqrt(1.0 + temp * temp) + +proc sqrt*(z: TComplex): TComplex = + ## Square root for a complex number `z`. + var x, y, w, r: float + + if z.re == 0.0 and z.im == 0.0: + result = z + else: + x = abs(z.re) + y = abs(z.im) + if x >= y: + r = y / x + w = sqrt(x) * sqrt(0.5 * (1.0 + sqrt(1.0 + r * r))) + else: + r = x / y + w = sqrt(y) * sqrt(0.5 * (r + sqrt(1.0 + r * r))) + if z.re >= 0.0: + result.re = w + result.im = z.im / (w * 2) + else: + if z.im >= 0.0: result.im = w + else: result.im = -w + result.re = z.im / (c.im + c.im) + +{.pop.} diff --git a/lib/contnrs.nim b/lib/contnrs.nim index c4db5a316..fa993e104 100644 --- a/lib/contnrs.nim +++ b/lib/contnrs.nim @@ -1,5 +1,4 @@ # Container library for Nimrod -# Implemented with macros, because generics sucks in many ways # Data structures for now: # TTable, TSet, TList diff --git a/lib/debugger.nim b/lib/debugger.nim index 03cbb6c0b..f5d526d70 100644 --- a/lib/debugger.nim +++ b/lib/debugger.nim @@ -1,500 +1,500 @@ -# -# -# Nimrod's Runtime Library -# (c) Copyright 2008 Andreas Rumpf -# -# See the file "copying.txt", included in this -# distribution, for details about the copyright. -# - -# This file implements the embedded debugger that can be linked -# with the application. We should not use dynamic memory here as that -# would interfere with the GC and trigger ON/OFF errors if the -# user program corrupts memory. Unfortunately, for dispaying -# variables we use the system.repr() proc which uses Nimrod -# strings and thus allocates memory from the heap. Pity, but -# I do not want to implement repr() twice. We also cannot deactivate -# the GC here as that might run out of memory too quickly... - -type - TDbgState = enum - dbOff, # debugger is turned off - dbStepInto, # debugger is in tracing mode - dbStepOver, - dbSkipCurrent, - dbQuiting, # debugger wants to quit - dbBreakpoints # debugger is only interested in breakpoints - - TDbgBreakpoint {.final.} = object - low, high: int # range from low to high; if disabled - # both low and high are set to their negative values - # this makes the check faster and safes memory - filename: string - name: string # name of breakpoint - - TVarSlot {.compilerproc, final.} = object # variable slots used for debugger: - address: pointer - typ: PNimType - name: cstring # for globals this is "module.name" - - PExtendedFrame = ptr TExtendedFrame - TExtendedFrame {.final.} = object # If the debugger is enabled the compiler - # provides an extended frame. Of course - # only slots that are - # needed are allocated and not 10_000, - # except for the global data description. - f: TFrame - slots: array[0..10_000, TVarSlot] - -var - dbgInSignal: bool # wether the debugger is in the signal handler - dbgIn: TFile # debugger input stream - dbgUser: string = "s" # buffer for user input; first command is ``step_into`` - # needs to be global cause we store the last command - # in it - dbgState: TDbgState = dbStepInto # state of debugger - dbgBP: array[0..127, TDbgBreakpoint] # breakpoints - dbgBPlen: int = 0 - - dbgSkipToFrame: PFrame # frame to be skipped to - - dbgGlobalData: TExtendedFrame # this reserves much space, but - # for now it is the most practical way - - maxDisplayRecDepth: int = 5 # do not display too much data! - -proc findBreakpoint(name: string): int = - # returns -1 if not found - for i in countdown(dbgBPlen-1, 0): - if name == dbgBP[i].name: return i - return -1 - -proc ListBreakPoints() = - write(stdout, "*** endb| Breakpoints:\n") - for i in 0 .. dbgBPlen-1: - write(stdout, dbgBP[i].name & ": " & $abs(dbgBP[i].low) & ".." & - $abs(dbgBP[i].high) & dbgBP[i].filename) - if dbgBP[i].low < 0: - write(stdout, " [disabled]\n") - else: - write(stdout, "\n") - write(stdout, "***\n") - -proc openAppend(filename: string): TFile = - if openFile(result, filename, fmAppend): - write(result, "----------------------------------------\n") - -proc dbgRepr(p: pointer, typ: PNimType): string = - var - cl: TReprClosure - initReprClosure(cl) - cl.recDepth = maxDisplayRecDepth - # locks for the GC turned out to be a bad idea... - # inc(recGcLock) - result = "" - reprAux(result, p, typ, cl) - # dec(recGcLock) - deinitReprClosure(cl) - -proc writeVariable(stream: TFile, slot: TVarSlot) = - write(stream, slot.name) - write(stream, " = ") - writeln(stream, dbgRepr(slot.address, slot.typ)) - -proc ListFrame(stream: TFile, f: PExtendedFrame) = - write(stream, "*** endb| Frame (" & $f.f.len & " slots):\n") - for i in 0 .. f.f.len-1: - writeVariable(stream, f.slots[i]) - write(stream, "***\n") - -proc ListVariables(stream: TFile, f: PExtendedFrame) = - write(stream, "*** endb| Frame (" & $f.f.len & " slots):\n") - for i in 0 .. f.f.len-1: - writeln(stream, f.slots[i].name) - write(stream, "***\n") - -proc debugOut(msg: cstring) = - # the *** *** markers are for easy recognition of debugger - # output for external frontends. - write(stdout, "*** endb| ") - write(stdout, msg) - write(stdout, "***\n") - -proc dbgFatal(msg: cstring) = - debugOut(msg) - dbgAborting = True # the debugger wants to abort - quit(1) - -proc findVariable(frame: PExtendedFrame, varname: cstring): int = - for i in 0 .. frame.f.len - 1: - if c_strcmp(frame.slots[i].name, varname) == 0: return i - return -1 - -proc dbgShowCurrentProc(dbgFramePointer: PFrame) = - if dbgFramePointer != nil: - write(stdout, "*** endb| now in proc: ") - write(stdout, dbgFramePointer.procname) - write(stdout, " ***\n") - else: - write(stdout, "*** endb| (procedure name not available) ***\n") - -proc dbgShowExecutionPoint() = - write(stdout, "*** endb| " & $framePtr.filename & "(" & $framePtr.line & - ") " & $framePtr.procname & " ***\n") - -when defined(windows) or defined(dos) or defined(os2): - {.define: FileSystemCaseInsensitive.} - -proc fileMatches(c, bp: cstring): bool = - # bp = breakpoint filename - # c = current filename - # we consider it a match if bp is a suffix of c - # and the character for the suffix does not exist or - # is one of: \ / : - # depending on the OS case does not matter! - var blen: int = c_strlen(bp) - var clen: int = c_strlen(c) - if blen > clen: return false - # check for \ / : - if clen-blen-1 >= 0 and c[clen-blen-1] notin {'\\', '/', ':'}: - return false - var i = 0 - while i < blen: - var x, y: char - x = bp[i] - y = c[i+clen-blen] - when defined(FileSystemCaseInsensitive): - if x >= 'A' and x <= 'Z': x = chr(ord(x) - ord('A') + ord('a')) - if y >= 'A' and y <= 'Z': y = chr(ord(y) - ord('A') + ord('a')) - if x != y: return false - inc(i) - return true - -proc dbgBreakpointReached(line: int): int = - for i in 0..dbgBPlen-1: - if line >= dbgBP[i].low and line <= dbgBP[i].high and - fileMatches(framePtr.filename, dbgBP[i].filename): return i - return -1 - -proc scanAndAppendWord(src: string, a: var string, start: int): int = - result = start - # skip whitespace: - while src[result] in {'\t', ' '}: inc(result) - while True: - case src[result] - of 'a'..'z', '0'..'9': add(a, src[result]) - of '_': nil # just skip it - of 'A'..'Z': add(a, chr(ord(src[result]) - ord('A') + ord('a'))) - else: break - inc(result) - -proc scanWord(src: string, a: var string, start: int): int = - a = "" - result = scanAndAppendWord(src, a, start) - -proc scanFilename(src: string, a: var string, start: int): int = - result = start - a = "" - # skip whitespace: - while src[result] in {'\t', ' '}: inc(result) - while src[result] notin {'\t', ' ', '\0'}: - add(a, src[result]) - inc(result) - -proc scanNumber(src: string, a: var int, start: int): int = - result = start - a = 0 - while src[result] in {'\t', ' '}: inc(result) - while true: - case src[result] - of '0'..'9': a = a * 10 + ord(src[result]) - ord('0') - of '_': nil # skip underscores (nice for long line numbers) - else: break - inc(result) - -proc dbgHelp() = - debugOut(""" -list of commands (see the manual for further help): - GENERAL -h, help display this help message -q, quit quit the debugger and the program -<ENTER> repeat the previous debugger command - EXECUTING -s, step single step, stepping into routine calls -n, next single step, without stepping into routine calls -f, skipcurrent continue execution until the current routine finishes -c, continue continue execution until the next breakpoint -i, ignore continue execution, ignore all breakpoints - BREAKPOINTS -b, break <name> [fromline [toline]] [file] - set a new breakpoint named 'name' for line and file - if line or file are omitted the current one is used -breakpoints display the entire breakpoint list -disable <name> disable a breakpoint -enable <name> enable a breakpoint - DATA DISPLAY -e, eval <expr> evaluate the expression <expr> -o, out <file> <expr> evaluate <expr> and write it to <file> -w, where display the current execution point -stackframe [file] display current stack frame [and write it to file] -u, up go up in the call stack -d, down go down in the call stack -bt, backtrace display the entire call stack -l, locals display available local variables -g, globals display available global variables -maxdisplay <integer> set the display's recursion maximum -""") - -proc InvalidCommand() = - debugOut("[Warning] invalid command ignored (type 'h' for help) ") - -proc hasExt(s: string): bool = - # returns true if s has a filename extension - for i in countdown(len(s)-1, 0): - if s[i] == '.': return true - return false - -proc setBreakPoint(s: string, start: int) = - var dbgTemp: string - var i = scanWord(s, dbgTemp, start) - if i <= start: - InvalidCommand() - return - if dbgBPlen >= high(dbgBP): - debugOut("[Warning] no breakpoint could be set; out of breakpoint space ") - return - var x = dbgBPlen - inc(dbgBPlen) - dbgBP[x].name = dbgTemp - i = scanNumber(s, dbgBP[x].low, i) - if dbgBP[x].low == 0: - # set to current line: - dbgBP[x].low = framePtr.line - i = scanNumber(s, dbgBP[x].high, i) - if dbgBP[x].high == 0: # set to low: - dbgBP[x].high = dbgBP[x].low - i = scanFilename(s, dbgTemp, i) - if not (dbgTemp.len == 0): - if not hasExt(dbgTemp): add(dbgTemp, ".nim") - dbgBP[x].filename = dbgTemp - else: # use current filename - dbgBP[x].filename = $framePtr.filename - # skip whitespace: - while s[i] in {' ', '\t'}: inc(i) - if s[i] != '\0': - dec(dbgBPLen) # remove buggy breakpoint - InvalidCommand() - -proc BreakpointSetEnabled(s: string, start, enabled: int) = - var dbgTemp: string - var i = scanWord(s, dbgTemp, start) - if i <= start: - InvalidCommand() - return - var x = findBreakpoint(dbgTemp) - if x < 0: debugOut("[Warning] breakpoint does not exist ") - elif enabled * dbgBP[x].low < 0: # signs are different? - dbgBP[x].low = -dbgBP[x].low - dbgBP[x].high = -dbgBP[x].high - -proc dbgEvaluate(stream: TFile, s: string, start: int, - currFrame: PExtendedFrame) = - var dbgTemp: string - var i = scanWord(s, dbgTemp, start) - while s[i] in {' ', '\t'}: inc(i) - var f = currFrame - if s[i] == '.': - inc(i) # skip '.' - add(dbgTemp, '.') - i = scanAndAppendWord(s, dbgTemp, i) - # search for global var: - f = addr(dbgGlobalData) - if s[i] != '\0': - debugOut("[Warning] could not parse expr ") - return - var j = findVariable(f, dbgTemp) - if j < 0: - debugOut("[Warning] could not find variable ") - return - writeVariable(stream, f.slots[j]) - -proc dbgOut(s: string, start: int, currFrame: PExtendedFrame) = - var dbgTemp: string - var i = scanFilename(s, dbgTemp, start) - if dbgTemp.len == 0: - InvalidCommand() - return - var stream = openAppend(dbgTemp) - if stream == nil: - debugOut("[Warning] could not open or create file ") - return - dbgEvaluate(stream, s, i, currFrame) - closeFile(stream) - -proc dbgStackFrame(s: string, start: int, currFrame: PExtendedFrame) = - var dbgTemp: string - var i = scanFilename(s, dbgTemp, start) - if dbgTemp.len == 0: - # just write it to stdout: - ListFrame(stdout, currFrame) - else: - var stream = openAppend(dbgTemp) - if stream == nil: - debugOut("[Warning] could not open or create file ") - return - ListFrame(stream, currFrame) - closeFile(stream) - -proc CommandPrompt() = - # if we return from this routine, user code executes again - var - again: bool = True - dbgFramePtr = framePtr # for going down and up the stack - dbgDown: int = 0 # how often we did go down - - while again: - write(stdout, "*** endb| >>") - var tmp = readLine(stdin) - if tmp.len > 0: dbgUser = tmp - # now look what we have to do: - var dbgTemp: string - var i = scanWord(dbgUser, dbgTemp, 0) - case dbgTemp - of "": InvalidCommand() - of "s", "step": - dbgState = dbStepInto - again = false - of "n", "next": - dbgState = dbStepOver - dbgSkipToFrame = framePtr - again = false - of "f", "skipcurrent": - dbgState = dbSkipCurrent - dbgSkipToFrame = framePtr.prev - again = false - of "c", "continue": - dbgState = dbBreakpoints - again = false - of "i", "ignore": - dbgState = dbOff - again = false - of "h", "help": - dbgHelp() - of "q", "quit": - dbgState = dbQuiting - dbgAborting = True - again = false - quit(1) # BUGFIX: quit with error code > 0 - of "e", "eval": - dbgEvaluate(stdout, dbgUser, i, cast[PExtendedFrame](dbgFramePtr)) - of "o", "out": - dbgOut(dbgUser, i, cast[PExtendedFrame](dbgFramePtr)) - of "stackframe": - dbgStackFrame(dbgUser, i, cast[PExtendedFrame](dbgFramePtr)) - of "w", "where": - dbgShowExecutionPoint() - of "l", "locals": - ListVariables(stdout, cast[PExtendedFrame](dbgFramePtr)) - of "g", "globals": - ListVariables(stdout, addr(dbgGlobalData)) - of "u", "up": - if dbgDown <= 0: - debugOut("[Warning] cannot go up any further ") - else: - dbgFramePtr = framePtr - for j in 0 .. dbgDown-2: # BUGFIX - dbgFramePtr = dbgFramePtr.prev - dec(dbgDown) - dbgShowCurrentProc(dbgFramePtr) - of "d", "down": - if dbgFramePtr != nil: - inc(dbgDown) - dbgFramePtr = dbgFramePtr.prev - dbgShowCurrentProc(dbgFramePtr) - else: - debugOut("[Warning] cannot go down any further ") - of "bt", "backtrace": - WriteStackTrace() - of "b", "break": - setBreakPoint(dbgUser, i) - of "breakpoints": - ListBreakPoints() - of "disable": - BreakpointSetEnabled(dbgUser, i, -1) - of "enable": - BreakpointSetEnabled(dbgUser, i, +1) - of "maxdisplay": - var parsed: int - i = scanNumber(dbgUser, parsed, i) - if dbgUser[i-1] in {'0'..'9'}: - if parsed == 0: maxDisplayRecDepth = -1 - else: maxDisplayRecDepth = parsed - else: - InvalidCommand() - else: - InvalidCommand() - -proc endbStep() = - # we get into here if an unhandled exception has been raised - # XXX: do not allow the user to run the program any further? - # XXX: BUG: the frame is lost here! - dbgShowExecutionPoint() - CommandPrompt() - -proc checkForBreakpoint() = - var i = dbgBreakpointReached(framePtr.line) - if i >= 0: - write(stdout, "*** endb| reached ") - write(stdout, dbgBP[i].name) - write(stdout, " in ") - write(stdout, framePtr.filename) - write(stdout, "(") - write(stdout, framePtr.line) - write(stdout, ") ") - write(stdout, framePtr.procname) - write(stdout, " ***\n") - CommandPrompt() - -# interface to the user program: - -proc dbgRegisterBreakpoint(line: int, - filename, name: cstring) {.compilerproc.} = - var x = dbgBPlen - inc(dbgBPlen) - dbgBP[x].name = $name - dbgBP[x].filename = $filename - dbgBP[x].low = line - dbgBP[x].high = line - -proc dbgRegisterGlobal(name: cstring, address: pointer, - typ: PNimType) {.compilerproc.} = - var i = dbgGlobalData.f.len - if i >= high(dbgGlobalData.slots): - debugOut("[Warning] cannot register global ") - return - dbgGlobalData.slots[i].name = name - dbgGlobalData.slots[i].typ = typ - dbgGlobalData.slots[i].address = address - inc(dbgGlobalData.f.len) - -proc endb(line: int) {.compilerproc.} = - # This proc is called before any Nimrod code line! - # Thus, it must have as few parameters as possible to keep the - # code size small! - # check if we are at an enabled breakpoint or "in the mood" - framePtr.line = line # this is done here for smaller code size! - if dbgLineHook != nil: dbgLineHook() - case dbgState - of dbStepInto: - # we really want the command prompt here: - dbgShowExecutionPoint() - CommandPrompt() - of dbSkipCurrent, dbStepOver: # skip current routine - if framePtr == dbgSkipToFrame: - dbgShowExecutionPoint() - CommandPrompt() - else: # breakpoints are wanted though (I guess) - checkForBreakpoint() - of dbBreakpoints: # debugger is only interested in breakpoints - checkForBreakpoint() - else: nil +# +# +# Nimrod's Runtime Library +# (c) Copyright 2008 Andreas Rumpf +# +# See the file "copying.txt", included in this +# distribution, for details about the copyright. +# + +# This file implements the embedded debugger that can be linked +# with the application. We should not use dynamic memory here as that +# would interfere with the GC and trigger ON/OFF errors if the +# user program corrupts memory. Unfortunately, for dispaying +# variables we use the system.repr() proc which uses Nimrod +# strings and thus allocates memory from the heap. Pity, but +# I do not want to implement repr() twice. We also cannot deactivate +# the GC here as that might run out of memory too quickly... + +type + TDbgState = enum + dbOff, # debugger is turned off + dbStepInto, # debugger is in tracing mode + dbStepOver, + dbSkipCurrent, + dbQuiting, # debugger wants to quit + dbBreakpoints # debugger is only interested in breakpoints + + TDbgBreakpoint {.final.} = object + low, high: int # range from low to high; if disabled + # both low and high are set to their negative values + # this makes the check faster and safes memory + filename: string + name: string # name of breakpoint + + TVarSlot {.compilerproc, final.} = object # variable slots used for debugger: + address: pointer + typ: PNimType + name: cstring # for globals this is "module.name" + + PExtendedFrame = ptr TExtendedFrame + TExtendedFrame {.final.} = object # If the debugger is enabled the compiler + # provides an extended frame. Of course + # only slots that are + # needed are allocated and not 10_000, + # except for the global data description. + f: TFrame + slots: array[0..10_000, TVarSlot] + +var + dbgInSignal: bool # wether the debugger is in the signal handler + dbgIn: TFile # debugger input stream + dbgUser: string = "s" # buffer for user input; first command is ``step_into`` + # needs to be global cause we store the last command + # in it + dbgState: TDbgState = dbStepInto # state of debugger + dbgBP: array[0..127, TDbgBreakpoint] # breakpoints + dbgBPlen: int = 0 + + dbgSkipToFrame: PFrame # frame to be skipped to + + dbgGlobalData: TExtendedFrame # this reserves much space, but + # for now it is the most practical way + + maxDisplayRecDepth: int = 5 # do not display too much data! + +proc findBreakpoint(name: string): int = + # returns -1 if not found + for i in countdown(dbgBPlen-1, 0): + if name == dbgBP[i].name: return i + return -1 + +proc ListBreakPoints() = + write(stdout, "*** endb| Breakpoints:\n") + for i in 0 .. dbgBPlen-1: + write(stdout, dbgBP[i].name & ": " & $abs(dbgBP[i].low) & ".." & + $abs(dbgBP[i].high) & dbgBP[i].filename) + if dbgBP[i].low < 0: + write(stdout, " [disabled]\n") + else: + write(stdout, "\n") + write(stdout, "***\n") + +proc openAppend(filename: string): TFile = + if openFile(result, filename, fmAppend): + write(result, "----------------------------------------\n") + +proc dbgRepr(p: pointer, typ: PNimType): string = + var + cl: TReprClosure + initReprClosure(cl) + cl.recDepth = maxDisplayRecDepth + # locks for the GC turned out to be a bad idea... + # inc(recGcLock) + result = "" + reprAux(result, p, typ, cl) + # dec(recGcLock) + deinitReprClosure(cl) + +proc writeVariable(stream: TFile, slot: TVarSlot) = + write(stream, slot.name) + write(stream, " = ") + writeln(stream, dbgRepr(slot.address, slot.typ)) + +proc ListFrame(stream: TFile, f: PExtendedFrame) = + write(stream, "*** endb| Frame (" & $f.f.len & " slots):\n") + for i in 0 .. f.f.len-1: + writeVariable(stream, f.slots[i]) + write(stream, "***\n") + +proc ListVariables(stream: TFile, f: PExtendedFrame) = + write(stream, "*** endb| Frame (" & $f.f.len & " slots):\n") + for i in 0 .. f.f.len-1: + writeln(stream, f.slots[i].name) + write(stream, "***\n") + +proc debugOut(msg: cstring) = + # the *** *** markers are for easy recognition of debugger + # output for external frontends. + write(stdout, "*** endb| ") + write(stdout, msg) + write(stdout, "***\n") + +proc dbgFatal(msg: cstring) = + debugOut(msg) + dbgAborting = True # the debugger wants to abort + quit(1) + +proc findVariable(frame: PExtendedFrame, varname: cstring): int = + for i in 0 .. frame.f.len - 1: + if c_strcmp(frame.slots[i].name, varname) == 0: return i + return -1 + +proc dbgShowCurrentProc(dbgFramePointer: PFrame) = + if dbgFramePointer != nil: + write(stdout, "*** endb| now in proc: ") + write(stdout, dbgFramePointer.procname) + write(stdout, " ***\n") + else: + write(stdout, "*** endb| (procedure name not available) ***\n") + +proc dbgShowExecutionPoint() = + write(stdout, "*** endb| " & $framePtr.filename & "(" & $framePtr.line & + ") " & $framePtr.procname & " ***\n") + +when defined(windows) or defined(dos) or defined(os2): + {.define: FileSystemCaseInsensitive.} + +proc fileMatches(c, bp: cstring): bool = + # bp = breakpoint filename + # c = current filename + # we consider it a match if bp is a suffix of c + # and the character for the suffix does not exist or + # is one of: \ / : + # depending on the OS case does not matter! + var blen: int = c_strlen(bp) + var clen: int = c_strlen(c) + if blen > clen: return false + # check for \ / : + if clen-blen-1 >= 0 and c[clen-blen-1] notin {'\\', '/', ':'}: + return false + var i = 0 + while i < blen: + var x, y: char + x = bp[i] + y = c[i+clen-blen] + when defined(FileSystemCaseInsensitive): + if x >= 'A' and x <= 'Z': x = chr(ord(x) - ord('A') + ord('a')) + if y >= 'A' and y <= 'Z': y = chr(ord(y) - ord('A') + ord('a')) + if x != y: return false + inc(i) + return true + +proc dbgBreakpointReached(line: int): int = + for i in 0..dbgBPlen-1: + if line >= dbgBP[i].low and line <= dbgBP[i].high and + fileMatches(framePtr.filename, dbgBP[i].filename): return i + return -1 + +proc scanAndAppendWord(src: string, a: var string, start: int): int = + result = start + # skip whitespace: + while src[result] in {'\t', ' '}: inc(result) + while True: + case src[result] + of 'a'..'z', '0'..'9': add(a, src[result]) + of '_': nil # just skip it + of 'A'..'Z': add(a, chr(ord(src[result]) - ord('A') + ord('a'))) + else: break + inc(result) + +proc scanWord(src: string, a: var string, start: int): int = + a = "" + result = scanAndAppendWord(src, a, start) + +proc scanFilename(src: string, a: var string, start: int): int = + result = start + a = "" + # skip whitespace: + while src[result] in {'\t', ' '}: inc(result) + while src[result] notin {'\t', ' ', '\0'}: + add(a, src[result]) + inc(result) + +proc scanNumber(src: string, a: var int, start: int): int = + result = start + a = 0 + while src[result] in {'\t', ' '}: inc(result) + while true: + case src[result] + of '0'..'9': a = a * 10 + ord(src[result]) - ord('0') + of '_': nil # skip underscores (nice for long line numbers) + else: break + inc(result) + +proc dbgHelp() = + debugOut(""" +list of commands (see the manual for further help): + GENERAL +h, help display this help message +q, quit quit the debugger and the program +<ENTER> repeat the previous debugger command + EXECUTING +s, step single step, stepping into routine calls +n, next single step, without stepping into routine calls +f, skipcurrent continue execution until the current routine finishes +c, continue continue execution until the next breakpoint +i, ignore continue execution, ignore all breakpoints + BREAKPOINTS +b, break <name> [fromline [toline]] [file] + set a new breakpoint named 'name' for line and file + if line or file are omitted the current one is used +breakpoints display the entire breakpoint list +disable <name> disable a breakpoint +enable <name> enable a breakpoint + DATA DISPLAY +e, eval <expr> evaluate the expression <expr> +o, out <file> <expr> evaluate <expr> and write it to <file> +w, where display the current execution point +stackframe [file] display current stack frame [and write it to file] +u, up go up in the call stack +d, down go down in the call stack +bt, backtrace display the entire call stack +l, locals display available local variables +g, globals display available global variables +maxdisplay <integer> set the display's recursion maximum +""") + +proc InvalidCommand() = + debugOut("[Warning] invalid command ignored (type 'h' for help) ") + +proc hasExt(s: string): bool = + # returns true if s has a filename extension + for i in countdown(len(s)-1, 0): + if s[i] == '.': return true + return false + +proc setBreakPoint(s: string, start: int) = + var dbgTemp: string + var i = scanWord(s, dbgTemp, start) + if i <= start: + InvalidCommand() + return + if dbgBPlen >= high(dbgBP): + debugOut("[Warning] no breakpoint could be set; out of breakpoint space ") + return + var x = dbgBPlen + inc(dbgBPlen) + dbgBP[x].name = dbgTemp + i = scanNumber(s, dbgBP[x].low, i) + if dbgBP[x].low == 0: + # set to current line: + dbgBP[x].low = framePtr.line + i = scanNumber(s, dbgBP[x].high, i) + if dbgBP[x].high == 0: # set to low: + dbgBP[x].high = dbgBP[x].low + i = scanFilename(s, dbgTemp, i) + if not (dbgTemp.len == 0): + if not hasExt(dbgTemp): add(dbgTemp, ".nim") + dbgBP[x].filename = dbgTemp + else: # use current filename + dbgBP[x].filename = $framePtr.filename + # skip whitespace: + while s[i] in {' ', '\t'}: inc(i) + if s[i] != '\0': + dec(dbgBPLen) # remove buggy breakpoint + InvalidCommand() + +proc BreakpointSetEnabled(s: string, start, enabled: int) = + var dbgTemp: string + var i = scanWord(s, dbgTemp, start) + if i <= start: + InvalidCommand() + return + var x = findBreakpoint(dbgTemp) + if x < 0: debugOut("[Warning] breakpoint does not exist ") + elif enabled * dbgBP[x].low < 0: # signs are different? + dbgBP[x].low = -dbgBP[x].low + dbgBP[x].high = -dbgBP[x].high + +proc dbgEvaluate(stream: TFile, s: string, start: int, + currFrame: PExtendedFrame) = + var dbgTemp: string + var i = scanWord(s, dbgTemp, start) + while s[i] in {' ', '\t'}: inc(i) + var f = currFrame + if s[i] == '.': + inc(i) # skip '.' + add(dbgTemp, '.') + i = scanAndAppendWord(s, dbgTemp, i) + # search for global var: + f = addr(dbgGlobalData) + if s[i] != '\0': + debugOut("[Warning] could not parse expr ") + return + var j = findVariable(f, dbgTemp) + if j < 0: + debugOut("[Warning] could not find variable ") + return + writeVariable(stream, f.slots[j]) + +proc dbgOut(s: string, start: int, currFrame: PExtendedFrame) = + var dbgTemp: string + var i = scanFilename(s, dbgTemp, start) + if dbgTemp.len == 0: + InvalidCommand() + return + var stream = openAppend(dbgTemp) + if stream == nil: + debugOut("[Warning] could not open or create file ") + return + dbgEvaluate(stream, s, i, currFrame) + closeFile(stream) + +proc dbgStackFrame(s: string, start: int, currFrame: PExtendedFrame) = + var dbgTemp: string + var i = scanFilename(s, dbgTemp, start) + if dbgTemp.len == 0: + # just write it to stdout: + ListFrame(stdout, currFrame) + else: + var stream = openAppend(dbgTemp) + if stream == nil: + debugOut("[Warning] could not open or create file ") + return + ListFrame(stream, currFrame) + closeFile(stream) + +proc CommandPrompt() = + # if we return from this routine, user code executes again + var + again: bool = True + dbgFramePtr = framePtr # for going down and up the stack + dbgDown: int = 0 # how often we did go down + + while again: + write(stdout, "*** endb| >>") + var tmp = readLine(stdin) + if tmp.len > 0: dbgUser = tmp + # now look what we have to do: + var dbgTemp: string + var i = scanWord(dbgUser, dbgTemp, 0) + case dbgTemp + of "": InvalidCommand() + of "s", "step": + dbgState = dbStepInto + again = false + of "n", "next": + dbgState = dbStepOver + dbgSkipToFrame = framePtr + again = false + of "f", "skipcurrent": + dbgState = dbSkipCurrent + dbgSkipToFrame = framePtr.prev + again = false + of "c", "continue": + dbgState = dbBreakpoints + again = false + of "i", "ignore": + dbgState = dbOff + again = false + of "h", "help": + dbgHelp() + of "q", "quit": + dbgState = dbQuiting + dbgAborting = True + again = false + quit(1) # BUGFIX: quit with error code > 0 + of "e", "eval": + dbgEvaluate(stdout, dbgUser, i, cast[PExtendedFrame](dbgFramePtr)) + of "o", "out": + dbgOut(dbgUser, i, cast[PExtendedFrame](dbgFramePtr)) + of "stackframe": + dbgStackFrame(dbgUser, i, cast[PExtendedFrame](dbgFramePtr)) + of "w", "where": + dbgShowExecutionPoint() + of "l", "locals": + ListVariables(stdout, cast[PExtendedFrame](dbgFramePtr)) + of "g", "globals": + ListVariables(stdout, addr(dbgGlobalData)) + of "u", "up": + if dbgDown <= 0: + debugOut("[Warning] cannot go up any further ") + else: + dbgFramePtr = framePtr + for j in 0 .. dbgDown-2: # BUGFIX + dbgFramePtr = dbgFramePtr.prev + dec(dbgDown) + dbgShowCurrentProc(dbgFramePtr) + of "d", "down": + if dbgFramePtr != nil: + inc(dbgDown) + dbgFramePtr = dbgFramePtr.prev + dbgShowCurrentProc(dbgFramePtr) + else: + debugOut("[Warning] cannot go down any further ") + of "bt", "backtrace": + WriteStackTrace() + of "b", "break": + setBreakPoint(dbgUser, i) + of "breakpoints": + ListBreakPoints() + of "disable": + BreakpointSetEnabled(dbgUser, i, -1) + of "enable": + BreakpointSetEnabled(dbgUser, i, +1) + of "maxdisplay": + var parsed: int + i = scanNumber(dbgUser, parsed, i) + if dbgUser[i-1] in {'0'..'9'}: + if parsed == 0: maxDisplayRecDepth = -1 + else: maxDisplayRecDepth = parsed + else: + InvalidCommand() + else: + InvalidCommand() + +proc endbStep() = + # we get into here if an unhandled exception has been raised + # XXX: do not allow the user to run the program any further? + # XXX: BUG: the frame is lost here! + dbgShowExecutionPoint() + CommandPrompt() + +proc checkForBreakpoint() = + var i = dbgBreakpointReached(framePtr.line) + if i >= 0: + write(stdout, "*** endb| reached ") + write(stdout, dbgBP[i].name) + write(stdout, " in ") + write(stdout, framePtr.filename) + write(stdout, "(") + write(stdout, framePtr.line) + write(stdout, ") ") + write(stdout, framePtr.procname) + write(stdout, " ***\n") + CommandPrompt() + +# interface to the user program: + +proc dbgRegisterBreakpoint(line: int, + filename, name: cstring) {.compilerproc.} = + var x = dbgBPlen + inc(dbgBPlen) + dbgBP[x].name = $name + dbgBP[x].filename = $filename + dbgBP[x].low = line + dbgBP[x].high = line + +proc dbgRegisterGlobal(name: cstring, address: pointer, + typ: PNimType) {.compilerproc.} = + var i = dbgGlobalData.f.len + if i >= high(dbgGlobalData.slots): + debugOut("[Warning] cannot register global ") + return + dbgGlobalData.slots[i].name = name + dbgGlobalData.slots[i].typ = typ + dbgGlobalData.slots[i].address = address + inc(dbgGlobalData.f.len) + +proc endb(line: int) {.compilerproc.} = + # This proc is called before any Nimrod code line! + # Thus, it must have as few parameters as possible to keep the + # code size small! + # check if we are at an enabled breakpoint or "in the mood" + framePtr.line = line # this is done here for smaller code size! + if dbgLineHook != nil: dbgLineHook() + case dbgState + of dbStepInto: + # we really want the command prompt here: + dbgShowExecutionPoint() + CommandPrompt() + of dbSkipCurrent, dbStepOver: # skip current routine + if framePtr == dbgSkipToFrame: + dbgShowExecutionPoint() + CommandPrompt() + else: # breakpoints are wanted though (I guess) + checkForBreakpoint() + of dbBreakpoints: # debugger is only interested in breakpoints + checkForBreakpoint() + else: nil diff --git a/lib/dlmalloc.c b/lib/dlmalloc.c index c907da830..2a8b299a1 100644 --- a/lib/dlmalloc.c +++ b/lib/dlmalloc.c @@ -1,12 +1,15 @@ + #define USE_DL_PREFIX +#define ASSEMBLY_VERSION +/* #define FOOTERS 1 #define DEBUG 1 -/* + #define ABORT_ON_ASSERT_FAILURE 0 */ -#define ABORT do { printf("abort was called\n"); abort(); } while (0) +#define ABORT do { /*printf("abort was called\n");*/ abort(); } while (0) /* This is a version (aka dlmalloc) of malloc/free/realloc written by @@ -2210,7 +2213,7 @@ static size_t traverse_and_check(mstate m); #define treebin_at(M,i) (&((M)->treebins[i])) /* assign tree index for size S to variable I */ -#if defined(__GNUC__) && defined(i386) +#if defined(__GNUC__) && defined(i386) && defined(ASSEMBLY_VERSION) #define compute_tree_index(S, I)\ {\ size_t X = S >> TREEBIN_SHIFT;\ @@ -2275,7 +2278,7 @@ static size_t traverse_and_check(mstate m); /* index corresponding to given bit */ -#if defined(__GNUC__) && defined(i386) +#if defined(__GNUC__) && defined(i386) && defined(ASSEMBLY_VERSION) #define compute_bit2idx(X, I)\ {\ unsigned int J;\ diff --git a/lib/dyncalls.nim b/lib/dyncalls.nim index 78c3fa115..7d7ade26c 100644 --- a/lib/dyncalls.nim +++ b/lib/dyncalls.nim @@ -7,25 +7,14 @@ # distribution, for details about the copyright. # - -# # This file implements the ability to call native procs from libraries. # It is not possible to do this in a platform independant way, unfortunately. # However, the interface has been designed to take platform differences into # account and been ported to all major platforms. -# -# interface type EInvalidLibrary = object of EOS -when defined(windows) or defined(dos): - {.define: USE_DLL.} -elif defined(posix): - {.define: USE_DLOPEN.} -elif defined(mac): - {.define: USE_DYLD.} - type TLibHandle = pointer # private type TProcAddr = pointer # libary loading and loading of procs: @@ -37,15 +26,13 @@ proc nimLoadLibrary(path: string): TLibHandle {.compilerproc.} proc nimUnloadLibrary(lib: TLibHandle) {.compilerproc.} proc nimGetProcAddr(lib: TLibHandle, name: cstring): TProcAddr {.compilerproc.} -#implementation - # this code was inspired from Lua's source code: # Lua - An Extensible Extension Language # Tecgraf: Computer Graphics Technology Group, PUC-Rio, Brazil # http://www.lua.org # mailto:info@lua.org -when defined(USE_DLOPEN): +when defined(posix): # # ========================================================================= # This is an implementation based on the dlfcn interface. @@ -76,7 +63,7 @@ when defined(USE_DLOPEN): proc nimGetProcAddr(lib: TLibHandle, name: cstring): TProcAddr = result = dlsym(lib, name) -elif defined(USE_DLL): +elif defined(windows) or defined(dos): # # ======================================================================= # Native Windows Implementation @@ -96,13 +83,13 @@ elif defined(USE_DLL): proc nimLoadLibrary(path: string): TLibHandle = result = cast[TLibHandle](winLoadLibrary(path)) - if result == nil: + if result == nil: raise newException(EInvalidLibrary, "could not load: " & path) proc nimGetProcAddr(lib: TLibHandle, name: cstring): TProcAddr = result = GetProcAddress(cast[THINSTANCE](lib), name) -elif defined(USE_DYLD): +elif defined(mac): # # ======================================================================= # Native Mac OS X / Darwin Implementation diff --git a/lib/ecmasys.nim b/lib/ecmasys.nim index 10a6247d4..2bbbd5f79 100644 --- a/lib/ecmasys.nim +++ b/lib/ecmasys.nim @@ -15,6 +15,7 @@ proc GC_fullCollect() = nil proc GC_setStrategy(strategy: TGC_Strategy) = nil proc GC_enableMarkAndSweep() = nil proc GC_disableMarkAndSweep() = nil +proc GC_getStatistics(): string = return "" proc getOccupiedMem(): int = return -1 proc getFreeMem(): int = return -1 diff --git a/lib/excpt.nim b/lib/excpt.nim index 8adb3d5a9..9c87fab55 100644 --- a/lib/excpt.nim +++ b/lib/excpt.nim @@ -171,8 +171,7 @@ var proc signalHandler(sig: cint) {.exportc: "signalHandler", noconv.} = # print stack trace and quit - var - s = int(sig) + var s = sig GC_disable() setLen(buf, 0) rawWriteStackTrace(buf) @@ -199,7 +198,8 @@ proc registerSignalHandler() = c_signal(SIGILL, signalHandler) c_signal(SIGBUS, signalHandler) -registerSignalHandler() # call it in initialization section +when not defined(noSignalHandler): + registerSignalHandler() # call it in initialization section # for easier debugging of the GC, this memory is only allocated after the # signal handlers have been registered new(gAssertionFailed) @@ -256,3 +256,12 @@ proc chckObj(obj, subclass: PNimType) {.compilerproc.} = proc chckObjAsgn(a, b: PNimType) {.compilerproc, inline.} = if a != b: raise newException(EInvalidObjectAssignment, "invalid object assignment") + +proc isObj(obj, subclass: PNimType): bool {.compilerproc.} = + # checks if obj is of type subclass: + var x = obj + if x == subclass: return true # optimized fast path + while x != subclass: + if x == nil: return false + x = x.base + return true diff --git a/lib/gc.nim b/lib/gc.nim index 72a287064..680256a93 100644 --- a/lib/gc.nim +++ b/lib/gc.nim @@ -9,20 +9,71 @@ # Garbage Collector +# Current Features: +# * incremental +# * non-recursive +# * generational +# * excellent performance + +# Future Improvements: +# * Both dlmalloc and TLSF lack zero-overhead object allocation. Thus, for +# small objects we will should use our own allocator. +# * Support for multi-threading. However, locks for the reference counting +# might turn out to be too slow. + +# --------------------------------------------------------------------------- +# Interface to TLSF: +const + useTLSF = false # benchmarking showed that *dlmalloc* is faster than *TLSF* + +when useTLSF: + {.compile: "tlsf.c".} + + proc tlsfUsed: int {.importc: "TLSF_GET_USED_SIZE", noconv.} + proc tlsfMax: int {.importc: "TLSF_GET_MAX_SIZE", noconv.} + + proc tlsf_malloc(size: int): pointer {.importc, noconv.} + proc tlsf_free(p: pointer) {.importc, noconv.} + proc tlsf_realloc(p: pointer, size: int): pointer {.importc, noconv.} +else: + # use DL malloc + {.compile: "dlmalloc.c".} + proc tlsfUsed: int {.importc: "dlmalloc_footprint", noconv.} + proc tlsfMax: int {.importc: "dlmalloc_max_footprint", noconv.} + + proc tlsf_malloc(size: int): pointer {.importc: "dlmalloc", noconv.} + proc tlsf_free(p: pointer) {.importc: "dlfree", noconv.} + proc tlsf_realloc(p: pointer, size: int): pointer {. + importc: "dlrealloc", noconv.} -# For a description of the algorithms used here see: -# intern.html +# --------------------------------------------------------------------------- -{.define: debugGC.} # we wish to debug the GC... +proc getOccupiedMem(): int = return tlsfUsed() +proc getFreeMem(): int = return tlsfMax() - tlsfUsed() +proc getTotalMem(): int = return tlsfMax() -#when defined(debugGC): -# {.define: logGC.} # define if the GC should log some of its activities +# --------------------------------------------------------------------------- -{.define: cycleGC.} +# After several attempts, we now use a novel approach for cycle detection: +# increments/decrements of the reference counters are enqued into a buffer +# and not immediately performed. The reason is that increments may introduce +# new garbage cycles. The cycle detector only scans the changed subgraph. This +# provides superior performance. Of course only cells that may be part of +# a cycle are considered. However, reallocation does not work with this scheme! +# Because the queue may contain references to the old cell. +# The queue is thread-local storage, so that no synchronization is needed for +# reference counting. + +# With this scheme, the entire heap is never searched and there is no need for +# the AT. const + debugGC = false # we wish to debug the GC... + logGC = false traceGC = false # extensive debugging reallyDealloc = true # for debugging purposes this can be set to false + cycleGC = true # (de)activate the cycle GC + stressGC = debugGC # Guess the page size of the system; if it is the # wrong value, performance may be worse (this is not @@ -32,103 +83,107 @@ const PageSize = 1 shl PageShift # on 32 bit systems 4096 CycleIncrease = 2 # is a multiplicative increase - InitialCycleThreshold = 8*1024*1024 # X MB because cycle checking is slow - ZctThreshold = 512 # we collect garbage if the ZCT's size + InitialCycleThreshold = 4*1024*1024 # X MB because cycle checking is slow + ZctThreshold = 256 # we collect garbage if the ZCT's size # reaches this threshold - # this needs benchmarking... - -when defined(debugGC): - const stressGC = False -else: - const stressGC = False + # this seems to be a good value -# things the System module thinks should be available: -when defined(useDL) or defined(nativeDL): - type - TMallocInfo {.importc: "struct mallinfo", nodecl, final.} = object - arena: cint # non-mmapped space allocated from system - ordblks: cint # number of free chunks - smblks: cint # number of fastbin blocks - hblks: cint # number of mmapped regions - hblkhd: cint # space in mmapped regions - usmblks: cint # maximum total allocated space - fsmblks: cint # space available in freed fastbin blocks - uordblks: cint # total allocated space - fordblks: cint # total free space - keepcost: cint # top-most, releasable (via malloc_trim) space - -when defined(useDL): - proc mallinfo: TMallocInfo {.importc: "dlmallinfo", nodecl.} -elif defined(nativeDL): - proc mallinfo: TMallocInfo {.importc: "mallinfo", nodecl.} - -when defined(useDL) or defined(nativeDL): - proc getOccupiedMem(): int = return mallinfo().uordblks - proc getFreeMem(): int = return mallinfo().fordblks - proc getTotalMem(): int = - var m = mallinfo() - return int(m.hblkhd) + int(m.arena) -else: # not available: - proc getOccupiedMem(): int = return -1 - proc getFreeMem(): int = return -1 - proc getTotalMem(): int = return -1 +const + MemAlignment = sizeof(pointer)*2 # minimal memory block that can be allocated + BitsPerUnit = sizeof(int)*8 + # a "unit" is a word, i.e. 4 bytes + # on a 32 bit system; I do not use the term "word" because under 32-bit + # Windows it is sometimes only 16 bits -var - cycleThreshold: int = InitialCycleThreshold + BitsPerPage = PageSize div MemAlignment + UnitsPerPage = BitsPerPage div BitsPerUnit + # how many units do we need to describe a page: + # on 32 bit systems this is only 16 (!) - memUsed: int = 0 # we have to keep track how much we have allocated + rcIncrement = 0b1000 # so that lowest 3 bits are not touched + # NOTE: Most colors are currently unused + rcBlack = 0b000 # cell is colored black; in use or free + rcGray = 0b001 # possible member of a cycle + rcWhite = 0b010 # member of a garbage cycle + rcPurple = 0b011 # possible root of a cycle + rcZct = 0b100 # in ZCT + rcRed = 0b101 # Candidate cycle undergoing sigma-computation + rcOrange = 0b110 # Candidate cycle awaiting epoch boundary + rcShift = 3 # shift by rcShift to get the reference counter + colorMask = 0b111 +type + TWalkOp = enum + waZctDecRef, waPush, waCycleDecRef - recGcLock: int = 0 - # we use a lock to prevend the garbage collector to - # be triggered in a finalizer; the collector should not call - # itself this way! Thus every object allocated by a finalizer - # will not trigger a garbage collection. This is wasteful but safe. - # This is a lock against recursive garbage collection, not a lock for - # threads! - -when defined(useDL) and not defined(nativeDL): - {.compile: "dlmalloc.c".} + TCell {.pure.} = object + refcount: int # the refcount and some flags + typ: PNimType + when debugGC: + filename: cstring + line: int -type + PCell = ptr TCell TFinalizer {.compilerproc.} = proc (self: pointer) # A ref type can have a finalizer that is called before the object's # storage is freed. PPointer = ptr pointer + TByteArray = array[0..1000_0000, byte] + PByte = ptr TByteArray + PString = ptr string -proc asgnRef(dest: ppointer, src: pointer) {.compilerproc.} -proc unsureAsgnRef(dest: ppointer, src: pointer) {.compilerproc.} - # unsureAsgnRef updates the reference counters only if dest is not on the - # stack. It is used by the code generator if it cannot decide wether a - # reference is in the stack or not (this can happen for out/var parameters). -proc growObj(old: pointer, newsize: int): pointer {.compilerproc.} -proc newObj(typ: PNimType, size: int): pointer {.compilerproc.} -proc newSeq(typ: PNimType, len: int): pointer {.compilerproc.} - -# implementation: - -when defined(useDL): - proc nimSize(p: pointer): int {. - importc: "dlmalloc_usable_size", header: "dlmalloc.h".} -elif defined(nativeDL): - proc nimSize(p: pointer): int {. - importc: "malloc_usable_size", header: "<malloc.h>".} + PPageDesc = ptr TPageDesc + TBitIndex = range[0..UnitsPerPage-1] + TPageDesc {.final, pure.} = object + next: PPageDesc # all nodes are connected with this pointer + key: TAddress # start address at bit 0 + bits: array[TBitIndex, int] # a bit vector -type - TWalkOp = enum - waNone, waRelease, waZctDecRef, waCycleDecRef, waCycleIncRef, waDebugIncRef + PPageDescArray = ptr array[0..1000_000, PPageDesc] + TCellSet {.final, pure.} = object + counter, max: int + head: PPageDesc + data: PPageDescArray - TCollectorData = int - TCell {.final.} = object - refcount: TCollectorData # the refcount and bit flags - typ: PNimType - when stressGC: - stackcount: int # stack counter for debugging - drefc: int # real reference counter for debugging + PCellArray = ptr array[0..100_000_000, PCell] + TCellSeq {.final, pure.} = object + len, cap: int + d: PCellArray - PCell = ptr TCell + TGcHeap {.final, pure.} = object # this contains the zero count and + # non-zero count table + mask: TAddress # mask for fast pointer detection + zct: TCellSeq # the zero count table + stackCells: TCellSet # cells and addresses that look like a cell but + # aren't of the hardware stack + + stackScans: int # number of performed stack scans (for statistics) + cycleCollections: int # number of performed full collections + maxThreshold: int # max threshold that has been set + maxStackSize: int # max stack size + maxStackPages: int # max number of pages in stack + cycleTableSize: int # max entries in cycle table + cycleRoots: TCellSet + tempStack: TCellSeq # temporary stack for recursion elimination var gOutOfMem: ref EOutOfMemory + stackBottom: pointer + gch: TGcHeap + cycleThreshold: int = InitialCycleThreshold + recGcLock: int = 0 + # we use a lock to prevend the garbage collector to be triggered in a + # finalizer; the collector should not call itself this way! Thus every + # object allocated by a finalizer will not trigger a garbage collection. + # This is wasteful but safe. This is a lock against recursive garbage + # collection, not a lock for threads! + +proc unsureAsgnRef(dest: ppointer, src: pointer) {.compilerproc.} + # unsureAsgnRef updates the reference counters only if dest is not on the + # stack. It is used by the code generator if it cannot decide wether a + # reference is in the stack or not (this can happen for out/var parameters). +#proc growObj(old: pointer, newsize: int): pointer {.compilerproc.} +proc newObj(typ: PNimType, size: int): pointer {.compilerproc.} +proc newSeq(typ: PNimType, len: int): pointer {.compilerproc.} proc raiseOutOfMem() {.noreturn.} = if gOutOfMem == nil: @@ -145,17 +200,22 @@ proc usrToCell(usr: pointer): PCell {.inline.} = # convert pointer to userdata to object (=pointer to refcount) result = cast[PCell](cast[TAddress](usr)-%TAddress(sizeof(TCell))) +proc canbeCycleRoot(c: PCell): bool {.inline.} = + result = ntfAcyclic notin c.typ.flags + proc extGetCellType(c: pointer): PNimType {.compilerproc.} = # used for code generation concerning debugging result = usrToCell(c).typ proc internRefcount(p: pointer): int {.exportc: "getRefcount".} = result = int(usrToCell(p).refcount) - if result < 0: result = 0 + if result > 0: result = result shr rcShift + else: result = 0 proc gcAlloc(size: int): pointer = - result = alloc0(size) + result = tlsf_malloc(size) if result == nil: raiseOutOfMem() + zeroMem(result, size) proc GC_disable() = inc(recGcLock) proc GC_enable() = @@ -181,95 +241,29 @@ proc nextTry(h, maxHash: int): int {.inline.} = # generates each int in range(maxHash) exactly once (see any text on # random-number generation for proof). -# ------------------ Any table (AT) ------------- - -# these values are for DL-malloc known for sure (and other allocators -# can only be worse): -when defined(useDL) or not defined(bcc): - const MemAlignment = 8 # minimal memory block that can be allocated -else: - const MemAlignment = 4 # Borland's memory manager is terrible! - -const - BitsPerUnit = sizeof(int)*8 - # a "unit" is a word, i.e. 4 bytes - # on a 32 bit system; I do not use the term "word" because under 32-bit - # Windows it is sometimes only 16 bits - - BitsPerPage = PageSize div MemAlignment - UnitsPerPage = BitsPerPage div BitsPerUnit - # how many units do we need to describe a page: - # on 32 bit systems this is only 16 (!) - # this that has to equals zero, otherwise we have to round up UnitsPerPage: when BitsPerPage mod BitsPerUnit != 0: {.error: "(BitsPerPage mod BitsPerUnit) should be zero!".} -# ------------------- cell set handling ------------------------------ -# A cellset consists of a hash table of page descriptors. A page -# descriptor has a bit for every Memalignment'th byte in the page. -# However, only bits corresponding to addresses that start memory blocks -# are set. -# Page descriptors are also linked to a list; the list -# is used for easy traversing of all page descriptors; this allows a -# fast iterator. -# We use a specialized hashing scheme; the formula is : -# hash = Page bitand max -# We use linear probing with the formular: (5*h)+1 -# Thus we likely get no collisions at all if the pages are given us -# sequentially by the operating system! -type - PPageDesc = ptr TPageDesc - - TBitIndex = range[0..UnitsPerPage-1] - - TPageDesc {.final.} = object - next: PPageDesc # all nodes are connected with this pointer - key: TAddress # start address at bit 0 - bits: array[TBitIndex, int] # a bit vector - - PPageDescArray = ptr array[0..1000_000, PPageDesc] - TCellSet {.final.} = object - counter, max: int - head: PPageDesc - data: PPageDescArray - - PCellArray = ptr array[0..100_000_000, PCell] - TCellSeq {.final.} = object - len, cap: int - d: PCellArray - - TSlowSet {.final.} = object # used for debugging purposes only - L: int # current length - cap: int # capacity - d: PCellArray - - TGcHeap {.final.} = object # this contains the zero count and - # non-zero count table - mask: TAddress # mask for fast pointer detection - zct: TCellSeq # the zero count table - at: TCellSet # a table that contains all references - newAT: TCellSet - stackCells: TCellSeq # cells that need to be decremented because they - # are in the hardware stack; a cell may occur - # several times in this data structure +# ------------------- cell set handling --------------------------------------- -var - stackBottom: pointer - gch: TGcHeap +proc inOperator(s: TCellSeq, c: PCell): bool {.inline.} = + for i in 0 .. s.len-1: + if s.d[i] == c: return True + return False proc add(s: var TCellSeq, c: PCell) {.inline.} = if s.len >= s.cap: s.cap = s.cap * 3 div 2 - s.d = cast[PCellArray](realloc(s.d, s.cap * sizeof(PCell))) + s.d = cast[PCellArray](tlsf_realloc(s.d, s.cap * sizeof(PCell))) if s.d == nil: raiseOutOfMem() s.d[s.len] = c inc(s.len) -proc inOperator(s: TCellSeq, c: PCell): bool {.inline.} = - for i in 0 .. s.len-1: - if s.d[i] == c: return True - return False +proc addZCT(s: var TCellSeq, c: PCell) = + if (c.refcount and colorMask) != rcZct: + c.refcount = c.refcount and not colorMask or rcZct + add(s, c) proc init(s: var TCellSeq, cap: int = 1024) = s.len = 0 @@ -289,13 +283,13 @@ proc CellSetDeinit(s: var TCellSet) = var it = s.head while it != nil: var n = it.next - dealloc(it) + tlsf_free(it) it = n s.head = nil # play it safe here - dealloc(s.data) + tlsf_free(s.data) s.data = nil s.counter = 0 - + proc CellSetGet(t: TCellSet, key: TAddress): PPageDesc = var h = cast[int](key) and t.max while t.data[h] != nil: @@ -313,15 +307,13 @@ proc CellSetRawInsert(t: TCellSet, data: PPageDescArray, data[h] = desc proc CellSetEnlarge(t: var TCellSet) = - var - n: PPageDescArray - oldMax = t.max + var oldMax = t.max t.max = ((t.max+1)*2)-1 - n = cast[PPageDescArray](gcAlloc((t.max + 1) * sizeof(PPageDesc))) + var n = cast[PPageDescArray](gcAlloc((t.max + 1) * sizeof(PPageDesc))) for i in 0 .. oldmax: if t.data[i] != nil: CellSetRawInsert(t, n, t.data[i]) - dealloc(t.data) + tlsf_free(t.data) t.data = n proc CellSetPut(t: var TCellSet, key: TAddress): PPageDesc = @@ -345,14 +337,11 @@ proc CellSetPut(t: var TCellSet, key: TAddress): PPageDesc = t.head = result t.data[h] = result -# ---------- slightly higher level procs ---------------------------------- +# ---------- slightly higher level procs -------------------------------------- proc in_Operator(s: TCellSet, cell: PCell): bool = - var - u: TAddress - t: PPageDesc - u = cast[TAddress](cell) - t = CellSetGet(s, u shr PageShift) + var u = cast[TAddress](cell) + var t = CellSetGet(s, u shr PageShift) if t != nil: u = (u %% PageSize) /% MemAlignment result = (t.bits[u /% BitsPerUnit] and (1 shl (u %% BitsPerUnit))) != 0 @@ -360,21 +349,15 @@ proc in_Operator(s: TCellSet, cell: PCell): bool = result = false proc incl(s: var TCellSet, cell: PCell) = - var - u: TAddress - t: PPageDesc - u = cast[TAddress](cell) - t = CellSetPut(s, u shr PageShift) + var u = cast[TAddress](cell) + var t = CellSetPut(s, u shr PageShift) u = (u %% PageSize) /% MemAlignment t.bits[u /% BitsPerUnit] = t.bits[u /% BitsPerUnit] or (1 shl (u %% BitsPerUnit)) proc excl(s: var TCellSet, cell: PCell) = - var - u: TAddress - t: PPageDesc - u = cast[TAddress](cell) - t = CellSetGet(s, u shr PageShift) + var u = cast[TAddress](cell) + var t = CellSetGet(s, u shr PageShift) if t != nil: u = (u %% PageSize) /% MemAlignment t.bits[u /% BitsPerUnit] = (t.bits[u /% BitsPerUnit] and @@ -400,97 +383,43 @@ iterator elements(t: TCellSet): PCell {.inline.} = # --------------- end of Cellset routines ------------------------------------- -proc testPageDescs() = - var root: TCellSet - CellSetInit(root) - #var u = 10_000 - #while u <= 20_000: - # incl(root, cast[PCell](u)) - # inc(u, 8) - - incl(root, cast[PCell](0x81cdfb8)) - for cell in elements(root): - c_fprintf(c_stdout, "%p\n", cast[int](cell)) - -#testPageDescs() - -when defined(debugGC): +when logGC or traceGC: proc writeCell(msg: CString, c: PCell) = - if c.typ != nil: - if c.typ.kind == tyString: - c_fprintf(c_stdout, "%s\n", cast[TAddress](cellToUsr(c)) + sizeof(int)*2) - c_fprintf(c_stdout, "%s: %p %d\n", msg, c, c.typ.kind) - else: c_fprintf(c_stdout, "%s: %p (nil type)\n", msg, c) - proc writePtr(msg: CString, p: Pointer) = - c_fprintf(c_stdout, "%s: %p\n", msg, p) - + var kind = -1 + if c.typ != nil: kind = ord(c.typ.kind) + when debugGC: + c_fprintf(c_stdout, "[GC] %s: %p %d rc=%ld from %s(%ld)\n", + msg, c, kind, c.refcount shr rcShift, c.filename, c.line) + else: + c_fprintf(c_stdout, "[GC] %s: %p %d rc=%ld\n", + msg, c, kind, c.refcount shr rcShift) when traceGC: # traceGC is a special switch to enable extensive debugging type TCellState = enum csAllocated, csZctFreed, csCycFreed - - proc cellSetInit(s: var TSlowSet) = - s.L = 0 - s.cap = 4096 - s.d = cast[PCellArray](gcAlloc(s.cap * sizeof(PCell))) - - proc cellSetDeinit(s: var TSlowSet) = - s.L = 0 - s.cap = 0 - dealloc(s.d) - - proc incl(s: var TSlowSet, c: PCell) = - if s.L >= s.cap: - s.cap = s.cap * 3 div 2 - s.d = cast[PCellArray](realloc(s.d, s.cap * sizeof(PCell))) - if s.d == nil: raiseOutOfMem() - s.d[s.L] = c - inc(s.L) - - proc excl(s: var TSlowSet, c: PCell) = - var i = 0 - while i < s.L: - if s.d[i] == c: - s.d[i] = s.d[s.L-1] - dec(s.L) - break - inc(i) - - proc inOperator(s: TSlowSet, c: PCell): bool = - var i = 0 - while i < s.L: - if s.d[i] == c: return true - inc(i) - - iterator elements(s: TSlowSet): PCell = - var i = 0 - while i < s.L: - yield s.d[i] - inc(i) - var - states: array[TCellState, TSlowSet] # TCellSet] + states: array[TCellState, TCellSet] proc traceCell(c: PCell, state: TCellState) = case state of csAllocated: if c in states[csAllocated]: - writeCell("attempt to alloc a already allocated cell", c) + writeCell("attempt to alloc an already allocated cell", c) assert(false) excl(states[csCycFreed], c) excl(states[csZctFreed], c) of csZctFreed: - if c notin states[csAllocated]: - writeCell("attempt to free a not allocated cell", c) - assert(false) if c in states[csZctFreed]: writeCell("attempt to free zct cell twice", c) assert(false) if c in states[csCycFreed]: writeCell("attempt to free with zct, but already freed with cyc", c) assert(false) + if c notin states[csAllocated]: + writeCell("attempt to free not an allocated cell", c) + assert(false) excl(states[csAllocated], c) of csCycFreed: if c notin states[csAllocated]: @@ -505,17 +434,30 @@ when traceGC: excl(states[csAllocated], c) incl(states[state], c) + proc writeLeakage() = + var z = 0 + var y = 0 + var e = 0 + for c in elements(states[csAllocated]): + inc(e) + if c in states[csZctFreed]: inc(z) + elif c in states[csCycFreed]: inc(z) + else: writeCell("leak", c) + cfprintf(cstdout, "Allocations: %ld; ZCT freed: %ld; CYC freed: %ld\n", + e, z, y) + template gcTrace(cell, state: expr): stmt = when traceGC: traceCell(cell, state) -# ------------------------------------------------------------------------- +# ----------------------------------------------------------------------------- # forward declarations: -proc collectCT(gch: var TGcHeap) -proc IsOnStack(p: pointer): bool +proc updateZCT() +proc collectCT(gch: var TGcHeap, zctUpdated: bool) +proc IsOnStack(p: pointer): bool {.noinline.} proc forAllChildren(cell: PCell, op: TWalkOp) -proc collectCycles(gch: var TGcHeap) - +proc doOperation(p: pointer, op: TWalkOp) +proc forAllChildrenAux(dest: Pointer, mt: PNimType, op: TWalkOp) proc reprAny(p: pointer, typ: PNimType): string {.compilerproc.} # we need the prototype here for debugging purposes @@ -530,157 +472,86 @@ proc prepareDealloc(cell: PCell) = (cast[TFinalizer](cell.typ.finalizer))(cellToUsr(cell)) dec(recGcLock) - when defined(nimSize): - memUsed = memUsed - nimSize(cell) - else: - memUsed = memUsed - cell.typ.size - -proc checkZCT(): bool = - if recGcLock >= 1: return true # prevent endless recursion - inc(recGcLock) - result = true - for i in 0..gch.zct.len-1: - var c = gch.zct.d[i] - if c.refcount > 0: # should be in the ZCT! - writeCell("wrong ZCT entry", c) - result = false - elif gch.zct.d[-c.refcount] != c: - writeCell("wrong ZCT position", c) - result = false - dec(recGcLock) - -proc GC_invariant(): bool = - if recGcLock >= 1: return true # prevent endless recursion - inc(recGcLock) - result = True - block checks: - if not checkZCT(): - result = false - break checks - # set counters back to zero: - for c in elements(gch.AT): - var t = c.typ - if t == nil or t.kind notin {tySequence, tyString, tyRef}: - writeCell("corrupt cell?", c) - result = false - break checks - when stressGC: c.drefc = 0 - for c in elements(gch.AT): - forAllChildren(c, waDebugIncRef) - when stressGC: - for c in elements(gch.AT): - var rc = c.refcount - if rc < 0: rc = 0 - if c.drefc > rc + c.stackcount: - result = false # failed - c_fprintf(c_stdout, - "broken cell: %p, refc: %ld, stack: %ld, real: %ld\n", - c, c.refcount, c.stackcount, c.drefc) - break checks - dec(recGcLock) - -when stressGC: - proc GCdebugHook() = - if not GC_invariant(): - assert(false) - - dbgLineHook = GCdebugHook - proc setStackBottom(theStackBottom: pointer) {.compilerproc.} = stackBottom = theStackBottom proc initGC() = when traceGC: for i in low(TCellState)..high(TCellState): CellSetInit(states[i]) + gch.stackScans = 0 + gch.cycleCollections = 0 + gch.maxThreshold = 0 + gch.maxStackSize = 0 + gch.maxStackPages = 0 + gch.cycleTableSize = 0 # init the rt init(gch.zct) - CellSetInit(gch.at) - init(gch.stackCells) + init(gch.tempStack) + CellSetInit(gch.cycleRoots) + CellSetInit(gch.stackCells) gch.mask = 0 new(gOutOfMem) # reserve space for the EOutOfMemory exception here! - assert(GC_invariant()) - -proc decRef(cell: PCell) {.inline.} = - assert(cell.refcount > 0) # this should be the case! - when stressGC: assert(cell in gch.AT) - dec(cell.refcount) - if cell.refcount == 0: - cell.refcount = -gch.zct.len - when stressGC: assert(cell notin gch.zct) - add(gch.zct, cell) - when stressGC: assert(checkZCT()) - -proc incRef(cell: PCell) {.inline.} = - var rc = cell.refcount - if rc <= 0: - # remove from zero count table: - when stressGC: assert(gch.zct.len > -rc) - when stressGC: assert(gch.zct.d[-rc] == cell) - gch.zct.d[-rc] = gch.zct.d[gch.zct.len-1] - gch.zct.d[-rc].refcount = rc - dec(gch.zct.len) - cell.refcount = 1 - when stressGC: assert(checkZCT()) - else: - inc(cell.refcount) - when stressGC: assert(checkZCT()) -proc asgnRef(dest: ppointer, src: pointer) = +proc PossibleRoot(gch: var TGcHeap, c: PCell) {.inline.} = + if canbeCycleRoot(c): incl(gch.cycleRoots, c) + +proc decRef(c: PCell) {.inline.} = + when stressGC: + if c.refcount <% rcIncrement: + writeCell("broken cell", c) + assert(c.refcount >% rcIncrement) + c.refcount = c.refcount -% rcIncrement + if c.refcount <% rcIncrement: + addZCT(gch.zct, c) + elif canBeCycleRoot(c): + possibleRoot(gch, c) + +proc incRef(c: PCell) {.inline.} = + c.refcount = c.refcount +% rcIncrement + if canBeCycleRoot(c): + # OPT: the code generator should special case this + possibleRoot(gch, c) + +proc nimGCref(p: pointer) {.compilerproc, inline.} = incRef(usrToCell(p)) +proc nimGCunref(p: pointer) {.compilerproc, inline.} = decRef(usrToCell(p)) + +proc asgnRef(dest: ppointer, src: pointer) {.compilerproc, inline.} = # the code generator calls this proc! assert(not isOnStack(dest)) # BUGFIX: first incRef then decRef! if src != nil: incRef(usrToCell(src)) if dest^ != nil: decRef(usrToCell(dest^)) dest^ = src - when stressGC: assert(GC_invariant()) + +proc asgnRefNoCycle(dest: ppointer, src: pointer) {.compilerproc, inline.} = + # the code generator calls this proc if it is known at compile time that no + # cycle is possible. + if src != nil: + var c = usrToCell(src) + c.refcount = c.refcount +% rcIncrement + if dest^ != nil: + var c = usrToCell(dest^) + c.refcount = c.refcount -% rcIncrement + if c.refcount <% rcIncrement: + addZCT(gch.zct, c) + dest^ = src proc unsureAsgnRef(dest: ppointer, src: pointer) = if not IsOnStack(dest): if src != nil: incRef(usrToCell(src)) if dest^ != nil: decRef(usrToCell(dest^)) dest^ = src - when stressGC: assert(GC_invariant()) - -proc restore(cell: PCell) = - if cell notin gch.newAT: - incl(gch.newAT, Cell) - forAllChildren(cell, waCycleIncRef) - -proc doOperation(p: pointer, op: TWalkOp) = - if p == nil: return - var cell: PCell = usrToCell(p) - assert(cell != nil) - case op # faster than function pointers because of easy prediction - of waNone: assert(false) - of waRelease: decRef(cell) # DEAD CODE! - of waZctDecRef: - decRef(cell) - of waCycleDecRef: - assert(cell.refcount > 0) - dec(cell.refcount) - of waCycleIncRef: - inc(cell.refcount) # restore proper reference counts! - restore(cell) - of waDebugIncRef: - when stressGC: inc(cell.drefc) - -type - TByteArray = array[0..1000_0000, byte] - PByte = ptr TByteArray - PString = ptr string - -proc forAllChildrenAux(dest: Pointer, mt: PNimType, op: TWalkOp) proc getDiscriminant(aa: Pointer, n: ptr TNimNode): int = assert(n.kind == nkCase) - var d: int32 + var d: int var a = cast[TAddress](aa) case n.typ.size - of 1: d = toU32(cast[ptr int8](a +% n.offset)^) - of 2: d = toU32(cast[ptr int16](a +% n.offset)^) - of 4: d = toU32(cast[ptr int32](a +% n.offset)^) + of 1: d = ze(cast[ptr int8](a +% n.offset)^) + of 2: d = ze(cast[ptr int16](a +% n.offset)^) + of 4: d = int(cast[ptr int32](a +% n.offset)^) else: assert(false) - return int(d) + return d proc selectBranch(aa: Pointer, n: ptr TNimNode): ptr TNimNode = var discr = getDiscriminant(aa, n) @@ -692,8 +563,7 @@ proc selectBranch(aa: Pointer, n: ptr TNimNode): ptr TNimNode = result = n.sons[n.len] proc forAllSlotsAux(dest: pointer, n: ptr TNimNode, op: TWalkOp) = - var - d = cast[TAddress](dest) + var d = cast[TAddress](dest) case n.kind of nkNone: assert(false) of nkSlot: forAllChildrenAux(cast[pointer](d +% n.offset), n.typ, op) @@ -704,35 +574,21 @@ proc forAllSlotsAux(dest: pointer, n: ptr TNimNode, op: TWalkOp) = if m != nil: forAllSlotsAux(dest, m, op) proc forAllChildrenAux(dest: Pointer, mt: PNimType, op: TWalkOp) = - const - handledTypes = {tyArray, tyArrayConstr, tyOpenArray, tyRef, - tyString, tySequence, tyObject, tyPureObject, tyTuple} - var - d = cast[TAddress](dest) + var d = cast[TAddress](dest) if dest == nil: return # nothing to do - case mt.Kind - of tyArray, tyArrayConstr, tyOpenArray: - if mt.base.kind in handledTypes: + if ntfNoRefs notin mt.flags: + case mt.Kind + of tyArray, tyArrayConstr, tyOpenArray: for i in 0..(mt.size div mt.base.size)-1: forAllChildrenAux(cast[pointer](d +% i *% mt.base.size), mt.base, op) - of tyRef, tyString, tySequence: # leaf: - doOperation(cast[ppointer](d)^, op) - of tyObject, tyTuple, tyPureObject: - forAllSlotsAux(dest, mt.node, op) - else: nil + of tyRef, tyString, tySequence: # leaf: + doOperation(cast[ppointer](d)^, op) + of tyObject, tyTuple, tyPureObject: + forAllSlotsAux(dest, mt.node, op) + else: nil proc forAllChildren(cell: PCell, op: TWalkOp) = assert(cell != nil) - when defined(debugGC): - if cell.typ == nil: - writeCell("cell has no type descriptor", cell) - when traceGC: - if cell notin states[csAllocated]: - writeCell("cell has never been allocated!", cell) - if cell in states[csCycFreed]: - writeCell("cell has been freed by Cyc", cell) - if cell in states[csZctFreed]: - writeCell("cell has been freed by Zct", cell) assert(cell.typ != nil) case cell.typ.Kind of tyRef: # common case @@ -740,46 +596,41 @@ proc forAllChildren(cell: PCell, op: TWalkOp) = of tySequence: var d = cast[TAddress](cellToUsr(cell)) var s = cast[PGenericSeq](d) - if s != nil: # BUGFIX + if s != nil: for i in 0..s.len-1: forAllChildrenAux(cast[pointer](d +% i *% cell.typ.base.size +% GenericSeqSize), cell.typ.base, op) of tyString: nil else: assert(false) -proc checkCollection() {.inline.} = +proc checkCollection(zctUpdated: bool) {.inline.} = # checks if a collection should be done if recGcLock == 0: - collectCT(gch) + collectCT(gch, zctUpdated) proc newObj(typ: PNimType, size: int): pointer = # generates a new object and sets its reference counter to 0 - var - res: PCell - when stressGC: assert(checkZCT()) assert(typ.kind in {tyRef, tyString, tySequence}) + var zctUpdated = false + if gch.zct.len >= ZctThreshold: + updateZCT() + zctUpdated = true # check if we have to collect: - checkCollection() - res = cast[PCell](Alloc0(size + sizeof(TCell))) + checkCollection(zctUpdated) + var res = cast[PCell](gcAlloc(size + sizeof(TCell))) when stressGC: assert((cast[TAddress](res) and (MemAlignment-1)) == 0) - if res == nil: raiseOutOfMem() - when defined(nimSize): - memUsed = memUsed + nimSize(res) - else: - memUsed = memUsed + size - # now it is buffered in the ZCT res.typ = typ - res.refcount = -gch.zct.len - add(gch.zct, res) # its refcount is zero, so add it to the ZCT - incl(gch.at, res) # add it to the any table too + when debugGC: + if framePtr != nil and framePtr.prev != nil: + res.filename = framePtr.prev.filename + res.line = framePtr.prev.line + res.refcount = rcZct # refcount is zero, but mark it to be in the ZCT + add(gch.zct, res) # its refcount is zero, so add it to the ZCT gch.mask = gch.mask or cast[TAddress](res) - when defined(debugGC): - when defined(logGC): writeCell("new cell", res) + when logGC: writeCell("new cell", res) gcTrace(res, csAllocated) result = cellToUsr(res) - assert(res.typ == typ) - when stressGC: assert(checkZCT()) proc newSeq(typ: PNimType, len: int): pointer = # XXX: overflow checks! @@ -788,96 +639,138 @@ proc newSeq(typ: PNimType, len: int): pointer = cast[PGenericSeq](result).space = len proc growObj(old: pointer, newsize: int): pointer = - var - res, ol: PCell - when stressGC: assert(checkZCT()) - checkCollection() - ol = usrToCell(old) + checkCollection(false) + var ol = usrToCell(old) + assert(ol.typ != nil) assert(ol.typ.kind in {tyString, tySequence}) - when defined(nimSize): - memUsed = memUsed - nimSize(ol) - else: - memUsed = memUsed - ol.size # this is not exact - # pity that we don't know the old size - res = cast[PCell](realloc(ol, newsize + sizeof(TCell))) - #res = cast[PCell](gcAlloc(newsize + sizeof(TCell))) - #copyMem(res, ol, nimSize(ol)) + var res = cast[PCell](gcAlloc(newsize + sizeof(TCell))) + var elemSize = 1 + if ol.typ.kind != tyString: + elemSize = ol.typ.base.size + copyMem(res, ol, cast[PGenericSeq](old).len*elemSize + + GenericSeqSize + sizeof(TCell)) + assert((cast[TAddress](res) and (MemAlignment-1)) == 0) - when defined(nimSize): - memUsed = memUsed + nimSize(res) + assert(res.refcount shr rcShift <=% 1) + #if res.refcount <% rcIncrement: + # add(gch.zct, res) + #else: # XXX: what to do here? + # decRef(ol) + if (ol.refcount and colorMask) == rcZct: + var j = gch.zct.len-1 + var d = gch.zct.d + while j >= 0: + if d[j] == ol: + d[j] = res + break + dec(j) + if canBeCycleRoot(ol): excl(gch.cycleRoots, ol) + gch.mask = gch.mask or cast[TAddress](res) + when logGC: + writeCell("growObj old cell", ol) + writeCell("growObj new cell", res) + gcTrace(ol, csZctFreed) + gcTrace(res, csAllocated) + when reallyDealloc: tlsf_free(ol) else: - memUsed = memUsed + newsize - - if res != ol: - if res == nil: raiseOutOfMem() - if res.refcount <= 0: - assert(gch.zct.d[-res.refcount] == ol) - gch.zct.d[-res.refcount] = res - excl(gch.at, ol) - incl(gch.at, res) - gch.mask = gch.mask or cast[TAddress](res) - when defined(logGC): - writeCell("growObj old cell", ol) - writeCell("growObj new cell", res) - gcTrace(ol, csZctFreed) - gcTrace(res, csAllocated) + assert(ol.typ != nil) + zeroMem(ol, sizeof(TCell)) result = cellToUsr(res) - when stressGC: assert(checkZCT()) -proc collectCycles(gch: var TGcHeap) = - when defined(logGC): - c_fprintf(c_stdout, "collecting cycles!\n") +# ---------------- cycle collector ------------------------------------------- + +# When collecting cycles, we have to consider the following: +# * there may still be references in the stack +# * some cells may still be in the ZCT, because they are referenced from +# the stack (!), so their refcounts are zero +# the ZCT is a subset of stackCells here, so we only need to care +# for stackcells + +proc doOperation(p: pointer, op: TWalkOp) = + if p == nil: return + var c: PCell = usrToCell(p) + assert(c != nil) + case op # faster than function pointers because of easy prediction + of waZctDecRef: + assert(c.refcount >=% rcIncrement) + c.refcount = c.refcount -% rcIncrement + when logGC: writeCell("decref (from doOperation)", c) + if c.refcount <% rcIncrement: addZCT(gch.zct, c) + of waPush: + add(gch.tempStack, c) + of waCycleDecRef: + assert(c.refcount >=% rcIncrement) + c.refcount = c.refcount -% rcIncrement - # step 1: pretend that any node is dead - for c in elements(gch.at): +# we now use a much simpler and non-recursive algorithm for cycle removal +proc collectCycles(gch: var TGcHeap) = + var tabSize = 0 + for c in elements(gch.cycleRoots): + inc(tabSize) + assert(c.typ != nil) forallChildren(c, waCycleDecRef) - CellSetInit(gch.newAt) - # step 2: restore life cells - for c in elements(gch.at): - if c.refcount > 0: restore(c) - # step 3: free dead cells: - for cell in elements(gch.at): - if cell.refcount == 0: - # We free an object that is part of a cycle here. Its children - # may have been freed already. Thus the finalizer could access - # garbage. To handle this case properly we need two passes for - # freeing here which is too expensive. We just don't call the - # finalizer for now. YYY: Any better ideas? - prepareDealloc(cell) - gcTrace(cell, csCycFreed) - when defined(logGC): - writeCell("cycle collector dealloc cell", cell) - when reallyDealloc: dealloc(cell) - CellSetDeinit(gch.at) - gch.at = gch.newAt - -proc gcMark(gch: var TGcHeap, p: pointer) = + gch.cycleTableSize = max(gch.cycleTableSize, tabSize) + + # restore reference counts (a depth-first traversal is needed): + var marker, newRoots: TCellSet + CellSetInit(marker) + CellSetInit(newRoots) + for c in elements(gch.cycleRoots): + var needsRestore = false + if c in gch.stackCells: + needsRestore = true + incl(newRoots, c) + # we need to scan this later again; maybe stack changes + # NOTE: adding to ZCT here does NOT work + elif c.refcount >=% rcIncrement: + needsRestore = true + if needsRestore: + if c notin marker: + incl(marker, c) + gch.tempStack.len = 0 + forAllChildren(c, waPush) + while gch.tempStack.len > 0: + dec(gch.tempStack.len) + var d = gch.tempStack.d[gch.tempStack.len] + d.refcount = d.refcount +% rcIncrement + if d notin marker and d in gch.cycleRoots: + incl(marker, d) + forAllChildren(d, waPush) + # remove cycles: + for c in elements(gch.cycleRoots): + if c.refcount <% rcIncrement and c notin gch.stackCells: + gch.tempStack.len = 0 + forAllChildren(c, waPush) + while gch.tempStack.len > 0: + dec(gch.tempStack.len) + var d = gch.tempStack.d[gch.tempStack.len] + if d.refcount <% rcIncrement: + if d notin gch.cycleRoots: # d is leaf of c and not part of cycle + addZCT(gch.zct, d) + when logGC: writeCell("add to ZCT (from cycle collector)", d) + prepareDealloc(c) + gcTrace(c, csCycFreed) + when logGC: writeCell("cycle collector dealloc cell", c) + when reallyDealloc: tlsf_free(c) + else: + assert(c.typ != nil) + zeroMem(c, sizeof(TCell)) + CellSetDeinit(gch.cycleRoots) + gch.cycleRoots = newRoots + +proc gcMark(p: pointer) {.fastcall.} = # the addresses are not as objects on the stack, so turn them to objects: var cell = usrToCell(p) var c = cast[TAddress](cell) - if ((c and gch.mask) == c) and cell in gch.at: - # is the page that p "points to" in the AT? (All allocated pages are - # always in the AT) - incRef(cell) - when stressGC: inc(cell.stackcount) - add(gch.stackCells, cell) - -proc unmarkStackAndRegisters(gch: var TGcHeap) = - when stressGC: assert(checkZCT()) - for i in 0 .. gch.stackCells.len-1: - var cell = gch.stackCells.d[i] - assert(cell.refcount > 0) - when stressGC: - assert(cell.stackcount > 0) - dec(cell.stackcount) - decRef(cell) - gch.stackCells.len = 0 # reset to zero - when stressGC: assert(checkZCT()) + if ((c and gch.mask) == c) and c >% 1024: + # fast check: does it look like a cell? + when logGC: cfprintf(cstdout, "in stackcells %p\n", cell) + incl(gch.stackCells, cell) # yes: mark it # ----------------- stack management -------------------------------------- # inspired from Smart Eiffel (c) -proc stackSize(): int = +proc stackSize(): int {.noinline.} = var stackTop: array[0..1, pointer] result = abs(cast[int](addr(stackTop[0])) - cast[int](stackBottom)) @@ -888,26 +781,24 @@ when defined(sparc): # For SPARC architecture. stackTop: array[0..1, pointer] result = p >= addr(stackTop[0]) and p <= stackBottom - proc markStackAndRegisters(gch: var TGcHeap) = + proc markStackAndRegisters(gch: var TGcHeap) {.noinline, cdecl.} = when defined(sparcv9): - asm " flushw" + asm """"flushw \n" """ else: - asm " ta 0x3 ! ST_FLUSH_WINDOWS" + asm """"ta 0x3 ! ST_FLUSH_WINDOWS\n" """ var max = stackBottom sp: PPointer stackTop: array[0..1, pointer] - stackTop[0] = nil - stackTop[1] = nil sp = addr(stackTop[0]) # Addresses decrease as the stack grows. while sp <= max: - gcMark(gch, sp^) + gcMark(sp^) sp = cast[ppointer](cast[TAddress](sp) +% sizeof(pointer)) elif defined(ELATE): - {.error: "stack marking code has to be written for this architecture".} + {.error: "stack marking code is to be written for this architecture".} elif defined(hppa) or defined(hp9000) or defined(hp9000s300) or defined(hp9000s700) or defined(hp9000s800) or defined(hp9000s820): @@ -921,24 +812,71 @@ elif defined(hppa) or defined(hp9000) or defined(hp9000s300) or result = p <= addr(stackTop[0]) and p >= stackBottom var - jmpbufSize {.importc: "sizeof(jmp_buf)".}: int + jmpbufSize {.importc: "sizeof(jmp_buf)", nodecl.}: int # a little hack to get the size of a TJmpBuf in the generated C code # in a platform independant way - proc markStackAndRegisters(gch: var TGcHeap) = + proc markStackAndRegisters(gch: var TGcHeap) {.noinline, cdecl.} = var max = stackBottom registers: C_JmpBuf # The jmp_buf buffer is in the C stack. sp: PPointer # Used to traverse the stack and registers assuming # that `setjmp' will save registers in the C stack. - c_setjmp(registers) # To fill the C stack with registers. - sp = cast[ppointer](cast[TAddress](addr(registers)) +% - jmpbufSize -% sizeof(pointer)) - # sp will traverse the JMP_BUF as well (jmp_buf size is added, - # otherwise sp would be below the registers structure). - while sp >= max: - gcMark(gch, sp^) - sp = cast[ppointer](cast[TAddress](sp) -% sizeof(pointer)) + if c_setjmp(registers) == 0: # To fill the C stack with registers. + sp = cast[ppointer](cast[TAddress](addr(registers)) +% + jmpbufSize -% sizeof(pointer)) + # sp will traverse the JMP_BUF as well (jmp_buf size is added, + # otherwise sp would be below the registers structure). + while sp >= max: + gcMark(sp^) + sp = cast[ppointer](cast[TAddress](sp) -% sizeof(pointer)) + +elif defined(I386) and asmVersion: + # addresses decrease as the stack grows: + proc isOnStack(p: pointer): bool = + var + stackTop: array [0..1, pointer] + result = p >= addr(stackTop[0]) and p <= stackBottom + + proc markStackAndRegisters(gch: var TGcHeap) {.noinline, cdecl.} = + # This code should be safe even for aggressive optimizers. The try + # statement safes all registers into the safepoint, which we + # scan additionally to the stack. + type + TPtrArray = array[0..0xffffff, pointer] + try: + var pa = cast[ptr TPtrArray](excHandler) + for i in 0 .. sizeof(TSafePoint) - 1: + gcMark(pa[i]) + finally: + # iterate over the stack: + var max = cast[TAddress](stackBottom) + var stackTop{.volatile.}: array [0..15, pointer] + var sp {.volatile.} = cast[TAddress](addr(stackTop[0])) + while sp <= max: + gcMark(cast[ppointer](sp)^) + sp = sp +% sizeof(pointer) + when false: + var counter = 0 + #mov ebx, OFFSET `stackBottom` + #mov ebx, [ebx] + asm """ + pusha + mov edi, esp + call `getStackBottom` + mov ebx, eax + L1: + cmp edi, ebx + ja L2 + mov eax, [edi] + call `gcMark` + add edi, 4 + inc [`counter`] + jmp L1 + L2: + popa + """ + cfprintf(cstdout, "stack %ld\n", counter) else: # --------------------------------------------------------------------------- @@ -949,67 +887,135 @@ else: stackTop: array [0..1, pointer] result = p >= addr(stackTop[0]) and p <= stackBottom - proc markStackAndRegisters(gch: var TGcHeap) = - var - max = stackBottom - registers: C_JmpBuf # The jmp_buf buffer is in the C stack. - sp: PPointer # Used to traverse the stack and registers assuming - # that `setjmp' will save registers in the C stack. - c_setjmp(registers) # To fill the C stack with registers. - sp = cast[ppointer](addr(registers)) - while sp <= max: - gcMark(gch, sp^) - sp = cast[ppointer](cast[TAddress](sp) +% sizeof(pointer)) + var + gRegisters: C_JmpBuf + jmpbufSize {.importc: "sizeof(jmp_buf)", nodecl.}: int + # a little hack to get the size of a TJmpBuf in the generated C code + # in a platform independant way + + proc markStackAndRegisters(gch: var TGcHeap) {.noinline, cdecl.} = + when true: + # new version: several C compilers are too smart here + var + max = cast[TAddress](stackBottom) + stackTop: array [0..15, pointer] + if c_setjmp(gregisters) == 0'i32: # To fill the C stack with registers. + # iterate over the registers: + var sp = cast[TAddress](addr(gregisters)) + while sp < cast[TAddress](addr(gregisters))+%jmpbufSize: + gcMark(cast[ppointer](sp)^) + sp = sp +% sizeof(pointer) + # iterate over the stack: + sp = cast[TAddress](addr(stackTop[0])) + while sp <= max: + gcMark(cast[ppointer](sp)^) + sp = sp +% sizeof(pointer) + else: + c_longjmp(gregisters, 42) + # this can never happen, but should trick any compiler that is + # not as smart as a human + else: + var + max = stackBottom + registers: C_JmpBuf # The jmp_buf buffer is in the C stack. + sp: PPointer # Used to traverse the stack and registers assuming + # that `setjmp' will save registers in the C stack. + if c_setjmp(registers) == 0'i32: # To fill the C stack with registers. + sp = cast[ppointer](addr(registers)) + while sp <= max: + gcMark(sp^) + sp = cast[ppointer](cast[TAddress](sp) +% sizeof(pointer)) # ---------------------------------------------------------------------------- # end of non-portable code # ---------------------------------------------------------------------------- +proc updateZCT() = + # We have to make an additional pass over the ZCT unfortunately, because + # the ZCT may be out of date, which means it contains cells with a + # refcount > 0. The reason is that ``incRef`` does not bother to remove + # the cell from the ZCT as this might be too slow. + var j = 0 + var L = gch.zct.len # because globals make it hard for the optimizer + var d = gch.zct.d + while j < L: + var c = d[j] + if c.refcount >=% rcIncrement: + when logGC: writeCell("remove from ZCT", c) + # remove from ZCT: + dec(L) + d[j] = d[L] + c.refcount = c.refcount and not colorMask + # we have a new cell at position i, so don't increment i + else: + inc(j) + gch.zct.len = L + proc CollectZCT(gch: var TGcHeap) = - while gch.zct.len > 0: - var c = gch.zct.d[0] - assert(c.refcount <= 0) - # remove from ZCT: - gch.zct.d[0] = gch.zct.d[gch.zct.len-1] - gch.zct.d[0].refcount = 0 - dec(gch.zct.len) - # We are about to free the object, call the finalizer BEFORE its - # children are deleted as well, because otherwise the finalizer may - # access invalid memory. This is done by prepareDealloc(): - gcTrace(c, csZctFreed) - prepareDealloc(c) - forAllChildren(c, waZctDecRef) - excl(gch.at, c) - when defined(logGC): - writeCell("zct dealloc cell", c) - #when defined(debugGC) and defined(nimSize): zeroMem(c, nimSize(c)) - when reallyDealloc: dealloc(c) - -proc collectCT(gch: var TGcHeap) = - when defined(logGC): - c_fprintf(c_stdout, "collecting zero count table; stack size: %ld\n", - stackSize()) - when stressGC: assert(checkZCT()) - if gch.zct.len >= ZctThreshold or memUsed >= cycleThreshold or stressGC: + var i = 0 + while i < gch.zct.len: + var c = gch.zct.d[i] + assert(c.refcount <% rcIncrement) + assert((c.refcount and colorMask) == rcZct) + if canBeCycleRoot(c): excl(gch.cycleRoots, c) + if c notin gch.stackCells: + # remove from ZCT: + c.refcount = c.refcount and not colorMask + gch.zct.d[i] = gch.zct.d[gch.zct.len-1] + # we have a new cell at position i, so don't increment i + dec(gch.zct.len) + when logGC: writeCell("zct dealloc cell", c) + gcTrace(c, csZctFreed) + # We are about to free the object, call the finalizer BEFORE its + # children are deleted as well, because otherwise the finalizer may + # access invalid memory. This is done by prepareDealloc(): + prepareDealloc(c) + forAllChildren(c, waZctDecRef) + when reallyDealloc: tlsf_free(c) + else: + assert(c.typ != nil) + zeroMem(c, sizeof(TCell)) + else: + inc(i) + when stressGC: + for j in 0..gch.zct.len-1: assert(gch.zct.d[j] in gch.stackCells) + +proc collectCT(gch: var TGcHeap, zctUpdated: bool) = + if gch.zct.len >= ZctThreshold or (cycleGC and + getOccupiedMem() >= cycleThreshold) or stressGC: + if not zctUpdated: updateZCT() + gch.maxStackSize = max(gch.maxStackSize, stackSize()) + CellSetInit(gch.stackCells) markStackAndRegisters(gch) - when stressGC: assert(GC_invariant()) + gch.maxStackPages = max(gch.maxStackPages, gch.stackCells.counter) + inc(gch.stackScans) collectZCT(gch) - when stressGC: assert(GC_invariant()) - assert(gch.zct.len == 0) - when defined(cycleGC): - if memUsed >= cycleThreshold or stressGC: - when defined(logGC): - c_fprintf(c_stdout, "collecting cycles; memory used: %ld\n", memUsed) + when cycleGC: + if getOccupiedMem() >= cycleThreshold or stressGC: collectCycles(gch) - cycleThreshold = max(InitialCycleThreshold, memUsed * cycleIncrease) - when defined(logGC): - c_fprintf(c_stdout, "now used: %ld; threshold: %ld\n", - memUsed, cycleThreshold) - unmarkStackAndRegisters(gch) - when stressGC: assert(GC_invariant()) + collectZCT(gch) + inc(gch.cycleCollections) + cycleThreshold = max(InitialCycleThreshold, getOccupiedMem() * + cycleIncrease) + gch.maxThreshold = max(gch.maxThreshold, cycleThreshold) + CellSetDeinit(gch.stackCells) proc GC_fullCollect() = var oldThreshold = cycleThreshold cycleThreshold = 0 # forces cycle collection - collectCT(gch) + collectCT(gch, false) cycleThreshold = oldThreshold + +proc GC_getStatistics(): string = + GC_disable() + result = "[GC] total memory: " & $(getTotalMem()) & "\n" & + "[GC] occupied memory: " & $(getOccupiedMem()) & "\n" & + "[GC] stack scans: " & $gch.stackScans & "\n" & + "[GC] stack pages: " & $gch.maxStackPages & "\n" & + "[GC] cycle collections: " & $gch.cycleCollections & "\n" & + "[GC] max threshold: " & $gch.maxThreshold & "\n" & + "[GC] zct capacity: " & $gch.zct.cap & "\n" & + "[GC] max cycle table size: " & $gch.cycleTableSize & "\n" & + "[GC] max stack size: " & $gch.maxStackSize + when traceGC: writeLeakage() + GC_enable() diff --git a/lib/generics.nim b/lib/generics.nim index 10e55f5bd..1ed7651e1 100644 --- a/lib/generics.nim +++ b/lib/generics.nim @@ -104,8 +104,7 @@ const growthFactor = 2 # must be power of two proc init*[TKey, TValue](t: var TTable[TKey, TValue], capacity: natural = 32) = - t.d = [] # XXX - setLen(t.d, capacity) + newSeq(t.d, capacity) proc len*[TKey, TValue](t: TTable[TKey, TValue]): natural = return t.counter @@ -136,8 +135,8 @@ proc TableRawInsert[TKey, TValue](data: var seq[TPair[TKey, TValue]], data[h].val = val proc TableEnlarge[TKey, TValue](t: var TTable[TKey, TValue]) = - var n: seq[TPair[TKey,TValue]] = [] - setLen(n, len(t.d) * growthFactor) # XXX + var n: seq[TPair[TKey,TValue]] + newSeq(n, len(t.d) * growthFactor) for i in 0..high(t.d): if not isNil(t.d[i].key): TableRawInsert(n, t.d[i].key, t.d[i].val) diff --git a/lib/hashes.nim b/lib/hashes.nim index ed7871008..1593119bd 100644 --- a/lib/hashes.nim +++ b/lib/hashes.nim @@ -1,97 +1,97 @@ -# -# -# Nimrod's Runtime Library -# (c) Copyright 2008 Andreas Rumpf -# -# See the file "copying.txt", included in this -# distribution, for details about the copyright. -# - -## This module implements efficient computations of hash values for diverse -## Nimrod types. - -import - strutils - -type - THash* = int ## a hash value; hash tables using these values should - ## always have a size of a power of two and can use the ``and`` - ## operator instead of ``mod`` for truncation of the hash value. - -proc concHash(h: THash, val: int): THash {.inline.} = - result = h +% val - result = result +% result shl 10 - result = result xor (result shr 6) - -proc finishHash(h: THash): THash {.inline.} = - result = h +% h shl 3 - result = result xor (result shr 11) - result = result +% result shl 15 - -proc hashData*(Data: Pointer, Size: int): THash = - ## hashes an array of bytes of size `size` - var - h: THash - p: cstring - i, s: int - h = 0 - p = cast[cstring](Data) - i = 0 - s = size - while s > 0: - h = concHash(h, ord(p[i])) - Inc(i) - Dec(s) - result = finishHash(h) - -proc hash*(x: Pointer): THash {.inline.} = - ## efficient hashing of pointers - result = (cast[THash](x)) shr 3 # skip the alignment - -proc hash*(x: int): THash {.inline.} = - ## efficient hashing of integers - result = x - -proc hash*(x: int64): THash {.inline.} = - ## efficient hashing of integers - result = toU32(x) - -proc hash*(x: char): THash {.inline.} = - ## efficient hashing of characters - result = ord(x) - -proc hash*(x: string): THash = - ## efficient hashing of strings - var h: THash - h = 0 - for i in 0..x.len-1: - h = concHash(h, ord(x[i])) - result = finishHash(h) - -proc hashIgnoreStyle*(x: string): THash = - ## efficient hashing of strings; style is ignored - var - h: THash - c: Char - h = 0 - for i in 0..x.len-1: - c = x[i] - if c == '_': - continue # skip _ - if c in {'A'..'Z'}: - c = chr(ord(c) + (ord('a') - ord('A'))) # toLower() - h = concHash(h, ord(c)) - result = finishHash(h) - -proc hashIgnoreCase*(x: string): THash = - ## efficient hashing of strings; case is ignored - var - h: THash - c: Char - h = 0 - for i in 0..x.len-1: - c = x[i] - if c in {'A'..'Z'}: - c = chr(ord(c) + (ord('a') - ord('A'))) # toLower() - h = concHash(h, ord(c)) - result = finishHash(h) +# +# +# Nimrod's Runtime Library +# (c) Copyright 2008 Andreas Rumpf +# +# See the file "copying.txt", included in this +# distribution, for details about the copyright. +# + +## This module implements efficient computations of hash values for diverse +## Nimrod types. + +import + strutils + +type + THash* = int ## a hash value; hash tables using these values should + ## always have a size of a power of two and can use the ``and`` + ## operator instead of ``mod`` for truncation of the hash value. + +proc concHash(h: THash, val: int): THash {.inline.} = + result = h +% val + result = result +% result shl 10 + result = result xor (result shr 6) + +proc finishHash(h: THash): THash {.inline.} = + result = h +% h shl 3 + result = result xor (result shr 11) + result = result +% result shl 15 + +proc hashData*(Data: Pointer, Size: int): THash = + ## hashes an array of bytes of size `size` + var + h: THash + p: cstring + i, s: int + h = 0 + p = cast[cstring](Data) + i = 0 + s = size + while s > 0: + h = concHash(h, ord(p[i])) + Inc(i) + Dec(s) + result = finishHash(h) + +proc hash*(x: Pointer): THash {.inline.} = + ## efficient hashing of pointers + result = (cast[THash](x)) shr 3 # skip the alignment + +proc hash*(x: int): THash {.inline.} = + ## efficient hashing of integers + result = x + +proc hash*(x: int64): THash {.inline.} = + ## efficient hashing of integers + result = toU32(x) + +proc hash*(x: char): THash {.inline.} = + ## efficient hashing of characters + result = ord(x) + +proc hash*(x: string): THash = + ## efficient hashing of strings + var h: THash + h = 0 + for i in 0..x.len-1: + h = concHash(h, ord(x[i])) + result = finishHash(h) + +proc hashIgnoreStyle*(x: string): THash = + ## efficient hashing of strings; style is ignored + var + h: THash + c: Char + h = 0 + for i in 0..x.len-1: + c = x[i] + if c == '_': + continue # skip _ + if c in {'A'..'Z'}: + c = chr(ord(c) + (ord('a') - ord('A'))) # toLower() + h = concHash(h, ord(c)) + result = finishHash(h) + +proc hashIgnoreCase*(x: string): THash = + ## efficient hashing of strings; case is ignored + var + h: THash + c: Char + h = 0 + for i in 0..x.len-1: + c = x[i] + if c in {'A'..'Z'}: + c = chr(ord(c) + (ord('a') - ord('A'))) # toLower() + h = concHash(h, ord(c)) + result = finishHash(h) diff --git a/lib/hti.nim b/lib/hti.nim index 563414b26..7639cf6a3 100644 --- a/lib/hti.nim +++ b/lib/hti.nim @@ -13,7 +13,7 @@ type # This should be he same as ast.TTypeKind tyNone, # 0 tyBool, # 1 tyChar, # 2 - tyEmptySet, # 3 + tyEmpty, # 3 tyArrayConstr, # 4 tyNil, # 5 tyGeneric, # 6 @@ -49,9 +49,13 @@ type # This should be he same as ast.TTypeKind len: int sons: ptr array [0..0x7fff, ptr TNimNode] + TNimTypeFlag = enum + ntfNoRefs = 0, # type contains no tyRef, tySequence, tyString + ntfAcyclic = 1 # type cannot form a cycle TNimType {.compilerproc, final.} = object size: int kind: TNimKind + flags: set[TNimTypeFlag] base: ptr TNimType node: ptr TNimNode # valid for tyRecord, tyObject, tyTuple, tyEnum finalizer: pointer # the finalizer for the type diff --git a/lib/int64s.nim b/lib/int64s.nim index 430514ce3..7a3dbad77 100644 --- a/lib/int64s.nim +++ b/lib/int64s.nim @@ -1,71 +1,71 @@ -# -# -# Nimrod's Runtime Library -# (c) Copyright 2006 Andreas Rumpf -# -# See the file "copying.txt", included in this -# distribution, for details about the copyright. -# - -# 64 bit integers for platforms that don't have those - -type - IInt64 = tuple[lo, hi: int32] - -proc cmpI64(x, y: IInt64): int32 {.compilerproc.} = - result = x.hi -% y.hi - if result == 0: result = x.lo -% y.lo - -proc addI64(x, y: IInt64): IInt64 {.compilerproc.} = - result = x - result.lo = result.lo +% y.lo - result.hi = result.hi +% y.hi - if y.lo > 0 and result.lo < y.lo: - inc(result.hi) - elif y.lo < 0 and result.lo > y.lo: - dec(result.hi) - -proc subI64(x, y: IInt64): IInt64 {.compilerproc.} = - result = x - result.lo = result.lo -% y.lo - result.hi = result.hi -% y.hi - if y.lo > 0 and result.lo < y.lo: - inc(result.hi) - elif y.lo < 0 and result.lo > y.lo: - dec(result.hi) - -proc mulI64(x, y: IInt64): IInt64 {.compilerproc.} = - result.lo = x.lo *% y.lo - result.hi = y.hi *% y.hi - if y.lo > 0 and result.lo < y.lo: - inc(result.hi) - elif y.lo < 0 and result.lo > y.lo: - dec(result.hi) - -proc divI64(x, y: IInt64): IInt64 {.compilerproc.} = - # XXX: to implement - -proc modI64(x, y: IInt64): IInt64 {.compilerproc.} = - # XXX: to implement - -proc bitandI64(x, y: IInt64): IInt64 {.compilerproc.} = - result.hi = x.hi and y.hi - result.lo = x.lo and y.lo - -proc bitorI64(x, y: IInt64): IInt64 {.compilerproc.} = - result.hi = x.hi or y.hi - result.lo = x.lo or y.lo - -proc bitxorI64(x, y: IInt64): IInt64 {.compilerproc.} = - result.hi = x.hi xor y.hi - result.lo = x.lo xor y.lo - -proc bitnotI64(x: IInt64): IInt64 {.compilerproc.} = - result.lo = not x.lo - result.hi = not x.hi - -proc shlI64(x, y: IInt64): IInt64 {.compilerproc.} = - # XXX: to implement - -proc shrI64(x, y: IInt64): IInt64 {.compilerproc.} = - # XXX: to implement +# +# +# Nimrod's Runtime Library +# (c) Copyright 2006 Andreas Rumpf +# +# See the file "copying.txt", included in this +# distribution, for details about the copyright. +# + +# 64 bit integers for platforms that don't have those + +type + IInt64 = tuple[lo, hi: int32] + +proc cmpI64(x, y: IInt64): int32 {.compilerproc.} = + result = x.hi -% y.hi + if result == 0: result = x.lo -% y.lo + +proc addI64(x, y: IInt64): IInt64 {.compilerproc.} = + result = x + result.lo = result.lo +% y.lo + result.hi = result.hi +% y.hi + if y.lo > 0 and result.lo < y.lo: + inc(result.hi) + elif y.lo < 0 and result.lo > y.lo: + dec(result.hi) + +proc subI64(x, y: IInt64): IInt64 {.compilerproc.} = + result = x + result.lo = result.lo -% y.lo + result.hi = result.hi -% y.hi + if y.lo > 0 and result.lo < y.lo: + inc(result.hi) + elif y.lo < 0 and result.lo > y.lo: + dec(result.hi) + +proc mulI64(x, y: IInt64): IInt64 {.compilerproc.} = + result.lo = x.lo *% y.lo + result.hi = y.hi *% y.hi + if y.lo > 0 and result.lo < y.lo: + inc(result.hi) + elif y.lo < 0 and result.lo > y.lo: + dec(result.hi) + +proc divI64(x, y: IInt64): IInt64 {.compilerproc.} = + # XXX: to implement + +proc modI64(x, y: IInt64): IInt64 {.compilerproc.} = + # XXX: to implement + +proc bitandI64(x, y: IInt64): IInt64 {.compilerproc.} = + result.hi = x.hi and y.hi + result.lo = x.lo and y.lo + +proc bitorI64(x, y: IInt64): IInt64 {.compilerproc.} = + result.hi = x.hi or y.hi + result.lo = x.lo or y.lo + +proc bitxorI64(x, y: IInt64): IInt64 {.compilerproc.} = + result.hi = x.hi xor y.hi + result.lo = x.lo xor y.lo + +proc bitnotI64(x: IInt64): IInt64 {.compilerproc.} = + result.lo = not x.lo + result.hi = not x.hi + +proc shlI64(x, y: IInt64): IInt64 {.compilerproc.} = + # XXX: to implement + +proc shrI64(x, y: IInt64): IInt64 {.compilerproc.} = + # XXX: to implement diff --git a/lib/lexbase.nim b/lib/lexbase.nim index d2522359f..ea9a61821 100644 --- a/lib/lexbase.nim +++ b/lib/lexbase.nim @@ -1,186 +1,167 @@ -# -# -# The Nimrod Compiler -# (c) Copyright 2008 Andreas Rumpf -# -# See the file "copying.txt", included in this -# distribution, for details about the copyright. -# - -## This module implements a base object of a lexer with efficient buffer -## handling. In fact I believe that this is the most efficient method of -## buffer handling that exists! Only at line endings checks are necessary -## if the buffer needs refilling. - -import - strutils - -const - EndOfFile* = '\0' ## end of file marker - # A little picture makes everything clear :-) - # buf: - # "Example Text\n ha!" bufLen = 17 - # ^pos = 0 ^ sentinel = 12 - # - NewLines* = {'\c', '\L'} - -type - TBaseLexer* = object of TObject ## the base lexer. Inherit your lexer from - ## this object. - bufpos*: int ## the current position within the buffer - buf*: cstring ## the buffer itself - bufLen*: int ## length of buffer in characters - f*: tfile ## the file that is read - LineNumber*: int ## the current line number - sentinel: int - lineStart: int # index of last line start in buffer - fileOpened: bool - -proc initBaseLexer*(L: var TBaseLexer, filename: string, bufLen: int = 8192): bool - ## inits the TBaseLexer object with a file to scan - -proc initBaseLexerFromBuffer*(L: var TBaseLexer, buffer: string) - ## inits the TBaseLexer with a buffer to scan - -proc deinitBaseLexer*(L: var TBaseLexer) - ## deinitializes the base lexer. This needs to be called to close the file. - -proc getCurrentLine*(L: TBaseLexer, marker: bool = true): string - ## retrieves the current line. - -proc getColNumber*(L: TBaseLexer, pos: int): int - ## retrieves the current column. - -proc HandleCR*(L: var TBaseLexer, pos: int): int - ## Call this if you scanned over '\c' in the buffer; it returns the the - ## position to continue the scanning from. `pos` must be the position - ## of the '\c'. -proc HandleLF*(L: var TBaseLexer, pos: int): int - ## Call this if you scanned over '\L' in the buffer; it returns the the - ## position to continue the scanning from. `pos` must be the position - ## of the '\L'. - -# implementation - -const - chrSize = sizeof(char) - -proc deinitBaseLexer(L: var TBaseLexer) = - dealloc(L.buf) - if L.fileOpened: closeFile(L.f) - -proc FillBuffer(L: var TBaseLexer) = - var - charsRead, toCopy, s: int # all are in characters, - # not bytes (in case this - # is not the same) - oldBufLen: int - # we know here that pos == L.sentinel, but not if this proc - # is called the first time by initBaseLexer() - assert(L.sentinel < L.bufLen) - toCopy = L.BufLen - L.sentinel - 1 - assert(toCopy >= 0) - if toCopy > 0: - MoveMem(L.buf, addr(L.buf[L.sentinel + 1]), toCopy * chrSize) # "moveMem" handles overlapping regions - charsRead = ReadBuffer(L.f, addr(L.buf[toCopy]), (L.sentinel + 1) * chrSize) div - chrSize - s = toCopy + charsRead - if charsRead < L.sentinel + 1: - L.buf[s] = EndOfFile # set end marker - L.sentinel = s - else: - # compute sentinel: - dec(s) # BUGFIX (valgrind) - while true: - assert(s < L.bufLen) - while (s >= 0) and not (L.buf[s] in NewLines): Dec(s) - if s >= 0: - # we found an appropriate character for a sentinel: - L.sentinel = s - break - else: - # rather than to give up here because the line is too long, - # double the buffer's size and try again: - oldBufLen = L.BufLen - L.bufLen = L.BufLen * 2 - L.buf = cast[cstring](realloc(L.buf, L.bufLen * chrSize)) - assert(L.bufLen - oldBuflen == oldBufLen) - charsRead = ReadBuffer(L.f, addr(L.buf[oldBufLen]), oldBufLen * chrSize) div - chrSize - if charsRead < oldBufLen: - L.buf[oldBufLen + charsRead] = EndOfFile - L.sentinel = oldBufLen + charsRead - break - s = L.bufLen - 1 - -proc fillBaseLexer(L: var TBaseLexer, pos: int): int = - assert(pos <= L.sentinel) - if pos < L.sentinel: - result = pos + 1 # nothing to do - else: - fillBuffer(L) - L.bufpos = 0 # XXX: is this really correct? - result = 0 - L.lineStart = result - -proc HandleCR(L: var TBaseLexer, pos: int): int = - assert(L.buf[pos] == '\c') - inc(L.linenumber) - result = fillBaseLexer(L, pos) - if L.buf[result] == '\L': - result = fillBaseLexer(L, result) - -proc HandleLF(L: var TBaseLexer, pos: int): int = - assert(L.buf[pos] == '\L') - inc(L.linenumber) - result = fillBaseLexer(L, pos) #L.lastNL := result-1; // BUGFIX: was: result; - -proc skip_UTF_8_BOM(L: var TBaseLexer) = - if (L.buf[0] == '\xEF') and (L.buf[1] == '\xBB') and (L.buf[2] == '\xBF'): - inc(L.bufpos, 3) - inc(L.lineStart, 3) - -proc initBaseLexer(L: var TBaseLexer, filename: string, bufLen: int = 8192): bool = - assert(bufLen > 0) - L.bufpos = 0 - L.bufLen = bufLen - L.buf = cast[cstring](alloc(bufLen * chrSize)) - L.sentinel = bufLen - 1 - L.lineStart = 0 - L.linenumber = 1 # lines start at 1 - L.fileOpened = openFile(L.f, filename) - result = L.fileOpened - if result: - fillBuffer(L) - skip_UTF_8_BOM(L) - -proc initBaseLexerFromBuffer(L: var TBaseLexer, buffer: string) = - L.bufpos = 0 - L.bufLen = len(buffer) + 1 - L.buf = cast[cstring](alloc(L.bufLen * chrSize)) - L.sentinel = L.bufLen - 1 - L.lineStart = 0 - L.linenumber = 1 # lines start at 1 - L.fileOpened = false - if L.bufLen > 0: - copyMem(L.buf, cast[pointer](buffer), L.bufLen) - L.buf[L.bufLen - 1] = EndOfFile - else: - L.buf[0] = EndOfFile - skip_UTF_8_BOM(L) - -proc getColNumber(L: TBaseLexer, pos: int): int = - result = pos - L.lineStart - assert(result >= 0) - -proc getCurrentLine(L: TBaseLexer, marker: bool = true): string = - var i: int - result = "" - i = L.lineStart - while not (L.buf[i] in {'\c', '\L', EndOfFile}): - add(result, L.buf[i]) - inc(i) - add(result, "\n") - if marker: - add(result, RepeatChar(getColNumber(L, L.bufpos)) & "^\n") - +# +# +# The Nimrod Compiler +# (c) Copyright 2008 Andreas Rumpf +# +# See the file "copying.txt", included in this +# distribution, for details about the copyright. +# + +## This module implements a base object of a lexer with efficient buffer +## handling. Only at line endings checks are necessary if the buffer +## needs refilling. + +import + strutils, streams + +const + EndOfFile* = '\0' ## end of file marker + NewLines* = {'\c', '\L'} + +# Buffer handling: +# buf: +# "Example Text\n ha!" bufLen = 17 +# ^pos = 0 ^ sentinel = 12 +# + +type + TBaseLexer* = object of TObject ## the base lexer. Inherit your lexer from + ## this object. + bufpos*: int ## the current position within the buffer + buf*: cstring ## the buffer itself + bufLen*: int ## length of buffer in characters + input: PStream ## the input stream + LineNumber*: int ## the current line number + sentinel: int + lineStart: int # index of last line start in buffer + fileOpened: bool + +proc open*(L: var TBaseLexer, input: PStream, bufLen: int = 8192) + ## inits the TBaseLexer with a stream to read from + +proc close*(L: var TBaseLexer) + ## closes the base lexer. This closes `L`'s associated stream too. + +proc getCurrentLine*(L: TBaseLexer, marker: bool = true): string + ## retrieves the current line. + +proc getColNumber*(L: TBaseLexer, pos: int): int + ## retrieves the current column. + +proc HandleCR*(L: var TBaseLexer, pos: int): int + ## Call this if you scanned over '\c' in the buffer; it returns the the + ## position to continue the scanning from. `pos` must be the position + ## of the '\c'. +proc HandleLF*(L: var TBaseLexer, pos: int): int + ## Call this if you scanned over '\L' in the buffer; it returns the the + ## position to continue the scanning from. `pos` must be the position + ## of the '\L'. + +# implementation + +const + chrSize = sizeof(char) + +proc close(L: var TBaseLexer) = + dealloc(L.buf) + L.input.close(L.input) + +proc FillBuffer(L: var TBaseLexer) = + var + charsRead, toCopy, s: int # all are in characters, + # not bytes (in case this + # is not the same) + oldBufLen: int + # we know here that pos == L.sentinel, but not if this proc + # is called the first time by initBaseLexer() + assert(L.sentinel < L.bufLen) + toCopy = L.BufLen - L.sentinel - 1 + assert(toCopy >= 0) + if toCopy > 0: + MoveMem(L.buf, addr(L.buf[L.sentinel + 1]), toCopy * chrSize) # "moveMem" handles overlapping regions + charsRead = L.input.readData(L.input, addr(L.buf[toCopy]), + (L.sentinel + 1) * chrSize) div chrSize + s = toCopy + charsRead + if charsRead < L.sentinel + 1: + L.buf[s] = EndOfFile # set end marker + L.sentinel = s + else: + # compute sentinel: + dec(s) # BUGFIX (valgrind) + while true: + assert(s < L.bufLen) + while (s >= 0) and not (L.buf[s] in NewLines): Dec(s) + if s >= 0: + # we found an appropriate character for a sentinel: + L.sentinel = s + break + else: + # rather than to give up here because the line is too long, + # double the buffer's size and try again: + oldBufLen = L.BufLen + L.bufLen = L.BufLen * 2 + L.buf = cast[cstring](realloc(L.buf, L.bufLen * chrSize)) + assert(L.bufLen - oldBuflen == oldBufLen) + charsRead = L.input.ReadData(L.input, addr(L.buf[oldBufLen]), + oldBufLen * chrSize) div chrSize + if charsRead < oldBufLen: + L.buf[oldBufLen + charsRead] = EndOfFile + L.sentinel = oldBufLen + charsRead + break + s = L.bufLen - 1 + +proc fillBaseLexer(L: var TBaseLexer, pos: int): int = + assert(pos <= L.sentinel) + if pos < L.sentinel: + result = pos + 1 # nothing to do + else: + fillBuffer(L) + L.bufpos = 0 # XXX: is this really correct? + result = 0 + L.lineStart = result + +proc HandleCR(L: var TBaseLexer, pos: int): int = + assert(L.buf[pos] == '\c') + inc(L.linenumber) + result = fillBaseLexer(L, pos) + if L.buf[result] == '\L': + result = fillBaseLexer(L, result) + +proc HandleLF(L: var TBaseLexer, pos: int): int = + assert(L.buf[pos] == '\L') + inc(L.linenumber) + result = fillBaseLexer(L, pos) #L.lastNL := result-1; // BUGFIX: was: result; + +proc skip_UTF_8_BOM(L: var TBaseLexer) = + if (L.buf[0] == '\xEF') and (L.buf[1] == '\xBB') and (L.buf[2] == '\xBF'): + inc(L.bufpos, 3) + inc(L.lineStart, 3) + +proc open(L: var TBaseLexer, input: PStream, bufLen: int = 8192) = + assert(bufLen > 0) + assert(input != nil) + L.input = input + L.bufpos = 0 + L.bufLen = bufLen + L.buf = cast[cstring](alloc(bufLen * chrSize)) + L.sentinel = bufLen - 1 + L.lineStart = 0 + L.linenumber = 1 # lines start at 1 + fillBuffer(L) + skip_UTF_8_BOM(L) + +proc getColNumber(L: TBaseLexer, pos: int): int = + result = pos - L.lineStart + assert(result >= 0) + +proc getCurrentLine(L: TBaseLexer, marker: bool = true): string = + var i: int + result = "" + i = L.lineStart + while not (L.buf[i] in {'\c', '\L', EndOfFile}): + add(result, L.buf[i]) + inc(i) + add(result, "\n") + if marker: + add(result, RepeatChar(getColNumber(L, L.bufpos)) & "^\n") + diff --git a/lib/macros.nim b/lib/macros.nim index af5e0d17d..809531c4c 100644 --- a/lib/macros.nim +++ b/lib/macros.nim @@ -1,176 +1,175 @@ -# -# -# Nimrod's Runtime Library -# (c) Copyright 2008 Andreas Rumpf -# -# See the file "copying.txt", included in this -# distribution, for details about the copyright. -# - - -## This module contains the interface to the compiler's abstract syntax tree. -## Abstract syntax trees should be modified in macros. - -#[[[cog -#def toEnum(name, elems, prefix): -# body = "" -# counter = 0 -# for e in elems: -# if counter % 4 == 0: p = "\n " -# else: p = "" -# body += p + prefix + e[2:] + ', ' -# counter += 1 -# -# return " TNimrod%s* = enum%s\n TNim%ss* = set[TNimrod%s]\n" \ -# % (name, body.rstrip(", "), name, name) -# -#enums = eval(file("data/ast.yml").read()) -#cog.out("type\n") -#i = 0 -#for key, val in enums.iteritems(): -# if key.endswith("Flag"): continue -# cog.out(toEnum(key, val, ["nnk", "nty", "nsk"][i])) -# i += 1 -#]]] -type - TNimrodNodeKind* = enum - nnkNone, nnkEmpty, nnkIdent, nnkSym, - nnkType, nnkCharLit, nnkIntLit, nnkInt8Lit, - nnkInt16Lit, nnkInt32Lit, nnkInt64Lit, nnkFloatLit, - nnkFloat32Lit, nnkFloat64Lit, nnkStrLit, nnkRStrLit, - nnkTripleStrLit, nnkMetaNode, nnkNilLit, nnkDotCall, - nnkCommand, nnkCall, nnkGenericCall, nnkExplicitTypeListCall, - nnkExprEqExpr, nnkExprColonExpr, nnkIdentDefs, nnkInfix, - nnkPrefix, nnkPostfix, nnkPar, nnkCurly, - nnkBracket, nnkBracketExpr, nnkPragmaExpr, nnkRange, - nnkDotExpr, nnkCheckedFieldExpr, nnkDerefExpr, nnkIfExpr, - nnkElifExpr, nnkElseExpr, nnkLambda, nnkAccQuoted, - nnkHeaderQuoted, nnkTableConstr, nnkQualified, nnkHiddenStdConv, - nnkHiddenSubConv, nnkHiddenCallConv, nnkConv, nnkCast, - nnkAddr, nnkHiddenAddr, nnkHiddenDeref, nnkObjDownConv, - nnkObjUpConv, nnkChckRangeF, nnkChckRange64, nnkChckRange, - nnkStringToCString, nnkCStringToString, nnkPassAsOpenArray, nnkAsgn, - nnkDefaultTypeParam, nnkGenericParams, nnkFormalParams, nnkOfInherit, - nnkModule, nnkProcDef, nnkConverterDef, nnkMacroDef, - nnkTemplateDef, nnkIteratorDef, nnkOfBranch, nnkElifBranch, - nnkExceptBranch, nnkElse, nnkMacroStmt, nnkAsmStmt, - nnkPragma, nnkIfStmt, nnkWhenStmt, nnkForStmt, - nnkWhileStmt, nnkCaseStmt, nnkVarSection, nnkConstSection, - nnkConstDef, nnkTypeSection, nnkTypeDef, nnkYieldStmt, - nnkTryStmt, nnkFinally, nnkRaiseStmt, nnkReturnStmt, - nnkBreakStmt, nnkContinueStmt, nnkBlockStmt, nnkDiscardStmt, - nnkStmtList, nnkImportStmt, nnkFromStmt, nnkImportAs, - nnkIncludeStmt, nnkAccessStmt, nnkCommentStmt, nnkStmtListExpr, - nnkBlockExpr, nnkVm, nnkTypeOfExpr, nnkObjectTy, - nnkTupleTy, nnkRecList, nnkRecCase, nnkRecWhen, - nnkRefTy, nnkPtrTy, nnkVarTy, nnkProcTy, - nnkEnumTy, nnkEnumFieldDef, nnkReturnToken - TNimNodeKinds* = set[TNimrodNodeKind] - TNimrodTypeKind* = enum - ntyNone, ntyBool, ntyChar, ntyEmptySet, - ntyArrayConstr, ntyNil, ntyGeneric, ntyGenericInst, - ntyGenericParam, ntyEnum, ntyAnyEnum, ntyArray, - ntyObject, ntyTuple, ntySet, ntyRange, - ntyPtr, ntyRef, ntyVar, ntySequence, - ntyProc, ntyPointer, ntyOpenArray, ntyString, - ntyCString, ntyForward, ntyInt, ntyInt8, - ntyInt16, ntyInt32, ntyInt64, ntyFloat, - ntyFloat32, ntyFloat64, ntyFloat128 - TNimTypeKinds* = set[TNimrodTypeKind] - TNimrodSymKind* = enum - nskUnknownSym, nskConditional, nskDynLib, nskParam, - nskTypeParam, nskTemp, nskType, nskConst, - nskVar, nskProc, nskIterator, nskConverter, - nskMacro, nskTemplate, nskField, nskEnumField, - nskForVar, nskModule, nskLabel - TNimSymKinds* = set[TNimrodSymKind] -#[[[end]]] - -type - TNimrodNode {.final.} = object # hidden - TNimrodSymbol {.final.} = object # hidden - TNimrodType {.final.} = object # hidden - PNimrodType* {.compilerproc.} = ref TNimrodType - PNimrodSymbol* {.compilerproc.} = ref TNimrodSymbol - PNimrodNode* {.compilerproc.} = ref TNimrodNode - expr* = PNimrodNode - stmt* = PNimrodNode - -# Nodes should be reference counted to make the `copy` operation very fast! -# However, this is difficult to achieve: modify(n[0][1]) should propagate to -# its father. How to do this without back references? - -proc `[]`* (n: PNimrodNode, i: int): PNimrodNode {.magic: "NChild".} -proc `[]=`* (n: PNimrodNode, i: int, child: PNimrodNode) {.magic: "NSetChild".} - ## provide access to `n`'s children - -type - TNimrodIdent = object of TObject - -converter StrToIdent*(s: string): TNimrodIdent {.magic: "StrToIdent".} -proc `$`*(i: TNimrodIdent): string {.magic: "IdentToStr".} -proc `==`* (a, b: TNimrodIdent): bool {.magic: "EqIdent".} - -proc len*(n: PNimrodNode): int {.magic: "NLen".} - -## returns the number of children that a node has -proc add*(father, child: PNimrodNode) {.magic: "NAdd".} -proc add*(father: PNimrodNode, child: openArray[PNimrodNode]) {.magic: "NAddMultiple".} -proc del*(father: PNimrodNode, idx = 0, n = 1) {.magic: "NDel".} -proc kind*(n: PNimrodNode): TNimrodNodeKind {.magic: "NKind".} - -proc intVal*(n: PNimrodNode): biggestInt {.magic: "NIntVal".} -proc floatVal*(n: PNimrodNode): biggestFloat {.magic: "NFloatVal".} -proc symbol*(n: PNimrodNode): PNimrodSymbol {.magic: "NSymbol".} -proc ident*(n: PNimrodNode): TNimrodIdent {.magic: "NIdent".} -proc typ*(n: PNimrodNode): PNimrodType {.magic: "NGetType".} -proc strVal*(n: PNimrodNode): string {.magic: "NStrVal".} - -proc `intVal=`*(n: PNimrodNode, val: biggestInt) {.magic: "NSetIntVal".} -proc `floatVal=`*(n: PNimrodNode, val: biggestFloat) {.magic: "NSetFloatVal".} -proc `symbol=`*(n: PNimrodNode, val: PNimrodSymbol) {.magic: "NSetSymbol".} -proc `ident=`*(n: PNimrodNode, val: TNimrodIdent) {.magic: "NSetIdent".} -proc `typ=`*(n: PNimrodNode, typ: PNimrodType) {.magic: "NSetType".} -proc `strVal=`*(n: PNimrodNode, val: string) {.magic: "NSetStrVal".} - -proc newNimNode*(kind: TNimrodNodeKind, - n: PNimrodNode=nil): PNimrodNode {.magic: "NNewNimNode".} -proc copyNimNode*(n: PNimrodNode): PNimrodNode {.magic: "NCopyNimNode".} -proc copyNimTree*(n: PNimrodNode): PNimrodNode {.magic: "NCopyNimTree".} - -proc error*(msg: string) {.magic: "NError".} -proc warning*(msg: string) {.magic: "NWarning".} -proc hint*(msg: string) {.magic: "NHint".} - -proc newStrLitNode*(s: string): PNimrodNode {.nodecl.} = - result = newNimNode(nnkStrLit) - result.strVal = s - -proc newIntLitNode*(i: biggestInt): PNimrodNode {.nodecl.} = - result = newNimNode(nnkIntLit) - result.intVal = i - -proc newIntLitNode*(f: biggestFloat): PNimrodNode {.nodecl.} = - result = newNimNode(nnkFloatLit) - result.floatVal = f - -proc newIdentNode*(i: TNimrodIdent): PNimrodNode {.nodecl.} = - result = newNimNode(nnkIdent) - result.ident = i - -proc toStrLit*(n: PNimrodNode): PNimrodNode {.nodecl.} = - return newStrLitNode(repr(n)) - -proc expectKind*(n: PNimrodNode, k: TNimrodNodeKind) {.nodecl.} = - if n.kind != k: error("macro expects a node of kind: " & repr(k)) - -proc expectMinLen*(n: PNimrodNode, min: int) {.nodecl.} = - if n.len < min: error("macro expects a node with " & $min & " children") - -proc newCall*(theProc: TNimrodIdent, - args: openArray[PNimrodNode]): PNimrodNode {.nodecl.} = - ## produces a new call node. `theProc` is the proc that is called with - ## the arguments ``args[0..]``. - result = newNimNode(nnkCall) - result.add(newIdentNode(theProc)) - result.add(args) +# +# +# Nimrod's Runtime Library +# (c) Copyright 2008 Andreas Rumpf +# +# See the file "copying.txt", included in this +# distribution, for details about the copyright. +# + + +## This module contains the interface to the compiler's abstract syntax tree. +## Abstract syntax trees should be modified in macros. + +#[[[cog +#def toEnum(name, elems): +# body = "" +# counter = 0 +# for e in elems: +# if counter % 4 == 0: p = "\n " +# else: p = "" +# body = body + p + 'n' + e + ', ' +# counter = counter + 1 +# +# return (" TNimrod%s* = enum%s\n TNim%ss* = set[TNimrod%s]\n" % +# (name, body[:-2], name, name)) +# +#enums = eval(open("data/ast.yml").read()) +#cog.out("type\n") +#for key, val in enums.items(): +# if key[-4:] == "Flag": continue +# cog.out(toEnum(key, val)) +#]]] +type + TNimrodTypeKind* = enum + ntyNone, ntyBool, ntyChar, ntyEmpty, + ntyArrayConstr, ntyNil, ntyGeneric, ntyGenericInst, + ntyGenericParam, ntyEnum, ntyAnyEnum, ntyArray, + ntyObject, ntyTuple, ntySet, ntyRange, + ntyPtr, ntyRef, ntyVar, ntySequence, + ntyProc, ntyPointer, ntyOpenArray, ntyString, + ntyCString, ntyForward, ntyInt, ntyInt8, + ntyInt16, ntyInt32, ntyInt64, ntyFloat, + ntyFloat32, ntyFloat64, ntyFloat128 + TNimTypeKinds* = set[TNimrodTypeKind] + TNimrodSymKind* = enum + nskUnknownSym, nskConditional, nskDynLib, nskParam, + nskTypeParam, nskTemp, nskType, nskConst, + nskVar, nskProc, nskIterator, nskConverter, + nskMacro, nskTemplate, nskField, nskEnumField, + nskForVar, nskModule, nskLabel, nskStub + TNimSymKinds* = set[TNimrodSymKind] + TNimrodNodeKind* = enum + nnkNone, nnkEmpty, nnkIdent, nnkSym, + nnkType, nnkCharLit, nnkIntLit, nnkInt8Lit, + nnkInt16Lit, nnkInt32Lit, nnkInt64Lit, nnkFloatLit, + nnkFloat32Lit, nnkFloat64Lit, nnkStrLit, nnkRStrLit, + nnkTripleStrLit, nnkMetaNode, nnkNilLit, nnkDotCall, + nnkCommand, nnkCall, nnkGenericCall, nnkExplicitTypeListCall, + nnkExprEqExpr, nnkExprColonExpr, nnkIdentDefs, nnkInfix, + nnkPrefix, nnkPostfix, nnkPar, nnkCurly, + nnkBracket, nnkBracketExpr, nnkPragmaExpr, nnkRange, + nnkDotExpr, nnkCheckedFieldExpr, nnkDerefExpr, nnkIfExpr, + nnkElifExpr, nnkElseExpr, nnkLambda, nnkAccQuoted, + nnkHeaderQuoted, nnkTableConstr, nnkQualified, nnkHiddenStdConv, + nnkHiddenSubConv, nnkHiddenCallConv, nnkConv, nnkCast, + nnkAddr, nnkHiddenAddr, nnkHiddenDeref, nnkObjDownConv, + nnkObjUpConv, nnkChckRangeF, nnkChckRange64, nnkChckRange, + nnkStringToCString, nnkCStringToString, nnkPassAsOpenArray, nnkAsgn, + nnkDefaultTypeParam, nnkGenericParams, nnkFormalParams, nnkOfInherit, + nnkModule, nnkProcDef, nnkConverterDef, nnkMacroDef, + nnkTemplateDef, nnkIteratorDef, nnkOfBranch, nnkElifBranch, + nnkExceptBranch, nnkElse, nnkMacroStmt, nnkAsmStmt, + nnkPragma, nnkIfStmt, nnkWhenStmt, nnkForStmt, + nnkWhileStmt, nnkCaseStmt, nnkVarSection, nnkConstSection, + nnkConstDef, nnkTypeSection, nnkTypeDef, nnkYieldStmt, + nnkTryStmt, nnkFinally, nnkRaiseStmt, nnkReturnStmt, + nnkBreakStmt, nnkContinueStmt, nnkBlockStmt, nnkDiscardStmt, + nnkStmtList, nnkImportStmt, nnkFromStmt, nnkImportAs, + nnkIncludeStmt, nnkAccessStmt, nnkCommentStmt, nnkStmtListExpr, + nnkBlockExpr, nnkStmtListType, nnkBlockType, nnkVm, + nnkTypeOfExpr, nnkObjectTy, nnkTupleTy, nnkRecList, + nnkRecCase, nnkRecWhen, nnkRefTy, nnkPtrTy, + nnkVarTy, nnkProcTy, nnkEnumTy, nnkEnumFieldDef, + nnkReturnToken + TNimNodeKinds* = set[TNimrodNodeKind] +#[[[end]]] + +type + TNimrodNode {.final.} = object # hidden + TNimrodSymbol {.final.} = object # hidden + TNimrodType {.final.} = object # hidden + PNimrodType* {.compilerproc.} = ref TNimrodType + PNimrodSymbol* {.compilerproc.} = ref TNimrodSymbol + PNimrodNode* {.compilerproc.} = ref TNimrodNode + expr* = PNimrodNode + stmt* = PNimrodNode + +# Nodes should be reference counted to make the `copy` operation very fast! +# However, this is difficult to achieve: modify(n[0][1]) should propagate to +# its father. How to do this without back references? + +proc `[]`* (n: PNimrodNode, i: int): PNimrodNode {.magic: "NChild".} +proc `[]=`* (n: PNimrodNode, i: int, child: PNimrodNode) {.magic: "NSetChild".} + ## provide access to `n`'s children + +type + TNimrodIdent = object of TObject + +converter StrToIdent*(s: string): TNimrodIdent {.magic: "StrToIdent".} +proc `$`*(i: TNimrodIdent): string {.magic: "IdentToStr".} +proc `==`* (a, b: TNimrodIdent): bool {.magic: "EqIdent".} + +proc len*(n: PNimrodNode): int {.magic: "NLen".} + +## returns the number of children that a node has +proc add*(father, child: PNimrodNode) {.magic: "NAdd".} +proc add*(father: PNimrodNode, child: openArray[PNimrodNode]) {.magic: "NAddMultiple".} +proc del*(father: PNimrodNode, idx = 0, n = 1) {.magic: "NDel".} +proc kind*(n: PNimrodNode): TNimrodNodeKind {.magic: "NKind".} + +proc intVal*(n: PNimrodNode): biggestInt {.magic: "NIntVal".} +proc floatVal*(n: PNimrodNode): biggestFloat {.magic: "NFloatVal".} +proc symbol*(n: PNimrodNode): PNimrodSymbol {.magic: "NSymbol".} +proc ident*(n: PNimrodNode): TNimrodIdent {.magic: "NIdent".} +proc typ*(n: PNimrodNode): PNimrodType {.magic: "NGetType".} +proc strVal*(n: PNimrodNode): string {.magic: "NStrVal".} + +proc `intVal=`*(n: PNimrodNode, val: biggestInt) {.magic: "NSetIntVal".} +proc `floatVal=`*(n: PNimrodNode, val: biggestFloat) {.magic: "NSetFloatVal".} +proc `symbol=`*(n: PNimrodNode, val: PNimrodSymbol) {.magic: "NSetSymbol".} +proc `ident=`*(n: PNimrodNode, val: TNimrodIdent) {.magic: "NSetIdent".} +proc `typ=`*(n: PNimrodNode, typ: PNimrodType) {.magic: "NSetType".} +proc `strVal=`*(n: PNimrodNode, val: string) {.magic: "NSetStrVal".} + +proc newNimNode*(kind: TNimrodNodeKind, + n: PNimrodNode=nil): PNimrodNode {.magic: "NNewNimNode".} +proc copyNimNode*(n: PNimrodNode): PNimrodNode {.magic: "NCopyNimNode".} +proc copyNimTree*(n: PNimrodNode): PNimrodNode {.magic: "NCopyNimTree".} + +proc error*(msg: string) {.magic: "NError".} +proc warning*(msg: string) {.magic: "NWarning".} +proc hint*(msg: string) {.magic: "NHint".} + +proc newStrLitNode*(s: string): PNimrodNode {.compileTime.} = + result = newNimNode(nnkStrLit) + result.strVal = s + +proc newIntLitNode*(i: biggestInt): PNimrodNode {.compileTime.} = + result = newNimNode(nnkIntLit) + result.intVal = i + +proc newIntLitNode*(f: biggestFloat): PNimrodNode {.compileTime.} = + result = newNimNode(nnkFloatLit) + result.floatVal = f + +proc newIdentNode*(i: TNimrodIdent): PNimrodNode {.compileTime.} = + result = newNimNode(nnkIdent) + result.ident = i + +proc toStrLit*(n: PNimrodNode): PNimrodNode {.compileTime.} = + return newStrLitNode(repr(n)) + +proc expectKind*(n: PNimrodNode, k: TNimrodNodeKind) {.compileTime.} = + if n.kind != k: error("macro expects a node of kind: " & repr(k)) + +proc expectMinLen*(n: PNimrodNode, min: int) {.compileTime.} = + if n.len < min: error("macro expects a node with " & $min & " children") + +proc newCall*(theProc: TNimrodIdent, + args: openArray[PNimrodNode]): PNimrodNode {.compileTime.} = + ## produces a new call node. `theProc` is the proc that is called with + ## the arguments ``args[0..]``. + result = newNimNode(nnkCall) + result.add(newIdentNode(theProc)) + result.add(args) diff --git a/lib/math.nim b/lib/math.nim index aff5815ce..57c1c7e3d 100644 --- a/lib/math.nim +++ b/lib/math.nim @@ -18,6 +18,10 @@ when defined(Posix): {.passl: "-lm".} +const + PI* = 3.1415926535897932384626433 ## the circle constant PI (Ludolph's number) + E* = 2.71828182845904523536028747 ## Euler's number + type TFloatClass* = enum ## describes the class a floating point value belongs to. ## This is the type that is returned by `classify`. @@ -35,7 +39,7 @@ proc classify*(x: float): TFloatClass = # ECMAScript and most C compilers have no classify: if x == 0.0: - if 1.0/x == 1.0/0.0: + if 1.0/x == Inf: return fcZero else: return fcNegZero @@ -129,7 +133,7 @@ when not defined(ECMAScript): proc rand(): cint {.importc: "rand", nodecl.} proc randomize() = srand(gettime(nil)) - proc random(max: int): int = return rand() mod max + proc random(max: int): int = return int(rand()) mod max else: proc mathrandom(): float {.importc: "Math.random", nodecl.} diff --git a/lib/memman.nim b/lib/memman.nim index 81919389b..e8ebcd61c 100644 --- a/lib/memman.nim +++ b/lib/memman.nim @@ -164,7 +164,7 @@ else: # the fact that the OS is likely to give us pages with contingous numbers. # A page contains either small fixed size objects of the same size or # variable length objects. An object's size is always aligned at 16 byte -# boundry. Huge objects are dealt with the TLSF algorithm. +# boundary. Huge objects are dealt with the TLSF algorithm. # The design supports iterating over any object in a fast way. # A bitset contains any page that starts an allocated page. The page may be @@ -230,6 +230,7 @@ type zct: TCellArray stackCells: TCellArray smallBlocks: array [PageSize div MemAlign, ptr TPageDesc] + freeLists: array [PageSize div MemAlign, ptr TFreeList] pages: TPageManager usedPages: TPageList freePages: TPageList @@ -237,6 +238,11 @@ type # small blocks: proc allocSmall(var h: TGcHeap, size: int): pointer = var s = align(size) + var f = h.freeLists[s] + if f != nil: + f.prev = f.next # remove from list + f.next.prev = f.prev + return f var p = h.smallBlocks[s] if p == nil or p.free == nil: p = newSmallBlock(s, p) diff --git a/lib/nimbase.h b/lib/nimbase.h index 8d7c287e0..f7e41f2b1 100644 --- a/lib/nimbase.h +++ b/lib/nimbase.h @@ -10,6 +10,8 @@ #ifndef NIMBASE_H #define NIMBASE_H +#include <math.h> + /* calling convention mess ----------------------------------------------- */ #if defined(__GNUC__) || defined(__LCC__) || defined(__POCC__) \ || defined(__TINYC__) @@ -37,12 +39,16 @@ #if defined(__POCC__) # define NIM_CONST /* PCC is really picky with const modifiers */ +# undef _MSC_VER /* Yeah, right PCC defines _MSC_VER even if it is + not that compatible. Well done. */ #elif defined(__cplusplus) # define NIM_CONST /* C++ is picky with const modifiers */ #else # define NIM_CONST const #endif +#define NIM_THREADVAR __thread + /* --------------- how int64 constants should be declared: ----------- */ #if defined(__GNUC__) || defined(__LCC__) || \ defined(__POCC__) || defined(__DMC__) @@ -51,6 +57,14 @@ # define IL64(x) x #endif +/* ---------------- casting without correct aliasing rules ----------- */ + +#if defined(__GNUCC__) +# define NIM_CAST(type, ptr) (((union{type __x__;}*)(ptr))->__x__) +#else +# define NIM_CAST(type, ptr) ((type)(ptr)) +#endif + /* ------------------------------------------------------------------- */ #if defined(WIN32) || defined(_WIN32) /* only Windows has this mess... */ @@ -94,6 +108,16 @@ #define N_CLOSURE_PTR(rettype, name) rettype (*name) +#if defined(__GNUC__) || defined(__ICC__) +# define N_NOINLINE(rettype, name) rettype __attribute__((noinline)) name +#elif defined(_MSC_VER) +# define N_NOINLINE(rettype, name) __declspec(noinline) rettype name +#else +# define N_NOINLINE(rettype, name) rettype name +#endif + +#define N_NOINLINE_PTR(rettype, name) rettype (*name) + #if defined(__BORLANDC__) || defined(__WATCOMC__) || \ defined(__POCC__) || defined(_MSC_VER) /* these compilers have a fastcall so use it: */ @@ -164,13 +188,10 @@ # define _ISOC99_SOURCE 1 # define __USE_ISOC9X 1 # define __USE_ISOC99 1 -# include <math.h> #elif (defined(WIN32) || defined(_WIN32) || defined(__WIN32__)) \ && !defined(__BORLANDC__) && !defined(__POCC__) -# include <math.h> - /* Win32 doesn't seem to have these functions. ** Therefore implement inline versions of these functions here. */ @@ -194,8 +215,6 @@ static N_INLINE(long int, lrintf)(float flt) { #else -# include <math.h> - # ifndef lrint # define lrint(dbl) ((long int)(dbl)) # endif @@ -214,11 +233,6 @@ static N_INLINE(long int, lrintf)(float flt) { #include <signal.h> #include <setjmp.h> -#ifndef NAN -static unsigned long nimNaN[2]={0xffffffff, 0x7fffffff}; -# define NAN (*(double*) nimNaN) -#endif - /* #ifndef INF static unsigned long nimInf[2]={0xffffffff, 0x7fffffff}; @@ -241,8 +255,7 @@ __TINYC__ # define HAVE_STDINT_H #endif -#if defined(__LCC__) || defined(__GNUC__) || defined(__DMC__) \ - || defined(__POCC__) +#if defined(__LCC__) || defined(__DMC__) || defined(__POCC__) # define HAVE_STDINT_H #endif @@ -328,14 +341,16 @@ static N_INLINE(NI32, float32ToInt32)(float val) { return float64ToInt32((double)val); } +#define float64ToInt64(x) ((NI64) (x)) + #define zeroMem(a, size) memset(a, 0, size) #define equalMem(a, b, size) (memcmp(a, b, size) == 0) #define STRING_LITERAL(name, str, length) \ static const struct { \ - NI len, space; \ + TGenericSeq Sup; \ NIM_CHAR data[length + 1]; \ - } name = {length, length, str} + } name = {{length, length}, str} typedef struct TStringDesc* string; @@ -343,7 +358,7 @@ typedef struct TStringDesc* string; #if defined(__GNUC__) # define SEQ_DECL_SIZE /* empty is correct! */ #else -# define SEQ_DECL_SIZE 1000000 +# define SEQ_DECL_SIZE 1000000 #endif #define ALLOC_0(size) calloc(1, size) @@ -352,6 +367,13 @@ typedef struct TStringDesc* string; #define GenericSeqSize sizeof(TGenericSeq) #define paramCount() cmdCount +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__i386__) +# ifndef NAN +static unsigned long nimNaN[2]={0xffffffff, 0x7fffffff}; +# define NAN (*(double*) nimNaN) +# endif +#endif + #ifndef NAN # define NAN (0.0 / 0.0) #endif @@ -399,6 +421,7 @@ struct NimException { }; #endif +#if 0 typedef struct TStringDesc { NI len; NI space; @@ -410,5 +433,6 @@ typedef struct { } TGenericSeq; typedef TGenericSeq* PGenericSeq; +#endif #endif diff --git a/lib/os.nim b/lib/os.nim index f07045143..8ec781000 100644 --- a/lib/os.nim +++ b/lib/os.nim @@ -7,14 +7,12 @@ # distribution, for details about the copyright. # -## Basic operating system facilities like retrieving environment variables, -## reading command line arguments, working with directories, running shell -## commands, etc. This module is -- like any other basic library -- -## platform independant. However, the ECMAScript target is not supported, -## as there is no way to perform these operations in ECMAScript portably -## or at all. +## This module contains basic operating system facilities like +## retrieving environment variables, reading command line arguments, +## working with directories, running shell commands, etc. +## This module is -- like any other basic library -- platform independant. -{.push debugger:off.} +{.push debugger: off.} import strutils, times @@ -28,8 +26,9 @@ template newException(exceptn, message: expr): expr = e.msg = message e -when defined(windows) or defined(OS2) or defined(DOS): - {.define: doslike.} # DOS-like filesystem +const + doslike = defined(windows) or defined(OS2) or defined(DOS) + # DOS-like filesystem when defined(Nimdoc): # only for proper documentation: const @@ -69,6 +68,14 @@ when defined(Nimdoc): # only for proper documentation: ## True if the file system is case sensitive, false otherwise. Used by ## `cmpPaths` to compare filenames properly. + ExeExt* = "" + ## The file extension of native executables. For example: + ## "" on UNIX, "exe" on Windows. + + ScriptExt* = "" + ## The file extension of a script file. For example: "" on UNIX, + ## "bat" on Windows. + elif defined(macos): const curdir* = ':' @@ -77,6 +84,8 @@ elif defined(macos): altsep* = dirsep pathsep* = ',' FileSystemCaseSensitive* = false + ExeExt* = "" + ScriptExt* = "" # MacOS paths # =========== @@ -96,7 +105,7 @@ elif defined(macos): # waterproof. In case of equal names the first volume found will do. # Two colons "::" are the relative path to the parent. Three is to the # grandparent etc. -elif defined(doslike): +elif doslike: const curdir* = '.' pardir* = ".." @@ -104,6 +113,8 @@ elif defined(doslike): altsep* = '/' pathSep* = ';' # seperator between paths FileSystemCaseSensitive* = false + ExeExt* = "exe" + ScriptExt* = "bat" elif defined(PalmOS) or defined(MorphOS): const dirsep* = '/' @@ -111,6 +122,8 @@ elif defined(PalmOS) or defined(MorphOS): PathSep* = ';' pardir* = ".." FileSystemCaseSensitive* = false + ExeExt* = "" + ScriptExt* = "" elif defined(RISCOS): const dirsep* = '.' @@ -118,6 +131,8 @@ elif defined(RISCOS): pardir* = ".." # is this correct? pathSep* = ',' FileSystemCaseSensitive* = true + ExeExt* = "" + ScriptExt* = "" else: # UNIX-like operating system const curdir* = '.' @@ -126,6 +141,8 @@ else: # UNIX-like operating system altsep* = dirsep pathSep* = ':' FileSystemCaseSensitive* = true + ExeExt* = "" + ScriptExt* = "" const ExtSep* = '.' @@ -133,26 +150,26 @@ const ## for example, the '.' in ``os.nim``. proc getApplicationDir*(): string {.noSideEffect.} - ## Gets the directory of the application's executable. + ## Returns the directory of the application's executable. proc getApplicationFilename*(): string {.noSideEffect.} - ## Gets the filename of the application's executable. + ## Returns the filename of the application's executable. proc getCurrentDir*(): string {.noSideEffect.} - ## Gets the current working directory. + ## Returns the current working directory. proc setCurrentDir*(newDir: string) {.inline.} ## Sets the current working directory; `EOS` is raised if ## `newDir` cannot been set. proc getHomeDir*(): string {.noSideEffect.} - ## Gets the home directory of the current user. + ## Returns the home directory of the current user. proc getConfigDir*(): string {.noSideEffect.} - ## Gets the config directory of the current user for applications. + ## Returns the config directory of the current user for applications. proc expandFilename*(filename: string): string - ## Returns the full path of `filename`, "" on error. + ## Returns the full path of `filename`, raises EOS in case of an error. proc ExistsFile*(filename: string): bool ## Returns true if the file exists, false otherwise. @@ -216,13 +233,26 @@ proc SplitFilename*(filename: string, name, extension: var string) {. ## It the file has no extension, extention is the empty string. proc extractDir*(path: string): string {.noSideEffect.} - ## Extracts the directory of a given path. This is the `head` - ## result of `splitPath`. + ## Extracts the directory of a given path. This is almost the + ## same as the `head` result of `splitPath`, except that + ## ``extractDir("/usr/lib/") == "/usr/lib/"``. proc extractFilename*(path: string): string {.noSideEffect.} - ## Extracts the filename of a given `path`. This the the `tail` - ## result of `splitPath`. - # XXX: this is not true: /usr/lib/ --> filename should be empty! + ## Extracts the filename of a given `path`. This is almost the + ## same as the `tail` result of `splitPath`, except that + ## ``extractFilename("/usr/lib/") == ""``. + +proc extractFileExt*(filename: string): string {.noSideEffect.} = + ## Extracts the file extension of a given `filename`. This is the + ## same as the `extension` result of `splitFilename`. + var dummy: string + splitFilename(filename, dummy, result) + +proc extractFileTrunk*(filename: string): string {.noSideEffect.} = + ## Extracts the file name of a given `filename`. This removes any + ## directory information and the file extension. + var dummy: string + splitFilename(extractFilename(filename), result, dummy) proc cmpPaths*(pathA, pathB: string): int {.noSideEffect.} ## Compares two paths. @@ -251,28 +281,23 @@ proc ChangeFileExt*(filename, ext: string): string {.noSideEffect.} ## filesystems may use a different character. (Although I know ## of none such beast.) -# procs dealing with processes: -proc executeProcess*(command: string): int - ## Executes a process. - ## - ## Command has the form 'program args' where args are the command - ## line arguments given to program. The proc returns the error code - ## of the process when it has finished. The proc does not return - ## until the process has finished. - proc executeShellCommand*(command: string): int ## Executes a shell command. ## - ## The syntax of the command is unspecified and depends on the used - ## shell. The proc returns the error code of the shell when it has finished. + ## Command has the form 'program args' where args are the command + ## line arguments given to program. The proc returns the error code + ## of the shell when it has finished. The proc does not return until + ## the process has finished. To execute a program without having a + ## shell involved, use the `executeProcess` proc of the `osproc` + ## module. # procs operating on a high level for files: proc copyFile*(dest, source: string) - ## Copies a file from `dest` to `source`. If this fails, + ## Copies a file from `source` to `dest`. If this fails, ## `EOS` is raised. proc moveFile*(dest, source: string) - ## Moves a file from `dest` to `source`. If this fails, `EOS` is raised. + ## Moves a file from `source` to `dest`. If this fails, `EOS` is raised. proc removeFile*(file: string) ## Removes the `file`. If this fails, `EOS` is raised. @@ -294,10 +319,10 @@ proc existsDir*(dir: string): bool ## is returned. proc getLastModificationTime*(file: string): TTime - ## Gets the time of the `file`'s last modification. + ## Returns the time of the `file`'s last modification. proc fileNewer*(a, b: string): bool - ## returns true if the file `a` is newer than file `b`, i.e. if `a`'s + ## Returns true if the file `a` is newer than file `b`, i.e. if `a`'s ## modification time is later than `b`'s. # procs dealing with environment variables: @@ -306,7 +331,7 @@ proc putEnv*(key, val: string) ## If an error occurs, `EInvalidEnvVar` is raised. proc getEnv*(key: string): string - ## Gets the value of the environment variable named `key`. + ## Returns the value of the environment variable named `key`. ## ## If the variable does not exist, "" is returned. To distinguish ## whether a variable exists or it's value is just "", call @@ -328,6 +353,43 @@ proc paramStr*(i: int): string ## `i` should be in the range `1..paramCount()`, else ## the `EOutOfIndex` exception is raised. +when defined(windows): + proc GetLastError(): int32 {.importc, stdcall, dynlib: "kernel32".} + proc FormatMessageA(dwFlags: int32, lpSource: pointer, + dwMessageId, dwLanguageId: int32, + lpBuffer: pointer, nSize: int32, + Arguments: pointer): int32 {. + importc, stdcall, dynlib: "kernel32".} + proc LocalFree(p: pointer) {.importc, stdcall, dynlib: "kernel32".} + +var errno {.importc, header: "<errno.h>".}: cint ## error variable +proc strerror(errnum: cint): cstring {.importc, header: "<string.h>".} + +proc OSError*(msg: string = "") {.noinline.} = + ## raises an EOS exception with the given message ``msg``. + ## If ``msg == ""``, the operating system's error flag + ## (``errno``) is converted to a readable error message. On Windows + ## ``GetLastError`` is checked before ``errno``. + ## If no error flag is set, the message ``unknown OS error`` is used. + if len(msg) == 0: + when defined(Windows): + var err = GetLastError() + if err != 0'i32: + # sigh, why is this is so difficult? + var msgbuf: cstring + if FormatMessageA(0x00000100 or 0x00001000 or 0x00000200, + nil, err, 0, addr(msgbuf), 0, nil) != 0'i32: + var m = $msgbuf + if msgbuf != nil: + LocalFree(msgbuf) + raise newException(EOS, m) + if errno != 0'i32: + raise newException(EOS, $strerror(errno)) + else: + raise newException(EOS, "unknown OS error") + else: + raise newException(EOS, msg) + # implementation proc UnixToNativePath(path: string): string = @@ -337,7 +399,7 @@ proc UnixToNativePath(path: string): string = var start: int if path[0] == '/': # an absolute path - when defined(doslike): + when doslike: result = r"C:\" elif defined(macos): result = "" # must not start with ':' @@ -368,7 +430,7 @@ proc UnixToNativePath(path: string): string = add result, dirSep inc(i) else: - add result, $path[i] + add result, path[i] inc(i) # interface to C library: @@ -377,7 +439,8 @@ const cunder = if defined(pcc): "_" else: "" type - TStat {.importc: "struct " & cunder & "stat", final.} = object + TStat {.importc: "struct " & cunder & "stat", + header: "<sys/stat.h>", pure.} = object st_dev: int16 st_ino: int16 st_mode: int16 @@ -390,60 +453,56 @@ type st_mtime: TTime st_ctime: TTime -var - errno {.importc: "errno", header: "<errno.h>".}: cint - EEXIST {.importc: "EEXIST", header: "<errno.h>".}: cint when defined(unix): - const dirHeader = "<sys/stat.h>" -elif defined(windows): - const dirHeader = "<direct.h>" -else: - {.error: "os library not ported to your OS. Please help!".} - - -proc chdir(path: CString): cint {. - importc: cunder & "chdir", header: dirHeader.} + var + EEXIST {.importc: "EEXIST", header: "<errno.h>".}: cint -when defined(unix): proc mkdir(dir: CString, theAccess: cint): cint {. - importc: "mkdir", header: dirHeader.} + importc: "mkdir", header: "<sys/stat.h>".} proc realpath(name, resolved: CString): CString {. importc: "realpath", header: "<stdlib.h>".} proc getcwd(buf: CString, buflen: cint): CString {. importc: "getcwd", header: "<unistd.h>".} -elif defined(windows): - proc mkdir(dir: CString): cint {. - importc: "mkdir", header: dirHeader.} - proc fullpath(buffer, file: CString, size: int): CString {. - importc: "_fullpath", header: "<stdlib.h>".} - proc getcwd(buf: CString, buflen: cint): CString {. - importc: cunder & "getcwd", header: "<direct.h>".} + proc chdir(path: CString): cint {. + importc: "chdir", header: "<unistd.h>".} + proc rmdir(dir: CString): cint {. + importc: "rmdir", header: "<unistd.h>".} - proc CreateDirectory(pathName: cstring, security: Pointer): cint {. - importc: "CreateDirectory", header: "<windows.h>".} - proc GetLastError(): cint {.importc, header: "<windows.h>".} + # is in <stdlib.h>: + proc cputenv(env: CString): cint {.importc: "putenv", noDecl.} + +elif defined(windows): + proc GetCurrentDirectoryA(nBufferLength: int32, lpBuffer: cstring): int32 {. + importc, dynlib: "kernel32", stdcall.} + proc SetCurrentDirectoryA(lpPathName: cstring): int32 {. + importc, dynlib: "kernel32", stdcall.} + proc CreateDirectoryA(pathName: cstring, security: Pointer): int32 {. + importc: "CreateDirectoryA", dynlib: "kernel32", stdcall.} + proc RemoveDirectoryA(lpPathName: cstring): int32 {. + importc, dynlib: "kernel32", stdcall.} + proc SetEnvironmentVariableA(lpName, lpValue: cstring): int32 {. + stdcall, dynlib: "kernel32", importc.} else: {.error: "os library not ported to your OS. Please help!".} -proc rmdir(dir: CString): cint {. - importc: cunder & "rmdir", header: "<time.h>".} - # rmdir is of course in ``dirHeader``, but we check here to include - # time.h which is needed for stat(). stat() needs time.h and - # sys/stat.h; we workaround a C library issue here. -proc free(c: cstring) {.importc: "free", nodecl.} - # some C procs return a buffer that has to be freed with free(), - # so we define it here -proc strlen(str: CString): int {.importc: "strlen", nodecl.} +when defined(unix): + proc free(c: cstring) {.importc: "free", nodecl.} + # some C procs return a buffer that has to be freed with free(), + # so we define it here + proc strlen(str: CString): int {.importc: "strlen", nodecl.} proc stat(f: CString, res: var TStat): cint {. - importc: cunder & "stat", header: "<sys/stat.h>".} + importc: cunder & "stat", header: "<time.h>".} + # stat is of course in ``<sys/stat.h>``, but I include + # time.h which is needed for stat() too. stat() needs both time.h and + # sys/stat.h. when defined(windows): - proc getModuleFilename(handle: int32, buf: CString, size: int32): int32 {. - importc: "GetModuleFileName", header: "<windows.h>".} + proc GetModuleFileNameA(handle: int32, buf: CString, size: int32): int32 {. + importc, dynlib: "kernel32", stdcall.} proc getLastModificationTime(file: string): TTime = var @@ -452,11 +511,12 @@ proc getLastModificationTime(file: string): TTime = return res.st_mtime proc setCurrentDir(newDir: string) = - if chdir(newDir) != 0: - raise newException(EOS, "cannot change the working directory to '$1'" % - newDir) + when defined(Windows): + if SetCurrentDirectoryA(newDir) == 0'i32: OSError() + else: + if chdir(newDir) != 0'i32: OSError() -when defined(linux) or defined(solaris) or defined(bsd): +when defined(linux) or defined(solaris) or defined(bsd) or defined(aix): proc readlink(link, buf: cstring, size: int): int {. header: "<unistd.h>", cdecl.} @@ -487,14 +547,14 @@ proc getApplicationFilename(): string = # /proc/<pid>/file when defined(windows): result = newString(256) - var len = getModuleFileName(0, result, 256) + var len = getModuleFileNameA(0, result, 256) setlen(result, int(len)) - elif defined(linux): + elif defined(linux) or defined(aix): result = getApplAux("/proc/self/exe") elif defined(solaris): result = getApplAux("/proc/" & $getpid() & "/path/a.out") elif defined(bsd): - result = getApplAux("/proc/" & $getpid() & "file") + result = getApplAux("/proc/" & $getpid() & "/file") elif defined(macosx): var size: int32 getExecPath1(nil, size) @@ -513,20 +573,22 @@ proc getApplicationFilename(): string = var x = joinPath(p, result) if ExistsFile(x): return x -{.push warnings: off.} proc getApplicationDir(): string = var tail: string splitPath(getApplicationFilename(), result, tail) -{.pop.} proc getCurrentDir(): string = - const - bufsize = 512 # should be enough + const bufsize = 512 # should be enough result = newString(bufsize) - if getcwd(result, bufsize) != nil: - setlen(result, strlen(result)) + when defined(windows): + var L = GetCurrentDirectoryA(bufsize, result) + if L == 0'i32: OSError() + setLen(result, L) else: - raise newException(EOS, "getcwd failed") + if getcwd(result, bufsize) != nil: + setlen(result, strlen(result)) + else: + OSError() proc JoinPath(head, tail: string): string = if len(head) == 0: @@ -617,46 +679,65 @@ proc AppendFileExt(filename, ext: string): string = proc csystem(cmd: CString): cint {.importc: "system", noDecl.} # is in <stdlib.h>! -when defined(wcc): - # everywhere it is in <stdlib.h>, except for Watcom C ... - proc cputenv(env: CString): cint {.importc: "putenv", header: "<process.h>".} - -else: # is in <stdlib.h> - proc cputenv(env: CString): cint {.importc: cunder & "putenv", noDecl.} - proc cgetenv(env: CString): CString {.importc: "getenv", noDecl.} -#long _findfirst(char *, struct _finddata_t *); -#int _findnext(long, struct _finddata_t *); -#int _findclose(long); when defined(windows): + const + FILE_ATTRIBUTE_DIRECTORY = 16 + MAX_PATH = 260 type - TFindData {.importc: "struct _finddata_t", final.} = object - attrib {.importc: "attrib".}: cint - time_create {.importc: "time_create".}: cint - time_access {.importc: "time_access".}: cint - time_write {.importc: "time_write".}: cint - size {.importc: "size".}: cint - name {.importc: "name".}: array[0..259, char] - - proc findfirst(pathname: CString, f: ptr TFindData): cint {. - importc: "_findfirst", header: "<io.h>".} - proc findnext(handle: cint, f: ptr TFindData): cint {. - importc: "_findnext", header: "<io.h>".} - proc findclose(handle: cint) {.importc: "_findclose", header: "<io.h>".} + HANDLE = int + FILETIME {.pure.} = object + dwLowDateTime: int32 + dwHighDateTime: int32 + TWIN32_FIND_DATA {.pure.} = object + dwFileAttributes: int32 + ftCreationTime: FILETIME + ftLastAccessTime: FILETIME + ftLastWriteTime: FILETIME + nFileSizeHigh: int32 + nFileSizeLow: int32 + dwReserved0: int32 + dwReserved1: int32 + cFileName: array[0..(MAX_PATH) - 1, char] + cAlternateFileName: array[0..13, char] + proc FindFirstFileA(lpFileName: cstring, + lpFindFileData: var TWIN32_FIND_DATA): HANDLE {. + stdcall, dynlib: "kernel32", importc: "FindFirstFileA".} + proc FindNextFileA(hFindFile: HANDLE, + lpFindFileData: var TWIN32_FIND_DATA): int32 {. + stdcall, dynlib: "kernel32", importc: "FindNextFileA".} + proc FindClose(hFindFile: HANDLE) {.stdcall, dynlib: "kernel32", + importc: "FindClose".} + + proc GetFullPathNameA(lpFileName: cstring, nBufferLength: int32, + lpBuffer: cstring, lpFilePart: var cstring): int32 {. + stdcall, dynlib: "kernel32", importc.} + proc GetFileAttributesA(lpFileName: cstring): int32 {. + stdcall, dynlib: "kernel32", importc.} + else: type - TFindData {.importc: "glob_t", final.} = object + TDIR {.importc: "DIR", header: "<dirent.h>", pure.} = object + TDirent {.importc: "struct dirent", header: "<dirent.h>", pure.} = object + d_name: array [0..255, char] + + proc opendir(dir: cstring): ptr TDIR {.importc, header: "<dirent.h>".} + proc closedir(dir: ptr TDIR) {.importc, header: "<dirent.h>".} + proc readdir(dir: ptr TDIR): ptr TDirent {.importc, header: "<dirent.h>".} + + type + TGlob {.importc: "glob_t", header: "<glob.h>", final, pure.} = object gl_pathc: int # count of paths matched by pattern - gl_pathv: ptr array[0..1000_000, CString] # list of matched path names + gl_pathv: cstringArray # list of matched path names gl_offs: int # slots to reserve at beginning of gl_pathv - PFindData = ptr TFindData + PGlob = ptr TGlob proc glob(pattern: cstring, flags: cint, errfunc: pointer, - pglob: PFindData): cint {. + pglob: PGlob): cint {. importc: "glob", header: "<glob.h>".} - proc globfree(pglob: PFindData) {. + proc globfree(pglob: PGlob) {. importc: "globfree", header: "<glob.h>".} proc sameFile*(path1, path2: string): bool = @@ -665,132 +746,149 @@ proc sameFile*(path1, path2: string): bool = ## Raises an exception if an os.stat() call on either pathname fails. when defined(Windows): var - a, b: TFindData - var resA = findfirst(path1, addr(a)) - var resB = findfirst(path2, addr(b)) + a, b: TWin32FindData + var resA = findfirstFileA(path1, a) + var resB = findfirstFileA(path2, b) if resA != -1 and resB != -1: - result = $a.name == $b.name + result = $a.cFileName == $b.cFileName else: - # work around some ``findfirst`` bugs + # work around some ``findfirstFileA`` bugs result = cmpPaths(path1, path2) == 0 if resA != -1: findclose(resA) if resB != -1: findclose(resB) else: var a, b: TStat - if stat(path1, a) < 0 or stat(path2, b) < 0: + if stat(path1, a) < 0'i32 or stat(path2, b) < 0'i32: result = cmpPaths(path1, path2) == 0 # be consistent with Windows else: - result = int(a.st_dev) == b.st_dev and int(a.st_ino) == b.st_ino + result = a.st_dev == b.st_dev and a.st_ino == b.st_ino +proc sameFileContent*(path1, path2: string): bool = + ## Returns True if both pathname arguments refer to files with identical + ## content. Content is compared byte for byte. + const + bufSize = 8192 # 8K buffer + var + a, b: TFile + if not openFile(a, path1): return false + if not openFile(b, path2): + closeFile(a) + return false + var bufA = alloc(bufsize) + var bufB = alloc(bufsize) + while True: + var readA = readBuffer(a, bufA, bufsize) + var readB = readBuffer(b, bufB, bufsize) + if readA != readB: + result = false + break + if readA == 0: + result = true + break + result = equalMem(bufA, bufB, readA) + if not result: break + if readA != bufSize: break # end of file + dealloc(bufA) + dealloc(bufB) + closeFile(a) + closeFile(b) + +# Ansi C has these: proc cremove(filename: CString): cint {.importc: "remove", noDecl.} proc crename(oldname, newname: CString): cint {.importc: "rename", noDecl.} when defined(Windows): - proc cCopyFile(lpExistingFileName, lpNewFileName: CString, + proc CopyFileA(lpExistingFileName, lpNewFileName: CString, bFailIfExists: cint): cint {. - importc: "CopyFile", header: "<windows.h>".} - # cMoveFile(lpExistingFileName, lpNewFileName: CString): int - # {.importc: "MoveFile", noDecl, header: "<winbase.h>".} - # cRemoveFile(filename: CString, cmo: int) - # {.importc: "DeleteFile", noDecl, header: "<winbase.h>".} + importc, stdcall, dynlib: "kernel32".} + proc copyFile(dest, source: string) = + if CopyFileA(source, dest, 0'i32) == 0'i32: OSError() + else: - # generic version of cCopyFile which works for any platform: - proc cCopyFile(lpExistingFileName, lpNewFileName: CString, - bFailIfExists: cint): cint = + # generic version of copyFile which works for any platform: + proc copyFile(dest, source: string) = const bufSize = 8192 # 8K buffer var - dest, src: TFile - if not openFile(src, $lpExistingFilename): return -1 - if not openFile(dest, $lpNewFilename, fmWrite): - closeFile(src) - return -1 + d, s: TFile + if not openFile(s, source): OSError() + if not openFile(d, dest, fmWrite): + closeFile(s) + OSError() var buf: Pointer = alloc(bufsize) bytesread, byteswritten: int while True: - bytesread = readBuffer(src, buf, bufsize) - byteswritten = writeBuffer(dest, buf, bytesread) + bytesread = readBuffer(s, buf, bufsize) + byteswritten = writeBuffer(d, buf, bytesread) if bytesread != bufSize: break - if byteswritten == bytesread: result = 0 - else: result = -1 + if bytesread != bytesWritten: OSError() dealloc(buf) - closeFile(src) - closeFile(dest) - + closeFile(s) + closeFile(d) proc moveFile(dest, source: string) = - if crename(source, dest) != 0: - raise newException(EOS, "cannot move file from '$1' to '$2'" % - [source, dest]) - -proc copyFile(dest, source: string) = - if cCopyFile(source, dest, 0) != 0: - raise newException(EOS, "cannot copy file from '$1' to '$2'" % - [source, dest]) + if crename(source, dest) != 0'i32: OSError() proc removeFile(file: string) = - if cremove(file) != 0: - raise newException(EOS, "cannot remove file '$1'" % file) + if cremove(file) != 0'i32: OSError() proc removeDir(dir: string) = - if rmdir(dir) != 0: - raise newException(EOS, "cannot remove directory '$1'" % dir) + when defined(windows): + if RemoveDirectoryA(dir) == 0'i32: OSError() + else: + if rmdir(dir) != 0'i32: OSError() -proc createDir(dir: string) = +proc rawCreateDir(dir: string) = when defined(unix): - if mkdir(dir, 0o711) != 0 and int(errno) != EEXIST: - raise newException(EOS, "cannot create directory '$1'" % dir) + if mkdir(dir, 0o711) != 0'i32 and errno != EEXIST: + OSError() else: - if CreateDirectory(dir, nil) == 0 and GetLastError() != 183: - raise newException(EOS, "cannot create directory '$1'" % dir) - -proc existsDir(dir: string): bool = - var safe = getCurrentDir() - # just try to set the current dir to dir; if it works, it must exist: - result = chdir(dir) == 0 - if result: - setCurrentDir(safe) # set back to the old working directory + if CreateDirectoryA(dir, nil) == 0'i32 and GetLastError() != 183'i32: + OSError() -proc executeProcess(command: string): int = - return csystem(command) # XXX: do this without shell +proc createDir(dir: string) = + for i in 0.. dir.len-1: + if dir[i] in {dirsep, altsep}: rawCreateDir(copy(dir, 0, i-1)) + rawCreateDir(dir) proc executeShellCommand(command: string): int = return csystem(command) var envComputed: bool = false - environment {.noStatic.}: seq[string] = [] + environment: seq[string] = @[] when defined(windows): # because we support Windows GUI applications, things get really # messy here... - proc GetEnvironmentStrings(): Pointer {. - importc: "GetEnvironmentStrings", header: "<windows.h>".} - proc FreeEnvironmentStrings(env: Pointer) {. - importc: "FreeEnvironmentStrings", header: "<windows.h>".} + proc GetEnvironmentStringsA*(): cstring {. + stdcall, dynlib: "kernel32", importc.} + proc FreeEnvironmentStringsA*(para1: cstring): int32 {. + stdcall, dynlib: "kernel32", importc.} + proc strEnd(cstr: CString, c = 0): CString {.importc: "strchr", nodecl.} - proc getEnvVarsC() {.noStatic.} = + proc getEnvVarsC() = if not envComputed: var - env = cast[CString](getEnvironmentStrings()) + env = getEnvironmentStringsA() e = env if e == nil: return # an error occured while True: var eend = strEnd(e) - add environment, $e + add(environment, $e) e = cast[CString](cast[TAddress](eend)+1) if eend[1] == '\0': break envComputed = true - FreeEnvironmentStrings(env) + discard FreeEnvironmentStringsA(env) else: var gEnv {.importc: "gEnv".}: ptr array [0..10_000, CString] - proc getEnvVarsC() {.noStatic.} = + proc getEnvVarsC() = # retrieves the variables of char** env of C's main proc if not envComputed: var @@ -840,8 +938,12 @@ proc putEnv(key, val: string) = else: add environment, (key & '=' & val) indx = high(environment) - if cputenv(environment[indx]) != 0: - raise newException(EOS, "attempt to set an invalid environment variable") + when defined(unix): + if cputenv(environment[indx]) != 0'i32: + OSError() + else: + if SetEnvironmentVariableA(key, val) == 0'i32: + OSError() iterator walkFiles*(pattern: string): string = ## Iterate over all the files that match the `pattern`. @@ -850,34 +952,108 @@ iterator walkFiles*(pattern: string): string = ## notation is supported. when defined(windows): var - f: TFindData + f: TWin32FindData res: int - res = findfirst(pattern, addr(f)) + res = findfirstFileA(pattern, f) if res != -1: while true: - yield $f.name - if int(findnext(res, addr(f))) == -1: break + if f.cFileName[0] != '.': + yield extractDir(pattern) / extractFilename($f.cFileName) + if findnextFileA(res, f) == 0'i32: break findclose(res) else: # here we use glob var - f: TFindData + f: TGlob res: int f.gl_offs = 0 f.gl_pathc = 0 f.gl_pathv = nil res = glob(pattern, 0, nil, addr(f)) - if res != 0: raise newException(EOS, "walkFiles() failed") - for i in 0.. f.gl_pathc - 1: - assert(f.gl_pathv[i] != nil) - yield $f.gl_pathv[i] + if res == 0: + for i in 0.. f.gl_pathc - 1: + assert(f.gl_pathv[i] != nil) + yield $f.gl_pathv[i] globfree(addr(f)) -{.push warnings:off.} +type + TPathComponent* = enum ## Enumeration specifying a path component. + pcFile, ## path refers to a file + pcLinkToFile, ## path refers to a symbolic link to a file + pcDirectory, ## path refers to a directory + pcLinkToDirectory ## path refers to a symbolic link to a directory + +when defined(posix): + proc S_ISDIR(m: int16): bool {.importc, header: "<sys/stat.h>".} + proc S_ISLNK(m: int16): bool {.importc, header: "<sys/stat.h>".} + proc S_ISREG(m: int16): bool {.importc, header: "<sys/stat.h>".} + +iterator walkDir*(dir: string): tuple[kind: TPathComponent, path: string] = + ## walks over the directory `dir` and yields for each directory or file in + ## `dir`. The component type and full path for each item is returned. + ## Walking is not recursive. + ## Example: Assuming this directory structure:: + ## dirA / dirB / fileB1.txt + ## / dirC + ## / fileA1.txt + ## / fileA2.txt + ## + ## and this code: + ## + ## .. code-block:: Nimrod + ## for kind, path in walkDir("dirA"): + ## echo(path) + ## + ## produces this output (though not necessarily in this order!):: + ## dirA/dirB + ## dirA/dirC + ## dirA/fileA1.txt + ## dirA/fileA2.txt + when defined(windows): + var f: TWIN32_Find_Data + var h = findfirstFileA(dir / "*", f) + if h != -1: + while true: + var k = pcFile + if f.cFilename[0] != '.': + if (int(f.dwFileAttributes) and FILE_ATTRIBUTE_DIRECTORY) != 0: + k = pcDirectory + yield (k, dir / extractFilename($f.cFilename)) + if findnextFileA(h, f) == 0'i32: break + findclose(h) + else: + var d = openDir(dir) + if d != nil: + while true: + var x = readDir(d) + if x == nil: break + var y = $x.d_name + if y != "." and y != "..": + var s: TStat + y = dir / y + if stat(y, s) < 0'i32: break + var k = pcFile + if S_ISDIR(s.st_mode): k = pcDirectory + if S_ISLNK(s.st_mode): k = succ(k) + yield (k, y) + closeDir(d) + proc ExistsFile(filename: string): bool = - var - res: TStat - return stat(filename, res) >= 0 -{.pop.} + when defined(windows): + var a = GetFileAttributesA(filename) + if a != -1: + result = (a and FILE_ATTRIBUTE_DIRECTORY) == 0 + else: + var res: TStat + return stat(filename, res) >= 0'i32 and S_ISREG(res.st_mode) + +proc existsDir(dir: string): bool = + when defined(windows): + var a = GetFileAttributesA(dir) + if a != -1: + result = (a and FILE_ATTRIBUTE_DIRECTORY) != 0 + else: + var res: TStat + return stat(dir, res) >= 0'i32 and S_ISDIR(res.st_mode) proc cmpPaths(pathA, pathB: string): int = if FileSystemCaseSensitive: @@ -886,29 +1062,56 @@ proc cmpPaths(pathA, pathB: string): int = result = cmpIgnoreCase(pathA, pathB) proc extractDir(path: string): string = - var - tail: string - splitPath(path, result, tail) + if path[path.len-1] in {dirSep, altSep}: + result = path + else: + var tail: string + splitPath(path, result, tail) proc extractFilename(path: string): string = - var - head: string - splitPath(path, head, result) + if path[path.len-1] in {dirSep, altSep}: + result = "" + else: + var head: string + splitPath(path, head, result) proc expandFilename(filename: string): string = # returns the full path of 'filename'; "" on error - var - res: CString - when defined(unix): - res = realpath(filename, nil) - else: - res = fullpath(nil, filename, 0) - if res == nil: - result = "" # an error occured + when defined(windows): + var unused: cstring + result = newString(3072) + var L = GetFullPathNameA(filename, 3072'i32, result, unused) + if L <= 0'i32 or L >= 3072'i32: OSError() + setLen(result, L) else: + var res = realpath(filename, nil) + if res == nil: OSError() result = $res free(res) +proc parseCmdLine*(c: string): seq[string] = + ## Splits a command line into several components; components are separated by + ## whitespace or are quoted with the ``"`` or ``'`` characters. This proc is + ## only occassionally useful, better use the `parseopt` module. + result = @[] + var i = 0 + while c[i] != '\0': + var a = "" + while c[i] >= '\1' and c[i] <= ' ': inc(i) # skip whitespace + case c[i] + of '\'', '\"': + var delim = c[i] + inc(i) # skip ' or " + while c[i] != '\0' and c[i] != delim: + add a, c[i] + inc(i) + if c[i] != '\0': inc(i) + else: + while c[i] > ' ': + add(a, c[i]) + inc(i) + add(result, a) + when defined(windows): proc GetHomeDir(): string = return getEnv("USERPROFILE") & "\\" proc GetConfigDir(): string = return getEnv("APPDATA") & "\\" @@ -918,51 +1121,22 @@ when defined(windows): # command line arguments. The way to get them differs. Thus we parse them # ourselves. This has the additional benefit that the program's behaviour # is always the same -- independent of the used C compiler. - proc GetCommandLine(): CString {. - importc: "GetCommandLine", header: "<windows.h>".} + proc GetCommandLineA(): CString {.importc, stdcall, dynlib: "kernel32".} var - ownArgc: int = -1 - ownArgv: seq[string] = [] - - proc parseCmdLine() = - if ownArgc != -1: return # already processed - var - i = 0 - j = 0 - c = getCommandLine() - ownArgc = 0 - while c[i] != '\0': - var a = "" - while c[i] >= '\1' and c[i] <= ' ': inc(i) # skip whitespace - case c[i] - of '\'', '\"': - var delim = c[i] - inc(i) # skip ' or " - while c[i] != '\0' and c[i] != delim: - add a, c[i] - inc(i) - if c[i] != '\0': inc(i) - else: - while c[i] > ' ': - add a, c[i] - inc(i) - add ownArgv, a - inc(ownArgc) + ownArgv: seq[string] proc paramStr(i: int): string = - parseCmdLine() - if i < ownArgc and i >= 0: - return ownArgv[i] - raise newException(EInvalidIndex, "invalid index") + if isNil(ownArgv): ownArgv = parseCmdLine($getCommandLineA()) + return ownArgv[i] proc paramCount(): int = - parseCmdLine() - result = ownArgc-1 + if isNil(ownArgv): ownArgv = parseCmdLine($getCommandLineA()) + result = ownArgv.len-1 else: proc GetHomeDir(): string = return getEnv("HOME") & "/" - proc GetConfigDir(): string = return getEnv("HOME") & "/" + proc GetConfigDir(): string = return getEnv("HOME") & "/.config/" var cmdCount {.importc: "cmdCount".}: int diff --git a/lib/parsecfg.nim b/lib/parsecfg.nim index 96305349e..a148f3e3a 100644 --- a/lib/parsecfg.nim +++ b/lib/parsecfg.nim @@ -25,7 +25,7 @@ import - hashes, strutils, lexbase + hashes, strutils, lexbase, streams type TCfgEventKind* = enum ## enumation of all events that may occur when parsing @@ -37,7 +37,7 @@ type TCfgEvent* = object of TObject ## describes a parsing event case kind*: TCfgEventKind ## the kind of the event - of cfgEof: dummy: string + of cfgEof: nil of cfgSectionStart: section*: string ## `section` contains the name of the ## parsed section start (syntax: ``[section]``) @@ -59,21 +59,18 @@ type literal: string # the parsed (string) literal TParserState = enum - startState, commaState + startState # , commaState # not yet used TCfgParser* = object of TBaseLexer ## the parser object. tok: TToken state: TParserState filename: string -proc Open*(c: var TCfgParser, filename: string): bool - ## initializes the parser, open the file for reading and returns true if - ## successful (the file has been found). - -proc OpenFromBuffer*(c: var TCfgParser, buf: string) - ## initializes the parser with a buffer. This cannot fail. +proc open*(c: var TCfgParser, input: PStream, filename: string) + ## initializes the parser with an input stream. `Filename` is only used + ## for nice error messages. proc close*(c: var TCfgParser) - ## closes the parser `c`. + ## closes the parser `c` and its associated input stream. proc next*(c: var TCfgParser): TCfgEvent ## retrieves the first/next event. This controls the parser. @@ -87,6 +84,10 @@ proc getLine*(c: TCfgParser): int proc getFilename*(c: TCfgParser): string ## get the filename of the file that the parser processes. +proc errorStr*(c: TCfgParser, msg: string): string + ## returns a properly formated error message containing current line and + ## column information. + # implementation @@ -94,24 +95,16 @@ const SymChars: TCharSet = {'a'..'z', 'A'..'Z', '0'..'9', '_', '\x80'..'\xFF'} proc rawGetTok(c: var TCfgParser, tok: var TToken) -proc open(c: var TCfgParser, filename: string): bool = - result = initBaseLexer(c, filename) +proc open(c: var TCfgParser, input: PStream, filename: string) = + lexbase.open(c, input) c.filename = filename c.state = startState c.tok.kind = tkInvalid c.tok.literal = "" - if result: rawGetTok(c, c.tok) - -proc openFromBuffer(c: var TCfgParser, buf: string) = - initBaseLexerFromBuffer(c, buf) - c.filename = "buffer" - c.state = startState - c.tok.kind = tkInvalid - c.tok.literal = "" rawGetTok(c, c.tok) - + proc close(c: var TCfgParser) = - deinitBaseLexer(c) + lexbase.close(c) proc getColumn(c: TCfgParser): int = result = getColNumber(c, c.bufPos) @@ -285,6 +278,7 @@ proc rawGetTok(c: var TCfgParser, tok: var TToken) = of '=': tok.kind = tkEquals inc(c.bufpos) + tok.literal = "=" of '-': inc(c.bufPos) if c.buf[c.bufPos] == '-': inc(c.bufPos) @@ -312,6 +306,7 @@ proc rawGetTok(c: var TCfgParser, tok: var TToken) = getString(c, tok, false) of lexbase.EndOfFile: tok.kind = tkEof + tok.literal = "[EOF]" else: getSymbol(c, tok) proc errorStr(c: TCfgParser, msg: string): string = diff --git a/lib/posix/posix.nim b/lib/posix/posix.nim index 35fe0a0df..38677420d 100644 --- a/lib/posix/posix.nim +++ b/lib/posix/posix.nim @@ -1,7 +1,7 @@ # # # Nimrod's Runtime Library -# (c) Copyright 2006 Andreas Rumpf +# (c) Copyright 2008 Andreas Rumpf # # See the file "copying.txt", included in this # distribution, for details about the copyright. @@ -20,13 +20,17 @@ ## ALL types are named the same as in the POSIX standard except that they start ## with 'T' or 'P' (if they are pointers) and without the '_t' prefix to be ## consistent with Nimrod conventions. If an identifier is a Nimrod keyword -## the `identifier` notation is used. +## the \`identifier\` notation is used. ## ## This library relies on the header files of your C compiler. Thus the ## resulting C code will just include <XYZ.h> and *not* define the ## symbols declared here. const + hasSpawnH = defined(linux) + hasAioH = defined(linux) + +const C_IRUSR* = 0c000400 ## Read by owner. C_IWUSR* = 0c000200 ## Write by owner. C_IXUSR* = 0c000100 ## Execute by owner. @@ -55,28 +59,19 @@ const MM_NULLACT* = nil MM_NULLTAG* = nil - STDERR_FILENO = 2 ## File number of stderr; - STDIN_FILENO = 0 ## File number of stdin; - STDOUT_FILENO = 1 ## File number of stdout; + STDERR_FILENO* = 2 ## File number of stderr; + STDIN_FILENO* = 0 ## File number of stdin; + STDOUT_FILENO* = 1 ## File number of stdout; type - Taiocb* {.importc: "struct aiocb", header: "<aio.h>", final.} = object - aio_fildes*: cint ## File descriptor. - aio_offset*: TOff ## File offset. - aio_buf*: pointer ## Location of buffer. - aio_nbytes*: int ## Length of transfer. - aio_reqprio*: cint ## Request priority offset. - aio_sigevent*: TSigEvent ## Signal number and value. - aio_lio_opcode: cint ## Operation to be performed. - - TDIR* {.importc: "DIR", header: "<dirent.h>", final.} = object + TDIR* {.importc: "DIR", header: "<dirent.h>", final, pure.} = object ## A type representing a directory stream. - Tdirent* {.importc: "struct dirent", header: "<dirent.h>", final.} = object + Tdirent* {.importc: "struct dirent", header: "<dirent.h>", final, pure.} = object d_ino*: TIno ## File serial number. d_name*: array [0..255, char] ## Name of entry. - Tflock* {.importc: "flock", header: "<fcntl>", final.} = object + Tflock* {.importc: "flock", header: "<fcntl.h>", final, pure.} = object l_type*: cshort ## Type of lock; F_RDLCK, F_WRLCK, F_UNLCK. l_whence*: cshort ## Flag for starting offset. l_start*: Toff ## Relative offset in bytes. @@ -84,12 +79,12 @@ type l_pid*: TPid ## Process ID of the process holding the lock; ## returned with F_GETLK. - Tfenv* {.importc: "fenv_t", header: "<fenv.h>", final.} = + Tfenv* {.importc: "fenv_t", header: "<fenv.h>", final, pure.} = object ## Represents the entire floating-point environment. The ## floating-point environment refers collectively to any ## floating-point status flags and control modes supported ## by the implementation. - Tfexcept* {.importc: "fexcept_t", header: "<fenv.h>", final.} = + Tfexcept* {.importc: "fexcept_t", header: "<fenv.h>", final, pure.} = object ## Represents the floating-point status flags collectively, ## including any status the implementation associates with the ## flags. A floating-point status flag is a system variable @@ -100,25 +95,25 @@ type ## whose value may be set by the user to affect the subsequent ## behavior of floating-point arithmetic. - TFTW* {.importc: "struct FTW", header: "<ftw.h>", final.} = object + TFTW* {.importc: "struct FTW", header: "<ftw.h>", final, pure.} = object base*: cint level*: cint - TGlob* {.importc: "glob_t", header: "<glob.h>", final.} = object + TGlob* {.importc: "glob_t", header: "<glob.h>", final, pure.} = object gl_pathc*: int ## Count of paths matched by pattern. gl_pathv*: ptr cstring ## Pointer to a list of matched pathnames. gl_offs*: int ## Slots to reserve at the beginning of gl_pathv. - TGroup* {.importc: "struct group", header: "<grp.h>", final.} = object + TGroup* {.importc: "struct group", header: "<grp.h>", final, pure.} = object gr_name*: cstring ## The name of the group. gr_gid*: TGid ## Numerical group ID. gr_mem*: cstringArray ## Pointer to a null-terminated array of character ## pointers to member names. - Ticonv* {.importc: "iconv_t", header: "<iconv.h>", final.} = + Ticonv* {.importc: "iconv_t", header: "<iconv.h>", final, pure.} = object ## Identifies the conversion from one codeset to another. - Tlconv* {.importc: "struct lconv", header: "<locale.h>", final.} = object + Tlconv* {.importc: "struct lconv", header: "<locale.h>", final, pure.} = object currency_symbol*: cstring decimal_point*: cstring frac_digits*: char @@ -144,14 +139,14 @@ type p_sign_posn*: char thousands_sep*: cstring - TMqd* {.importc: "mqd_t", header: "<mqueue.h>", final.} = object - TMqAttr* {.importc: "struct mq_attr", header: "<mqueue.h>", final.} = object + TMqd* {.importc: "mqd_t", header: "<mqueue.h>", final, pure.} = object + TMqAttr* {.importc: "struct mq_attr", header: "<mqueue.h>", final, pure.} = object mq_flags*: int ## Message queue flags. mq_maxmsg*: int ## Maximum number of messages. mq_msgsize*: int ## Maximum message size. mq_curmsgs*: int ## Number of messages currently queued. - TPasswd* {.importc: "struct passwd", header: "<pwd.h>", final.} = object + TPasswd* {.importc: "struct passwd", header: "<pwd.h>", final, pure.} = object pw_name*: cstring ## User's login name. pw_uid*: TUid ## Numerical user ID. pw_gid*: TGid ## Numerical group ID. @@ -198,7 +193,7 @@ type Tuid* {.importc: "uid_t", header: "<sys/types.h>".} = int Tuseconds* {.importc: "useconds_t", header: "<sys/types.h>".} = int - Tutsname* {.importc: "struct utsname", header: "<sys/utsname.h>", final.} = object + Tutsname* {.importc: "struct utsname", header: "<sys/utsname.h>", final, pure.} = object sysname*, ## Name of this implementation of the operating system. nodename*, ## Name of this node within the communications ## network to which this node is attached, if any. @@ -207,15 +202,15 @@ type machine*: array [0..255, char] ## Name of the hardware type on which the ## system is running. - TSem* {.importc: "sem_t", header: "<semaphore.h>", final.} = object - Tipc_perm* {.importc: "struct ipc_perm", header: "<sys/ipc.h>", final.} = object + TSem* {.importc: "sem_t", header: "<semaphore.h>", final, pure.} = object + Tipc_perm* {.importc: "struct ipc_perm", header: "<sys/ipc.h>", final, pure.} = object uid*: tuid ## Owner's user ID. gid*: tgid ## Owner's group ID. cuid*: Tuid ## Creator's user ID. cgid*: Tgid ## Creator's group ID. mode*: TMode ## Read/write permission. - TStat* {.importc: "struct stat", header: "<sys/stat.h>", final.} = object + TStat* {.importc: "struct stat", header: "<sys/stat.h>", final, pure.} = object st_dev*: TDev ## Device ID of device containing file. st_ino*: TIno ## File serial number. st_mode*: TMode ## Mode of file (see below). @@ -239,7 +234,7 @@ type st_blocks*: Tblkcnt ## Number of blocks allocated for this object. - TStatvfs* {.importc: "struct statvfs", header: "<sys/statvfs.h>", final.} = object + TStatvfs* {.importc: "struct statvfs", header: "<sys/statvfs.h>", final, pure.} = object f_bsize*: int ## File system block size. f_frsize*: int ## Fundamental file system block size. f_blocks*: Tfsblkcnt ## Total number of blocks on file system in units of f_frsize. @@ -255,10 +250,10 @@ type f_namemax*: int ## Maximum filename length. Tposix_typed_mem_info* {.importc: "struct posix_typed_mem_info", - header: "<sys/mman.h>", final.} = object + header: "<sys/mman.h>", final, pure.} = object posix_tmi_length*: int - Ttm* {.importc: "struct tm", header: "<time.h>", final.} = object + Ttm* {.importc: "struct tm", header: "<time.h>", final, pure.} = object tm_sec*: cint ## Seconds [0,60]. tm_min*: cint ## Minutes [0,59]. tm_hour*: cint ## Hour [0,23]. @@ -268,10 +263,10 @@ type tm_wday*: cint ## Day of week [0,6] (Sunday =0). tm_yday*: cint ## Day of year [0,365]. tm_isdst*: cint ## Daylight Savings flag. - Ttimespec* {.importc: "struct timespec", header: "<time.h>", final.} = object + Ttimespec* {.importc: "struct timespec", header: "<time.h>", final, pure.} = object tv_sec*: Ttime ## Seconds. tv_nsec*: int ## Nanoseconds. - titimerspec* {.importc: "struct itimerspec", header: "<time.h>", final.} = object + titimerspec* {.importc: "struct itimerspec", header: "<time.h>", final, pure.} = object it_interval*: ttimespec ## Timer period. it_value*: ttimespec ## Timer expiration. @@ -279,19 +274,19 @@ type ## Possibly volatile-qualified integer type of an object that can be ## accessed as an atomic entity, even in the presence of asynchronous ## interrupts. - Tsigset* {.importc: "sigset_t", header: "<signal.h>", final.} = object + Tsigset* {.importc: "sigset_t", header: "<signal.h>", final, pure.} = object - TsigEvent* {.importc: "struct sigevent", header: "<signal.h>", final.} = object + TsigEvent* {.importc: "struct sigevent", header: "<signal.h>", final, pure.} = object sigev_notify*: cint ## Notification type. sigev_signo*: cint ## Signal number. sigev_value*: Tsigval ## Signal value. sigev_notify_function*: proc (x: TSigval) {.noconv.} ## Notification function. sigev_notify_attributes*: ptr Tpthreadattr ## Notification attributes. - TsigVal* {.importc: "union sigval", header: "<signal.h>", final.} = object + TsigVal* {.importc: "union sigval", header: "<signal.h>", final, pure.} = object sival_ptr*: pointer ## pointer signal value; ## integer signal value not defined! - TSigaction* {.importc: "struct sigaction", header: "<signal.h>", final.} = object + TSigaction* {.importc: "struct sigaction", header: "<signal.h>", final, pure.} = object sa_handler*: proc (x: cint) {.noconv.} ## Pointer to a signal-catching ## function or one of the macros ## SIG_IGN or SIG_DFL. @@ -300,16 +295,16 @@ type sa_flags*: cint ## Special flags. sa_sigaction*: proc (x: cint, y: var TSigInfo, z: pointer) {.noconv.} - TStack* {.importc: "stack_t", header: "<signal.h>", final.} = object + TStack* {.importc: "stack_t", header: "<signal.h>", final, pure.} = object ss_sp*: pointer ## Stack base or pointer. ss_size*: int ## Stack size. ss_flags*: cint ## Flags. - TSigStack* {.importc: "struct sigstack", header: "<signal.h>", final.} = object + TSigStack* {.importc: "struct sigstack", header: "<signal.h>", final, pure.} = object ss_onstack*: cint ## Non-zero when signal stack is in use. ss_sp*: pointer ## Signal stack pointer. - TsigInfo* {.importc: "siginfo_t", header: "<signal.h>", final.} = object + TsigInfo* {.importc: "siginfo_t", header: "<signal.h>", final, pure.} = object si_signo*: cint ## Signal number. si_code*: cint ## Signal code. si_errno*: cint ## If non-zero, an errno value associated with @@ -324,7 +319,7 @@ type Tnl_item* {.importc: "nl_item", header: "<nl_types.h>".} = cint Tnl_catd* {.importc: "nl_catd", header: "<nl_types.h>".} = cint - Tsched_param* {.importc: "struct sched_param", header: "<sched.h>", final.} = object + Tsched_param* {.importc: "struct sched_param", header: "<sched.h>", final, pure.} = object sched_priority*: cint sched_ss_low_priority*: cint ## Low scheduling priority for ## sporadic server. @@ -334,15 +329,12 @@ type sched_ss_max_repl*: cint ## Maximum pending replenishments for ## sporadic server. - Ttimeval* {.importc: "struct timeval", header: "<sys/select.h>", final.} = object + Ttimeval* {.importc: "struct timeval", header: "<sys/select.h>", final, pure.} = object tv_sec*: ttime ## Seconds. tv_usec*: tsuseconds ## Microseconds. - Tfd_set* {.importc: "struct fd_set", header: "<sys/select.h>", final.} = object - - Tposix_spawnattr* {.importc: "posix_spawnattr_t", header: "<spawn.h>".} = cint - Tposix_spawn_file_actions* {.importc: "posix_spawn_file_actions_t", header: "<spawn.h>".} = cint - Tmcontext* {.importc: "mcontext_t", header: "<ucontext.h>", final.} = object - Tucontext* {.importc: "ucontext_t", header: "<ucontext.h>", final.} = object + Tfd_set* {.importc: "struct fd_set", header: "<sys/select.h>", final, pure.} = object + Tmcontext* {.importc: "mcontext_t", header: "<ucontext.h>", final, pure.} = object + Tucontext* {.importc: "ucontext_t", header: "<ucontext.h>", final, pure.} = object uc_link*: ptr Tucontext ## Pointer to the context that is resumed ## when this context returns. uc_sigmask*: Tsigset ## The set of signals that are blocked when this @@ -351,35 +343,52 @@ type uc_mcontext*: Tmcontext ## A machine-specific representation of the saved ## context. +when hasAioH: + type + Taiocb* {.importc: "struct aiocb", header: "<aio.h>", final, pure.} = object + aio_fildes*: cint ## File descriptor. + aio_offset*: TOff ## File offset. + aio_buf*: pointer ## Location of buffer. + aio_nbytes*: int ## Length of transfer. + aio_reqprio*: cint ## Request priority offset. + aio_sigevent*: TSigEvent ## Signal number and value. + aio_lio_opcode: cint ## Operation to be performed. + +when hasSpawnH: + type + Tposix_spawnattr* {.importc: "posix_spawnattr_t", header: "<spawn.h>".} = cint + Tposix_spawn_file_actions* {.importc: "posix_spawn_file_actions_t", header: "<spawn.h>".} = cint # Constants as variables: -var - AIO_ALLDONE* {.importc, header: "<aio.h>".}: cint - ## A return value indicating that none of the requested operations - ## could be canceled since they are already complete. - AIO_CANCELED* {.importc, header: "<aio.h>".}: cint - ## A return value indicating that all requested operations have - ## been canceled. - AIO_NOTCANCELED* {.importc, header: "<aio.h>".}: cint - ## A return value indicating that some of the requested operations could - ## not be canceled since they are in progress. - LIO_NOP* {.importc, header: "<aio.h>".}: cint - ## A lio_listio() element operation option indicating that no transfer is - ## requested. - LIO_NOWAIT* {.importc, header: "<aio.h>".}: cint - ## A lio_listio() synchronization operation indicating that the calling - ## thread is to continue execution while the lio_listio() operation is - ## being performed, and no notification is given when the operation is - ## complete. - LIO_READ* {.importc, header: "<aio.h>".}: cint - ## A lio_listio() element operation option requesting a read. - LIO_WAIT* {.importc, header: "<aio.h>".}: cint - ## A lio_listio() synchronization operation indicating that the calling - ## thread is to suspend until the lio_listio() operation is complete. - LIO_WRITE* {.importc, header: "<aio.h>".}: cint - ## A lio_listio() element operation option requesting a write. +when hasAioH: + var + AIO_ALLDONE* {.importc, header: "<aio.h>".}: cint + ## A return value indicating that none of the requested operations + ## could be canceled since they are already complete. + AIO_CANCELED* {.importc, header: "<aio.h>".}: cint + ## A return value indicating that all requested operations have + ## been canceled. + AIO_NOTCANCELED* {.importc, header: "<aio.h>".}: cint + ## A return value indicating that some of the requested operations could + ## not be canceled since they are in progress. + LIO_NOP* {.importc, header: "<aio.h>".}: cint + ## A lio_listio() element operation option indicating that no transfer is + ## requested. + LIO_NOWAIT* {.importc, header: "<aio.h>".}: cint + ## A lio_listio() synchronization operation indicating that the calling + ## thread is to continue execution while the lio_listio() operation is + ## being performed, and no notification is given when the operation is + ## complete. + LIO_READ* {.importc, header: "<aio.h>".}: cint + ## A lio_listio() element operation option requesting a read. + LIO_WAIT* {.importc, header: "<aio.h>".}: cint + ## A lio_listio() synchronization operation indicating that the calling + ## thread is to suspend until the lio_listio() operation is complete. + LIO_WRITE* {.importc, header: "<aio.h>".}: cint + ## A lio_listio() element operation option requesting a write. +var RTLD_LAZY* {.importc, header: "<dlfcn.h>".}: cint ## Relocations are performed at an implementation-defined time. RTLD_NOW* {.importc, header: "<dlfcn.h>".}: cint @@ -1246,23 +1255,30 @@ var SCHED_OTHER* {.importc, header: "<sched.h>".}: cint FD_SETSIZE* {.importc, header: "<sys/select.h>".}: cint - POSIX_SPAWN_RESETIDS* {.importc, header: "<spawn.h>".}: cint - POSIX_SPAWN_SETPGROUP* {.importc, header: "<spawn.h>".}: cint - POSIX_SPAWN_SETSCHEDPARAM* {.importc, header: "<spawn.h>".}: cint - POSIX_SPAWN_SETSCHEDULER* {.importc, header: "<spawn.h>".}: cint - POSIX_SPAWN_SETSIGDEF* {.importc, header: "<spawn.h>".}: cint - POSIX_SPAWN_SETSIGMASK* {.importc, header: "<spawn.h>".}: cint - -proc aio_cancel*(a1: cint, a2: ptr Taiocb): cint {.importc, header: "<aio.h>".} -proc aio_error*(a1: ptr Taiocb): cint {.importc, header: "<aio.h>".} -proc aio_fsync*(a1: cint, a2: ptr Taiocb): cint {.importc, header: "<aio.h>".} -proc aio_read*(a1: ptr Taiocb): cint {.importc, header: "<aio.h>".} -proc aio_return*(a1: ptr Taiocb): int {.importc, header: "<aio.h>".} -proc aio_suspend*(a1: ptr ptr Taiocb, a2: cint, a3: ptr ttimespec): cint {. - importc, header: "<aio.h>".} -proc aio_write*(a1: ptr Taiocb): cint {.importc, header: "<aio.h>".} -proc lio_listio*(a1: cint, a2: ptr ptr Taiocb, a3: cint, - a4: ptr Tsigevent): cint {.importc, header: "<aio.h>".} + SEEK_SET* {.importc, header: "<unistd.h>".}: cint + SEEK_CUR* {.importc, header: "<unistd.h>".}: cint + SEEK_END* {.importc, header: "<unistd.h>".}: cint + +when hasSpawnh: + var + POSIX_SPAWN_RESETIDS* {.importc, header: "<spawn.h>".}: cint + POSIX_SPAWN_SETPGROUP* {.importc, header: "<spawn.h>".}: cint + POSIX_SPAWN_SETSCHEDPARAM* {.importc, header: "<spawn.h>".}: cint + POSIX_SPAWN_SETSCHEDULER* {.importc, header: "<spawn.h>".}: cint + POSIX_SPAWN_SETSIGDEF* {.importc, header: "<spawn.h>".}: cint + POSIX_SPAWN_SETSIGMASK* {.importc, header: "<spawn.h>".}: cint + +when hasAioH: + proc aio_cancel*(a1: cint, a2: ptr Taiocb): cint {.importc, header: "<aio.h>".} + proc aio_error*(a1: ptr Taiocb): cint {.importc, header: "<aio.h>".} + proc aio_fsync*(a1: cint, a2: ptr Taiocb): cint {.importc, header: "<aio.h>".} + proc aio_read*(a1: ptr Taiocb): cint {.importc, header: "<aio.h>".} + proc aio_return*(a1: ptr Taiocb): int {.importc, header: "<aio.h>".} + proc aio_suspend*(a1: ptr ptr Taiocb, a2: cint, a3: ptr ttimespec): cint {. + importc, header: "<aio.h>".} + proc aio_write*(a1: ptr Taiocb): cint {.importc, header: "<aio.h>".} + proc lio_listio*(a1: cint, a2: ptr ptr Taiocb, a3: cint, + a4: ptr Tsigevent): cint {.importc, header: "<aio.h>".} # arpa/inet.h proc htonl*(a1: int32): int32 {.importc, header: "<arpa/inet.h>".} @@ -1371,8 +1387,8 @@ proc mq_unlink*(a1: cstring): cint {.importc, header: "<mqueue.h>".} proc getpwnam*(a1: cstring): ptr TPasswd {.importc, header: "<pwd.h>".} proc getpwuid*(a1: Tuid): ptr TPasswd {.importc, header: "<pwd.h>".} -proc getpwnam_r(a1: cstring, a2: ptr Tpasswd, a3: cstring, a4: int, - a5: ptr ptr Tpasswd): cint {.importc, header: "<pwd.h>".} +proc getpwnam_r*(a1: cstring, a2: ptr Tpasswd, a3: cstring, a4: int, + a5: ptr ptr Tpasswd): cint {.importc, header: "<pwd.h>".} proc getpwuid_r*(a1: Tuid, a2: ptr Tpasswd, a3: cstring, a4: int, a5: ptr ptr Tpasswd): cint {.importc, header: "<pwd.h>".} proc endpwent*() {.importc, header: "<pwd.h>".} @@ -1771,46 +1787,47 @@ proc pselect*(a1: cint, a2, a3, a4: var Tfd_set, a5: var ttimespec, proc select*(a1: cint, a2, a3, a4: var Tfd_set, a5: var ttimeval): cint {. importc, header: "<sys/select.h>".} -proc posix_spawn*(a1: var tpid, a2: cstring, - a3: var Tposix_spawn_file_actions, - a4: var Tposix_spawnattr, a5, a6: cstringArray): cint {.importc, header: "<spawn.h>".} -proc posix_spawn_file_actions_addclose*(a1: var tposix_spawn_file_actions, - a2: cint): cint {.importc, header: "<spawn.h>".} -proc posix_spawn_file_actions_adddup2*(a1: var tposix_spawn_file_actions, - a2, a3: cint): cint {.importc, header: "<spawn.h>".} -proc posix_spawn_file_actions_addopen*(a1: var tposix_spawn_file_actions, - a2: cint, a3: cstring, a4: cint, a5: tmode): cint {.importc, header: "<spawn.h>".} -proc posix_spawn_file_actions_destroy*(a1: var tposix_spawn_file_actions): cint {.importc, header: "<spawn.h>".} -proc posix_spawn_file_actions_init*(a1: var tposix_spawn_file_actions): cint {.importc, header: "<spawn.h>".} -proc posix_spawnattr_destroy*(a1: var tposix_spawnattr): cint {.importc, header: "<spawn.h>".} -proc posix_spawnattr_getsigdefault*(a1: var tposix_spawnattr, - a2: var Tsigset): cint {.importc, header: "<spawn.h>".} -proc posix_spawnattr_getflags*(a1: var tposix_spawnattr, - a2: var cshort): cint {.importc, header: "<spawn.h>".} -proc posix_spawnattr_getpgroup*(a1: var tposix_spawnattr, - a2: var tpid): cint {.importc, header: "<spawn.h>".} -proc posix_spawnattr_getschedparam*(a1: var tposix_spawnattr, - a2: var tsched_param): cint {.importc, header: "<spawn.h>".} -proc posix_spawnattr_getschedpolicy*(a1: var tposix_spawnattr, - a2: var cint): cint {.importc, header: "<spawn.h>".} -proc posix_spawnattr_getsigmask*(a1: var tposix_spawnattr, - a2: var tsigset): cint {.importc, header: "<spawn.h>".} - -proc posix_spawnattr_init*(a1: var tposix_spawnattr): cint {.importc, header: "<spawn.h>".} -proc posix_spawnattr_setsigdefault*(a1: var tposix_spawnattr, - a2: var tsigset): cint {.importc, header: "<spawn.h>".} -proc posix_spawnattr_setflags*(a1: var tposix_spawnattr, a2: cshort): cint {.importc, header: "<spawn.h>".} -proc posix_spawnattr_setpgroup*(a1: var tposix_spawnattr, a2: tpid): cint {.importc, header: "<spawn.h>".} - -proc posix_spawnattr_setschedparam*(a1: var tposix_spawnattr, - a2: var tsched_param): cint {.importc, header: "<spawn.h>".} -proc posix_spawnattr_setschedpolicy*(a1: var tposix_spawnattr, a2: cint): cint {.importc, header: "<spawn.h>".} -proc posix_spawnattr_setsigmask*(a1: var tposix_spawnattr, - a2: var tsigset): cint {.importc, header: "<spawn.h>".} -proc posix_spawnp*(a1: var tpid, a2: cstring, - a3: var tposix_spawn_file_actions, - a4: var tposix_spawnattr, - a5, a6: cstringArray): cint {.importc, header: "<spawn.h>".} +when hasSpawnH: + proc posix_spawn*(a1: var tpid, a2: cstring, + a3: var Tposix_spawn_file_actions, + a4: var Tposix_spawnattr, a5, a6: cstringArray): cint {.importc, header: "<spawn.h>".} + proc posix_spawn_file_actions_addclose*(a1: var tposix_spawn_file_actions, + a2: cint): cint {.importc, header: "<spawn.h>".} + proc posix_spawn_file_actions_adddup2*(a1: var tposix_spawn_file_actions, + a2, a3: cint): cint {.importc, header: "<spawn.h>".} + proc posix_spawn_file_actions_addopen*(a1: var tposix_spawn_file_actions, + a2: cint, a3: cstring, a4: cint, a5: tmode): cint {.importc, header: "<spawn.h>".} + proc posix_spawn_file_actions_destroy*(a1: var tposix_spawn_file_actions): cint {.importc, header: "<spawn.h>".} + proc posix_spawn_file_actions_init*(a1: var tposix_spawn_file_actions): cint {.importc, header: "<spawn.h>".} + proc posix_spawnattr_destroy*(a1: var tposix_spawnattr): cint {.importc, header: "<spawn.h>".} + proc posix_spawnattr_getsigdefault*(a1: var tposix_spawnattr, + a2: var Tsigset): cint {.importc, header: "<spawn.h>".} + proc posix_spawnattr_getflags*(a1: var tposix_spawnattr, + a2: var cshort): cint {.importc, header: "<spawn.h>".} + proc posix_spawnattr_getpgroup*(a1: var tposix_spawnattr, + a2: var tpid): cint {.importc, header: "<spawn.h>".} + proc posix_spawnattr_getschedparam*(a1: var tposix_spawnattr, + a2: var tsched_param): cint {.importc, header: "<spawn.h>".} + proc posix_spawnattr_getschedpolicy*(a1: var tposix_spawnattr, + a2: var cint): cint {.importc, header: "<spawn.h>".} + proc posix_spawnattr_getsigmask*(a1: var tposix_spawnattr, + a2: var tsigset): cint {.importc, header: "<spawn.h>".} + + proc posix_spawnattr_init*(a1: var tposix_spawnattr): cint {.importc, header: "<spawn.h>".} + proc posix_spawnattr_setsigdefault*(a1: var tposix_spawnattr, + a2: var tsigset): cint {.importc, header: "<spawn.h>".} + proc posix_spawnattr_setflags*(a1: var tposix_spawnattr, a2: cshort): cint {.importc, header: "<spawn.h>".} + proc posix_spawnattr_setpgroup*(a1: var tposix_spawnattr, a2: tpid): cint {.importc, header: "<spawn.h>".} + + proc posix_spawnattr_setschedparam*(a1: var tposix_spawnattr, + a2: var tsched_param): cint {.importc, header: "<spawn.h>".} + proc posix_spawnattr_setschedpolicy*(a1: var tposix_spawnattr, a2: cint): cint {.importc, header: "<spawn.h>".} + proc posix_spawnattr_setsigmask*(a1: var tposix_spawnattr, + a2: var tsigset): cint {.importc, header: "<spawn.h>".} + proc posix_spawnp*(a1: var tpid, a2: cstring, + a3: var tposix_spawn_file_actions, + a4: var tposix_spawnattr, + a5, a6: cstringArray): cint {.importc, header: "<spawn.h>".} proc getcontext*(a1: var Tucontext): cint {.importc, header: "<ucontext.h>".} proc makecontext*(a1: var Tucontext, a4: proc (){.noconv.}, a3: cint) {.varargs, importc, header: "<ucontext.h>".} diff --git a/lib/process.nim b/lib/process.nim deleted file mode 100644 index 8806264b9..000000000 --- a/lib/process.nim +++ /dev/null @@ -1,1009 +0,0 @@ -# -# -# Nimrod's Runtime Library -# (c) Copyright 2008 Andreas Rumpf -# -# See the file "copying.txt", included in this -# distribution, for details about the copyright. -# - - -interface - -type - TProcess = opaque - -proc - open(out p: TProcess, command, workingDir: string, - -implementation - - -Uses Classes, - pipes, - SysUtils; - -Type - TProcessOption = (poRunSuspended,poWaitOnExit, - poUsePipes,poStderrToOutPut, - poNoConsole,poNewConsole, - poDefaultErrorMode,poNewProcessGroup, - poDebugProcess,poDebugOnlyThisProcess); - - TShowWindowOptions = (swoNone,swoHIDE,swoMaximize,swoMinimize,swoRestore,swoShow, - swoShowDefault,swoShowMaximized,swoShowMinimized, - swoshowMinNOActive,swoShowNA,swoShowNoActivate,swoShowNormal); - - TStartupOption = (suoUseShowWindow,suoUseSize,suoUsePosition, - suoUseCountChars,suoUseFillAttribute); - - TProcessPriority = (ppHigh,ppIdle,ppNormal,ppRealTime); - - TProcessOptions = Set of TPRocessOption; - TstartUpoptions = set of TStartupOption; - - -Type - TProcess = Class (TComponent) - Private - FProcessOptions : TProcessOptions; - FStartupOptions : TStartupOptions; - FProcessID : Integer; - FThreadID : Integer; - FProcessHandle : Thandle; - FThreadHandle : Thandle; - FFillAttribute : Cardinal; - FApplicationName : string; - FConsoleTitle : String; - FCommandLine : String; - FCurrentDirectory : String; - FDeskTop : String; - FEnvironment : Tstrings; - FExitCode : Cardinal; - FShowWindow : TShowWindowOptions; - FInherithandles : Boolean; - FInputSTream : TOutputPipeStream; - FOutputStream : TInPutPipeStream; - FStdErrStream : TInputPipeStream; - FRunning : Boolean; - FPRocessPriority : TProcessPriority; - dwXCountchars, - dwXSize, - dwYsize, - dwx, - dwYcountChars, - dwy : Cardinal; - Procedure FreeStreams; - Function GetExitStatus : Integer; - Function GetRunning : Boolean; - Function GetWindowRect : TRect; - Procedure SetWindowRect (Value : TRect); - Procedure SetShowWindow (Value : TShowWindowOptions); - Procedure SetWindowColumns (Value : Cardinal); - Procedure SetWindowHeight (Value : Cardinal); - Procedure SetWindowLeft (Value : Cardinal); - Procedure SetWindowRows (Value : Cardinal); - Procedure SetWindowTop (Value : Cardinal); - Procedure SetWindowWidth (Value : Cardinal); - Procedure CreateStreams(InHandle,OutHandle,Errhandle : Longint); - procedure SetApplicationname(const Value: String); - procedure SetProcessOptions(const Value: TProcessOptions); - procedure SetActive(const Value: Boolean); - procedure SetEnvironment(const Value: TStrings); - function PeekExitStatus: Boolean; - procedure CloseProcessHandles; - Public - Constructor Create (AOwner : TComponent);override; - Destructor Destroy; override; - Procedure Execute; virtual; - Function Resume : Integer; virtual; - Function Suspend : Integer; virtual; - Function Terminate (AExitCode : Integer): Boolean; virtual; - Function WaitOnExit : DWord; - Property WindowRect : Trect Read GetWindowRect Write SetWindowRect; - Property Handle : THandle Read FProcessHandle; - Property ProcessHandle : THandle Read FProcessHandle; - Property ThreadHandle : THandle Read FThreadHandle; - Property ProcessID : Integer Read FProcessID; - Property ThreadID : Integer Read FThreadID; - Property Input : TOutPutPipeStream Read FInPutStream; - Property OutPut : TInputPipeStream Read FOutPutStream; - Property StdErr : TinputPipeStream Read FStdErrStream; - Property ExitStatus : Integer Read GetExitStatus; - Property InheritHandles : Boolean Read FInheritHandles Write FInheritHandles; - Published - Property Active : Boolean Read Getrunning Write SetActive; - Property ApplicationName : String Read FApplicationname Write SetApplicationname; - Property CommandLine : String Read FCommandLine Write FCommandLine; - Property ConsoleTitle : String Read FConsoleTitle Write FConsoleTitle; - Property CurrentDirectory : String Read FCurrentDirectory Write FCurrentDirectory; - Property DeskTop : String Read FDeskTop Write FDeskTop; - Property Environment : TStrings Read FEnvironment Write SetEnvironment; - Property Options : TProcessOptions Read FProcessOptions Write SetPRocessOptions; - Property Priority : TProcessPriority Read FProcessPriority Write FProcessPriority; - Property StartUpOptions : TStartUpOptions Read FStartUpOptions Write FStartupOptions; - Property Running : Boolean Read GetRunning; - Property ShowWindow : TShowWindowOptions Read FShowWindow Write SetShowWindow; - Property WindowColumns : Cardinal Read dwXCountchars Write SetWindowColumns; - Property WindowHeight : Cardinal Read dwYsize Write SetWindowHeight; - Property WindowLeft : Cardinal Read dwx Write SetWindowLeft; - Property WindowRows : Cardinal Read dwYcountChars Write SetWindowRows; - Property WindowTop : Cardinal Read dwy Write SetWindowTop ; - Property WindowWidth : Cardinal Read dwXsize Write SetWindowWidth; - Property FillAttribute : Cardinal read FFillAttribute Write FFillAttribute; - end; - -implementation - -{ - Win32 Process .inc. -} - -uses Windows; - -Const - PriorityConstants : Array [TProcessPriority] of Cardinal = - (HIGH_PRIORITY_CLASS,IDLE_PRIORITY_CLASS, - NORMAL_PRIORITY_CLASS,REALTIME_PRIORITY_CLASS); - -procedure TProcess.CloseProcessHandles; -begin - if (FProcessHandle<>0) then - CloseHandle(FProcessHandle); - if (FThreadHandle<>0) then - CloseHandle(FThreadHandle); -end; - -Function TProcess.PeekExitStatus : Boolean; - -begin - GetExitCodeProcess(ProcessHandle,FExitCode); - Result:=(FExitCode<>Still_Active); -end; - -Function GetStartupFlags (P : TProcess): Cardinal; - -begin - With P do - begin - Result:=0; - if poUsePipes in FProcessOptions then - Result:=Result or Startf_UseStdHandles; - if suoUseShowWindow in FStartupOptions then - Result:=Result or startf_USESHOWWINDOW; - if suoUSESIZE in FStartupOptions then - Result:=Result or startf_usesize; - if suoUsePosition in FStartupOptions then - Result:=Result or startf_USEPOSITION; - if suoUSECOUNTCHARS in FStartupoptions then - Result:=Result or startf_usecountchars; - if suoUsefIllAttribute in FStartupOptions then - Result:=Result or startf_USEFILLATTRIBUTE; - end; -end; - -Function GetCreationFlags(P : TProcess) : Cardinal; - -begin - With P do - begin - Result:=0; - if poNoConsole in FProcessOptions then - Result:=Result or Detached_Process; - if poNewConsole in FProcessOptions then - Result:=Result or Create_new_console; - if poNewProcessGroup in FProcessOptions then - Result:=Result or CREATE_NEW_PROCESS_GROUP; - If poRunSuspended in FProcessOptions Then - Result:=Result or Create_Suspended; - if poDebugProcess in FProcessOptions Then - Result:=Result or DEBUG_PROCESS; - if poDebugOnlyThisProcess in FProcessOptions Then - Result:=Result or DEBUG_ONLY_THIS_PROCESS; - if poDefaultErrorMode in FProcessOptions Then - Result:=Result or CREATE_DEFAULT_ERROR_MODE; - result:=result or PriorityConstants[FProcessPriority]; - end; -end; - -Function StringsToPChars(List : TStrings): pointer; - -var - EnvBlock: string; - I: Integer; - -begin - EnvBlock := ''; - For I:=0 to List.Count-1 do - EnvBlock := EnvBlock + List[i] + #0; - EnvBlock := EnvBlock + #0; - GetMem(Result, Length(EnvBlock)); - CopyMemory(Result, @EnvBlock[1], Length(EnvBlock)); -end; - -Procedure InitProcessAttributes(P : TProcess; Var PA : TSecurityAttributes); - -begin - FillChar(PA,SizeOf(PA),0); - PA.nLength := SizeOf(PA); -end; - -Procedure InitThreadAttributes(P : TProcess; Var TA : TSecurityAttributes); - -begin - FillChar(TA,SizeOf(TA),0); - TA.nLength := SizeOf(TA); -end; - -Procedure InitStartupInfo(P : TProcess; Var SI : STARTUPINFO); - -Const - SWC : Array [TShowWindowOptions] of Cardinal = - (0,SW_HIDE,SW_Maximize,SW_Minimize,SW_Restore,SW_Show, - SW_ShowDefault,SW_ShowMaximized,SW_ShowMinimized, - SW_showMinNOActive,SW_ShowNA,SW_ShowNoActivate,SW_ShowNormal); - -begin - FillChar(SI,SizeOf(SI),0); - With SI do - begin - dwFlags:=GetStartupFlags(P); - if P.FShowWindow<>swoNone then - dwFlags:=dwFlags or Startf_UseShowWindow - else - dwFlags:=dwFlags and not Startf_UseShowWindow; - wShowWindow:=SWC[P.FShowWindow]; - if (poUsePipes in P.Options) then - begin - dwFlags:=dwFlags or Startf_UseStdHandles; - end; - if P.FillAttribute<>0 then - begin - dwFlags:=dwFlags or Startf_UseFillAttribute; - dwFillAttribute:=P.FillAttribute; - end; - dwXCountChars:=P.WindowColumns; - dwYCountChars:=P.WindowRows; - dwYsize:=P.WindowHeight; - dwXsize:=P.WindowWidth; - dwy:=P.WindowTop; - dwX:=P.WindowLeft; - end; -end; - -Procedure CreatePipes(Var HI,HO,HE : Thandle; Var SI : TStartupInfo; CE : Boolean); - - Procedure DoCreatePipeHandles(Var H1,H2 : THandle); - - Var - I,O : Longint; - - begin - CreatePipeHandles(I,O); - H1:=Thandle(I); - H2:=THandle(O); - end; - - - - -begin - DoCreatePipeHandles(SI.hStdInput,HI); - DoCreatePipeHandles(HO,Si.hStdOutput); - if CE then - DoCreatePipeHandles(HE,SI.hStdError) - else - begin - SI.hStdError:=SI.hStdOutput; - HE:=HO; - end; -end; - - -Procedure TProcess.Execute; - - -Var - PName,PDir,PCommandLine : PChar; - FEnv: pointer; - FCreationFlags : Cardinal; - FProcessAttributes : TSecurityAttributes; - FThreadAttributes : TSecurityAttributes; - FProcessInformation : TProcessInformation; - FStartupInfo : STARTUPINFO; - HI,HO,HE : THandle; - -begin - FInheritHandles:=True; - PName:=Nil; - PCommandLine:=Nil; - PDir:=Nil; - If FApplicationName<>'' then - PName:=Pchar(FApplicationName); - If FCommandLine<>'' then - PCommandLine:=Pchar(FCommandLine); - If FCurrentDirectory<>'' then - PDir:=Pchar(FCurrentDirectory); - if FEnvironment.Count<>0 then - FEnv:=StringsToPChars(FEnvironment) - else - FEnv:=Nil; - Try - FCreationFlags:=GetCreationFlags(Self); - InitProcessAttributes(Self,FProcessAttributes); - InitThreadAttributes(Self,FThreadAttributes); - InitStartupInfo(Self,FStartUpInfo); - If poUsePipes in FProcessOptions then - CreatePipes(HI,HO,HE,FStartupInfo,Not(poStdErrToOutPut in FProcessOptions)); - Try - If Not CreateProcess (PName,PCommandLine,@FProcessAttributes,@FThreadAttributes, - FInheritHandles,FCreationFlags,FEnv,PDir,FStartupInfo, - fProcessInformation) then - Raise Exception.CreateFmt('Failed to execute %s : %d',[FCommandLine,GetLastError]); - FProcessHandle:=FProcessInformation.hProcess; - FThreadHandle:=FProcessInformation.hThread; - FProcessID:=FProcessINformation.dwProcessID; - Finally - if POUsePipes in FProcessOptions then - begin - FileClose(FStartupInfo.hStdInput); - FileClose(FStartupInfo.hStdOutput); - if Not (poStdErrToOutPut in FProcessOptions) then - FileClose(FStartupInfo.hStdError); - CreateStreams(HI,HO,HE); - end; - end; - FRunning:=True; - Finally - If FEnv<>Nil then - FreeMem(FEnv); - end; - if not (csDesigning in ComponentState) and // This would hang the IDE ! - (poWaitOnExit in FProcessOptions) and - not (poRunSuspended in FProcessOptions) then - WaitOnExit; -end; - -Function TProcess.WaitOnExit : Dword; - -begin - Result:=WaitForSingleObject (FProcessHandle,Infinite); - If Result<>Wait_Failed then - GetExitStatus; - FRunning:=False; -end; - -Function TProcess.Suspend : Longint; - -begin - Result:=SuspendThread(ThreadHandle); -end; - -Function TProcess.Resume : LongInt; - -begin - Result:=ResumeThread(ThreadHandle); -end; - -Function TProcess.Terminate(AExitCode : Integer) : Boolean; - -begin - Result:=False; - If ExitStatus=Still_active then - Result:=TerminateProcess(Handle,AexitCode); -end; - -Procedure TProcess.SetShowWindow (Value : TShowWindowOptions); - - -begin - FShowWindow:=Value; -end; - -// ---------------------------- end of platform dependant code -------------- - -{ - Unix Process .inc. -} - -uses - Unix, - Baseunix; - - - -Const - PriorityConstants : Array [TProcessPriority] of Integer = - (20,20,0,-20); - -Const - GeometryOption : String = '-geometry'; - TitleOption : String ='-title'; - - - -procedure TProcess.CloseProcessHandles; - -begin - // Do nothing. Win32 call. -end; - -Function TProcess.PeekExitStatus : Boolean; - -begin - Result:=fpWaitPid(Handle,@FExitCode,WNOHANG)=Handle; - If Result then - FExitCode:=wexitstatus(FExitCode) - else - FexitCode:=0; -end; - -Type - TPCharArray = Array[Word] of pchar; - PPCharArray = ^TPcharArray; - -Function StringsToPCharList(List : TStrings) : PPChar; - -Var - I : Integer; - S : String; - -begin - I:=(List.Count)+1; - GetMem(Result,I*sizeOf(PChar)); - PPCharArray(Result)^[List.Count]:=Nil; - For I:=0 to List.Count-1 do - begin - S:=List[i]; - Result[i]:=StrNew(PChar(S)); - end; -end; - -Procedure FreePCharList(List : PPChar); - -Var - I : integer; - -begin - I:=0; - While List[i]<>Nil do - begin - StrDispose(List[i]); - Inc(I); - end; - FreeMem(List); -end; - - -Procedure CommandToList(S : String; List : TStrings); - - Function GetNextWord : String; - - Const - WhiteSpace = [' ',#8,#10]; - Literals = ['"','''']; - - Var - Wstart,wend : Integer; - InLiteral : Boolean; - LastLiteral : char; - - begin - WStart:=1; - While (WStart<=Length(S)) and (S[WStart] in WhiteSpace) do - Inc(WStart); - WEnd:=WStart; - InLiteral:=False; - LastLiteral:=#0; - While (Wend<=Length(S)) and (Not (S[Wend] in WhiteSpace) or InLiteral) do - begin - if S[Wend] in Literals then - If InLiteral then - InLiteral:=Not (S[Wend]=LastLiteral) - else - begin - InLiteral:=True; - LastLiteral:=S[Wend]; - end; - inc(wend); - end; - Result:=Copy(S,WStart,WEnd-WStart); - Result:=StringReplace(Result,'"','',[rfReplaceAll]); - Result:=StringReplace(Result,'''','',[rfReplaceAll]); - While (WEnd<=Length(S)) and (S[Wend] in WhiteSpace) do - inc(Wend); - Delete(S,1,WEnd-1); - - end; - -Var - W : String; - -begin - While Length(S)>0 do - begin - W:=GetNextWord; - If (W<>'') then - List.Add(W); - end; -end; - - -Function MakeCommand(P : TProcess) : PPchar; - -Const - SNoCommandLine = 'Cannot execute empty command-line'; - -Var - Cmd : String; - S : TStringList; - G : String; - -begin - if (P.ApplicationName='') then - begin - If (P.CommandLine='') then - Raise Exception.Create(SNoCommandline); - Cmd:=P.CommandLine; - end - else - begin - If (P.CommandLine='') then - Cmd:=P.ApplicationName - else - Cmd:=P.CommandLine; - end; - S:=TStringList.Create; - try - CommandToList(Cmd,S); - if poNewConsole in P.Options then - begin - S.Insert(0,'-e'); - If (P.ApplicationName<>'') then - begin - S.Insert(0,P.ApplicationName); - S.Insert(0,'-title'); - end; - if suoUseCountChars in P.StartupOptions then - begin - S.Insert(0,Format('%dx%d',[P.dwXCountChars,P.dwYCountChars])); - S.Insert(0,'-geometry'); - end; - S.Insert(0,'xterm'); - end; - if (P.ApplicationName<>'') then - begin - S.Add(TitleOption); - S.Add(P.ApplicationName); - end; - G:=''; - if (suoUseSize in P.StartupOptions) then - g:=format('%dx%d',[P.dwXSize,P.dwYsize]); - if (suoUsePosition in P.StartupOptions) then - g:=g+Format('+%d+%d',[P.dwX,P.dwY]); - if G<>'' then - begin - S.Add(GeometryOption); - S.Add(g); - end; - Result:=StringsToPcharList(S); - Finally - S.free; - end; -end; - -Function GetLastError : Integer; - -begin - Result:=-1; -end; - -Type - TPipeEnd = (peRead,peWrite); - TPipePair = Array[TPipeEnd] of Integer; - -Procedure CreatePipes(Var HI,HO,HE : TPipePair; CE : Boolean); - - Procedure CreatePair(Var P : TPipePair); - - begin - If not CreatePipeHandles(P[peRead],P[peWrite]) then - Raise Exception.Create('Failed to create pipes'); - end; - - Procedure ClosePair(Var P : TPipePair); - - begin - if (P[peRead]<>-1) then - FileClose(P[peRead]); - if (P[peWrite]<>-1) then - FileClose(P[peWrite]); - end; - -begin - HO[peRead]:=-1;HO[peWrite]:=-1; - HI[peRead]:=-1;HI[peWrite]:=-1; - HE[peRead]:=-1;HE[peWrite]:=-1; - Try - CreatePair(HO); - CreatePair(HI); - If CE then - CreatePair(HE); - except - ClosePair(HO); - ClosePair(HI); - If CE then - ClosePair(HE); - Raise; - end; -end; - -Procedure TProcess.Execute; - -Var - HI,HO,HE : TPipePair; - PID : Longint; - FEnv : PPChar; - Argv : PPChar; - fd : Integer; - PName : String; - -begin - If (poUsePipes in FProcessOptions) then - CreatePipes(HI,HO,HE,Not (poStdErrToOutPut in FProcessOptions)); - Try - if FEnvironment.Count<>0 then - FEnv:=StringsToPcharList(FEnvironment) - else - FEnv:=Nil; - Try - Argv:=MakeCommand(Self); - Try - If (Argv<>Nil) and (ArgV[0]<>Nil) then - PName:=StrPas(Argv[0]) - else - begin - // This should never happen, actually. - PName:=ApplicationName; - If (PName='') then - PName:=CommandLine; - end; - if (pos('/',PName)<>1) then - PName:=FileSearch(Pname,fpgetenv('PATH')); - Pid:=fpfork; - if Pid<0 then - Raise Exception.Create('Failed to Fork process'); - if (PID>0) then - begin - // Parent process. Copy process information. - FProcessHandle:=PID; - FThreadHandle:=PID; - FProcessId:=PID; - //FThreadId:=PID; - end - else - begin - { We're in the child } - if (FCurrentDirectory<>'') then - ChDir(FCurrentDirectory); - if PoUsePipes in Options then - begin - fpdup2(HI[peRead],0); - fpdup2(HO[peWrite],1); - if (poStdErrToOutPut in Options) then - fpdup2(HO[peWrite],2) - else - fpdup2(HE[peWrite],2); - end - else if poNoConsole in Options then - begin - fd:=FileOpen('/dev/null',fmOpenReadWrite); - fpdup2(fd,0); - fpdup2(fd,1); - fpdup2(fd,2); - end; - if (poRunSuspended in Options) then - sigraise(SIGSTOP); - if FEnv<>Nil then - fpexecve(PName,Argv,Fenv) - else - fpexecv(PName,argv); - Halt(127); - end - Finally - FreePcharList(Argv); - end; - Finally - If (FEnv<>Nil) then - FreePCharList(FEnv); - end; - Finally - if POUsePipes in FProcessOptions then - begin - FileClose(HO[peWrite]); - FileClose(HI[peRead]); - if Not (poStdErrToOutPut in FProcessOptions) then - FileClose(HE[peWrite]); - CreateStreams(HI[peWrite],HO[peRead],HE[peRead]); - end; - end; - FRunning:=True; - if not (csDesigning in ComponentState) and // This would hang the IDE ! - (poWaitOnExit in FProcessOptions) and - not (poRunSuspended in FProcessOptions) then - WaitOnExit; -end; - -Function TProcess.WaitOnExit : Dword; - -begin - Result:=fpWaitPid(Handle,@FExitCode,0); - If Result=Handle then - FExitCode:=WexitStatus(FExitCode); - FRunning:=False; -end; - -Function TProcess.Suspend : Longint; - -begin - If fpkill(Handle,SIGSTOP)<>0 then - Result:=-1 - else - Result:=1; -end; - -Function TProcess.Resume : LongInt; - -begin - If fpKill(Handle,SIGCONT)<>0 then - Result:=-1 - else - Result:=0; -end; - -Function TProcess.Terminate(AExitCode : Integer) : Boolean; - -begin - Result:=False; - Result:=fpkill(Handle,SIGTERM)=0; - If Result then - begin - If Running then - Result:=fpkill(Handle,SIGKILL)=0; - end; - GetExitStatus; -end; - -Procedure TProcess.SetShowWindow (Value : TShowWindowOptions); - -begin - FShowWindow:=Value; -end; - -// --------------------------------------------------------------------------- - - -Constructor TProcess.Create (AOwner : TComponent); -begin - Inherited; - FProcessPriority:=ppNormal; - FShowWindow:=swoNone; - FInheritHandles:=True; - FEnvironment:=TStringList.Create; -end; - -Destructor TProcess.Destroy; - -begin - FEnvironment.Free; - FreeStreams; - CloseProcessHandles; - Inherited Destroy; -end; - -Procedure TProcess.FreeStreams; - - procedure FreeStream(var S: THandleStream); - - begin - if (S<>Nil) then - begin - FileClose(S.Handle); - FreeAndNil(S); - end; - end; - -begin - If FStdErrStream<>FOutputStream then - FreeStream(FStdErrStream); - FreeStream(FOutputStream); - FreeStream(FInputStream); -end; - - -Function TProcess.GetExitStatus : Integer; - -begin - If FRunning then - PeekExitStatus; - Result:=FExitCode; -end; - - -Function TProcess.GetRunning : Boolean; - -begin - IF FRunning then - FRunning:=Not PeekExitStatus; - Result:=FRunning; -end; - - -Procedure TProcess.CreateStreams(InHandle,OutHandle,Errhandle : Longint); - -begin - FreeStreams; - FInputStream:=TOutputPipeStream.Create (InHandle); - FOutputStream:=TInputPipeStream.Create (OutHandle); - if Not (poStdErrToOutPut in FProcessOptions) then - FStdErrStream:=TInputPipeStream.Create(ErrHandle); -end; - - -Procedure TProcess.SetWindowColumns (Value : Cardinal); - -begin - if Value<>0 then - Include(FStartUpOptions,suoUseCountChars); - dwXCountChars:=Value; -end; - - -Procedure TProcess.SetWindowHeight (Value : Cardinal); - -begin - if Value<>0 then - include(FStartUpOptions,suoUsePosition); - dwYSize:=Value; -end; - -Procedure TProcess.SetWindowLeft (Value : Cardinal); - -begin - if Value<>0 then - Include(FStartUpOptions,suoUseSize); - dwx:=Value; -end; - -Procedure TProcess.SetWindowTop (Value : Cardinal); - -begin - if Value<>0 then - Include(FStartUpOptions,suoUsePosition); - dwy:=Value; -end; - -Procedure TProcess.SetWindowWidth (Value : Cardinal); -begin - If (Value<>0) then - Include(FStartUpOptions,suoUseSize); - dwXSize:=Value; -end; - -Function TProcess.GetWindowRect : TRect; -begin - With Result do - begin - Left:=dwx; - Right:=dwx+dwxSize; - Top:=dwy; - Bottom:=dwy+dwysize; - end; -end; - -Procedure TProcess.SetWindowRect (Value : Trect); -begin - Include(FStartupOptions,suouseSize); - Include(FStartupOptions,suoUsePosition); - With Value do - begin - dwx:=Left; - dwxSize:=Right-Left; - dwy:=Top; - dwySize:=Bottom-top; - end; -end; - - -Procedure TProcess.SetWindowRows (Value : Cardinal); - -begin - if Value<>0 then - Include(FStartUpOptions,suoUseCountChars); - dwYCountChars:=Value; -end; - -procedure TProcess.SetApplicationname(const Value: String); -begin - FApplicationname := Value; - If (csdesigning in ComponentState) and - (FCommandLine='') then - FCommandLine:=Value; -end; - -procedure TProcess.SetProcessOptions(const Value: TProcessOptions); -begin - FProcessOptions := Value; - If poNewConsole in FPRocessOptions then - Exclude(FProcessoptions,poNoConsole); - if poRunSuspended in FProcessOptions then - Exclude(FPRocessoptions,poWaitOnExit); -end; - -procedure TProcess.SetActive(const Value: Boolean); -begin - if (Value<>GetRunning) then - If Value then - Execute - else - Terminate(0); -end; - -procedure TProcess.SetEnvironment(const Value: TStrings); -begin - FEnvironment.Assign(Value); -end; - -function CallProcess(const command: string): string; -const - READ_BYTES = 2048; -// executes the command and returns the program's output -var - M: TMemoryStream; - P: TProcess; - n: LongInt; - BytesRead: LongInt; -begin - // We cannot use poWaitOnExit here since we don't - // know the size of the output. On Linux the size of the - // output pipe is 2 kB. If the output data is more, we - // need to read the data. This isn't possible since we are - // waiting. So we get a deadlock here. - // - // A temp Memorystream is used to buffer the output - - M := TMemoryStream.Create; - BytesRead := 0; - - P := TProcess.Create(nil); - P.CommandLine := Command; - P.Options := [poUsePipes]; - P.Execute; - while P.Running do begin - // make sure we have room - M.SetSize(BytesRead + READ_BYTES); - - // try reading it - n := P.Output.Read((M.Memory + BytesRead)^, READ_BYTES); - if n > 0 then - Inc(BytesRead, n) - else - // no data, wait 100 ms - Sleep(100) - end; - // read last part - repeat - // make sure we have room - M.SetSize(BytesRead + READ_BYTES); - // try reading it - n := P.Output.Read((M.Memory + BytesRead)^, READ_BYTES); - if n > 0 then Inc(BytesRead, n) - until n <= 0; - M.SetSize(BytesRead); - - setLength(result, bytesRead); - m.read(result[1], bytesRead); - P.Free; M.Free; -end; - -end. diff --git a/lib/repr.nim b/lib/repr.nim index 34a2ce2fb..2f29d839d 100644 --- a/lib/repr.nim +++ b/lib/repr.nim @@ -85,7 +85,7 @@ proc reprSetAux(result: var string, p: pointer, typ: PNimType) = else: var a = cast[pbyteArray](p) for i in 0 .. typ.size*8-1: - if (a[i div 8] and (1 shl (i mod 8))) != 0: + if (ze(a[i div 8]) and (1 shl (i mod 8))) != 0: if elemCounter > 0: add result, ", " addSetElem(result, i+typ.node.len, typ.base) inc(elemCounter) diff --git a/lib/sets.nim b/lib/sets.nim index 3aeae235c..395a2286c 100644 --- a/lib/sets.nim +++ b/lib/sets.nim @@ -24,36 +24,36 @@ include cntbits proc unionSets(res: var TNimSet, a, b: TNimSet, len: int) {. compilerproc, inline.} = - for i in countup(0, len-1): res[i] = toU8(ze(a[i]) or ze(b[i])) + for i in countup(0, len-1): res[i] = a[i] or b[i] proc diffSets(res: var TNimSet, a, b: TNimSet, len: int) {. compilerproc, inline.} = - for i in countup(0, len-1): res[i] = toU8(ze(a[i]) and not ze(b[i])) + for i in countup(0, len-1): res[i] = a[i] and not b[i] proc intersectSets(res: var TNimSet, a, b: TNimSet, len: int) {. compilerproc, inline.} = - for i in countup(0, len-1): res[i] = toU8(ze(a[i]) and ze(b[i])) + for i in countup(0, len-1): res[i] = a[i] and b[i] proc symdiffSets(res: var TNimSet, a, b: TNimSet, len: int) {. compilerproc, inline.} = - for i in countup(0, len-1): res[i] = toU8(ze(a[i]) xor ze(b[i])) + for i in countup(0, len-1): res[i] = a[i] xor b[i] proc containsSets(a, b: TNimSet, len: int): bool {.compilerproc, inline.} = # s1 <= s2 ? for i in countup(0, len-1): - if (ze(a[i]) and not ze(b[i])) != 0: return false + if (a[i] and not b[i]) != 0'i8: return false return true proc containsSubsets(a, b: TNimSet, len: int): bool {.compilerproc, inline.} = # s1 < s2 ? result = false # assume they are equal for i in countup(0, len-1): - if (ze(a[i]) and not ze(b[i])) != 0: return false - if ze(a[i]) != ze(b[i]): result = true # they are not equal + if (a[i]) and not b[i]) != 0'i32: return false + if a[i] != b[i]: result = true # they are not equal proc equalSets(a, b: TNimSet, len: int): bool {.compilerproc, inline.} = for i in countup(0, len-1): - if ze(a[i]) != ze(b[i]): return false + if a[i] != b[i]: return false return true proc cardSet(s: TNimSet, len: int): int {.compilerproc, inline.} = @@ -68,7 +68,7 @@ proc inSet(s: TNimSet, elem: int): bool {.compilerproc, inline.} = return (s[elem /% WORD_SIZE] and (1 shl (elem %% WORD_SIZE))) != 0 proc inclSets(s: var TNimSet, e: int) {.compilerproc, inline.} = - s[e /% WORD_SIZE] = toU8(s[e /% WORD_SIZE] or (1 shl (e %% WORD_SIZE))) + s[e /% WORD_SIZE] = s[e /% WORD_SIZE] or toU8(1 shl (e %% WORD_SIZE)) proc inclRange(s: var TNimSet, first, last: int) {.compilerproc.} = # not very fast, but it is seldom used @@ -80,8 +80,8 @@ proc smallInclRange(s: var int, first, last: int) {.compilerproc.} = s = s or (1 shl (i %% sizeof(int)*8)) proc exclSets(s: var TNimSet, e: int) {.compilerproc, inline.} = - s[e /% WORD_SIZE] = toU8(s[e /% WORD_SIZE] and - not (1 shl (e %% WORD_SIZE))) + s[e /% WORD_SIZE] = s[e /% WORD_SIZE] and + not toU8(1 shl (e %% WORD_SIZE)) proc smallContainsSubsets(a, b: int): bool {.compilerProc, inline.} = # not used by new code generator diff --git a/lib/smallalc.nim b/lib/smallalc.nim deleted file mode 100644 index b5a99db35..000000000 --- a/lib/smallalc.nim +++ /dev/null @@ -1,19 +0,0 @@ -# Handle small allocations efficiently -# We allocate and manage memory by pages. All objects within a page belong to -# the same type. Thus, we safe the type field. Minimum requested block is -# 8 bytes. Alignment is 8 bytes. - - -type - TChunk {.pure.} = object - kind: TChunkKind - prev, next: ptr TChunk - - TSmallChunk = object of TChunk # all objects of the same size - typ: PNimType - free: int - data: array [0.., int] - -proc allocSmall(typ: PNimType): pointer = - - \ No newline at end of file diff --git a/lib/strtabs.nim b/lib/strtabs.nim index dd57fdd17..e6abaee6f 100644 --- a/lib/strtabs.nim +++ b/lib/strtabs.nim @@ -11,11 +11,11 @@ ## from strings to strings. Supports a case-sensitive, case-insensitive and ## style-insensitive mode. An efficient string substitution operator ``%`` ## for the string table is also provided. - -import + +import os, hashes, strutils -type +type TStringTableMode* = enum # describes the tables operation mode modeCaseSensitive, # the table is case sensitive modeCaseInsensitive, # the table is case insensitive @@ -29,16 +29,16 @@ type PStringTable* = ref TStringTable ## use this type to declare string tables -proc newStringTable*(keyValuePairs: openarray[string], +proc newStringTable*(keyValuePairs: openarray[string], mode: TStringTableMode = modeCaseSensitive): PStringTable ## creates a new string table with given key value pairs. ## Example:: - ## var mytab = newStringTable("key1", "val1", "key2", "val2", + ## var mytab = newStringTable("key1", "val1", "key2", "val2", ## modeCaseInsensitive) proc newStringTable*(mode: TStringTableMode = modeCaseSensitive): PStringTable ## creates a new string table that is empty. - + proc `[]=`*(t: PStringTable, key, val: string) ## puts a (key, value)-pair into `t`. @@ -54,13 +54,13 @@ proc len*(t: PStringTable): int = ## returns the number of keys in `t`. result = t.counter -iterator pairs*(t: PStringTable): tuple[key, value: string] = +iterator pairs*(t: PStringTable): tuple[key, value: string] = ## iterates over any (key, value) pair in the table `t`. for h in 0..high(t.data): if not isNil(t.data[h].key): yield (t.data[h].key, t.data[h].val) -type +type TFormatFlag* = enum # flags for the `%` operator useEnvironment, # use environment variable if the ``$key`` # is not found in the table @@ -75,136 +75,131 @@ proc `%`*(f: string, t: PStringTable, flags: set[TFormatFlag] = {}): string # implementation -const +const growthFactor = 2 startSize = 64 -proc newStringTable(mode: TStringTableMode = modeCaseSensitive): PStringTable = +proc newStringTable(mode: TStringTableMode = modeCaseSensitive): PStringTable = new(result) result.mode = mode result.counter = 0 - result.data = [] - setlen(result.data, startSize) # XXX + newSeq(result.data, startSize) -proc newStringTable(keyValuePairs: openarray[string], - mode: TStringTableMode = modeCaseSensitive): PStringTable = +proc newStringTable(keyValuePairs: openarray[string], + mode: TStringTableMode = modeCaseSensitive): PStringTable = result = newStringTable(mode) var i = 0 - while i < high(keyValuePairs): + while i < high(keyValuePairs): result[keyValuePairs[i]] = keyValuePairs[i + 1] inc(i, 2) -proc myhash(t: PStringTable, key: string): THash = +proc myhash(t: PStringTable, key: string): THash = case t.mode of modeCaseSensitive: result = hashes.hash(key) of modeCaseInsensitive: result = hashes.hashIgnoreCase(key) of modeStyleInsensitive: result = hashes.hashIgnoreStyle(key) - -proc myCmp(t: PStringTable, a, b: string): bool = + +proc myCmp(t: PStringTable, a, b: string): bool = case t.mode of modeCaseSensitive: result = cmp(a, b) == 0 of modeCaseInsensitive: result = cmpIgnoreCase(a, b) == 0 of modeStyleInsensitive: result = cmpIgnoreStyle(a, b) == 0 - -proc mustRehash(length, counter: int): bool = + +proc mustRehash(length, counter: int): bool = assert(length > counter) result = (length * 2 < counter * 3) or (length - counter < 4) -const - EmptySeq = [] - -proc nextTry(h, maxHash: THash): THash = +proc nextTry(h, maxHash: THash): THash = result = ((5 * h) + 1) and maxHash # For any initial h in range(maxHash), repeating that maxHash times # generates each int in range(maxHash) exactly once (see any text on # random-number generation for proof). - -proc RawGet(t: PStringTable, key: string): int = + +proc RawGet(t: PStringTable, key: string): int = var h: THash h = myhash(t, key) and high(t.data) # start with real hash value - while not isNil(t.data[h].key): - if mycmp(t, t.data[h].key, key): + while not isNil(t.data[h].key): + if mycmp(t, t.data[h].key, key): return h h = nextTry(h, high(t.data)) result = - 1 -proc `[]`(t: PStringTable, key: string): string = +proc `[]`(t: PStringTable, key: string): string = var index: int index = RawGet(t, key) if index >= 0: result = t.data[index].val else: result = "" - -proc hasKey(t: PStringTable, key: string): bool = + +proc hasKey(t: PStringTable, key: string): bool = result = rawGet(t, key) >= 0 -proc RawInsert(t: PStringTable, data: var TKeyValuePairSeq, key, val: string) = +proc RawInsert(t: PStringTable, data: var TKeyValuePairSeq, key, val: string) = var h: THash h = myhash(t, key) and high(data) - while not isNil(data[h].key): + while not isNil(data[h].key): h = nextTry(h, high(data)) data[h].key = key data[h].val = val -proc Enlarge(t: PStringTable) = +proc Enlarge(t: PStringTable) = var n: TKeyValuePairSeq - n = emptySeq - setlen(n, len(t.data) * growthFactor) - for i in countup(0, high(t.data)): + newSeq(n, len(t.data) * growthFactor) + for i in countup(0, high(t.data)): if not isNil(t.data[i].key): RawInsert(t, n, t.data[i].key, t.data[i].val) swap(t.data, n) -proc `[]=`(t: PStringTable, key, val: string) = +proc `[]=`(t: PStringTable, key, val: string) = var index = RawGet(t, key) - if index >= 0: + if index >= 0: t.data[index].val = val - else: + else: if mustRehash(len(t.data), t.counter): Enlarge(t) RawInsert(t, t.data, key, val) inc(t.counter) -proc RaiseFormatException(s: string) = +proc RaiseFormatException(s: string) = var e: ref EInvalidValue new(e) e.msg = "format string: key not found: " & s raise e -proc getValue(t: PStringTable, flags: set[TFormatFlag], key: string): string = +proc getValue(t: PStringTable, flags: set[TFormatFlag], key: string): string = if hasKey(t, key): return t[key] if useEnvironment in flags: result = os.getEnv(key) else: result = "" - if (result == ""): + if (result == ""): if useKey in flags: result = '$' & key elif not (useEmpty in flags): raiseFormatException(key) - -proc `%`(f: string, t: PStringTable, flags: set[TFormatFlag] = {}): string = - const + +proc `%`(f: string, t: PStringTable, flags: set[TFormatFlag] = {}): string = + const PatternChars = {'a'..'z', 'A'..'Z', '0'..'9', '_', '\x80'..'\xFF'} - var + var i, j: int key: string result = "" i = strStart - while i <= len(f) + strStart - 1: - if f[i] == '$': + while i <= len(f) + strStart - 1: + if f[i] == '$': case f[i + 1] - of '$': + of '$': add(result, '$') inc(i, 2) - of '{': + of '{': j = i + 1 while (j <= len(f) + strStart - 1) and (f[j] != '}'): inc(j) key = copy(f, i + 2, j - 1) result = result & getValue(t, flags, key) i = j + 1 - of 'a'..'z', 'A'..'Z', '\x80'..'\xFF', '_': + of 'a'..'z', 'A'..'Z', '\x80'..'\xFF', '_': j = i + 1 while (j <= len(f) + strStart - 1) and (f[j] in PatternChars): inc(j) key = copy(f, i+1, j - 1) result = result & getValue(t, flags, key) i = j - else: + else: add(result, f[i]) inc(i) - else: + else: add(result, f[i]) inc(i) - + diff --git a/lib/strutils.nim b/lib/strutils.nim index 039a06251..7e1a329d6 100644 --- a/lib/strutils.nim +++ b/lib/strutils.nim @@ -24,6 +24,7 @@ template newException(exceptn, message: expr): expr = e.msg = message e + type TCharSet* = set[char] # for compability for Nim @@ -73,6 +74,9 @@ proc findSubStr*(sub: char, s: string, start: int = 0): int {.noSideEffect.} proc replaceStr*(s, sub, by: string): string {.noSideEffect.} ## Replaces `sub` in `s` by the string `by`. +proc replaceStr*(s: string, sub, by: char): string {.noSideEffect.} + ## optimized version for characters. + proc deleteStr*(s: var string, first, last: int) ## Deletes in `s` the characters at position `first`..`last`. This modifies ## `s` itself, it does not return a copy. @@ -113,6 +117,43 @@ iterator split*(s: string, seps: set[char] = Whitespace): string = while last < len(s) and s[last] not_in seps: inc(last) # BUGFIX! yield copy(s, first, last-1) +iterator splitLines*(s: string): string = + ## Splits the string `s` into its containing lines. Each newline + ## combination (CR, LF, CR-LF) is supported. The result strings contain + ## no trailing ``\n``. + ## + ## Example:: + ## + ## for line in lines("\nthis\nis\nan\n\nexample\n"): + ## writeln(stdout, line) + ## + ## Results in:: + ## + ## "" + ## "this" + ## "is" + ## "an" + ## "" + ## "example" + ## "" + var first = 0 + var last = 0 + while true: + while s[last] notin {'\0', '\c', '\l'}: inc(last) + yield copy(s, first, last-1) + # skip newlines: + if s[last] == '\l': inc(last) + elif s[last] == '\c': + inc(last) + if s[last] == '\l': inc(last) + else: break # was '\0' + first = last + +proc splitLinesSeq*(s: string): seq[string] {.noSideEffect.} = + ## The same as `split`, but is a proc that returns a sequence of substrings. + result = @[] + for line in splitLines(s): add(result, line) + proc splitSeq*(s: string, seps: set[char] = Whitespace): seq[string] {. noSideEffect.} ## The same as `split`, but is a proc that returns a sequence of substrings. @@ -159,7 +200,8 @@ proc ParseBiggestInt*(s: string): biggestInt {.noSideEffect.} proc ParseFloat*(s: string): float {.noSideEffect.} ## Parses a decimal floating point value contained in `s`. If `s` is not - ## a valid floating point number, `EInvalidValue` is raised. + ## a valid floating point number, `EInvalidValue` is raised. ``NAN``, + ## ``INF``, ``-INF`` are also supported (case insensitive comparison). # XXX: make this biggestfloat. # the stringify and format operators: @@ -344,7 +386,7 @@ proc cmpIgnoreStyle(a, b: string): int = # ---------- splitting ----------------------------------------------------- proc splitSeq(s: string, seps: set[char]): seq[string] = - result = [] + result = @[] for sub in split(s, seps): add result, sub # --------------------------------------------------------------------------- @@ -469,6 +511,14 @@ proc replaceStr(s, sub, by: string): string = # copy the rest: add result, copy(s, i) +proc replaceStr(s: string, sub, by: char): string = + result = newString(s.len) + var i = 0 + while i < s.len: + if s[i] == sub: result[i] = by + else: result[i] = s[i] + inc(i) + proc deleteStr(s: var string, first, last: int) = # example: "abc___uvwxyz\0" (___ is to be deleted) # --> first == 3, last == 5 @@ -489,7 +539,7 @@ proc toHex(x: BiggestInt, len: int): string = shift: BiggestInt result = newString(len) for j in countdown(len-1, 0): - result[j] = HexChars[toU32(x shr shift) and 0xF] + result[j] = HexChars[toU32(x shr shift) and 0xF'i32] shift = shift + 4 {.push overflowChecks: on.} @@ -552,6 +602,16 @@ proc ParseFloat(s: string): float = elif s[i] == '-': sign = -1.0 inc(i) + if s[i] == 'N' or s[i] == 'n': + if s[i+1] == 'A' or s[i+1] == 'a': + if s[i+2] == 'N' or s[i+2] == 'n': + if s[i+3] == '\0': return NaN + raise newException(EInvalidValue, "invalid float: " & s) + if s[i] == 'I' or s[i] == 'i': + if s[i+1] == 'N' or s[i+1] == 'n': + if s[i+2] == 'F' or s[i+2] == 'f': + if s[i+3] == '\0': return Inf*sign + raise newException(EInvalidValue, "invalid float: " & s) while s[i] in {'0'..'9'}: # Read integer part flags = flags or 1 @@ -572,7 +632,7 @@ proc ParseFloat(s: string): float = result = result / hd # this complicated way preserves precision # Again, read integer and fractional part if flags == 0: - raise newException(EInvalidValue, "invalid float:" & s) + raise newException(EInvalidValue, "invalid float: " & s) # Exponent? if s[i] in {'e', 'E'}: inc(i) @@ -624,4 +684,113 @@ proc toBin*(x: BiggestInt, len: int): string = shift = shift + 1 mask = mask shl 1 +proc escape*(s: string, prefix, suffix = "\""): string = + ## Escapes a string `s`. This does these operations (at the same time): + ## * replaces any ``\`` by ``\\`` + ## * replaces any ``'`` by ``\'`` + ## * replaces any ``"`` by ``\"`` + ## * replaces any other character in the set ``{'\0'..'\31', '\128'..'\255'}`` + ## by ``\xHH`` where ``HH`` is its hexadecimal value. + ## The procedure has been designed so that its output is usable for many + ## different common syntaxes. The resulting string is prefixed with + ## ``prefix`` and suffixed with ``suffix``. Both may be empty strings. + result = prefix + for c in items(s): + case c + of '\0'..'\31', '\128'..'\255': + add(result, '\\') + add(result, toHex(ord(c), 2)) + of '\\': add(result, "\\\\") + of '\'': add(result, "\\'") + of '\"': add(result, "\\\"") + else: add(result, c) + add(result, suffix) + +proc editDistance*(a, b: string): int = + ## returns the edit distance between `s` and `t`. This uses the Levenshtein + ## distance algorithm with only a linear memory overhead. This implementation + ## is highly optimized! + var len1 = a.len + var len2 = b.len + if len1 > len2: + # make `b` the longer string + return editDistance(b, a) + + # strip common prefix: + var s = 0 + while a[s] == b[s] and a[s] != '\0': + inc(s) + dec(len1) + dec(len2) + # strip common suffix: + while len1 > 0 and len2 > 0 and a[s+len1-1] == b[s+len2-1]: + dec(len1) + dec(len2) + # trivial cases: + if len1 == 0: return len2 + if len2 == 0: return len1 + + # another special case: + if len1 == 1: + for j in s..len2-1: + if a[s] == b[j]: return len2 - 1 + return len2 + + inc(len1) + inc(len2) + var half = len1 shr 1 + # initalize first row: + #var row = cast[ptr array[0..high(int) div 8, int]](alloc(len2 * sizeof(int))) + var row: seq[int] + newSeq(row, len2) + var e = s + len2 - 1 # end marker + for i in 1..len2 - half - 1: row[i] = i + row[0] = len1 - half - 1 + for i in 1 .. len1 - 1: + var char1 = a[i + s - 1] + var char2p: int + var D, x: int + var p: int + if i >= len1 - half: + # skip the upper triangle: + var offset = i - len1 + half + char2p = offset + p = offset + var c3 = row[p] + ord(char1 != b[s + char2p]) + inc(p) + inc(char2p) + x = row[p] + 1 + D = x + if x > c3: x = c3 + row[p] = x + inc(p) + else: + p = 1 + char2p = 0 + D = i + x = i + if i <= half + 1: + # skip the lower triangle: + e = len2 + i - half - 2 + # main: + while p <= e: + dec(D) + var c3 = D + ord(char1 != b[char2p + s]) + inc(char2p) + inc(x) + if x > c3: x = c3 + D = row[p] + 1 + if x > D: x = D + row[p] = x + inc(p) + # lower triangle sentinel: + if i <= half: + dec(D) + var c3 = D + ord(char1 != b[char2p + s]) + inc(x) + if x > c3: x = c3 + row[p] = x + result = row[e] + #dealloc(row) + {.pop.} diff --git a/lib/sysio.nim b/lib/sysio.nim index 6da47eb20..8887effa8 100644 --- a/lib/sysio.nim +++ b/lib/sysio.nim @@ -19,7 +19,7 @@ proc fputs(c: cstring, f: TFile) {.importc: "fputs", noDecl.} proc fgets(c: cstring, n: int, f: TFile): cstring {.importc: "fgets", noDecl.} proc fgetc(stream: TFile): int {.importc: "fgetc", nodecl.} -proc ungetc(c: int, f: TFile) {.importc: "ungetc", nodecl.} +proc ungetc(c: cint, f: TFile) {.importc: "ungetc", nodecl.} proc putc(c: Char, stream: TFile) {.importc: "putc", nodecl.} proc fprintf(f: TFile, frmt: CString) {.importc: "fprintf", nodecl, varargs.} proc strlen(c: cstring): int {.importc: "strlen", nodecl.} @@ -33,7 +33,7 @@ var IOFBF {.importc: "_IOFBF", nodecl.}: cint IONBF {.importc: "_IONBF", nodecl.}: cint -proc rawReadLine(f: TFile, result: var string) {.noStatic.} = +proc rawReadLine(f: TFile, result: var string) = # of course this could be optimized a bit; but IO is slow anyway... # and it was difficult to get this CORRECT with Ansi C's methods var @@ -41,13 +41,11 @@ proc rawReadLine(f: TFile, result: var string) {.noStatic.} = setLen(result, 0) # reuse the buffer! while True: c = fgetc(f) - if c < 0: - result = nil - break # EOF - if c == 10: break # LF - if c == 13: # CR + if c < 0'i32: break # EOF + if c == 10'i32: break # LF + if c == 13'i32: # CR c = fgetc(f) # is the next char LF? - if c != 10: ungetc(c, f) # no, put the character back + if c != 10'i32: ungetc(c, f) # no, put the character back break add result, chr(int(c)) @@ -72,7 +70,7 @@ proc readFile(filename: string): string = proc write(f: TFile, s: string) = fputs(s, f) proc write(f: TFile, i: int) = fprintf(f, "%ld", i) -proc write(f: TFile, b: bool) = +proc write(f: TFile, b: bool) = if b: write(f, "true") else: write(f, "false") proc write(f: TFile, r: float) = fprintf(f, "%g", r) @@ -117,11 +115,18 @@ proc OpenFile(f: var TFile, filename: string, result = (p != nil) f = cast[TFile](p) if bufSize > 0: - if setvbuf(f, nil, IOFBF, bufSize) != 0: + if setvbuf(f, nil, IOFBF, bufSize) != 0'i32: raise newException(EOutOfMemory, "out of memory") elif bufSize == 0: discard setvbuf(f, nil, IONBF, 0) +proc fdopen(filehandle: TFileHandle, mode: cstring): TFile {. + importc: pccHack & "fdopen", header: "<stdio.h>".} + +proc openFile(f: var TFile, filehandle: TFileHandle, mode: TFileMode): bool = + f = fdopen(filehandle, FormatOpen[mode]) + result = f != nil + # C routine that is used here: proc fread(buf: Pointer, size, n: int, f: TFile): int {. importc: "fread", noDecl.} diff --git a/lib/sysstr.nim b/lib/sysstr.nim index a3e5ab9f8..921a92ff5 100644 --- a/lib/sysstr.nim +++ b/lib/sysstr.nim @@ -16,53 +16,55 @@ # the programmer may not want type - TStringDesc {.importc, nodecl, final.} = object - len, space: int # len and space without counting the terminating zero - data: array[0..0, char] # for the '\0' character + # len and space without counting the terminating zero: + NimStringDesc {.compilerproc, final.} = object of TGenericSeq + data: array[0..100_000_000, char] # for the '\0' character - mstring {.importc: "string".} = ptr TStringDesc + NimString = ptr NimStringDesc # implementation: proc resize(old: int): int {.inline.} = - if old <= 0: return 1 + if old <= 0: return 4 elif old < 65536: return old * 2 else: return old * 3 div 2 # for large arrays * 3/2 is better -proc cmpStrings(a, b: mstring): int {.inline, compilerProc.} = +proc cmpStrings(a, b: NimString): int {.inline, compilerProc.} = if a == b: return 0 if a == nil: return -1 if b == nil: return 1 return c_strcmp(a.data, b.data) -proc eqStrings(a, b: mstring): bool {.inline, compilerProc.} = +proc eqStrings(a, b: NimString): bool {.inline, compilerProc.} = if a == b: return true if a == nil or b == nil: return false return a.len == b.len and - c_memcmp(a.data, b.data, a.len * sizeof(char)) == 0 - -proc rawNewString(space: int): mstring {.compilerProc.} = - result = cast[mstring](newObj(addr(strDesc), sizeof(TStringDesc) + - space * sizeof(char))) - result.len = 0 - result.space = space - result.data[0] = '\0' - -proc mnewString(len: int): mstring {.exportc.} = + c_memcmp(a.data, b.data, a.len * sizeof(char)) == 0'i32 + +proc rawNewString(space: int): NimString {.compilerProc.} = + var s = space + if s < 8: s = 7 + result = cast[NimString](newObj(addr(strDesc), sizeof(TGenericSeq) + + (s+1) * sizeof(char))) + #result.len = 0 + result.space = s + #result.data[0] = '\0' + +proc mnewString(len: int): NimString {.exportc.} = result = rawNewString(len) result.len = len - result.data[len] = '\0' + #result.data[len] = '\0' -proc toNimStr(str: CString, len: int): mstring {.compilerProc.} = +proc toNimStr(str: CString, len: int): NimString {.compilerProc.} = result = rawNewString(len) result.len = len c_memcpy(result.data, str, (len+1) * sizeof(Char)) result.data[len] = '\0' # IO.readline relies on this! -proc cstrToNimstr(str: CString): mstring {.compilerProc.} = +proc cstrToNimstr(str: CString): NimString {.compilerProc.} = return toNimstr(str, c_strlen(str)) -proc copyString(src: mstring): mstring {.compilerProc.} = +proc copyString(src: NimString): NimString {.compilerProc.} = if src == nil: return nil result = rawNewString(src.space) result.len = src.len @@ -71,9 +73,7 @@ proc copyString(src: mstring): mstring {.compilerProc.} = proc hashString(s: string): int {.compilerproc.} = # the compiler needs exactly the same hash function! # this used to be used for efficient generation of string case statements - var - h: int - h = 0 + var h = 0 for i in 0..Len(s)-1: h = h +% Ord(s[i]) h = h +% h shl 10 @@ -91,8 +91,7 @@ proc hashString(s: string): int {.compilerproc.} = # setLength(var s: string, newlen: int) # {.extern: "setLengthStr", noDecl, noSideEffect.} - -proc copyStrLast(s: mstring, start, last: int): mstring {.exportc.} = +proc copyStrLast(s: NimString, start, last: int): NimString {.exportc.} = var len: int if start >= s.len: return mnewString(0) # BUGFIX @@ -105,15 +104,19 @@ proc copyStrLast(s: mstring, start, last: int): mstring {.exportc.} = c_memcpy(result.data, addr(s.data[start]), len * sizeof(Char)) result.data[len] = '\0' -proc copyStr(s: mstring, start: int): mstring {.exportc.} = +proc copyStr(s: NimString, start: int): NimString {.exportc.} = return copyStrLast(s, start, s.len-1) -proc addChar(s: mstring, c: char): mstring {.compilerProc.} = +proc addChar(s: NimString, c: char): NimString {.compilerProc.} = result = s if result.len >= result.space: result.space = resize(result.space) - result = cast[mstring](growObj(result, - sizeof(TStringDesc) + result.space * sizeof(char))) + result = cast[NimString](growObj(result, + sizeof(TGenericSeq) + (result.space+1) * sizeof(char))) + #var space = resize(result.space) + #result = rawNewString(space) + #copyMem(result, s, s.len * sizeof(char) + sizeof(TGenericSeq)) + #result.space = space result.data[result.len] = c result.data[result.len+1] = '\0' inc(result.len) @@ -149,27 +152,28 @@ proc addChar(s: mstring, c: char): mstring {.compilerProc.} = # <generated C code> # s = rawNewString(0); -proc resizeString(dest: mstring, addlen: int): mstring {.compilerproc.} = +proc resizeString(dest: NimString, addlen: int): NimString {.compilerproc.} = if dest.len + addLen + 1 <= dest.space: # BUGFIX: this is horrible! result = dest else: # slow path: - var - sp = max(resize(dest.space), dest.len + addLen + 1) - result = cast[mstring](growObj(dest, sizeof(TStringDesc) + - sp * sizeof(Char))) - # DO NOT UPDATE LEN YET: dest.len = newLen + var sp = max(resize(dest.space), dest.len + addLen + 1) + result = cast[NimString](growObj(dest, sizeof(TGenericSeq) + + (sp+1) * sizeof(Char))) result.space = sp + #result = rawNewString(sp) + #copyMem(result, dest, dest.len * sizeof(char) + sizeof(TGenericSeq)) + # DO NOT UPDATE LEN YET: dest.len = newLen -proc appendString(dest, src: mstring) {.compilerproc, inline.} = +proc appendString(dest, src: NimString) {.compilerproc, inline.} = c_memcpy(addr(dest.data[dest.len]), src.data, (src.len + 1) * sizeof(Char)) inc(dest.len, src.len) -proc appendChar(dest: mstring, c: char) {.compilerproc, inline.} = +proc appendChar(dest: NimString, c: char) {.compilerproc, inline.} = dest.data[dest.len] = c dest.data[dest.len+1] = '\0' inc(dest.len) -proc setLengthStr(s: mstring, newLen: int): mstring {.compilerProc.} = +proc setLengthStr(s: NimString, newLen: int): NimString {.compilerProc.} = var n = max(newLen, 0) if n <= s.space: result = s @@ -187,37 +191,54 @@ proc incrSeq(seq: PGenericSeq, elemSize: int): PGenericSeq {.compilerProc.} = # add seq x generates: # seq = incrSeq(seq, sizeof(x)); # seq[seq->len-1] = x; - result = seq - if result.len >= result.space: - var - s: TAddress - result.space = resize(result.space) - result = cast[PGenericSeq](growObj(result, elemSize * result.space + - GenericSeqSize)) - # set new elements to zero: - s = cast[TAddress](result) - zeroMem(cast[pointer](s + GenericSeqSize + (result.len * elemSize)), - (result.space - result.len) * elemSize) - # for i in len .. space-1: - # seq->data[i] = 0 - inc(result.len) + when false: + # broken version: + result = seq + if result.len >= result.space: + var s = resize(result.space) + result = cast[PGenericSeq](newSeq(extGetCellType(seq), s)) + genericSeqAssign(result, seq, XXX) + #copyMem(result, seq, seq.len * elemSize + GenericSeqSize) + inc(result.len) + else: + result = seq + if result.len >= result.space: + result.space = resize(result.space) + result = cast[PGenericSeq](growObj(result, elemSize * result.space + + GenericSeqSize)) + # set new elements to zero: + #var s = cast[TAddress](result) + #zeroMem(cast[pointer](s + GenericSeqSize + (result.len * elemSize)), + # (result.space - result.len) * elemSize) + # for i in len .. space-1: + # seq->data[i] = 0 + inc(result.len) proc setLengthSeq(seq: PGenericSeq, elemSize, newLen: int): PGenericSeq {. compilerProc.} = - result = seq - if result.space < newLen: - var - s: TAddress - result.space = max(resize(result.space), newLen) - result = cast[PGenericSeq](growObj(result, elemSize * result.space + - GenericSeqSize)) - # set new elements to zero (needed for GC): - s = cast[TAddress](result) - zeroMem(cast[pointer](s + GenericSeqSize + (result.len * elemSize)), - (result.space - result.len) * elemSize) - # Else: We could decref references, if we had type information here :-( - # However, this does not happen often - result.len = newLen + when false: + # broken version: + result = seq + if result.space < newLen: + var s = max(resize(result.space), newLen) + result = cast[PGenericSeq](newSeq(extGetCellType(seq), s)) + result.len = newLen + else: + result = seq + if result.space < newLen: + result.space = max(resize(result.space), newLen) + result = cast[PGenericSeq](growObj(result, elemSize * result.space + + GenericSeqSize)) + elif newLen < result.len: + # we need to decref here, otherwise the GC leaks! + for i in newLen..result.len-1: + forAllChildrenAux(cast[pointer](cast[TAddress](result) +% + GenericSeqSize +% (i*%elemSize)), + extGetCellType(result).base, waZctDecRef) + # and set the memory to nil: + zeroMem(cast[pointer](cast[TAddress](result) +% GenericSeqSize +% + (newLen*%elemSize)), (result.len-%newLen) *% elemSize) + result.len = newLen # --------------- other string routines ---------------------------------- proc nimIntToStr(x: int): string {.compilerproc.} = diff --git a/lib/system.nim b/lib/system.nim index 285b921f8..97ad7297a 100644 --- a/lib/system.nim +++ b/lib/system.nim @@ -19,6 +19,30 @@ {.push hints: off.} +type + int* {.magic: Int.} ## default integer type; bitwidth depends on + ## architecture, but is always the same as a pointer + int8* {.magic: Int8.} ## signed 8 bit integer type + int16* {.magic: Int16.} ## signed 16 bit integer type + int32* {.magic: Int32.} ## signed 32 bit integer type + int64* {.magic: Int64.} ## signed 64 bit integer type + float* {.magic: Float.} ## default floating point type + float32* {.magic: Float32.} ## 32 bit floating point type + float64* {.magic: Float64.} ## 64 bit floating point type +type # we need to start a new type section here, so that ``0`` can have a type + bool* {.magic: Bool.} = enum ## built-in boolean type + false = 0, true = 1 + +type + char* {.magic: Char.} ## built-in 8 bit character type (unsigned) + string* {.magic: String.} ## built-in string type + cstring* {.magic: Cstring.} ## built-in cstring (*compatible string*) type + pointer* {.magic: Pointer.} ## built-in pointer type + TAnyEnum {.magic: AnyEnum.} + +type + `nil` {.magic: "Nil".} + proc defined*[T] (x: T): bool {.magic: "Defined", noSideEffect.} ## Special comile-time procedure that checks whether `x` is ## defined. `x` has to be an identifier or a qualified identifier. @@ -30,23 +54,6 @@ proc defined*[T] (x: T): bool {.magic: "Defined", noSideEffect.} ## # provide our own toUpper proc here, because strutils is ## # missing it. -when defined(macosX): - {.define: useDL.} - -when defined(linux): - {.define: useDL.} - -when defined(unix): - # This may seem strange, but we cannot write "when not defined" - # here, because ``not`` has not been defined yet. - {.hint: "unix is defined".} -else: - {.define: useDL.} - {.hint: "unix is not defined".} - # use Doug Lea's memory allocator; you can undefine it if you - # know that your system uses this library anyway (smaller code) or if - # your malloc() doesn't suck (most systems use it anyway) - # these require compiler magic: proc `not` *(x: bool): bool {.magic: "Not", noSideEffect.} ## Boolean not; returns true iff ``x == false``. @@ -98,9 +105,10 @@ type ## is an int type ranging from one to the maximum value ## of an int. This type is often useful for documentation and debugging. - TObject* = object ## the root of Nimrod's object hierarchy. Objects should - ## inherit from TObject or one of its descendants. However, - ## objects that have no ancestor are allowed. + TObject* {.exportc: "TNimObject".} = + object ## the root of Nimrod's object hierarchy. Objects should + ## inherit from TObject or one of its descendants. However, + ## objects that have no ancestor are allowed. PObject* = ref TObject ## reference to TObject E_Base* {.compilerproc.} = object of TObject ## base exception class; @@ -206,8 +214,14 @@ proc dec*[T](x: var T, y = 1) {.magic: "Dec".} ## exist, ``EOutOfRange`` is raised or a compile time error occurs. This is a ## short notation for: ``x = pred(x, y)``. +proc newSeq*[T](s: var seq[T], len: int) {.magic: "NewSeq".} + ## creates a new sequence of type ``seq[T]`` with length ``len``. + ## This is equivalent to ``s = []; setlen(s, len)``, but more + ## efficient since no relocation is needed. + proc len*[T](x: openarray[T]): int {.magic: "LengthOpenArray", noSideEffect.} proc len*(x: string): int {.magic: "LengthStr", noSideEffect.} +proc len*(x: cstring): int {.magic: "LengthStr", noSideEffect.} proc len*[I, T](x: array[I, T]): int {.magic: "LengthArray", noSideEffect.} proc len*[T](x: seq[T]): int {.magic: "LengthSeq", noSideEffect.} ## returns the length of an array, a sequence or a string. @@ -236,79 +250,241 @@ proc chr*(u: range[0..255]): char {.magic: "Chr", noSideEffect.} # -------------------------------------------------------------------------- # built-in operators +proc ze*(x: int8): int {.magic: "Ze8ToI", noSideEffect.} + ## zero extends a smaller integer type to ``int``. This treats `x` as + ## unsigned. +proc ze*(x: int16): int {.magic: "Ze16ToI", noSideEffect.} + ## zero extends a smaller integer type to ``int``. This treats `x` as + ## unsigned. + +proc ze64*(x: int8): int64 {.magic: "Ze8ToI64", noSideEffect.} + ## zero extends a smaller integer type to ``int64``. This treats `x` as + ## unsigned. +proc ze64*(x: int16): int64 {.magic: "Ze16ToI64", noSideEffect.} + ## zero extends a smaller integer type to ``int64``. This treats `x` as + ## unsigned. + +proc ze64*(x: int32): int64 {.magic: "Ze32ToI64", noSideEffect.} + ## zero extends a smaller integer type to ``int64``. This treats `x` as + ## unsigned. +proc ze64*(x: int): int64 {.magic: "ZeIToI64", noDecl, noSideEffect.} + ## zero extends a smaller integer type to ``int64``. This treats `x` as + ## unsigned. Does nothing if the size of an ``int`` is the same as ``int64``. + ## (This is the case on 64 bit processors.) + +proc toU8*(x: int): int8 {.magic: "ToU8", noSideEffect.} + ## treats `x` as unsigned and converts it to a byte by taking the last 8 bits + ## from `x`. +proc toU16*(x: int): int16 {.magic: "ToU16", noSideEffect.} + ## treats `x` as unsigned and converts it to an ``int16`` by taking the last + ## 16 bits from `x`. +proc toU32*(x: int64): int32 {.magic: "ToU32", noSideEffect.} + ## treats `x` as unsigned and converts it to an ``int32`` by taking the + ## last 32 bits from `x`. + + # integer calculations: proc `+` *(x: int): int {.magic: "UnaryPlusI", noSideEffect.} +proc `+` *(x: int8): int8 {.magic: "UnaryPlusI", noSideEffect.} +proc `+` *(x: int16): int16 {.magic: "UnaryPlusI", noSideEffect.} +proc `+` *(x: int32): int32 {.magic: "UnaryPlusI", noSideEffect.} +proc `+` *(x: int64): int64 {.magic: "UnaryPlusI64", noSideEffect.} ## Unary `+` operator for an integer. Has no effect. proc `-` *(x: int): int {.magic: "UnaryMinusI", noSideEffect.} +proc `-` *(x: int8): int8 {.magic: "UnaryMinusI", noSideEffect.} +proc `-` *(x: int16): int16 {.magic: "UnaryMinusI", noSideEffect.} +proc `-` *(x: int32): int32 {.magic: "UnaryMinusI", noSideEffect.} +proc `-` *(x: int64): int64 {.magic: "UnaryMinusI64", noSideEffect.} ## Unary `-` operator for an integer. Negates `x`. proc `not` *(x: int): int {.magic: "BitnotI", noSideEffect.} +proc `not` *(x: int8): int8 {.magic: "BitnotI", noSideEffect.} +proc `not` *(x: int16): int16 {.magic: "BitnotI", noSideEffect.} +proc `not` *(x: int32): int32 {.magic: "BitnotI", noSideEffect.} +proc `not` *(x: int64): int64 {.magic: "BitnotI64", noSideEffect.} ## computes the `bitwise complement` of the integer `x`. proc `+` *(x, y: int): int {.magic: "AddI", noSideEffect.} +proc `+` *(x, y: int8): int8 {.magic: "AddI", noSideEffect.} +proc `+` *(x, y: int16): int16 {.magic: "AddI", noSideEffect.} +proc `+` *(x, y: int32): int32 {.magic: "AddI", noSideEffect.} +proc `+` *(x, y: int64): int64 {.magic: "AddI64", noSideEffect.} + ## Binary `+` operator for an integer. + proc `-` *(x, y: int): int {.magic: "SubI", noSideEffect.} +proc `-` *(x, y: int8): int8 {.magic: "SubI", noSideEffect.} +proc `-` *(x, y: int16): int16 {.magic: "SubI", noSideEffect.} +proc `-` *(x, y: int32): int32 {.magic: "SubI", noSideEffect.} +proc `-` *(x, y: int64): int64 {.magic: "SubI64", noSideEffect.} + ## Binary `-` operator for an integer. + proc `*` *(x, y: int): int {.magic: "MulI", noSideEffect.} +proc `*` *(x, y: int8): int8 {.magic: "MulI", noSideEffect.} +proc `*` *(x, y: int16): int16 {.magic: "MulI", noSideEffect.} +proc `*` *(x, y: int32): int32 {.magic: "MulI", noSideEffect.} +proc `*` *(x, y: int64): int64 {.magic: "MulI64", noSideEffect.} + ## Binary `*` operator for an integer. + proc `div` *(x, y: int): int {.magic: "DivI", noSideEffect.} +proc `div` *(x, y: int8): int8 {.magic: "DivI", noSideEffect.} +proc `div` *(x, y: int16): int16 {.magic: "DivI", noSideEffect.} +proc `div` *(x, y: int32): int32 {.magic: "DivI", noSideEffect.} +proc `div` *(x, y: int64): int64 {.magic: "DivI64", noSideEffect.} ## computes the integer division. This is roughly the same as ## ``floor(x/y)``. + proc `mod` *(x, y: int): int {.magic: "ModI", noSideEffect.} +proc `mod` *(x, y: int8): int8 {.magic: "ModI", noSideEffect.} +proc `mod` *(x, y: int16): int16 {.magic: "ModI", noSideEffect.} +proc `mod` *(x, y: int32): int32 {.magic: "ModI", noSideEffect.} +proc `mod` *(x, y: int64): int64 {.magic: "ModI64", noSideEffect.} ## computes the integer modulo operation. This is the same as ## ``x - (x div y) * y``. proc `shr` *(x, y: int): int {.magic: "ShrI", noSideEffect.} +proc `shr` *(x, y: int8): int8 {.magic: "ShrI", noSideEffect.} +proc `shr` *(x, y: int16): int16 {.magic: "ShrI", noSideEffect.} +proc `shr` *(x, y: int32): int32 {.magic: "ShrI", noSideEffect.} +proc `shr` *(x, y: int64): int64 {.magic: "ShrI64", noSideEffect.} ## computes the `shift right` operation of `x` and `y`. + proc `shl` *(x, y: int): int {.magic: "ShlI", noSideEffect.} +proc `shl` *(x, y: int8): int8 {.magic: "ShlI", noSideEffect.} +proc `shl` *(x, y: int16): int16 {.magic: "ShlI", noSideEffect.} +proc `shl` *(x, y: int32): int32 {.magic: "ShlI", noSideEffect.} +proc `shl` *(x, y: int64): int64 {.magic: "ShlI64", noSideEffect.} ## computes the `shift left` operation of `x` and `y`. + proc `and` *(x, y: int): int {.magic: "BitandI", noSideEffect.} +proc `and` *(x, y: int8): int8 {.magic: "BitandI", noSideEffect.} +proc `and` *(x, y: int16): int16 {.magic: "BitandI", noSideEffect.} +proc `and` *(x, y: int32): int32 {.magic: "BitandI", noSideEffect.} +proc `and` *(x, y: int64): int64 {.magic: "BitandI64", noSideEffect.} ## computes the `bitwise and` of numbers `x` and `y`. + proc `or` *(x, y: int): int {.magic: "BitorI", noSideEffect.} +proc `or` *(x, y: int8): int8 {.magic: "BitorI", noSideEffect.} +proc `or` *(x, y: int16): int16 {.magic: "BitorI", noSideEffect.} +proc `or` *(x, y: int32): int32 {.magic: "BitorI", noSideEffect.} +proc `or` *(x, y: int64): int64 {.magic: "BitorI64", noSideEffect.} ## computes the `bitwise or` of numbers `x` and `y`. + proc `xor` *(x, y: int): int {.magic: "BitxorI", noSideEffect.} +proc `xor` *(x, y: int8): int8 {.magic: "BitxorI", noSideEffect.} +proc `xor` *(x, y: int16): int16 {.magic: "BitxorI", noSideEffect.} +proc `xor` *(x, y: int32): int32 {.magic: "BitxorI", noSideEffect.} +proc `xor` *(x, y: int64): int64 {.magic: "BitxorI64", noSideEffect.} ## computes the `bitwise xor` of numbers `x` and `y`. proc `==` *(x, y: int): bool {.magic: "EqI", noSideEffect.} +proc `==` *(x, y: int8): bool {.magic: "EqI", noSideEffect.} +proc `==` *(x, y: int16): bool {.magic: "EqI", noSideEffect.} +proc `==` *(x, y: int32): bool {.magic: "EqI", noSideEffect.} +proc `==` *(x, y: int64): bool {.magic: "EqI64", noSideEffect.} + ## Compares two integers for equality. + proc `<=` *(x, y: int): bool {.magic: "LeI", noSideEffect.} +proc `<=` *(x, y: int8): bool {.magic: "LeI", noSideEffect.} +proc `<=` *(x, y: int16): bool {.magic: "LeI", noSideEffect.} +proc `<=` *(x, y: int32): bool {.magic: "LeI", noSideEffect.} +proc `<=` *(x, y: int64): bool {.magic: "LeI64", noSideEffect.} + ## Returns true iff `x` is less than or equal to `y`. + proc `<` *(x, y: int): bool {.magic: "LtI", noSideEffect.} +proc `<` *(x, y: int8): bool {.magic: "LtI", noSideEffect.} +proc `<` *(x, y: int16): bool {.magic: "LtI", noSideEffect.} +proc `<` *(x, y: int32): bool {.magic: "LtI", noSideEffect.} +proc `<` *(x, y: int64): bool {.magic: "LtI64", noSideEffect.} + ## Returns true iff `x` is less than `y`. + proc abs*(x: int): int {.magic: "AbsI", noSideEffect.} +proc abs*(x: int8): int8 {.magic: "AbsI", noSideEffect.} +proc abs*(x: int16): int16 {.magic: "AbsI", noSideEffect.} +proc abs*(x: int32): int32 {.magic: "AbsI", noSideEffect.} +proc abs*(x: int64): int64 {.magic: "AbsI64", noSideEffect.} + ## returns the absolute value of `x`. If `x` is ``low(x)`` (that is + ## -MININT for its type), an overflow exception is thrown (if overflow + ## checking is turned on). + proc min*(x, y: int): int {.magic: "MinI", noSideEffect.} +proc min*(x, y: int8): int8 {.magic: "MinI", noSideEffect.} +proc min*(x, y: int16): int16 {.magic: "MinI", noSideEffect.} +proc min*(x, y: int32): int32 {.magic: "MinI", noSideEffect.} +proc min*(x, y: int64): int64 {.magic: "MinI64", noSideEffect.} + ## The minimum value of two integers. + proc max*(x, y: int): int {.magic: "MaxI", noSideEffect.} +proc max*(x, y: int8): int8 {.magic: "MaxI", noSideEffect.} +proc max*(x, y: int16): int16 {.magic: "MaxI", noSideEffect.} +proc max*(x, y: int32): int32 {.magic: "MaxI", noSideEffect.} +proc max*(x, y: int64): int64 {.magic: "MaxI64", noSideEffect.} + ## The maximum value of two integers. -proc `+` *(x: int64): int64 {.magic: "UnaryPlusI64", noSideEffect.} -proc `-` *(x: int64): int64 {.magic: "UnaryMinusI64", noSideEffect.} -proc `not` *(x: int64): int64 {.magic: "BitnotI64", noSideEffect.} - ## computes the `bitwise complement` of the integer `x`. +proc `+%` *(x, y: int): int {.magic: "AddU", noSideEffect.} +proc `+%` *(x, y: int8): int8 {.magic: "AddU", noSideEffect.} +proc `+%` *(x, y: int16): int16 {.magic: "AddU", noSideEffect.} +proc `+%` *(x, y: int32): int32 {.magic: "AddU", noSideEffect.} +proc `+%` *(x, y: int64): int64 {.magic: "AddU64", noSideEffect.} + ## treats `x` and `y` as unsigned and adds them. The result is truncated to + ## fit into the result. This implements modulo arithmetic. No overflow + ## errors are possible. -proc `+` *(x, y: int64): int64 {.magic: "AddI64", noSideEffect.} - ## Unary `+` operator for an integer. Has no effect. -proc `-` *(x, y: int64): int64 {.magic: "SubI64", noSideEffect.} - ## Unary `-` operator for an int64. Negates `x`. -proc `*` *(x, y: int64): int64 {.magic: "MulI64", noSideEffect.} -proc `div` *(x, y: int64): int64 {.magic: "DivI64", noSideEffect.} - ## computes the integer division. This is roughly the same as - ## ``floor(x/y)``. -proc `mod` *(x, y: int64): int64 {.magic: "ModI64", noSideEffect.} - ## computes the integer modulo operation. This is the same as - ## ``x - (x div y) * y``. -proc `shr` *(x, y: int64): int64 {.magic: "ShrI64", noSideEffect.} - ## computes the `shift right` operation of `x` and `y`. -proc `shl` *(x, y: int64): int64 {.magic: "ShlI64", noSideEffect.} - ## computes the `shift left` operation of `x` and `y`. -proc `and` *(x, y: int64): int64 {.magic: "BitandI64", noSideEffect.} - ## computes the `bitwise and` of numbers `x` and `y`. -proc `or` *(x, y: int64): int64 {.magic: "BitorI64", noSideEffect.} - ## computes the `bitwise or` of numbers `x` and `y`. -proc `xor` *(x, y: int64): int64 {.magic: "BitxorI64", noSideEffect.} - ## computes the `bitwise xor` of numbers `x` and `y`. +proc `-%` *(x, y: int): int {.magic: "SubU", noSideEffect.} +proc `-%` *(x, y: int8): int8 {.magic: "SubU", noSideEffect.} +proc `-%` *(x, y: int16): int16 {.magic: "SubU", noSideEffect.} +proc `-%` *(x, y: int32): int32 {.magic: "SubU", noSideEffect.} +proc `-%` *(x, y: int64): int64 {.magic: "SubU64", noSideEffect.} + ## treats `x` and `y` as unsigned and subtracts them. The result is + ## truncated to fit into the result. This implements modulo arithmetic. + ## No overflow errors are possible. -proc `==` *(x, y: int64): bool {.magic: "EqI64", noSideEffect.} -proc `<=` *(x, y: int64): bool {.magic: "LeI64", noSideEffect.} -proc `<` *(x, y: int64): bool {.magic: "LtI64", noSideEffect.} -proc abs*(x: int64): int64 {.magic: "AbsI64", noSideEffect.} -proc min*(x, y: int64): int64 {.magic: "MinI64", noSideEffect.} -proc max*(x, y: int64): int64 {.magic: "MaxI64", noSideEffect.} +proc `*%` *(x, y: int): int {.magic: "MulU", noSideEffect.} +proc `*%` *(x, y: int8): int8 {.magic: "MulU", noSideEffect.} +proc `*%` *(x, y: int16): int16 {.magic: "MulU", noSideEffect.} +proc `*%` *(x, y: int32): int32 {.magic: "MulU", noSideEffect.} +proc `*%` *(x, y: int64): int64 {.magic: "MulU64", noSideEffect.} + ## treats `x` and `y` as unsigned and multiplies them. The result is + ## truncated to fit into the result. This implements modulo arithmetic. + ## No overflow errors are possible. + +proc `/%` *(x, y: int): int {.magic: "DivU", noSideEffect.} +proc `/%` *(x, y: int8): int8 {.magic: "DivU", noSideEffect.} +proc `/%` *(x, y: int16): int16 {.magic: "DivU", noSideEffect.} +proc `/%` *(x, y: int32): int32 {.magic: "DivU", noSideEffect.} +proc `/%` *(x, y: int64): int64 {.magic: "DivU64", noSideEffect.} + ## treats `x` and `y` as unsigned and divides them. The result is + ## truncated to fit into the result. This implements modulo arithmetic. + ## No overflow errors are possible. + +proc `%%` *(x, y: int): int {.magic: "ModU", noSideEffect.} +proc `%%` *(x, y: int8): int8 {.magic: "ModU", noSideEffect.} +proc `%%` *(x, y: int16): int16 {.magic: "ModU", noSideEffect.} +proc `%%` *(x, y: int32): int32 {.magic: "ModU", noSideEffect.} +proc `%%` *(x, y: int64): int64 {.magic: "ModU64", noSideEffect.} + ## treats `x` and `y` as unsigned and compute the modulo of `x` and `y`. + ## The result is truncated to fit into the result. + ## This implements modulo arithmetic. + ## No overflow errors are possible. -# same for floating point: +proc `<=%` *(x, y: int): bool {.magic: "LeU", noSideEffect.} +proc `<=%` *(x, y: int8): bool {.magic: "LeU", noSideEffect.} +proc `<=%` *(x, y: int16): bool {.magic: "LeU", noSideEffect.} +proc `<=%` *(x, y: int32): bool {.magic: "LeU", noSideEffect.} +proc `<=%` *(x, y: int64): bool {.magic: "LeU64", noSideEffect.} + ## treats `x` and `y` as unsigned and compares them. + ## Returns true iff ``unsigned(x) <= unsigned(y)``. + +proc `<%` *(x, y: int): bool {.magic: "LtU", noSideEffect.} +proc `<%` *(x, y: int8): bool {.magic: "LtU", noSideEffect.} +proc `<%` *(x, y: int16): bool {.magic: "LtU", noSideEffect.} +proc `<%` *(x, y: int32): bool {.magic: "LtU", noSideEffect.} +proc `<%` *(x, y: int64): bool {.magic: "LtU64", noSideEffect.} + ## treats `x` and `y` as unsigned and compares them. + ## Returns true iff ``unsigned(x) < unsigned(y)``. + + +# floating point operations: proc `+` *(x: float): float {.magic: "UnaryPlusF64", noSideEffect.} proc `-` *(x: float): float {.magic: "UnaryMinusF64", noSideEffect.} proc `+` *(x, y: float): float {.magic: "AddF64", noSideEffect.} @@ -423,11 +599,21 @@ proc cmp*[T](x, y: T): int = proc cmp*(x, y: string): int {.noSideEffect.} ## Compare proc for strings. More efficient than the generic version. +proc `@` * [IDX, T](a: array[IDX, T]): seq[T] {. + magic: "ArrToSeq", nosideeffect.} + ## turns an array into a sequence. This most often useful for constructing + ## sequences with the array constructor: ``@[1, 2, 3]`` has the type + ## ``seq[int]``, while ``[1, 2, 3]`` has the type ``array[0..2, int]``. + # concat operator: -proc `&` * (x: string, y: char): string {.magic: "ConStrStr", noSideEffect.} -proc `&` * (x: char, y: char): string {.magic: "ConStrStr", noSideEffect.} -proc `&` * (x, y: string): string {.magic: "ConStrStr", noSideEffect.} -proc `&` * (x: char, y: string): string {.magic: "ConStrStr", noSideEffect.} +proc `&` * (x: string, y: char): string {. + magic: "ConStrStr", noSideEffect, merge.} +proc `&` * (x: char, y: char): string {. + magic: "ConStrStr", noSideEffect, merge.} +proc `&` * (x, y: string): string {. + magic: "ConStrStr", noSideEffect, merge.} +proc `&` * (x: char, y: string): string {. + magic: "ConStrStr", noSideEffect, merge.} ## is the `concatenation operator`. It concatenates `x` and `y`. proc add * (x: var string, y: char) {.magic: "AppendStrCh".} @@ -466,7 +652,7 @@ proc repr*[T](x: T): string {.magic: "Repr", noSideEffect.} type TAddress* = int ## is the signed integer type that should be used for converting - ## pointers to integer addresses. + ## pointers to integer addresses for readability. type BiggestInt* = int64 @@ -500,7 +686,7 @@ type # these work for most platforms: ## This is the same as the type ``long double`` in *C*. ## This C type is not supported by Nimrod's code generator - cstringArray* {.importc: "char**", nodecl.} = array [0..50_000, cstring] + cstringArray* {.importc: "char**", nodecl.} = ptr array [0..50_000, cstring] ## This is the same as the type ``char**`` in *C*. TEndian* = enum ## is a type describing the endianness of a processor. @@ -512,50 +698,49 @@ type # these work for most platforms: PInt32* = ptr Int32 ## an alias for ``ptr int32`` const - QuitSuccess* = 0 - ## is the value that should be passed to ``quit`` to indicate - ## success. - - QuitFailure* = 1 - ## is the value that should be passed to ``quit`` to indicate - ## failure. + isMainModule* {.magic: "IsMainModule".}: bool = false + ## is true only when accessed in the main module. This works thanks to + ## compiler magic. It is useful to embed testing code in a module. CompileDate* {.magic: "CompileDate"}: string = "0000-00-00" ## is the date of compilation as a string of the form - ## ``YYYY-MM-DD``. + ## ``YYYY-MM-DD``. This works thanks to compiler magic. CompileTime* {.magic: "CompileTime"}: string = "00:00:00" ## is the time of compilation as a string of the form - ## ``HH:MM:SS``. + ## ``HH:MM:SS``. This works thanks to compiler magic. NimrodVersion* {.magic: "NimrodVersion"}: string = "0.0.0" ## is the version of Nimrod as a string. + ## This works thanks to compiler magic. NimrodMajor* {.magic: "NimrodMajor"}: int = 0 ## is the major number of Nimrod's version. + ## This works thanks to compiler magic. NimrodMinor* {.magic: "NimrodMinor"}: int = 0 ## is the minor number of Nimrod's version. + ## This works thanks to compiler magic. NimrodPatch* {.magic: "NimrodPatch"}: int = 0 ## is the patch number of Nimrod's version. + ## This works thanks to compiler magic. cpuEndian* {.magic: "CpuEndian"}: TEndian = littleEndian - ## is the endianness of the target CPU. This is a valuable information - ## for low-level code only. - + ## is the endianness of the target CPU. This is a valuable piece of + ## information for low-level code only. This works thanks to compiler magic. proc toFloat*(i: int): float {. magic: "ToFloat", noSideEffect, importc: "toFloat".} ## converts an integer `i` into a ``float``. If the conversion - ## fails, `EInvalidValue` is raised. Note that on most platforms the - ## conversion cannot fail, however. + ## fails, `EInvalidValue` is raised. However, on most platforms the + ## conversion cannot fail. proc toBiggestFloat*(i: biggestint): biggestfloat {. magic: "ToBiggestFloat", noSideEffect, importc: "toBiggestFloat".} ## converts an biggestint `i` into a ``biggestfloat``. If the conversion - ## fails, `EInvalidValue` is raised. Note that on most platforms the - ## conversion cannot fail, however. + ## fails, `EInvalidValue` is raised. However, on most platforms the + ## conversion cannot fail. proc toInt*(f: float): int {. magic: "ToInt", noSideEffect, importc: "toInt".} @@ -569,15 +754,6 @@ proc toBiggestInt*(f: biggestfloat): biggestint {. ## rounds `f` if it does not contain an integer value. If the conversion ## fails (because `f` is infinite for example), `EInvalidValue` is raised. -proc quit*(errorcode: int = QuitSuccess) {. - magic: "Exit", importc: "exit", noDecl, noReturn.} - ## stops the program immediately; before stopping the program the - ## "quit procedures" are called in the opposite order they were added - ## with ``addQuitProc``. ``quit`` never returns and ignores any - ## exception that may have been raised by the quit procedures. - ## It does *not* call the garbage collector to free all the memory, - ## unless a quit procedure calls ``GC_collect``. - proc addQuitProc*(QuitProc: proc {.noconv.}) {.importc: "atexit", nodecl.} ## adds/registers a quit procedure. Each call to ``addQuitProc`` ## registers another quit procedure. Up to 30 procedures can be @@ -636,33 +812,29 @@ proc equalMem*(a, b: Pointer, size: int): bool {. ## *unsafe*. const - mallocHeader = if defined(useDL): "dlmalloc.h" else: "<stdlib.h>" + mallocHeader = "<stdlib.h>" proc alloc*(size: int): pointer {. - importc: if defined(useDL): "dlmalloc" else: "malloc", - header: mallocHeader, noconv.} + importc: "malloc", header: mallocHeader, noconv.} ## allocates a new memory block with at least ``size`` bytes. The ## block has to be freed with ``realloc(block, 0)`` or ## ``dealloc(block)``. The block is not initialized, so reading ## from it before writing to it is undefined behaviour! proc alloc0*(size: int): pointer {. - importc: if defined(useDL): "DL_ALLOC_0" else: "ALLOC_0", - header: mallocHeader, noconv.} + importc: "ALLOC_0", header: mallocHeader, noconv.} ## allocates a new memory block with at least ``size`` bytes. The ## block has to be freed with ``realloc(block, 0)`` or ## ``dealloc(block)``. The block is initialized with all bytes ## containing zero, so it is somewhat safer than ``alloc``. proc realloc*(p: Pointer, newsize: int): pointer {. - importc: if defined(useDL): "dlrealloc" else: "realloc", - header: mallocHeader, noconv.} + importc: "realloc", header: mallocHeader, noconv.} ## grows or shrinks a given memory block. If p is **nil** then a new ## memory block is returned. In either way the block has at least ## ``newsize`` bytes. If ``newsize == 0`` and p is not **nil** ## ``realloc`` calls ``dealloc(p)``. In other cases the block has to ## be freed with ``dealloc``. proc dealloc*(p: Pointer) {. - importc: if defined(useDL): "dlfree" else: "free", - header: mallocHeader, noconv.} + importc: "free", header: mallocHeader, noconv.} ## frees the memory allocated with ``alloc``, ``alloc0`` or ## ``realloc``. This procedure is dangerous! If one forgets to ## free the memory a leak occurs; if one tries to access freed @@ -687,79 +859,6 @@ proc swap*[T](a, b: var T) {.magic: "Swap".} ## swaps the values `a` and `b`. This is often more efficient than ## ``tmp = a; a = b; b = tmp``. Particularly useful for sorting algorithms. -proc ze*(x: int8): int {.magic: "Ze8ToI", noSideEffect.} - ## zero extends a smaller integer type to ``int``. This treats `x` as - ## unsigned. -proc ze*(x: int16): int {.magic: "Ze16ToI", noSideEffect.} - ## zero extends a smaller integer type to ``int``. This treats `x` as - ## unsigned. - -proc ze64*(x: int8): int64 {.magic: "Ze8ToI64", noSideEffect.} - ## zero extends a smaller integer type to ``int64``. This treats `x` as - ## unsigned. -proc ze64*(x: int16): int64 {.magic: "Ze16ToI64", noSideEffect.} - ## zero extends a smaller integer type to ``int64``. This treats `x` as - ## unsigned. - -proc ze64*(x: int32): int64 {.magic: "Ze32ToI64", noSideEffect.} - ## zero extends a smaller integer type to ``int64``. This treats `x` as - ## unsigned. -proc ze64*(x: int): int64 {.magic: "ZeIToI64", noDecl, noSideEffect.} - ## zero extends a smaller integer type to ``int64``. This treats `x` as - ## unsigned. Does nothing if the size of an ``int`` is the same as ``int64``. - ## (This is the case on 64 bit processors.) - -proc toU8*(x: int): int8 {.magic: "ToU8", noSideEffect.} - ## treats `x` as unsigned and converts it to a byte by taking the last 8 bits - ## from `x`. -proc toU16*(x: int): int16 {.magic: "ToU16", noSideEffect.} - ## treats `x` as unsigned and converts it to an ``int16`` by taking the last - ## 16 bits from `x`. -proc toU32*(x: int64): int32 {.magic: "ToU32", noSideEffect.} - ## treats `x` as unsigned and converts it to an ``int32`` by taking the - ## last 32 bits from `x`. - -proc `+%` *(x, y: int): int {.magic: "AddU", noSideEffect.} -proc `+%` *(x, y: int64): int64 {.magic: "AddU64", noSideEffect.} - ## treats `x` and `y` as unsigned and adds them. The result is truncated to - ## fit into the result. This implements modulo arithmetic. No overflow - ## errors are possible. - -proc `-%` *(x, y: int): int {.magic: "SubU", noSideEffect.} -proc `-%` *(x, y: int64): int64 {.magic: "SubU64", noSideEffect.} - ## treats `x` and `y` as unsigned and subtracts them. The result is - ## truncated to fit into the result. This implements modulo arithmetic. - ## No overflow errors are possible. - -proc `*%` *(x, y: int): int {.magic: "MulU", noSideEffect.} -proc `*%` *(x, y: int64): int64 {.magic: "MulU64", noSideEffect.} - ## treats `x` and `y` as unsigned and multiplies them. The result is - ## truncated to fit into the result. This implements modulo arithmetic. - ## No overflow errors are possible. - -proc `/%` *(x, y: int): int {.magic: "DivU", noSideEffect.} -proc `/%` *(x, y: int64): int64 {.magic: "DivU64", noSideEffect.} - ## treats `x` and `y` as unsigned and divides them. The result is - ## truncated to fit into the result. This implements modulo arithmetic. - ## No overflow errors are possible. - -proc `%%` *(x, y: int): int {.magic: "ModU", noSideEffect.} -proc `%%` *(x, y: int64): int64 {.magic: "ModU64", noSideEffect.} - ## treats `x` and `y` as unsigned and compute the modulo of `x` and `y`. - ## The result is truncated to fit into the result. - ## This implements modulo arithmetic. - ## No overflow errors are possible. - -proc `<=%` *(x, y: int): bool {.magic: "LeU", noSideEffect.} -proc `<=%` *(x, y: int64): bool {.magic: "LeU64", noSideEffect.} - ## treats `x` and `y` as unsigned and compares them. - ## Returns true iff ``unsigned(x) <= unsigned(y)``. - -proc `<%` *(x, y: int): bool {.magic: "LtU", noSideEffect.} -proc `<%` *(x, y: int64): bool {.magic: "LtU64", noSideEffect.} - ## treats `x` and `y` as unsigned and compares them. - ## Returns true iff ``unsigned(x) < unsigned(y)``. - template `>=%` *(x, y: expr): expr = y <=% x ## treats `x` and `y` as unsigned and compares them. ## Returns true iff ``unsigned(x) >= unsigned(y)``. @@ -803,17 +902,19 @@ proc getRefcount*[T](x: ref T): int {.importc: "getRefcount".} ## value is implementation-dependant. #proc writeStackTrace() {.export: "writeStackTrace".} -proc getCurrentExceptionMsg*(): string {.exportc.} - ## retrieves the error message that was attached to the current - ## exception; if there is none, "" is returned. + +when not defined(NimrodVM): + proc getCurrentExceptionMsg*(): string {.exportc.} + ## retrieves the error message that was attached to the current + ## exception; if there is none, "" is returned. # new constants: const - inf* {.magic: "Inf".} = 0.0 + inf* {.magic: "Inf".} = 1.0 / 0.0 ## contains the IEEE floating point value of positive infinity. - neginf* {.magic: "NegInf".} = 0.0 + neginf* {.magic: "NegInf".} = -inf ## contains the IEEE floating point value of negative infinity. - nan* {.magic: "NaN".} = 0.0 + nan* {.magic: "NaN".} = 0.0 / 0.0 ## contains an IEEE floating point value of *Not A Number*. Note ## that you cannot compare a floating point value to this value ## and expect a reasonable result - use the `classify` procedure @@ -826,20 +927,16 @@ var ## Only code compiled with the ``debugger:on`` switch calls this hook. # GC interface: -when defined(Unix) and not defined(macosX) and not defined(linux): - # BUGFIX for macosX - {.define: nativeDL.} -when defined(useDL) or defined(nativeDL): - proc getOccupiedMem*(): int - ## returns the number of bytes that are owned by the process and hold data. +proc getOccupiedMem*(): int + ## returns the number of bytes that are owned by the process and hold data. - proc getFreeMem*(): int - ## returns the number of bytes that are owned by the process, but do not - ## hold any meaningful data. +proc getFreeMem*(): int + ## returns the number of bytes that are owned by the process, but do not + ## hold any meaningful data. - proc getTotalMem*(): int - ## returns the number of bytes that are owned by the process. +proc getTotalMem*(): int + ## returns the number of bytes that are owned by the process. iterator countdown*[T](a, b: T, step = 1): T {.inline.} = @@ -906,7 +1003,6 @@ iterator items*(a: cstring): char {.inline.} = yield a[i] inc(i) - proc isNil*[T](x: seq[T]): bool {.noSideEffect, magic: "IsNil".} proc isNil*[T](x: ref T): bool {.noSideEffect, magic: "IsNil".} proc isNil*(x: string): bool {.noSideEffect, magic: "IsNil".} @@ -922,23 +1018,20 @@ proc isNil*(x: cstring): bool {.noSideEffect, magic: "IsNil".} # once in the system module. proc `&` *[T](x, y: seq[T]): seq[T] {.noSideEffect.} = - result = [] - setLen(result, x.len + y.len) + newSeq(result, x.len + y.len) for i in 0..x.len-1: result[i] = x[i] for i in 0..y.len-1: result[i] = y[i] proc `&` *[T](x: seq[T], y: T): seq[T] {.noSideEffect.} = - result = [] - setLen(x.len + 1) + newSeq(result, x.len + 1) for i in 0..x.len-1: result[i] = x[i] result[x.len] = y proc `&` *[T](x: T, y: seq[T]): seq[T] {.noSideEffect.} = - result = [] - setLen(y.len + 1) + newSeq(result, y.len + 1) for i in 0..y.len-1: result[i] = y[i] result[y.len] = x @@ -946,24 +1039,35 @@ proc `&` *[T](x: T, y: seq[T]): seq[T] {.noSideEffect.} = proc `&` *[T](x, y: T): seq[T] {.noSideEffect.} = return [x, y] -when not defined(ECMAScript): # XXX make this local procs - proc seqToPtr*[T](x: seq[T]): pointer {.inline, nosideeffect.} = - result = cast[pointer](x) -else: - proc seqToPtr*[T](x: seq[T]): pointer {.pure, nosideeffect.} = - asm """return `x`""" - -proc `==` *[T](x, y: seq[T]): bool {.noSideEffect.} = - ## Generic equals operator for sequences: relies on a equals operator for - ## the element type `T`. - if seqToPtr(x) == seqToPtr(y): - result = true - elif seqToPtr(x) == nil or seqToPtr(y) == nil: - result = false - elif x.len == y.len: - for i in 0..x.len-1: - if x[i] != y[i]: return false - result = true +when not defined(NimrodVM): + when not defined(ECMAScript): + # XXX make this local procs + proc seqToPtr*[T](x: seq[T]): pointer {.inline, nosideeffect.} = + result = cast[pointer](x) + else: + proc seqToPtr*[T](x: seq[T]): pointer {.pure, nosideeffect.} = + asm """return `x`""" + + proc `==` *[T](x, y: seq[T]): bool {.noSideEffect.} = + ## Generic equals operator for sequences: relies on a equals operator for + ## the element type `T`. + if seqToPtr(x) == seqToPtr(y): + result = true + elif seqToPtr(x) == nil or seqToPtr(y) == nil: + result = false + elif x.len == y.len: + for i in 0..x.len-1: + if x[i] != y[i]: return false + result = true + +proc find*[T, S](a: T, item: S): int {.inline.} = + ## Returns the first index of `item` in `a` or -1 if not found. This requires + ## appropriate `==` and `items` procs to work. + result = 0 + for i in items(a): + if i == item: return + inc(result) + result = -1 # ----------------- FPU ------------------------------------------------------ @@ -985,7 +1089,7 @@ proc GC_enable*() proc GC_fullCollect*() ## forces a full garbage collection pass. - ## Ordinary code does not need to call this. + ## Ordinary code does not need to call this (and should not). type TGC_Strategy* = enum ## the strategy the GC should use for the application @@ -1005,12 +1109,28 @@ proc GC_disableMarkAndSweep*() ## does not create cycles. Thus the mark and sweep phase can be deactivated ## and activated separately from the rest of the GC. - -{.push checks: off, line_dir: off, debugger: off, - assertions: on.} # obviously we cannot generate checking operations here :-) - # because it would yield into an endless recursion - # however, stack-traces are available for most parts - # of the code +proc GC_getStatistics*(): string + ## returns an informative string about the GC's activity. This may be useful + ## for tweaking. + +proc GC_ref*[T](x: ref T) {.magic: "GCref".} +proc GC_ref*[T](x: seq[T]) {.magic: "GCref".} +proc GC_ref*(x: string) {.magic: "GCref".} + ## marks the object `x` as referenced, so that it will not be freed until + ## it is unmarked via `GC_unref`. If called n-times for the same object `x`, + ## n calls to `GC_unref` are needed to unmark `x`. + +proc GC_unref*[T](x: ref T) {.magic: "GCunref".} +proc GC_unref*[T](x: seq[T]) {.magic: "GCunref".} +proc GC_unref*(x: string) {.magic: "GCunref".} + ## see the documentation of `GC_ref`. + + +{.push checks: off, line_dir: off, debugger: off.} +# obviously we cannot generate checking operations here :-) +# because it would yield into an endless recursion +# however, stack-traces are available for most parts +# of the code proc echo*[Ty](x: Ty) {.inline.} ## equivalent to ``writeln(stdout, x); flush(stdout)``. BUT: This is @@ -1025,7 +1145,29 @@ template newException(exceptn, message: expr): expr = e.msg = message e -when not defined(EcmaScript): +const + QuitSuccess* = 0 + ## is the value that should be passed to ``quit`` to indicate + ## success. + + QuitFailure* = 1 + ## is the value that should be passed to ``quit`` to indicate + ## failure. + +proc quit*(errorcode: int = QuitSuccess) {. + magic: "Exit", importc: "exit", noDecl, noReturn.} + ## stops the program immediately; before stopping the program the + ## "quit procedures" are called in the opposite order they were added + ## with ``addQuitProc``. ``quit`` never returns and ignores any + ## exception that may have been raised by the quit procedures. + ## It does *not* call the garbage collector to free all the memory, + ## unless a quit procedure calls ``GC_collect``. + +when not defined(EcmaScript) and not defined(NimrodVM): + proc quit*(errormsg: string) {.noReturn.} + ## a shorthand for ``echo(errormsg); quit(quitFailure)``. + +when not defined(EcmaScript) and not defined(NimrodVM): include hti @@ -1036,6 +1178,7 @@ when not defined(EcmaScript): strDesc.size = sizeof(string) strDesc.kind = tyString + strDesc.flags = {ntfAcyclic} initGC() # BUGFIX: need to be called here! {.push stack_trace: off.} @@ -1043,12 +1186,12 @@ when not defined(EcmaScript): include ansi_c proc cmp(x, y: string): int = - return c_strcmp(x, y) + return int(c_strcmp(x, y)) + const pccHack = if defined(pcc): "_" else: "" # Hack for PCC when defined(windows): # work-around C's sucking abstraction: # BUGFIX: stdin and stdout should be binary files! - const pccHack = if defined(pcc): "_" else: "" # Hack for PCC proc setmode(handle, mode: int) {.importc: pccHack & "setmode", header: "<io.h>".} proc fileno(f: C_TextFileStar): int {.importc: pccHack & "fileno", @@ -1082,6 +1225,9 @@ when not defined(EcmaScript): fmAppend ## Open the file for writing only; append data ## at the end. + TFileHandle* = cint ## type that represents an OS file handle; this is + ## useful for low-level file access + # text file handling: var stdin* {.importc: "stdin", noDecl.}: TFile ## The standard input stream. @@ -1106,6 +1252,12 @@ when not defined(EcmaScript): ## that the programmer needs to provide an appropriate error message anyway ## (yes, even in scripts). + proc OpenFile*(f: var TFile, filehandle: TFileHandle, + mode: TFileMode = fmRead): Bool + ## Creates a ``TFile`` from a `filehandle` with given `mode`. + ## + ## Default mode is readonly. Returns true iff the file could be opened. + proc CloseFile*(f: TFile) {.importc: "fclose", nodecl.} ## Closes the file. proc EndOfFile*(f: TFile): Bool @@ -1201,6 +1353,15 @@ when not defined(EcmaScript): yield res CloseFile(f) + proc fileHandle*(f: TFile): TFileHandle {.importc: "fileno", + header: "<stdio.h>"} + ## returns the OS file handle of the file ``f``. This is only useful for + ## platform specific programming. + + proc quit(errormsg: string) = + echo(errormsg) + quit(quitFailure) + # ---------------------------------------------------------------------------- include excpt @@ -1211,10 +1372,10 @@ when not defined(EcmaScript): # sequence type declarations here because the GC needs them too: type - TGenericSeq {.importc, nodecl, final.} = object + TGenericSeq {.compilerproc, pure.} = object len, space: int - PGenericSeq {.importc, nodecl.} = ptr TGenericSeq + PGenericSeq {.exportc.} = ptr TGenericSeq const GenericSeqSize = (2 * sizeof(int)) @@ -1235,10 +1396,32 @@ when not defined(EcmaScript): {.push stack_trace: off.} when defined(endb): include debugger + + when defined(profiler): + include profiler {.pop.} # stacktrace -else: +elif defined(ecmaScript): include ecmasys +elif defined(NimrodVM): + # Stubs for the GC interface: + proc GC_disable() = nil + proc GC_enable() = nil + proc GC_fullCollect() = nil + proc GC_setStrategy(strategy: TGC_Strategy) = nil + proc GC_enableMarkAndSweep() = nil + proc GC_disableMarkAndSweep() = nil + proc GC_getStatistics(): string = return "" + + proc getOccupiedMem(): int = return -1 + proc getFreeMem(): int = return -1 + proc getTotalMem(): int = return -1 + proc echo[Ty](x: Ty) = nil + + proc cmp(x, y: string): int = + if x == y: return 0 + if x < y: return -1 + return 1 include macros diff --git a/lib/times.nim b/lib/times.nim index 93524f568..774c9930c 100644 --- a/lib/times.nim +++ b/lib/times.nim @@ -23,8 +23,8 @@ type TWeekDay* = enum ## represents a weekday dMon, dTue, dWed, dThu, dFri, dSat, dSun - TTime* {.importc: "time_t", final.} = object ## abstract type that - ## represents a time + TTime* {.importc: "time_t", header: "<time.h>", final.} = object ## abstract type that + ## represents a time when defined(ECMAScript): getDay: proc (): int getFullYear: proc (): int @@ -96,11 +96,9 @@ proc TimeInfoToTime*(timeInfo: TTimeInfo): TTime ## them from the other information in the broken-down time structure. proc `$` *(timeInfo: TTimeInfo): string - ## converts a `TTimeInfo` object to a - ## string representation. + ## converts a `TTimeInfo` object to a string representation. proc `$` *(time: TTime): string - ## converts a calendar time to a - ## string representation. + ## converts a calendar time to a string representation. proc getDateStr*(): string ## gets the current date as a string of the format @@ -111,6 +109,14 @@ proc getClockStr*(): string proc `-` *(a, b: TTime): int64 ## computes the difference of two calendar times. Result is in seconds. +proc `<` * (a, b: TTime): bool = + ## returns true iff ``a < b``, that is iff a happened before b. + result = a - b < 0 + +proc `<=` * (a, b: TTime): bool = + ## returns true iff ``a <= b``. + result = a - b <= 0 + proc getStartMilsecs*(): int ## get the miliseconds from the start of the program @@ -162,7 +168,7 @@ when not defined(ECMAScript): result.hour = int(tm.hour) result.monthday = int(tm.monthday) result.month = TMonth(tm.month) - result.year = tm.year + 1900 + result.year = tm.year + 1900'i32 result.weekday = weekDays[int(tm.weekDay)] result.yearday = int(tm.yearday) @@ -180,8 +186,7 @@ when not defined(ECMAScript): result.isdst = -1 proc `-` (a, b: TTime): int64 = - return toInt(difftime(a, b)) # XXX: toBiggestInt is needed here, but - # Nim does not support it! + return toBiggestInt(difftime(a, b)) proc getStartMilsecs(): int = return clock() div (clocksPerSec div 1000) proc getTime(): TTime = return timec(nil) @@ -202,12 +207,23 @@ when not defined(ECMAScript): # because the header of mktime is broken in my version of libc return mktime(timeInfoToTM(cTimeInfo)) + proc toStringTillNL(p: cstring): string = + result = "" + var i = 0 + while p[i] != '\0' and p[i] != '\10' and p[i] != '\13': + add(result, p[i]) + inc(i) + return result + proc `$`(timeInfo: TTimeInfo): string = - return $asctime(timeInfoToTM(timeInfo)) + # BUGFIX: asctime returns a newline at the end! + var p = asctime(timeInfoToTM(timeInfo)) + result = toStringTillNL(p) proc `$`(time: TTime): string = + # BUGFIX: ctime returns a newline at the end! var a = time - return $ctime(addr(a)) + return toStringTillNL(ctime(addr(a))) else: proc getTime(): TTime {.importc: "new Date", nodecl.} diff --git a/lib/unicode.nim b/lib/unicode.nim index 6829ede50..de3b80c94 100644 --- a/lib/unicode.nim +++ b/lib/unicode.nim @@ -1,7 +1,7 @@ # # # Nimrod's Runtime Library -# (c) Copyright 2006 Andreas Rumpf +# (c) Copyright 2008 Andreas Rumpf # # See the file "copying.txt", included in this # distribution, for details about the copyright. @@ -9,7 +9,7 @@ type TUniChar* = int32 ## type that can hold any Unicode character - TUniChar16* = int16 ## + TUniChar16* = int16 ## 16 bit Unicode character template ones(n) = ((1 shl n)-1) diff --git a/lib/windows/windows.nim b/lib/windows/windows.nim index ab87bbd98..d14f56d12 100644 --- a/lib/windows/windows.nim +++ b/lib/windows/windows.nim @@ -23,7 +23,7 @@ type SHORT* = int16 WINT* = int32 LONG* = int32 - DWORD* = int + DWORD* = int32 PINTEGER* = ptr int32 PBOOL* = ptr WINBOOL LONGLONG* = int64 @@ -39,9 +39,9 @@ type ULONG_PTR* = TAddress DWORDLONG* = int64 # was unsigned long PDWORDLONG* = ptr DWORDLONG - HANDLE* = int32 + HANDLE* = int THandle* = HANDLE - HRESULT* = int32 + HRESULT* = int PHRESULT* = ptr HRESULT HACCEL* = HANDLE HBITMAP* = HANDLE @@ -5030,10 +5030,9 @@ const # added manually PM, TREEITEM is not defined in the C headers type - TREEITEM* {.final.} = object - HTREEITEM* = ptr TREEITEM - TTREEITEM* = TREEITEM - PTREEITEM* = ptr TREEITEM # was #define dname def_expr + TTREEITEM* {.final, pure.} = object + HTREEITEM* = ptr TTREEITEM + PTREEITEM* = ptr TTREEITEM proc TVI_ROOT*(): HTREEITEM # was #define dname def_expr @@ -6481,31 +6480,27 @@ type # WARNING # va_list is just a dummy record # MvdV: Nevertheless it should be a pointer type, not a record va_list* = cstring - ABC* {.final.} = object + TABC* {.final, pure.} = object abcA*: int32 abcB*: UINT abcC*: int32 - LPABC* = ptr ABC - TABC* = ABC - PABC* = ptr ABC - ABCFLOAT* {.final.} = object + LPABC* = ptr TABC + PABC* = ptr TABC + TABCFLOAT* {.final, pure.} = object abcfA*: float32 abcfB*: float32 abcfC*: float32 + LPABCFLOAT* = ptr TABCFLOAT + PABCFLOAT* = ptr TABCFLOAT - LPABCFLOAT* = ptr ABCFLOAT - TABCFLOAT* = ABCFLOAT - PABCFLOAT* = ptr ABCFLOAT - ACCEL* {.final.} = object + TACCEL* {.final, pure.} = object fVirt*: int8 key*: int16 cmd*: int16 - - LPACCEL* = ptr ACCEL - TACCEL* = ACCEL - PACCEL* = ptr ACCEL - ACE_HEADER* {.final.} = object + LPACCEL* = ptr TACCEL + PACCEL* = ptr TACCEL + ACE_HEADER* {.final, pure.} = object AceType*: int8 AceFlags*: int8 AceSize*: int16 @@ -6514,27 +6509,27 @@ type # WARNING PACE_HEADER* = ptr ACE_HEADER ACCESS_MASK* = DWORD REGSAM* = ACCESS_MASK - ACCESS_ALLOWED_ACE* {.final.} = object + ACCESS_ALLOWED_ACE* {.final, pure.} = object Header*: ACE_HEADER Mask*: ACCESS_MASK SidStart*: DWORD TACCESS_ALLOWED_ACE* = ACCESS_ALLOWED_ACE PACCESS_ALLOWED_ACE* = ptr ACCESS_ALLOWED_ACE - ACCESS_DENIED_ACE* {.final.} = object + ACCESS_DENIED_ACE* {.final, pure.} = object Header*: ACE_HEADER Mask*: ACCESS_MASK SidStart*: DWORD TACCESS_DENIED_ACE* = ACCESS_DENIED_ACE - ACCESSTIMEOUT* {.final.} = object + ACCESSTIMEOUT* {.final, pure.} = object cbSize*: UINT dwFlags*: DWORD iTimeOutMSec*: DWORD TACCESSTIMEOUT* = ACCESSTIMEOUT PACCESSTIMEOUT* = ptr ACCESSTIMEOUT - ACL* {.final.} = object + ACL* {.final, pure.} = object AclRevision*: int8 Sbz1*: int8 AclSize*: int16 @@ -6543,23 +6538,23 @@ type # WARNING PACL* = ptr ACL TACL* = ACL - TACL_REVISION_INFORMATION* {.final.} = object + TACL_REVISION_INFORMATION* {.final, pure.} = object AclRevision*: DWORD PACLREVISIONINFORMATION* = ptr TACL_REVISION_INFORMATION - TACL_SIZE_INFORMATION* {.final.} = object + TACL_SIZE_INFORMATION* {.final, pure.} = object AceCount*: DWORD AclBytesInUse*: DWORD AclBytesFree*: DWORD PACLSIZEINFORMATION* = ptr TACL_SIZE_INFORMATION - ACTION_HEADER* {.final.} = object + ACTION_HEADER* {.final, pure.} = object transport_id*: ULONG action_code*: USHORT reserved*: USHORT TACTIONHEADER* = ACTION_HEADER PACTIONHEADER* = ptr ACTION_HEADER - ADAPTER_STATUS* {.final.} = object + ADAPTER_STATUS* {.final, pure.} = object adapter_address*: array[0..5, UCHAR] rev_major*: UCHAR reserved0*: UCHAR @@ -6590,33 +6585,33 @@ type # WARNING TADAPTERSTATUS* = ADAPTER_STATUS PADAPTERSTATUS* = ptr ADAPTER_STATUS - ADDJOB_INFO_1* {.final.} = object + ADDJOB_INFO_1* {.final, pure.} = object Path*: LPTSTR JobId*: DWORD TADDJOB_INFO_1* = ADDJOB_INFO_1 PADDJOB_INFO_1* = ptr ADDJOB_INFO_1 - ANIMATIONINFO* {.final.} = object + ANIMATIONINFO* {.final, pure.} = object cbSize*: UINT iMinAnimate*: int32 LPANIMATIONINFO* = ptr ANIMATIONINFO TANIMATIONINFO* = ANIMATIONINFO PANIMATIONINFO* = ptr ANIMATIONINFO - POINT* {.final.} = object + POINT* {.final, pure.} = object x*: LONG y*: LONG LPPOINT* = ptr POINT TPOINT* = POINT PPOINT* = ptr POINT - RECT* {.final.} = object + RECT* {.final, pure.} = object TopLeft*, BottomRight*: TPoint LPRECT* = ptr RECT TRECT* = RECT PRECT* = ptr RECT - RECTL* {.final.} = object + RECTL* {.final, pure.} = object left*: LONG top*: LONG right*: LONG @@ -6624,7 +6619,7 @@ type # WARNING TRECTL* = RECTL PRECTL* = ptr RECTL - APPBARDATA* {.final.} = object + APPBARDATA* {.final, pure.} = object cbSize*: DWORD hWnd*: HWND uCallbackMessage*: UINT @@ -6634,7 +6629,7 @@ type # WARNING TAppBarData* = APPBARDATA PAppBarData* = ptr APPBARDATA - BITMAP* {.final.} = object + BITMAP* {.final, pure.} = object bmType*: LONG bmWidth*: LONG bmHeight*: LONG @@ -6646,9 +6641,8 @@ type # WARNING PBITMAP* = ptr BITMAP NPBITMAP* = ptr BITMAP LPBITMAP* = ptr BITMAP - tagBITMAP* = BITMAP TBITMAP* = BITMAP - BITMAPCOREHEADER* {.final.} = object + BITMAPCOREHEADER* {.final, pure.} = object bcSize*: DWORD bcWidth*: int16 bcHeight*: int16 @@ -6657,14 +6651,14 @@ type # WARNING TBITMAPCOREHEADER* = BITMAPCOREHEADER PBITMAPCOREHEADER* = ptr BITMAPCOREHEADER - RGBTRIPLE* {.final.} = object + RGBTRIPLE* {.final, pure.} = object rgbtBlue*: int8 rgbtGreen*: int8 rgbtRed*: int8 TRGBTRIPLE* = RGBTRIPLE PRGBTRIPLE* = ptr RGBTRIPLE - BITMAPCOREINFO* {.final.} = object + BITMAPCOREINFO* {.final, pure.} = object bmciHeader*: BITMAPCOREHEADER bmciColors*: array[0..0, RGBTRIPLE] @@ -6674,7 +6668,7 @@ type # WARNING # WORD bfReserved1; # WORD bfReserved2; # in declarator_list - BITMAPINFOHEADER* {.final.} = object + BITMAPINFOHEADER* {.final, pure.} = object biSize*: DWORD biWidth*: LONG biHeight*: LONG @@ -6690,16 +6684,15 @@ type # WARNING LPBITMAPINFOHEADER* = ptr BITMAPINFOHEADER TBITMAPINFOHEADER* = BITMAPINFOHEADER PBITMAPINFOHEADER* = ptr BITMAPINFOHEADER - RGBQUAD* {.final.} = object + RGBQUAD* {.final, pure.} = object rgbBlue*: int8 rgbGreen*: int8 rgbRed*: int8 rgbReserved*: int8 - tagRGBQUAD* = RGBQUAD TRGBQUAD* = RGBQUAD PRGBQUAD* = ptr RGBQUAD - BITMAPINFO* {.final.} = object + BITMAPINFO* {.final, pure.} = object bmiHeader*: BITMAPINFOHEADER bmiColors*: array[0..0, RGBQUAD] @@ -6710,25 +6703,23 @@ type # WARNING LPFXPT2DOT30* = ptr FXPT2DOT30 TPFXPT2DOT30* = FXPT2DOT30 PPFXPT2DOT30* = ptr FXPT2DOT30 - CIEXYZ* {.final.} = object + CIEXYZ* {.final, pure.} = object ciexyzX*: FXPT2DOT30 ciexyzY*: FXPT2DOT30 ciexyzZ*: FXPT2DOT30 - tagCIEXYZ* = CIEXYZ LPCIEXYZ* = ptr CIEXYZ TPCIEXYZ* = CIEXYZ PCIEXYZ* = ptr CIEXYZ - CIEXYZTRIPLE* {.final.} = object + CIEXYZTRIPLE* {.final, pure.} = object ciexyzRed*: CIEXYZ ciexyzGreen*: CIEXYZ ciexyzBlue*: CIEXYZ - tagCIEXYZTRIPLE* = CIEXYZTRIPLE LPCIEXYZTRIPLE* = ptr CIEXYZTRIPLE TCIEXYZTRIPLE* = CIEXYZTRIPLE PCIEXYZTRIPLE* = ptr CIEXYZTRIPLE - BITMAPV4HEADER* {.final.} = object + BITMAPV4HEADER* {.final, pure.} = object bV4Size*: DWORD bV4Width*: LONG bV4Height*: LONG @@ -6753,20 +6744,20 @@ type # WARNING LPBITMAPV4HEADER* = ptr BITMAPV4HEADER TBITMAPV4HEADER* = BITMAPV4HEADER PBITMAPV4HEADER* = ptr BITMAPV4HEADER - BITMAPFILEHEADER* {.final.} = object + BITMAPFILEHEADER* {.final, pure.} = object bfType*: int16 bfSize*: DWord bfReserved1*: int16 bfReserved2*: int16 bfOffBits*: DWord - BLOB* {.final.} = object + BLOB* {.final, pure.} = object cbSize*: ULONG pBlobData*: ptr int8 TBLOB* = BLOB PBLOB* = ptr BLOB - SHITEMID* {.final.} = object + SHITEMID* {.final, pure.} = object cb*: USHORT abID*: array[0..0, int8] @@ -6774,14 +6765,14 @@ type # WARNING LPCSHITEMID* = ptr SHITEMID TSHITEMID* = SHITEMID PSHITEMID* = ptr SHITEMID - ITEMIDLIST* {.final.} = object + ITEMIDLIST* {.final, pure.} = object mkid*: SHITEMID LPITEMIDLIST* = ptr ITEMIDLIST LPCITEMIDLIST* = ptr ITEMIDLIST TITEMIDLIST* = ITEMIDLIST PITEMIDLIST* = ptr ITEMIDLIST - BROWSEINFO* {.final.} = object + BROWSEINFO* {.final, pure.} = object hwndOwner*: HWND pidlRoot*: LPCITEMIDLIST pszDisplayName*: LPSTR @@ -6794,14 +6785,14 @@ type # WARNING LPBROWSEINFO* = ptr BROWSEINFO Tbrowseinfo* = BROWSEINFO PBROWSEINFO* = ptr BROWSEINFO - FILETIME* {.final.} = object + FILETIME* {.final, pure.} = object dwLowDateTime*: DWORD dwHighDateTime*: DWORD LPFILETIME* = ptr FILETIME TFILETIME* = FILETIME PFILETIME* = ptr FILETIME - BY_HANDLE_FILE_INFORMATION* {.final.} = object + BY_HANDLE_FILE_INFORMATION* {.final, pure.} = object dwFileAttributes*: DWORD ftCreationTime*: FILETIME ftLastAccessTime*: FILETIME @@ -6816,34 +6807,34 @@ type # WARNING LPBY_HANDLE_FILE_INFORMATION* = ptr BY_HANDLE_FILE_INFORMATION TBYHANDLEFILEINFORMATION* = BY_HANDLE_FILE_INFORMATION PBYHANDLEFILEINFORMATION* = ptr BY_HANDLE_FILE_INFORMATION - FIXED* {.final.} = object + FIXED* {.final, pure.} = object fract*: int16 value*: SHORT TFIXED* = FIXED PFIXED* = ptr FIXED - POINTFX* {.final.} = object + POINTFX* {.final, pure.} = object x*: FIXED y*: FIXED TPOINTFX* = POINTFX PPOINTFX* = ptr POINTFX - POINTL* {.final.} = object + POINTL* {.final, pure.} = object x*: LONG y*: LONG TPOINTL* = POINTL PPOINTL* = ptr POINTL - TSmallPoint* {.final.} = object + TSmallPoint* {.final, pure.} = object X*, Y*: SHORT - POINTS* {.final.} = object + POINTS* {.final, pure.} = object x*: SHORT y*: SHORT TPOINTS* = POINTS PPOINTS* = ptr POINTS - CANDIDATEFORM* {.final.} = object + CANDIDATEFORM* {.final, pure.} = object dwIndex*: DWORD dwStyle*: DWORD ptCurrentPos*: POINT @@ -6852,7 +6843,7 @@ type # WARNING LPCANDIDATEFORM* = ptr CANDIDATEFORM TCANDIDATEFORM* = CANDIDATEFORM PCANDIDATEFORM* = ptr CANDIDATEFORM - CANDIDATELIST* {.final.} = object + CANDIDATELIST* {.final, pure.} = object dwSize*: DWORD dwStyle*: DWORD dwCount*: DWORD @@ -6864,7 +6855,7 @@ type # WARNING LPCANDIDATELIST* = ptr CANDIDATELIST TCANDIDATELIST* = CANDIDATELIST PCANDIDATELIST* = ptr CANDIDATELIST - CREATESTRUCT* {.final.} = object + CREATESTRUCT* {.final, pure.} = object lpCreateParams*: LPVOID hInstance*: HINST hMenu*: HMENU @@ -6881,25 +6872,25 @@ type # WARNING LPCREATESTRUCT* = ptr CREATESTRUCT TCREATESTRUCT* = CREATESTRUCT PCREATESTRUCT* = ptr CREATESTRUCT - CBT_CREATEWND* {.final.} = object + CBT_CREATEWND* {.final, pure.} = object lpcs*: LPCREATESTRUCT hwndInsertAfter*: HWND TCBT_CREATEWND* = CBT_CREATEWND PCBT_CREATEWND* = ptr CBT_CREATEWND - CBTACTIVATESTRUCT* {.final.} = object + CBTACTIVATESTRUCT* {.final, pure.} = object fMouse*: WINBOOL hWndActive*: HWND TCBTACTIVATESTRUCT* = CBTACTIVATESTRUCT PCBTACTIVATESTRUCT* = ptr CBTACTIVATESTRUCT - CHAR_INFO* {.final.} = object + CHAR_INFO* {.final, pure.} = object UnicodeChar*: WCHAR Attributes*: int16 # other union part: AsciiChar : CHAR TCHAR_INFO* = CHAR_INFO PCHAR_INFO* = ptr CHAR_INFO - CHARFORMAT* {.final.} = object + CHARFORMAT* {.final, pure.} = object cbSize*: UINT dwMask*: DWORD dwEffects*: DWORD @@ -6912,27 +6903,26 @@ type # WARNING Tcharformat* = CHARFORMAT Pcharformat* = ptr CHARFORMAT - CHARRANGE* {.final.} = object + CHARRANGE* {.final, pure.} = object cpMin*: LONG cpMax*: LONG Tcharrange* = CHARRANGE Pcharrange* = ptr CHARRANGE - CHARSET* {.final.} = object + CHARSET* {.final, pure.} = object aflBlock*: array[0..2, DWORD] flLang*: DWORD TCHARSET* = CHARSET PCHARSET* = ptr CHARSET - FONTSIGNATURE* {.final.} = object + FONTSIGNATURE* {.final, pure.} = object fsUsb*: array[0..3, DWORD] fsCsb*: array[0..1, DWORD] LPFONTSIGNATURE* = ptr FONTSIGNATURE - tagFONTSIGNATURE* = FONTSIGNATURE TFONTSIGNATURE* = FONTSIGNATURE PFONTSIGNATURE* = ptr FONTSIGNATURE - CHARSETINFO* {.final.} = object + CHARSETINFO* {.final, pure.} = object ciCharset*: UINT ciACP*: UINT fs*: FONTSIGNATURE @@ -6940,7 +6930,7 @@ type # WARNING LPCHARSETINFO* = ptr CHARSETINFO TCHARSETINFO* = CHARSETINFO PCHARSETINFO* = ptr CHARSETINFO #CHOOSECOLOR = record confilcts with function ChooseColor - TCHOOSECOLOR* {.final.} = object + TCHOOSECOLOR* {.final, pure.} = object lStructSize*: DWORD hwndOwner*: HWND hInstance*: HWND @@ -6953,7 +6943,7 @@ type # WARNING LPCHOOSECOLOR* = ptr TCHOOSECOLOR PCHOOSECOLOR* = ptr TCHOOSECOLOR - LOGFONT* {.final.} = object + LOGFONT* {.final, pure.} = object lfHeight*: LONG lfWidth*: LONG lfEscapement*: LONG @@ -6974,7 +6964,7 @@ type # WARNING TLOGFONTA* = LOGFONT PLOGFONT* = ptr LOGFONT PLOGFONTA* = PLOGFONT - LOGFONTW* {.final.} = object + LOGFONTW* {.final, pure.} = object lfHeight*: LONG lfWidth*: LONG lfEscapement*: LONG @@ -6994,7 +6984,7 @@ type # WARNING NPLOGFONTW* = ptr LOGFONTW TLogFontW* = LOGFONTW PLogFontW* = ptr TLogFontW - TCHOOSEFONT* {.final.} = object + TCHOOSEFONT* {.final, pure.} = object lStructSize*: DWORD hwndOwner*: HWND hDC*: HDC @@ -7014,22 +7004,21 @@ type # WARNING LPCHOOSEFONT* = ptr TCHOOSEFONT PCHOOSEFONT* = ptr TCHOOSEFONT - CIDA* {.final.} = object + CIDA* {.final, pure.} = object cidl*: UINT aoffset*: array[0..0, UINT] LPIDA* = ptr CIDA TIDA* = CIDA PIDA* = ptr CIDA - CLIENTCREATESTRUCT* {.final.} = object + CLIENTCREATESTRUCT* {.final, pure.} = object hWindowMenu*: HANDLE idFirstChild*: UINT LPCLIENTCREATESTRUCT* = ptr CLIENTCREATESTRUCT - tagCLIENTCREATESTRUCT* = CLIENTCREATESTRUCT TCLIENTCREATESTRUCT* = CLIENTCREATESTRUCT PCLIENTCREATESTRUCT* = ptr CLIENTCREATESTRUCT - CMINVOKECOMMANDINFO* {.final.} = object + CMINVOKECOMMANDINFO* {.final, pure.} = object cbSize*: DWORD fMask*: DWORD hwnd*: HWND @@ -7043,7 +7032,7 @@ type # WARNING LPCMINVOKECOMMANDINFO* = ptr CMINVOKECOMMANDINFO TCMInvokeCommandInfo* = CMINVOKECOMMANDINFO PCMInvokeCommandInfo* = ptr CMINVOKECOMMANDINFO - COLORADJUSTMENT* {.final.} = object + COLORADJUSTMENT* {.final, pure.} = object caSize*: int16 caFlags*: int16 caIlluminantIndex*: int16 @@ -7058,17 +7047,16 @@ type # WARNING caRedGreenTint*: SHORT LPCOLORADJUSTMENT* = ptr COLORADJUSTMENT - tagCOLORADJUSTMENT* = COLORADJUSTMENT TCOLORADJUSTMENT* = COLORADJUSTMENT PCOLORADJUSTMENT* = ptr COLORADJUSTMENT - COLORMAP* {.final.} = object + COLORMAP* {.final, pure.} = object `from`*: COLORREF `to`*: COLORREF # XXX! LPCOLORMAP* = ptr COLORMAP TCOLORMAP* = COLORMAP PCOLORMAP* = ptr COLORMAP - DCB* {.final.} = object + DCB* {.final, pure.} = object DCBlength*: DWORD BaudRate*: DWORD flags*: DWORD @@ -7148,7 +7136,7 @@ proc set_fAbortOnError*(a: var DCB, fAbortOnError: DWORD) proc fDummy2*(a: var DCB): DWORD proc set_fDummy2*(a: var DCB, fDummy2: DWORD) type - COMMCONFIG* {.final.} = object + COMMCONFIG* {.final, pure.} = object dwSize*: DWORD wVersion*: int16 wReserved*: int16 @@ -7161,7 +7149,7 @@ type LPCOMMCONFIG* = ptr COMMCONFIG TCOMMCONFIG* = COMMCONFIG PCOMMCONFIG* = ptr COMMCONFIG - COMMPROP* {.final.} = object + COMMPROP* {.final, pure.} = object wPacketLength*: int16 wPacketVersion*: int16 dwServiceMask*: DWORD @@ -7184,7 +7172,7 @@ type LPCOMMPROP* = ptr COMMPROP TCOMMPROP* = COMMPROP PCOMMPROP* = ptr COMMPROP - COMMTIMEOUTS* {.final.} = object + COMMTIMEOUTS* {.final, pure.} = object ReadIntervalTimeout*: DWORD ReadTotalTimeoutMultiplier*: DWORD ReadTotalTimeoutConstant*: DWORD @@ -7194,7 +7182,7 @@ type LPCOMMTIMEOUTS* = ptr COMMTIMEOUTS TCOMMTIMEOUTS* = COMMTIMEOUTS PCOMMTIMEOUTS* = ptr COMMTIMEOUTS - COMPAREITEMSTRUCT* {.final.} = object + COMPAREITEMSTRUCT* {.final, pure.} = object CtlType*: UINT CtlID*: UINT hwndItem*: HWND @@ -7203,17 +7191,16 @@ type itemID2*: UINT itemData2*: ULONG_PTR - tagCOMPAREITEMSTRUCT* = COMPAREITEMSTRUCT TCOMPAREITEMSTRUCT* = COMPAREITEMSTRUCT PCOMPAREITEMSTRUCT* = ptr COMPAREITEMSTRUCT - COMPCOLOR* {.final.} = object + COMPCOLOR* {.final, pure.} = object crText*: COLORREF crBackground*: COLORREF dwEffects*: DWORD TCOMPCOLOR* = COMPCOLOR PCOMPCOLOR* = ptr COMPCOLOR - COMPOSITIONFORM* {.final.} = object + COMPOSITIONFORM* {.final, pure.} = object dwStyle*: DWORD ptCurrentPos*: POINT rcArea*: RECT @@ -7222,7 +7209,7 @@ type TCOMPOSITIONFORM* = COMPOSITIONFORM PCOMPOSITIONFORM* = ptr COMPOSITIONFORM # TComStatFlags = set of (fCtsHold, fDsrHold, fRlsdHold , fXoffHold , # fXoffSent , fEof , fTxim , fReserved); - COMSTAT* {.final.} = object + COMSTAT* {.final, pure.} = object flag0*: DWORD # can't use tcomstatflags, set packing issues # and conflicts with macro's cbInQue*: DWORD @@ -7268,20 +7255,20 @@ proc set_fTxim*(a: var COMSTAT, fTxim: DWORD) proc fReserved*(a: var COMSTAT): DWORD proc set_fReserved*(a: var COMSTAT, fReserved: DWORD) type - CONSOLE_CURSOR_INFO* {.final.} = object + CONSOLE_CURSOR_INFO* {.final, pure.} = object dwSize*: DWORD bVisible*: WINBOOL PCONSOLE_CURSOR_INFO* = ptr CONSOLE_CURSOR_INFO TCONSOLECURSORINFO* = CONSOLE_CURSOR_INFO TCURSORINFO* = CONSOLE_CURSOR_INFO - COORD* {.final.} = object + COORD* {.final, pure.} = object X*: SHORT Y*: SHORT TCOORD* = COORD PCOORD* = ptr COORD - SMALL_RECT* {.final.} = object + SMALL_RECT* {.final, pure.} = object Left*: SHORT Top*: SHORT Right*: SHORT @@ -7289,7 +7276,7 @@ type TSMALL_RECT* = SMALL_RECT PSMALL_RECT* = ptr SMALL_RECT - CONSOLE_SCREEN_BUFFER_INFO* {.final.} = object + CONSOLE_SCREEN_BUFFER_INFO* {.final, pure.} = object dwSize*: COORD dwCursorPosition*: COORD wAttributes*: int16 @@ -7301,7 +7288,7 @@ type when defined(i386): type - FLOATING_SAVE_AREA* {.final.} = object + FLOATING_SAVE_AREA* {.final, pure.} = object ControlWord*: DWORD StatusWord*: DWORD TagWord*: DWORD @@ -7314,7 +7301,7 @@ when defined(i386): TFLOATINGSAVEAREA* = FLOATING_SAVE_AREA PFLOATINGSAVEAREA* = ptr FLOATING_SAVE_AREA - CONTEXT* {.final.} = object + CONTEXT* {.final, pure.} = object ContextFlags*: DWORD Dr0*: DWORD Dr1*: DWORD @@ -7345,7 +7332,7 @@ when defined(x86_64): # Define 128-bit 16-byte aligned xmm register type. # type - M128A* {.final.} = object + M128A* {.final, pure.} = object Low*: ULONGLONG High*: LONGLONG @@ -7355,7 +7342,7 @@ when defined(x86_64): # #typedef struct _XMM_SAVE_AREA32 { type - XMM_SAVE_AREA32* {.final.} = object + XMM_SAVE_AREA32* {.final, pure.} = object ControlWord*: int16 StatusWord*: int16 TagWord*: int8 @@ -7378,7 +7365,7 @@ when defined(x86_64): const LEGACY_SAVE_AREA_LENGTH* = sizeof(XMM_SAVE_AREA32) type - CONTEXT* {.final.} = object + CONTEXT* {.final, pure.} = object P1Home*: DWORD64 P2Home*: DWORD64 P3Home*: DWORD64 @@ -7465,7 +7452,7 @@ when defined(powerpc32): # Debug Status Register # Debug Control Register type - CONTEXT* {.final.} = object + CONTEXT* {.final, pure.} = object Fpr0*: float64 Fpr1*: float64 Fpr2*: float64 @@ -7554,13 +7541,13 @@ type PCONTEXT* = ptr CONTEXT type - LIST_ENTRY* {.final.} = object + LIST_ENTRY* {.final, pure.} = object Flink*: ptr LIST_ENTRY Blink*: ptr LIST_ENTRY TLISTENTRY* = LIST_ENTRY PLISTENTRY* = ptr LIST_ENTRY - CRITICAL_SECTION_DEBUG* {.final.} = object + CRITICAL_SECTION_DEBUG* {.final, pure.} = object `type`*: int16 CreatorBackTraceIndex*: int16 CriticalSection*: ptr TCRITICAL_SECTION @@ -7570,7 +7557,7 @@ type Depth*: DWORD OwnerBackTrace*: array[0..4, PVOID] - TRTL_CRITICAL_SECTION* {.final.} = object + TRTL_CRITICAL_SECTION* {.final, pure.} = object DebugInfo*: ptr CRITICAL_SECTION_DEBUG LockCount*: int32 RecursionCount*: int32 @@ -7586,7 +7573,7 @@ type TCRITICAL_SECTION* = TRTLCriticalSection PCRITICAL_SECTION* = PRTLCriticalSection LPCRITICAL_SECTION* = PRTLCriticalSection - SECURITY_QUALITY_OF_SERVICE* {.final.} = object + SECURITY_QUALITY_OF_SERVICE* {.final, pure.} = object len*: DWORD ImpersonationLevel*: SECURITY_IMPERSONATION_LEVEL ContextTrackingMode*: WINBOOL @@ -7594,7 +7581,7 @@ type PSECURITY_QUALITY_OF_SERVICE* = ptr SECURITY_QUALITY_OF_SERVICE TSECURITYQUALITYOFSERVICE* = SECURITY_QUALITY_OF_SERVICE - CONVCONTEXT* {.final.} = object + CONVCONTEXT* {.final, pure.} = object cb*: UINT wFlags*: UINT wCountryID*: UINT @@ -7605,7 +7592,7 @@ type TCONVCONTEXT* = CONVCONTEXT PCONVCONTEXT* = ptr CONVCONTEXT - CONVINFO* {.final.} = object + CONVINFO* {.final, pure.} = object cb*: DWORD hUser*: DWORD hConvPartner*: HCONV @@ -7623,18 +7610,16 @@ type hwnd*: HWND hwndPartner*: HWND - tagCONVINFO* = CONVINFO TCONVINFO* = CONVINFO PCONVINFO* = ptr CONVINFO - COPYDATASTRUCT* {.final.} = object + COPYDATASTRUCT* {.final, pure.} = object dwData*: DWORD cbData*: DWORD lpData*: PVOID - tagCOPYDATASTRUCT* = COPYDATASTRUCT TCOPYDATASTRUCT* = COPYDATASTRUCT PCOPYDATASTRUCT* = ptr COPYDATASTRUCT - CPINFO* {.final.} = object + CPINFO* {.final, pure.} = object MaxCharSize*: UINT DefaultChar*: array[0..(MAX_DEFAULTCHAR) - 1, int8] LeadByte*: array[0..(MAX_LEADBYTES) - 1, int8] @@ -7642,16 +7627,15 @@ type LPCPINFO* = ptr CPINFO Tcpinfo* = CPINFO Pcpinfo* = ptr CPINFO - CPLINFO* {.final.} = object + CPLINFO* {.final, pure.} = object idIcon*: int32 idName*: int32 idInfo*: int32 lData*: LONG - tagCPLINFO* = CPLINFO TCPLINFO* = CPLINFO PCPLINFO* = ptr CPLINFO - CREATE_PROCESS_DEBUG_INFO* {.final.} = object + CREATE_PROCESS_DEBUG_INFO* {.final, pure.} = object hFile*: HANDLE hProcess*: HANDLE hThread*: HANDLE @@ -7665,7 +7649,7 @@ type TCREATEPROCESSDEBUGINFO* = CREATE_PROCESS_DEBUG_INFO PCREATEPROCESSDEBUGINFO* = ptr CREATE_PROCESS_DEBUG_INFO - CREATE_THREAD_DEBUG_INFO* {.final.} = object + CREATE_THREAD_DEBUG_INFO* {.final, pure.} = object hThread*: HANDLE lpThreadLocalBase*: LPVOID lpStartAddress*: LPTHREAD_START_ROUTINE @@ -7686,7 +7670,7 @@ type # INT iProtocol; # } CSADDR_INFO; # - CURRENCYFMT* {.final.} = object + CURRENCYFMT* {.final, pure.} = object NumDigits*: UINT LeadingZero*: UINT Grouping*: UINT @@ -7698,7 +7682,7 @@ type Tcurrencyfmt* = CURRENCYFMT Pcurrencyfmt* = ptr CURRENCYFMT - CURSORSHAPE* {.final.} = object + CURSORSHAPE* {.final, pure.} = object xHotSpot*: int32 yHotSpot*: int32 cx*: int32 @@ -7710,7 +7694,7 @@ type LPCURSORSHAPE* = ptr CURSORSHAPE TCURSORSHAPE* = CURSORSHAPE PCURSORSHAPE* = ptr CURSORSHAPE - CWPRETSTRUCT* {.final.} = object + CWPRETSTRUCT* {.final, pure.} = object lResult*: LRESULT lParam*: LPARAM wParam*: WPARAM @@ -7719,7 +7703,7 @@ type TCWPRETSTRUCT* = CWPRETSTRUCT PCWPRETSTRUCT* = ptr CWPRETSTRUCT - CWPSTRUCT* {.final.} = object + CWPSTRUCT* {.final, pure.} = object lParam*: LPARAM wParam*: WPARAM message*: UINT @@ -7727,26 +7711,26 @@ type TCWPSTRUCT* = CWPSTRUCT PCWPSTRUCT* = ptr CWPSTRUCT - DATATYPES_INFO_1* {.final.} = object + DATATYPES_INFO_1* {.final, pure.} = object pName*: LPTSTR TDATATYPESINFO1* = DATATYPES_INFO_1 PDATATYPESINFO1* = ptr DATATYPES_INFO_1 - DDEACK* {.final.} = object + DDEACK* {.final, pure.} = object flag0*: int16 TDDEACK* = DDEACK PDDEACK* = ptr DDEACK const - bm_DDEACK_bAppReturnCode* = 0x000000FF - bp_DDEACK_bAppReturnCode* = 0 - bm_DDEACK_reserved* = 0x00003F00 - bp_DDEACK_reserved* = 8 - bm_DDEACK_fBusy* = 0x00004000 - bp_DDEACK_fBusy* = 14 - bm_DDEACK_fAck* = 0x00008000 - bp_DDEACK_fAck* = 15 + bm_DDEACK_bAppReturnCode* = 0x000000FF'i16 + bp_DDEACK_bAppReturnCode* = 0'i16 + bm_DDEACK_reserved* = 0x00003F00'i16 + bp_DDEACK_reserved* = 8'i16 + bm_DDEACK_fBusy* = 0x00004000'i16 + bp_DDEACK_fBusy* = 14'i16 + bm_DDEACK_fAck* = 0x00008000'i16 + bp_DDEACK_fAck* = 15'i16 proc bAppReturnCode*(a: var DDEACK): int16 proc set_bAppReturnCode*(a: var DDEACK, bAppReturnCode: int16) @@ -7757,7 +7741,7 @@ proc set_fBusy*(a: var DDEACK, fBusy: int16) proc fAck*(a: var DDEACK): int16 proc set_fAck*(a: var DDEACK, fAck: int16) type - DDEADVISE* {.final.} = object + DDEADVISE* {.final, pure.} = object flag0*: int16 cfFormat*: SHORT @@ -7765,12 +7749,12 @@ type PDDEADVISE* = ptr DDEADVISE const - bm_DDEADVISE_reserved* = 0x00003FFF - bp_DDEADVISE_reserved* = 0 - bm_DDEADVISE_fDeferUpd* = 0x00004000 - bp_DDEADVISE_fDeferUpd* = 14 - bm_DDEADVISE_fAckReq* = 0x00008000 - bp_DDEADVISE_fAckReq* = 15 + bm_DDEADVISE_reserved* = 0x00003FFF'i16 + bp_DDEADVISE_reserved* = 0'i16 + bm_DDEADVISE_fDeferUpd* = 0x00004000'i16 + bp_DDEADVISE_fDeferUpd* = 14'i16 + bm_DDEADVISE_fAckReq* = 0x00008000'i16 + bp_DDEADVISE_fAckReq* = 15'i16 proc reserved*(a: var DDEADVISE): int16 proc set_reserved*(a: var DDEADVISE, reserved: int16) @@ -7779,7 +7763,7 @@ proc set_fDeferUpd*(a: var DDEADVISE, fDeferUpd: int16) proc fAckReq*(a: var DDEADVISE): int16 proc set_fAckReq*(a: var DDEADVISE, fAckReq: int16) type - DDEDATA* {.final.} = object + DDEDATA* {.final, pure.} = object flag0*: int16 cfFormat*: SHORT Value*: array[0..0, int8] @@ -7787,16 +7771,16 @@ type PDDEDATA* = ptr DDEDATA const - bm_DDEDATA_unused* = 0x00000FFF - bp_DDEDATA_unused* = 0 - bm_DDEDATA_fResponse* = 0x00001000 - bp_DDEDATA_fResponse* = 12 - bm_DDEDATA_fRelease* = 0x00002000 - bp_DDEDATA_fRelease* = 13 - bm_DDEDATA_reserved* = 0x00004000 - bp_DDEDATA_reserved* = 14 - bm_DDEDATA_fAckReq* = 0x00008000 - bp_DDEDATA_fAckReq* = 15 + bm_DDEDATA_unused* = 0x00000FFF'i16 + bp_DDEDATA_unused* = 0'i16 + bm_DDEDATA_fResponse* = 0x00001000'i16 + bp_DDEDATA_fResponse* = 12'i16 + bm_DDEDATA_fRelease* = 0x00002000'i16 + bp_DDEDATA_fRelease* = 13'i16 + bm_DDEDATA_reserved* = 0x00004000'i16 + bp_DDEDATA_reserved* = 14'i16 + bm_DDEDATA_fAckReq* = 0x00008000'i16 + bp_DDEDATA_fAckReq* = 15'i16 proc unused*(a: var DDEDATA): int16 proc set_unused*(a: var DDEDATA, unused: int16) @@ -7809,7 +7793,7 @@ proc set_reserved*(a: var DDEDATA, reserved: int16) proc fAckReq*(a: var DDEDATA): int16 proc set_fAckReq*(a: var DDEDATA, fAckReq: int16) type - DDELN* {.final.} = object + DDELN* {.final, pure.} = object flag0*: int16 cfFormat*: SHORT @@ -7817,14 +7801,14 @@ type PDDELN* = ptr DDELN const - bm_DDELN_unused* = 0x00001FFF - bp_DDELN_unused* = 0 - bm_DDELN_fRelease* = 0x00002000 - bp_DDELN_fRelease* = 13 - bm_DDELN_fDeferUpd* = 0x00004000 - bp_DDELN_fDeferUpd* = 14 - bm_DDELN_fAckReq* = 0x00008000 - bp_DDELN_fAckReq* = 15 + bm_DDELN_unused* = 0x00001FFF'i16 + bp_DDELN_unused* = 0'i16 + bm_DDELN_fRelease* = 0x00002000'i16 + bp_DDELN_fRelease* = 13'i16 + bm_DDELN_fDeferUpd* = 0x00004000'i16 + bp_DDELN_fDeferUpd* = 14'i16 + bm_DDELN_fAckReq* = 0x00008000'i16 + bp_DDELN_fAckReq* = 15'i16 proc unused*(a: var DDELN): int16 proc set_unused*(a: var DDELN, unused: int16) @@ -7835,7 +7819,7 @@ proc set_fDeferUpd*(a: var DDELN, fDeferUpd: int16) proc fAckReq*(a: var DDELN): int16 proc set_fAckReq*(a: var DDELN, fAckReq: int16) type - DDEML_MSG_HOOK_DATA* {.final.} = object + DDEML_MSG_HOOK_DATA* {.final, pure.} = object uiLo*: UINT uiHi*: UINT cbData*: DWORD @@ -7843,7 +7827,7 @@ type TDDEMLMSGHOOKDATA* = DDEML_MSG_HOOK_DATA PDDEMLMSGHOOKDATA* = ptr DDEML_MSG_HOOK_DATA - DDEPOKE* {.final.} = object + DDEPOKE* {.final, pure.} = object flag0*: int16 cfFormat*: SHORT Value*: array[0..0, int8] @@ -7852,12 +7836,12 @@ type PDDEPOKE* = ptr DDEPOKE const - bm_DDEPOKE_unused* = 0x00001FFF - bp_DDEPOKE_unused* = 0 - bm_DDEPOKE_fRelease* = 0x00002000 - bp_DDEPOKE_fRelease* = 13 - bm_DDEPOKE_fReserved* = 0x0000C000 - bp_DDEPOKE_fReserved* = 14 + bm_DDEPOKE_unused* = 0x00001FFF'i16 + bp_DDEPOKE_unused* = 0'i16 + bm_DDEPOKE_fRelease* = 0x00002000'i16 + bp_DDEPOKE_fRelease* = 13'i16 + bm_DDEPOKE_fReserved* = 0x0000C000'i16 + bp_DDEPOKE_fReserved* = 14'i16 proc unused*(a: var DDEPOKE): int16 proc set_unused*(a: var DDEPOKE, unused: int16) @@ -7866,7 +7850,7 @@ proc set_fRelease*(a: var DDEPOKE, fRelease: int16) proc fReserved*(a: var DDEPOKE): int16 proc set_fReserved*(a: var DDEPOKE, fReserved: int16) type - DDEUP* {.final.} = object + DDEUP* {.final, pure.} = object flag0*: int16 cfFormat*: SHORT rgb*: array[0..0, int8] @@ -7875,16 +7859,16 @@ type PDDEUP* = ptr DDEUP const - bm_DDEUP_unused* = 0x00000FFF - bp_DDEUP_unused* = 0 - bm_DDEUP_fAck* = 0x00001000 - bp_DDEUP_fAck* = 12 - bm_DDEUP_fRelease* = 0x00002000 - bp_DDEUP_fRelease* = 13 - bm_DDEUP_fReserved* = 0x00004000 - bp_DDEUP_fReserved* = 14 - bm_DDEUP_fAckReq* = 0x00008000 - bp_DDEUP_fAckReq* = 15 + bm_DDEUP_unused* = 0x00000FFF'i16 + bp_DDEUP_unused* = 0'i16 + bm_DDEUP_fAck* = 0x00001000'i16 + bp_DDEUP_fAck* = 12'i16 + bm_DDEUP_fRelease* = 0x00002000'i16 + bp_DDEUP_fRelease* = 13'i16 + bm_DDEUP_fReserved* = 0x00004000'i16 + bp_DDEUP_fReserved* = 14'i16 + bm_DDEUP_fAckReq* = 0x00008000'i16 + bp_DDEUP_fAckReq* = 15'i16 proc unused*(a: var DDEUP): int16 proc set_unused*(a: var DDEUP, unused: int16) @@ -7897,7 +7881,7 @@ proc set_fReserved*(a: var DDEUP, fReserved: int16) proc fAckReq*(a: var DDEUP): int16 proc set_fAckReq*(a: var DDEUP, fAckReq: int16) type - EXCEPTION_RECORD* {.final.} = object + EXCEPTION_RECORD* {.final, pure.} = object ExceptionCode*: DWORD ExceptionFlags*: DWORD ExceptionRecord*: ptr EXCEPTION_RECORD @@ -7908,13 +7892,13 @@ type PEXCEPTION_RECORD* = ptr EXCEPTION_RECORD TEXCEPTIONRECORD* = EXCEPTION_RECORD - EXCEPTION_DEBUG_INFO* {.final.} = object + EXCEPTION_DEBUG_INFO* {.final, pure.} = object ExceptionRecord*: EXCEPTION_RECORD dwFirstChance*: DWORD PEXCEPTION_DEBUG_INFO* = ptr EXCEPTION_DEBUG_INFO TEXCEPTIONDEBUGINFO* = EXCEPTION_DEBUG_INFO - EXCEPTION_RECORD32* {.final.} = object + EXCEPTION_RECORD32* {.final, pure.} = object ExceptionCode*: DWORD ExceptionFlags*: DWORD ExceptionRecord*: DWORD @@ -7924,13 +7908,13 @@ type PEXCEPTION_RECORD32* = ptr EXCEPTION_RECORD32 TExceptionRecord32* = EXCEPTION_RECORD32 - EXCEPTION_DEBUG_INFO32* {.final.} = object + EXCEPTION_DEBUG_INFO32* {.final, pure.} = object ExceptionRecord*: EXCEPTION_RECORD32 dwFirstChance*: DWORD PEXCEPTION_DEBUG_INFO32* = ptr EXCEPTION_DEBUG_INFO32 TExceptionDebugInfo32* = EXCEPTION_DEBUG_INFO32 - EXCEPTION_RECORD64* {.final.} = object + EXCEPTION_RECORD64* {.final, pure.} = object ExceptionCode*: DWORD ExceptionFlags*: DWORD ExceptionRecord*: DWORD64 @@ -7941,23 +7925,23 @@ type PEXCEPTION_RECORD64* = ptr EXCEPTION_RECORD64 TExceptionRecord64* = EXCEPTION_RECORD64 - EXCEPTION_DEBUG_INFO64* {.final.} = object + EXCEPTION_DEBUG_INFO64* {.final, pure.} = object ExceptionRecord*: EXCEPTION_RECORD64 dwFirstChance*: DWORD PEXCEPTION_DEBUG_INFO64* = ptr EXCEPTION_DEBUG_INFO64 TExceptionDebugInfo64* = EXCEPTION_DEBUG_INFO64 - EXIT_PROCESS_DEBUG_INFO* {.final.} = object + EXIT_PROCESS_DEBUG_INFO* {.final, pure.} = object dwExitCode*: DWORD TEXITPROCESSDEBUGINFO* = EXIT_PROCESS_DEBUG_INFO PEXITPROCESSDEBUGINFO* = ptr EXIT_PROCESS_DEBUG_INFO - EXIT_THREAD_DEBUG_INFO* {.final.} = object + EXIT_THREAD_DEBUG_INFO* {.final, pure.} = object dwExitCode*: DWORD TEXITTHREADDEBUGINFO* = EXIT_THREAD_DEBUG_INFO PEXITTHREADDEBUGINFO* = ptr EXIT_THREAD_DEBUG_INFO - LOAD_DLL_DEBUG_INFO* {.final.} = object + LOAD_DLL_DEBUG_INFO* {.final, pure.} = object hFile*: HANDLE lpBaseOfDll*: LPVOID dwDebugInfoFileOffset*: DWORD @@ -7967,25 +7951,25 @@ type TLOADDLLDEBUGINFO* = LOAD_DLL_DEBUG_INFO PLOADDLLDEBUGINFO* = ptr LOAD_DLL_DEBUG_INFO - UNLOAD_DLL_DEBUG_INFO* {.final.} = object + UNLOAD_DLL_DEBUG_INFO* {.final, pure.} = object lpBaseOfDll*: LPVOID TUNLOADDLLDEBUGINFO* = UNLOAD_DLL_DEBUG_INFO PUNLOADDLLDEBUGINFO* = ptr UNLOAD_DLL_DEBUG_INFO - OUTPUT_DEBUG_STRING_INFO* {.final.} = object + OUTPUT_DEBUG_STRING_INFO* {.final, pure.} = object lpDebugStringData*: LPSTR fUnicode*: int16 nDebugStringLength*: int16 TOUTPUTDEBUGSTRINGINFO* = OUTPUT_DEBUG_STRING_INFO POUTPUTDEBUGSTRINGINFO* = ptr OUTPUT_DEBUG_STRING_INFO - RIP_INFO* {.final.} = object + RIP_INFO* {.final, pure.} = object dwError*: DWORD dwType*: DWORD TRIPINFO* = RIP_INFO PRIPINFO* = ptr RIP_INFO - DEBUG_EVENT* {.final.} = object + DEBUG_EVENT* {.final, pure.} = object dwDebugEventCode*: DWORD dwProcessId*: DWORD dwThreadId*: DWORD @@ -8004,7 +7988,7 @@ type LPDEBUG_EVENT* = ptr DEBUG_EVENT TDEBUGEVENT* = DEBUG_EVENT PDEBUGEVENT* = ptr DEBUG_EVENT - DEBUGHOOKINFO* {.final.} = object + DEBUGHOOKINFO* {.final, pure.} = object idThread*: DWORD idThreadInstaller*: DWORD lParam*: LPARAM @@ -8013,7 +7997,7 @@ type TDEBUGHOOKINFO* = DEBUGHOOKINFO PDEBUGHOOKINFO* = ptr DEBUGHOOKINFO - DELETEITEMSTRUCT* {.final.} = object + DELETEITEMSTRUCT* {.final, pure.} = object CtlType*: UINT CtlID*: UINT itemID*: UINT @@ -8022,14 +8006,14 @@ type TDELETEITEMSTRUCT* = DELETEITEMSTRUCT PDELETEITEMSTRUCT* = ptr DELETEITEMSTRUCT - DEV_BROADCAST_HDR* {.final.} = object + DEV_BROADCAST_HDR* {.final, pure.} = object dbch_size*: ULONG dbch_devicetype*: ULONG dbch_reserved*: ULONG PDEV_BROADCAST_HDR* = ptr DEV_BROADCAST_HDR TDEVBROADCASTHDR* = DEV_BROADCAST_HDR - DEV_BROADCAST_OEM* {.final.} = object + DEV_BROADCAST_OEM* {.final, pure.} = object dbco_size*: ULONG dbco_devicetype*: ULONG dbco_reserved*: ULONG @@ -8038,7 +8022,7 @@ type PDEV_BROADCAST_OEM* = ptr DEV_BROADCAST_OEM TDEVBROADCASTOEM* = DEV_BROADCAST_OEM - DEV_BROADCAST_PORT* {.final.} = object + DEV_BROADCAST_PORT* {.final, pure.} = object dbcp_size*: ULONG dbcp_devicetype*: ULONG dbcp_reserved*: ULONG @@ -8046,14 +8030,14 @@ type PDEV_BROADCAST_PORT* = ptr DEV_BROADCAST_PORT TDEVBROADCASTPORT* = DEV_BROADCAST_PORT - DEV_BROADCAST_USERDEFINED* {.final.} = object + DEV_BROADCAST_USERDEFINED* {.final, pure.} = object dbud_dbh*: DEV_BROADCAST_HDR dbud_szName*: array[0..0, char] dbud_rgbUserDefined*: array[0..0, int8] TDEVBROADCASTUSERDEFINED* = DEV_BROADCAST_USERDEFINED PDEVBROADCASTUSERDEFINED* = ptr DEV_BROADCAST_USERDEFINED - DEV_BROADCAST_VOLUME* {.final.} = object + DEV_BROADCAST_VOLUME* {.final, pure.} = object dbcv_size*: ULONG dbcv_devicetype*: ULONG dbcv_reserved*: ULONG @@ -8062,7 +8046,7 @@ type PDEV_BROADCAST_VOLUME* = ptr DEV_BROADCAST_VOLUME TDEVBROADCASTVOLUME* = DEV_BROADCAST_VOLUME - DEVMODE* {.final.} = object + DEVMODE* {.final, pure.} = object dmDeviceName*: array[0..(CCHDEVICENAME) - 1, BCHAR] dmSpecVersion*: int16 dmDriverVersion*: int16 @@ -8107,7 +8091,7 @@ type PDeviceMode* = LPDEVMODE TDEVMODE* = DEVMODE PDEVMODE* = LPDEVMODE - devmodeW* {.final.} = object + devmodeW* {.final, pure.} = object dmDeviceName*: array[0..CCHDEVICENAME - 1, WCHAR] dmSpecVersion*: int16 dmDriverVersion*: int16 @@ -8149,24 +8133,22 @@ type PDeviceModeW* = LPDEVMODEW TDEVMODEW* = DEVMODEW PDEVMODEW* = LPDEVMODEW - DEVNAMES* {.final.} = object + DEVNAMES* {.final, pure.} = object wDriverOffset*: int16 wDeviceOffset*: int16 wOutputOffset*: int16 wDefault*: int16 LPDEVNAMES* = ptr DEVNAMES - tagDEVNAMES* = DEVNAMES TDEVNAMES* = DEVNAMES PDEVNAMES* = ptr DEVNAMES - DIBSECTION* {.final.} = object + DIBSECTION* {.final, pure.} = object dsBm*: BITMAP dsBmih*: BITMAPINFOHEADER dsBitfields*: array[0..2, DWORD] dshSection*: HANDLE dsOffset*: DWORD - tagDIBSECTION* = DIBSECTION TDIBSECTION* = DIBSECTION PDIBSECTION* = ptr DIBSECTION # # LARGE_INTEGER = record @@ -8187,7 +8169,7 @@ type TLargeInteger* = Int64 PULARGE_INTEGER* = ptr ULARGE_INTEGER TULargeInteger* = int64 - DISK_GEOMETRY* {.final.} = object + DISK_GEOMETRY* {.final, pure.} = object Cylinders*: LARGE_INTEGER MediaType*: MEDIA_TYPE TracksPerCylinder*: DWORD @@ -8196,7 +8178,7 @@ type TDISKGEOMETRY* = DISK_GEOMETRY PDISKGEOMETRY* = ptr DISK_GEOMETRY - DISK_PERFORMANCE* {.final.} = object + DISK_PERFORMANCE* {.final, pure.} = object BytesRead*: LARGE_INTEGER BytesWritten*: LARGE_INTEGER ReadTime*: LARGE_INTEGER @@ -8207,7 +8189,7 @@ type TDISKPERFORMANCE* = DISK_PERFORMANCE PDISKPERFORMANCE* = ptr DISK_PERFORMANCE - DLGITEMTEMPLATE* {.final.} = object + DLGITEMTEMPLATE* {.final, pure.} = object style*: DWORD dwExtendedStyle*: DWORD x*: int16 @@ -8219,7 +8201,7 @@ type LPDLGITEMTEMPLATE* = ptr DLGITEMTEMPLATE TDLGITEMTEMPLATE* = DLGITEMTEMPLATE PDLGITEMTEMPLATE* = ptr DLGITEMTEMPLATE - DLGTEMPLATE* {.final.} = object + DLGTEMPLATE* {.final, pure.} = object style*: DWORD dwExtendedStyle*: DWORD cdit*: int16 @@ -8232,14 +8214,14 @@ type LPCDLGTEMPLATE* = ptr DLGTEMPLATE TDLGTEMPLATE* = DLGTEMPLATE PDLGTEMPLATE* = ptr DLGTEMPLATE - DOC_INFO_1* {.final.} = object + DOC_INFO_1* {.final, pure.} = object pDocName*: LPTSTR pOutputFile*: LPTSTR pDatatype*: LPTSTR TDOCINFO1* = DOC_INFO_1 PDOCINFO1* = ptr DOC_INFO_1 - DOC_INFO_2* {.final.} = object + DOC_INFO_2* {.final, pure.} = object pDocName*: LPTSTR pOutputFile*: LPTSTR pDatatype*: LPTSTR @@ -8248,7 +8230,7 @@ type TDOCINFO2* = DOC_INFO_2 PDOCINFO2* = ptr DOC_INFO_2 - DOCINFO* {.final.} = object + DOCINFO* {.final, pure.} = object cbSize*: int32 lpszDocName*: LPCTSTR lpszOutput*: LPCTSTR @@ -8258,7 +8240,7 @@ type TDOCINFO* = DOCINFO TDOCINFOA* = DOCINFO PDOCINFO* = ptr DOCINFO - DRAGLISTINFO* {.final.} = object + DRAGLISTINFO* {.final, pure.} = object uNotification*: UINT hWnd*: HWND ptCursor*: POINT @@ -8266,7 +8248,7 @@ type LPDRAGLISTINFO* = ptr DRAGLISTINFO TDRAGLISTINFO* = DRAGLISTINFO PDRAGLISTINFO* = ptr DRAGLISTINFO - DRAWITEMSTRUCT* {.final.} = object + DRAWITEMSTRUCT* {.final, pure.} = object CtlType*: UINT CtlID*: UINT itemID*: UINT @@ -8278,10 +8260,9 @@ type itemData*: ULONG_PTR LPDRAWITEMSTRUCT* = ptr DRAWITEMSTRUCT - tagDRAWITEMSTRUCT* = DRAWITEMSTRUCT TDRAWITEMSTRUCT* = DRAWITEMSTRUCT PDRAWITEMSTRUCT* = ptr DRAWITEMSTRUCT - DRAWTEXTPARAMS* {.final.} = object + DRAWTEXTPARAMS* {.final, pure.} = object cbSize*: UINT iTabLength*: int32 iLeftMargin*: int32 @@ -8291,7 +8272,7 @@ type LPDRAWTEXTPARAMS* = ptr DRAWTEXTPARAMS TDRAWTEXTPARAMS* = DRAWTEXTPARAMS PDRAWTEXTPARAMS* = ptr DRAWTEXTPARAMS - PARTITION_INFORMATION* {.final.} = object + PARTITION_INFORMATION* {.final, pure.} = object PartitionType*: int8 BootIndicator*: bool RecognizedPartition*: bool @@ -8302,19 +8283,19 @@ type TPARTITIONINFORMATION* = PARTITION_INFORMATION PPARTITIONINFORMATION* = ptr PARTITION_INFORMATION - DRIVE_LAYOUT_INFORMATION* {.final.} = object + DRIVE_LAYOUT_INFORMATION* {.final, pure.} = object PartitionCount*: DWORD Signature*: DWORD PartitionEntry*: array[0..0, PARTITION_INFORMATION] TDRIVELAYOUTINFORMATION* = DRIVE_LAYOUT_INFORMATION PDRIVELAYOUTINFORMATION* = ptr DRIVE_LAYOUT_INFORMATION - DRIVER_INFO_1* {.final.} = object + DRIVER_INFO_1* {.final, pure.} = object pName*: LPTSTR TDRIVERINFO1* = DRIVER_INFO_1 PDRIVERINFO1* = ptr DRIVER_INFO_1 - DRIVER_INFO_2* {.final.} = object + DRIVER_INFO_2* {.final, pure.} = object cVersion*: DWORD pName*: LPTSTR pEnvironment*: LPTSTR @@ -8324,7 +8305,7 @@ type TDRIVERINFO2* = DRIVER_INFO_2 PDRIVERINFO2* = ptr DRIVER_INFO_2 - DRIVER_INFO_3* {.final.} = object + DRIVER_INFO_3* {.final, pure.} = object cVersion*: DWORD pName*: LPTSTR pEnvironment*: LPTSTR @@ -8338,37 +8319,34 @@ type TDRIVERINFO3* = DRIVER_INFO_3 PDRIVERINFO3* = ptr DRIVER_INFO_3 - EDITSTREAM* {.final.} = object + EDITSTREAM* {.final, pure.} = object dwCookie*: DWORD dwError*: DWORD pfnCallback*: EDITSTREAMCALLBACK Teditstream* = EDITSTREAM Peditstream* = ptr EDITSTREAM - EMR* {.final.} = object + EMR* {.final, pure.} = object iType*: DWORD nSize*: DWORD - tagEMR* = EMR TEMR* = EMR PEMR* = ptr EMR - EMRANGLEARC* {.final.} = object + EMRANGLEARC* {.final, pure.} = object emr*: EMR ptlCenter*: POINTL nRadius*: DWORD eStartAngle*: float32 eSweepAngle*: float32 - tagEMRANGLEARC* = EMRANGLEARC TEMRANGLEARC* = EMRANGLEARC PEMRANGLEARC* = ptr EMRANGLEARC - EMRARC* {.final.} = object + EMRARC* {.final, pure.} = object emr*: EMR rclBox*: RECTL ptlStart*: POINTL ptlEnd*: POINTL - tagEMRARC* = EMRARC TEMRARC* = EMRARC PEMRARC* = ptr EMRARC EMRARCTO* = EMRARC @@ -8380,7 +8358,7 @@ type EMRPIE* = EMRARC TEMRPIE* = EMRARC PEMRPIE* = ptr EMRARC - XFORM* {.final.} = object + XFORM* {.final, pure.} = object eM11*: float32 eM12*: float32 eM21*: float32 @@ -8391,7 +8369,7 @@ type LPXFORM* = ptr XFORM TXFORM* = XFORM PXFORM* = ptr XFORM - EMRBITBLT* {.final.} = object + EMRBITBLT* {.final, pure.} = object emr*: EMR rclBounds*: RECTL xDest*: LONG @@ -8408,28 +8386,25 @@ type offBitsSrc*: DWORD cbBitsSrc*: DWORD - tagEMRBITBLT* = EMRBITBLT TEMRBITBLT* = EMRBITBLT PEMRBITBLT* = ptr EMRBITBLT - LOGBRUSH* {.final.} = object + LOGBRUSH* {.final, pure.} = object lbStyle*: UINT lbColor*: COLORREF lbHatch*: LONG - tagLOGBRUSH* = LOGBRUSH TLOGBRUSH* = LOGBRUSH PLOGBRUSH* = ptr LOGBRUSH - EMRCREATEBRUSHINDIRECT* {.final.} = object + EMRCREATEBRUSHINDIRECT* {.final, pure.} = object emr*: EMR ihBrush*: DWORD lb*: LOGBRUSH - tagEMRCREATEBRUSHINDIRECT* = EMRCREATEBRUSHINDIRECT TEMRCREATEBRUSHINDIRECT* = EMRCREATEBRUSHINDIRECT PEMRCREATEBRUSHINDIRECT* = ptr EMRCREATEBRUSHINDIRECT LCSCSTYPE* = LONG LCSGAMUTMATCH* = LONG - LOGCOLORSPACE* {.final.} = object + LOGCOLORSPACE* {.final, pure.} = object lcsSignature*: DWORD lcsVersion*: DWORD lcsSize*: DWORD @@ -8442,19 +8417,17 @@ type lcsFilename*: array[0..(MAX_PATH) - 1, TCHAR] LPLOGCOLORSPACE* = ptr LOGCOLORSPACE - tagLOGCOLORSPACE* = LOGCOLORSPACE TLOGCOLORSPACE* = LOGCOLORSPACE TLOGCOLORSPACEA* = LOGCOLORSPACE PLOGCOLORSPACE* = ptr LOGCOLORSPACE - EMRCREATECOLORSPACE* {.final.} = object + EMRCREATECOLORSPACE* {.final, pure.} = object emr*: EMR ihCS*: DWORD lcs*: LOGCOLORSPACE - tagEMRCREATECOLORSPACE* = EMRCREATECOLORSPACE TEMRCREATECOLORSPACE* = EMRCREATECOLORSPACE PEMRCREATECOLORSPACE* = ptr EMRCREATECOLORSPACE - EMRCREATEDIBPATTERNBRUSHPT* {.final.} = object + EMRCREATEDIBPATTERNBRUSHPT* {.final, pure.} = object emr*: EMR ihBrush*: DWORD iUsage*: DWORD @@ -8463,10 +8436,9 @@ type offBits*: DWORD cbBits*: DWORD - tagEMRCREATEDIBPATTERNBRUSHPT* = EMRCREATEDIBPATTERNBRUSHPT TEMRCREATEDIBPATTERNBRUSHPT* = EMRCREATEDIBPATTERNBRUSHPT PEMRCREATEDIBPATTERNBRUSHPT* = EMRCREATEDIBPATTERNBRUSHPT - EMRCREATEMONOBRUSH* {.final.} = object + EMRCREATEMONOBRUSH* {.final, pure.} = object emr*: EMR ihBrush*: DWORD iUsage*: DWORD @@ -8475,82 +8447,73 @@ type offBits*: DWORD cbBits*: DWORD - tagEMRCREATEMONOBRUSH* = EMRCREATEMONOBRUSH TEMRCREATEMONOBRUSH* = EMRCREATEMONOBRUSH PEMRCREATEMONOBRUSH* = ptr EMRCREATEMONOBRUSH - PALETTEENTRY* {.final.} = object + PALETTEENTRY* {.final, pure.} = object peRed*: int8 peGreen*: int8 peBlue*: int8 peFlags*: int8 LPPALETTEENTRY* = ptr PALETTEENTRY - tagPALETTEENTRY* = PALETTEENTRY TPALETTEENTRY* = PALETTEENTRY PPALETTEENTRY* = ptr PALETTEENTRY - LOGPALETTE* {.final.} = object + LOGPALETTE* {.final, pure.} = object palVersion*: int16 palNumEntries*: int16 palPalEntry*: array[0..0, PALETTEENTRY] LPLOGPALETTE* = ptr LOGPALETTE - tagLOGPALETTE* = LOGPALETTE TLOGPALETTE* = LOGPALETTE PLOGPALETTE* = ptr LOGPALETTE - EMRCREATEPALETTE* {.final.} = object + EMRCREATEPALETTE* {.final, pure.} = object emr*: EMR ihPal*: DWORD lgpl*: LOGPALETTE - tagEMRCREATEPALETTE* = EMRCREATEPALETTE TEMRCREATEPALETTE* = EMRCREATEPALETTE PEMRCREATEPALETTE* = ptr EMRCREATEPALETTE - LOGPEN* {.final.} = object + LOGPEN* {.final, pure.} = object lopnStyle*: UINT lopnWidth*: POINT lopnColor*: COLORREF - tagLOGPEN* = LOGPEN TLOGPEN* = LOGPEN PLOGPEN* = ptr LOGPEN - EMRCREATEPEN* {.final.} = object + EMRCREATEPEN* {.final, pure.} = object emr*: EMR ihPen*: DWORD lopn*: LOGPEN - tagEMRCREATEPEN* = EMRCREATEPEN TEMRCREATEPEN* = EMRCREATEPEN PEMRCREATEPEN* = ptr EMRCREATEPEN - EMRELLIPSE* {.final.} = object + EMRELLIPSE* {.final, pure.} = object emr*: EMR rclBox*: RECTL - tagEMRELLIPSE* = EMRELLIPSE TEMRELLIPSE* = EMRELLIPSE PEMRELLIPSE* = ptr EMRELLIPSE EMRRECTANGLE* = EMRELLIPSE TEMRRECTANGLE* = EMRELLIPSE PEMRRECTANGLE* = ptr EMRELLIPSE - EMREOF* {.final.} = object + EMREOF* {.final, pure.} = object emr*: EMR nPalEntries*: DWORD offPalEntries*: DWORD nSizeLast*: DWORD - tagEMREOF* = EMREOF TEMREOF* = EMREOF PEMREOF* = ptr EMREOF - EMREXCLUDECLIPRECT* {.final.} = object + EMREXCLUDECLIPRECT* {.final, pure.} = object emr*: EMR rclClip*: RECTL - tagEMREXCLUDECLIPRECT* = EMREXCLUDECLIPRECT TEMREXCLUDECLIPRECT* = EMREXCLUDECLIPRECT PEMREXCLUDECLIPRECT* = ptr EMREXCLUDECLIPRECT EMRINTERSECTCLIPRECT* = EMREXCLUDECLIPRECT TEMRINTERSECTCLIPRECT* = EMREXCLUDECLIPRECT PEMRINTERSECTCLIPRECT* = ptr EMREXCLUDECLIPRECT - PANOSE* {.final.} = object + PANOSE* {.final, pure.} = object bFamilyType*: int8 bSerifStyle*: int8 bWeight*: int8 @@ -8562,10 +8525,9 @@ type bMidline*: int8 bXHeight*: int8 - tagPANOSE* = PANOSE TPANOSE* = PANOSE PPANOSE* = ptr PANOSE - EXTLOGFONT* {.final.} = object + EXTLOGFONT* {.final, pure.} = object elfLogFont*: LOGFONT elfFullName*: array[0..(LF_FULLFACESIZE) - 1, BCHAR] elfStyle*: array[0..(LF_FACESIZE) - 1, BCHAR] @@ -8577,18 +8539,16 @@ type elfCulture*: DWORD elfPanose*: PANOSE - tagEXTLOGFONT* = EXTLOGFONT TEXTLOGFONT* = EXTLOGFONT PEXTLOGFONT* = ptr EXTLOGFONT - EMREXTCREATEFONTINDIRECTW* {.final.} = object + EMREXTCREATEFONTINDIRECTW* {.final, pure.} = object emr*: EMR ihFont*: DWORD elfw*: EXTLOGFONT - tagEMREXTCREATEFONTINDIRECTW* = EMREXTCREATEFONTINDIRECTW TEMREXTCREATEFONTINDIRECTW* = EMREXTCREATEFONTINDIRECTW PEMREXTCREATEFONTINDIRECTW* = ptr EMREXTCREATEFONTINDIRECTW - EXTLOGPEN* {.final.} = object + EXTLOGPEN* {.final, pure.} = object elpPenStyle*: UINT elpWidth*: UINT elpBrushStyle*: UINT @@ -8597,10 +8557,9 @@ type elpNumEntries*: DWORD elpStyleEntry*: array[0..0, DWORD] - tagEXTLOGPEN* = EXTLOGPEN TEXTLOGPEN* = EXTLOGPEN PEXTLOGPEN* = ptr EXTLOGPEN - EMREXTCREATEPEN* {.final.} = object + EMREXTCREATEPEN* {.final, pure.} = object emr*: EMR ihPen*: DWORD offBmi*: DWORD @@ -8609,28 +8568,25 @@ type cbBits*: DWORD elp*: EXTLOGPEN - tagEMREXTCREATEPEN* = EMREXTCREATEPEN TEMREXTCREATEPEN* = EMREXTCREATEPEN PEMREXTCREATEPEN* = ptr EMREXTCREATEPEN - EMREXTFLOODFILL* {.final.} = object + EMREXTFLOODFILL* {.final, pure.} = object emr*: EMR ptlStart*: POINTL crColor*: COLORREF iMode*: DWORD - tagEMREXTFLOODFILL* = EMREXTFLOODFILL TEMREXTFLOODFILL* = EMREXTFLOODFILL PEMREXTFLOODFILL* = ptr EMREXTFLOODFILL - EMREXTSELECTCLIPRGN* {.final.} = object + EMREXTSELECTCLIPRGN* {.final, pure.} = object emr*: EMR cbRgnData*: DWORD iMode*: DWORD RgnData*: array[0..0, int8] - tagEMREXTSELECTCLIPRGN* = EMREXTSELECTCLIPRGN TEMREXTSELECTCLIPRGN* = EMREXTSELECTCLIPRGN PEMREXTSELECTCLIPRGN* = ptr EMREXTSELECTCLIPRGN - EMRTEXT* {.final.} = object + EMRTEXT* {.final, pure.} = object ptlReference*: POINTL nChars*: DWORD offString*: DWORD @@ -8638,10 +8594,9 @@ type rcl*: RECTL offDx*: DWORD - tagEMRTEXT* = EMRTEXT TEMRTEXT* = EMRTEXT PEMRTEXT* = ptr EMRTEXT - EMREXTTEXTOUTA* {.final.} = object + EMREXTTEXTOUTA* {.final, pure.} = object emr*: EMR rclBounds*: RECTL iGraphicsMode*: DWORD @@ -8649,17 +8604,15 @@ type eyScale*: float32 emrtext*: EMRTEXT - tagEMREXTTEXTOUTA* = EMREXTTEXTOUTA TEMREXTTEXTOUTA* = EMREXTTEXTOUTA PEMREXTTEXTOUTA* = ptr EMREXTTEXTOUTA EMREXTTEXTOUTW* = EMREXTTEXTOUTA TEMREXTTEXTOUTW* = EMREXTTEXTOUTA PEMREXTTEXTOUTW* = ptr EMREXTTEXTOUTA - EMRFILLPATH* {.final.} = object + EMRFILLPATH* {.final, pure.} = object emr*: EMR rclBounds*: RECTL - tagEMRFILLPATH* = EMRFILLPATH TEMRFILLPATH* = EMRFILLPATH PEMRFILLPATH* = ptr EMRFILLPATH EMRSTROKEANDFILLPATH* = EMRFILLPATH @@ -8668,38 +8621,35 @@ type EMRSTROKEPATH* = EMRFILLPATH TEMRSTROKEPATH* = EMRFILLPATH PEMRSTROKEPATH* = ptr EMRFILLPATH - EMRFILLRGN* {.final.} = object + EMRFILLRGN* {.final, pure.} = object emr*: EMR rclBounds*: RECTL cbRgnData*: DWORD ihBrush*: DWORD RgnData*: array[0..0, int8] - tagEMRFILLRGN* = EMRFILLRGN TEMRFILLRGN* = EMRFILLRGN PEMRFILLRGN* = ptr EMRFILLRGN - EMRFORMAT* {.final.} = object + EMRFORMAT* {.final, pure.} = object dSignature*: DWORD nVersion*: DWORD cbData*: DWORD offData*: DWORD - tagEMRFORMAT* = EMRFORMAT TEMRFORMAT* = EMRFORMAT PEMRFORMAT* = ptr EMRFORMAT - SIZE* {.final.} = object + SIZE* {.final, pure.} = object cx*: LONG cy*: LONG LPSIZE* = ptr SIZE - tagSIZE* = SIZE TSIZE* = SIZE PSIZE* = ptr SIZE SIZEL* = SIZE TSIZEL* = SIZE PSIZEL* = ptr SIZE LPSIZEL* = ptr SIZE - EMRFRAMERGN* {.final.} = object + EMRFRAMERGN* {.final, pure.} = object emr*: EMR rclBounds*: RECTL cbRgnData*: DWORD @@ -8707,40 +8657,36 @@ type szlStroke*: SIZEL RgnData*: array[0..0, int8] - tagEMRFRAMERGN* = EMRFRAMERGN TEMRFRAMERGN* = EMRFRAMERGN PEMRFRAMERGN* = ptr EMRFRAMERGN - EMRGDICOMMENT* {.final.} = object + EMRGDICOMMENT* {.final, pure.} = object emr*: EMR cbData*: DWORD Data*: array[0..0, int8] - tagEMRGDICOMMENT* = EMRGDICOMMENT TEMRGDICOMMENT* = EMRGDICOMMENT PEMRGDICOMMENT* = ptr EMRGDICOMMENT - EMRINVERTRGN* {.final.} = object + EMRINVERTRGN* {.final, pure.} = object emr*: EMR rclBounds*: RECTL cbRgnData*: DWORD RgnData*: array[0..0, int8] - tagEMRINVERTRGN* = EMRINVERTRGN TEMRINVERTRGN* = EMRINVERTRGN PEMRINVERTRGN* = ptr EMRINVERTRGN EMRPAINTRGN* = EMRINVERTRGN TEMRPAINTRGN* = EMRINVERTRGN PEMRPAINTRGN* = ptr EMRINVERTRGN - EMRLINETO* {.final.} = object + EMRLINETO* {.final, pure.} = object emr*: EMR ptl*: POINTL - tagEMRLINETO* = EMRLINETO TEMRLINETO* = EMRLINETO PEMRLINETO* = ptr EMRLINETO EMRMOVETOEX* = EMRLINETO TEMRMOVETOEX* = EMRLINETO PEMRMOVETOEX* = ptr EMRLINETO - EMRMASKBLT* {.final.} = object + EMRMASKBLT* {.final, pure.} = object emr*: EMR rclBounds*: RECTL xDest*: LONG @@ -8765,25 +8711,22 @@ type offBitsMask*: DWORD cbBitsMask*: DWORD - tagEMRMASKBLT* = EMRMASKBLT TEMRMASKBLT* = EMRMASKBLT PEMRMASKBLT* = ptr EMRMASKBLT - EMRMODIFYWORLDTRANSFORM* {.final.} = object + EMRMODIFYWORLDTRANSFORM* {.final, pure.} = object emr*: EMR xform*: XFORM iMode*: DWORD - tagEMRMODIFYWORLDTRANSFORM* = EMRMODIFYWORLDTRANSFORM TEMRMODIFYWORLDTRANSFORM* = EMRMODIFYWORLDTRANSFORM PEMRMODIFYWORLDTRANSFORM* = EMRMODIFYWORLDTRANSFORM - EMROFFSETCLIPRGN* {.final.} = object + EMROFFSETCLIPRGN* {.final, pure.} = object emr*: EMR ptlOffset*: POINTL - tagEMROFFSETCLIPRGN* = EMROFFSETCLIPRGN TEMROFFSETCLIPRGN* = EMROFFSETCLIPRGN PEMROFFSETCLIPRGN* = ptr EMROFFSETCLIPRGN - EMRPLGBLT* {.final.} = object + EMRPLGBLT* {.final, pure.} = object emr*: EMR rclBounds*: RECTL aptlDest*: array[0..2, POINTL] @@ -8806,36 +8749,32 @@ type offBitsMask*: DWORD cbBitsMask*: DWORD - tagEMRPLGBLT* = EMRPLGBLT TEMRPLGBLT* = EMRPLGBLT PEMRPLGBLT* = ptr EMRPLGBLT - EMRPOLYDRAW* {.final.} = object + EMRPOLYDRAW* {.final, pure.} = object emr*: EMR rclBounds*: RECTL cptl*: DWORD aptl*: array[0..0, POINTL] abTypes*: array[0..0, int8] - tagEMRPOLYDRAW* = EMRPOLYDRAW TEMRPOLYDRAW* = EMRPOLYDRAW PEMRPOLYDRAW* = ptr EMRPOLYDRAW - EMRPOLYDRAW16* {.final.} = object + EMRPOLYDRAW16* {.final, pure.} = object emr*: EMR rclBounds*: RECTL cpts*: DWORD apts*: array[0..0, POINTS] abTypes*: array[0..0, int8] - tagEMRPOLYDRAW16* = EMRPOLYDRAW16 TEMRPOLYDRAW16* = EMRPOLYDRAW16 PEMRPOLYDRAW16* = ptr EMRPOLYDRAW16 - EMRPOLYLINE* {.final.} = object + EMRPOLYLINE* {.final, pure.} = object emr*: EMR rclBounds*: RECTL cptl*: DWORD aptl*: array[0..0, POINTL] - tagEMRPOLYLINE* = EMRPOLYLINE TEMRPOLYLINE* = EMRPOLYLINE PEMRPOLYLINE* = ptr EMRPOLYLINE EMRPOLYBEZIER* = EMRPOLYLINE @@ -8850,13 +8789,12 @@ type EMRPOLYLINETO* = EMRPOLYLINE TEMRPOLYLINETO* = EMRPOLYLINE PEMRPOLYLINETO* = ptr EMRPOLYLINE - EMRPOLYLINE16* {.final.} = object + EMRPOLYLINE16* {.final, pure.} = object emr*: EMR rclBounds*: RECTL cpts*: DWORD apts*: array[0..0, POINTL] - tagEMRPOLYLINE16* = EMRPOLYLINE16 TEMRPOLYLINE16* = EMRPOLYLINE16 PEMRPOLYLINE16* = ptr EMRPOLYLINE16 EMRPOLYBEZIER16* = EMRPOLYLINE16 @@ -8871,7 +8809,7 @@ type EMRPOLYLINETO16* = EMRPOLYLINE16 TEMRPOLYLINETO16* = EMRPOLYLINE16 PEMRPOLYLINETO16* = ptr EMRPOLYLINE16 - EMRPOLYPOLYLINE* {.final.} = object + EMRPOLYPOLYLINE* {.final, pure.} = object emr*: EMR rclBounds*: RECTL nPolys*: DWORD @@ -8879,13 +8817,12 @@ type aPolyCounts*: array[0..0, DWORD] aptl*: array[0..0, POINTL] - tagEMRPOLYPOLYLINE* = EMRPOLYPOLYLINE TEMRPOLYPOLYLINE* = EMRPOLYPOLYLINE PEMRPOLYPOLYLINE* = ptr EMRPOLYPOLYLINE EMRPOLYPOLYGON* = EMRPOLYPOLYLINE TEMRPOLYPOLYGON* = EMRPOLYPOLYLINE PEMRPOLYPOLYGON* = ptr EMRPOLYPOLYLINE - EMRPOLYPOLYLINE16* {.final.} = object + EMRPOLYPOLYLINE16* {.final, pure.} = object emr*: EMR rclBounds*: RECTL nPolys*: DWORD @@ -8893,13 +8830,12 @@ type aPolyCounts*: array[0..0, DWORD] apts*: array[0..0, POINTS] - tagEMRPOLYPOLYLINE16* = EMRPOLYPOLYLINE16 TEMRPOLYPOLYLINE16* = EMRPOLYPOLYLINE16 PEMRPOLYPOLYLINE16* = ptr EMRPOLYPOLYLINE16 EMRPOLYPOLYGON16* = EMRPOLYPOLYLINE16 TEMRPOLYPOLYGON16* = EMRPOLYPOLYLINE16 PEMRPOLYPOLYGON16* = ptr EMRPOLYPOLYLINE16 - EMRPOLYTEXTOUTA* {.final.} = object + EMRPOLYTEXTOUTA* {.final, pure.} = object emr*: EMR rclBounds*: RECTL iGraphicsMode*: DWORD @@ -8908,100 +8844,89 @@ type cStrings*: LONG aemrtext*: array[0..0, EMRTEXT] - tagEMRPOLYTEXTOUTA* = EMRPOLYTEXTOUTA TEMRPOLYTEXTOUTA* = EMRPOLYTEXTOUTA PEMRPOLYTEXTOUTA* = ptr EMRPOLYTEXTOUTA EMRPOLYTEXTOUTW* = EMRPOLYTEXTOUTA TEMRPOLYTEXTOUTW* = EMRPOLYTEXTOUTA PEMRPOLYTEXTOUTW* = ptr EMRPOLYTEXTOUTA - EMRRESIZEPALETTE* {.final.} = object + EMRRESIZEPALETTE* {.final, pure.} = object emr*: EMR ihPal*: DWORD cEntries*: DWORD - tagEMRRESIZEPALETTE* = EMRRESIZEPALETTE TEMRRESIZEPALETTE* = EMRRESIZEPALETTE PEMRRESIZEPALETTE* = ptr EMRRESIZEPALETTE - EMRRESTOREDC* {.final.} = object + EMRRESTOREDC* {.final, pure.} = object emr*: EMR iRelative*: LONG - tagEMRRESTOREDC* = EMRRESTOREDC TEMRRESTOREDC* = EMRRESTOREDC PEMRRESTOREDC* = ptr EMRRESTOREDC - EMRROUNDRECT* {.final.} = object + EMRROUNDRECT* {.final, pure.} = object emr*: EMR rclBox*: RECTL szlCorner*: SIZEL - tagEMRROUNDRECT* = EMRROUNDRECT TEMRROUNDRECT* = EMRROUNDRECT PEMRROUNDRECT* = ptr EMRROUNDRECT - EMRSCALEVIEWPORTEXTEX* {.final.} = object + EMRSCALEVIEWPORTEXTEX* {.final, pure.} = object emr*: EMR xNum*: LONG xDenom*: LONG yNum*: LONG yDenom*: LONG - tagEMRSCALEVIEWPORTEXTEX* = EMRSCALEVIEWPORTEXTEX TEMRSCALEVIEWPORTEXTEX* = EMRSCALEVIEWPORTEXTEX PEMRSCALEVIEWPORTEXTEX* = ptr EMRSCALEVIEWPORTEXTEX EMRSCALEWINDOWEXTEX* = EMRSCALEVIEWPORTEXTEX TEMRSCALEWINDOWEXTEX* = EMRSCALEVIEWPORTEXTEX PEMRSCALEWINDOWEXTEX* = ptr EMRSCALEVIEWPORTEXTEX - EMRSELECTCOLORSPACE* {.final.} = object + EMRSELECTCOLORSPACE* {.final, pure.} = object emr*: EMR ihCS*: DWORD - tagEMRSELECTCOLORSPACE* = EMRSELECTCOLORSPACE TEMRSELECTCOLORSPACE* = EMRSELECTCOLORSPACE PEMRSELECTCOLORSPACE* = ptr EMRSELECTCOLORSPACE EMRDELETECOLORSPACE* = EMRSELECTCOLORSPACE TEMRDELETECOLORSPACE* = EMRSELECTCOLORSPACE PEMRDELETECOLORSPACE* = ptr EMRSELECTCOLORSPACE - EMRSELECTOBJECT* {.final.} = object + EMRSELECTOBJECT* {.final, pure.} = object emr*: EMR ihObject*: DWORD - tagEMRSELECTOBJECT* = EMRSELECTOBJECT TEMRSELECTOBJECT* = EMRSELECTOBJECT PEMRSELECTOBJECT* = ptr EMRSELECTOBJECT EMRDELETEOBJECT* = EMRSELECTOBJECT TEMRDELETEOBJECT* = EMRSELECTOBJECT PEMRDELETEOBJECT* = ptr EMRSELECTOBJECT - EMRSELECTPALETTE* {.final.} = object + EMRSELECTPALETTE* {.final, pure.} = object emr*: EMR ihPal*: DWORD - tagEMRSELECTPALETTE* = EMRSELECTPALETTE TEMRSELECTPALETTE* = EMRSELECTPALETTE PEMRSELECTPALETTE* = ptr EMRSELECTPALETTE - EMRSETARCDIRECTION* {.final.} = object + EMRSETARCDIRECTION* {.final, pure.} = object emr*: EMR iArcDirection*: DWORD - tagEMRSETARCDIRECTION* = EMRSETARCDIRECTION TEMRSETARCDIRECTION* = EMRSETARCDIRECTION PEMRSETARCDIRECTION* = ptr EMRSETARCDIRECTION - EMRSETBKCOLOR* {.final.} = object + EMRSETBKCOLOR* {.final, pure.} = object emr*: EMR crColor*: COLORREF - tagEMRSETTEXTCOLOR* = EMRSETBKCOLOR TEMRSETBKCOLOR* = EMRSETBKCOLOR PEMRSETBKCOLOR* = ptr EMRSETBKCOLOR EMRSETTEXTCOLOR* = EMRSETBKCOLOR TEMRSETTEXTCOLOR* = EMRSETBKCOLOR PEMRSETTEXTCOLOR* = ptr EMRSETBKCOLOR - EMRSETCOLORADJUSTMENT* {.final.} = object + EMRSETCOLORADJUSTMENT* {.final, pure.} = object emr*: EMR ColorAdjustment*: COLORADJUSTMENT - tagEMRSETCOLORADJUSTMENT* = EMRSETCOLORADJUSTMENT TEMRSETCOLORADJUSTMENT* = EMRSETCOLORADJUSTMENT PEMRSETCOLORADJUSTMENT* = ptr EMRSETCOLORADJUSTMENT - EMRSETDIBITSTODEVICE* {.final.} = object + EMRSETDIBITSTODEVICE* {.final, pure.} = object emr*: EMR rclBounds*: RECTL xDest*: LONG @@ -9018,56 +8943,49 @@ type iStartScan*: DWORD cScans*: DWORD - tagEMRSETDIBITSTODEVICE* = EMRSETDIBITSTODEVICE TEMRSETDIBITSTODEVICE* = EMRSETDIBITSTODEVICE PEMRSETDIBITSTODEVICE* = ptr EMRSETDIBITSTODEVICE - EMRSETMAPPERFLAGS* {.final.} = object + EMRSETMAPPERFLAGS* {.final, pure.} = object emr*: EMR dwFlags*: DWORD - tagEMRSETMAPPERFLAGS* = EMRSETMAPPERFLAGS TEMRSETMAPPERFLAGS* = EMRSETMAPPERFLAGS PEMRSETMAPPERFLAGS* = ptr EMRSETMAPPERFLAGS - EMRSETMITERLIMIT* {.final.} = object + EMRSETMITERLIMIT* {.final, pure.} = object emr*: EMR eMiterLimit*: float32 - tagEMRSETMITERLIMIT* = EMRSETMITERLIMIT TEMRSETMITERLIMIT* = EMRSETMITERLIMIT PEMRSETMITERLIMIT* = ptr EMRSETMITERLIMIT - EMRSETPALETTEENTRIES* {.final.} = object + EMRSETPALETTEENTRIES* {.final, pure.} = object emr*: EMR ihPal*: DWORD iStart*: DWORD cEntries*: DWORD aPalEntries*: array[0..0, PALETTEENTRY] - tagEMRSETPALETTEENTRIES* = EMRSETPALETTEENTRIES TEMRSETPALETTEENTRIES* = EMRSETPALETTEENTRIES PEMRSETPALETTEENTRIES* = ptr EMRSETPALETTEENTRIES - EMRSETPIXELV* {.final.} = object + EMRSETPIXELV* {.final, pure.} = object emr*: EMR ptlPixel*: POINTL crColor*: COLORREF - tagEMRSETPIXELV* = EMRSETPIXELV TEMRSETPIXELV* = EMRSETPIXELV PEMRSETPIXELV* = ptr EMRSETPIXELV - EMRSETVIEWPORTEXTEX* {.final.} = object + EMRSETVIEWPORTEXTEX* {.final, pure.} = object emr*: EMR szlExtent*: SIZEL - tagEMRSETVIEWPORTEXTEX* = EMRSETVIEWPORTEXTEX TEMRSETVIEWPORTEXTEX* = EMRSETVIEWPORTEXTEX PEMRSETVIEWPORTEXTEX* = ptr EMRSETVIEWPORTEXTEX EMRSETWINDOWEXTEX* = EMRSETVIEWPORTEXTEX TEMRSETWINDOWEXTEX* = EMRSETVIEWPORTEXTEX PEMRSETWINDOWEXTEX* = ptr EMRSETVIEWPORTEXTEX - EMRSETVIEWPORTORGEX* {.final.} = object + EMRSETVIEWPORTORGEX* {.final, pure.} = object emr*: EMR ptlOrigin*: POINTL - tagEMRSETVIEWPORTORGEX* = EMRSETVIEWPORTORGEX TEMRSETVIEWPORTORGEX* = EMRSETVIEWPORTORGEX PEMRSETVIEWPORTORGEX* = ptr EMRSETVIEWPORTORGEX EMRSETWINDOWORGEX* = EMRSETVIEWPORTORGEX @@ -9076,14 +8994,13 @@ type EMRSETBRUSHORGEX* = EMRSETVIEWPORTORGEX TEMRSETBRUSHORGEX* = EMRSETVIEWPORTORGEX PEMRSETBRUSHORGEX* = ptr EMRSETVIEWPORTORGEX - EMRSETWORLDTRANSFORM* {.final.} = object + EMRSETWORLDTRANSFORM* {.final, pure.} = object emr*: EMR xform*: XFORM - tagEMRSETWORLDTRANSFORM* = EMRSETWORLDTRANSFORM TEMRSETWORLDTRANSFORM* = EMRSETWORLDTRANSFORM PEMRSETWORLDTRANSFORM* = ptr EMRSETWORLDTRANSFORM - EMRSTRETCHBLT* {.final.} = object + EMRSTRETCHBLT* {.final, pure.} = object emr*: EMR rclBounds*: RECTL xDest*: LONG @@ -9103,10 +9020,9 @@ type cxSrc*: LONG cySrc*: LONG - tagEMRSTRETCHBLT* = EMRSTRETCHBLT TEMRSTRETCHBLT* = EMRSTRETCHBLT PEMRSTRETCHBLT* = ptr EMRSTRETCHBLT - EMRSTRETCHDIBITS* {.final.} = object + EMRSTRETCHDIBITS* {.final, pure.} = object emr*: EMR rclBounds*: RECTL xDest*: LONG @@ -9124,15 +9040,13 @@ type cxDest*: LONG cyDest*: LONG - tagEMRSTRETCHDIBITS* = EMRSTRETCHDIBITS TEMRSTRETCHDIBITS* = EMRSTRETCHDIBITS PEMRSTRETCHDIBITS* = ptr EMRSTRETCHDIBITS - EMRABORTPATH* {.final.} = object + EMRABORTPATH* {.final, pure.} = object emr*: EMR TEMRABORTPATH* = EMRABORTPATH PEMRABORTPATH* = ptr EMRABORTPATH - tagABORTPATH* = EMRABORTPATH TABORTPATH* = EMRABORTPATH EMRBEGINPATH* = EMRABORTPATH TEMRBEGINPATH* = EMRABORTPATH @@ -9158,11 +9072,10 @@ type EMRREALIZEPALETTE* = EMRABORTPATH TEMRREALIZEPALETTE* = EMRABORTPATH PEMRREALIZEPALETTE* = ptr EMRABORTPATH - EMRSELECTCLIPPATH* {.final.} = object + EMRSELECTCLIPPATH* {.final, pure.} = object emr*: EMR iMode*: DWORD - tagEMRSELECTCLIPPATH* = EMRSELECTCLIPPATH TEMRSELECTCLIPPATH* = EMRSELECTCLIPPATH PEMRSELECTCLIPPATH* = ptr EMRSELECTCLIPPATH EMRSETBKMODE* = EMRSELECTCLIPPATH @@ -9186,41 +9099,40 @@ type EMRENABLEICM* = EMRSELECTCLIPPATH TEMRENABLEICM* = EMRSELECTCLIPPATH PEMRENABLEICM* = ptr EMRSELECTCLIPPATH - NMHDR* {.final.} = object + NMHDR* {.final, pure.} = object hwndFrom*: HWND idFrom*: UINT code*: UINT - tagNMHDR* = NMHDR TNMHDR* = NMHDR PNMHDR* = ptr NMHDR - TENCORRECTTEXT* {.final.} = object + TENCORRECTTEXT* {.final, pure.} = object nmhdr*: NMHDR chrg*: CHARRANGE seltyp*: int16 Pencorrecttext* = ptr TENCORRECTTEXT - TENDROPFILES* {.final.} = object + TENDROPFILES* {.final, pure.} = object nmhdr*: NMHDR hDrop*: HANDLE cp*: LONG fProtected*: WINBOOL Pendropfiles* = ptr TENDROPFILES - TENSAVECLIPBOARD* {.final.} = object + TENSAVECLIPBOARD* {.final, pure.} = object nmhdr*: NMHDR cObjectCount*: LONG cch*: LONG PENSAVECLIPBOARD* = ptr TENSAVECLIPBOARD - TENOLEOPFAILED* {.final.} = object + TENOLEOPFAILED* {.final, pure.} = object nmhdr*: NMHDR iob*: LONG lOper*: LONG hr*: HRESULT PENOLEOPFAILED* = ptr TENOLEOPFAILED - TENHMETAHEADER* {.final.} = object + TENHMETAHEADER* {.final, pure.} = object iType*: DWORD nSize*: DWORD rclBounds*: RECTL @@ -9239,14 +9151,14 @@ type LPENHMETAHEADER* = ptr TENHMETAHEADER PENHMETAHEADER* = ptr TENHMETAHEADER - TENHMETARECORD* {.final.} = object + TENHMETARECORD* {.final, pure.} = object iType*: DWORD nSize*: DWORD dParm*: array[0..0, DWORD] LPENHMETARECORD* = ptr TENHMETARECORD PENHMETARECORD* = ptr TENHMETARECORD - TENPROTECTED* {.final.} = object + TENPROTECTED* {.final, pure.} = object nmhdr*: NMHDR msg*: UINT wParam*: WPARAM @@ -9254,7 +9166,7 @@ type chrg*: CHARRANGE Penprotected* = ptr TENPROTECTED - SERVICE_STATUS* {.final.} = object + SERVICE_STATUS* {.final, pure.} = object dwServiceType*: DWORD dwCurrentState*: DWORD dwControlsAccepted*: DWORD @@ -9266,7 +9178,7 @@ type LPSERVICE_STATUS* = ptr SERVICE_STATUS TSERVICESTATUS* = SERVICE_STATUS PSERVICESTATUS* = ptr SERVICE_STATUS - ENUM_SERVICE_STATUS* {.final.} = object + ENUM_SERVICE_STATUS* {.final, pure.} = object lpServiceName*: LPTSTR lpDisplayName*: LPTSTR ServiceStatus*: SERVICE_STATUS @@ -9274,20 +9186,19 @@ type LPENUM_SERVICE_STATUS* = ptr ENUM_SERVICE_STATUS TENUMSERVICESTATUS* = ENUM_SERVICE_STATUS PENUMSERVICESTATUS* = ptr ENUM_SERVICE_STATUS - ENUMLOGFONT* {.final.} = object + ENUMLOGFONT* {.final, pure.} = object elfLogFont*: LOGFONT elfFullName*: array[0..(LF_FULLFACESIZE) - 1, BCHAR] elfStyle*: array[0..(LF_FACESIZE) - 1, BCHAR] TENUMLOGFONT* = ENUMLOGFONT PENUMLOGFONT* = ptr ENUMLOGFONT - ENUMLOGFONTEX* {.final.} = object + ENUMLOGFONTEX* {.final, pure.} = object elfLogFont*: LOGFONT elfFullName*: array[0..(LF_FULLFACESIZE) - 1, BCHAR] elfStyle*: array[0..(LF_FACESIZE) - 1, BCHAR] elfScript*: array[0..(LF_FACESIZE) - 1, BCHAR] - tagENUMLOGFONTEX* = ENUMLOGFONTEX TENUMLOGFONTEX* = ENUMLOGFONTEX PENUMLOGFONTEX* = ptr ENUMLOGFONTEX # # Then follow: @@ -9300,7 +9211,7 @@ type # CHAR Pad[] # DWORD Length; # - EVENTLOGRECORD* {.final.} = object + EVENTLOGRECORD* {.final, pure.} = object len*: DWORD Reserved*: DWORD RecordNumber*: DWORD @@ -9320,24 +9231,23 @@ type TEVENTLOGRECORD* = EVENTLOGRECORD PEVENTLOGRECORD* = ptr EVENTLOGRECORD - EVENTMSG* {.final.} = object + EVENTMSG* {.final, pure.} = object message*: UINT paramL*: UINT paramH*: UINT time*: DWORD hwnd*: HWND - tagEVENTMSG* = EVENTMSG TEVENTMSG* = EVENTMSG PEVENTMSG* = ptr EVENTMSG - EXCEPTION_POINTERS* {.final.} = object + EXCEPTION_POINTERS* {.final, pure.} = object ExceptionRecord*: PEXCEPTION_RECORD ContextRecord*: PCONTEXT LPEXCEPTION_POINTERS* = ptr EXCEPTION_POINTERS PEXCEPTION_POINTERS* = ptr EXCEPTION_POINTERS TEXCEPTIONPOINTERS* = EXCEPTION_POINTERS - EXT_BUTTON* {.final.} = object + EXT_BUTTON* {.final, pure.} = object idCommand*: int16 idsHelp*: int16 fsStyle*: int16 @@ -9345,7 +9255,7 @@ type LPEXT_BUTTON* = ptr EXT_BUTTON TEXTBUTTON* = EXT_BUTTON PEXTBUTTON* = ptr EXT_BUTTON - FILTERKEYS* {.final.} = object + FILTERKEYS* {.final, pure.} = object cbSize*: UINT dwFlags*: DWORD iWaitMSec*: DWORD @@ -9355,7 +9265,7 @@ type TFILTERKEYS* = FILTERKEYS PFILTERKEYS* = ptr FILTERKEYS - FIND_NAME_BUFFER* {.final.} = object + FIND_NAME_BUFFER* {.final, pure.} = object len*: UCHAR access_control*: UCHAR frame_control*: UCHAR @@ -9365,14 +9275,14 @@ type TFINDNAMEBUFFER* = FIND_NAME_BUFFER PFINDNAMEBUFFER* = ptr FIND_NAME_BUFFER - FIND_NAME_HEADER* {.final.} = object + FIND_NAME_HEADER* {.final, pure.} = object node_count*: int16 reserved*: UCHAR unique_group*: UCHAR TFINDNAMEHEADER* = FIND_NAME_HEADER PFINDNAMEHEADER* = ptr FIND_NAME_HEADER - FINDREPLACE* {.final.} = object + FINDREPLACE* {.final, pure.} = object lStructSize*: DWORD hwndOwner*: HWND hInstance*: HINST @@ -9388,19 +9298,19 @@ type LPFINDREPLACE* = ptr FINDREPLACE TFINDREPLACE* = FINDREPLACE PFINDREPLACE* = ptr FINDREPLACE #FINDTEXT = record conflicts with FindText function - TFINDTEXT* {.final.} = object + TFINDTEXT* {.final, pure.} = object chrg*: CHARRANGE lpstrText*: LPSTR Pfindtext* = ptr TFINDTEXT - FINDTEXTEX* {.final.} = object + FINDTEXTEX* {.final, pure.} = object chrg*: CHARRANGE lpstrText*: LPSTR chrgText*: CHARRANGE Tfindtextex* = FINDTEXTEX Pfindtextex* = ptr FINDTEXTEX - FMS_GETDRIVEINFO* {.final.} = object + FMS_GETDRIVEINFO* {.final, pure.} = object dwTotalSpace*: DWORD dwFreeSpace*: DWORD szPath*: array[0..259, TCHAR] @@ -9409,7 +9319,7 @@ type TFMSGETDRIVEINFO* = FMS_GETDRIVEINFO PFMSGETDRIVEINFO* = ptr FMS_GETDRIVEINFO - FMS_GETFILESEL* {.final.} = object + FMS_GETFILESEL* {.final, pure.} = object ftTime*: FILETIME dwSize*: DWORD bAttr*: int8 @@ -9417,7 +9327,7 @@ type TFMSGETFILESEL* = FMS_GETFILESEL PFMSGETFILESEL* = ptr FMS_GETFILESEL - FMS_LOAD* {.final.} = object + FMS_LOAD* {.final, pure.} = object dwSize*: DWORD szMenuName*: array[0..(MENU_TEXT_LEN) - 1, TCHAR] hMenu*: HMENU @@ -9425,7 +9335,7 @@ type TFMSLOAD* = FMS_LOAD PFMSLOAD* = ptr FMS_LOAD - FMS_TOOLBARLOAD* {.final.} = object + FMS_TOOLBARLOAD* {.final, pure.} = object dwSize*: DWORD lpButtons*: LPEXT_BUTTON cButtons*: int16 @@ -9435,12 +9345,12 @@ type TFMSTOOLBARLOAD* = FMS_TOOLBARLOAD PFMSTOOLBARLOAD* = ptr FMS_TOOLBARLOAD - FOCUS_EVENT_RECORD* {.final.} = object + FOCUS_EVENT_RECORD* {.final, pure.} = object bSetFocus*: WINBOOL TFOCUSEVENTRECORD* = FOCUS_EVENT_RECORD PFOCUSEVENTRECORD* = ptr FOCUS_EVENT_RECORD - FORM_INFO_1* {.final.} = object + FORM_INFO_1* {.final, pure.} = object Flags*: DWORD pName*: LPTSTR Size*: SIZEL @@ -9448,7 +9358,7 @@ type TFORMINFO1* = FORM_INFO_1 PFORMINFO1* = ptr FORM_INFO_1 - FORMAT_PARAMETERS* {.final.} = object + FORMAT_PARAMETERS* {.final, pure.} = object MediaType*: MEDIA_TYPE StartCylinderNumber*: DWORD EndCylinderNumber*: DWORD @@ -9457,7 +9367,7 @@ type TFORMATPARAMETERS* = FORMAT_PARAMETERS PFORMATPARAMETERS* = ptr FORMAT_PARAMETERS - FORMATRANGE* {.final.} = object + FORMATRANGE* {.final, pure.} = object hdc*: HDC hdcTarget*: HDC rc*: RECT @@ -9466,7 +9376,7 @@ type Tformatrange* = FORMATRANGE Pformatrange* = ptr FORMATRANGE - GCP_RESULTS* {.final.} = object + GCP_RESULTS* {.final, pure.} = object lStructSize*: DWORD lpOutString*: LPTSTR lpOrder*: ptr UINT @@ -9478,10 +9388,9 @@ type nMaxFit*: UINT LPGCP_RESULTS* = ptr GCP_RESULTS - tagGCP_RESULTS* = GCP_RESULTS TGCPRESULTS* = GCP_RESULTS PGCPRESULTS* = ptr GCP_RESULTS - GENERIC_MAPPING* {.final.} = object + GENERIC_MAPPING* {.final, pure.} = object GenericRead*: ACCESS_MASK GenericWrite*: ACCESS_MASK GenericExecute*: ACCESS_MASK @@ -9489,7 +9398,7 @@ type PGENERIC_MAPPING* = ptr GENERIC_MAPPING TGENERICMAPPING* = GENERIC_MAPPING - GLYPHMETRICS* {.final.} = object + GLYPHMETRICS* {.final, pure.} = object gmBlackBoxX*: UINT gmBlackBoxY*: UINT gmptGlyphOrigin*: POINT @@ -9499,20 +9408,19 @@ type LPGLYPHMETRICS* = ptr GLYPHMETRICS TGLYPHMETRICS* = GLYPHMETRICS PGLYPHMETRICS* = ptr GLYPHMETRICS - HANDLETABLE* {.final.} = object + HANDLETABLE* {.final, pure.} = object objectHandle*: array[0..0, HGDIOBJ] - tagHANDLETABLE* = HANDLETABLE THANDLETABLE* = HANDLETABLE LPHANDLETABLE* = ptr HANDLETABLE - HD_HITTESTINFO* {.final.} = object + HD_HITTESTINFO* {.final, pure.} = object pt*: POINT flags*: UINT iItem*: int32 THDHITTESTINFO* = HD_HITTESTINFO PHDHITTESTINFO* = ptr HD_HITTESTINFO - HD_ITEM* {.final.} = object + HD_ITEM* {.final, pure.} = object mask*: UINT cxy*: int32 pszText*: LPTSTR @@ -9523,7 +9431,7 @@ type THDITEM* = HD_ITEM PHDITEM* = ptr HD_ITEM - WINDOWPOS* {.final.} = object + WINDOWPOS* {.final, pure.} = object hwnd*: HWND hwndInsertAfter*: HWND x*: int32 @@ -9535,13 +9443,13 @@ type LPWINDOWPOS* = ptr WINDOWPOS TWINDOWPOS* = WINDOWPOS PWINDOWPOS* = ptr WINDOWPOS - HD_LAYOUT* {.final.} = object + HD_LAYOUT* {.final, pure.} = object prc*: ptr RECT pwpos*: ptr WINDOWPOS THDLAYOUT* = HD_LAYOUT PHDLAYOUT* = ptr HD_LAYOUT - HD_NOTIFY* {.final.} = object + HD_NOTIFY* {.final, pure.} = object hdr*: NMHDR iItem*: int32 iButton*: int32 @@ -9549,7 +9457,7 @@ type THDNOTIFY* = HD_NOTIFY PHDNOTIFY* = ptr HD_NOTIFY - HELPINFO* {.final.} = object + HELPINFO* {.final, pure.} = object cbSize*: UINT iContextType*: int32 iCtrlId*: int32 @@ -9558,10 +9466,9 @@ type MousePos*: POINT LPHELPINFO* = ptr HELPINFO - tagHELPINFO* = HELPINFO THELPINFO* = HELPINFO PHELPINFO* = ptr HELPINFO - HELPWININFO* {.final.} = object + HELPWININFO* {.final, pure.} = object wStructSize*: int32 x*: int32 y*: int32 @@ -9572,23 +9479,21 @@ type THELPWININFO* = HELPWININFO PHELPWININFO* = ptr HELPWININFO - HIGHCONTRAST* {.final.} = object + HIGHCONTRAST* {.final, pure.} = object cbSize*: UINT dwFlags*: DWORD lpszDefaultScheme*: LPTSTR LPHIGHCONTRAST* = ptr HIGHCONTRAST - tagHIGHCONTRAST* = HIGHCONTRAST THIGHCONTRAST* = HIGHCONTRAST PHIGHCONTRAST* = ptr HIGHCONTRAST - HSZPAIR* {.final.} = object + HSZPAIR* {.final, pure.} = object hszSvc*: HSZ hszTopic*: HSZ - tagHSZPAIR* = HSZPAIR THSZPAIR* = HSZPAIR PHSZPAIR* = ptr HSZPAIR - ICONINFO* {.final.} = object + ICONINFO* {.final, pure.} = object fIcon*: WINBOOL xHotspot*: DWORD yHotspot*: DWORD @@ -9597,7 +9502,7 @@ type TICONINFO* = ICONINFO PICONINFO* = ptr ICONINFO - ICONMETRICS* {.final.} = object + ICONMETRICS* {.final, pure.} = object cbSize*: UINT iHorzSpacing*: int32 iVertSpacing*: int32 @@ -9605,10 +9510,9 @@ type lfFont*: LOGFONT LPICONMETRICS* = ptr ICONMETRICS - tagICONMETRICS* = ICONMETRICS TICONMETRICS* = ICONMETRICS PICONMETRICS* = ptr ICONMETRICS - IMAGEINFO* {.final.} = object + IMAGEINFO* {.final, pure.} = object hbmImage*: HBITMAP hbmMask*: HBITMAP Unused1*: int32 @@ -9617,7 +9521,7 @@ type TIMAGEINFO* = IMAGEINFO PIMAGEINFO* = ptr IMAGEINFO - KEY_EVENT_RECORD* {.final.} = object + KEY_EVENT_RECORD* {.final, pure.} = object bKeyDown*: WINBOOL wRepeatCount*: int16 wVirtualKeyCode*: int16 @@ -9627,7 +9531,7 @@ type TKEYEVENTRECORD* = KEY_EVENT_RECORD PKEYEVENTRECORD* = ptr KEY_EVENT_RECORD - MOUSE_EVENT_RECORD* {.final.} = object + MOUSE_EVENT_RECORD* {.final, pure.} = object dwMousePosition*: COORD dwButtonState*: DWORD dwControlKeyState*: DWORD @@ -9635,17 +9539,17 @@ type TMOUSEEVENTRECORD* = MOUSE_EVENT_RECORD PMOUSEEVENTRECORD* = ptr MOUSE_EVENT_RECORD - WINDOW_BUFFER_SIZE_RECORD* {.final.} = object + WINDOW_BUFFER_SIZE_RECORD* {.final, pure.} = object dwSize*: COORD TWINDOWBUFFERSIZERECORD* = WINDOW_BUFFER_SIZE_RECORD PWINDOWBUFFERSIZERECORD* = ptr WINDOW_BUFFER_SIZE_RECORD - MENU_EVENT_RECORD* {.final.} = object + MENU_EVENT_RECORD* {.final, pure.} = object dwCommandId*: UINT PMENU_EVENT_RECORD* = ptr MENU_EVENT_RECORD TMENUEVENTRECORD* = MENU_EVENT_RECORD - INPUT_RECORD* {.final.} = object + INPUT_RECORD* {.final, pure.} = object EventType*: int16 Reserved*: int16 event*: array[0..5, DWORD] #Event : record case longint of @@ -9658,7 +9562,7 @@ type PINPUT_RECORD* = ptr INPUT_RECORD TINPUTRECORD* = INPUT_RECORD - SYSTEMTIME* {.final.} = object + SYSTEMTIME* {.final, pure.} = object wYear*: int16 wMonth*: int16 wDayOfWeek*: int16 @@ -9671,7 +9575,7 @@ type LPSYSTEMTIME* = ptr SYSTEMTIME TSYSTEMTIME* = SYSTEMTIME PSYSTEMTIME* = ptr SYSTEMTIME - JOB_INFO_1* {.final.} = object + JOB_INFO_1* {.final, pure.} = object JobId*: DWORD pPrinterName*: LPTSTR pMachineName*: LPTSTR @@ -9688,13 +9592,13 @@ type TJOBINFO1* = JOB_INFO_1 PJOBINFO1* = ptr JOB_INFO_1 - SID_IDENTIFIER_AUTHORITY* {.final.} = object + SID_IDENTIFIER_AUTHORITY* {.final, pure.} = object Value*: array[0..5, int8] LPSID_IDENTIFIER_AUTHORITY* = ptr SID_IDENTIFIER_AUTHORITY PSID_IDENTIFIER_AUTHORITY* = ptr SID_IDENTIFIER_AUTHORITY TSIDIDENTIFIERAUTHORITY* = SID_IDENTIFIER_AUTHORITY - SID* {.final.} = object + SID* {.final, pure.} = object Revision*: int8 SubAuthorityCount*: int8 IdentifierAuthority*: SID_IDENTIFIER_AUTHORITY @@ -9705,7 +9609,7 @@ type SECURITY_DESCRIPTOR_CONTROL* = int16 PSECURITY_DESCRIPTOR_CONTROL* = ptr SECURITY_DESCRIPTOR_CONTROL TSECURITYDESCRIPTORCONTROL* = SECURITY_DESCRIPTOR_CONTROL - SECURITY_DESCRIPTOR* {.final.} = object + SECURITY_DESCRIPTOR* {.final, pure.} = object Revision*: int8 Sbz1*: int8 Control*: SECURITY_DESCRIPTOR_CONTROL @@ -9716,7 +9620,7 @@ type PSECURITY_DESCRIPTOR* = ptr SECURITY_DESCRIPTOR TSECURITYDESCRIPTOR* = SECURITY_DESCRIPTOR - JOB_INFO_2* {.final.} = object + JOB_INFO_2* {.final, pure.} = object JobId*: DWORD pPrinterName*: LPTSTR pMachineName*: LPTSTR @@ -9743,7 +9647,7 @@ type TJOBINFO2* = JOB_INFO_2 PJOBINFO2* = ptr JOB_INFO_2 - KERNINGPAIR* {.final.} = object + KERNINGPAIR* {.final, pure.} = object wFirst*: int16 wSecond*: int16 iKernAmount*: int32 @@ -9751,13 +9655,13 @@ type LPKERNINGPAIR* = ptr KERNINGPAIR TKERNINGPAIR* = KERNINGPAIR PKERNINGPAIR* = ptr KERNINGPAIR - LANA_ENUM* {.final.} = object + LANA_ENUM* {.final, pure.} = object len*: UCHAR lana*: array[0..(MAX_LANA) - 1, UCHAR] TLANAENUM* = LANA_ENUM PLANAENUM* = ptr LANA_ENUM - LDT_ENTRY* {.final.} = object + LDT_ENTRY* {.final, pure.} = object LimitLow*: int16 BaseLow*: int16 BaseMid*: int8 @@ -9792,20 +9696,19 @@ const bp_LDT_ENTRY_BaseHi* = 24 type - LOCALESIGNATURE* {.final.} = object + LOCALESIGNATURE* {.final, pure.} = object lsUsb*: array[0..3, DWORD] lsCsbDefault*: array[0..1, DWORD] lsCsbSupported*: array[0..1, DWORD] - tagLOCALESIGNATURE* = LOCALESIGNATURE TLOCALESIGNATURE* = LOCALESIGNATURE PLOCALESIGNATURE* = ptr LOCALESIGNATURE - LOCALGROUP_MEMBERS_INFO_0* {.final.} = object + LOCALGROUP_MEMBERS_INFO_0* {.final, pure.} = object lgrmi0_sid*: PSID TLOCALGROUPMEMBERSINFO0* = LOCALGROUP_MEMBERS_INFO_0 PLOCALGROUPMEMBERSINFO0* = ptr LOCALGROUP_MEMBERS_INFO_0 - LOCALGROUP_MEMBERS_INFO_3* {.final.} = object + LOCALGROUP_MEMBERS_INFO_3* {.final, pure.} = object lgrmi3_domainandname*: LPWSTR TLOCALGROUPMEMBERSINFO3* = LOCALGROUP_MEMBERS_INFO_3 @@ -9817,7 +9720,7 @@ type LUID* = TlargeInteger TLUID* = LUID PLUID* = ptr LUID - LUID_AND_ATTRIBUTES* {.final.} = object + LUID_AND_ATTRIBUTES* {.final, pure.} = object Luid*: LUID Attributes*: DWORD @@ -9826,7 +9729,7 @@ type LUID_AND_ATTRIBUTES_ARRAY* = array[0..(ANYSIZE_ARRAY) - 1, LUID_AND_ATTRIBUTES] PLUID_AND_ATTRIBUTES_ARRAY* = ptr LUID_AND_ATTRIBUTES_ARRAY TLUIDANDATTRIBUTESARRAY* = LUID_AND_ATTRIBUTES_ARRAY - LV_COLUMN* {.final.} = object + LV_COLUMN* {.final, pure.} = object mask*: UINT fmt*: int32 cx*: int32 @@ -9836,7 +9739,7 @@ type TLVCOLUMN* = LV_COLUMN PLVCOLUMN* = ptr LV_COLUMN - LV_ITEM* {.final.} = object + LV_ITEM* {.final, pure.} = object mask*: UINT iItem*: int32 iSubItem*: int32 @@ -9849,14 +9752,13 @@ type TLVITEM* = LV_ITEM PLVITEM* = ptr LV_ITEM - LV_DISPINFO* {.final.} = object + LV_DISPINFO* {.final, pure.} = object hdr*: NMHDR item*: LV_ITEM - tagLV_DISPINFO* = LV_DISPINFO TLVDISPINFO* = LV_DISPINFO PLVDISPINFO* = ptr LV_DISPINFO - LV_FINDINFO* {.final.} = object + LV_FINDINFO* {.final, pure.} = object flags*: UINT psz*: LPCTSTR lParam*: LPARAM @@ -9865,22 +9767,21 @@ type TLVFINDINFO* = LV_FINDINFO PLVFINDINFO* = ptr LV_FINDINFO - LV_HITTESTINFO* {.final.} = object + LV_HITTESTINFO* {.final, pure.} = object pt*: POINT flags*: UINT iItem*: int32 TLVHITTESTINFO* = LV_HITTESTINFO PLVHITTESTINFO* = ptr LV_HITTESTINFO - LV_KEYDOWN* {.final.} = object + LV_KEYDOWN* {.final, pure.} = object hdr*: NMHDR wVKey*: int16 flags*: UINT - tagLV_KEYDOWN* = LV_KEYDOWN TLVKEYDOWN* = LV_KEYDOWN PLVKEYDOWN* = ptr LV_KEYDOWN - MAT2* {.final.} = object + MAT2* {.final, pure.} = object eM11*: FIXED eM12*: FIXED eM21*: FIXED @@ -9888,7 +9789,7 @@ type TMAT2* = MAT2 PMAT2* = ptr MAT2 - MDICREATESTRUCT* {.final.} = object + MDICREATESTRUCT* {.final, pure.} = object szClass*: LPCTSTR szTitle*: LPCTSTR hOwner*: HANDLE @@ -9900,10 +9801,9 @@ type lParam*: LPARAM LPMDICREATESTRUCT* = ptr MDICREATESTRUCT - tagMDICREATESTRUCT* = MDICREATESTRUCT TMDICREATESTRUCT* = MDICREATESTRUCT PMDICREATESTRUCT* = ptr MDICREATESTRUCT - MEASUREITEMSTRUCT* {.final.} = object + MEASUREITEMSTRUCT* {.final, pure.} = object CtlType*: UINT CtlID*: UINT itemID*: UINT @@ -9912,10 +9812,9 @@ type itemData*: ULONG_PTR LPMEASUREITEMSTRUCT* = ptr MEASUREITEMSTRUCT - tagMEASUREITEMSTRUCT* = MEASUREITEMSTRUCT TMEASUREITEMSTRUCT* = MEASUREITEMSTRUCT PMEASUREITEMSTRUCT* = ptr MEASUREITEMSTRUCT - MEMORY_BASIC_INFORMATION* {.final.} = object + MEMORY_BASIC_INFORMATION* {.final, pure.} = object BaseAddress*: PVOID AllocationBase*: PVOID AllocationProtect*: DWORD @@ -9926,7 +9825,7 @@ type PMEMORY_BASIC_INFORMATION* = ptr MEMORY_BASIC_INFORMATION TMEMORYBASICINFORMATION* = MEMORY_BASIC_INFORMATION - MEMORYSTATUS* {.final.} = object + MEMORYSTATUS* {.final, pure.} = object dwLength*: DWORD dwMemoryLoad*: DWORD dwTotalPhys*: int @@ -9936,7 +9835,7 @@ type dwTotalVirtual*: int dwAvailVirtual*: int - TGUID* {.final.} = object + TGUID* {.final, pure.} = object D1*: int32 D2*: int16 D3*: int16 @@ -9945,14 +9844,14 @@ type LPMEMORYSTATUS* = ptr MEMORYSTATUS TMEMORYSTATUS* = MEMORYSTATUS PMEMORYSTATUS* = ptr MEMORYSTATUS - MENUEX_TEMPLATE_HEADER* {.final.} = object + MENUEX_TEMPLATE_HEADER* {.final, pure.} = object wVersion*: int16 wOffset*: int16 dwHelpId*: DWORD TMENUXTEMPLATEHEADER* = MENUEX_TEMPLATE_HEADER PMENUXTEMPLATEHEADER* = ptr MENUEX_TEMPLATE_HEADER - MENUEX_TEMPLATE_ITEM* {.final.} = object + MENUEX_TEMPLATE_ITEM* {.final, pure.} = object dwType*: DWORD dwState*: DWORD uId*: UINT @@ -9962,7 +9861,7 @@ type TMENUEXTEMPLATEITEM* = MENUEX_TEMPLATE_ITEM PMENUEXTEMPLATEITEM* = ptr MENUEX_TEMPLATE_ITEM - MENUINFO* {.final.} = object + MENUINFO* {.final, pure.} = object cbSize*: DWORD fMask*: DWORD dwStyle*: DWORD @@ -9973,10 +9872,9 @@ type LPMENUINFO* = ptr MENUINFO LPCMENUINFO* = ptr MENUINFO - tagMENUINFO* = MENUINFO TMENUINFO* = MENUINFO PMENUINFO* = ptr MENUINFO - MENUITEMINFO* {.final.} = object + MENUITEMINFO* {.final, pure.} = object cbSize*: UINT fMask*: UINT fType*: UINT @@ -9992,38 +9890,36 @@ type LPMENUITEMINFO* = ptr MENUITEMINFO LPCMENUITEMINFO* = ptr MENUITEMINFO - tagMENUITEMINFO* = MENUITEMINFO TMENUITEMINFO* = MENUITEMINFO TMENUITEMINFOA* = MENUITEMINFO PMENUITEMINFO* = ptr MENUITEMINFO - MENUITEMTEMPLATE* {.final.} = object + MENUITEMTEMPLATE* {.final, pure.} = object mtOption*: int16 mtID*: int16 mtString*: array[0..0, WCHAR] TMENUITEMTEMPLATE* = MENUITEMTEMPLATE PMENUITEMTEMPLATE* = ptr MENUITEMTEMPLATE - MENUITEMTEMPLATEHEADER* {.final.} = object + MENUITEMTEMPLATEHEADER* {.final, pure.} = object versionNumber*: int16 offset*: int16 TMENUITEMTEMPLATEHEADER* = MENUITEMTEMPLATEHEADER PMENUITEMTEMPLATEHEADER* = ptr MENUITEMTEMPLATEHEADER - MENUTEMPLATE* {.final.} = object + MENUTEMPLATE* {.final, pure.} = object LPMENUTEMPLATE* = ptr MENUTEMPLATE TMENUTEMPLATE* = MENUTEMPLATE PMENUTEMPLATE* = ptr MENUTEMPLATE - METAFILEPICT* {.final.} = object + METAFILEPICT* {.final, pure.} = object mm*: LONG xExt*: LONG yExt*: LONG hMF*: HMETAFILE LPMETAFILEPICT* = ptr METAFILEPICT - tagMETAFILEPICT* = METAFILEPICT TMETAFILEPICT* = METAFILEPICT PMETAFILEPICT* = ptr METAFILEPICT - METAHEADER* {.final.} = object + METAHEADER* {.final, pure.} = object mtType*: int16 mtHeaderSize*: int16 mtVersion*: int16 @@ -10032,19 +9928,17 @@ type mtMaxRecord*: DWORD mtNoParameters*: int16 - tagMETAHEADER* = METAHEADER TMETAHEADER* = METAHEADER PMETAHEADER* = ptr METAHEADER - METARECORD* {.final.} = object + METARECORD* {.final, pure.} = object rdSize*: DWORD rdFunction*: int16 rdParm*: array[0..0, int16] LPMETARECORD* = ptr METARECORD - tagMETARECORD* = METARECORD TMETARECORD* = METARECORD PMETARECORD* = ptr METARECORD - MINIMIZEDMETRICS* {.final.} = object + MINIMIZEDMETRICS* {.final, pure.} = object cbSize*: UINT iWidth*: int32 iHorzGap*: int32 @@ -10052,20 +9946,18 @@ type iArrange*: int32 LPMINIMIZEDMETRICS* = ptr MINIMIZEDMETRICS - tagMINIMIZEDMETRICS* = MINIMIZEDMETRICS TMINIMIZEDMETRICS* = MINIMIZEDMETRICS PMINIMIZEDMETRICS* = ptr MINIMIZEDMETRICS - MINMAXINFO* {.final.} = object + MINMAXINFO* {.final, pure.} = object ptReserved*: POINT ptMaxSize*: POINT ptMaxPosition*: POINT ptMinTrackSize*: POINT ptMaxTrackSize*: POINT - tagMINMAXINFO* = MINMAXINFO TMINMAXINFO* = MINMAXINFO PMINMAXINFO* = ptr MINMAXINFO - MODEMDEVCAPS* {.final.} = object + MODEMDEVCAPS* {.final, pure.} = object dwActualSize*: DWORD dwRequiredSize*: DWORD dwDevSpecificOffset*: DWORD @@ -10090,8 +9982,7 @@ type LPMODEMDEVCAPS* = ptr MODEMDEVCAPS TMODEMDEVCAPS* = MODEMDEVCAPS PMODEMDEVCAPS* = ptr MODEMDEVCAPS - modemdevcaps_tag* = MODEMDEVCAPS - MODEMSETTINGS* {.final.} = object + MODEMSETTINGS* {.final, pure.} = object dwActualSize*: DWORD dwRequiredSize*: DWORD dwDevSpecificOffset*: DWORD @@ -10108,8 +9999,7 @@ type LPMODEMSETTINGS* = ptr MODEMSETTINGS TMODEMSETTINGS* = MODEMSETTINGS PMODEMSETTINGS* = ptr MODEMSETTINGS - modemsettings_tag* = MODEMSETTINGS - MONCBSTRUCT* {.final.} = object + MONCBSTRUCT* {.final, pure.} = object cb*: UINT dwTime*: DWORD hTask*: HANDLE @@ -10126,10 +10016,9 @@ type cbData*: DWORD Data*: array[0..7, DWORD] - tagMONCBSTRUCT* = MONCBSTRUCT TMONCBSTRUCT* = MONCBSTRUCT PMONCBSTRUCT* = ptr MONCBSTRUCT - MONCONVSTRUCT* {.final.} = object + MONCONVSTRUCT* {.final, pure.} = object cb*: UINT fConnect*: WINBOOL dwTime*: DWORD @@ -10139,19 +10028,17 @@ type hConvClient*: HCONV hConvServer*: HCONV - tagMONCONVSTRUCT* = MONCONVSTRUCT TMONCONVSTRUCT* = MONCONVSTRUCT PMONCONVSTRUCT* = ptr MONCONVSTRUCT - MONERRSTRUCT* {.final.} = object + MONERRSTRUCT* {.final, pure.} = object cb*: UINT wLastError*: UINT dwTime*: DWORD hTask*: HANDLE - tagMONERRSTRUCT* = MONERRSTRUCT TMONERRSTRUCT* = MONERRSTRUCT PMONERRSTRUCT* = ptr MONERRSTRUCT - MONHSZSTRUCT* {.final.} = object + MONHSZSTRUCT* {.final, pure.} = object cb*: UINT fsAction*: WINBOOL dwTime*: DWORD @@ -10159,22 +10046,21 @@ type hTask*: HANDLE str*: array[0..0, TCHAR] - tagMONHSZSTRUCT* = MONHSZSTRUCT TMONHSZSTRUCT* = MONHSZSTRUCT PMONHSZSTRUCT* = ptr MONHSZSTRUCT - MONITOR_INFO_1* {.final.} = object + MONITOR_INFO_1* {.final, pure.} = object pName*: LPTSTR TMONITORINFO1* = MONITOR_INFO_1 PMONITORINFO1* = ptr MONITOR_INFO_1 - MONITOR_INFO_2* {.final.} = object + MONITOR_INFO_2* {.final, pure.} = object pName*: LPTSTR pEnvironment*: LPTSTR pDLLName*: LPTSTR TMONITORINFO2* = MONITOR_INFO_2 PMONITORINFO2* = ptr MONITOR_INFO_2 - MONLINKSTRUCT* {.final.} = object + MONLINKSTRUCT* {.final, pure.} = object cb*: UINT dwTime*: DWORD hTask*: HANDLE @@ -10188,10 +10074,9 @@ type hConvServer*: HCONV hConvClient*: HCONV - tagMONLINKSTRUCT* = MONLINKSTRUCT TMONLINKSTRUCT* = MONLINKSTRUCT PMONLINKSTRUCT* = ptr MONLINKSTRUCT - MONMSGSTRUCT* {.final.} = object + MONMSGSTRUCT* {.final, pure.} = object cb*: UINT hwndTo*: HWND dwTime*: DWORD @@ -10201,20 +10086,18 @@ type lParam*: LPARAM dmhd*: DDEML_MSG_HOOK_DATA - tagMONMSGSTRUCT* = MONMSGSTRUCT TMONMSGSTRUCT* = MONMSGSTRUCT PMONMSGSTRUCT* = ptr MONMSGSTRUCT - MOUSEHOOKSTRUCT* {.final.} = object + MOUSEHOOKSTRUCT* {.final, pure.} = object pt*: POINT hwnd*: HWND wHitTestCode*: UINT dwExtraInfo*: DWORD LPMOUSEHOOKSTRUCT* = ptr MOUSEHOOKSTRUCT - tagMOUSEHOOKSTRUCT* = MOUSEHOOKSTRUCT TMOUSEHOOKSTRUCT* = MOUSEHOOKSTRUCT PMOUSEHOOKSTRUCT* = ptr MOUSEHOOKSTRUCT - MOUSEKEYS* {.final.} = object + MOUSEKEYS* {.final, pure.} = object cbSize*: DWORD dwFlags*: DWORD iMaxSpeed*: DWORD @@ -10227,7 +10110,7 @@ type PMOUSEKEYS* = ptr MOUSEKEYS MSGBOXCALLBACK* = proc (lpHelpInfo: LPHELPINFO){.stdcall.} TMSGBOXCALLBACK* = MSGBOXCALLBACK - MSGBOXPARAMS* {.final.} = object + MSGBOXPARAMS* {.final, pure.} = object cbSize*: UINT hwndOwner*: HWND hInstance*: HINST @@ -10243,7 +10126,7 @@ type TMSGBOXPARAMS* = MSGBOXPARAMS TMSGBOXPARAMSA* = MSGBOXPARAMS PMSGBOXPARAMS* = ptr MSGBOXPARAMS - MSGFILTER* {.final.} = object + MSGFILTER* {.final, pure.} = object nmhdr*: NMHDR msg*: UINT wParam*: WPARAM @@ -10251,15 +10134,14 @@ type Tmsgfilter* = MSGFILTER Pmsgfilter* = ptr MSGFILTER - MULTIKEYHELP* {.final.} = object + MULTIKEYHELP* {.final, pure.} = object mkSize*: DWORD mkKeylist*: TCHAR szKeyphrase*: array[0..0, TCHAR] - tagMULTIKEYHELP* = MULTIKEYHELP TMULTIKEYHELP* = MULTIKEYHELP PMULTIKEYHELP* = ptr MULTIKEYHELP - NAME_BUFFER* {.final.} = object + NAME_BUFFER* {.final, pure.} = object name*: array[0..(NCBNAMSZ) - 1, UCHAR] name_num*: UCHAR name_flags*: UCHAR @@ -10267,7 +10149,7 @@ type TNAMEBUFFER* = NAME_BUFFER PNAMEBUFFER* = ptr NAME_BUFFER p_NCB* = ptr NCB - NCB* {.final.} = object + NCB* {.final, pure.} = object ncb_command*: UCHAR ncb_retcode*: UCHAR ncb_lsn*: UCHAR @@ -10285,13 +10167,13 @@ type ncb_event*: HANDLE TNCB* = NCB - NCCALCSIZE_PARAMS* {.final.} = object + NCCALCSIZE_PARAMS* {.final, pure.} = object rgrc*: array[0..2, RECT] lppos*: PWINDOWPOS TNCCALCSIZEPARAMS* = NCCALCSIZE_PARAMS PNCCALCSIZEPARAMS* = ptr NCCALCSIZE_PARAMS - NDDESHAREINFO* {.final.} = object + NDDESHAREINFO* {.final, pure.} = object lRevision*: LONG lpszShareName*: LPTSTR lShareType*: LONG @@ -10306,7 +10188,7 @@ type TNDDESHAREINFO* = NDDESHAREINFO PNDDESHAREINFO* = ptr NDDESHAREINFO - NETRESOURCE* {.final.} = object + NETRESOURCE* {.final, pure.} = object dwScope*: DWORD dwType*: DWORD dwDisplayType*: DWORD @@ -10321,7 +10203,7 @@ type TNETRESOURCEA* = NETRESOURCE PNETRESOURCE* = ptr NETRESOURCE PNETRESOURCEA* = ptr NETRESOURCE - NEWCPLINFO* {.final.} = object + NEWCPLINFO* {.final, pure.} = object dwSize*: DWORD dwFlags*: DWORD dwHelpContext*: DWORD @@ -10331,10 +10213,9 @@ type szInfo*: array[0..63, TCHAR] szHelpFile*: array[0..127, TCHAR] - tagNEWCPLINFO* = NEWCPLINFO TNEWCPLINFO* = NEWCPLINFO PNEWCPLINFO* = ptr NEWCPLINFO - NEWTEXTMETRIC* {.final.} = object + NEWTEXTMETRIC* {.final, pure.} = object tmHeight*: LONG tmAscent*: LONG tmDescent*: LONG @@ -10360,17 +10241,15 @@ type ntmCellHeight*: UINT ntmAvgWidth*: UINT - tagNEWTEXTMETRIC* = NEWTEXTMETRIC TNEWTEXTMETRIC* = NEWTEXTMETRIC PNEWTEXTMETRIC* = ptr NEWTEXTMETRIC - NEWTEXTMETRICEX* {.final.} = object + NEWTEXTMETRICEX* {.final, pure.} = object ntmentm*: NEWTEXTMETRIC ntmeFontSignature*: FONTSIGNATURE - tagNEWTEXTMETRICEX* = NEWTEXTMETRICEX TNEWTEXTMETRICEX* = NEWTEXTMETRICEX PNEWTEXTMETRICEX* = ptr NEWTEXTMETRICEX - NM_LISTVIEW* {.final.} = object + NM_LISTVIEW* {.final, pure.} = object hdr*: NMHDR iItem*: int32 iSubItem*: int32 @@ -10380,10 +10259,9 @@ type ptAction*: POINT lParam*: LPARAM - tagNM_LISTVIEW* = NM_LISTVIEW TNMLISTVIEW* = NM_LISTVIEW PNMLISTVIEW* = ptr NM_LISTVIEW - TV_ITEM* {.final.} = object + TV_ITEM* {.final, pure.} = object mask*: UINT hItem*: HTREEITEM state*: UINT @@ -10398,7 +10276,7 @@ type LPTV_ITEM* = ptr TV_ITEM TTVITEM* = TV_ITEM PTVITEM* = ptr TV_ITEM - NM_TREEVIEW* {.final.} = object + NM_TREEVIEW* {.final, pure.} = object hdr*: NMHDR action*: UINT itemOld*: TV_ITEM @@ -10408,14 +10286,14 @@ type LPNM_TREEVIEW* = ptr NM_TREEVIEW TNMTREEVIEW* = NM_TREEVIEW PNMTREEVIEW* = ptr NM_TREEVIEW - NM_UPDOWNW* {.final.} = object + NM_UPDOWNW* {.final, pure.} = object hdr*: NMHDR iPos*: int32 iDelta*: int32 TNMUPDOWN* = NM_UPDOWNW PNMUPDOWN* = ptr NM_UPDOWNW - NONCLIENTMETRICS* {.final.} = object + NONCLIENTMETRICS* {.final, pure.} = object cbSize*: UINT iBorderWidth*: int32 iScrollWidth*: int32 @@ -10433,10 +10311,9 @@ type lfMessageFont*: LOGFONT LPNONCLIENTMETRICS* = ptr NONCLIENTMETRICS - tagNONCLIENTMETRICS* = NONCLIENTMETRICS TNONCLIENTMETRICS* = NONCLIENTMETRICS PNONCLIENTMETRICS* = ptr NONCLIENTMETRICS - SERVICE_ADDRESS* {.final.} = object + SERVICE_ADDRESS* {.final, pure.} = object dwAddressType*: DWORD dwAddressFlags*: DWORD dwAddressLength*: DWORD @@ -10446,7 +10323,7 @@ type TSERVICEADDRESS* = SERVICE_ADDRESS PSERVICEADDRESS* = ptr SERVICE_ADDRESS - SERVICE_ADDRESSES* {.final.} = object + SERVICE_ADDRESSES* {.final, pure.} = object dwAddressCount*: DWORD Addresses*: array[0..0, SERVICE_ADDRESS] @@ -10459,7 +10336,7 @@ type LPCLSID* = ptr CLSID TCLSID* = CLSID PCLSID* = ptr CLSID - SERVICE_INFO* {.final.} = object + SERVICE_INFO* {.final, pure.} = object lpServiceType*: LPGUID lpServiceName*: LPTSTR lpComment*: LPTSTR @@ -10473,13 +10350,13 @@ type TSERVICEINFO* = SERVICE_INFO PSERVICEINFO* = ptr SERVICE_INFO - NS_SERVICE_INFO* {.final.} = object + NS_SERVICE_INFO* {.final, pure.} = object dwNameSpace*: DWORD ServiceInfo*: SERVICE_INFO TNSSERVICEINFO* = NS_SERVICE_INFO PNSSERVICEINFO* = ptr NS_SERVICE_INFO - NUMBERFMT* {.final.} = object + NUMBERFMT* {.final, pure.} = object NumDigits*: UINT LeadingZero*: UINT Grouping*: UINT @@ -10489,7 +10366,7 @@ type Tnumberfmt* = NUMBERFMT Pnumberfmt* = ptr NUMBERFMT - OFSTRUCT* {.final.} = object + OFSTRUCT* {.final, pure.} = object cBytes*: int8 fFixedDisk*: int8 nErrCode*: int16 @@ -10500,7 +10377,7 @@ type LPOFSTRUCT* = ptr OFSTRUCT TOFSTRUCT* = OFSTRUCT POFSTRUCT* = ptr OFSTRUCT - OPENFILENAME_NT4* {.final.} = object + OPENFILENAME_NT4* {.final, pure.} = object lStructSize*: DWORD hwndOwner*: HWND hInstance*: HINST @@ -10525,7 +10402,7 @@ type LPOPENFILENAME_NT4* = ptr OPENFILENAME_NT4 TOPENFILENAME_NT4* = OPENFILENAME_NT4 POPENFILENAME_NT4* = ptr OPENFILENAME_NT4 - TOPENFILENAME* {.final.} = object + TOPENFILENAME* {.final, pure.} = object lStructSize*: DWORD hwndOwner*: HWND hInstance*: HINST @@ -10554,7 +10431,7 @@ type POPENFILENAME* = ptr TOPENFILENAME OFN* = TOPENFILENAME POFN* = ptr TOPENFILENAME - OFNOTIFY* {.final.} = object + OFNOTIFY* {.final, pure.} = object hdr*: NMHDR lpOFN*: LPOPENFILENAME pszFile*: LPTSTR @@ -10562,7 +10439,7 @@ type LPOFNOTIFY* = ptr OFNOTIFY TOFNOTIFY* = OFNOTIFY POFNOTIFY* = ptr OFNOTIFY - OSVERSIONINFO* {.final.} = object + OSVERSIONINFO* {.final, pure.} = object dwOSVersionInfoSize*: DWORD dwMajorVersion*: DWORD dwMinorVersion*: DWORD @@ -10573,7 +10450,7 @@ type LPOSVERSIONINFO* = ptr OSVERSIONINFO TOSVERSIONINFO* = OSVERSIONINFO POSVERSIONINFO* = ptr OSVERSIONINFO - OSVERSIONINFOW* {.final.} = object + OSVERSIONINFOW* {.final, pure.} = object dwOSVersionInfoSize*: DWORD dwMajorVersion*: DWORD dwMinorVersion*: DWORD @@ -10584,7 +10461,7 @@ type LPOSVERSIONINFOW* = ptr OSVERSIONINFOW TOSVERSIONINFOW* = OSVERSIONINFOW POSVERSIONINFOW* = ptr OSVERSIONINFOW - TEXTMETRIC* {.final.} = object + TEXTMETRIC* {.final, pure.} = object tmHeight*: LONG tmAscent*: LONG tmDescent*: LONG @@ -10607,10 +10484,9 @@ type tmCharSet*: int8 LPTEXTMETRIC* = ptr TEXTMETRIC - tagTEXTMETRIC* = TEXTMETRIC TTEXTMETRIC* = TEXTMETRIC PTEXTMETRIC* = ptr TEXTMETRIC - TEXTMETRICW* {.final.} = object + TEXTMETRICW* {.final, pure.} = object tmHeight*: LONG tmAscent*: LONG tmDescent*: LONG @@ -10633,10 +10509,9 @@ type tmCharSet*: int8 LPTEXTMETRICW* = ptr TEXTMETRICW - tagTEXTMETRICW* = TEXTMETRICW TTEXTMETRICW* = TEXTMETRICW PTEXTMETRICW* = ptr TEXTMETRICW - OUTLINETEXTMETRIC* {.final.} = object + OUTLINETEXTMETRIC* {.final, pure.} = object otmSize*: UINT otmTextMetrics*: TEXTMETRIC otmFiller*: int8 @@ -10673,7 +10548,7 @@ type LPOUTLINETEXTMETRIC* = ptr OUTLINETEXTMETRIC TOUTLINETEXTMETRIC* = OUTLINETEXTMETRIC POUTLINETEXTMETRIC* = ptr OUTLINETEXTMETRIC - OVERLAPPED* {.final.} = object + OVERLAPPED* {.final, pure.} = object Internal*: DWORD InternalHigh*: DWORD Offset*: DWORD @@ -10683,7 +10558,7 @@ type LPOVERLAPPED* = ptr OVERLAPPED TOVERLAPPED* = OVERLAPPED POVERLAPPED* = ptr OVERLAPPED #PAGESETUPDLG = record conflicts with function PageSetupDlg - TPAGESETUPDLG* {.final.} = object + TPAGESETUPDLG* {.final, pure.} = object lStructSize*: DWORD hwndOwner*: HWND hDevMode*: HGLOBAL @@ -10701,10 +10576,9 @@ type LPPAGESETUPDLG* = ptr TPAGESETUPDLG PPAGESETUPDLG* = ptr TPAGESETUPDLG - tagPSD* = TPAGESETUPDLG TPSD* = TPAGESETUPDLG PPSD* = ptr TPAGESETUPDLG - PAINTSTRUCT* {.final.} = object + PAINTSTRUCT* {.final, pure.} = object hdc*: HDC fErase*: WINBOOL rcPaint*: RECT @@ -10713,10 +10587,9 @@ type rgbReserved*: array[0..31, int8] LPPAINTSTRUCT* = ptr PAINTSTRUCT - tagPAINTSTRUCT* = PAINTSTRUCT TPAINTSTRUCT* = PAINTSTRUCT PPAINTSTRUCT* = ptr PAINTSTRUCT - PARAFORMAT* {.final.} = object + PARAFORMAT* {.final, pure.} = object cbSize*: UINT dwMask*: DWORD wNumbering*: int16 @@ -10730,12 +10603,12 @@ type Tparaformat* = PARAFORMAT Pparaformat* = ptr PARAFORMAT - PERF_COUNTER_BLOCK* {.final.} = object + PERF_COUNTER_BLOCK* {.final, pure.} = object ByteLength*: DWORD TPERFCOUNTERBLOCK* = PERF_COUNTER_BLOCK PPERFCOUNTERBLOCK* = ptr PERF_COUNTER_BLOCK - PERF_COUNTER_DEFINITION* {.final.} = object + PERF_COUNTER_DEFINITION* {.final, pure.} = object ByteLength*: DWORD CounterNameTitleIndex*: DWORD CounterNameTitle*: LPWSTR @@ -10749,7 +10622,7 @@ type TPERFCOUNTERDEFINITION* = PERF_COUNTER_DEFINITION PPERFCOUNTERDEFINITION* = ptr PERF_COUNTER_DEFINITION - PERF_DATA_BLOCK* {.final.} = object + PERF_DATA_BLOCK* {.final, pure.} = object Signature*: array[0..3, WCHAR] LittleEndian*: DWORD Version*: DWORD @@ -10767,7 +10640,7 @@ type TPERFDATABLOCK* = PERF_DATA_BLOCK PPERFDATABLOCK* = ptr PERF_DATA_BLOCK - PERF_INSTANCE_DEFINITION* {.final.} = object + PERF_INSTANCE_DEFINITION* {.final, pure.} = object ByteLength*: DWORD ParentObjectTitleIndex*: DWORD ParentObjectInstance*: DWORD @@ -10777,7 +10650,7 @@ type TPERFINSTANCEDEFINITION* = PERF_INSTANCE_DEFINITION PPERFINSTANCEDEFINITION* = PERF_INSTANCE_DEFINITION - PERF_OBJECT_TYPE* {.final.} = object + PERF_OBJECT_TYPE* {.final, pure.} = object TotalByteLength*: DWORD DefinitionLength*: DWORD HeaderLength*: DWORD @@ -10795,7 +10668,7 @@ type TPERFOBJECTTYPE* = PERF_OBJECT_TYPE PPERFOBJECTTYPE* = ptr PERF_OBJECT_TYPE - POLYTEXT* {.final.} = object + POLYTEXT* {.final, pure.} = object x*: int32 y*: int32 n*: UINT @@ -10806,12 +10679,12 @@ type TPOLYTEXT* = POLYTEXT PPOLYTEXT* = ptr POLYTEXT - PORT_INFO_1* {.final.} = object + PORT_INFO_1* {.final, pure.} = object pName*: LPTSTR TPORTINFO1* = PORT_INFO_1 PPORTINFO1* = ptr PORT_INFO_1 - PORT_INFO_2* {.final.} = object + PORT_INFO_2* {.final, pure.} = object pPortName*: LPSTR pMonitorName*: LPSTR pDescription*: LPSTR @@ -10820,12 +10693,12 @@ type TPORTINFO2* = PORT_INFO_2 PPORTINFO2* = ptr PORT_INFO_2 - PREVENT_MEDIA_REMOVAL* {.final.} = object + PREVENT_MEDIA_REMOVAL* {.final, pure.} = object PreventMediaRemoval*: bool TPREVENTMEDIAREMOVAL* = PREVENT_MEDIA_REMOVAL PPREVENTMEDIAREMOVAL* = ptr PREVENT_MEDIA_REMOVAL #PRINTDLG = record conflicts with PrintDlg function - TPRINTDLG* {.final.} = object + TPRINTDLG* {.final, pure.} = object lStructSize*: DWORD hwndOwner*: HWND hDevMode*: HANDLE @@ -10848,17 +10721,16 @@ type LPPRINTDLG* = ptr TPRINTDLG PPRINTDLG* = ptr TPRINTDLG - tagPD* = TPRINTDLG TPD* = TPRINTDLG PPD* = ptr TPRINTDLG - PRINTER_DEFAULTS* {.final.} = object + PRINTER_DEFAULTS* {.final, pure.} = object pDatatype*: LPTSTR pDevMode*: LPDEVMODE DesiredAccess*: ACCESS_MASK TPRINTERDEFAULTS* = PRINTER_DEFAULTS PPRINTERDEFAULTS* = ptr PRINTER_DEFAULTS - PRINTER_INFO_1* {.final.} = object + PRINTER_INFO_1* {.final, pure.} = object Flags*: DWORD pDescription*: LPTSTR pName*: LPTSTR @@ -10867,7 +10739,7 @@ type LPPRINTER_INFO_1* = ptr PRINTER_INFO_1 PPRINTER_INFO_1* = ptr PRINTER_INFO_1 TPRINTERINFO1* = PRINTER_INFO_1 - PRINTER_INFO_2* {.final.} = object + PRINTER_INFO_2* {.final, pure.} = object pServerName*: LPTSTR pPrinterName*: LPTSTR pShareName*: LPTSTR @@ -10892,19 +10764,19 @@ type TPRINTERINFO2* = PRINTER_INFO_2 PPRINTERINFO2* = ptr PRINTER_INFO_2 - PRINTER_INFO_3* {.final.} = object + PRINTER_INFO_3* {.final, pure.} = object pSecurityDescriptor*: PSECURITY_DESCRIPTOR TPRINTERINFO3* = PRINTER_INFO_3 PPRINTERINFO3* = ptr PRINTER_INFO_3 - PRINTER_INFO_4* {.final.} = object + PRINTER_INFO_4* {.final, pure.} = object pPrinterName*: LPTSTR pServerName*: LPTSTR Attributes*: DWORD TPRINTERINFO4* = PRINTER_INFO_4 PPRINTERINFO4* = ptr PRINTER_INFO_4 - PRINTER_INFO_5* {.final.} = object + PRINTER_INFO_5* {.final, pure.} = object pPrinterName*: LPTSTR pPortName*: LPTSTR Attributes*: DWORD @@ -10913,7 +10785,7 @@ type TPRINTERINFO5* = PRINTER_INFO_5 PPRINTERINFO5* = ptr PRINTER_INFO_5 - PRINTER_NOTIFY_INFO_DATA* {.final.} = object + PRINTER_NOTIFY_INFO_DATA* {.final, pure.} = object `type`*: int16 Field*: int16 Reserved*: DWORD @@ -10923,7 +10795,7 @@ type TPRINTERNOTIFYINFODATA* = PRINTER_NOTIFY_INFO_DATA PPRINTERNOTIFYINFODATA* = ptr PRINTER_NOTIFY_INFO_DATA - PRINTER_NOTIFY_INFO* {.final.} = object + PRINTER_NOTIFY_INFO* {.final, pure.} = object Version*: DWORD Flags*: DWORD Count*: DWORD @@ -10931,7 +10803,7 @@ type TPRINTERNOTIFYINFO* = PRINTER_NOTIFY_INFO PPRINTERNOTIFYINFO* = ptr PRINTER_NOTIFY_INFO - PRINTER_NOTIFY_OPTIONS_TYPE* {.final.} = object + PRINTER_NOTIFY_OPTIONS_TYPE* {.final, pure.} = object `type`*: int16 Reserved0*: int16 Reserved1*: DWORD @@ -10941,7 +10813,7 @@ type PPRINTER_NOTIFY_OPTIONS_TYPE* = ptr PRINTER_NOTIFY_OPTIONS_TYPE TPRINTERNOTIFYOPTIONSTYPE* = PRINTER_NOTIFY_OPTIONS_TYPE - PRINTER_NOTIFY_OPTIONS* {.final.} = object + PRINTER_NOTIFY_OPTIONS* {.final, pure.} = object Version*: DWORD Flags*: DWORD Count*: DWORD @@ -10949,12 +10821,12 @@ type TPRINTERNOTIFYOPTIONS* = PRINTER_NOTIFY_OPTIONS PPRINTERNOTIFYOPTIONS* = ptr PRINTER_NOTIFY_OPTIONS - PRINTPROCESSOR_INFO_1* {.final.} = object + PRINTPROCESSOR_INFO_1* {.final, pure.} = object pName*: LPTSTR TPRINTPROCESSORINFO1* = PRINTPROCESSOR_INFO_1 PPRINTPROCESSORINFO1* = ptr PRINTPROCESSOR_INFO_1 - PRIVILEGE_SET* {.final.} = object + PRIVILEGE_SET* {.final, pure.} = object PrivilegeCount*: DWORD Control*: DWORD Privilege*: array[0..(ANYSIZE_ARRAY) - 1, LUID_AND_ATTRIBUTES] @@ -10962,7 +10834,7 @@ type LPPRIVILEGE_SET* = ptr PRIVILEGE_SET PPRIVILEGE_SET* = ptr PRIVILEGE_SET TPRIVILEGESET* = PRIVILEGE_SET - PROCESS_HEAPENTRY* {.final.} = object + PROCESS_HEAPENTRY* {.final, pure.} = object lpData*: PVOID cbData*: DWORD cbOverhead*: int8 @@ -10977,7 +10849,7 @@ type LPPROCESS_HEAP_ENTRY* = ptr PROCESS_HEAPENTRY TPROCESSHEAPENTRY* = PROCESS_HEAPENTRY PPROCESSHEAPENTRY* = ptr PROCESS_HEAPENTRY - PROCESS_INFORMATION* {.final.} = object + PROCESS_INFORMATION* {.final, pure.} = object hProcess*: HANDLE hThread*: HANDLE dwProcessId*: DWORD @@ -10989,7 +10861,7 @@ type LPFNPSPCALLBACK* = proc (para1: HWND, para2: UINT, para3: LPVOID): UINT{. stdcall.} TFNPSPCALLBACK* = LPFNPSPCALLBACK - PROPSHEETPAGE* {.final.} = object + PROPSHEETPAGE* {.final, pure.} = object dwSize*: DWORD dwFlags*: DWORD hInstance*: HINST @@ -11004,10 +10876,10 @@ type LPCPROPSHEETPAGE* = ptr PROPSHEETPAGE TPROPSHEETPAGE* = PROPSHEETPAGE PPROPSHEETPAGE* = ptr PROPSHEETPAGE - emptyrecord* {.final.} = object + emptyrecord* {.final, pure.} = object lpemptyrecord* = ptr emptyrecord HPROPSHEETPAGE* = ptr emptyrecord - PROPSHEETHEADER* {.final.} = object + PROPSHEETHEADER* {.final, pure.} = object dwSize*: DWORD dwFlags*: DWORD hwndParent*: HWND @@ -11032,7 +10904,7 @@ type LPFNADDPROPSHEETPAGES* = proc (para1: LPVOID, para2: LPFNADDPROPSHEETPAGE, para3: LPARAM): WINBOOL{.stdcall.} TFNADDPROPSHEETPAGES* = LPFNADDPROPSHEETPAGES - PROTOCOL_INFO* {.final.} = object + PROTOCOL_INFO* {.final, pure.} = object dwServiceFlags*: DWORD iAddressFamily*: WINT iMaxSockAddr*: WINT @@ -11044,27 +10916,27 @@ type TPROTOCOLINFO* = PROTOCOL_INFO PPROTOCOLINFO* = ptr PROTOCOL_INFO - PROVIDOR_INFO_1* {.final.} = object + PROVIDOR_INFO_1* {.final, pure.} = object pName*: LPTSTR pEnvironment*: LPTSTR pDLLName*: LPTSTR TPROVIDORINFO1* = PROVIDOR_INFO_1 PPROVIDORINFO1* = ptr PROVIDOR_INFO_1 - PSHNOTIFY* {.final.} = object + PSHNOTIFY* {.final, pure.} = object hdr*: NMHDR lParam*: LPARAM LPPSHNOTIFY* = ptr PSHNOTIFY TPSHNOTIFY* = PSHNOTIFY PPSHNOTIFY* = ptr PSHNOTIFY - PUNCTUATION* {.final.} = object + PUNCTUATION* {.final, pure.} = object iSize*: UINT szPunctuation*: LPSTR Tpunctuation* = PUNCTUATION Ppunctuation* = ptr PUNCTUATION - TQUERY_SERVICE_CONFIG* {.final.} = object + TQUERY_SERVICE_CONFIG* {.final, pure.} = object dwServiceType*: DWORD dwStartType*: DWORD dwErrorControl*: DWORD @@ -11077,14 +10949,14 @@ type LPQUERY_SERVICE_CONFIG* = ptr TQUERY_SERVICE_CONFIG PQUERYSERVICECONFIG* = ptr TQUERY_SERVICE_CONFIG - TQUERY_SERVICE_LOCK_STATUS* {.final.} = object + TQUERY_SERVICE_LOCK_STATUS* {.final, pure.} = object fIsLocked*: DWORD lpLockOwner*: LPTSTR dwLockDuration*: DWORD LPQUERY_SERVICE_LOCK_STATUS* = ptr TQUERY_SERVICE_LOCK_STATUS PQUERYSERVICELOCKSTATUS* = ptr TQUERY_SERVICE_LOCK_STATUS - RASAMB* {.final.} = object + RASAMB* {.final, pure.} = object dwSize*: DWORD dwError*: DWORD szNetBiosError*: array[0..(NETBIOS_NAME_LEN + 1) - 1, TCHAR] @@ -11092,7 +10964,7 @@ type TRASAMB* = RASAMB PRASAMB* = ptr RASAMB - RASCONN* {.final.} = object + RASCONN* {.final, pure.} = object dwSize*: DWORD hrasconn*: HRASCONN szEntryName*: array[0..(RAS_MaxEntryName + 1) - 1, TCHAR] @@ -11101,7 +10973,7 @@ type TRASCONN* = RASCONN PRASCONN* = ptr RASCONN - RASCONNSTATUS* {.final.} = object + RASCONNSTATUS* {.final, pure.} = object dwSize*: DWORD rasconnstate*: RASCONNSTATE dwError*: DWORD @@ -11110,7 +10982,7 @@ type TRASCONNSTATUS* = RASCONNSTATUS PRASCONNSTATUS* = ptr RASCONNSTATUS - RASDIALEXTENSIONS* {.final.} = object + RASDIALEXTENSIONS* {.final, pure.} = object dwSize*: DWORD dwfOptions*: DWORD hwndParent*: HWND @@ -11118,7 +10990,7 @@ type TRASDIALEXTENSIONS* = RASDIALEXTENSIONS PRASDIALEXTENSIONS* = ptr RASDIALEXTENSIONS - RASDIALPARAMS* {.final.} = object + RASDIALPARAMS* {.final, pure.} = object dwSize*: DWORD szEntryName*: array[0..(RAS_MaxEntryName + 1) - 1, TCHAR] szPhoneNumber*: array[0..(RAS_MaxPhoneNumber + 1) - 1, TCHAR] @@ -11129,27 +11001,27 @@ type TRASDIALPARAMS* = RASDIALPARAMS PRASDIALPARAMS* = ptr RASDIALPARAMS - RASENTRYNAME* {.final.} = object + RASENTRYNAME* {.final, pure.} = object dwSize*: DWORD szEntryName*: array[0..(RAS_MaxEntryName + 1) - 1, TCHAR] TRASENTRYNAME* = RASENTRYNAME PRASENTRYNAME* = ptr RASENTRYNAME - RASPPPIP* {.final.} = object + RASPPPIP* {.final, pure.} = object dwSize*: DWORD dwError*: DWORD szIpAddress*: array[0..(RAS_MaxIpAddress + 1) - 1, TCHAR] TRASPPPIP* = RASPPPIP PRASPPPIP* = ptr RASPPPIP - RASPPPIPX* {.final.} = object + RASPPPIPX* {.final, pure.} = object dwSize*: DWORD dwError*: DWORD szIpxAddress*: array[0..(RAS_MaxIpxAddress + 1) - 1, TCHAR] TRASPPPIPX* = RASPPPIPX PRASPPPIPX* = ptr RASPPPIPX - RASPPPNBF* {.final.} = object + RASPPPNBF* {.final, pure.} = object dwSize*: DWORD dwError*: DWORD dwNetBiosError*: DWORD @@ -11159,7 +11031,7 @@ type TRASPPPNBF* = RASPPPNBF PRASPPPNBF* = ptr RASPPPNBF - RASTERIZER_STATUS* {.final.} = object + RASTERIZER_STATUS* {.final, pure.} = object nSize*: short wFlags*: short nLanguageID*: short @@ -11167,14 +11039,14 @@ type LPRASTERIZER_STATUS* = ptr RASTERIZER_STATUS TRASTERIZERSTATUS* = RASTERIZER_STATUS PRASTERIZERSTATUS* = ptr RASTERIZER_STATUS - REASSIGN_BLOCKS* {.final.} = object + REASSIGN_BLOCKS* {.final, pure.} = object Reserved*: int16 Count*: int16 BlockNumber*: array[0..0, DWORD] TREASSIGNBLOCKS* = REASSIGN_BLOCKS PREASSIGNBLOCKS* = ptr REASSIGN_BLOCKS - REMOTE_NAME_INFO* {.final.} = object + REMOTE_NAME_INFO* {.final, pure.} = object lpUniversalName*: LPTSTR lpConnectionName*: LPTSTR lpRemainingPath*: LPTSTR @@ -11195,19 +11067,19 @@ type # DWORD dwUser; # } REOBJECT; # - REPASTESPECIAL* {.final.} = object + REPASTESPECIAL* {.final, pure.} = object dwAspect*: DWORD dwParam*: DWORD Trepastespecial* = REPASTESPECIAL Prepastespecial* = ptr REPASTESPECIAL - REQRESIZE* {.final.} = object + REQRESIZE* {.final, pure.} = object nmhdr*: NMHDR rc*: RECT Treqresize* = REQRESIZE Preqresize* = ptr REQRESIZE - RGNDATAHEADER* {.final.} = object + RGNDATAHEADER* {.final, pure.} = object dwSize*: DWORD iType*: DWORD nCount*: DWORD @@ -11216,14 +11088,14 @@ type TRGNDATAHEADER* = RGNDATAHEADER PRGNDATAHEADER* = ptr RGNDATAHEADER - RGNDATA* {.final.} = object + RGNDATA* {.final, pure.} = object rdh*: RGNDATAHEADER Buffer*: array[0..0, char] LPRGNDATA* = ptr RGNDATA TRGNDATA* = RGNDATA PRGNDATA* = ptr RGNDATA - SCROLLINFO* {.final.} = object + SCROLLINFO* {.final, pure.} = object cbSize*: UINT fMask*: UINT nMin*: int32 @@ -11236,7 +11108,7 @@ type LPCSCROLLINFO* = ptr SCROLLINFO TSCROLLINFO* = SCROLLINFO PSCROLLINFO* = ptr SCROLLINFO - SECURITY_ATTRIBUTES* {.final.} = object + SECURITY_ATTRIBUTES* {.final, pure.} = object nLength*: DWORD lpSecurityDescriptor*: LPVOID bInheritHandle*: WINBOOL @@ -11247,14 +11119,14 @@ type SECURITY_INFORMATION* = DWORD PSECURITY_INFORMATION* = ptr SECURITY_INFORMATION TSECURITYINFORMATION* = SECURITY_INFORMATION - SELCHANGE* {.final.} = object + SELCHANGE* {.final, pure.} = object nmhdr*: NMHDR chrg*: CHARRANGE seltyp*: int16 Tselchange* = SELCHANGE Pselchange* = ptr SELCHANGE - SERIALKEYS* {.final.} = object + SERIALKEYS* {.final, pure.} = object cbSize*: DWORD dwFlags*: DWORD lpszActivePort*: LPSTR @@ -11265,14 +11137,14 @@ type LPSERIALKEYS* = ptr SERIALKEYS TSERIALKEYS* = SERIALKEYS PSERIALKEYS* = ptr SERIALKEYS - SERVICE_TABLE_ENTRY* {.final.} = object + SERVICE_TABLE_ENTRY* {.final, pure.} = object lpServiceName*: LPTSTR lpServiceProc*: LPSERVICE_MAIN_FUNCTION LPSERVICE_TABLE_ENTRY* = ptr SERVICE_TABLE_ENTRY TSERVICETABLEENTRY* = SERVICE_TABLE_ENTRY PSERVICETABLEENTRY* = ptr SERVICE_TABLE_ENTRY - SERVICE_TYPE_VALUE_ABS* {.final.} = object + SERVICE_TYPE_VALUE_ABS* {.final, pure.} = object dwNameSpace*: DWORD dwValueType*: DWORD dwValueSize*: DWORD @@ -11281,14 +11153,14 @@ type TSERVICETYPEVALUEABS* = SERVICE_TYPE_VALUE_ABS PSERVICETYPEVALUEABS* = ptr SERVICE_TYPE_VALUE_ABS - SERVICE_TYPE_INFO_ABS* {.final.} = object + SERVICE_TYPE_INFO_ABS* {.final, pure.} = object lpTypeName*: LPTSTR dwValueCount*: DWORD Values*: array[0..0, SERVICE_TYPE_VALUE_ABS] TSERVICETYPEINFOABS* = SERVICE_TYPE_INFO_ABS PSERVICETYPEINFOABS* = ptr SERVICE_TYPE_INFO_ABS - SESSION_BUFFER* {.final.} = object + SESSION_BUFFER* {.final, pure.} = object lsn*: UCHAR state*: UCHAR local_name*: array[0..(NCBNAMSZ) - 1, UCHAR] @@ -11298,7 +11170,7 @@ type TSESSIONBUFFER* = SESSION_BUFFER PSESSIONBUFFER* = ptr SESSION_BUFFER - SESSION_HEADER* {.final.} = object + SESSION_HEADER* {.final, pure.} = object sess_name*: UCHAR num_sess*: UCHAR rcv_dg_outstanding*: UCHAR @@ -11306,7 +11178,7 @@ type TSESSIONHEADER* = SESSION_HEADER PSESSIONHEADER* = ptr SESSION_HEADER - SET_PARTITION_INFORMATION* {.final.} = object + SET_PARTITION_INFORMATION* {.final, pure.} = object PartitionType*: int8 TSETPARTITIONINFORMATION* = SET_PARTITION_INFORMATION @@ -11314,7 +11186,7 @@ type SHCONTF* = enum SHCONTF_FOLDERS = 32, SHCONTF_NONFOLDERS = 64, SHCONTF_INCLUDEHIDDEN = 128 TSHCONTF* = SHCONTF - SHFILEINFO* {.final.} = object + SHFILEINFO* {.final, pure.} = object hIcon*: HICON iIcon*: int32 dwAttributes*: DWORD @@ -11326,7 +11198,7 @@ type FILEOP_FLAGS* = int16 TFILEOPFLAGS* = FILEOP_FLAGS PFILEOPFLAGS* = ptr FILEOP_FLAGS - SHFILEOPSTRUCT* {.final.} = object + SHFILEOPSTRUCT* {.final, pure.} = object hwnd*: HWND wFunc*: UINT pFrom*: LPCSTR @@ -11341,9 +11213,8 @@ type PSHFILEOPSTRUCT* = ptr SHFILEOPSTRUCT SHGNO* = enum SHGDN_NORMAL = 0, SHGDN_INFOLDER = 1, SHGDN_FORPARSING = 0x00008000 - tagSHGDN* = SHGNO TSHGDN* = SHGNO - SHNAMEMAPPING* {.final.} = object + SHNAMEMAPPING* {.final, pure.} = object pszOldPath*: LPSTR pszNewPath*: LPSTR cchOldPath*: int32 @@ -11352,7 +11223,7 @@ type LPSHNAMEMAPPING* = ptr SHNAMEMAPPING TSHNAMEMAPPING* = SHNAMEMAPPING PSHNAMEMAPPING* = ptr SHNAMEMAPPING - SID_AND_ATTRIBUTES* {.final.} = object + SID_AND_ATTRIBUTES* {.final, pure.} = object Sid*: PSID Attributes*: DWORD @@ -11361,12 +11232,12 @@ type SID_AND_ATTRIBUTES_ARRAY* = array[0..(ANYSIZE_ARRAY) - 1, SID_AND_ATTRIBUTES] PSID_AND_ATTRIBUTES_ARRAY* = ptr SID_AND_ATTRIBUTES_ARRAY TSIDANDATTRIBUTESARRAY* = SID_AND_ATTRIBUTES_ARRAY - SINGLE_LIST_ENTRY* {.final.} = object + SINGLE_LIST_ENTRY* {.final, pure.} = object Next*: ptr SINGLE_LIST_ENTRY TSINGLELISTENTRY* = SINGLE_LIST_ENTRY PSINGLELISTENTRY* = ptr SINGLE_LIST_ENTRY - SOUNDSENTRY* {.final.} = object + SOUNDSENTRY* {.final, pure.} = object cbSize*: UINT dwFlags*: DWORD iFSTextEffect*: DWORD @@ -11381,10 +11252,9 @@ type iWindowsEffectOrdinal*: DWORD LPSOUNDSENTRY* = ptr SOUNDSENTRY - tagSOUNDSENTRY* = SOUNDSENTRY TSOUNDSENTRY* = SOUNDSENTRY PSOUNDSENTRY* = ptr SOUNDSENTRY - STARTUPINFO* {.final.} = object + STARTUPINFO* {.final, pure.} = object cb*: DWORD lpReserved*: LPTSTR lpDesktop*: LPTSTR @@ -11407,42 +11277,42 @@ type LPSTARTUPINFO* = ptr STARTUPINFO TSTARTUPINFO* = STARTUPINFO PSTARTUPINFO* = ptr STARTUPINFO - STICKYKEYS* {.final.} = object + STICKYKEYS* {.final, pure.} = object cbSize*: DWORD dwFlags*: DWORD LPSTICKYKEYS* = ptr STICKYKEYS TSTICKYKEYS* = STICKYKEYS PSTICKYKEYS* = ptr STICKYKEYS - STRRET* {.final.} = object + STRRET* {.final, pure.} = object uType*: UINT cStr*: array[0..(MAX_PATH) - 1, char] LPSTRRET* = ptr STRRET TSTRRET* = STRRET PSTRRET* = ptr STRRET - STYLEBUF* {.final.} = object + STYLEBUF* {.final, pure.} = object dwStyle*: DWORD szDescription*: array[0..31, CHAR] LPSTYLEBUF* = ptr STYLEBUF TSTYLEBUF* = STYLEBUF PSTYLEBUF* = ptr STYLEBUF - STYLESTRUCT* {.final.} = object + STYLESTRUCT* {.final, pure.} = object styleOld*: DWORD styleNew*: DWORD LPSTYLESTRUCT* = ptr STYLESTRUCT TSTYLESTRUCT* = STYLESTRUCT PSTYLESTRUCT* = ptr STYLESTRUCT - SYSTEM_AUDIT_ACE* {.final.} = object + SYSTEM_AUDIT_ACE* {.final, pure.} = object Header*: ACE_HEADER Mask*: ACCESS_MASK SidStart*: DWORD TSYSTEMAUDITACE* = SYSTEM_AUDIT_ACE PSYSTEMAUDITACE* = ptr SYSTEM_AUDIT_ACE - SYSTEM_INFO* {.final.} = object + SYSTEM_INFO* {.final, pure.} = object dwOemId*: DWORD dwPageSize*: DWORD lpMinimumApplicationAddress*: LPVOID @@ -11457,7 +11327,7 @@ type LPSYSTEM_INFO* = ptr SYSTEM_INFO TSYSTEMINFO* = SYSTEM_INFO PSYSTEMINFO* = ptr SYSTEM_INFO - SYSTEM_POWER_STATUS* {.final.} = object + SYSTEM_POWER_STATUS* {.final, pure.} = object ACLineStatus*: int8 BatteryFlag*: int8 BatteryLifePercent*: int8 @@ -11468,12 +11338,12 @@ type TSYSTEMPOWERSTATUS* = SYSTEM_POWER_STATUS PSYSTEMPOWERSTATUS* = ptr SYSTEM_POWER_STATUS LPSYSTEM_POWER_STATUS* = ptr emptyrecord - TAPE_ERASE* {.final.} = object + TAPE_ERASE* {.final, pure.} = object `type`*: ULONG TTAPEERASE* = TAPE_ERASE PTAPEERASE* = ptr TAPE_ERASE - TAPE_GET_DRIVE_PARAMETERS* {.final.} = object + TAPE_GET_DRIVE_PARAMETERS* {.final, pure.} = object ECC*: bool Compression*: bool DataPadding*: bool @@ -11488,7 +11358,7 @@ type TTAPEGETDRIVEPARAMETERS* = TAPE_GET_DRIVE_PARAMETERS PTAPEGETDRIVEPARAMETERS* = ptr TAPE_GET_DRIVE_PARAMETERS - TAPE_GET_MEDIA_PARAMETERS* {.final.} = object + TAPE_GET_MEDIA_PARAMETERS* {.final, pure.} = object Capacity*: LARGE_INTEGER Remaining*: LARGE_INTEGER BlockSize*: DWORD @@ -11497,7 +11367,7 @@ type TTAPEGETMEDIAPARAMETERS* = TAPE_GET_MEDIA_PARAMETERS PTAPEGETMEDIAPARAMETERS* = ptr TAPE_GET_MEDIA_PARAMETERS - TAPE_GET_POSITION* {.final.} = object + TAPE_GET_POSITION* {.final, pure.} = object `type`*: ULONG Partition*: ULONG OffsetLow*: ULONG @@ -11505,12 +11375,12 @@ type TTAPEGETPOSITION* = TAPE_GET_POSITION PTAPEGETPOSITION* = ptr TAPE_GET_POSITION - TAPE_PREPARE* {.final.} = object + TAPE_PREPARE* {.final, pure.} = object Operation*: ULONG TTAPEPREPARE* = TAPE_PREPARE PTAPEPREPARE* = ptr TAPE_PREPARE - TAPE_SET_DRIVE_PARAMETERS* {.final.} = object + TAPE_SET_DRIVE_PARAMETERS* {.final, pure.} = object ECC*: bool Compression*: bool DataPadding*: bool @@ -11519,12 +11389,12 @@ type TTAPESETDRIVEPARAMETERS* = TAPE_SET_DRIVE_PARAMETERS PTAPESETDRIVEPARAMETERS* = ptr TAPE_SET_DRIVE_PARAMETERS - TAPE_SET_MEDIA_PARAMETERS* {.final.} = object + TAPE_SET_MEDIA_PARAMETERS* {.final, pure.} = object BlockSize*: ULONG TTAPESETMEDIAPARAMETERS* = TAPE_SET_MEDIA_PARAMETERS PTAPESETMEDIAPARAMETERS* = ptr TAPE_SET_MEDIA_PARAMETERS - TAPE_SET_POSITION* {.final.} = object + TAPE_SET_POSITION* {.final, pure.} = object `Method`*: ULONG Partition*: ULONG OffsetLow*: ULONG @@ -11532,19 +11402,19 @@ type TTAPESETPOSITION* = TAPE_SET_POSITION PTAPESETPOSITION* = ptr TAPE_SET_POSITION - TAPE_WRITE_MARKS* {.final.} = object + TAPE_WRITE_MARKS* {.final, pure.} = object `type`*: ULONG Count*: ULONG TTAPEWRITEMARKS* = TAPE_WRITE_MARKS PTAPEWRITEMARKS* = ptr TAPE_WRITE_MARKS - TTBADDBITMAP* {.final.} = object + TTBADDBITMAP* {.final, pure.} = object hInst*: HINST nID*: UINT LPTBADDBITMAP* = ptr TTBADDBITMAP PTBADDBITMAP* = ptr TTBADDBITMAP - TBBUTTON* {.final.} = object + TBBUTTON* {.final, pure.} = object iBitmap*: int32 idCommand*: int32 fsState*: int8 @@ -11556,7 +11426,7 @@ type LPCTBBUTTON* = ptr TBBUTTON TTBBUTTON* = TBBUTTON PTBBUTTON* = ptr TBBUTTON - TBNOTIFY* {.final.} = object + TBNOTIFY* {.final, pure.} = object hdr*: NMHDR iItem*: int32 tbButton*: TBBUTTON @@ -11566,20 +11436,20 @@ type LPTBNOTIFY* = ptr TBNOTIFY TTBNOTIFY* = TBNOTIFY PTBNOTIFY* = ptr TBNOTIFY - TBSAVEPARAMS* {.final.} = object + TBSAVEPARAMS* {.final, pure.} = object hkr*: HKEY pszSubKey*: LPCTSTR pszValueName*: LPCTSTR TTBSAVEPARAMS* = TBSAVEPARAMS PTBSAVEPARAMS* = ptr TBSAVEPARAMS - TC_HITTESTINFO* {.final.} = object + TC_HITTESTINFO* {.final, pure.} = object pt*: POINT flags*: UINT TTCHITTESTINFO* = TC_HITTESTINFO PTCHITTESTINFO* = ptr TC_HITTESTINFO - TC_ITEM* {.final.} = object + TC_ITEM* {.final, pure.} = object mask*: UINT lpReserved1*: UINT lpReserved2*: UINT @@ -11590,7 +11460,7 @@ type TTCITEM* = TC_ITEM PTCITEM* = ptr TC_ITEM - TC_ITEMHEADER* {.final.} = object + TC_ITEMHEADER* {.final, pure.} = object mask*: UINT lpReserved1*: UINT lpReserved2*: UINT @@ -11600,20 +11470,20 @@ type TTCITEMHEADER* = TC_ITEMHEADER PTCITEMHEADER* = ptr TC_ITEMHEADER - TC_KEYDOWN* {.final.} = object + TC_KEYDOWN* {.final, pure.} = object hdr*: NMHDR wVKey*: int16 flags*: UINT TTCKEYDOWN* = TC_KEYDOWN PTCKEYDOWN* = ptr TC_KEYDOWN - TEXTRANGE* {.final.} = object + TEXTRANGE* {.final, pure.} = object chrg*: CHARRANGE lpstrText*: LPSTR Ttextrange* = TEXTRANGE Ptextrange* = ptr TEXTRANGE - TIME_ZONE_INFORMATION* {.final.} = object + TIME_ZONE_INFORMATION* {.final, pure.} = object Bias*: LONG StandardName*: array[0..31, WCHAR] StandardDate*: SYSTEMTIME @@ -11625,18 +11495,18 @@ type LPTIME_ZONE_INFORMATION* = ptr TIME_ZONE_INFORMATION TTIMEZONEINFORMATION* = TIME_ZONE_INFORMATION PTIMEZONEINFORMATION* = ptr TIME_ZONE_INFORMATION - TOGGLEKEYS* {.final.} = object + TOGGLEKEYS* {.final, pure.} = object cbSize*: DWORD dwFlags*: DWORD TTOGGLEKEYS* = TOGGLEKEYS PTOGGLEKEYS* = ptr TOGGLEKEYS - TTOKEN_SOURCE* {.final.} = object + TTOKEN_SOURCE* {.final, pure.} = object SourceName*: array[0..7, CHAR] SourceIdentifier*: LUID PTOKENSOURCE* = ptr TTOKEN_SOURCE - TOKEN_CONTROL* {.final.} = object + TOKEN_CONTROL* {.final, pure.} = object TokenId*: LUID AuthenticationId*: LUID ModifiedId*: LUID @@ -11644,31 +11514,31 @@ type TTOKENCONTROL* = TOKEN_CONTROL PTOKENCONTROL* = ptr TOKEN_CONTROL - TTOKEN_DEFAULT_DACL* {.final.} = object + TTOKEN_DEFAULT_DACL* {.final, pure.} = object DefaultDacl*: PACL PTOKENDEFAULTDACL* = ptr TTOKEN_DEFAULT_DACL - TTOKEN_GROUPS* {.final.} = object + TTOKEN_GROUPS* {.final, pure.} = object GroupCount*: DWORD Groups*: array[0..(ANYSIZE_ARRAY) - 1, SID_AND_ATTRIBUTES] LPTOKEN_GROUPS* = ptr TTOKEN_GROUPS PTOKENGROUPS* = ptr TTOKEN_GROUPS - TTOKEN_OWNER* {.final.} = object + TTOKEN_OWNER* {.final, pure.} = object Owner*: PSID PTOKENOWNER* = ptr TTOKEN_OWNER - TTOKEN_PRIMARY_GROUP* {.final.} = object + TTOKEN_PRIMARY_GROUP* {.final, pure.} = object PrimaryGroup*: PSID PTOKENPRIMARYGROUP* = ptr TTOKEN_PRIMARY_GROUP - TTOKEN_PRIVILEGES* {.final.} = object + TTOKEN_PRIVILEGES* {.final, pure.} = object PrivilegeCount*: DWORD Privileges*: array[0..(ANYSIZE_ARRAY) - 1, LUID_AND_ATTRIBUTES] PTOKEN_PRIVILEGES* = ptr TTOKEN_PRIVILEGES LPTOKEN_PRIVILEGES* = ptr TTOKEN_PRIVILEGES - TTOKEN_STATISTICS* {.final.} = object + TTOKEN_STATISTICS* {.final, pure.} = object TokenId*: LUID AuthenticationId*: LUID ExpirationTime*: LARGE_INTEGER @@ -11681,11 +11551,11 @@ type ModifiedId*: LUID PTOKENSTATISTICS* = ptr TTOKEN_STATISTICS - TTOKEN_USER* {.final.} = object + TTOKEN_USER* {.final, pure.} = object User*: SID_AND_ATTRIBUTES PTOKENUSER* = ptr TTOKEN_USER - TOOLINFO* {.final.} = object + TOOLINFO* {.final, pure.} = object cbSize*: UINT uFlags*: UINT hwnd*: HWND @@ -11697,7 +11567,7 @@ type LPTOOLINFO* = ptr TOOLINFO TTOOLINFO* = TOOLINFO PTOOLINFO* = ptr TOOLINFO - TOOLTIPTEXT* {.final.} = object + TOOLTIPTEXT* {.final, pure.} = object hdr*: NMHDR lpszText*: LPTSTR szText*: array[0..79, char] @@ -11707,15 +11577,14 @@ type LPTOOLTIPTEXT* = ptr TOOLTIPTEXT TTOOLTIPTEXT* = TOOLTIPTEXT PTOOLTIPTEXT* = ptr TOOLTIPTEXT - TPMPARAMS* {.final.} = object + TPMPARAMS* {.final, pure.} = object cbSize*: UINT rcExclude*: RECT LPTPMPARAMS* = ptr TPMPARAMS - tagTPMPARAMS* = TPMPARAMS TTPMPARAMS* = TPMPARAMS PTPMPARAMS* = ptr TPMPARAMS - TRANSMIT_FILE_BUFFERS* {.final.} = object + TRANSMIT_FILE_BUFFERS* {.final, pure.} = object Head*: PVOID HeadLength*: DWORD Tail*: PVOID @@ -11723,7 +11592,7 @@ type TTRANSMITFILEBUFFERS* = TRANSMIT_FILE_BUFFERS PTRANSMITFILEBUFFERS* = ptr TRANSMIT_FILE_BUFFERS - TTHITTESTINFO* {.final.} = object + TTHITTESTINFO* {.final, pure.} = object hwnd*: HWND pt*: POINT ti*: TOOLINFO @@ -11731,7 +11600,7 @@ type LPHITTESTINFO* = ptr TTHITTESTINFO TTTHITTESTINFO* = TTHITTESTINFO PTTHITTESTINFO* = ptr TTHITTESTINFO - TTPOLYCURVE* {.final.} = object + TTPOLYCURVE* {.final, pure.} = object wType*: int16 cpfx*: int16 apfx*: array[0..0, POINTFX] @@ -11739,7 +11608,7 @@ type LPTTPOLYCURVE* = ptr TTPOLYCURVE TTTPOLYCURVE* = TTPOLYCURVE PTTPOLYCURVE* = ptr TTPOLYCURVE - TTPOLYGONHEADER* {.final.} = object + TTPOLYGONHEADER* {.final, pure.} = object cb*: DWORD dwType*: DWORD pfxStart*: POINTFX @@ -11747,13 +11616,13 @@ type LPTTPOLYGONHEADER* = ptr TTPOLYGONHEADER TTTPOLYGONHEADER* = TTPOLYGONHEADER PTTPOLYGONHEADER* = ptr TTPOLYGONHEADER - TV_DISPINFO* {.final.} = object + TV_DISPINFO* {.final, pure.} = object hdr*: NMHDR item*: TV_ITEM TTVDISPINFO* = TV_DISPINFO PTVDISPINFO* = ptr TV_DISPINFO - TV_HITTESTINFO* {.final.} = object + TV_HITTESTINFO* {.final, pure.} = object pt*: POINT flags*: UINT hItem*: HTREEITEM @@ -11761,7 +11630,7 @@ type LPTV_HITTESTINFO* = ptr TV_HITTESTINFO TTVHITTESTINFO* = TV_HITTESTINFO PTVHITTESTINFO* = ptr TV_HITTESTINFO - TV_INSERTSTRUCT* {.final.} = object + TV_INSERTSTRUCT* {.final, pure.} = object hParent*: HTREEITEM hInsertAfter*: HTREEITEM item*: TV_ITEM @@ -11769,14 +11638,14 @@ type LPTV_INSERTSTRUCT* = ptr TV_INSERTSTRUCT TTVINSERTSTRUCT* = TV_INSERTSTRUCT PTVINSERTSTRUCT* = ptr TV_INSERTSTRUCT - TV_KEYDOWN* {.final.} = object + TV_KEYDOWN* {.final, pure.} = object hdr*: NMHDR wVKey*: int16 flags*: UINT TTVKEYDOWN* = TV_KEYDOWN PTVKEYDOWN* = ptr TV_KEYDOWN - TV_SORTCB* {.final.} = object + TV_SORTCB* {.final, pure.} = object hParent*: HTREEITEM lpfnCompare*: PFNTVCOMPARE lParam*: LPARAM @@ -11784,26 +11653,25 @@ type LPTV_SORTCB* = ptr TV_SORTCB TTVSORTCB* = TV_SORTCB PTVSORTCB* = ptr TV_SORTCB - UDACCEL* {.final.} = object + UDACCEL* {.final, pure.} = object nSec*: UINT nInc*: UINT TUDACCEL* = UDACCEL PUDACCEL* = ptr UDACCEL - UNIVERSAL_NAME_INFO* {.final.} = object + UNIVERSAL_NAME_INFO* {.final, pure.} = object lpUniversalName*: LPTSTR TUNIVERSALNAMEINFO* = UNIVERSAL_NAME_INFO PUNIVERSALNAMEINFO* = ptr UNIVERSAL_NAME_INFO - USEROBJECTFLAGS* {.final.} = object + USEROBJECTFLAGS* {.final, pure.} = object fInherit*: WINBOOL fReserved*: WINBOOL dwFlags*: DWORD - tagUSEROBJECTFLAGS* = USEROBJECTFLAGS TUSEROBJECTFLAGS* = USEROBJECTFLAGS PUSEROBJECTFLAGS* = ptr USEROBJECTFLAGS - VALENT* {.final.} = object + VALENT* {.final, pure.} = object ve_valuename*: LPTSTR ve_valuelen*: DWORD ve_valueptr*: DWORD @@ -11814,13 +11682,13 @@ type value_ent* = VALENT Tvalue_ent* = VALENT Pvalue_ent* = ptr VALENT - VERIFY_INFORMATION* {.final.} = object + VERIFY_INFORMATION* {.final, pure.} = object StartingOffset*: LARGE_INTEGER len*: DWORD TVERIFYINFORMATION* = VERIFY_INFORMATION PVERIFYINFORMATION* = ptr VERIFY_INFORMATION - VS_FIXEDFILEINFO* {.final.} = object + VS_FIXEDFILEINFO* {.final, pure.} = object dwSignature*: DWORD dwStrucVersion*: DWORD dwFileVersionMS*: DWORD @@ -11837,7 +11705,7 @@ type TVSFIXEDFILEINFO* = VS_FIXEDFILEINFO PVSFIXEDFILEINFO* = ptr VS_FIXEDFILEINFO - WIN32_FIND_DATA* {.final.} = object + WIN32_FIND_DATA* {.final, pure.} = object dwFileAttributes*: DWORD ftCreationTime*: FILETIME ftLastAccessTime*: FILETIME @@ -11853,7 +11721,7 @@ type PWIN32_FIND_DATA* = ptr WIN32_FIND_DATA TWIN32FINDDATA* = WIN32_FIND_DATA TWIN32FINDDATAA* = WIN32_FIND_DATA - WIN32_FIND_DATAW* {.final.} = object + WIN32_FIND_DATAW* {.final, pure.} = object dwFileAttributes*: DWORD ftCreationTime*: FILETIME ftLastAccessTime*: FILETIME @@ -11868,7 +11736,7 @@ type LPWIN32_FIND_DATAW* = ptr WIN32_FIND_DATAW PWIN32_FIND_DATAW* = ptr WIN32_FIND_DATAW TWIN32FINDDATAW* = WIN32_FIND_DATAW - WIN32_STREAM_ID* {.final.} = object + WIN32_STREAM_ID* {.final, pure.} = object dwStreamId*: DWORD dwStreamAttributes*: DWORD Size*: LARGE_INTEGER @@ -11877,7 +11745,7 @@ type TWIN32STREAMID* = WIN32_STREAM_ID PWIN32STREAMID* = ptr WIN32_STREAM_ID - WINDOWPLACEMENT* {.final.} = object + WINDOWPLACEMENT* {.final, pure.} = object len*: UINT flags*: UINT showCmd*: UINT @@ -11887,7 +11755,7 @@ type TWINDOWPLACEMENT* = WINDOWPLACEMENT PWINDOWPLACEMENT* = ptr WINDOWPLACEMENT - WNDCLASS* {.final.} = object + WNDCLASS* {.final, pure.} = object style*: UINT lpfnWndProc*: WNDPROC cbClsExtra*: int32 @@ -11903,7 +11771,7 @@ type TWNDCLASS* = WNDCLASS TWNDCLASSA* = WNDCLASS PWNDCLASS* = ptr WNDCLASS - WNDCLASSW* {.final.} = object + WNDCLASSW* {.final, pure.} = object style*: UINT lpfnWndProc*: WNDPROC cbClsExtra*: int32 @@ -11918,7 +11786,7 @@ type LPWNDCLASSW* = ptr WNDCLASSW TWNDCLASSW* = WNDCLASSW PWNDCLASSW* = ptr WNDCLASSW - WNDCLASSEX* {.final.} = object + WNDCLASSEX* {.final, pure.} = object cbSize*: UINT style*: UINT lpfnWndProc*: WNDPROC @@ -11936,7 +11804,7 @@ type TWNDCLASSEX* = WNDCLASSEX TWNDCLASSEXA* = WNDCLASSEX PWNDCLASSEX* = ptr WNDCLASSEX - WNDCLASSEXW* {.final.} = object + WNDCLASSEXW* {.final, pure.} = object cbSize*: UINT style*: UINT lpfnWndProc*: WNDPROC @@ -11953,7 +11821,7 @@ type LPWNDCLASSEXW* = ptr WNDCLASSEXW TWNDCLASSEXW* = WNDCLASSEXW PWNDCLASSEXW* = ptr WNDCLASSEXW - CONNECTDLGSTRUCT* {.final.} = object + CONNECTDLGSTRUCT* {.final, pure.} = object cbStructure*: DWORD hwndOwner*: HWND lpConnRes*: LPNETRESOURCE @@ -11963,7 +11831,7 @@ type LPCONNECTDLGSTRUCT* = ptr CONNECTDLGSTRUCT TCONNECTDLGSTRUCT* = CONNECTDLGSTRUCT PCONNECTDLGSTRUCT* = ptr CONNECTDLGSTRUCT - DISCDLGSTRUCT* {.final.} = object + DISCDLGSTRUCT* {.final, pure.} = object cbStructure*: DWORD hwndOwner*: HWND lpLocalName*: LPTSTR @@ -11974,7 +11842,7 @@ type TDISCDLGSTRUCT* = DISCDLGSTRUCT TDISCDLGSTRUCTA* = DISCDLGSTRUCT PDISCDLGSTRUCT* = ptr DISCDLGSTRUCT - NETINFOSTRUCT* {.final.} = object + NETINFOSTRUCT* {.final, pure.} = object cbStructure*: DWORD dwProviderVersion*: DWORD dwStatus*: DWORD @@ -11987,7 +11855,7 @@ type LPNETINFOSTRUCT* = ptr NETINFOSTRUCT TNETINFOSTRUCT* = NETINFOSTRUCT PNETINFOSTRUCT* = ptr NETINFOSTRUCT - NETCONNECTINFOSTRUCT* {.final.} = object + NETCONNECTINFOSTRUCT* {.final, pure.} = object cbStructure*: DWORD dwFlags*: DWORD dwSpeed*: DWORD @@ -12009,13 +11877,13 @@ type para3: int32, para4: LPARAM): int32{.stdcall.} LPOVERLAPPED_COMPLETION_ROUTINE* = proc (para1: DWORD, para2: DWORD, para3: LPOVERLAPPED){.stdcall.} # Structures for the extensions to OpenGL - POINTFLOAT* {.final.} = object + POINTFLOAT* {.final, pure.} = object x*: float32 y*: float32 TPOINTFLOAT* = POINTFLOAT PPOINTFLOAT* = ptr POINTFLOAT - GLYPHMETRICSFLOAT* {.final.} = object + GLYPHMETRICSFLOAT* {.final, pure.} = object gmfBlackBoxX*: float32 gmfBlackBoxY*: float32 gmfptGlyphOrigin*: POINTFLOAT @@ -12025,7 +11893,7 @@ type LPGLYPHMETRICSFLOAT* = ptr GLYPHMETRICSFLOAT TGLYPHMETRICSFLOAT* = GLYPHMETRICSFLOAT PGLYPHMETRICSFLOAT* = ptr GLYPHMETRICSFLOAT - LAYERPLANEDESCRIPTOR* {.final.} = object + LAYERPLANEDESCRIPTOR* {.final, pure.} = object nSize*: int16 nVersion*: int16 dwFlags*: DWORD @@ -12052,10 +11920,9 @@ type crTransparent*: COLORREF LPLAYERPLANEDESCRIPTOR* = ptr LAYERPLANEDESCRIPTOR - tagLAYERPLANEDESCRIPTOR* = LAYERPLANEDESCRIPTOR TLAYERPLANEDESCRIPTOR* = LAYERPLANEDESCRIPTOR PLAYERPLANEDESCRIPTOR* = ptr LAYERPLANEDESCRIPTOR - PIXELFORMATDESCRIPTOR* {.final.} = object + PIXELFORMATDESCRIPTOR* {.final, pure.} = object nSize*: int16 nVersion*: int16 dwFlags*: DWORD @@ -12084,10 +11951,9 @@ type dwDamageMask*: DWORD LPPIXELFORMATDESCRIPTOR* = ptr PIXELFORMATDESCRIPTOR - tagPIXELFORMATDESCRIPTOR* = PIXELFORMATDESCRIPTOR TPIXELFORMATDESCRIPTOR* = PIXELFORMATDESCRIPTOR PPIXELFORMATDESCRIPTOR* = ptr PIXELFORMATDESCRIPTOR - USER_INFO_2* {.final.} = object + USER_INFO_2* {.final, pure.} = object usri2_name*: LPWSTR usri2_password*: LPWSTR usri2_password_age*: DWORD @@ -12116,13 +11982,13 @@ type PUSER_INFO_2* = ptr USER_INFO_2 LPUSER_INFO_2* = ptr USER_INFO_2 TUSERINFO2* = USER_INFO_2 - USER_INFO_0* {.final.} = object + USER_INFO_0* {.final, pure.} = object usri0_name*: LPWSTR PUSER_INFO_0* = ptr USER_INFO_0 LPUSER_INFO_0* = ptr USER_INFO_0 TUSERINFO0* = USER_INFO_0 - USER_INFO_3* {.final.} = object + USER_INFO_3* {.final, pure.} = object usri3_name*: LPWSTR usri3_password*: LPWSTR usri3_password_age*: DWORD @@ -12156,7 +12022,7 @@ type PUSER_INFO_3* = ptr USER_INFO_3 LPUSER_INFO_3* = ptr USER_INFO_3 TUSERINFO3* = USER_INFO_3 - GROUP_INFO_2* {.final.} = object + GROUP_INFO_2* {.final, pure.} = object grpi2_name*: LPWSTR grpi2_comment*: LPWSTR grpi2_group_id*: DWORD @@ -12164,13 +12030,13 @@ type PGROUP_INFO_2* = ptr GROUP_INFO_2 TGROUPINFO2* = GROUP_INFO_2 - LOCALGROUP_INFO_0* {.final.} = object + LOCALGROUP_INFO_0* {.final, pure.} = object lgrpi0_name*: LPWSTR PLOCALGROUP_INFO_0* = ptr LOCALGROUP_INFO_0 LPLOCALGROUP_INFO_0* = ptr LOCALGROUP_INFO_0 TLOCALGROUPINFO0* = LOCALGROUP_INFO_0 - IMAGE_DOS_HEADER* {.final.} = object + IMAGE_DOS_HEADER* {.final, pure.} = object e_magic*: int16 e_cblp*: int16 e_cp*: int16 @@ -12193,7 +12059,7 @@ type PIMAGE_DOS_HEADER* = ptr IMAGE_DOS_HEADER TIMAGEDOSHEADER* = IMAGE_DOS_HEADER - NOTIFYICONDATAA* {.final.} = object + NOTIFYICONDATAA* {.final, pure.} = object cbSize*: DWORD Wnd*: HWND uID*: UINT @@ -12203,7 +12069,7 @@ type szTip*: array[0..63, Char] NOTIFYICONDATA* = NOTIFYICONDATAA - NOTIFYICONDATAW* {.final.} = object + NOTIFYICONDATAW* {.final, pure.} = object cbSize*: DWORD Wnd*: HWND uID*: UINT @@ -12224,7 +12090,7 @@ type type PWaveFormatEx* = ptr TWaveFormatEx - TWaveFormatEx* {.final.} = object + TWaveFormatEx* {.final, pure.} = object wFormatTag*: int16 # format type nChannels*: int16 # number of channels (i.e. mono, stereo, etc.) nSamplesPerSec*: DWORD # sample rate @@ -12233,7 +12099,7 @@ type wBitsPerSample*: int16 # number of bits per sample of mono data cbSize*: int16 # the count in bytes of the size of - WIN32_FILE_ATTRIBUTE_DATA* {.final.} = object + WIN32_FILE_ATTRIBUTE_DATA* {.final, pure.} = object dwFileAttributes*: DWORD ftCreationTime*: FILETIME ftLastAccessTime*: FILETIME @@ -12244,7 +12110,7 @@ type LPWIN32_FILE_ATTRIBUTE_DATA* = ptr WIN32_FILE_ATTRIBUTE_DATA TWIN32FILEATTRIBUTEDATA* = WIN32_FILE_ATTRIBUTE_DATA PWIN32FILEATTRIBUTEDATA* = ptr WIN32_FILE_ATTRIBUTE_DATA # TrackMouseEvent. NT or higher only. - TTrackMouseEvent* {.final.} = object + TTrackMouseEvent* {.final, pure.} = object cbSize*: DWORD dwFlags*: DWORD hwndTrack*: HWND @@ -13317,7 +13183,7 @@ else: HALFPARAM* = int16 HALFPARAMBOOL* = WORDBOOL type - MSG* {.final.} = object + MSG* {.final, pure.} = object hwnd*: HWND message*: UINT wParam*: WPARAM @@ -13326,24 +13192,23 @@ type pt*: POINT LPMSG* = ptr MSG - tagMSG* = MSG TMSG* = MSG PMSG* = ptr MSG PMessage* = ptr TMessage - TMessage* {.final.} = object #fields according to ICS + TMessage* {.final, pure.} = object #fields according to ICS msg*: UINT wParam*: WPARAM lParam*: LPARAM Result*: LRESULT - TWMSize* {.final.} = object + TWMSize* {.final, pure.} = object Msg*: UINT SizeType*: WPARAM Width*: HALFPARAM Height*: HALFPARAM Result*: LRESULT - TWMNoParams* {.final.} = object + TWMNoParams* {.final, pure.} = object Msg*: UINT Unused*: array[0..3, HALFPARAM] Result*: LRESULT @@ -13353,7 +13218,7 @@ type TWMDestroy* = TWMNoParams TWMClose* = TWMNoParams TWMQueryUIState* = TWMNoParams - TWMUIState* {.final.} = object + TWMUIState* {.final, pure.} = object Msg*: UINT Action*: int16 Flags*: int16 @@ -13361,7 +13226,7 @@ type TWMChangeUIState* = TWMUIState TWMUpdateUIState* = TWMUIState - TWMKey* {.final.} = object + TWMKey* {.final, pure.} = object Msg*: UINT CharCode*: int16 Unused*: int16 @@ -13374,7 +13239,7 @@ type TWMSysChar* = TWMKey TWMSysKeyDown* = TWMKey TWMSysKeyUp* = TWMKey - TWMMenuChar* {.final.} = object + TWMMenuChar* {.final, pure.} = object Msg*: UINT User*: Char MenuFlag*: int16 @@ -13386,7 +13251,7 @@ type TWMGetFont* = TWMNoParams TWMSysColorChange* = TWMNoParams TWMQueryDragIcon* = TWMNoParams - TWMScroll* {.final.} = object + TWMScroll* {.final, pure.} = object Msg*: UINT ScrollCode*: HALFPARAM Pos*: HALFPARAM @@ -13395,59 +13260,59 @@ type TWMHScroll* = TWMScroll TWMVScroll* = TWMScroll - TWMGetText* {.final.} = object + TWMGetText* {.final, pure.} = object Msg*: UINT TextMax*: LPARAM Text*: cstring Result*: LRESULT TWMGetTextLength* = TWMNoParams - TWMKillFocus* {.final.} = object + TWMKillFocus* {.final, pure.} = object Msg*: UINT FocusedWnd*: HWND UnUsed*: WPARAM Result*: LRESULT - TWMSetCursor* {.final.} = object + TWMSetCursor* {.final, pure.} = object Msg*: UINT CursorWnd*: HWND HitTest*: HALFPARAM MouseMsg*: HALFPARAM Result*: LRESULT - TWMSetFocus* {.final.} = object + TWMSetFocus* {.final, pure.} = object Msg*: UINT FocusedWnd*: HWND Unused*: WPARAM Result*: LRESULT - TWMSetFont* {.final.} = object + TWMSetFont* {.final, pure.} = object Msg*: UINT Font*: HFONT Redraw*: HALFPARAMBOOL Unused*: HALFPARAM Result*: LRESULT - TWMShowWindow* {.final.} = object + TWMShowWindow* {.final, pure.} = object Msg*: UINT Show*: HALFPARAMBOOL Unused*: HALFPARAM Status*: WPARAM Result*: LRESULT - TWMEraseBkgnd* {.final.} = object + TWMEraseBkgnd* {.final, pure.} = object Msg*: UINT DC*: HDC Unused*: LPARAM Result*: LRESULT - TWMNCHitTest* {.final.} = object + TWMNCHitTest* {.final, pure.} = object Msg*: UINT Unused*: int32 Pos*: TSmallPoint Result*: LRESULT - TWMMouse* {.final.} = object + TWMMouse* {.final, pure.} = object Msg*: UINT Keys*: int32 Pos*: TSmallPoint @@ -13459,14 +13324,14 @@ type TWMMButtonDblClk* = TWMMouse TWMMButtonDown* = TWMMouse TWMMButtonUp* = TWMMouse - TWMMouseWheel* {.final.} = object + TWMMouseWheel* {.final, pure.} = object Msg*: UINT Keys*: int16 WheelDelta*: int16 Pos*: TSmallPoint Result*: LRESULT - TWMNCHitMessage* {.final.} = object + TWMNCHitMessage* {.final, pure.} = object Msg*: UINT HitTest*: int32 XCursor*: int16 @@ -13484,51 +13349,51 @@ type TWMRButtonDown* = TWMMouse TWMRButtonUp* = TWMMouse TWMMouseMove* = TWMMouse - TWMPaint* {.final.} = object + TWMPaint* {.final, pure.} = object Msg*: UINT DC*: HDC Unused*: int32 Result*: LRESULT - TWMCommand* {.final.} = object + TWMCommand* {.final, pure.} = object Msg*: UINT ItemID*: int16 NotifyCode*: int16 Ctl*: HWND Result*: LRESULT - TWMNotify* {.final.} = object + TWMNotify* {.final, pure.} = object Msg*: UINT IDCtrl*: int32 NMHdr*: PNMHdr Result*: LRESULT - TWMPrint* {.final.} = object + TWMPrint* {.final, pure.} = object Msg*: UINT DC*: HDC Flags*: int Result*: LRESULT TWMPrintClient* = TWMPrint - TWMWinIniChange* {.final.} = object + TWMWinIniChange* {.final, pure.} = object Msg*: UINT Unused*: int Section*: cstring Result*: LRESULT - TWMContextMenu* {.final.} = object + TWMContextMenu* {.final, pure.} = object Msg*: UINT hWnd*: HWND Pos*: TSmallPoint Result*: LRESULT - TWMNCCalcSize* {.final.} = object + TWMNCCalcSize* {.final, pure.} = object Msg*: UINT CalcValidRects*: WINBOOL CalcSize_Params*: PNCCalcSizeParams Result*: LRESULT - TWMCharToItem* {.final.} = object + TWMCharToItem* {.final, pure.} = object Msg*: UINT Key*: int16 CaretPos*: int16 @@ -13537,7 +13402,7 @@ type TWMVKeyToItem* = TWMCharToItem TMyEventRange = range[0'i16..16000'i16] - TWMParentNotify* {.final.} = object + TWMParentNotify* {.final, pure.} = object Msg*: UINT case Event*: TMyEventRange of TMyEventRange(WM_CREATE), TMyEventRange(WM_DESTROY): @@ -13556,7 +13421,7 @@ type Value2*: int32 Result*: LRESULT - TWMSysCommand* {.final.} = object + TWMSysCommand* {.final, pure.} = object Msg*: UINT CmdType*: int32 XPos*: int16 @@ -13574,13 +13439,13 @@ type # else: # of SC_KEYMENU: # Key*: int16 - TWMMove* {.final.} = object + TWMMove* {.final, pure.} = object Msg*: UINT Unused*: int Pos*: TSmallPoint Result*: LRESULT - TWMWindowPosMsg* {.final.} = object + TWMWindowPosMsg* {.final, pure.} = object Msg*: UINT Unused*: int WindowPos*: PWindowPos @@ -13588,101 +13453,101 @@ type TWMWindowPosChanged* = TWMWindowPosMsg TWMWindowPosChanging* = TWMWindowPosMsg - TWMCompareItem* {.final.} = object + TWMCompareItem* {.final, pure.} = object Msg*: UINT Ctl*: HWnd CompareItemStruct*: PCompareItemStruct Result*: LRESULT - TWMDeleteItem* {.final.} = object + TWMDeleteItem* {.final, pure.} = object Msg*: UINT Ctl*: HWND DeleteItemStruct*: PDeleteItemStruct Result*: LRESULT - TWMDrawItem* {.final.} = object + TWMDrawItem* {.final, pure.} = object Msg*: UINT Ctl*: HWND DrawItemStruct*: PDrawItemStruct Result*: LRESULT - TWMMeasureItem* {.final.} = object + TWMMeasureItem* {.final, pure.} = object Msg*: UINT IDCtl*: HWnd MeasureItemStruct*: PMeasureItemStruct Result*: LRESULT - TWMNCCreate* {.final.} = object + TWMNCCreate* {.final, pure.} = object Msg*: UINT Unused*: int CreateStruct*: PCreateStruct Result*: LRESULT - TWMInitMenuPopup* {.final.} = object + TWMInitMenuPopup* {.final, pure.} = object Msg*: UINT MenuPopup*: HMENU Pos*: int16 SystemMenu*: WordBool Result*: LRESULT - TWMMenuSelect* {.final.} = object + TWMMenuSelect* {.final, pure.} = object Msg*: UINT IDItem*: int16 MenuFlag*: int16 Menu*: HMENU Result*: LRESULT - TWMActivate* {.final.} = object + TWMActivate* {.final, pure.} = object Msg*: UINT Active*: int16 Minimized*: WordBool ActiveWindow*: HWND Result*: LRESULT - TWMQueryEndSession* {.final.} = object + TWMQueryEndSession* {.final, pure.} = object Msg*: UINT Source*: int32 Unused*: int32 Result*: LRESULT - TWMMDIActivate* {.final.} = object + TWMMDIActivate* {.final, pure.} = object Msg*: UINT DeactiveWnd*: HWND ActiveWnd*: HWND Result*: LRESULT - TWMNextDlgCtl* {.final.} = object + TWMNextDlgCtl* {.final, pure.} = object Msg*: UINT CtlFocus*: int32 Handle*: WordBool Unused*: int16 Result*: LRESULT - TWMHelp* {.final.} = object + TWMHelp* {.final, pure.} = object Msg*: UINT Unused*: int HelpInfo*: PHelpInfo Result*: LRESULT - TWMGetMinMaxInfo* {.final.} = object + TWMGetMinMaxInfo* {.final, pure.} = object Msg*: UINT Unused*: int MinMaxInfo*: PMinMaxInfo Result*: LRESULT - TWMSettingChange* {.final.} = object + TWMSettingChange* {.final, pure.} = object Msg*: UINT Flag*: int Section*: cstring Result*: LRESULT - TWMCreate* {.final.} = object + TWMCreate* {.final, pure.} = object Msg*: UINT Unused*: int CreateStruct*: PCreateStruct Result*: LRESULT - TWMCtlColor* {.final.} = object + TWMCtlColor* {.final, pure.} = object Msg*: UINT ChildDC*: HDC ChildWnd*: HWND @@ -13695,38 +13560,38 @@ type TWMCtlColorMsgbox* = TWMCtlColor TWMCtlColorDlg* = TWMCtlColor TWMCtlColorEdit* = TWMCtlColor - TWMInitDialog* {.final.} = object + TWMInitDialog* {.final, pure.} = object Msg*: UINT Focus*: HWND InitParam*: int32 Result*: LRESULT - TWMNCPaint* {.final.} = object + TWMNCPaint* {.final, pure.} = object Msg*: UINT RGN*: HRGN Unused*: int32 Result*: LRESULT - TWMSetText* {.final.} = object + TWMSetText* {.final, pure.} = object Msg*: UINT Unused*: int32 Text*: cstring Result*: LRESULT - TWMSizeClipboard* {.final.} = object + TWMSizeClipboard* {.final, pure.} = object Msg*: UINT Viewer*: HWND RC*: THandle Result*: LRESULT - TWMSpoolerStatus* {.final.} = object + TWMSpoolerStatus* {.final, pure.} = object Msg*: UINT JobStatus*: LPARAM JobsLeft*: WPARAM Unused*: WPARAM Result*: LRESULT - TWMStyleChange* {.final.} = object + TWMStyleChange* {.final, pure.} = object Msg*: UINT StyleType*: LPARAM StyleStruct*: PStyleStruct @@ -13734,54 +13599,54 @@ type TWMStyleChanged* = TWMStyleChange TWMStyleChanging* = TWMStyleChange - TWMSysDeadChar* {.final.} = object + TWMSysDeadChar* {.final, pure.} = object Msg*: UINT CharCode*: WPARAM Unused*: WPARAM KeyData*: LPARAM Result*: LRESULT - TWMSystemError* {.final.} = object + TWMSystemError* {.final, pure.} = object Msg*: UINT ErrSpec*: WPARAM Unused*: LPARAM Result*: LRESULT TWMTimeChange* = TWMNoParams - TWMTimer* {.final.} = object + TWMTimer* {.final, pure.} = object Msg*: UINT TimerID*: LPARAM TimerProc*: TFarProc Result*: LRESULT TWMUndo* = TWMNoParams - TWMVScrollClipboard* {.final.} = object + TWMVScrollClipboard* {.final, pure.} = object Msg*: UINT Viewer*: HWND ScollCode*: WPARAM ThumbPos*: WPARAM Result*: LRESULT - TWMDisplayChange* {.final.} = object + TWMDisplayChange* {.final, pure.} = object Msg*: UINT BitsPerPixel*: int Width*: WPARAM Height*: WPARAM Result*: LRESULT - TWMDropFiles* {.final.} = object + TWMDropFiles* {.final, pure.} = object Msg*: UINT Drop*: THANDLE Unused*: LPARAM Result*: LRESULT - TWMEnable* {.final.} = object + TWMEnable* {.final, pure.} = object Msg*: int Enabled*: WINBOOL Unused*: int32 Result*: int32 - TWMMouseActivate* {.final.} = object + TWMMouseActivate* {.final, pure.} = object Msg*: int TopLevel*: HWND HitTestCode*: int16 @@ -20686,7 +20551,7 @@ type TFNFiberStartRoutine* = FARPROC TFNHookProc* = HOOKPROC PObjectTypeList* = ptr TObjectTypeList - OBJECT_TYPE_LIST* {.final.} = object + OBJECT_TYPE_LIST* {.final, pure.} = object Level*: int16 Sbz*: int16 ObjectType*: PGUID @@ -20694,14 +20559,14 @@ type TObjectTypeList* = OBJECT_TYPE_LIST AUDIT_EVENT_TYPE* = DWORD PBlendFunction* = ptr TBlendFunction - BLENDFUNCTION* {.final.} = object + BLENDFUNCTION* {.final, pure.} = object BlendOp*: int8 BlendFlags*: int8 SourceConstantAlpha*: int8 AlphaFormat*: int8 TBlendFunction* = BLENDFUNCTION - WIN_CERTIFICATE* {.final.} = object + WIN_CERTIFICATE* {.final, pure.} = object dwLength*: DWord wRevision*: int16 wCertificateType*: int16 @@ -20709,7 +20574,7 @@ type TWinCertificate* = WIN_CERTIFICATE PWinCertificate* = ptr TWinCertificate - TMaxLogPalette* {.final.} = object + TMaxLogPalette* {.final, pure.} = object palVersion*: int16 palNumEntries*: int16 palPalEntry*: array[int8, TPaletteEntry] @@ -22549,79 +22414,78 @@ proc AnsiLowerBuff*(lpsz: LPSTR, cchLength: DWORD): DWORD{.stdcall, # argument types are unknown proc GetBValue(rgb: int32): int8 = - result = int8(rgb shr 16) + result = toU8(rgb shr 16'i32) proc GetGValue(rgb: int32): int8 = - result = int8((int16(rgb)) shr 8) + result = toU8(rgb shr 8'i32) proc GetRValue(rgb: int32): int8 = - result = int8(rgb) + result = toU8(rgb) proc RGB(r, g, b: int32): DWORD = - result = DWORD(((DWORD(int8(r))) or ((DWORD(int16(g))) shl 8)) or - ((DWORD(int8(b))) shl 16)) + result = toU8(r) or toU8(g shl 8'i32) or toU8(b shl 16'i32) proc HIBYTE(w: int32): int8 = - result = int8(((int16(w)) shr 8) and 0x000000FF) + result = toU8(w shr 8'i32 and 0x000000FF'i32) proc HIWORD(L: int32): int16 = - result = int16(((DWORD(L)) shr 16) and 0x0000FFFF) + result = toU16(L shr 16'i32 and 0x0000FFFF'i32) proc LOBYTE(w: int32): int8 = - result = int8(w) + result = toU8(w) proc LOWORD(L: int32): int16 = - result = int16(L) + result = toU16(L) proc MAKELONG(a, b: int32): LONG = - result = LONG((int16(a)) or ((DWORD(int16(b))) shl 16)) + result = a and 0x0000ffff'i32 or b shl 16'i32 proc MAKEWORD(a, b: int32): int16 = - result = int16((int8(a)) or ((int16(int8(b))) shl 8)) + result = toU16(a and 0xff'i32) or toU16(b shl 8'i32) proc SEXT_HIWORD(L: int32): int32 = # return type might be wrong - result = (int32(L)) shr 16 + result = HIWORD(L) proc ZEXT_HIWORD(L: int32): int32 = # return type might be wrong - result = (int(L)) shr 16 + result = ze(HIWORD(L)) proc SEXT_LOWORD(L: int32): int32 = - result = int32(SHORT(L)) + result = LOWORD(L) proc INDEXTOOVERLAYMASK(i: int32): int32 = # return type might be wrong - result = i shl 8 + result = i shl 8'i32 proc INDEXTOSTATEIMAGEMASK(i: int32): int32 = # return type might be wrong - result = i shl 12 + result = i shl 12'i32 proc MAKEINTATOM(i: int32): LPTSTR = - result = cast[LPTSTR](cast[ULONG_PTR](int16(i))) + result = cast[LPTSTR](cast[ULONG_PTR](ToU16(i))) proc MAKELANGID(p, s: int32): int32 = # return type might be wrong - result = ((int16(s)) shl 10) or (int16(p)) + result = toU16(s) shl 10'i16 or toU16(p) proc PRIMARYLANGID(lgid: int32): int16 = # PRIMARYLANGID:=WORD(lgid(@($3ff))); # h2pas error here corrected by hand PM - result = int16(lgid) and (0x000003FF) + result = toU16(lgid) and 0x000003FF'i16 proc SUBLANGID(lgid: int32): int32 = # return type might be wrong - result = (int16(lgid)) shr 10 + result = toU16(lgid) shr 10'i16 proc LANGIDFROMLCID(lcid: int32): int16 = - result = int16(lcid) + result = toU16(lcid) proc SORTIDFROMLCID(lcid: int32): int16 = - result = int16(((DWORD(lcid)) and 0x000FFFFF) shr 16) + result = toU16((lcid and 0x000FFFFF'i32) shr 16'i32) proc MAKELCID(lgid, srtid: int32): DWORD = - result = DWORD(((DWORD(int16(srtid))) shl 16) or (DWORD(int16(lgid)))) + result = toU32(srtid shl 16'i32 or lgid and 0xffff'i32) proc MAKELPARAM(L, h: int32): LPARAM = result = LPARAM(MAKELONG(L, h)) @@ -22630,7 +22494,7 @@ proc MAKELRESULT(L, h: int32): LRESULT = result = LRESULT(MAKELONG(L, h)) proc MAKEROP4(fore, back: int32): DWORD = - result = DWORD((DWORD(back shl 8) and 0xFF000000) or DWORD(fore)) + result = back shl 8'i32 and 0xFF000000'i32 or fore proc MAKEWPARAM(L, h: int32): WPARAM = result = WPARAM(MAKELONG(L, h)) @@ -22642,14 +22506,14 @@ proc GET_Y_LPARAM(lp: Windows.LParam): int32 = result = int16(HIWORD(lp)) proc PALETTEINDEX(i: int32): COLORREF = - result = COLORREF(0x01000000 or (DWORD(int16(i)))) + result = COLORREF(0x01000000'i32 or i and 0xffff'i32) proc PALETTERGB(r, g, b: int32): int32 = # return type might be wrong result = 0x02000000 or (RGB(r, g, b)) proc UNICODE_NULL(): WCHAR = - result = 0 + result = 0'i16 proc IDC_ARROW(): LPTSTR = # return type might be wrong @@ -22865,7 +22729,7 @@ proc GET_WM_HSCROLL_POS(w, L: int32): int32 = proc GET_WM_MDIACTIVATE_FACTIVATE(h, a, b: int32): int32 = # return type might be wrong - result = int32(int(b) == LONG(h)) + result = ord(b == h) proc GET_WM_MDIACTIVATE_HWNDACTIVATE(a, b: int32): HWND = result = HWND(b) @@ -23839,71 +23703,71 @@ proc InternalGetLargestConsoleWindowSize(hConsoleOutput: HANDLE): DWord{. proc GetLargestConsoleWindowSize(hConsoleOutput: HANDLE): COORD = var res: dword res = InternalGetLargestConsoleWindowSize(hConsoleOutput) - result.y = res and 0x0000ffff # XXX: correct? - result.x = res shr 16 + result.y = toU16(res and 0x0000ffff) # XXX: correct? + result.x = toU16(res shr 16) proc Succeeded(Status: HRESULT): WINBOOL = - result = (Status and 0x80000000) + result = (Status and 0x80000000'i32) proc Failed(Status: HRESULT): WINBOOL = - result = (Status and 0x80000000) + result = (Status and 0x80000000'i32) proc IsError(Status: HRESULT): WINBOOL = - result = ord((Status shr 31) == SEVERITY_ERROR) + result = ord((int(Status) shr 31) == SEVERITY_ERROR) proc HResultCode(hr: HRESULT): int32 = - result = hr and 0x0000FFFF + result = hr and 0x0000FFFF'i32 proc HResultFacility(hr: HRESULT): int32 = - result = (hr shr 16) and 0x00001FFF + result = (hr shr 16'i32) and 0x00001FFF'i32 proc HResultSeverity(hr: HRESULT): int32 = - result = (hr shr 31) and 0x00000001 + result = (hr shr 31'i32) and 0x00000001'i32 proc MakeResult(p1, p2, mask: int32): HRESULT = - result = (p1 shl 31) or (p2 shl 16) or mask + result = (p1 shl 31'i32) or (p2 shl 16'i32) or mask proc HResultFromWin32(x: int32): HRESULT = result = x - if result != 0: - result = ((result and 0x0000FFFF) or (FACILITY_WIN32 shl 16) or - 0x80000000) + if result != 0'i32: + result = ((result and 0x0000FFFF'i32) or (int32(FACILITY_WIN32) shl 16'i32) or + 0x80000000'i32) proc HResultFromNT(x: int32): HRESULT = - result = x or FACILITY_NT_BIT + result = x or int32(FACILITY_NT_BIT) proc MAKELANGID(PrimaryLang, SubLang: USHORT): int16 = - result = (SubLang shl 10) or PrimaryLang + result = (SubLang shl 10'i16) or PrimaryLang proc PRIMARYLANGID(LangId: int16): int16 = - result = LangId and 0x000003FF + result = LangId and 0x000003FF'i16 proc SUBLANGID(LangId: int16): int16 = - result = LangId shr 10 + result = LangId shr 10'i16 proc MAKELCID(LangId, SortId: int16): DWORD = - result = (DWORD(SortId) shl 16) or DWORD(LangId) + result = toU32((ze(SortId) shl 16) or ze(LangId)) proc MAKESORTLCID(LangId, SortId, SortVersion: int16): DWORD = - result = MAKELCID(LangId, SortId) or (SortVersion shl 20) + result = MAKELCID(LangId, SortId) or int(SortVersion shl 20'i32) proc LANGIDFROMLCID(LocaleId: LCID): int16 = - result = int16(LocaleId) + result = toU16(LocaleId) proc SORTIDFROMLCID(LocaleId: LCID): int16 = - result = int16((DWORD(LocaleId) shr 16) and 0x0000000F) + result = toU16((DWORD(LocaleId) shr 16) and 0x0000000F) proc SORTVERSIONFROMLCID(LocaleId: LCID): int16 = - result = int16((DWORD(LocaleId) shr 20) and 0x0000000F) + result = toU16((DWORD(LocaleId) shr 20) and 0x0000000F) proc LANG_SYSTEM_DEFAULT(): int16 = - result = MAKELANGID(int16(LANG_NEUTRAL), SUBLANG_SYS_DEFAULT) + result = toU16(MAKELANGID(toU16(LANG_NEUTRAL), SUBLANG_SYS_DEFAULT)) proc LANG_USER_DEFAULT(): int16 = - result = MAKELANGID(int16(LANG_NEUTRAL), SUBLANG_DEFAULT) + result = toU16(MAKELANGID(toU16(LANG_NEUTRAL), SUBLANG_DEFAULT)) proc LOCALE_NEUTRAL(): DWORD = - result = MAKELCID(MAKELANGID(int16(LANG_NEUTRAL), SUBLANG_NEUTRAL), SORT_DEFAULT) + result = MAKELCID(MAKELANGID(toU16(LANG_NEUTRAL), SUBLANG_NEUTRAL), SORT_DEFAULT) proc LOCALE_INVARIANT(): DWORD = - result = MAKELCID(MAKELANGID(int16(LANG_INVARIANT), SUBLANG_NEUTRAL), SORT_DEFAULT) + result = MAKELCID(MAKELANGID(toU16(LANG_INVARIANT), SUBLANG_NEUTRAL), SORT_DEFAULT) |