summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--examples/cairoex.nim15
-rw-r--r--examples/luaex.nim15
-rw-r--r--examples/pythonex.nim11
-rw-r--r--examples/tclex.nim25
-rw-r--r--lib/wrappers/cairo/cairo.nim733
-rw-r--r--lib/wrappers/cairo/cairo_pragma.nim16
-rw-r--r--lib/wrappers/cairo/cairoft.nim36
-rw-r--r--lib/wrappers/cairo/cairowin32.nim37
-rw-r--r--lib/wrappers/cairo/cairoxlib.nim41
-rw-r--r--lib/wrappers/lua/lauxlib.nim208
-rw-r--r--lib/wrappers/lua/lua.nim364
-rw-r--r--lib/wrappers/lua/lualib.nim64
-rw-r--r--lib/wrappers/python.nim1587
-rw-r--r--lib/wrappers/tcl.nim865
14 files changed, 0 insertions, 4017 deletions
diff --git a/examples/cairoex.nim b/examples/cairoex.nim
deleted file mode 100644
index 492428705..000000000
--- a/examples/cairoex.nim
+++ /dev/null
@@ -1,15 +0,0 @@
-import cairo
-
-var surface = image_surface_create(FORMAT_ARGB32, 240, 80)
-var cr = create(surface)
-
-select_font_face(cr, "serif", FONT_SLANT_NORMAL, 
-                              FONT_WEIGHT_BOLD)
-set_font_size(cr, 32.0)
-set_source_rgb(cr, 0.0, 0.0, 1.0)
-move_to(cr, 10.0, 50.0)
-show_text(cr, "Hello, world")
-destroy(cr)
-discard write_to_png(surface, "hello.png")
-destroy(surface)
-
diff --git a/examples/luaex.nim b/examples/luaex.nim
deleted file mode 100644
index 7628ddd12..000000000
--- a/examples/luaex.nim
+++ /dev/null
@@ -1,15 +0,0 @@
-# Embedds Lua into a Nimrod application
-
-import
-  lua, lualib, lauxlib
-
-const
-  code = """
-print 'hi'
-"""
-
-var L = newstate()
-openlibs(L)
-discard loadbuffer(L, code, code.len, "line") 
-discard pcall(L, 0, 0, 0)
-
diff --git a/examples/pythonex.nim b/examples/pythonex.nim
deleted file mode 100644
index 310d80151..000000000
--- a/examples/pythonex.nim
+++ /dev/null
@@ -1,11 +0,0 @@
-# Example to embed Python into your application
-
-import python
-
-# IMPORTANT: Python on Windows does not like CR characters, so
-# we use only \L here.
-
-Py_Initialize()
-discard PyRun_SimpleString("from time import time,ctime\L" &
-                           "print 'Today is',ctime(time())\L")
-Py_Finalize()
diff --git a/examples/tclex.nim b/examples/tclex.nim
deleted file mode 100644
index daf2d52e2..000000000
--- a/examples/tclex.nim
+++ /dev/null
@@ -1,25 +0,0 @@
-# Example to embed TCL in Nimrod
-
-import tcl, os
-
-const
-  myScript = """puts "Hello, World - In quotes" """
-  myScript2 = """
-package require Tk
-pack [entry .e -textvar e -width 50]
-bind .e <Return> {
-  set e  [regsub { *=.*} $e ""] ;# remove evaluation (Chris)
-  catch {expr [string map {/ *1./} $e]} res
-  append e " = $res"
-}  
-"""
-
-FindExecutable(getAppFilename())
-var interp = CreateInterp()
-if interp == nil: quit("cannot create TCL interpreter")
-if Init(interp) != TCL_OK: 
-  quit("cannot init interpreter")
-if tcl.Eval(interp, myScript) != TCL_OK: 
-  quit("cannot execute script.tcl")
-
-
diff --git a/lib/wrappers/cairo/cairo.nim b/lib/wrappers/cairo/cairo.nim
deleted file mode 100644
index 172880529..000000000
--- a/lib/wrappers/cairo/cairo.nim
+++ /dev/null
@@ -1,733 +0,0 @@
-#* cairo - a vector graphics library with display and print output
-# *
-# * Copyright © 2002 University of Southern California
-# * Copyright © 2005 Red Hat, Inc.
-# *
-# * This library is free software; you can redistribute it and/or
-# * modify it either under the terms of the GNU Lesser General Public
-# * License version 2.1 as published by the Free Software Foundation
-# * (the "LGPL") or, at your option, under the terms of the Mozilla
-# * Public License Version 1.1 (the "MPL"). If you do not alter this
-# * notice, a recipient may use your version of this file under either
-# * the MPL or the LGPL.
-# *
-# * You should have received a copy of the LGPL along with this library
-# * in the file COPYING-LGPL-2.1; if not, write to the Free Software
-# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-# * You should have received a copy of the MPL along with this library
-# * in the file COPYING-MPL-1.1
-# *
-# * The contents of this file are subject to the Mozilla Public License
-# * Version 1.1 (the "License"); you may not use this file except in
-# * compliance with the License. You may obtain a copy of the License at
-# * http://www.mozilla.org/MPL/
-# *
-# * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY
-# * OF ANY KIND, either express or implied. See the LGPL or the MPL for
-# * the specific language governing rights and limitations.
-# *
-# * The Original Code is the cairo graphics library.
-# *
-# * The Initial Developer of the Original Code is University of Southern
-# * California.
-# *
-# * Contributor(s):
-# *	Carl D. Worth <cworth@cworth.org>
-# #*
-# *  This FreePascal binding generated August 26, 2005
-# *  by Jeffrey Pohlmeyer <yetanothergeek@yahoo.com>
-#
-
-#
-#  - Updated to cairo version 1.4
-#  - Grouped OS specific fuctions in separated units
-#  - Organized the functions by group and ordered exactly as the c header
-#  - Cleared parameter list syntax according to pascal standard
-#
-#  By Luiz Américo Pereira Câmara
-#  October 2007
-#
-
-include "cairo_pragma.nim"
-
-type 
-  PByte = cstring
-  TStatus* = enum 
-    STATUS_SUCCESS = 0,
-    STATUS_NO_MEMORY,
-    STATUS_INVALID_RESTORE,
-    STATUS_INVALID_POP_GROUP,
-    STATUS_NO_CURRENT_POINT,
-    STATUS_INVALID_MATRIX,
-    STATUS_INVALID_STATUS,
-    STATUS_NULL_POINTER,
-    STATUS_INVALID_STRING,
-    STATUS_INVALID_PATH_DATA,
-    STATUS_READ_ERROR,
-    STATUS_WRITE_ERROR,
-    STATUS_SURFACE_FINISHED,
-    STATUS_SURFACE_TYPE_MISMATCH,
-    STATUS_PATTERN_TYPE_MISMATCH,
-    STATUS_INVALID_CONTENT,
-    STATUS_INVALID_FORMAT,
-    STATUS_INVALID_VISUAL,
-    STATUS_FILE_NOT_FOUND,
-    STATUS_INVALID_DASH,
-    STATUS_INVALID_DSC_COMMENT,
-    STATUS_INVALID_INDEX,
-    STATUS_CLIP_NOT_REPRESENTABLE,
-    STATUS_TEMP_FILE_ERROR,
-    STATUS_INVALID_STRIDE,
-    STATUS_FONT_TYPE_MISMATCH,
-    STATUS_USER_FONT_IMMUTABLE,
-    STATUS_USER_FONT_ERROR,
-    STATUS_NEGATIVE_COUNT,
-    STATUS_INVALID_CLUSTERS,
-    STATUS_INVALID_SLANT,
-    STATUS_INVALID_WEIGHT
-
-    
-  TOperator* = enum 
-    OPERATOR_CLEAR, OPERATOR_SOURCE, OPERATOR_OVER, OPERATOR_IN, OPERATOR_OUT, 
-    OPERATOR_ATOP, OPERATOR_DEST, OPERATOR_DEST_OVER, OPERATOR_DEST_IN, 
-    OPERATOR_DEST_OUT, OPERATOR_DEST_ATOP, OPERATOR_XOR, OPERATOR_ADD, 
-    OPERATOR_SATURATE
-  TAntialias* = enum 
-    ANTIALIAS_DEFAULT, ANTIALIAS_NONE, ANTIALIAS_GRAY, ANTIALIAS_SUBPIXEL
-  TFillRule* = enum 
-    FILL_RULE_WINDING, FILL_RULE_EVEN_ODD
-  TLineCap* = enum 
-    LINE_CAP_BUTT, LINE_CAP_ROUND, LINE_CAP_SQUARE
-  TLineJoin* = enum 
-    LINE_JOIN_MITER, LINE_JOIN_ROUND, LINE_JOIN_BEVEL
-  TFontSlant* = enum 
-    FONT_SLANT_NORMAL, FONT_SLANT_ITALIC, FONT_SLANT_OBLIQUE
-  TFontWeight* = enum 
-    FONT_WEIGHT_NORMAL, FONT_WEIGHT_BOLD
-  TSubpixelOrder* = enum 
-    SUBPIXEL_ORDER_DEFAULT, SUBPIXEL_ORDER_RGB, SUBPIXEL_ORDER_BGR, 
-    SUBPIXEL_ORDER_VRGB, SUBPIXEL_ORDER_VBGR
-  THintStyle* = enum 
-    HINT_STYLE_DEFAULT, HINT_STYLE_NONE, HINT_STYLE_SLIGHT, HINT_STYLE_MEDIUM, 
-    HINT_STYLE_FULL
-  THintMetrics* = enum 
-    HINT_METRICS_DEFAULT, HINT_METRICS_OFF, HINT_METRICS_ON
-  TPathDataType* = enum 
-    PATH_MOVE_TO, PATH_LINE_TO, PATH_CURVE_TO, PATH_CLOSE_PATH
-  TContent* = enum 
-    CONTENT_COLOR = 0x00001000, CONTENT_ALPHA = 0x00002000, 
-    CONTENT_COLOR_ALPHA = 0x00003000
-  TFormat* = enum 
-    FORMAT_ARGB32, FORMAT_RGB24, FORMAT_A8, FORMAT_A1
-  TExtend* = enum 
-    EXTEND_NONE, EXTEND_REPEAT, EXTEND_REFLECT, EXTEND_PAD
-  TFilter* = enum 
-    FILTER_FAST, FILTER_GOOD, FILTER_BEST, FILTER_NEAREST, FILTER_BILINEAR, 
-    FILTER_GAUSSIAN
-  TFontType* = enum 
-    FONT_TYPE_TOY, FONT_TYPE_FT, FONT_TYPE_WIN32, FONT_TYPE_ATSUI
-  TPatternType* = enum 
-    PATTERN_TYPE_SOLID, PATTERN_TYPE_SURFACE, PATTERN_TYPE_LINEAR, 
-    PATTERN_TYPE_RADIAL
-  TSurfaceType* = enum 
-    SURFACE_TYPE_IMAGE, SURFACE_TYPE_PDF, SURFACE_TYPE_PS, SURFACE_TYPE_XLIB, 
-    SURFACE_TYPE_XCB, SURFACE_TYPE_GLITZ, SURFACE_TYPE_QUARTZ, 
-    SURFACE_TYPE_WIN32, SURFACE_TYPE_BEOS, SURFACE_TYPE_DIRECTFB, 
-    SURFACE_TYPE_SVG, SURFACE_TYPE_OS2
-  TSvgVersion* = enum 
-    SVG_VERSION_1_1, SVG_VERSION_1_2
-  PSurface* = ptr TSurface
-  PPSurface* = ptr PSurface
-  PContext* = ptr TContext
-  PPattern* = ptr TPattern
-  PFontOptions* = ptr TFontOptions
-  PFontFace* = ptr TFontFace
-  PScaledFont* = ptr TScaledFont
-  PBool* = ptr TBool
-  TBool* = int32
-  PMatrix* = ptr TMatrix
-  PUserDataKey* = ptr TUserDataKey
-  PGlyph* = ptr TGlyph
-  PTextExtents* = ptr TTextExtents
-  PFontExtents* = ptr TFontExtents
-  PPathDataType* = ptr TPathDataType
-  PPathData* = ptr TPathData
-  PPath* = ptr TPath
-  PRectangle* = ptr TRectangle
-  PRectangleList* = ptr TRectangleList
-  TDestroyFunc* = proc (data: Pointer){.cdecl.}
-  TWriteFunc* = proc (closure: Pointer, data: PByte, len: int32): TStatus{.cdecl.}
-  TReadFunc* = proc (closure: Pointer, data: PByte, len: int32): TStatus{.cdecl.}
-  TContext*{.final.} = object        #OPAQUE
-  TSurface*{.final.} = object  #OPAQUE
-  TPattern*{.final.} = object  #OPAQUE
-  TScaledFont*{.final.} = object  #OPAQUE
-  TFontFace*{.final.} = object  #OPAQUE
-  TFontOptions*{.final.} = object  #OPAQUE
-  TMatrix*{.final.} = object 
-    xx: float64
-    yx: float64
-    xy: float64
-    yy: float64
-    x0: float64
-    y0: float64
-
-  TUserDataKey*{.final.} = object 
-    unused: int32
-
-  TGlyph*{.final.} = object 
-    index: int32
-    x: float64
-    y: float64
-
-  TTextExtents*{.final.} = object 
-    x_bearing: float64
-    y_bearing: float64
-    width: float64
-    height: float64
-    x_advance: float64
-    y_advance: float64
-
-  TFontExtents*{.final.} = object 
-    ascent: float64
-    descent: float64
-    height: float64
-    max_x_advance: float64
-    max_y_advance: float64
-
-  TPathData*{.final.} = object  #* _type : TCairoPathDataType;
-                                #       length : LongInt;
-                                #    end
-    x: float64
-    y: float64
-
-  TPath*{.final.} = object 
-    status: TStatus
-    data: PPathData
-    num_data: int32
-
-  TRectangle*{.final.} = object 
-    x, y, width, height: float64
-
-  TRectangleList*{.final.} = object 
-    status: TStatus
-    rectangles: PRectangle
-    num_rectangles: int32
-
-
-proc version*(): int32{.cdecl, importc: "cairo_version", libcairo.}
-proc version_string*(): cstring{.cdecl, importc: "cairo_version_string", 
-                                 libcairo.}
-  #Helper function to retrieve decoded version
-proc version*(major, minor, micro: var int32)
-  #* Functions for manipulating state objects
-proc create*(target: PSurface): PContext{.cdecl, importc: "cairo_create", 
-                                   libcairo.}
-proc reference*(cr: PContext): PContext{.cdecl, importc: "cairo_reference", libcairo.}
-proc destroy*(cr: PContext){.cdecl, importc: "cairo_destroy", libcairo.}
-proc get_reference_count*(cr: PContext): int32{.cdecl, 
-    importc: "cairo_get_reference_count", libcairo.}
-proc get_user_data*(cr: PContext, key: PUserDataKey): pointer{.cdecl, 
-    importc: "cairo_get_user_data", libcairo.}
-proc set_user_data*(cr: PContext, key: PUserDataKey, user_data: Pointer, 
-                    destroy: TDestroyFunc): TStatus{.cdecl, 
-    importc: "cairo_set_user_data", libcairo.}
-proc save*(cr: PContext){.cdecl, importc: "cairo_save", libcairo.}
-proc restore*(cr: PContext){.cdecl, importc: "cairo_restore", libcairo.}
-proc push_group*(cr: PContext){.cdecl, importc: "cairo_push_group", libcairo.}
-proc push_group_with_content*(cr: PContext, content: TContent){.cdecl, 
-    importc: "cairo_push_group_with_content", libcairo.}
-proc pop_group*(cr: PContext): PPattern{.cdecl, importc: "cairo_pop_group", 
-                                  libcairo.}
-proc pop_group_to_source*(cr: PContext){.cdecl, importc: "cairo_pop_group_to_source", 
-                                  libcairo.}
-  #* Modify state
-proc set_operator*(cr: PContext, op: TOperator){.cdecl, importc: "cairo_set_operator", 
-    libcairo.}
-proc set_source*(cr: PContext, source: PPattern){.cdecl, importc: "cairo_set_source", 
-    libcairo.}
-proc set_source_rgb*(cr: PContext, red, green, blue: float64){.cdecl, 
-    importc: "cairo_set_source_rgb", libcairo.}
-proc set_source_rgba*(cr: PContext, red, green, blue, alpha: float64){.cdecl, 
-    importc: "cairo_set_source_rgba", libcairo.}
-proc set_source*(cr: PContext, surface: PSurface, x, y: float64){.cdecl, 
-    importc: "cairo_set_source_surface", libcairo.}
-proc set_tolerance*(cr: PContext, tolerance: float64){.cdecl, 
-    importc: "cairo_set_tolerance", libcairo.}
-proc set_antialias*(cr: PContext, antialias: TAntialias){.cdecl, 
-    importc: "cairo_set_antialias", libcairo.}
-proc set_fill_rule*(cr: PContext, fill_rule: TFillRule){.cdecl, 
-    importc: "cairo_set_fill_rule", libcairo.}
-proc set_line_width*(cr: PContext, width: float64){.cdecl, 
-    importc: "cairo_set_line_width", libcairo.}
-proc set_line_cap*(cr: PContext, line_cap: TLineCap){.cdecl, 
-    importc: "cairo_set_line_cap", libcairo.}
-proc set_line_join*(cr: PContext, line_join: TLineJoin){.cdecl, 
-    importc: "cairo_set_line_join", libcairo.}
-proc set_dash*(cr: PContext, dashes: openarray[float64], offset: float64){.cdecl, 
-    importc: "cairo_set_dash", libcairo.}
-proc set_miter_limit*(cr: PContext, limit: float64){.cdecl, 
-    importc: "cairo_set_miter_limit", libcairo.}
-proc translate*(cr: PContext, tx, ty: float64){.cdecl, importc: "cairo_translate", 
-    libcairo.}
-proc scale*(cr: PContext, sx, sy: float64){.cdecl, importc: "cairo_scale", 
-                                     libcairo.}
-proc rotate*(cr: PContext, angle: float64){.cdecl, importc: "cairo_rotate", 
-                                     libcairo.}
-proc transform*(cr: PContext, matrix: PMatrix){.cdecl, importc: "cairo_transform", 
-    libcairo.}
-proc set_matrix*(cr: PContext, matrix: PMatrix){.cdecl, importc: "cairo_set_matrix", 
-    libcairo.}
-proc identity_matrix*(cr: PContext){.cdecl, importc: "cairo_identity_matrix", 
-                              libcairo.}
-proc user_to_device*(cr: PContext, x, y: var float64){.cdecl, 
-    importc: "cairo_user_to_device", libcairo.}
-proc user_to_device_distance*(cr: PContext, dx, dy: var float64){.cdecl, 
-    importc: "cairo_user_to_device_distance", libcairo.}
-proc device_to_user*(cr: PContext, x, y: var float64){.cdecl, 
-    importc: "cairo_device_to_user", libcairo.}
-proc device_to_user_distance*(cr: PContext, dx, dy: var float64){.cdecl, 
-    importc: "cairo_device_to_user_distance", libcairo.}
-  #* Path creation functions
-proc new_path*(cr: PContext){.cdecl, importc: "cairo_new_path", libcairo.}
-proc move_to*(cr: PContext, x, y: float64){.cdecl, importc: "cairo_move_to", 
-                                     libcairo.}
-proc new_sub_path*(cr: PContext){.cdecl, importc: "cairo_new_sub_path", 
-                           libcairo.}
-proc line_to*(cr: PContext, x, y: float64){.cdecl, importc: "cairo_line_to", 
-                                     libcairo.}
-proc curve_to*(cr: PContext, x1, y1, x2, y2, x3, y3: float64){.cdecl, 
-    importc: "cairo_curve_to", libcairo.}
-proc arc*(cr: PContext, xc, yc, radius, angle1, angle2: float64){.cdecl, 
-    importc: "cairo_arc", libcairo.}
-proc arc_negative*(cr: PContext, xc, yc, radius, angle1, angle2: float64){.cdecl, 
-    importc: "cairo_arc_negative", libcairo.}
-proc rel_move_to*(cr: PContext, dx, dy: float64){.cdecl, importc: "cairo_rel_move_to", 
-    libcairo.}
-proc rel_line_to*(cr: PContext, dx, dy: float64){.cdecl, importc: "cairo_rel_line_to", 
-    libcairo.}
-proc rel_curve_to*(cr: PContext, dx1, dy1, dx2, dy2, dx3, dy3: float64){.cdecl, 
-    importc: "cairo_rel_curve_to", libcairo.}
-proc rectangle*(cr: PContext, x, y, width, height: float64){.cdecl, 
-    importc: "cairo_rectangle", libcairo.}
-proc close_path*(cr: PContext){.cdecl, importc: "cairo_close_path", libcairo.}
-  #* Painting functions
-proc paint*(cr: PContext){.cdecl, importc: "cairo_paint", libcairo.}
-proc paint_with_alpha*(cr: PContext, alpha: float64){.cdecl, 
-    importc: "cairo_paint_with_alpha", libcairo.}
-proc mask*(cr: PContext, pattern: PPattern){.cdecl, importc: "cairo_mask", 
-                                      libcairo.}
-proc mask*(cr: PContext, surface: PSurface, surface_x, surface_y: float64){.
-    cdecl, importc: "cairo_mask_surface", libcairo.}
-proc stroke*(cr: PContext){.cdecl, importc: "cairo_stroke", libcairo.}
-proc stroke_preserve*(cr: PContext){.cdecl, importc: "cairo_stroke_preserve", 
-                              libcairo.}
-proc fill*(cr: PContext){.cdecl, importc: "cairo_fill", libcairo.}
-proc fill_preserve*(cr: PContext){.cdecl, importc: "cairo_fill_preserve", 
-                            libcairo.}
-proc copy_page*(cr: PContext){.cdecl, importc: "cairo_copy_page", libcairo.}
-proc show_page*(cr: PContext){.cdecl, importc: "cairo_show_page", libcairo.}
-  #* Insideness testing
-proc in_stroke*(cr: PContext, x, y: float64): TBool{.cdecl, importc: "cairo_in_stroke", 
-    libcairo.}
-proc in_fill*(cr: PContext, x, y: float64): TBool{.cdecl, importc: "cairo_in_fill", 
-    libcairo.}
-  #* Rectangular extents
-proc stroke_extents*(cr: PContext, x1, y1, x2, y2: var float64){.cdecl, 
-    importc: "cairo_stroke_extents", libcairo.}
-proc fill_extents*(cr: PContext, x1, y1, x2, y2: var float64){.cdecl, 
-    importc: "cairo_fill_extents", libcairo.}
-  #* Clipping
-proc reset_clip*(cr: PContext){.cdecl, importc: "cairo_reset_clip", libcairo.}
-proc clip*(cr: PContext){.cdecl, importc: "cairo_clip", libcairo.}
-proc clip_preserve*(cr: PContext){.cdecl, importc: "cairo_clip_preserve", 
-                            libcairo.}
-proc clip_extents*(cr: PContext, x1, y1, x2, y2: var float64){.cdecl, 
-    importc: "cairo_clip_extents", libcairo.}
-proc copy_clip_rectangle_list*(cr: PContext): PRectangleList{.cdecl, 
-    importc: "cairo_copy_clip_rectangle_list", libcairo.}
-proc rectangle_list_destroy*(rectangle_list: PRectangleList){.cdecl, 
-    importc: "cairo_rectangle_list_destroy", libcairo.}
-  #* Font/Text functions
-proc font_options_create*(): PFontOptions{.cdecl, 
-    importc: "cairo_font_options_create", libcairo.}
-proc copy*(original: PFontOptions): PFontOptions{.cdecl, 
-    importc: "cairo_font_options_copy", libcairo.}
-proc destroy*(options: PFontOptions){.cdecl, 
-    importc: "cairo_font_options_destroy", libcairo.}
-proc status*(options: PFontOptions): TStatus{.cdecl, 
-    importc: "cairo_font_options_status", libcairo.}
-proc merge*(options, other: PFontOptions){.cdecl, 
-    importc: "cairo_font_options_merge", libcairo.}
-proc equal*(options, other: PFontOptions): TBool{.cdecl, 
-    importc: "cairo_font_options_equal", libcairo.}
-proc hash*(options: PFontOptions): int32{.cdecl, 
-    importc: "cairo_font_options_hash", libcairo.}
-proc set_antialias*(options: PFontOptions, antialias: TAntialias){.
-    cdecl, importc: "cairo_font_options_set_antialias", libcairo.}
-proc get_antialias*(options: PFontOptions): TAntialias{.cdecl, 
-    importc: "cairo_font_options_get_antialias", libcairo.}
-proc set_subpixel_order*(options: PFontOptions, 
-                                      subpixel_order: TSubpixelOrder){.cdecl, 
-    importc: "cairo_font_options_set_subpixel_order", libcairo.}
-proc get_subpixel_order*(options: PFontOptions): TSubpixelOrder{.
-    cdecl, importc: "cairo_font_options_get_subpixel_order", libcairo.}
-proc set_hint_style*(options: PFontOptions, hint_style: THintStyle){.
-    cdecl, importc: "cairo_font_options_set_hint_style", libcairo.}
-proc get_hint_style*(options: PFontOptions): THintStyle{.cdecl, 
-    importc: "cairo_font_options_get_hint_style", libcairo.}
-proc set_hint_metrics*(options: PFontOptions, 
-                                    hint_metrics: THintMetrics){.cdecl, 
-    importc: "cairo_font_options_set_hint_metrics", libcairo.}
-proc get_hint_metrics*(options: PFontOptions): THintMetrics{.cdecl, 
-    importc: "cairo_font_options_get_hint_metrics", libcairo.}
-  #* This interface is for dealing with text as text, not caring about the
-  #   font object inside the the TCairo.
-proc select_font_face*(cr: PContext, family: cstring, slant: TFontSlant, 
-                       weight: TFontWeight){.cdecl, 
-    importc: "cairo_select_font_face", libcairo.}
-proc set_font_size*(cr: PContext, size: float64){.cdecl, 
-    importc: "cairo_set_font_size", libcairo.}
-proc set_font_matrix*(cr: PContext, matrix: PMatrix){.cdecl, 
-    importc: "cairo_set_font_matrix", libcairo.}
-proc get_font_matrix*(cr: PContext, matrix: PMatrix){.cdecl, 
-    importc: "cairo_get_font_matrix", libcairo.}
-proc set_font_options*(cr: PContext, options: PFontOptions){.cdecl, 
-    importc: "cairo_set_font_options", libcairo.}
-proc get_font_options*(cr: PContext, options: PFontOptions){.cdecl, 
-    importc: "cairo_get_font_options", libcairo.}
-proc set_font_face*(cr: PContext, font_face: PFontFace){.cdecl, 
-    importc: "cairo_set_font_face", libcairo.}
-proc get_font_face*(cr: PContext): PFontFace{.cdecl, importc: "cairo_get_font_face", 
-                                       libcairo.}
-proc set_scaled_font*(cr: PContext, scaled_font: PScaledFont){.cdecl, 
-    importc: "cairo_set_scaled_font", libcairo.}
-proc get_scaled_font*(cr: PContext): PScaledFont{.cdecl, 
-    importc: "cairo_get_scaled_font", libcairo.}
-proc show_text*(cr: PContext, utf8: cstring){.cdecl, importc: "cairo_show_text", 
-                                       libcairo.}
-proc show_glyphs*(cr: PContext, glyphs: PGlyph, num_glyphs: int32){.cdecl, 
-    importc: "cairo_show_glyphs", libcairo.}
-proc text_path*(cr: PContext, utf8: cstring){.cdecl, importc: "cairo_text_path", 
-                                       libcairo.}
-proc glyph_path*(cr: PContext, glyphs: PGlyph, num_glyphs: int32){.cdecl, 
-    importc: "cairo_glyph_path", libcairo.}
-proc text_extents*(cr: PContext, utf8: cstring, extents: PTextExtents){.cdecl, 
-    importc: "cairo_text_extents", libcairo.}
-proc glyph_extents*(cr: PContext, glyphs: PGlyph, num_glyphs: int32, 
-                    extents: PTextExtents){.cdecl, 
-    importc: "cairo_glyph_extents", libcairo.}
-proc font_extents*(cr: PContext, extents: PFontExtents){.cdecl, 
-    importc: "cairo_font_extents", libcairo.}
-  #* Generic identifier for a font style
-proc reference*(font_face: PFontFace): PFontFace{.cdecl, 
-    importc: "cairo_font_face_reference", libcairo.}
-proc destroy*(font_face: PFontFace){.cdecl, 
-    importc: "cairo_font_face_destroy", libcairo.}
-proc get_reference_count*(font_face: PFontFace): int32{.cdecl, 
-    importc: "cairo_font_face_get_reference_count", libcairo.}
-proc status*(font_face: PFontFace): TStatus{.cdecl, 
-    importc: "cairo_font_face_status", libcairo.}
-proc get_type*(font_face: PFontFace): TFontType{.cdecl, 
-    importc: "cairo_font_face_get_type", libcairo.}
-proc get_user_data*(font_face: PFontFace, key: PUserDataKey): pointer{.
-    cdecl, importc: "cairo_font_face_get_user_data", libcairo.}
-proc set_user_data*(font_face: PFontFace, key: PUserDataKey, 
-                    user_data: pointer, destroy: TDestroyFunc): TStatus{.
-    cdecl, importc: "cairo_font_face_set_user_data", libcairo.}
-  #* Portable interface to general font features
-proc scaled_font_create*(font_face: PFontFace, font_matrix: PMatrix, 
-                         ctm: PMatrix, options: PFontOptions): PScaledFont{.
-    cdecl, importc: "cairo_scaled_font_create", libcairo.}
-proc reference*(scaled_font: PScaledFont): PScaledFont{.cdecl, 
-    importc: "cairo_scaled_font_reference", libcairo.}
-proc destroy*(scaled_font: PScaledFont){.cdecl, 
-    importc: "cairo_scaled_font_destroy", libcairo.}
-proc get_reference_count*(scaled_font: PScaledFont): int32{.cdecl, 
-    importc: "cairo_scaled_font_get_reference_count", libcairo.}
-proc status*(scaled_font: PScaledFont): TStatus{.cdecl, 
-    importc: "cairo_scaled_font_status", libcairo.}
-proc get_type*(scaled_font: PScaledFont): TFontType{.cdecl, 
-    importc: "cairo_scaled_font_get_type", libcairo.}
-proc get_user_data*(scaled_font: PScaledFont, key: PUserDataKey): Pointer{.
-    cdecl, importc: "cairo_scaled_font_get_user_data", libcairo.}
-proc set_user_data*(scaled_font: PScaledFont, key: PUserDataKey, 
-                    user_data: Pointer, destroy: TDestroyFunc): TStatus{.
-    cdecl, importc: "cairo_scaled_font_set_user_data", libcairo.}
-proc extents*(scaled_font: PScaledFont, extents: PFontExtents){.
-    cdecl, importc: "cairo_scaled_font_extents", libcairo.}
-proc text_extents*(scaled_font: PScaledFont, utf8: cstring, 
-                   extents: PTextExtents){.cdecl, 
-    importc: "cairo_scaled_font_text_extents", libcairo.}
-proc glyph_extents*(scaled_font: PScaledFont, glyphs: PGlyph, 
-                                num_glyphs: int32, extents: PTextExtents){.
-    cdecl, importc: "cairo_scaled_font_glyph_extents", libcairo.}
-proc get_font_face*(scaled_font: PScaledFont): PFontFace{.cdecl, 
-    importc: "cairo_scaled_font_get_font_face", libcairo.}
-proc get_font_matrix*(scaled_font: PScaledFont, font_matrix: PMatrix){.
-    cdecl, importc: "cairo_scaled_font_get_font_matrix", libcairo.}
-proc get_ctm*(scaled_font: PScaledFont, ctm: PMatrix){.cdecl, 
-    importc: "cairo_scaled_font_get_ctm", libcairo.}
-proc get_font_options*(scaled_font: PScaledFont, 
-                                   options: PFontOptions){.cdecl, 
-    importc: "cairo_scaled_font_get_font_options", libcairo.}
-  #* Query functions
-proc get_operator*(cr: PContext): TOperator{.cdecl, importc: "cairo_get_operator", 
-                                      libcairo.}
-proc get_source*(cr: PContext): PPattern{.cdecl, importc: "cairo_get_source", 
-                                   libcairo.}
-proc get_tolerance*(cr: PContext): float64{.cdecl, importc: "cairo_get_tolerance", 
-                                     libcairo.}
-proc get_antialias*(cr: PContext): TAntialias{.cdecl, importc: "cairo_get_antialias", 
-                                        libcairo.}
-proc get_current_point*(cr: PContext, x, y: var float64){.cdecl, 
-    importc: "cairo_get_current_point", libcairo.}
-proc get_fill_rule*(cr: PContext): TFillRule{.cdecl, importc: "cairo_get_fill_rule", 
-                                       libcairo.}
-proc get_line_width*(cr: PContext): float64{.cdecl, importc: "cairo_get_line_width", 
-                                      libcairo.}
-proc get_line_cap*(cr: PContext): TLineCap{.cdecl, importc: "cairo_get_line_cap", 
-                                     libcairo.}
-proc get_line_join*(cr: PContext): TLineJoin{.cdecl, importc: "cairo_get_line_join", 
-                                       libcairo.}
-proc get_miter_limit*(cr: PContext): float64{.cdecl, importc: "cairo_get_miter_limit", 
-                                       libcairo.}
-proc get_dash_count*(cr: PContext): int32{.cdecl, importc: "cairo_get_dash_count", 
-                                    libcairo.}
-proc get_dash*(cr: PContext, dashes, offset: var float64){.cdecl, 
-    importc: "cairo_get_dash", libcairo.}
-proc get_matrix*(cr: PContext, matrix: PMatrix){.cdecl, importc: "cairo_get_matrix", 
-    libcairo.}
-proc get_target*(cr: PContext): PSurface{.cdecl, importc: "cairo_get_target", 
-                                   libcairo.}
-proc get_group_target*(cr: PContext): PSurface{.cdecl, 
-    importc: "cairo_get_group_target", libcairo.}
-proc copy_path*(cr: PContext): PPath{.cdecl, importc: "cairo_copy_path", 
-                               libcairo.}
-proc copy_path_flat*(cr: PContext): PPath{.cdecl, importc: "cairo_copy_path_flat", 
-                                    libcairo.}
-proc append_path*(cr: PContext, path: PPath){.cdecl, importc: "cairo_append_path", 
-                                       libcairo.}
-proc destroy*(path: PPath){.cdecl, importc: "cairo_path_destroy", 
-                                 libcairo.}
-  #* Error status queries
-proc status*(cr: PContext): TStatus{.cdecl, importc: "cairo_status", libcairo.}
-proc status_to_string*(status: TStatus): cstring{.cdecl, 
-    importc: "cairo_status_to_string", libcairo.}
-  #* Surface manipulation
-proc surface_create_similar*(other: PSurface, content: TContent, 
-                             width, height: int32): PSurface{.cdecl, 
-    importc: "cairo_surface_create_similar", libcairo.}
-proc reference*(surface: PSurface): PSurface{.cdecl, 
-    importc: "cairo_surface_reference", libcairo.}
-proc finish*(surface: PSurface){.cdecl, importc: "cairo_surface_finish", 
-    libcairo.}
-proc destroy*(surface: PSurface){.cdecl, 
-    importc: "cairo_surface_destroy", libcairo.}
-proc get_reference_count*(surface: PSurface): int32{.cdecl, 
-    importc: "cairo_surface_get_reference_count", libcairo.}
-proc status*(surface: PSurface): TStatus{.cdecl, 
-    importc: "cairo_surface_status", libcairo.}
-proc get_type*(surface: PSurface): TSurfaceType{.cdecl, 
-    importc: "cairo_surface_get_type", libcairo.}
-proc get_content*(surface: PSurface): TContent{.cdecl, 
-    importc: "cairo_surface_get_content", libcairo.}
-proc write_to_png*(surface: PSurface, filename: cstring): TStatus{.
-    cdecl, importc: "cairo_surface_write_to_png", libcairo.}
-proc write_to_png*(surface: PSurface, write_func: TWriteFunc, 
-                   closure: pointer): TStatus{.cdecl, 
-    importc: "cairo_surface_write_to_png_stream", libcairo.}
-proc get_user_data*(surface: PSurface, key: PUserDataKey): pointer{.
-    cdecl, importc: "cairo_surface_get_user_data", libcairo.}
-proc set_user_data*(surface: PSurface, key: PUserDataKey, 
-                            user_data: pointer, destroy: TDestroyFunc): TStatus{.
-    cdecl, importc: "cairo_surface_set_user_data", libcairo.}
-proc get_font_options*(surface: PSurface, options: PFontOptions){.cdecl, 
-    importc: "cairo_surface_get_font_options", libcairo.}
-proc flush*(surface: PSurface){.cdecl, importc: "cairo_surface_flush", 
-                                        libcairo.}
-proc mark_dirty*(surface: PSurface){.cdecl, 
-    importc: "cairo_surface_mark_dirty", libcairo.}
-proc mark_dirty_rectangle*(surface: PSurface, x, y, width, height: int32){.
-    cdecl, importc: "cairo_surface_mark_dirty_rectangle", libcairo.}
-proc set_device_offset*(surface: PSurface, x_offset, y_offset: float64){.
-    cdecl, importc: "cairo_surface_set_device_offset", libcairo.}
-proc get_device_offset*(surface: PSurface, 
-                                x_offset, y_offset: var float64){.cdecl, 
-    importc: "cairo_surface_get_device_offset", libcairo.}
-proc set_fallback_resolution*(surface: PSurface, x_pixels_per_inch, 
-    y_pixels_per_inch: float64){.cdecl, importc: "cairo_surface_set_fallback_resolution", 
-                                 libcairo.}
-  #* Image-surface functions
-proc image_surface_create*(format: TFormat, width, height: int32): PSurface{.
-    cdecl, importc: "cairo_image_surface_create", libcairo.}
-proc image_surface_create*(data: Pbyte, format: TFormat, 
-                           width, height, stride: int32): PSurface{.
-    cdecl, importc: "cairo_image_surface_create_for_data", libcairo.}
-proc get_data*(surface: PSurface): cstring{.cdecl, 
-    importc: "cairo_image_surface_get_data", libcairo.}
-proc get_format*(surface: PSurface): TFormat{.cdecl, 
-    importc: "cairo_image_surface_get_format", libcairo.}
-proc get_width*(surface: PSurface): int32{.cdecl, 
-    importc: "cairo_image_surface_get_width", libcairo.}
-proc get_height*(surface: PSurface): int32{.cdecl, 
-    importc: "cairo_image_surface_get_height", libcairo.}
-proc get_stride*(surface: PSurface): int32{.cdecl, 
-    importc: "cairo_image_surface_get_stride", libcairo.}
-proc image_surface_create_from_png*(filename: cstring): PSurface{.cdecl, 
-    importc: "cairo_image_surface_create_from_png", libcairo.}
-proc image_surface_create_from_png*(read_func: TReadFunc, 
-    closure: pointer): PSurface{.cdecl, importc: "cairo_image_surface_create_from_png_stream", 
-                                 libcairo.}
-  #* Pattern creation functions
-proc pattern_create_rgb*(red, green, blue: float64): PPattern{.cdecl, 
-    importc: "cairo_pattern_create_rgb", libcairo.}
-proc pattern_create_rgba*(red, green, blue, alpha: float64): PPattern{.cdecl, 
-    importc: "cairo_pattern_create_rgba", libcairo.}
-proc pattern_create_for_surface*(surface: PSurface): PPattern{.cdecl, 
-    importc: "cairo_pattern_create_for_surface", libcairo.}
-proc pattern_create_linear*(x0, y0, x1, y1: float64): PPattern{.cdecl, 
-    importc: "cairo_pattern_create_linear", libcairo.}
-proc pattern_create_radial*(cx0, cy0, radius0, cx1, cy1, radius1: float64): PPattern{.
-    cdecl, importc: "cairo_pattern_create_radial", libcairo.}
-proc reference*(pattern: PPattern): PPattern{.cdecl, 
-    importc: "cairo_pattern_reference", libcairo.}
-proc destroy*(pattern: PPattern){.cdecl, 
-    importc: "cairo_pattern_destroy", libcairo.}
-proc get_reference_count*(pattern: PPattern): int32{.cdecl, 
-    importc: "cairo_pattern_get_reference_count", libcairo.}
-proc status*(pattern: PPattern): TStatus{.cdecl, 
-    importc: "cairo_pattern_status", libcairo.}
-proc get_user_data*(pattern: PPattern, key: PUserDataKey): Pointer{.
-    cdecl, importc: "cairo_pattern_get_user_data", libcairo.}
-proc set_user_data*(pattern: PPattern, key: PUserDataKey, 
-                    user_data: Pointer, destroy: TDestroyFunc): TStatus{.
-    cdecl, importc: "cairo_pattern_set_user_data", libcairo.}
-proc get_type*(pattern: PPattern): TPatternType{.cdecl, 
-    importc: "cairo_pattern_get_type", libcairo.}
-proc add_color_stop_rgb*(pattern: PPattern, 
-                                 offset, red, green, blue: float64){.cdecl, 
-    importc: "cairo_pattern_add_color_stop_rgb", libcairo.}
-proc add_color_stop_rgba*(pattern: PPattern, 
-                                  offset, red, green, blue, alpha: float64){.
-    cdecl, importc: "cairo_pattern_add_color_stop_rgba", libcairo.}
-proc set_matrix*(pattern: PPattern, matrix: PMatrix){.cdecl, 
-    importc: "cairo_pattern_set_matrix", libcairo.}
-proc get_matrix*(pattern: PPattern, matrix: PMatrix){.cdecl, 
-    importc: "cairo_pattern_get_matrix", libcairo.}
-proc set_extend*(pattern: PPattern, extend: TExtend){.cdecl, 
-    importc: "cairo_pattern_set_extend", libcairo.}
-proc get_extend*(pattern: PPattern): TExtend{.cdecl, 
-    importc: "cairo_pattern_get_extend", libcairo.}
-proc set_filter*(pattern: PPattern, filter: TFilter){.cdecl, 
-    importc: "cairo_pattern_set_filter", libcairo.}
-proc get_filter*(pattern: PPattern): TFilter{.cdecl, 
-    importc: "cairo_pattern_get_filter", libcairo.}
-proc get_rgba*(pattern: PPattern, 
-               red, green, blue, alpha: var float64): TStatus{.
-    cdecl, importc: "cairo_pattern_get_rgba", libcairo.}
-proc get_surface*(pattern: PPattern, surface: PPSurface): TStatus{.
-    cdecl, importc: "cairo_pattern_get_surface", libcairo.}
-proc get_color_stop_rgba*(pattern: PPattern, index: int32, 
-                       offset, red, green, blue, alpha: var float64): TStatus{.
-    cdecl, importc: "cairo_pattern_get_color_stop_rgba", libcairo.}
-proc get_color_stop_count*(pattern: PPattern, count: var int32): TStatus{.
-    cdecl, importc: "cairo_pattern_get_color_stop_count", libcairo.}
-proc get_linear_points*(pattern: PPattern, 
-                        x0, y0, x1, y1: var float64): TStatus{.
-    cdecl, importc: "cairo_pattern_get_linear_points", libcairo.}
-proc get_radial_circles*(pattern: PPattern, 
-                         x0, y0, r0, x1, y1, r1: var float64): TStatus{.
-    cdecl, importc: "cairo_pattern_get_radial_circles", libcairo.}
-  #* Matrix functions
-proc init*(matrix: PMatrix, xx, yx, xy, yy, x0, y0: float64){.cdecl, 
-    importc: "cairo_matrix_init", libcairo.}
-proc init_identity*(matrix: PMatrix){.cdecl, 
-    importc: "cairo_matrix_init_identity", libcairo.}
-proc init_translate*(matrix: PMatrix, tx, ty: float64){.cdecl, 
-    importc: "cairo_matrix_init_translate", libcairo.}
-proc init_scale*(matrix: PMatrix, sx, sy: float64){.cdecl, 
-    importc: "cairo_matrix_init_scale", libcairo.}
-proc init_rotate*(matrix: PMatrix, radians: float64){.cdecl, 
-    importc: "cairo_matrix_init_rotate", libcairo.}
-proc translate*(matrix: PMatrix, tx, ty: float64){.cdecl, 
-    importc: "cairo_matrix_translate", libcairo.}
-proc scale*(matrix: PMatrix, sx, sy: float64){.cdecl, 
-    importc: "cairo_matrix_scale", libcairo.}
-proc rotate*(matrix: PMatrix, radians: float64){.cdecl, 
-    importc: "cairo_matrix_rotate", libcairo.}
-proc invert*(matrix: PMatrix): TStatus{.cdecl, 
-    importc: "cairo_matrix_invert", libcairo.}
-proc multiply*(result, a, b: PMatrix){.cdecl, 
-    importc: "cairo_matrix_multiply", libcairo.}
-proc transform_distance*(matrix: PMatrix, dx, dy: var float64){.cdecl, 
-    importc: "cairo_matrix_transform_distance", libcairo.}
-proc transform_point*(matrix: PMatrix, x, y: var float64){.cdecl, 
-    importc: "cairo_matrix_transform_point", libcairo.}
-  #* PDF functions
-proc pdf_surface_create*(filename: cstring, 
-                         width_in_points, height_in_points: float64): PSurface{.
-    cdecl, importc: "cairo_pdf_surface_create", libcairo.}
-proc pdf_surface_create_for_stream*(write_func: TWriteFunc, closure: Pointer, 
-                                    width_in_points, height_in_points: float64): PSurface{.
-    cdecl, importc: "cairo_pdf_surface_create_for_stream", libcairo.}
-proc pdf_surface_set_size*(surface: PSurface, 
-                           width_in_points, height_in_points: float64){.cdecl, 
-    importc: "cairo_pdf_surface_set_size", libcairo.}
-  #* PS functions
-proc ps_surface_create*(filename: cstring, 
-                        width_in_points, height_in_points: float64): PSurface{.
-    cdecl, importc: "cairo_ps_surface_create", libcairo.}
-proc ps_surface_create_for_stream*(write_func: TWriteFunc, closure: Pointer, 
-                                   width_in_points, height_in_points: float64): PSurface{.
-    cdecl, importc: "cairo_ps_surface_create_for_stream", libcairo.}
-proc ps_surface_set_size*(surface: PSurface, 
-                          width_in_points, height_in_points: float64){.cdecl, 
-    importc: "cairo_ps_surface_set_size", libcairo.}
-proc ps_surface_dsc_comment*(surface: PSurface, comment: cstring){.cdecl, 
-    importc: "cairo_ps_surface_dsc_comment", libcairo.}
-proc ps_surface_dsc_begin_setup*(surface: PSurface){.cdecl, 
-    importc: "cairo_ps_surface_dsc_begin_setup", libcairo.}
-proc ps_surface_dsc_begin_page_setup*(surface: PSurface){.cdecl, 
-    importc: "cairo_ps_surface_dsc_begin_page_setup", libcairo.}
-  #* SVG functions
-proc svg_surface_create*(filename: cstring, 
-                         width_in_points, height_in_points: float64): PSurface{.
-    cdecl, importc: "cairo_svg_surface_create", libcairo.}
-proc svg_surface_create_for_stream*(write_func: TWriteFunc, closure: Pointer, 
-                                    width_in_points, height_in_points: float64): PSurface{.
-    cdecl, importc: "cairo_svg_surface_create_for_stream", libcairo.}
-proc svg_surface_restrict_to_version*(surface: PSurface, version: TSvgVersion){.
-    cdecl, importc: "cairo_svg_surface_restrict_to_version", libcairo.}
-  #todo: see how translate this
-  #procedure cairo_svg_get_versions(TCairoSvgVersion const	**versions,
-  #                        int                      	 *num_versions);
-proc svg_version_to_string*(version: TSvgVersion): cstring{.cdecl, 
-    importc: "cairo_svg_version_to_string", libcairo.}
-  #* Functions to be used while debugging (not intended for use in production code)
-proc debug_reset_static_data*(){.cdecl, 
-                                 importc: "cairo_debug_reset_static_data", 
-                                 libcairo.}
-# implementation
-
-proc version(major, minor, micro: var int32) = 
-  var version: int32
-  version = version()
-  major = version div 10000'i32
-  minor = (version mod (major * 10000'i32)) div 100'i32
-  micro = (version mod ((major * 10000'i32) + (minor * 100'i32)))
-  
-proc checkStatus*(s: cairo.TStatus) {.noinline.} = 
-  ## if ``s != StatusSuccess`` the error is turned into an appropirate Nimrod
-  ## exception and raised.
-  case s
-  of StatusSuccess: nil
-  of StatusNoMemory: 
-    raise newException(EOutOfMemory, $statusToString(s))
-  of STATUS_READ_ERROR, STATUS_WRITE_ERROR, STATUS_FILE_NOT_FOUND, 
-     STATUS_TEMP_FILE_ERROR:
-    raise newException(EIO, $statusToString(s))
-  else:
-    raise newException(EAssertionFailed, $statusToString(s))
-
-
diff --git a/lib/wrappers/cairo/cairo_pragma.nim b/lib/wrappers/cairo/cairo_pragma.nim
deleted file mode 100644
index 11bf237f9..000000000
--- a/lib/wrappers/cairo/cairo_pragma.nim
+++ /dev/null
@@ -1,16 +0,0 @@
-# included by cairo bindings
-
-when defined(use_pkg_config) or defined(use_pkg_config_static):
-    {.pragma: libcairo, cdecl.}
-    when defined(use_pkg_config_static):
-        {.passl: gorge("pkg-config cairo --libs --static").}
-    else:
-        {.passl: gorge("pkg-config cairo --libs").}
-else:
-    when defined(windows): 
-      const LIB_CAIRO* = "libcairo-2.dll"
-    elif defined(macosx):
-      const LIB_CAIRO* = "libcairo.dylib"
-    else: 
-      const LIB_CAIRO* = "libcairo.so(|.2)"
-    {.pragma: libcairo, cdecl, dynlib: LIB_CAIRO.}
diff --git a/lib/wrappers/cairo/cairoft.nim b/lib/wrappers/cairo/cairoft.nim
deleted file mode 100644
index 5f4e47662..000000000
--- a/lib/wrappers/cairo/cairoft.nim
+++ /dev/null
@@ -1,36 +0,0 @@
-#
-# Translation of cairo-ft.h 
-# by Jeffrey Pohlmeyer 
-# updated to version 1.4 by Luiz Américo Pereira Câmara 2007
-#
-
-import 
-  cairo, freetypeh
-
-include "cairo_pragma.nim"
-#todo: properly define FcPattern:
-#It will require translate FontConfig header
-
-#*
-#typedef struct _XftPattern {
-#  int		    num;
-#  int		    size;
-#  XftPatternElt   *elts;
-# } XftPattern;
-# typedef FcPattern XftPattern;
-#
-
-type 
-  FcPattern* = Pointer
-  PFcPattern* = ptr FcPattern
-
-proc ft_font_face_create_for_pattern*(pattern: PFcPattern): PFontFace{.libcairo,
-    importc: "cairo_ft_font_face_create_for_pattern".}
-proc ft_font_options_substitute*(options: PFontOptions, pattern: PFcPattern){.
-    libcairo, importc: "cairo_ft_font_options_substitute".}
-proc ft_font_face_create_for_ft_face*(face: TFT_Face, load_flags: int32): PFontFace{.libcairo,
-    importc: "cairo_ft_font_face_create_for_ft_face".}
-proc ft_scaled_font_lock_face*(scaled_font: PScaledFont): TFT_Face{.libcairo,
-    importc: "cairo_ft_scaled_font_lock_face".}
-proc ft_scaled_font_unlock_face*(scaled_font: PScaledFont){.libcairo,
-    importc: "cairo_ft_scaled_font_unlock_face".}
diff --git a/lib/wrappers/cairo/cairowin32.nim b/lib/wrappers/cairo/cairowin32.nim
deleted file mode 100644
index cec3a5bc5..000000000
--- a/lib/wrappers/cairo/cairowin32.nim
+++ /dev/null
@@ -1,37 +0,0 @@
-#
-# Translation of cairo-win32.h version 1.4
-# by Luiz Américo Pereira Câmara 2007
-#
-
-import 
-  cairo, windows
-
-proc win32_surface_create*(hdc: HDC): PSurface{.cdecl, 
-    importc: "cairo_win32_surface_create", dynlib: LIB_CAIRO.}
-proc win32_surface_create_with_ddb*(hdc: HDC, format: TFormat, 
-                                    width, height: int32): PSurface{.cdecl, 
-    importc: "cairo_win32_surface_create_with_ddb", dynlib: LIB_CAIRO.}
-proc win32_surface_create_with_dib*(format: TFormat, width, height: int32): PSurface{.
-    cdecl, importc: "cairo_win32_surface_create_with_dib", dynlib: LIB_CAIRO.}
-proc win32_surface_get_dc*(surface: PSurface): HDC{.cdecl, 
-    importc: "cairo_win32_surface_get_dc", dynlib: LIB_CAIRO.}
-proc win32_surface_get_image*(surface: PSurface): PSurface{.cdecl, 
-    importc: "cairo_win32_surface_get_image", dynlib: LIB_CAIRO.}
-proc win32_font_face_create_for_logfontw*(logfont: pLOGFONTW): PFontFace{.cdecl, 
-    importc: "cairo_win32_font_face_create_for_logfontw", dynlib: LIB_CAIRO.}
-proc win32_font_face_create_for_hfont*(font: HFONT): PFontFace{.cdecl, 
-    importc: "cairo_win32_font_face_create_for_hfont", dynlib: LIB_CAIRO.}
-proc win32_scaled_font_select_font*(scaled_font: PScaledFont, hdc: HDC): TStatus{.
-    cdecl, importc: "cairo_win32_scaled_font_select_font", dynlib: LIB_CAIRO.}
-proc win32_scaled_font_done_font*(scaled_font: PScaledFont){.cdecl, 
-    importc: "cairo_win32_scaled_font_done_font", dynlib: LIB_CAIRO.}
-proc win32_scaled_font_get_metrics_factor*(scaled_font: PScaledFont): float64{.
-    cdecl, importc: "cairo_win32_scaled_font_get_metrics_factor", 
-    dynlib: LIB_CAIRO.}
-proc win32_scaled_font_get_logical_to_device*(scaled_font: PScaledFont, 
-    logical_to_device: PMatrix){.cdecl, importc: "cairo_win32_scaled_font_get_logical_to_device", 
-                                 dynlib: LIB_CAIRO.}
-proc win32_scaled_font_get_device_to_logical*(scaled_font: PScaledFont, 
-    device_to_logical: PMatrix){.cdecl, importc: "cairo_win32_scaled_font_get_device_to_logical", 
-                                 dynlib: LIB_CAIRO.}
-# implementation
diff --git a/lib/wrappers/cairo/cairoxlib.nim b/lib/wrappers/cairo/cairoxlib.nim
deleted file mode 100644
index 273a8b42f..000000000
--- a/lib/wrappers/cairo/cairoxlib.nim
+++ /dev/null
@@ -1,41 +0,0 @@
-#
-# Translation of cairo-xlib.h version 1.4
-# by Jeffrey Pohlmeyer 
-# updated to version 1.4 by Luiz Américo Pereira Câmara 2007
-#
-
-import 
-  cairo, x, xlib, xrender
-
-include "cairo_pragma.nim"
-
-proc xlib_surface_create*(dpy: PDisplay, drawable: TDrawable, visual: PVisual, 
-                          width, height: int32): PSurface{.cdecl, 
-    importc: "cairo_xlib_surface_create", libcairo.}
-proc xlib_surface_create_for_bitmap*(dpy: PDisplay, bitmap: TPixmap, 
-                                     screen: PScreen, width, height: int32): PSurface{.
-    cdecl, importc: "cairo_xlib_surface_create_for_bitmap", libcairo.}
-proc xlib_surface_create_with_xrender_format*(dpy: PDisplay, 
-    drawable: TDrawable, screen: PScreen, format: PXRenderPictFormat, 
-    width, height: int32): PSurface{.cdecl, importc: "cairo_xlib_surface_create_with_xrender_format", 
-                                     libcairo.}
-proc xlib_surface_get_depth*(surface: PSurface): int32{.cdecl, 
-    importc: "cairo_xlib_surface_get_depth", libcairo.}
-proc xlib_surface_get_display*(surface: PSurface): PDisplay{.cdecl, 
-    importc: "cairo_xlib_surface_get_display", libcairo.}
-proc xlib_surface_get_drawable*(surface: PSurface): TDrawable{.cdecl, 
-    importc: "cairo_xlib_surface_get_drawable", libcairo.}
-proc xlib_surface_get_height*(surface: PSurface): int32{.cdecl, 
-    importc: "cairo_xlib_surface_get_height", libcairo.}
-proc xlib_surface_get_screen*(surface: PSurface): PScreen{.cdecl, 
-    importc: "cairo_xlib_surface_get_screen", libcairo.}
-proc xlib_surface_get_visual*(surface: PSurface): PVisual{.cdecl, 
-    importc: "cairo_xlib_surface_get_visual", libcairo.}
-proc xlib_surface_get_width*(surface: PSurface): int32{.cdecl, 
-    importc: "cairo_xlib_surface_get_width", libcairo.}
-proc xlib_surface_set_size*(surface: PSurface, width, height: int32){.cdecl, 
-    importc: "cairo_xlib_surface_set_size", libcairo.}
-proc xlib_surface_set_drawable*(surface: PSurface, drawable: TDrawable, 
-                                width, height: int32){.cdecl, 
-    importc: "cairo_xlib_surface_set_drawable", libcairo.}
-# implementation
diff --git a/lib/wrappers/lua/lauxlib.nim b/lib/wrappers/lua/lauxlib.nim
deleted file mode 100644
index b985858d3..000000000
--- a/lib/wrappers/lua/lauxlib.nim
+++ /dev/null
@@ -1,208 +0,0 @@
-#*****************************************************************************
-# *                                                                            *
-# *  File:        lauxlib.pas                                                  *
-# *  Authors:     TeCGraf           (C headers + actual Lua libraries)         *
-# *               Lavergne Thomas   (original translation to Pascal)           *
-# *               Bram Kuijvenhoven (update to Lua 5.1.1 for FreePascal)       *
-# *  Description: Lua auxiliary library                                        *
-# *                                                                            *
-# *****************************************************************************
-#
-#** $Id: lauxlib.h,v 1.59 2003/03/18 12:25:32 roberto Exp $
-#** Auxiliary functions for building Lua libraries
-#** See Copyright Notice in lua.h
-#
-#
-#** Translated to pascal by Lavergne Thomas
-#** Notes :
-#**    - Pointers type was prefixed with 'P'
-#** Bug reports :
-#**    - thomas.lavergne@laposte.net
-#**   In french or in english
-#
-
-import 
-  lua
-
-proc pushstring*(L: PState, s: string)
-  # compatibilty macros
-proc getn*(L: PState, n: cint): cint
-  # calls lua_objlen
-proc setn*(L: PState, t, n: cint)
-  # does nothing!
-type 
-  Treg*{.final.} = object 
-    name*: cstring
-    func*: CFunction
-
-  Preg* = ptr Treg
-
-
-{.push callConv: cdecl, dynlib: lua.LIB_NAME.}
-{.push importc: "luaL_$1".}
-
-proc openlib*(L: PState, libname: cstring, lr: Preg, nup: cint)
-proc register*(L: PState, libname: cstring, lr: Preg)
-
-proc getmetafield*(L: PState, obj: cint, e: cstring): cint
-proc callmeta*(L: PState, obj: cint, e: cstring): cint
-proc typerror*(L: PState, narg: cint, tname: cstring): cint
-proc argerror*(L: PState, numarg: cint, extramsg: cstring): cint
-proc checklstring*(L: PState, numArg: cint, len: ptr int): cstring
-proc optlstring*(L: PState, numArg: cint, def: cstring, len: ptr cint): cstring
-proc checknumber*(L: PState, numArg: cint): Number
-proc optnumber*(L: PState, nArg: cint, def: Number): Number
-proc checkinteger*(L: PState, numArg: cint): Integer
-proc optinteger*(L: PState, nArg: cint, def: Integer): Integer
-proc checkstack*(L: PState, sz: cint, msg: cstring)
-proc checktype*(L: PState, narg, t: cint)
-
-proc checkany*(L: PState, narg: cint)
-proc newmetatable*(L: PState, tname: cstring): cint
-
-proc checkudata*(L: PState, ud: cint, tname: cstring): Pointer
-proc where*(L: PState, lvl: cint)
-proc error*(L: PState, fmt: cstring): cint{.varargs.}
-proc checkoption*(L: PState, narg: cint, def: cstring, lst: cstringArray): cint
-
-proc unref*(L: PState, t, theref: cint)
-proc loadfile*(L: PState, filename: cstring): cint
-proc loadbuffer*(L: PState, buff: cstring, size: cint, name: cstring): cint
-proc loadstring*(L: PState, s: cstring): cint
-proc newstate*(): PState
-
-{.pop.}
-proc reference*(L: PState, t: cint): cint{.importc: "luaL_ref".}
-
-{.pop.}
-
-proc open*(): PState
-  # compatibility; moved from unit lua to lauxlib because it needs luaL_newstate
-  #
-  #** ===============================================================
-  #** some useful macros
-  #** ===============================================================
-  #
-proc argcheck*(L: PState, cond: bool, numarg: cint, extramsg: cstring)
-proc checkstring*(L: PState, n: cint): cstring
-proc optstring*(L: PState, n: cint, d: cstring): cstring
-proc checkint*(L: PState, n: cint): cint
-proc checklong*(L: PState, n: cint): clong
-proc optint*(L: PState, n: cint, d: float64): cint
-proc optlong*(L: PState, n: cint, d: float64): clong
-proc dofile*(L: PState, filename: cstring): cint
-proc dostring*(L: PState, str: cstring): cint
-proc getmetatable*(L: PState, tname: cstring)
-  # not translated:
-  # #define luaL_opt(L,f,n,d)  (lua_isnoneornil(L,(n)) ? (d) : f(L,(n)))
-  #
-  #** =======================================================
-  #** Generic Buffer manipulation
-  #** =======================================================
-  #
-const                         # note: this is just arbitrary, as it related to the BUFSIZ defined in stdio.h ...
-  BUFFERSIZE* = 4096
-
-type 
-  Buffer*{.final.} = object 
-    p*: cstring               # current position in buffer 
-    lvl*: cint                 # number of strings in the stack (level) 
-    L*: PState
-    buffer*: array[0..BUFFERSIZE - 1, Char] # warning: see note above about LUAL_BUFFERSIZE
-  
-  PBuffer* = ptr Buffer
-
-proc addchar*(B: PBuffer, c: Char)
-  # warning: see note above about LUAL_BUFFERSIZE
-  # compatibility only (alias for luaL_addchar) 
-proc putchar*(B: PBuffer, c: Char)
-  # warning: see note above about LUAL_BUFFERSIZE
-proc addsize*(B: PBuffer, n: cint)
-
-{.push callConv: cdecl, dynlib: lua.LIB_NAME, importc: "luaL_$1".}
-proc buffinit*(L: PState, B: PBuffer)
-proc prepbuffer*(B: PBuffer): cstring
-proc addlstring*(B: PBuffer, s: cstring, L: cint)
-proc addstring*(B: PBuffer, s: cstring)
-proc addvalue*(B: PBuffer)
-proc pushresult*(B: PBuffer)
-proc gsub*(L: PState, s, p, r: cstring): cstring
-proc findtable*(L: PState, idx: cint, fname: cstring, szhint: cint): cstring
-  # compatibility with ref system 
-  # pre-defined references 
-{.pop.}
-
-const 
-  NOREF* = - 2
-  REFNIL* = - 1
-
-proc unref*(L: PState, theref: cint)
-proc getref*(L: PState, theref: cint)
-  #
-  #** Compatibility macros and functions
-  #
-# implementation
-
-proc pushstring(L: PState, s: string) = 
-  pushlstring(L, cstring(s), s.len.cint)
-
-proc getn(L: PState, n: cint): cint = 
-  Result = objlen(L, n)
-
-proc setn(L: PState, t, n: cint) = 
-  # does nothing as this operation is deprecated
-  nil
-
-proc open(): PState = 
-  Result = newstate()
-
-proc dofile(L: PState, filename: cstring): cint = 
-  Result = loadfile(L, filename)
-  if Result == 0: Result = pcall(L, 0, MULTRET, 0)
-  
-proc dostring(L: PState, str: cstring): cint = 
-  Result = loadstring(L, str)
-  if Result == 0: Result = pcall(L, 0, MULTRET, 0)
-  
-proc getmetatable(L: PState, tname: cstring) = 
-  getfield(L, REGISTRYINDEX, tname)
-
-proc argcheck(L: PState, cond: bool, numarg: cint, extramsg: cstring) = 
-  if not cond: 
-    discard argerror(L, numarg, extramsg)
-
-proc checkstring(L: PState, n: cint): cstring = 
-  Result = checklstring(L, n, nil)
-
-proc optstring(L: PState, n: cint, d: cstring): cstring = 
-  Result = optlstring(L, n, d, nil)
-
-proc checkint(L: PState, n: cint): cint = 
-  Result = cint(checknumber(L, n))
-
-proc checklong(L: PState, n: cint): clong = 
-  Result = int32(ToInt(checknumber(L, n)))
-
-proc optint(L: PState, n: cint, d: float64): cint = 
-  Result = optnumber(L, n, d).cint
-
-proc optlong(L: PState, n: cint, d: float64): clong = 
-  Result = int32(ToInt(optnumber(L, n, d)))
-
-proc addchar(B: PBuffer, c: Char) = 
-  if cast[int](addr((B.p))) < (cast[int](addr((B.buffer[0]))) + BUFFERSIZE): 
-    discard prepbuffer(B)
-  B.p[1] = c
-  B.p = cast[cstring](cast[int](B.p) + 1)
-
-proc putchar(B: PBuffer, c: Char) = 
-  addchar(B, c)
-
-proc addsize(B: PBuffer, n: cint) = 
-  B.p = cast[cstring](cast[int](B.p) + n)
-
-proc unref(L: PState, theref: cint) = 
-  unref(L, REGISTRYINDEX, theref)
-
-proc getref(L: PState, theref: cint) = 
-  rawgeti(L, REGISTRYINDEX, theref)
diff --git a/lib/wrappers/lua/lua.nim b/lib/wrappers/lua/lua.nim
deleted file mode 100644
index 153714cee..000000000
--- a/lib/wrappers/lua/lua.nim
+++ /dev/null
@@ -1,364 +0,0 @@
-#*****************************************************************************
-# *                                                                            *
-# *  File:        lua.pas                                                      *
-# *  Authors:     TeCGraf           (C headers + actual Lua libraries)         *
-# *               Lavergne Thomas   (original translation to Pascal)           *
-# *               Bram Kuijvenhoven (update to Lua 5.1.1 for FreePascal)       *
-# *  Description: Basic Lua library                                            *
-# *                                                                            *
-# *****************************************************************************
-#
-#** $Id: lua.h,v 1.175 2003/03/18 12:31:39 roberto Exp $
-#** Lua - An Extensible Extension Language
-#** TeCGraf: Computer Graphics Technology Group, PUC-Rio, Brazil
-#** http://www.lua.org   mailto:info@lua.org
-#** See Copyright Notice at the end of this file
-#
-#
-#** Updated to Lua 5.1.1 by Bram Kuijvenhoven (bram at kuijvenhoven dot net),
-#**   Hexis BV (http://www.hexis.nl), the Netherlands
-#** Notes:
-#**    - Only tested with FPC (FreePascal Compiler)
-#**    - Using LuaBinaries styled DLL/SO names, which include version names
-#**    - LUA_YIELD was suffixed by '_' for avoiding name collision
-#
-#
-#** Translated to pascal by Lavergne Thomas
-#** Notes :
-#**    - Pointers type was prefixed with 'P'
-#**    - lua_upvalueindex constant was transformed to function
-#**    - Some compatibility function was isolated because with it you must have
-#**      lualib.
-#**    - LUA_VERSION was suffixed by '_' for avoiding name collision.
-#** Bug reports :
-#**    - thomas.lavergne@laposte.net
-#**   In french or in english
-#
-
-when defined(useLuajit):
-  when defined(MACOSX):
-    const
-      NAME* = "libluajit.dylib"
-      LIB_NAME* = "libluajit.dylib"
-  elif defined(UNIX):
-    const
-      NAME* = "libluajit.so(|.0)"
-      LIB_NAME* = "libluajit.so(|.0)"
-  else:
-    const
-      NAME* = "luajit.dll"
-      LIB_NAME* = "luajit.dll"
-else:
-  when defined(MACOSX):
-    const
-      NAME* = "liblua(|5.1|5.0).dylib"
-      LIB_NAME* = "liblua(|5.1|5.0).dylib"
-  elif defined(UNIX):
-    const
-      NAME* = "liblua(|5.1|5.0).so(|.0)"
-      LIB_NAME* = "liblua(|5.1|5.0).so(|.0)"
-  else:
-    const 
-      NAME* = "lua(|5.1|5.0).dll"
-      LIB_NAME* = "lua(|5.1|5.0).dll"
-
-const 
-  VERSION* = "Lua 5.1"
-  RELEASE* = "Lua 5.1.1"
-  VERSION_NUM* = 501
-  COPYRIGHT* = "Copyright (C) 1994-2006 Lua.org, PUC-Rio"
-  AUTHORS* = "R. Ierusalimschy, L. H. de Figueiredo & W. Celes"
-  # option for multiple returns in `lua_pcall' and `lua_call' 
-  MULTRET* = - 1              #
-                              #** pseudo-indices
-                              #
-  REGISTRYINDEX* = - 10000
-  ENVIRONINDEX* = - 10001
-  GLOBALSINDEX* = - 10002
-
-proc upvalueindex*(I: cint): cint
-const                         # thread status; 0 is OK 
-  constYIELD* = 1
-  ERRRUN* = 2
-  ERRSYNTAX* = 3
-  ERRMEM* = 4
-  ERRERR* = 5
-
-type 
-  PState* = Pointer
-  CFunction* = proc (L: PState): cint{.cdecl.}
-
-#
-#** functions that read/write blocks when loading/dumping Lua chunks
-#
-
-type 
-  Reader* = proc (L: PState, ud: Pointer, sz: ptr cint): cstring{.cdecl.}
-  Writer* = proc (L: PState, p: Pointer, sz: cint, ud: Pointer): cint{.cdecl.}
-  Alloc* = proc (ud, theptr: Pointer, osize, nsize: cint){.cdecl.}
-
-const 
-  TNONE* = - 1
-  TNIL* = 0
-  TBOOLEAN* = 1
-  TLIGHTUSERDATA* = 2
-  TNUMBER* = 3
-  TSTRING* = 4
-  TTABLE* = 5
-  TFUNCTION* = 6
-  TUSERDATA* = 7
-  TTHREAD* = 8                # minimum Lua stack available to a C function 
-  MINSTACK* = 20
-
-type                          # Type of Numbers in Lua 
-  Number* = float
-  Integer* = cint
-
-{.pragma: ilua, importc: "lua_$1".}
-
-{.push callConv: cdecl, dynlib: LibName.}
-#{.push importc: "lua_$1".}
-
-proc newstate*(f: Alloc, ud: Pointer): PState {.ilua.}
-
-proc close*(L: PState){.ilua.}
-proc newthread*(L: PState): PState{.ilua.}
-proc atpanic*(L: PState, panicf: CFunction): CFunction{.ilua.}
-
-proc gettop*(L: PState): cint{.ilua.}
-proc settop*(L: PState, idx: cint){.ilua.}
-proc pushvalue*(L: PState, Idx: cint){.ilua.}
-proc remove*(L: PState, idx: cint){.ilua.}
-proc insert*(L: PState, idx: cint){.ilua.}
-proc replace*(L: PState, idx: cint){.ilua.}
-proc checkstack*(L: PState, sz: cint): cint{.ilua.}
-proc xmove*(`from`, `to`: PState, n: cint){.ilua.}
-proc isnumber*(L: PState, idx: cint): cint{.ilua.}
-proc isstring*(L: PState, idx: cint): cint{.ilua.}
-proc iscfunction*(L: PState, idx: cint): cint{.ilua.}
-proc isuserdata*(L: PState, idx: cint): cint{.ilua.}
-proc luatype*(L: PState, idx: cint): cint{.importc: "lua_type".}
-proc typename*(L: PState, tp: cint): cstring{.ilua.}
-proc equal*(L: PState, idx1, idx2: cint): cint{.ilua.}
-proc rawequal*(L: PState, idx1, idx2: cint): cint{.ilua.}
-proc lessthan*(L: PState, idx1, idx2: cint): cint{.ilua.}
-proc tonumber*(L: PState, idx: cint): Number{.ilua.}
-proc tointeger*(L: PState, idx: cint): Integer{.ilua.}
-proc toboolean*(L: PState, idx: cint): cint{.ilua.}
-proc tolstring*(L: PState, idx: cint, length: ptr cint): cstring{.ilua.}
-proc objlen*(L: PState, idx: cint): cint{.ilua.}
-proc tocfunction*(L: PState, idx: cint): CFunction{.ilua.}
-proc touserdata*(L: PState, idx: cint): Pointer{.ilua.}
-proc tothread*(L: PState, idx: cint): PState{.ilua.}
-proc topointer*(L: PState, idx: cint): Pointer{.ilua.}
-proc pushnil*(L: PState){.ilua.}
-proc pushnumber*(L: PState, n: Number){.ilua.}
-proc pushinteger*(L: PState, n: Integer){.ilua.}
-proc pushlstring*(L: PState, s: cstring, len: cint){.ilua.}
-proc pushstring*(L: PState, s: cstring){.ilua.}
-proc pushvfstring*(L: PState, fmt: cstring, argp: Pointer): cstring{.ilua.}
-proc pushfstring*(L: PState, fmt: cstring): cstring{.varargs,ilua.}
-proc pushcclosure*(L: PState, fn: CFunction, n: cint){.ilua.}
-proc pushboolean*(L: PState, b: cint){.ilua.}
-proc pushlightuserdata*(L: PState, p: Pointer){.ilua.}
-proc pushthread*(L: PState){.ilua.}
-proc gettable*(L: PState, idx: cint){.ilua.}
-proc getfield*(L: Pstate, idx: cint, k: cstring){.ilua.}
-proc rawget*(L: PState, idx: cint){.ilua.}
-proc rawgeti*(L: PState, idx, n: cint){.ilua.}
-proc createtable*(L: PState, narr, nrec: cint){.ilua.}
-proc newuserdata*(L: PState, sz: cint): Pointer{.ilua.}
-proc getmetatable*(L: PState, objindex: cint): cint{.ilua.}
-proc getfenv*(L: PState, idx: cint){.ilua.}
-proc settable*(L: PState, idx: cint){.ilua.}
-proc setfield*(L: PState, idx: cint, k: cstring){.ilua.}
-proc rawset*(L: PState, idx: cint){.ilua.}
-proc rawseti*(L: PState, idx, n: cint){.ilua.}
-proc setmetatable*(L: PState, objindex: cint): cint{.ilua.}
-proc setfenv*(L: PState, idx: cint): cint{.ilua.}
-proc call*(L: PState, nargs, nresults: cint){.ilua.}
-proc pcall*(L: PState, nargs, nresults, errf: cint): cint{.ilua.}
-proc cpcall*(L: PState, func: CFunction, ud: Pointer): cint{.ilua.}
-proc load*(L: PState, reader: Reader, dt: Pointer, chunkname: cstring): cint{.ilua.}
-proc dump*(L: PState, writer: Writer, data: Pointer): cint{.ilua.}
-proc luayield*(L: PState, nresults: cint): cint{.importc: "lua_yield".}
-proc resume*(L: PState, narg: cint): cint{.ilua.}
-proc status*(L: PState): cint{.ilua.}
-proc gc*(L: PState, what, data: cint): cint{.ilua.}
-proc error*(L: PState): cint{.ilua.}
-proc next*(L: PState, idx: cint): cint{.ilua.}
-proc concat*(L: PState, n: cint){.ilua.}
-proc getallocf*(L: PState, ud: ptr Pointer): Alloc{.ilua.}
-proc setallocf*(L: PState, f: Alloc, ud: Pointer){.ilua.}
-{.pop.}
-
-#
-#** Garbage-collection functions and options
-#
-
-const 
-  GCSTOP* = 0
-  GCRESTART* = 1
-  GCCOLLECT* = 2
-  GCCOUNT* = 3
-  GCCOUNTB* = 4
-  GCSTEP* = 5
-  GCSETPAUSE* = 6
-  GCSETSTEPMUL* = 7
-
-#
-#** ===============================================================
-#** some useful macros
-#** ===============================================================
-#
-
-proc pop*(L: PState, n: cint)
-proc newtable*(L: Pstate)
-proc register*(L: PState, n: cstring, f: CFunction)
-proc pushcfunction*(L: PState, f: CFunction)
-proc strlen*(L: Pstate, i: cint): cint
-proc isfunction*(L: PState, n: cint): bool
-proc istable*(L: PState, n: cint): bool
-proc islightuserdata*(L: PState, n: cint): bool
-proc isnil*(L: PState, n: cint): bool
-proc isboolean*(L: PState, n: cint): bool
-proc isthread*(L: PState, n: cint): bool
-proc isnone*(L: PState, n: cint): bool
-proc isnoneornil*(L: PState, n: cint): bool
-proc pushliteral*(L: PState, s: cstring)
-proc setglobal*(L: PState, s: cstring)
-proc getglobal*(L: PState, s: cstring)
-proc tostring*(L: PState, i: cint): cstring
-#
-#** compatibility macros and functions
-#
-
-proc getregistry*(L: PState)
-proc getgccount*(L: PState): cint
-type 
-  Chunkreader* = Reader
-  Chunkwriter* = Writer
-
-#
-#** ======================================================================
-#** Debug API
-#** ======================================================================
-#
-
-const 
-  HOOKCALL* = 0
-  HOOKRET* = 1
-  HOOKLINE* = 2
-  HOOKCOUNT* = 3
-  HOOKTAILRET* = 4
-
-const 
-  MASKCALL* = 1 shl Ord(HOOKCALL)
-  MASKRET* = 1 shl Ord(HOOKRET)
-  MASKLINE* = 1 shl Ord(HOOKLINE)
-  MASKCOUNT* = 1 shl Ord(HOOKCOUNT)
-
-const 
-  IDSIZE* = 60
-
-type 
-  TDebug*{.final.} = object    # activation record 
-    event*: cint
-    name*: cstring            # (n) 
-    namewhat*: cstring        # (n) `global', `local', `field', `method' 
-    what*: cstring            # (S) `Lua', `C', `main', `tail'
-    source*: cstring          # (S) 
-    currentline*: cint         # (l) 
-    nups*: cint                # (u) number of upvalues 
-    linedefined*: cint         # (S) 
-    lastlinedefined*: cint     # (S) 
-    short_src*: array[0.. <IDSIZE, Char] # (S) \ 
-                               # private part 
-    i_ci*: cint                # active function 
-  
-  PDebug* = ptr TDebug
-  Hook* = proc (L: PState, ar: PDebug){.cdecl.}
-
-#
-#** ======================================================================
-#** Debug API
-#** ======================================================================
-#
-
-{.push callConv: cdecl, dynlib: lua.LIB_NAME.}
-
-proc getstack*(L: PState, level: cint, ar: PDebug): cint{.ilua.}
-proc getinfo*(L: PState, what: cstring, ar: PDebug): cint{.ilua.}
-proc getlocal*(L: PState, ar: PDebug, n: cint): cstring{.ilua.}
-proc setlocal*(L: PState, ar: PDebug, n: cint): cstring{.ilua.}
-proc getupvalue*(L: PState, funcindex: cint, n: cint): cstring{.ilua.}
-proc setupvalue*(L: PState, funcindex: cint, n: cint): cstring{.ilua.}
-proc sethook*(L: PState, func: Hook, mask: cint, count: cint): cint{.ilua.}
-proc gethook*(L: PState): Hook{.ilua.}
-proc gethookmask*(L: PState): cint{.ilua.}
-proc gethookcount*(L: PState): cint{.ilua.}
-
-{.pop.}
-
-# implementation
-
-proc upvalueindex(I: cint): cint = 
-  Result = GLOBALSINDEX - i
-
-proc pop(L: PState, n: cint) = 
-  settop(L, - n - 1)
-
-proc newtable(L: PState) = 
-  createtable(L, 0, 0)
-
-proc register(L: PState, n: cstring, f: CFunction) = 
-  pushcfunction(L, f)
-  setglobal(L, n)
-
-proc pushcfunction(L: PState, f: CFunction) = 
-  pushcclosure(L, f, 0)
-
-proc strlen(L: PState, i: cint): cint = 
-  Result = objlen(L, i)
-
-proc isfunction(L: PState, n: cint): bool = 
-  Result = luatype(L, n) == TFUNCTION
-
-proc istable(L: PState, n: cint): bool = 
-  Result = luatype(L, n) == TTABLE
-
-proc islightuserdata(L: PState, n: cint): bool = 
-  Result = luatype(L, n) == TLIGHTUSERDATA
-
-proc isnil(L: PState, n: cint): bool = 
-  Result = luatype(L, n) == TNIL
-
-proc isboolean(L: PState, n: cint): bool = 
-  Result = luatype(L, n) == TBOOLEAN
-
-proc isthread(L: PState, n: cint): bool = 
-  Result = luatype(L, n) == TTHREAD
-
-proc isnone(L: PState, n: cint): bool = 
-  Result = luatype(L, n) == TNONE
-
-proc isnoneornil(L: PState, n: cint): bool = 
-  Result = luatype(L, n) <= 0
-
-proc pushliteral(L: PState, s: cstring) = 
-  pushlstring(L, s, s.len.cint)
-
-proc setglobal(L: PState, s: cstring) = 
-  setfield(L, GLOBALSINDEX, s)
-
-proc getglobal(L: PState, s: cstring) = 
-  getfield(L, GLOBALSINDEX, s)
-
-proc tostring(L: PState, i: cint): cstring = 
-  Result = tolstring(L, i, nil)
-
-proc getregistry(L: PState) = 
-  pushvalue(L, REGISTRYINDEX)
-
-proc getgccount(L: PState): cint = 
-  Result = gc(L, GCCOUNT, 0)
diff --git a/lib/wrappers/lua/lualib.nim b/lib/wrappers/lua/lualib.nim
deleted file mode 100644
index 8c1237dde..000000000
--- a/lib/wrappers/lua/lualib.nim
+++ /dev/null
@@ -1,64 +0,0 @@
-#*****************************************************************************
-# *                                                                            *
-# *  File:        lualib.pas                                                   *
-# *  Authors:     TeCGraf           (C headers + actual Lua libraries)         *
-# *               Lavergne Thomas   (original translation to Pascal)           *
-# *               Bram Kuijvenhoven (update to Lua 5.1.1 for FreePascal)       *
-# *  Description: Standard Lua libraries                                       *
-# *                                                                            *
-# *****************************************************************************
-#
-#** $Id: lualib.h,v 1.28 2003/03/18 12:24:26 roberto Exp $
-#** Lua standard libraries
-#** See Copyright Notice in lua.h
-#
-#
-#** Translated to pascal by Lavergne Thomas
-#** Bug reports :
-#**    - thomas.lavergne@laposte.net
-#**   In french or in english
-#
-
-import 
-  lua
-
-const 
-  COLIBNAME* = "coroutine"
-  TABLIBNAME* = "table"
-  IOLIBNAME* = "io"
-  OSLIBNAME* = "os"
-  STRLINAME* = "string"
-  MATHLIBNAME* = "math"
-  DBLIBNAME* = "debug"
-  LOADLIBNAME* = "package"
-
-{.pragma: ilua, importc: "lua$1".}
-
-{.push callConv: cdecl, dynlib: lua.LIB_NAME.}
-proc open_base*(L: PState): cint{.ilua.}
-proc open_table*(L: PState): cint{.ilua.}
-proc open_io*(L: PState): cint{.ilua.}
-proc open_string*(L: PState): cint{.ilua.}
-proc open_math*(L: PState): cint{.ilua.}
-proc open_debug*(L: PState): cint{.ilua.}
-proc open_package*(L: PState): cint{.ilua.}
-proc openlibs*(L: PState){.importc: "luaL_openlibs".}
-{.pop.}
-
-proc baselibopen*(L: PState): Bool = 
-  open_base(L) != 0'i32
-
-proc tablibopen*(L: PState): Bool = 
-  open_table(L) != 0'i32
-
-proc iolibopen*(L: PState): Bool = 
-  open_io(L) != 0'i32
-
-proc strlibopen*(L: PState): Bool = 
-  open_string(L) != 0'i32
-
-proc mathlibopen*(L: PState): Bool = 
-  open_math(L) != 0'i32
-
-proc dblibopen*(L: PState): Bool = 
-  open_debug(L) != 0'i32
diff --git a/lib/wrappers/python.nim b/lib/wrappers/python.nim
deleted file mode 100644
index 3e6543765..000000000
--- a/lib/wrappers/python.nim
+++ /dev/null
@@ -1,1587 +0,0 @@
-#
-#    Light-weight binding for the Python interpreter
-#       (c) 2010 Andreas Rumpf 
-#    Based on 'PythonEngine' module by Dr. Dietmar Budelsky
-#
-#
-#************************************************************************
-#                                                                        
-# Module:  Unit 'PythonEngine'     Copyright (c) 1997                    
-#                                                                        
-# Version: 3.0                     Dr. Dietmar Budelsky                  
-# Sub-Version: 0.25                dbudelsky@web.de                      
-#                                  Germany                               
-#                                                                        
-#                                  Morgan Martinet                       
-#                                  4721 rue Brebeuf                      
-#                                  H2J 3L2 MONTREAL (QC)                 
-#                                  CANADA                                
-#                                  e-mail: mmm@free.fr                   
-#                                                                        
-#  look our page at: http://www.multimania.com/marat                     
-#************************************************************************
-#  Functionality:  Delphi Components that provide an interface to the    
-#                  Python language (see python.txt for more infos on     
-#                  Python itself).                                       
-#                                                                        
-#************************************************************************
-#  Contributors:                                                         
-#      Grzegorz Makarewicz (mak@mikroplan.com.pl)                        
-#      Andrew Robinson (andy@hps1.demon.co.uk)                           
-#      Mark Watts(mark_watts@hotmail.com)                                
-#      Olivier Deckmyn (olivier.deckmyn@mail.dotcom.fr)                  
-#      Sigve Tjora (public@tjora.no)                                     
-#      Mark Derricutt (mark@talios.com)                                  
-#      Igor E. Poteryaev (jah@mail.ru)                                   
-#      Yuri Filimonov (fil65@mail.ru)                                    
-#      Stefan Hoffmeister (Stefan.Hoffmeister@Econos.de)                 
-#************************************************************************
-# This source code is distributed with no WARRANTY, for no reason or use.
-# Everyone is allowed to use and change this code free for his own tasks 
-# and projects, as long as this header and its copyright text is intact. 
-# For changed versions of this code, which are public distributed the    
-# following additional conditions have to be fullfilled:                 
-# 1) The header has to contain a comment on the change and the author of 
-#    it.                                                                 
-# 2) A copy of the changed source has to be sent to the above E-Mail     
-#    address or my then valid address, if this is possible to the        
-#    author.                                                             
-# The second condition has the target to maintain an up to date central  
-# version of the component. If this condition is not acceptable for      
-# confidential or legal reasons, everyone is free to derive a component  
-# or to generate a diff file to my or other original sources.            
-# Dr. Dietmar Budelsky, 1997-11-17                                       
-#************************************************************************
-
-{.deadCodeElim: on.}
-
-import 
-  dynlib
-
-
-when defined(windows): 
-  const dllname = "python(27|26|25|24|23|22|21|20|16|15).dll"
-elif defined(macosx):
-  const dllname = "libpython(2.7|2.6|2.5|2.4|2.3|2.2|2.1|2.0|1.6|1.5).dylib"
-else: 
-  const dllver = ".1"
-  const dllname = "libpython(2.7|2.6|2.5|2.4|2.3|2.2|2.1|2.0|1.6|1.5).so" & 
-                  dllver
-
-  
-const 
-  PYT_METHOD_BUFFER_INCREASE* = 10
-  PYT_MEMBER_BUFFER_INCREASE* = 10
-  PYT_GETSET_BUFFER_INCREASE* = 10
-  METH_VARARGS* = 0x0001
-  METH_KEYWORDS* = 0x0002 # Masks for the co_flags field of PyCodeObject
-  CO_OPTIMIZED* = 0x0001
-  CO_NEWLOCALS* = 0x0002
-  CO_VARARGS* = 0x0004
-  CO_VARKEYWORDS* = 0x0008
-
-type                          # Rich comparison opcodes introduced in version 2.1
-  TRichComparisonOpcode* = enum 
-    pyLT, pyLE, pyEQ, pyNE, pyGT, pyGE
-
-const
-  Py_TPFLAGS_HAVE_GETCHARBUFFER* = (1 shl 0) # PySequenceMethods contains sq_contains
-  Py_TPFLAGS_HAVE_SEQUENCE_IN* = (1 shl 1) # Objects which participate in garbage collection (see objimp.h)
-  Py_TPFLAGS_GC* = (1 shl 2)  # PySequenceMethods and PyNumberMethods contain in-place operators
-  Py_TPFLAGS_HAVE_INPLACEOPS* = (1 shl 3) # PyNumberMethods do their own coercion */
-  Py_TPFLAGS_CHECKTYPES* = (1 shl 4)
-  Py_TPFLAGS_HAVE_RICHCOMPARE* = (1 shl 5) # Objects which are weakly referencable if their tp_weaklistoffset is >0
-                                           # XXX Should this have the same value as Py_TPFLAGS_HAVE_RICHCOMPARE?
-                                           # These both indicate a feature that appeared in the same alpha release.
-  Py_TPFLAGS_HAVE_WEAKREFS* = (1 shl 6) # tp_iter is defined
-  Py_TPFLAGS_HAVE_ITER* = (1 shl 7) # New members introduced by Python 2.2 exist
-  Py_TPFLAGS_HAVE_CLASS* = (1 shl 8) # Set if the type object is dynamically allocated
-  Py_TPFLAGS_HEAPTYPE* = (1 shl 9) # Set if the type allows subclassing
-  Py_TPFLAGS_BASETYPE* = (1 shl 10) # Set if the type is 'ready' -- fully initialized
-  Py_TPFLAGS_READY* = (1 shl 12) # Set while the type is being 'readied', to prevent recursive ready calls
-  Py_TPFLAGS_READYING* = (1 shl 13) # Objects support garbage collection (see objimp.h)
-  Py_TPFLAGS_HAVE_GC* = (1 shl 14)
-  Py_TPFLAGS_DEFAULT* = Py_TPFLAGS_HAVE_GETCHARBUFFER or
-      Py_TPFLAGS_HAVE_SEQUENCE_IN or Py_TPFLAGS_HAVE_INPLACEOPS or
-      Py_TPFLAGS_HAVE_RICHCOMPARE or Py_TPFLAGS_HAVE_WEAKREFS or
-      Py_TPFLAGS_HAVE_ITER or Py_TPFLAGS_HAVE_CLASS 
-
-type 
-  TPFlag* = enum 
-    tpfHaveGetCharBuffer, tpfHaveSequenceIn, tpfGC, tpfHaveInplaceOps, 
-    tpfCheckTypes, tpfHaveRichCompare, tpfHaveWeakRefs, tpfHaveIter, 
-    tpfHaveClass, tpfHeapType, tpfBaseType, tpfReady, tpfReadying, tpfHaveGC
-  TPFlags* = set[TPFlag]
-
-const 
-  TPFLAGS_DEFAULT* = {tpfHaveGetCharBuffer, tpfHaveSequenceIn, 
-    tpfHaveInplaceOps, tpfHaveRichCompare, tpfHaveWeakRefs, tpfHaveIter, 
-    tpfHaveClass}
-
-const # Python opcodes
-  single_input* = 256 
-  file_input* = 257
-  eval_input* = 258
-  funcdef* = 259
-  parameters* = 260
-  varargslist* = 261
-  fpdef* = 262
-  fplist* = 263
-  stmt* = 264
-  simple_stmt* = 265
-  small_stmt* = 266
-  expr_stmt* = 267
-  augassign* = 268
-  print_stmt* = 269
-  del_stmt* = 270
-  pass_stmt* = 271
-  flow_stmt* = 272
-  break_stmt* = 273
-  continue_stmt* = 274
-  return_stmt* = 275
-  raise_stmt* = 276
-  import_stmt* = 277
-  import_as_name* = 278
-  dotted_as_name* = 279
-  dotted_name* = 280
-  global_stmt* = 281
-  exec_stmt* = 282
-  assert_stmt* = 283
-  compound_stmt* = 284
-  if_stmt* = 285
-  while_stmt* = 286
-  for_stmt* = 287
-  try_stmt* = 288
-  except_clause* = 289
-  suite* = 290
-  test* = 291
-  and_test* = 291
-  not_test* = 293
-  comparison* = 294
-  comp_op* = 295
-  expr* = 296
-  xor_expr* = 297
-  and_expr* = 298
-  shift_expr* = 299
-  arith_expr* = 300
-  term* = 301
-  factor* = 302
-  power* = 303
-  atom* = 304
-  listmaker* = 305
-  lambdef* = 306
-  trailer* = 307
-  subscriptlist* = 308
-  subscript* = 309
-  sliceop* = 310
-  exprlist* = 311
-  testlist* = 312
-  dictmaker* = 313
-  classdef* = 314
-  arglist* = 315
-  argument* = 316
-  list_iter* = 317
-  list_for* = 318
-  list_if* = 319
-
-const 
-  T_SHORT* = 0
-  T_INT* = 1
-  T_LONG* = 2
-  T_FLOAT* = 3
-  T_DOUBLE* = 4
-  T_STRING* = 5
-  T_OBJECT* = 6
-  T_CHAR* = 7                 # 1-character string
-  T_BYTE* = 8                 # 8-bit signed int
-  T_UBYTE* = 9
-  T_USHORT* = 10
-  T_UINT* = 11
-  T_ULONG* = 12
-  T_STRING_INPLACE* = 13
-  T_OBJECT_EX* = 16 
-  READONLY* = 1
-  RO* = READONLY              # Shorthand 
-  READ_RESTRICTED* = 2
-  WRITE_RESTRICTED* = 4
-  RESTRICTED* = (READ_RESTRICTED or WRITE_RESTRICTED)
-
-type 
-  TPyMemberType* = enum 
-    mtShort, mtInt, mtLong, mtFloat, mtDouble, mtString, mtObject, mtChar, 
-    mtByte, mtUByte, mtUShort, mtUInt, mtULong, mtStringInplace, mtObjectEx
-  TPyMemberFlag* = enum 
-    mfDefault, mfReadOnly, mfReadRestricted, mfWriteRestricted, mfRestricted
-
-type 
-  PInt* = ptr int
-
-#  PLong* = ptr int32
-#  PFloat* = ptr float32
-#  PShort* = ptr int8
-  
-type 
-  PP_frozen* = ptr Pfrozen
-  P_frozen* = ptr Tfrozen
-  PPyObject* = ptr TPyObject
-  PPPyObject* = ptr PPyObject
-  PPPPyObject* = ptr PPPyObject
-  PPyIntObject* = ptr TPyIntObject
-  PPyTypeObject* = ptr TPyTypeObject
-  PPySliceObject* = ptr TPySliceObject
-  TPyCFunction* = proc (self, args: PPyObject): PPyObject{.cdecl.}
-  Tunaryfunc* = proc (ob1: PPyObject): PPyObject{.cdecl.}
-  Tbinaryfunc* = proc (ob1, ob2: PPyObject): PPyObject{.cdecl.}
-  Tternaryfunc* = proc (ob1, ob2, ob3: PPyObject): PPyObject{.cdecl.}
-  Tinquiry* = proc (ob1: PPyObject): int{.cdecl.}
-  Tcoercion* = proc (ob1, ob2: PPPyObject): int{.cdecl.}
-  Tintargfunc* = proc (ob1: PPyObject, i: int): PPyObject{.cdecl.}
-  Tintintargfunc* = proc (ob1: PPyObject, i1, i2: int): PPyObject{.cdecl.}
-  Tintobjargproc* = proc (ob1: PPyObject, i: int, ob2: PPyObject): int{.cdecl.}
-  Tintintobjargproc* = proc (ob1: PPyObject, i1, i2: int, ob2: PPyObject): int{.
-      cdecl.}
-  Tobjobjargproc* = proc (ob1, ob2, ob3: PPyObject): int{.cdecl.}
-  Tpydestructor* = proc (ob: PPyObject){.cdecl.}
-  Tprintfunc* = proc (ob: PPyObject, f: TFile, i: int): int{.cdecl.}
-  Tgetattrfunc* = proc (ob1: PPyObject, name: cstring): PPyObject{.cdecl.}
-  Tsetattrfunc* = proc (ob1: PPyObject, name: cstring, ob2: PPyObject): int{.
-      cdecl.}
-  Tcmpfunc* = proc (ob1, ob2: PPyObject): int{.cdecl.}
-  Treprfunc* = proc (ob: PPyObject): PPyObject{.cdecl.}
-  Thashfunc* = proc (ob: PPyObject): int32{.cdecl.}
-  Tgetattrofunc* = proc (ob1, ob2: PPyObject): PPyObject{.cdecl.}
-  Tsetattrofunc* = proc (ob1, ob2, ob3: PPyObject): int{.cdecl.} 
-  Tgetreadbufferproc* = proc (ob1: PPyObject, i: int, p: Pointer): int{.cdecl.}
-  Tgetwritebufferproc* = proc (ob1: PPyObject, i: int, p: Pointer): int{.cdecl.}
-  Tgetsegcountproc* = proc (ob1: PPyObject, i: int): int{.cdecl.}
-  Tgetcharbufferproc* = proc (ob1: PPyObject, i: int, pstr: cstring): int{.cdecl.}
-  Tobjobjproc* = proc (ob1, ob2: PPyObject): int{.cdecl.}
-  Tvisitproc* = proc (ob1: PPyObject, p: Pointer): int{.cdecl.}
-  Ttraverseproc* = proc (ob1: PPyObject, prc: TVisitproc, p: Pointer): int{.
-      cdecl.}
-  Trichcmpfunc* = proc (ob1, ob2: PPyObject, i: int): PPyObject{.cdecl.}
-  Tgetiterfunc* = proc (ob1: PPyObject): PPyObject{.cdecl.}
-  Titernextfunc* = proc (ob1: PPyObject): PPyObject{.cdecl.}
-  Tdescrgetfunc* = proc (ob1, ob2, ob3: PPyObject): PPyObject{.cdecl.}
-  Tdescrsetfunc* = proc (ob1, ob2, ob3: PPyObject): int{.cdecl.}
-  Tinitproc* = proc (self, args, kwds: PPyObject): int{.cdecl.}
-  Tnewfunc* = proc (subtype: PPyTypeObject, args, kwds: PPyObject): PPyObject{.
-      cdecl.}
-  Tallocfunc* = proc (self: PPyTypeObject, nitems: int): PPyObject{.cdecl.}
-  TPyNumberMethods*{.final.} = object 
-    nb_add*: Tbinaryfunc
-    nb_substract*: Tbinaryfunc
-    nb_multiply*: Tbinaryfunc
-    nb_divide*: Tbinaryfunc
-    nb_remainder*: Tbinaryfunc
-    nb_divmod*: Tbinaryfunc
-    nb_power*: Tternaryfunc
-    nb_negative*: Tunaryfunc
-    nb_positive*: Tunaryfunc
-    nb_absolute*: Tunaryfunc
-    nb_nonzero*: Tinquiry
-    nb_invert*: Tunaryfunc
-    nb_lshift*: Tbinaryfunc
-    nb_rshift*: Tbinaryfunc
-    nb_and*: Tbinaryfunc
-    nb_xor*: Tbinaryfunc
-    nb_or*: Tbinaryfunc
-    nb_coerce*: Tcoercion
-    nb_int*: Tunaryfunc
-    nb_long*: Tunaryfunc
-    nb_float*: Tunaryfunc
-    nb_oct*: Tunaryfunc
-    nb_hex*: Tunaryfunc       #/ jah 29-sep-2000: updated for python 2.0
-                              #/                   added from .h
-    nb_inplace_add*: Tbinaryfunc
-    nb_inplace_subtract*: Tbinaryfunc
-    nb_inplace_multiply*: Tbinaryfunc
-    nb_inplace_divide*: Tbinaryfunc
-    nb_inplace_remainder*: Tbinaryfunc
-    nb_inplace_power*: Tternaryfunc
-    nb_inplace_lshift*: Tbinaryfunc
-    nb_inplace_rshift*: Tbinaryfunc
-    nb_inplace_and*: Tbinaryfunc
-    nb_inplace_xor*: Tbinaryfunc
-    nb_inplace_or*: Tbinaryfunc # Added in release 2.2
-                                # The following require the Py_TPFLAGS_HAVE_CLASS flag
-    nb_floor_divide*: Tbinaryfunc
-    nb_true_divide*: Tbinaryfunc
-    nb_inplace_floor_divide*: Tbinaryfunc
-    nb_inplace_true_divide*: Tbinaryfunc
-
-  PPyNumberMethods* = ptr TPyNumberMethods
-  TPySequenceMethods*{.final.} = object 
-    sq_length*: Tinquiry
-    sq_concat*: Tbinaryfunc
-    sq_repeat*: Tintargfunc
-    sq_item*: Tintargfunc
-    sq_slice*: Tintintargfunc
-    sq_ass_item*: Tintobjargproc
-    sq_ass_slice*: Tintintobjargproc 
-    sq_contains*: Tobjobjproc
-    sq_inplace_concat*: Tbinaryfunc
-    sq_inplace_repeat*: Tintargfunc
-
-  PPySequenceMethods* = ptr TPySequenceMethods
-  TPyMappingMethods*{.final.} = object 
-    mp_length*: Tinquiry
-    mp_subscript*: Tbinaryfunc
-    mp_ass_subscript*: Tobjobjargproc
-
-  PPyMappingMethods* = ptr TPyMappingMethods 
-  TPyBufferProcs*{.final.} = object 
-    bf_getreadbuffer*: Tgetreadbufferproc
-    bf_getwritebuffer*: Tgetwritebufferproc
-    bf_getsegcount*: Tgetsegcountproc
-    bf_getcharbuffer*: Tgetcharbufferproc
-
-  PPyBufferProcs* = ptr TPyBufferProcs
-  TPy_complex*{.final.} = object 
-    float*: float64
-    imag*: float64
-
-  TPyObject*{.pure, inheritable.} = object 
-    ob_refcnt*: int
-    ob_type*: PPyTypeObject
-
-  TPyIntObject* = object of TPyObject
-    ob_ival*: int32
-
-  PByte* = ptr int8
-  Tfrozen*{.final.} = object 
-    name*: cstring
-    code*: PByte
-    size*: int
-
-  TPySliceObject* = object of TPyObject
-    start*, stop*, step*: PPyObject
-
-  PPyMethodDef* = ptr TPyMethodDef
-  TPyMethodDef*{.final.} = object  # structmember.h
-    ml_name*: cstring
-    ml_meth*: TPyCFunction
-    ml_flags*: int
-    ml_doc*: cstring
-
-  PPyMemberDef* = ptr TPyMemberDef
-  TPyMemberDef*{.final.} = object  # descrobject.h
-                                   # Descriptors
-    name*: cstring
-    theType*: int
-    offset*: int
-    flags*: int
-    doc*: cstring
-
-  Tgetter* = proc (obj: PPyObject, context: Pointer): PPyObject{.cdecl.}
-  Tsetter* = proc (obj, value: PPyObject, context: Pointer): int{.cdecl.}
-  PPyGetSetDef* = ptr TPyGetSetDef
-  TPyGetSetDef*{.final.} = object 
-    name*: cstring
-    get*: Tgetter
-    setter*: Tsetter
-    doc*: cstring
-    closure*: Pointer
-
-  Twrapperfunc* = proc (self, args: PPyObject, wrapped: Pointer): PPyObject{.
-      cdecl.}
-  pwrapperbase* = ptr Twrapperbase
-  Twrapperbase*{.final.} = object  # Various kinds of descriptor objects
-                                   ##define PyDescr_COMMON \
-                                   #          PyObject_HEAD \
-                                   #          PyTypeObject *d_type; \
-                                   #          PyObject *d_name
-                                   #  
-    name*: cstring
-    wrapper*: Twrapperfunc
-    doc*: cstring
-
-  PPyDescrObject* = ptr TPyDescrObject
-  TPyDescrObject* = object of TPyObject
-    d_type*: PPyTypeObject
-    d_name*: PPyObject
-
-  PPyMethodDescrObject* = ptr TPyMethodDescrObject
-  TPyMethodDescrObject* = object of TPyDescrObject
-    d_method*: PPyMethodDef
-
-  PPyMemberDescrObject* = ptr TPyMemberDescrObject
-  TPyMemberDescrObject* = object of TPyDescrObject
-    d_member*: PPyMemberDef
-
-  PPyGetSetDescrObject* = ptr TPyGetSetDescrObject
-  TPyGetSetDescrObject* = object of TPyDescrObject
-    d_getset*: PPyGetSetDef
-
-  PPyWrapperDescrObject* = ptr TPyWrapperDescrObject
-  TPyWrapperDescrObject* = object of TPyDescrObject # object.h
-    d_base*: pwrapperbase
-    d_wrapped*: Pointer       # This can be any function pointer
-  
-  TPyTypeObject* = object of TPyObject
-    ob_size*: int             # Number of items in variable part
-    tp_name*: cstring         # For printing
-    tp_basicsize*, tp_itemsize*: int # For allocation
-                                     # Methods to implement standard operations
-    tp_dealloc*: Tpydestructor
-    tp_print*: Tprintfunc
-    tp_getattr*: Tgetattrfunc
-    tp_setattr*: Tsetattrfunc
-    tp_compare*: Tcmpfunc
-    tp_repr*: Treprfunc       # Method suites for standard classes
-    tp_as_number*: PPyNumberMethods
-    tp_as_sequence*: PPySequenceMethods
-    tp_as_mapping*: PPyMappingMethods # More standard operations (here for binary compatibility)
-    tp_hash*: Thashfunc
-    tp_call*: Tternaryfunc
-    tp_str*: Treprfunc
-    tp_getattro*: Tgetattrofunc
-    tp_setattro*: Tsetattrofunc #/ jah 29-sep-2000: updated for python 2.0
-                                # Functions to access object as input/output buffer
-    tp_as_buffer*: PPyBufferProcs # Flags to define presence of optional/expanded features
-    tp_flags*: int32
-    tp_doc*: cstring          # Documentation string
-                              # call function for all accessible objects
-    tp_traverse*: Ttraverseproc # delete references to contained objects
-    tp_clear*: Tinquiry       # rich comparisons
-    tp_richcompare*: Trichcmpfunc # weak reference enabler
-    tp_weaklistoffset*: int32 # Iterators
-    tp_iter*: Tgetiterfunc
-    tp_iternext*: Titernextfunc # Attribute descriptor and subclassing stuff
-    tp_methods*: PPyMethodDef
-    tp_members*: PPyMemberDef
-    tp_getset*: PPyGetSetDef
-    tp_base*: PPyTypeObject
-    tp_dict*: PPyObject
-    tp_descr_get*: Tdescrgetfunc
-    tp_descr_set*: Tdescrsetfunc
-    tp_dictoffset*: int32
-    tp_init*: Tinitproc
-    tp_alloc*: Tallocfunc
-    tp_new*: Tnewfunc
-    tp_free*: Tpydestructor   # Low-level free-memory routine
-    tp_is_gc*: Tinquiry       # For PyObject_IS_GC
-    tp_bases*: PPyObject
-    tp_mro*: PPyObject        # method resolution order
-    tp_cache*: PPyObject
-    tp_subclasses*: PPyObject
-    tp_weaklist*: PPyObject   #More spares
-    tp_xxx7*: pointer
-    tp_xxx8*: pointer
-
-  PPyMethodChain* = ptr TPyMethodChain
-  TPyMethodChain*{.final.} = object 
-    methods*: PPyMethodDef
-    link*: PPyMethodChain
-
-  PPyClassObject* = ptr TPyClassObject
-  TPyClassObject* = object of TPyObject
-    cl_bases*: PPyObject      # A tuple of class objects
-    cl_dict*: PPyObject       # A dictionary
-    cl_name*: PPyObject       # A string
-                              # The following three are functions or NULL
-    cl_getattr*: PPyObject
-    cl_setattr*: PPyObject
-    cl_delattr*: PPyObject
-
-  PPyInstanceObject* = ptr TPyInstanceObject
-  TPyInstanceObject* = object of TPyObject 
-    in_class*: PPyClassObject # The class object
-    in_dict*: PPyObject       # A dictionary
-  
-  PPyMethodObject* = ptr TPyMethodObject
-  TPyMethodObject* = object of TPyObject # Bytecode object, compile.h
-    im_func*: PPyObject       # The function implementing the method
-    im_self*: PPyObject       # The instance it is bound to, or NULL
-    im_class*: PPyObject      # The class that defined the method
-  
-  PPyCodeObject* = ptr TPyCodeObject
-  TPyCodeObject* = object of TPyObject # from pystate.h
-    co_argcount*: int         # #arguments, except *args
-    co_nlocals*: int          # #local variables
-    co_stacksize*: int        # #entries needed for evaluation stack
-    co_flags*: int            # CO_..., see below
-    co_code*: PPyObject       # instruction opcodes (it hides a PyStringObject)
-    co_consts*: PPyObject     # list (constants used)
-    co_names*: PPyObject      # list of strings (names used)
-    co_varnames*: PPyObject   # tuple of strings (local variable names)
-    co_freevars*: PPyObject   # tuple of strings (free variable names)
-    co_cellvars*: PPyObject   # tuple of strings (cell variable names)
-                              # The rest doesn't count for hash/cmp
-    co_filename*: PPyObject   # string (where it was loaded from)
-    co_name*: PPyObject       # string (name, for reference)
-    co_firstlineno*: int      # first source line number
-    co_lnotab*: PPyObject     # string (encoding addr<->lineno mapping)
-  
-  PPyInterpreterState* = ptr TPyInterpreterState
-  PPyThreadState* = ptr TPyThreadState
-  PPyFrameObject* = ptr TPyFrameObject # Interpreter environments
-  TPyInterpreterState*{.final.} = object  # Thread specific information
-    next*: PPyInterpreterState
-    tstate_head*: PPyThreadState
-    modules*: PPyObject
-    sysdict*: PPyObject
-    builtins*: PPyObject
-    checkinterval*: int
-
-  TPyThreadState*{.final.} = object  # from frameobject.h
-    next*: PPyThreadState
-    interp*: PPyInterpreterState
-    frame*: PPyFrameObject
-    recursion_depth*: int
-    ticker*: int
-    tracing*: int
-    sys_profilefunc*: PPyObject
-    sys_tracefunc*: PPyObject
-    curexc_type*: PPyObject
-    curexc_value*: PPyObject
-    curexc_traceback*: PPyObject
-    exc_type*: PPyObject
-    exc_value*: PPyObject
-    exc_traceback*: PPyObject
-    dict*: PPyObject
-
-  PPyTryBlock* = ptr TPyTryBlock
-  TPyTryBlock*{.final.} = object 
-    b_type*: int              # what kind of block this is
-    b_handler*: int           # where to jump to find handler
-    b_level*: int             # value stack level to pop to
-  
-  CO_MAXBLOCKS* = range[0..19]
-  TPyFrameObject* = object of TPyObject # start of the VAR_HEAD of an object
-                                        # From traceback.c
-    ob_size*: int             # Number of items in variable part
-                              # End of the Head of an object
-    f_back*: PPyFrameObject   # previous frame, or NULL
-    f_code*: PPyCodeObject    # code segment
-    f_builtins*: PPyObject    # builtin symbol table (PyDictObject)
-    f_globals*: PPyObject     # global symbol table (PyDictObject)
-    f_locals*: PPyObject      # local symbol table (PyDictObject)
-    f_valuestack*: PPPyObject # points after the last local
-                              # Next free slot in f_valuestack. Frame creation sets to f_valuestack.
-                              # Frame evaluation usually NULLs it, but a frame that yields sets it
-                              # to the current stack top. 
-    f_stacktop*: PPPyObject
-    f_trace*: PPyObject       # Trace function
-    f_exc_type*, f_exc_value*, f_exc_traceback*: PPyObject
-    f_tstate*: PPyThreadState
-    f_lasti*: int             # Last instruction if called
-    f_lineno*: int            # Current line number
-    f_restricted*: int        # Flag set if restricted operations
-                              # in this scope
-    f_iblock*: int            # index in f_blockstack
-    f_blockstack*: array[CO_MAXBLOCKS, TPyTryBlock] # for try and loop blocks
-    f_nlocals*: int           # number of locals
-    f_ncells*: int
-    f_nfreevars*: int
-    f_stacksize*: int         # size of value stack
-    f_localsplus*: array[0..0, PPyObject] # locals+stack, dynamically sized
-  
-  PPyTraceBackObject* = ptr TPyTraceBackObject
-  TPyTraceBackObject* = object of TPyObject # Parse tree node interface
-    tb_next*: PPyTraceBackObject
-    tb_frame*: PPyFrameObject
-    tb_lasti*: int
-    tb_lineno*: int
-
-  PNode* = ptr Tnode
-  Tnode*{.final.} = object    # From weakrefobject.h
-    n_type*: int16
-    n_str*: cstring
-    n_lineno*: int16
-    n_nchildren*: int16
-    n_child*: PNode
-
-  PPyWeakReference* = ptr TPyWeakReference
-  TPyWeakReference* = object of TPyObject 
-    wr_object*: PPyObject
-    wr_callback*: PPyObject
-    hash*: int32
-    wr_prev*: PPyWeakReference
-    wr_next*: PPyWeakReference
-
-
-const                         
-  PyDateTime_DATE_DATASIZE* = 4 # # of bytes for year, month, and day
-  PyDateTime_TIME_DATASIZE* = 6 # # of bytes for hour, minute, second, and usecond
-  PyDateTime_DATETIME_DATASIZE* = 10 # # of bytes for year, month, 
-                                     # day, hour, minute, second, and usecond. 
-
-type 
-  TPyDateTime_Delta* = object of TPyObject
-    hashcode*: int            # -1 when unknown
-    days*: int                # -MAX_DELTA_DAYS <= days <= MAX_DELTA_DAYS
-    seconds*: int             # 0 <= seconds < 24*3600 is invariant
-    microseconds*: int        # 0 <= microseconds < 1000000 is invariant
-  
-  PPyDateTime_Delta* = ptr TPyDateTime_Delta
-  TPyDateTime_TZInfo* = object of TPyObject # a pure abstract base clase
-  PPyDateTime_TZInfo* = ptr TPyDateTime_TZInfo 
-  TPyDateTime_BaseTZInfo* = object of TPyObject
-    hashcode*: int
-    hastzinfo*: bool          # boolean flag
-  
-  PPyDateTime_BaseTZInfo* = ptr TPyDateTime_BaseTZInfo 
-  TPyDateTime_BaseTime* = object of TPyDateTime_BaseTZInfo
-    data*: array[0..Pred(PyDateTime_TIME_DATASIZE), int8]
-
-  PPyDateTime_BaseTime* = ptr TPyDateTime_BaseTime
-  TPyDateTime_Time* = object of TPyDateTime_BaseTime # hastzinfo true
-    tzinfo*: PPyObject
-
-  PPyDateTime_Time* = ptr TPyDateTime_Time 
-  TPyDateTime_Date* = object of TPyDateTime_BaseTZInfo
-    data*: array[0..Pred(PyDateTime_DATE_DATASIZE), int8]
-
-  PPyDateTime_Date* = ptr TPyDateTime_Date 
-  TPyDateTime_BaseDateTime* = object of TPyDateTime_BaseTZInfo
-    data*: array[0..Pred(PyDateTime_DATETIME_DATASIZE), int8]
-
-  PPyDateTime_BaseDateTime* = ptr TPyDateTime_BaseDateTime
-  TPyDateTime_DateTime* = object of TPyDateTime_BaseTZInfo
-    data*: array[0..Pred(PyDateTime_DATETIME_DATASIZE), int8]
-    tzinfo*: PPyObject
-
-  PPyDateTime_DateTime* = ptr TPyDateTime_DateTime 
-
-#----------------------------------------------------#
-#                                                    #
-#         New exception classes                      #
-#                                                    #
-#----------------------------------------------------#
-
-#
-#  // Python's exceptions
-#  EPythonError   = object(Exception)
-#      EName: String;
-#      EValue: String;
-#  end;
-#  EPyExecError   = object(EPythonError)
-#  end;
-#
-#  // Standard exception classes of Python
-#
-#/// jah 29-sep-2000: updated for python 2.0
-#///                   base classes updated according python documentation
-#
-#{ Hierarchy of Python exceptions, Python 2.3, copied from <INSTALL>\Python\exceptions.c
-#
-#Exception\n\
-# |\n\
-# +-- SystemExit\n\
-# +-- StopIteration\n\
-# +-- StandardError\n\
-# |    |\n\
-# |    +-- KeyboardInterrupt\n\
-# |    +-- ImportError\n\
-# |    +-- EnvironmentError\n\
-# |    |    |\n\
-# |    |    +-- IOError\n\
-# |    |    +-- OSError\n\
-# |    |         |\n\
-# |    |         +-- WindowsError\n\
-# |    |         +-- VMSError\n\
-# |    |\n\
-# |    +-- EOFError\n\
-# |    +-- RuntimeError\n\
-# |    |    |\n\
-# |    |    +-- NotImplementedError\n\
-# |    |\n\
-# |    +-- NameError\n\
-# |    |    |\n\
-# |    |    +-- UnboundLocalError\n\
-# |    |\n\
-# |    +-- AttributeError\n\
-# |    +-- SyntaxError\n\
-# |    |    |\n\
-# |    |    +-- IndentationError\n\
-# |    |         |\n\
-# |    |         +-- TabError\n\
-# |    |\n\
-# |    +-- TypeError\n\
-# |    +-- AssertionError\n\
-# |    +-- LookupError\n\
-# |    |    |\n\
-# |    |    +-- IndexError\n\
-# |    |    +-- KeyError\n\
-# |    |\n\
-# |    +-- ArithmeticError\n\
-# |    |    |\n\
-# |    |    +-- OverflowError\n\
-# |    |    +-- ZeroDivisionError\n\
-# |    |    +-- FloatingPointError\n\
-# |    |\n\
-# |    +-- ValueError\n\
-# |    |    |\n\
-# |    |    +-- UnicodeError\n\
-# |    |        |\n\
-# |    |        +-- UnicodeEncodeError\n\
-# |    |        +-- UnicodeDecodeError\n\
-# |    |        +-- UnicodeTranslateError\n\
-# |    |\n\
-# |    +-- ReferenceError\n\
-# |    +-- SystemError\n\
-# |    +-- MemoryError\n\
-# |\n\
-# +---Warning\n\
-#      |\n\
-#      +-- UserWarning\n\
-#      +-- DeprecationWarning\n\
-#      +-- PendingDeprecationWarning\n\
-#      +-- SyntaxWarning\n\
-#      +-- OverflowWarning\n\
-#      +-- RuntimeWarning\n\
-#      +-- FutureWarning"
-#}
-#   EPyException = class (EPythonError);
-#   EPyStandardError = class (EPyException);
-#   EPyArithmeticError = class (EPyStandardError);
-#   EPyLookupError = class (EPyStandardError);
-#   EPyAssertionError = class (EPyStandardError);
-#   EPyAttributeError = class (EPyStandardError);
-#   EPyEOFError = class (EPyStandardError);
-#   EPyFloatingPointError = class (EPyArithmeticError);
-#   EPyEnvironmentError = class (EPyStandardError);
-#   EPyIOError = class (EPyEnvironmentError);
-#   EPyOSError = class (EPyEnvironmentError);
-#   EPyImportError = class (EPyStandardError);
-#   EPyIndexError = class (EPyLookupError);
-#   EPyKeyError = class (EPyLookupError);
-#   EPyKeyboardInterrupt = class (EPyStandardError);
-#   EPyMemoryError = class (EPyStandardError);
-#   EPyNameError = class (EPyStandardError);
-#   EPyOverflowError = class (EPyArithmeticError);
-#   EPyRuntimeError = class (EPyStandardError);
-#   EPyNotImplementedError = class (EPyRuntimeError);
-#   EPySyntaxError = class (EPyStandardError)
-#   public
-#      EFileName: string;
-#      ELineStr: string;
-#      ELineNumber: Integer;
-#      EOffset: Integer;
-#   end;
-#   EPyIndentationError = class (EPySyntaxError);
-#   EPyTabError = class (EPyIndentationError);
-#   EPySystemError = class (EPyStandardError);
-#   EPySystemExit = class (EPyException);
-#   EPyTypeError = class (EPyStandardError);
-#   EPyUnboundLocalError = class (EPyNameError);
-#   EPyValueError = class (EPyStandardError);
-#   EPyUnicodeError = class (EPyValueError);
-#   UnicodeEncodeError = class (EPyUnicodeError);
-#   UnicodeDecodeError = class (EPyUnicodeError);
-#   UnicodeTranslateError = class (EPyUnicodeError);
-#   EPyZeroDivisionError = class (EPyArithmeticError);
-#   EPyStopIteration = class(EPyException);
-#   EPyWarning = class (EPyException);
-#   EPyUserWarning = class (EPyWarning);
-#   EPyDeprecationWarning = class (EPyWarning);
-#   PendingDeprecationWarning = class (EPyWarning);
-#   FutureWarning = class (EPyWarning);
-#   EPySyntaxWarning = class (EPyWarning);
-#   EPyOverflowWarning = class (EPyWarning);
-#   EPyRuntimeWarning = class (EPyWarning);
-#   EPyReferenceError = class (EPyStandardError);
-#
-
-var 
-  PyArg_Parse*: proc (args: PPyObject, format: cstring): int{.cdecl, varargs.} 
-  PyArg_ParseTuple*: proc (args: PPyObject, format: cstring, x1: Pointer = nil, 
-                           x2: Pointer = nil, x3: Pointer = nil): int{.cdecl, varargs.} 
-  Py_BuildValue*: proc (format: cstring): PPyObject{.cdecl, varargs.} 
-  PyCode_Addr2Line*: proc (co: PPyCodeObject, addrq: int): int{.cdecl.}
-  DLL_Py_GetBuildInfo*: proc (): cstring{.cdecl.}
-
-var
-  Py_DebugFlag*: PInt
-  Py_VerboseFlag*: PInt
-  Py_InteractiveFlag*: PInt
-  Py_OptimizeFlag*: PInt
-  Py_NoSiteFlag*: PInt
-  Py_UseClassExceptionsFlag*: PInt
-  Py_FrozenFlag*: PInt
-  Py_TabcheckFlag*: PInt
-  Py_UnicodeFlag*: PInt
-  Py_IgnoreEnvironmentFlag*: PInt
-  Py_DivisionWarningFlag*: PInt 
-  #_PySys_TraceFunc:    PPPyObject;
-  #_PySys_ProfileFunc: PPPPyObject;
-  PyImport_FrozenModules*: PP_frozen
-  Py_None*: PPyObject
-  Py_Ellipsis*: PPyObject
-  Py_False*: PPyIntObject
-  Py_True*: PPyIntObject
-  Py_NotImplemented*: PPyObject
-  PyExc_AttributeError*: PPPyObject
-  PyExc_EOFError*: PPPyObject
-  PyExc_IOError*: PPPyObject
-  PyExc_ImportError*: PPPyObject
-  PyExc_IndexError*: PPPyObject
-  PyExc_KeyError*: PPPyObject
-  PyExc_KeyboardInterrupt*: PPPyObject
-  PyExc_MemoryError*: PPPyObject
-  PyExc_NameError*: PPPyObject
-  PyExc_OverflowError*: PPPyObject
-  PyExc_RuntimeError*: PPPyObject
-  PyExc_SyntaxError*: PPPyObject
-  PyExc_SystemError*: PPPyObject
-  PyExc_SystemExit*: PPPyObject
-  PyExc_TypeError*: PPPyObject
-  PyExc_ValueError*: PPPyObject
-  PyExc_ZeroDivisionError*: PPPyObject
-  PyExc_ArithmeticError*: PPPyObject
-  PyExc_Exception*: PPPyObject
-  PyExc_FloatingPointError*: PPPyObject
-  PyExc_LookupError*: PPPyObject
-  PyExc_StandardError*: PPPyObject
-  PyExc_AssertionError*: PPPyObject
-  PyExc_EnvironmentError*: PPPyObject
-  PyExc_IndentationError*: PPPyObject
-  PyExc_MemoryErrorInst*: PPPyObject
-  PyExc_NotImplementedError*: PPPyObject
-  PyExc_OSError*: PPPyObject
-  PyExc_TabError*: PPPyObject
-  PyExc_UnboundLocalError*: PPPyObject
-  PyExc_UnicodeError*: PPPyObject
-  PyExc_Warning*: PPPyObject
-  PyExc_DeprecationWarning*: PPPyObject
-  PyExc_RuntimeWarning*: PPPyObject
-  PyExc_SyntaxWarning*: PPPyObject
-  PyExc_UserWarning*: PPPyObject
-  PyExc_OverflowWarning*: PPPyObject
-  PyExc_ReferenceError*: PPPyObject
-  PyExc_StopIteration*: PPPyObject
-  PyExc_FutureWarning*: PPPyObject
-  PyExc_PendingDeprecationWarning*: PPPyObject
-  PyExc_UnicodeDecodeError*: PPPyObject
-  PyExc_UnicodeEncodeError*: PPPyObject
-  PyExc_UnicodeTranslateError*: PPPyObject
-  PyType_Type*: PPyTypeObject
-  PyCFunction_Type*: PPyTypeObject
-  PyCObject_Type*: PPyTypeObject
-  PyClass_Type*: PPyTypeObject
-  PyCode_Type*: PPyTypeObject
-  PyComplex_Type*: PPyTypeObject
-  PyDict_Type*: PPyTypeObject
-  PyFile_Type*: PPyTypeObject
-  PyFloat_Type*: PPyTypeObject
-  PyFrame_Type*: PPyTypeObject
-  PyFunction_Type*: PPyTypeObject
-  PyInstance_Type*: PPyTypeObject
-  PyInt_Type*: PPyTypeObject
-  PyList_Type*: PPyTypeObject
-  PyLong_Type*: PPyTypeObject
-  PyMethod_Type*: PPyTypeObject
-  PyModule_Type*: PPyTypeObject
-  PyObject_Type*: PPyTypeObject
-  PyRange_Type*: PPyTypeObject
-  PySlice_Type*: PPyTypeObject
-  PyString_Type*: PPyTypeObject
-  PyTuple_Type*: PPyTypeObject
-  PyBaseObject_Type*: PPyTypeObject
-  PyBuffer_Type*: PPyTypeObject
-  PyCallIter_Type*: PPyTypeObject
-  PyCell_Type*: PPyTypeObject
-  PyClassMethod_Type*: PPyTypeObject
-  PyProperty_Type*: PPyTypeObject
-  PySeqIter_Type*: PPyTypeObject
-  PyStaticMethod_Type*: PPyTypeObject
-  PySuper_Type*: PPyTypeObject
-  PySymtableEntry_Type*: PPyTypeObject
-  PyTraceBack_Type*: PPyTypeObject
-  PyUnicode_Type*: PPyTypeObject
-  PyWrapperDescr_Type*: PPyTypeObject
-  PyBaseString_Type*: PPyTypeObject
-  PyBool_Type*: PPyTypeObject
-  PyEnum_Type*: PPyTypeObject
-
-  #PyArg_GetObject: proc(args: PPyObject; nargs, i: integer; p_a: PPPyObject): integer; cdecl;
-  #PyArg_GetLong: proc(args: PPyObject; nargs, i: integer; p_a: PLong): integer; cdecl;
-  #PyArg_GetShort: proc(args: PPyObject; nargs, i: integer; p_a: PShort): integer; cdecl;
-  #PyArg_GetFloat: proc(args: PPyObject; nargs, i: integer; p_a: PFloat): integer; cdecl;
-  #PyArg_GetString: proc(args: PPyObject; nargs, i: integer; p_a: PString): integer; cdecl;
-  #PyArgs_VaParse:  proc (args: PPyObject; format: PChar; 
-  #                          va_list: array of const): integer; cdecl;
-  # Does not work!
-  # Py_VaBuildValue: proc (format: PChar; va_list: array of const): PPyObject; cdecl;
-  #PyBuiltin_Init: proc; cdecl;
-proc PyComplex_FromCComplex*(c: TPy_complex): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyComplex_FromDoubles*(realv, imag: float64): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyComplex_RealAsDouble*(op: PPyObject): float64{.cdecl, importc, dynlib: dllname.}
-proc PyComplex_ImagAsDouble*(op: PPyObject): float64{.cdecl, importc, dynlib: dllname.}
-proc PyComplex_AsCComplex*(op: PPyObject): TPy_complex{.cdecl, importc, dynlib: dllname.}
-proc PyCFunction_GetFunction*(ob: PPyObject): Pointer{.cdecl, importc, dynlib: dllname.}
-proc PyCFunction_GetSelf*(ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyCallable_Check*(ob: PPyObject): int{.cdecl, importc, dynlib: dllname.}
-proc PyCObject_FromVoidPtr*(cobj, destruct: Pointer): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyCObject_AsVoidPtr*(ob: PPyObject): Pointer{.cdecl, importc, dynlib: dllname.}
-proc PyClass_New*(ob1, ob2, ob3: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyClass_IsSubclass*(ob1, ob2: PPyObject): int{.cdecl, importc, dynlib: dllname.}
-proc Py_InitModule4*(name: cstring, methods: PPyMethodDef, doc: cstring, 
-                         passthrough: PPyObject, Api_Version: int): PPyObject{.
-      cdecl, importc, dynlib: dllname.}
-proc PyErr_BadArgument*(): int{.cdecl, importc, dynlib: dllname.}
-proc PyErr_BadInternalCall*(){.cdecl, importc, dynlib: dllname.}
-proc PyErr_CheckSignals*(): int{.cdecl, importc, dynlib: dllname.}
-proc PyErr_Clear*(){.cdecl, importc, dynlib: dllname.}
-proc PyErr_Fetch*(errtype, errvalue, errtraceback: PPPyObject){.cdecl, importc, dynlib: dllname.}
-proc PyErr_NoMemory*(): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyErr_Occurred*(): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyErr_Print*(){.cdecl, importc, dynlib: dllname.}
-proc PyErr_Restore*(errtype, errvalue, errtraceback: PPyObject){.cdecl, importc, dynlib: dllname.}
-proc PyErr_SetFromErrno*(ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyErr_SetNone*(value: PPyObject){.cdecl, importc, dynlib: dllname.}
-proc PyErr_SetObject*(ob1, ob2: PPyObject){.cdecl, importc, dynlib: dllname.}
-proc PyErr_SetString*(ErrorObject: PPyObject, text: cstring){.cdecl, importc, dynlib: dllname.}
-proc PyImport_GetModuleDict*(): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyInt_FromLong*(x: int32): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc Py_Initialize*(){.cdecl, importc, dynlib: dllname.}
-proc Py_Exit*(RetVal: int){.cdecl, importc, dynlib: dllname.}
-proc PyEval_GetBuiltins*(): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyDict_GetItem*(mp, key: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyDict_SetItem*(mp, key, item: PPyObject): int{.cdecl, importc, dynlib: dllname.}
-proc PyDict_DelItem*(mp, key: PPyObject): int{.cdecl, importc, dynlib: dllname.}
-proc PyDict_Clear*(mp: PPyObject){.cdecl, importc, dynlib: dllname.}
-proc PyDict_Next*(mp: PPyObject, pos: PInt, key, value: PPPyObject): int{.
-      cdecl, importc, dynlib: dllname.}
-proc PyDict_Keys*(mp: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyDict_Values*(mp: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyDict_Items*(mp: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyDict_Size*(mp: PPyObject): int{.cdecl, importc, dynlib: dllname.}
-proc PyDict_DelItemString*(dp: PPyObject, key: cstring): int{.cdecl, importc, dynlib: dllname.}
-proc PyDict_New*(): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyDict_GetItemString*(dp: PPyObject, key: cstring): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyDict_SetItemString*(dp: PPyObject, key: cstring, item: PPyObject): int{.
-      cdecl, importc, dynlib: dllname.}
-proc PyDictProxy_New*(obj: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyModule_GetDict*(module: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyObject_Str*(v: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyRun_String*(str: cstring, start: int, globals: PPyObject, 
-                       locals: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyRun_SimpleString*(str: cstring): int{.cdecl, importc, dynlib: dllname.}
-proc PyString_AsString*(ob: PPyObject): cstring{.cdecl, importc, dynlib: dllname.}
-proc PyString_FromString*(str: cstring): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PySys_SetArgv*(argc: int, argv: cstringArray){.cdecl, importc, dynlib: dllname.} 
-  #+ means, Grzegorz or me has tested his non object version of this function
-  #+
-proc PyCFunction_New*(md: PPyMethodDef, ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #+
-proc PyEval_CallObject*(ob1, ob2: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyEval_CallObjectWithKeywords*(ob1, ob2, ob3: PPyObject): PPyObject{.
-      cdecl, importc, dynlib: dllname.}                 #-
-proc PyEval_GetFrame*(): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyEval_GetGlobals*(): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyEval_GetLocals*(): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyEval_GetOwner*(): PPyObject {.cdecl, importc, dynlib: dllname.}
-proc PyEval_GetRestricted*(): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyEval_InitThreads*(){.cdecl, importc, dynlib: dllname.} #-
-proc PyEval_RestoreThread*(tstate: PPyThreadState){.cdecl, importc, dynlib: dllname.} #-
-proc PyEval_SaveThread*(): PPyThreadState{.cdecl, importc, dynlib: dllname.} #-
-proc PyFile_FromString*(pc1, pc2: cstring): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyFile_GetLine*(ob: PPyObject, i: int): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyFile_Name*(ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyFile_SetBufSize*(ob: PPyObject, i: int){.cdecl, importc, dynlib: dllname.} #-
-proc PyFile_SoftSpace*(ob: PPyObject, i: int): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyFile_WriteObject*(ob1, ob2: PPyObject, i: int): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyFile_WriteString*(s: cstring, ob: PPyObject){.cdecl, importc, dynlib: dllname.} #+
-proc PyFloat_AsDouble*(ob: PPyObject): float64{.cdecl, importc, dynlib: dllname.} #+
-proc PyFloat_FromDouble*(db: float64): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyFunction_GetCode*(ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyFunction_GetGlobals*(ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyFunction_New*(ob1, ob2: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyImport_AddModule*(name: cstring): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyImport_Cleanup*(){.cdecl, importc, dynlib: dllname.} #-
-proc PyImport_GetMagicNumber*(): int32{.cdecl, importc, dynlib: dllname.} #+
-proc PyImport_ImportFrozenModule*(key: cstring): int{.cdecl, importc, dynlib: dllname.} #+
-proc PyImport_ImportModule*(name: cstring): PPyObject{.cdecl, importc, dynlib: dllname.} #+
-proc PyImport_Import*(name: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-                                                               
-proc PyImport_Init*() {.cdecl, importc, dynlib: dllname.}
-proc PyImport_ReloadModule*(ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyInstance_New*(obClass, obArg, obKW: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #+
-proc PyInt_AsLong*(ob: PPyObject): int32{.cdecl, importc, dynlib: dllname.} #-
-proc PyList_Append*(ob1, ob2: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyList_AsTuple*(ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #+
-proc PyList_GetItem*(ob: PPyObject, i: int): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyList_GetSlice*(ob: PPyObject, i1, i2: int): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyList_Insert*(dp: PPyObject, idx: int, item: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyList_New*(size: int): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyList_Reverse*(ob: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyList_SetItem*(dp: PPyObject, idx: int, item: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyList_SetSlice*(ob: PPyObject, i1, i2: int, ob2: PPyObject): int{.
-      cdecl, importc, dynlib: dllname.}                 #+
-proc PyList_Size*(ob: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyList_Sort*(ob: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyLong_AsDouble*(ob: PPyObject): float64{.cdecl, importc, dynlib: dllname.} #+
-proc PyLong_AsLong*(ob: PPyObject): int32{.cdecl, importc, dynlib: dllname.} #+
-proc PyLong_FromDouble*(db: float64): PPyObject{.cdecl, importc, dynlib: dllname.} #+
-proc PyLong_FromLong*(L: int32): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyLong_FromString*(pc: cstring, ppc: var cstring, i: int): PPyObject{.
-      cdecl, importc, dynlib: dllname.}                 #-
-proc PyLong_FromUnsignedLong*(val: int): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyLong_AsUnsignedLong*(ob: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyLong_FromUnicode*(ob: PPyObject, a, b: int): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyLong_FromLongLong*(val: Int64): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyLong_AsLongLong*(ob: PPyObject): Int64{.cdecl, importc, dynlib: dllname.} #-
-proc PyMapping_Check*(ob: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyMapping_GetItemString*(ob: PPyObject, key: cstring): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyMapping_HasKey*(ob, key: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyMapping_HasKeyString*(ob: PPyObject, key: cstring): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyMapping_Length*(ob: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyMapping_SetItemString*(ob: PPyObject, key: cstring, value: PPyObject): int{.
-      cdecl, importc, dynlib: dllname.}                 #-
-proc PyMethod_Class*(ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyMethod_Function*(ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyMethod_New*(ob1, ob2, ob3: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyMethod_Self*(ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyModule_GetName*(ob: PPyObject): cstring{.cdecl, importc, dynlib: dllname.} #-
-proc PyModule_New*(key: cstring): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Absolute*(ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Add*(ob1, ob2: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_And*(ob1, ob2: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Check*(ob: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Coerce*(ob1, ob2: var PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Divide*(ob1, ob2: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_FloorDivide*(ob1, ob2: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_TrueDivide*(ob1, ob2: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Divmod*(ob1, ob2: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Float*(ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Int*(ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Invert*(ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Long*(ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Lshift*(ob1, ob2: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Multiply*(ob1, ob2: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Negative*(ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Or*(ob1, ob2: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Positive*(ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Power*(ob1, ob2, ob3: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Remainder*(ob1, ob2: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Rshift*(ob1, ob2: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Subtract*(ob1, ob2: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Xor*(ob1, ob2: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyOS_InitInterrupts*(){.cdecl, importc, dynlib: dllname.} #-
-proc PyOS_InterruptOccurred*(): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_CallObject*(ob, args: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_Compare*(ob1, ob2: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_GetAttr*(ob1, ob2: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #+
-proc PyObject_GetAttrString*(ob: PPyObject, c: cstring): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_GetItem*(ob, key: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_DelItem*(ob, key: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_HasAttrString*(ob: PPyObject, key: cstring): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_Hash*(ob: PPyObject): int32{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_IsTrue*(ob: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_Length*(ob: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_Repr*(ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_SetAttr*(ob1, ob2, ob3: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_SetAttrString*(ob: PPyObject, key: cstring, value: PPyObject): int{.
-      cdecl, importc, dynlib: dllname.}                 #-
-proc PyObject_SetItem*(ob1, ob2, ob3: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_Init*(ob: PPyObject, t: PPyTypeObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_InitVar*(ob: PPyObject, t: PPyTypeObject, size: int): PPyObject{.
-      cdecl, importc, dynlib: dllname.}                 #-
-proc PyObject_New*(t: PPyTypeObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_NewVar*(t: PPyTypeObject, size: int): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyObject_Free*(ob: PPyObject){.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_IsInstance*(inst, cls: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_IsSubclass*(derived, cls: PPyObject): int{.cdecl, importc, dynlib: dllname.}
-proc PyObject_GenericGetAttr*(obj, name: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyObject_GenericSetAttr*(obj, name, value: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_GC_Malloc*(size: int): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_GC_New*(t: PPyTypeObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_GC_NewVar*(t: PPyTypeObject, size: int): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_GC_Resize*(t: PPyObject, newsize: int): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_GC_Del*(ob: PPyObject){.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_GC_Track*(ob: PPyObject){.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_GC_UnTrack*(ob: PPyObject){.cdecl, importc, dynlib: dllname.} #-
-proc PyRange_New*(l1, l2, l3: int32, i: int): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PySequence_Check*(ob: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PySequence_Concat*(ob1, ob2: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PySequence_Count*(ob1, ob2: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PySequence_GetItem*(ob: PPyObject, i: int): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PySequence_GetSlice*(ob: PPyObject, i1, i2: int): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PySequence_In*(ob1, ob2: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PySequence_Index*(ob1, ob2: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PySequence_Length*(ob: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PySequence_Repeat*(ob: PPyObject, count: int): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PySequence_SetItem*(ob: PPyObject, i: int, value: PPyObject): int{.
-      cdecl, importc, dynlib: dllname.}                 #-
-proc PySequence_SetSlice*(ob: PPyObject, i1, i2: int, value: PPyObject): int{.
-      cdecl, importc, dynlib: dllname.}                 #-
-proc PySequence_DelSlice*(ob: PPyObject, i1, i2: int): int{.cdecl, importc, dynlib: dllname.} #-
-proc PySequence_Tuple*(ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PySequence_Contains*(ob, value: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PySlice_GetIndices*(ob: PPySliceObject, len: int, 
-                             start, stop, step: var int): int{.cdecl, importc, dynlib: dllname.} #-
-proc PySlice_GetIndicesEx*(ob: PPySliceObject, len: int, 
-                               start, stop, step, slicelength: var int): int{.
-      cdecl, importc, dynlib: dllname.}                 #-
-proc PySlice_New*(start, stop, step: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyString_Concat*(ob1: var PPyObject, ob2: PPyObject){.cdecl, importc, dynlib: dllname.} #-
-proc PyString_ConcatAndDel*(ob1: var PPyObject, ob2: PPyObject){.cdecl, importc, dynlib: dllname.} #-
-proc PyString_Format*(ob1, ob2: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyString_FromStringAndSize*(s: cstring, i: int): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyString_Size*(ob: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyString_DecodeEscape*(s: cstring, length: int, errors: cstring, 
-                                unicode: int, recode_encoding: cstring): PPyObject{.
-      cdecl, importc, dynlib: dllname.}                 #-
-proc PyString_Repr*(ob: PPyObject, smartquotes: int): PPyObject{.cdecl, importc, dynlib: dllname.} #+
-proc PySys_GetObject*(s: cstring): PPyObject{.cdecl, importc, dynlib: dllname.} 
-#-
-#PySys_Init:procedure; cdecl, importc, dynlib: dllname;
-#-
-proc PySys_SetObject*(s: cstring, ob: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PySys_SetPath*(path: cstring){.cdecl, importc, dynlib: dllname.} #-
-#PyTraceBack_Fetch:function:PPyObject; cdecl, importc, dynlib: dllname;
-#-
-proc PyTraceBack_Here*(p: pointer): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyTraceBack_Print*(ob1, ob2: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-#PyTraceBack_Store:function (ob:PPyObject):integer; cdecl, importc, dynlib: dllname;
-#+
-proc PyTuple_GetItem*(ob: PPyObject, i: int): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyTuple_GetSlice*(ob: PPyObject, i1, i2: int): PPyObject{.cdecl, importc, dynlib: dllname.} #+
-proc PyTuple_New*(size: int): PPyObject{.cdecl, importc, dynlib: dllname.} #+
-proc PyTuple_SetItem*(ob: PPyObject, key: int, value: PPyObject): int{.cdecl, importc, dynlib: dllname.} #+
-proc PyTuple_Size*(ob: PPyObject): int{.cdecl, importc, dynlib: dllname.} #+
-proc PyType_IsSubtype*(a, b: PPyTypeObject): int{.cdecl, importc, dynlib: dllname.}
-proc PyType_GenericAlloc*(atype: PPyTypeObject, nitems: int): PPyObject{.
-      cdecl, importc, dynlib: dllname.}
-proc PyType_GenericNew*(atype: PPyTypeObject, args, kwds: PPyObject): PPyObject{.
-      cdecl, importc, dynlib: dllname.}
-proc PyType_Ready*(atype: PPyTypeObject): int{.cdecl, importc, dynlib: dllname.} #+
-proc PyUnicode_FromWideChar*(w: pointer, size: int): PPyObject{.cdecl, importc, dynlib: dllname.} #+
-proc PyUnicode_AsWideChar*(unicode: PPyObject, w: pointer, size: int): int{.
-      cdecl, importc, dynlib: dllname.}                 #-
-proc PyUnicode_FromOrdinal*(ordinal: int): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyWeakref_GetObject*(theRef: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyWeakref_NewProxy*(ob, callback: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyWeakref_NewRef*(ob, callback: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyWrapper_New*(ob1, ob2: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyBool_FromLong*(ok: int): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc Py_AtExit*(prc: proc () {.cdecl.}): int{.cdecl, importc, dynlib: dllname.} #-
-#Py_Cleanup:procedure; cdecl, importc, dynlib: dllname;
-#-
-proc Py_CompileString*(s1, s2: cstring, i: int): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc Py_FatalError*(s: cstring){.cdecl, importc, dynlib: dllname.} #-
-proc Py_FindMethod*(md: PPyMethodDef, ob: PPyObject, key: cstring): PPyObject{.
-      cdecl, importc, dynlib: dllname.}                 #-
-proc Py_FindMethodInChain*(mc: PPyMethodChain, ob: PPyObject, key: cstring): PPyObject{.
-      cdecl, importc, dynlib: dllname.}                 #-
-proc Py_FlushLine*(){.cdecl, importc, dynlib: dllname.} #+
-proc Py_Finalize*(){.cdecl, importc, dynlib: dllname.} #-
-proc PyErr_ExceptionMatches*(exc: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyErr_GivenExceptionMatches*(raised_exc, exc: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyEval_EvalCode*(co: PPyCodeObject, globals, locals: PPyObject): PPyObject{.
-      cdecl, importc, dynlib: dllname.}                 #+
-proc Py_GetVersion*(): cstring{.cdecl, importc, dynlib: dllname.} #+
-proc Py_GetCopyright*(): cstring{.cdecl, importc, dynlib: dllname.} #+
-proc Py_GetExecPrefix*(): cstring{.cdecl, importc, dynlib: dllname.} #+
-proc Py_GetPath*(): cstring{.cdecl, importc, dynlib: dllname.} #+
-proc Py_GetPrefix*(): cstring{.cdecl, importc, dynlib: dllname.} #+
-proc Py_GetProgramName*(): cstring{.cdecl, importc, dynlib: dllname.} #-
-proc PyParser_SimpleParseString*(str: cstring, start: int): PNode{.cdecl, importc, dynlib: dllname.} #-
-proc PyNode_Free*(n: PNode){.cdecl, importc, dynlib: dllname.} #-
-proc PyErr_NewException*(name: cstring, base, dict: PPyObject): PPyObject{.
-      cdecl, importc, dynlib: dllname.}                 #-
-proc Py_Malloc*(size: int): Pointer {.cdecl, importc, dynlib: dllname.}
-proc PyMem_Malloc*(size: int): Pointer {.cdecl, importc, dynlib: dllname.}
-proc PyObject_CallMethod*(obj: PPyObject, theMethod, 
-                              format: cstring): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc Py_SetProgramName*(name: cstring){.cdecl, importc, dynlib: dllname.}
-proc Py_IsInitialized*(): int{.cdecl, importc, dynlib: dllname.}
-proc Py_GetProgramFullPath*(): cstring{.cdecl, importc, dynlib: dllname.}
-proc Py_NewInterpreter*(): PPyThreadState{.cdecl, importc, dynlib: dllname.}
-proc Py_EndInterpreter*(tstate: PPyThreadState){.cdecl, importc, dynlib: dllname.}
-proc PyEval_AcquireLock*(){.cdecl, importc, dynlib: dllname.}
-proc PyEval_ReleaseLock*(){.cdecl, importc, dynlib: dllname.}
-proc PyEval_AcquireThread*(tstate: PPyThreadState){.cdecl, importc, dynlib: dllname.}
-proc PyEval_ReleaseThread*(tstate: PPyThreadState){.cdecl, importc, dynlib: dllname.}
-proc PyInterpreterState_New*(): PPyInterpreterState{.cdecl, importc, dynlib: dllname.}
-proc PyInterpreterState_Clear*(interp: PPyInterpreterState){.cdecl, importc, dynlib: dllname.}
-proc PyInterpreterState_Delete*(interp: PPyInterpreterState){.cdecl, importc, dynlib: dllname.}
-proc PyThreadState_New*(interp: PPyInterpreterState): PPyThreadState{.cdecl, importc, dynlib: dllname.}
-proc PyThreadState_Clear*(tstate: PPyThreadState){.cdecl, importc, dynlib: dllname.}
-proc PyThreadState_Delete*(tstate: PPyThreadState){.cdecl, importc, dynlib: dllname.}
-proc PyThreadState_Get*(): PPyThreadState{.cdecl, importc, dynlib: dllname.}
-proc PyThreadState_Swap*(tstate: PPyThreadState): PPyThreadState{.cdecl, importc, dynlib: dllname.} 
-
-#Further exported Objects, may be implemented later
-#
-#    PyCode_New: Pointer;
-#    PyErr_SetInterrupt: Pointer;
-#    PyFile_AsFile: Pointer;
-#    PyFile_FromFile: Pointer;
-#    PyFloat_AsString: Pointer;
-#    PyFrame_BlockPop: Pointer;
-#    PyFrame_BlockSetup: Pointer;
-#    PyFrame_ExtendStack: Pointer;
-#    PyFrame_FastToLocals: Pointer;
-#    PyFrame_LocalsToFast: Pointer;
-#    PyFrame_New: Pointer;
-#    PyGrammar_AddAccelerators: Pointer;
-#    PyGrammar_FindDFA: Pointer;
-#    PyGrammar_LabelRepr: Pointer;
-#    PyInstance_DoBinOp: Pointer;
-#    PyInt_GetMax: Pointer;
-#    PyMarshal_Init: Pointer;
-#    PyMarshal_ReadLongFromFile: Pointer;
-#    PyMarshal_ReadObjectFromFile: Pointer;
-#    PyMarshal_ReadObjectFromString: Pointer;
-#    PyMarshal_WriteLongToFile: Pointer;
-#    PyMarshal_WriteObjectToFile: Pointer;
-#    PyMember_Get: Pointer;
-#    PyMember_Set: Pointer;
-#    PyNode_AddChild: Pointer;
-#    PyNode_Compile: Pointer;
-#    PyNode_New: Pointer;
-#    PyOS_GetLastModificationTime: Pointer;
-#    PyOS_Readline: Pointer;
-#    PyOS_strtol: Pointer;
-#    PyOS_strtoul: Pointer;
-#    PyObject_CallFunction: Pointer;
-#    PyObject_CallMethod: Pointer;
-#    PyObject_Print: Pointer;
-#    PyParser_AddToken: Pointer;
-#    PyParser_Delete: Pointer;
-#    PyParser_New: Pointer;
-#    PyParser_ParseFile: Pointer;
-#    PyParser_ParseString: Pointer;
-#    PyParser_SimpleParseFile: Pointer;
-#    PyRun_AnyFile: Pointer;
-#    PyRun_File: Pointer;
-#    PyRun_InteractiveLoop: Pointer;
-#    PyRun_InteractiveOne: Pointer;
-#    PyRun_SimpleFile: Pointer;
-#    PySys_GetFile: Pointer;
-#    PyToken_OneChar: Pointer;
-#    PyToken_TwoChars: Pointer;
-#    PyTokenizer_Free: Pointer;
-#    PyTokenizer_FromFile: Pointer;
-#    PyTokenizer_FromString: Pointer;
-#    PyTokenizer_Get: Pointer;
-#    Py_Main: Pointer;
-#    _PyObject_NewVar: Pointer;
-#    _PyParser_Grammar: Pointer;
-#    _PyParser_TokenNames: Pointer;
-#    _PyThread_Started: Pointer;
-#    _Py_c_diff: Pointer;
-#    _Py_c_neg: Pointer;
-#    _Py_c_pow: Pointer;
-#    _Py_c_prod: Pointer;
-#    _Py_c_quot: Pointer;
-#    _Py_c_sum: Pointer;
-#
-
-# This function handles all cardinals, pointer types (with no adjustment of pointers!)
-# (Extended) floats, which are handled as Python doubles and currencies, handled
-# as (normalized) Python doubles.
-proc PyImport_ExecCodeModule*(name: String, codeobject: PPyObject): PPyObject
-proc PyString_Check*(obj: PPyObject): bool
-proc PyString_CheckExact*(obj: PPyObject): bool
-proc PyFloat_Check*(obj: PPyObject): bool
-proc PyFloat_CheckExact*(obj: PPyObject): bool
-proc PyInt_Check*(obj: PPyObject): bool
-proc PyInt_CheckExact*(obj: PPyObject): bool
-proc PyLong_Check*(obj: PPyObject): bool
-proc PyLong_CheckExact*(obj: PPyObject): bool
-proc PyTuple_Check*(obj: PPyObject): bool
-proc PyTuple_CheckExact*(obj: PPyObject): bool
-proc PyInstance_Check*(obj: PPyObject): bool
-proc PyClass_Check*(obj: PPyObject): bool
-proc PyMethod_Check*(obj: PPyObject): bool
-proc PyList_Check*(obj: PPyObject): bool
-proc PyList_CheckExact*(obj: PPyObject): bool
-proc PyDict_Check*(obj: PPyObject): bool
-proc PyDict_CheckExact*(obj: PPyObject): bool
-proc PyModule_Check*(obj: PPyObject): bool
-proc PyModule_CheckExact*(obj: PPyObject): bool
-proc PySlice_Check*(obj: PPyObject): bool
-proc PyFunction_Check*(obj: PPyObject): bool
-proc PyUnicode_Check*(obj: PPyObject): bool
-proc PyUnicode_CheckExact*(obj: PPyObject): bool
-proc PyType_IS_GC*(t: PPyTypeObject): bool
-proc PyObject_IS_GC*(obj: PPyObject): bool
-proc PyBool_Check*(obj: PPyObject): bool
-proc PyBaseString_Check*(obj: PPyObject): bool
-proc PyEnum_Check*(obj: PPyObject): bool
-proc PyObject_TypeCheck*(obj: PPyObject, t: PPyTypeObject): bool
-proc Py_InitModule*(name: cstring, md: PPyMethodDef): PPyObject
-proc PyType_HasFeature*(AType: PPyTypeObject, AFlag: int): bool
-# implementation
-
-proc Py_INCREF*(op: PPyObject) {.inline.} = 
-  Inc(op.ob_refcnt)
-
-proc Py_DECREF*(op: PPyObject) {.inline.} = 
-  Dec(op.ob_refcnt)
-  if op.ob_refcnt == 0: 
-    op.ob_type.tp_dealloc(op)
-
-proc Py_XINCREF*(op: PPyObject) {.inline.} = 
-  if op != nil: Py_INCREF(op)
-  
-proc Py_XDECREF*(op: PPyObject) {.inline.} = 
-  if op != nil: Py_DECREF(op)
-  
-proc PyImport_ExecCodeModule(name: string, codeobject: PPyObject): PPyObject = 
-  var m, d, v, modules: PPyObject
-  m = PyImport_AddModule(cstring(name))
-  if m == nil: 
-    return nil
-  d = PyModule_GetDict(m)
-  if PyDict_GetItemString(d, "__builtins__") == nil: 
-    if PyDict_SetItemString(d, "__builtins__", PyEval_GetBuiltins()) != 0: 
-      return nil
-  if PyDict_SetItemString(d, "__file__", 
-                          PPyCodeObject(codeobject).co_filename) != 0: 
-    PyErr_Clear() # Not important enough to report
-  v = PyEval_EvalCode(PPyCodeObject(codeobject), d, d) # XXX owner ?
-  if v == nil: 
-    return nil
-  Py_XDECREF(v)
-  modules = PyImport_GetModuleDict()
-  if PyDict_GetItemString(modules, cstring(name)) == nil: 
-    PyErr_SetString(PyExc_ImportError[] , cstring(
-        "Loaded module " & name & "not found in sys.modules"))
-    return nil
-  Py_XINCREF(m)
-  Result = m
-
-proc PyString_Check(obj: PPyObject): bool = 
-  Result = PyObject_TypeCheck(obj, PyString_Type)
-
-proc PyString_CheckExact(obj: PPyObject): bool = 
-  Result = (obj != nil) and (obj.ob_type == PyString_Type)
-
-proc PyFloat_Check(obj: PPyObject): bool = 
-  Result = PyObject_TypeCheck(obj, PyFloat_Type)
-
-proc PyFloat_CheckExact(obj: PPyObject): bool = 
-  Result = (obj != nil) and (obj.ob_type == PyFloat_Type)
-
-proc PyInt_Check(obj: PPyObject): bool = 
-  Result = PyObject_TypeCheck(obj, PyInt_Type)
-
-proc PyInt_CheckExact(obj: PPyObject): bool = 
-  Result = (obj != nil) and (obj.ob_type == PyInt_Type)
-
-proc PyLong_Check(obj: PPyObject): bool = 
-  Result = PyObject_TypeCheck(obj, PyLong_Type)
-
-proc PyLong_CheckExact(obj: PPyObject): bool = 
-  Result = (obj != nil) and (obj.ob_type == PyLong_Type)
-
-proc PyTuple_Check(obj: PPyObject): bool = 
-  Result = PyObject_TypeCheck(obj, PyTuple_Type)
-
-proc PyTuple_CheckExact(obj: PPyObject): bool = 
-  Result = (obj != nil) and (obj[].ob_type == PyTuple_Type)
-
-proc PyInstance_Check(obj: PPyObject): bool = 
-  Result = (obj != nil) and (obj[].ob_type == PyInstance_Type)
-
-proc PyClass_Check(obj: PPyObject): bool = 
-  Result = (obj != nil) and (obj[].ob_type == PyClass_Type)
-
-proc PyMethod_Check(obj: PPyObject): bool = 
-  Result = (obj != nil) and (obj[].ob_type == PyMethod_Type)
-
-proc PyList_Check(obj: PPyObject): bool = 
-  Result = PyObject_TypeCheck(obj, PyList_Type)
-
-proc PyList_CheckExact(obj: PPyObject): bool = 
-  Result = (obj != nil) and (obj[].ob_type == PyList_Type)
-
-proc PyDict_Check(obj: PPyObject): bool = 
-  Result = PyObject_TypeCheck(obj, PyDict_Type)
-
-proc PyDict_CheckExact(obj: PPyObject): bool = 
-  Result = (obj != nil) and (obj[].ob_type == PyDict_Type)
-
-proc PyModule_Check(obj: PPyObject): bool = 
-  Result = PyObject_TypeCheck(obj, PyModule_Type)
-
-proc PyModule_CheckExact(obj: PPyObject): bool = 
-  Result = (obj != nil) and (obj[].ob_type == PyModule_Type)
-
-proc PySlice_Check(obj: PPyObject): bool = 
-  Result = (obj != nil) and (obj[].ob_type == PySlice_Type)
-
-proc PyFunction_Check(obj: PPyObject): bool = 
-  Result = (obj != nil) and
-      ((obj.ob_type == PyCFunction_Type) or
-      (obj.ob_type == PyFunction_Type))
-
-proc PyUnicode_Check(obj: PPyObject): bool = 
-  Result = PyObject_TypeCheck(obj, PyUnicode_Type)
-
-proc PyUnicode_CheckExact(obj: PPyObject): bool = 
-  Result = (obj != nil) and (obj.ob_type == PyUnicode_Type)
-
-proc PyType_IS_GC(t: PPyTypeObject): bool = 
-  Result = PyType_HasFeature(t, Py_TPFLAGS_HAVE_GC)
-
-proc PyObject_IS_GC(obj: PPyObject): bool = 
-  Result = PyType_IS_GC(obj.ob_type) and
-      ((obj.ob_type.tp_is_gc == nil) or (obj.ob_type.tp_is_gc(obj) == 1))
-
-proc PyBool_Check(obj: PPyObject): bool = 
-  Result = (obj != nil) and (obj.ob_type == PyBool_Type)
-
-proc PyBaseString_Check(obj: PPyObject): bool = 
-  Result = PyObject_TypeCheck(obj, PyBaseString_Type)
-
-proc PyEnum_Check(obj: PPyObject): bool = 
-  Result = (obj != nil) and (obj.ob_type == PyEnum_Type)
-
-proc PyObject_TypeCheck(obj: PPyObject, t: PPyTypeObject): bool = 
-  Result = (obj != nil) and (obj.ob_type == t)
-  if not Result and (obj != nil) and (t != nil): 
-    Result = PyType_IsSubtype(obj.ob_type, t) == 1
-  
-proc Py_InitModule(name: cstring, md: PPyMethodDef): PPyObject = 
-  result = Py_InitModule4(name, md, nil, nil, 1012)
-
-proc PyType_HasFeature(AType: PPyTypeObject, AFlag: int): bool = 
-  #(((t)->tp_flags & (f)) != 0)
-  Result = (AType.tp_flags and AFlag) != 0
-
-proc init(lib: TLibHandle) = 
-  Py_DebugFlag = cast[PInt](symAddr(lib, "Py_DebugFlag"))
-  Py_VerboseFlag = cast[PInt](symAddr(lib, "Py_VerboseFlag"))
-  Py_InteractiveFlag = cast[PInt](symAddr(lib, "Py_InteractiveFlag"))
-  Py_OptimizeFlag = cast[PInt](symAddr(lib, "Py_OptimizeFlag"))
-  Py_NoSiteFlag = cast[PInt](symAddr(lib, "Py_NoSiteFlag"))
-  Py_UseClassExceptionsFlag = cast[PInt](symAddr(lib, "Py_UseClassExceptionsFlag"))
-  Py_FrozenFlag = cast[PInt](symAddr(lib, "Py_FrozenFlag"))
-  Py_TabcheckFlag = cast[PInt](symAddr(lib, "Py_TabcheckFlag"))
-  Py_UnicodeFlag = cast[PInt](symAddr(lib, "Py_UnicodeFlag"))
-  Py_IgnoreEnvironmentFlag = cast[PInt](symAddr(lib, "Py_IgnoreEnvironmentFlag"))
-  Py_DivisionWarningFlag = cast[PInt](symAddr(lib, "Py_DivisionWarningFlag"))
-  Py_None = cast[PPyObject](symAddr(lib, "_Py_NoneStruct"))
-  Py_Ellipsis = cast[PPyObject](symAddr(lib, "_Py_EllipsisObject"))
-  Py_False = cast[PPyIntObject](symAddr(lib, "_Py_ZeroStruct"))
-  Py_True = cast[PPyIntObject](symAddr(lib, "_Py_TrueStruct"))
-  Py_NotImplemented = cast[PPyObject](symAddr(lib, "_Py_NotImplementedStruct"))
-  PyImport_FrozenModules = cast[PP_frozen](symAddr(lib, "PyImport_FrozenModules"))
-  PyExc_AttributeError = cast[PPPyObject](symAddr(lib, "PyExc_AttributeError"))
-  PyExc_EOFError = cast[PPPyObject](symAddr(lib, "PyExc_EOFError"))
-  PyExc_IOError = cast[PPPyObject](symAddr(lib, "PyExc_IOError"))
-  PyExc_ImportError = cast[PPPyObject](symAddr(lib, "PyExc_ImportError"))
-  PyExc_IndexError = cast[PPPyObject](symAddr(lib, "PyExc_IndexError"))
-  PyExc_KeyError = cast[PPPyObject](symAddr(lib, "PyExc_KeyError"))
-  PyExc_KeyboardInterrupt = cast[PPPyObject](symAddr(lib, "PyExc_KeyboardInterrupt"))
-  PyExc_MemoryError = cast[PPPyObject](symAddr(lib, "PyExc_MemoryError"))
-  PyExc_NameError = cast[PPPyObject](symAddr(lib, "PyExc_NameError"))
-  PyExc_OverflowError = cast[PPPyObject](symAddr(lib, "PyExc_OverflowError"))
-  PyExc_RuntimeError = cast[PPPyObject](symAddr(lib, "PyExc_RuntimeError"))
-  PyExc_SyntaxError = cast[PPPyObject](symAddr(lib, "PyExc_SyntaxError"))
-  PyExc_SystemError = cast[PPPyObject](symAddr(lib, "PyExc_SystemError"))
-  PyExc_SystemExit = cast[PPPyObject](symAddr(lib, "PyExc_SystemExit"))
-  PyExc_TypeError = cast[PPPyObject](symAddr(lib, "PyExc_TypeError"))
-  PyExc_ValueError = cast[PPPyObject](symAddr(lib, "PyExc_ValueError"))
-  PyExc_ZeroDivisionError = cast[PPPyObject](symAddr(lib, "PyExc_ZeroDivisionError"))
-  PyExc_ArithmeticError = cast[PPPyObject](symAddr(lib, "PyExc_ArithmeticError"))
-  PyExc_Exception = cast[PPPyObject](symAddr(lib, "PyExc_Exception"))
-  PyExc_FloatingPointError = cast[PPPyObject](symAddr(lib, "PyExc_FloatingPointError"))
-  PyExc_LookupError = cast[PPPyObject](symAddr(lib, "PyExc_LookupError"))
-  PyExc_StandardError = cast[PPPyObject](symAddr(lib, "PyExc_StandardError"))
-  PyExc_AssertionError = cast[PPPyObject](symAddr(lib, "PyExc_AssertionError"))
-  PyExc_EnvironmentError = cast[PPPyObject](symAddr(lib, "PyExc_EnvironmentError"))
-  PyExc_IndentationError = cast[PPPyObject](symAddr(lib, "PyExc_IndentationError"))
-  PyExc_MemoryErrorInst = cast[PPPyObject](symAddr(lib, "PyExc_MemoryErrorInst"))
-  PyExc_NotImplementedError = cast[PPPyObject](symAddr(lib, "PyExc_NotImplementedError"))
-  PyExc_OSError = cast[PPPyObject](symAddr(lib, "PyExc_OSError"))
-  PyExc_TabError = cast[PPPyObject](symAddr(lib, "PyExc_TabError"))
-  PyExc_UnboundLocalError = cast[PPPyObject](symAddr(lib, "PyExc_UnboundLocalError"))
-  PyExc_UnicodeError = cast[PPPyObject](symAddr(lib, "PyExc_UnicodeError"))
-  PyExc_Warning = cast[PPPyObject](symAddr(lib, "PyExc_Warning"))
-  PyExc_DeprecationWarning = cast[PPPyObject](symAddr(lib, "PyExc_DeprecationWarning"))
-  PyExc_RuntimeWarning = cast[PPPyObject](symAddr(lib, "PyExc_RuntimeWarning"))
-  PyExc_SyntaxWarning = cast[PPPyObject](symAddr(lib, "PyExc_SyntaxWarning"))
-  PyExc_UserWarning = cast[PPPyObject](symAddr(lib, "PyExc_UserWarning"))
-  PyExc_OverflowWarning = cast[PPPyObject](symAddr(lib, "PyExc_OverflowWarning"))
-  PyExc_ReferenceError = cast[PPPyObject](symAddr(lib, "PyExc_ReferenceError"))
-  PyExc_StopIteration = cast[PPPyObject](symAddr(lib, "PyExc_StopIteration"))
-  PyExc_FutureWarning = cast[PPPyObject](symAddr(lib, "PyExc_FutureWarning"))
-  PyExc_PendingDeprecationWarning = cast[PPPyObject](symAddr(lib, 
-      "PyExc_PendingDeprecationWarning"))
-  PyExc_UnicodeDecodeError = cast[PPPyObject](symAddr(lib, "PyExc_UnicodeDecodeError"))
-  PyExc_UnicodeEncodeError = cast[PPPyObject](symAddr(lib, "PyExc_UnicodeEncodeError"))
-  PyExc_UnicodeTranslateError = cast[PPPyObject](symAddr(lib, "PyExc_UnicodeTranslateError"))
-  PyType_Type = cast[PPyTypeObject](symAddr(lib, "PyType_Type"))
-  PyCFunction_Type = cast[PPyTypeObject](symAddr(lib, "PyCFunction_Type"))
-  PyCObject_Type = cast[PPyTypeObject](symAddr(lib, "PyCObject_Type"))
-  PyClass_Type = cast[PPyTypeObject](symAddr(lib, "PyClass_Type"))
-  PyCode_Type = cast[PPyTypeObject](symAddr(lib, "PyCode_Type"))
-  PyComplex_Type = cast[PPyTypeObject](symAddr(lib, "PyComplex_Type"))
-  PyDict_Type = cast[PPyTypeObject](symAddr(lib, "PyDict_Type"))
-  PyFile_Type = cast[PPyTypeObject](symAddr(lib, "PyFile_Type"))
-  PyFloat_Type = cast[PPyTypeObject](symAddr(lib, "PyFloat_Type"))
-  PyFrame_Type = cast[PPyTypeObject](symAddr(lib, "PyFrame_Type"))
-  PyFunction_Type = cast[PPyTypeObject](symAddr(lib, "PyFunction_Type"))
-  PyInstance_Type = cast[PPyTypeObject](symAddr(lib, "PyInstance_Type"))
-  PyInt_Type = cast[PPyTypeObject](symAddr(lib, "PyInt_Type"))
-  PyList_Type = cast[PPyTypeObject](symAddr(lib, "PyList_Type"))
-  PyLong_Type = cast[PPyTypeObject](symAddr(lib, "PyLong_Type"))
-  PyMethod_Type = cast[PPyTypeObject](symAddr(lib, "PyMethod_Type"))
-  PyModule_Type = cast[PPyTypeObject](symAddr(lib, "PyModule_Type"))
-  PyObject_Type = cast[PPyTypeObject](symAddr(lib, "PyObject_Type"))
-  PyRange_Type = cast[PPyTypeObject](symAddr(lib, "PyRange_Type"))
-  PySlice_Type = cast[PPyTypeObject](symAddr(lib, "PySlice_Type"))
-  PyString_Type = cast[PPyTypeObject](symAddr(lib, "PyString_Type"))
-  PyTuple_Type = cast[PPyTypeObject](symAddr(lib, "PyTuple_Type"))
-  PyUnicode_Type = cast[PPyTypeObject](symAddr(lib, "PyUnicode_Type"))
-  PyBaseObject_Type = cast[PPyTypeObject](symAddr(lib, "PyBaseObject_Type"))
-  PyBuffer_Type = cast[PPyTypeObject](symAddr(lib, "PyBuffer_Type"))
-  PyCallIter_Type = cast[PPyTypeObject](symAddr(lib, "PyCallIter_Type"))
-  PyCell_Type = cast[PPyTypeObject](symAddr(lib, "PyCell_Type"))
-  PyClassMethod_Type = cast[PPyTypeObject](symAddr(lib, "PyClassMethod_Type"))
-  PyProperty_Type = cast[PPyTypeObject](symAddr(lib, "PyProperty_Type"))
-  PySeqIter_Type = cast[PPyTypeObject](symAddr(lib, "PySeqIter_Type"))
-  PyStaticMethod_Type = cast[PPyTypeObject](symAddr(lib, "PyStaticMethod_Type"))
-  PySuper_Type = cast[PPyTypeObject](symAddr(lib, "PySuper_Type"))
-  PySymtableEntry_Type = cast[PPyTypeObject](symAddr(lib, "PySymtableEntry_Type"))
-  PyTraceBack_Type = cast[PPyTypeObject](symAddr(lib, "PyTraceBack_Type"))
-  PyWrapperDescr_Type = cast[PPyTypeObject](symAddr(lib, "PyWrapperDescr_Type"))
-  PyBaseString_Type = cast[PPyTypeObject](symAddr(lib, "PyBaseString_Type"))
-  PyBool_Type = cast[PPyTypeObject](symAddr(lib, "PyBool_Type"))
-  PyEnum_Type = cast[PPyTypeObject](symAddr(lib, "PyEnum_Type"))
-
-# Unfortunately we have to duplicate the loading mechanism here, because Nimrod
-# used to not support variables from dynamic libraries. Well designed API's
-# don't require this anyway. Python is an exception.
-
-var
-  lib: TLibHandle
-
-when defined(windows):
-  const
-    LibNames = ["python27.dll", "python26.dll", "python25.dll",
-      "python24.dll", "python23.dll", "python22.dll", "python21.dll",
-      "python20.dll", "python16.dll", "python15.dll"]
-elif defined(macosx):
-  const
-    LibNames = ["libpython2.7.dylib", "libpython2.6.dylib",
-      "libpython2.5.dylib", "libpython2.4.dylib", "libpython2.3.dylib", 
-      "libpython2.2.dylib", "libpython2.1.dylib", "libpython2.0.dylib",
-      "libpython1.6.dylib", "libpython1.5.dylib"]
-else:
-  const
-    LibNames = [
-      "libpython2.7.so" & dllver,
-      "libpython2.6.so" & dllver, 
-      "libpython2.5.so" & dllver, 
-      "libpython2.4.so" & dllver, 
-      "libpython2.3.so" & dllver, 
-      "libpython2.2.so" & dllver, 
-      "libpython2.1.so" & dllver, 
-      "libpython2.0.so" & dllver,
-      "libpython1.6.so" & dllver, 
-      "libpython1.5.so" & dllver]
-  
-for libName in items(libNames): 
-  lib = loadLib(libName)
-  if lib != nil: break
-
-if lib == nil: quit("could not load python library")
-init(lib)
-
diff --git a/lib/wrappers/tcl.nim b/lib/wrappers/tcl.nim
deleted file mode 100644
index 8cd715838..000000000
--- a/lib/wrappers/tcl.nim
+++ /dev/null
@@ -1,865 +0,0 @@
-#
-#
-#            Nimrod's Runtime Library
-#        (c) Copyright 2010 Andreas Rumpf
-#
-#    See the file "copying.txt", included in this
-#    distribution, for details about the copyright.
-#
-
-## This module is a wrapper for the TCL programming language.
-
-#
-#  tcl.h --
-# 
-#  This header file describes the externally-visible facilities of the Tcl
-#  interpreter.
-# 
-#  Translated to Pascal Copyright (c) 2002 by Max Artemev
-#  aka Bert Raccoon (bert@furry.ru, bert_raccoon@freemail.ru)
-# 
-# 
-#  Copyright (c) 1998-2000 by Scriptics Corporation.
-#  Copyright (c) 1994-1998 Sun Microsystems, Inc.
-#  Copyright (c) 1993-1996 Lucent Technologies.
-#  Copyright (c) 1987-1994 John Ousterhout, The Regents of the
-#                          University of California, Berkeley.
-# 
-#  ***********************************************************************
-#  This program is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-#  ***********************************************************************
-# 
-
-{.deadCodeElim: on.}
-
-when defined(WIN32): 
-  const 
-    dllName = "tcl(85|84|83|82|81|80).dll"
-elif defined(macosx): 
-  const 
-    dllName = "libtcl(8.5|8.4|8.3|8.2|8.1).dylib"
-else: 
-  const 
-    dllName = "libtcl(8.5|8.4|8.3|8.2|8.1).so(|.1|.0)"
-const 
-  TCL_DESTROYED* = 0xDEADDEAD
-  TCL_OK* = 0
-  TCL_ERROR* = 1
-  TCL_RETURN* = 2
-  TCL_BREAK* = 3
-  TCL_CONTINUE* = 4
-  RESULT_SIZE* = 200
-  MAX_ARGV* = 0x00007FFF
-  VERSION_MAJOR* = 0
-  VERSION_MINOR* = 0
-  NO_EVAL* = 0x00010000
-  EVAL_GLOBAL* = 0x00020000 # Flag values passed to variable-related proc
-  GLOBAL_ONLY* = 1
-  NAMESPACE_ONLY* = 2
-  APPEND_VALUE* = 4
-  LIST_ELEMENT* = 8
-  TRACE_READS* = 0x00000010
-  TRACE_WRITES* = 0x00000020
-  TRACE_UNSETS* = 0x00000040
-  TRACE_DESTROYED* = 0x00000080
-  INTERP_DESTROYED* = 0x00000100
-  LEAVE_ERR_MSG* = 0x00000200
-  PARSE_PART1* = 0x00000400 # Types for linked variables: *
-  LINK_INT* = 1
-  LINK_DOUBLE* = 2
-  LINK_BOOLEAN* = 3
-  LINK_STRING* = 4
-  LINK_READ_ONLY* = 0x00000080
-  SMALL_HASH_TABLE* = 4   # Hash Table *
-  STRING_KEYS* = 0
-  ONE_WORD_KEYS* = 1      # Const/enums Tcl_QueuePosition *
-                          
-  QUEUE_TAIL* = 0
-  QUEUE_HEAD* = 1
-  QUEUE_MARK* = 2         # Tcl_QueuePosition;
-                          # Event Flags
-  DONT_WAIT* = 1 shl 1
-  WINDOW_EVENTS* = 1 shl 2
-  FILE_EVENTS* = 1 shl 3
-  TIMER_EVENTS* = 1 shl 4
-  IDLE_EVENTS* = 1 shl 5  # WAS 0x10 ???? *
-  ALL_EVENTS* = not DONT_WAIT
-  VOLATILE* = 1
-  TCL_STATIC* = 0
-  DYNAMIC* = 3            # Channel
-  TCL_STDIN* = 1 shl 1
-  TCL_STDOUT* = 1 shl 2
-  TCL_STDERR* = 1 shl 3
-  ENFORCE_MODE* = 1 shl 4
-  READABLE* = 1 shl 1
-  WRITABLE* = 1 shl 2
-  EXCEPTION* = 1 shl 3    # POSIX *
-  EPERM* = 1 # Operation not permitted; only the owner of the file (or other
-             # resource) or processes with special privileges can perform the
-             # operation.
-             #
-  ENOENT* = 2 # No such file or directory.  This is a "file doesn't exist" error
-              # for ordinary files that are referenced in contexts where they are
-              # expected to already exist.
-              #
-  ESRCH* = 3                  # No process matches the specified process ID. *
-  EINTR* = 4 # Interrupted function call; an asynchronous signal occurred and
-             # prevented completion of the call.  When this happens, you should
-             # try the call again.
-             #
-  EIO* = 5                    # Input/output error; usually used for physical read or write errors. *
-  ENXIO* = 6 # No such device or address.  The system tried to use the device
-             # represented by a file you specified, and it couldn't find the
-             # device.  This can mean that the device file was installed
-             # incorrectly, or that the physical device is missing or not
-             # correctly attached to the computer.
-             #
-  E2BIG* = 7 # Argument list too long; used when the arguments passed to a new
-             # program being executed with one of the `exec' functions (*note
-             # Executing a File::.) occupy too much memory space.  This condition
-             # never arises in the GNU system.
-             #
-  ENOEXEC* = 8 # Invalid executable file format.  This condition is detected by the
-               # `exec' functions; see *Note Executing a File::.
-               #
-  EBADF* = 9 # Bad file descriptor; for example, I/O on a descriptor that has been
-             # closed or reading from a descriptor open only for writing (or vice
-             # versa).
-             #
-  ECHILD* = 10 # There are no child processes.  This error happens on operations
-               # that are supposed to manipulate child processes, when there aren't
-               # any processes to manipulate.
-               #
-  EDEADLK* = 11 # Deadlock avoided; allocating a system resource would have resulted
-                # in a deadlock situation.  The system does not guarantee that it
-                # will notice all such situations.  This error means you got lucky
-                # and the system noticed; it might just hang.  *Note File Locks::,
-                # for an example.
-                #
-  ENOMEM* = 12 # No memory available.  The system cannot allocate more virtual
-               # memory because its capacity is full.
-               #
-  EACCES* = 13 # Permission denied; the file permissions do not allow the attempted
-               # operation.
-               #
-  EFAULT* = 14 # Bad address; an invalid pointer was detected.  In the GNU system,
-               # this error never happens; you get a signal instead.
-               #
-  ENOTBLK* = 15 # A file that isn't a block special file was given in a situation
-                # that requires one.  For example, trying to mount an ordinary file
-                # as a file system in Unix gives this error.
-                #
-  EBUSY* = 16 # Resource busy; a system resource that can't be shared is already
-              # in use.  For example, if you try to delete a file that is the root
-              # of a currently mounted filesystem, you get this error.
-              #
-  EEXIST* = 17 # File exists; an existing file was specified in a context where it
-               # only makes sense to specify a new file.
-               #
-  EXDEV* = 18 # An attempt to make an improper link across file systems was
-              # detected.  This happens not only when you use `link' (*note Hard
-              # Links::.) but also when you rename a file with `rename' (*note
-              # Renaming Files::.).
-              #
-  ENODEV* = 19 # The wrong type of device was given to a function that expects a
-               # particular sort of device.
-               #
-  ENOTDIR* = 20 # A file that isn't a directory was specified when a directory is
-                # required.
-                #
-  EISDIR* = 21 # File is a directory; you cannot open a directory for writing, or
-               # create or remove hard links to it.
-               #
-  EINVAL* = 22 # Invalid argument.  This is used to indicate various kinds of
-               # problems with passing the wrong argument to a library function.
-               #
-  EMFILE* = 24 # The current process has too many files open and can't open any
-               # more.  Duplicate descriptors do count toward this limit.
-               #
-               # In BSD and GNU, the number of open files is controlled by a
-               # resource limit that can usually be increased.  If you get this
-               # error, you might want to increase the `RLIMIT_NOFILE' limit or
-               # make it unlimited; *note Limits on Resources::..
-               #
-  ENFILE* = 23 # There are too many distinct file openings in the entire system.
-               # Note that any number of linked channels count as just one file
-               # opening; see *Note Linked Channels::.  This error never occurs in
-               # the GNU system.
-               #
-  ENOTTY* = 25 # Inappropriate I/O control operation, such as trying to set terminal
-               # modes on an ordinary file.
-               #
-  ETXTBSY* = 26 # An attempt to execute a file that is currently open for writing, or
-                # write to a file that is currently being executed.  Often using a
-                # debugger to run a program is considered having it open for writing
-                # and will cause this error.  (The name stands for "text file
-                # busy".)  This is not an error in the GNU system; the text is
-                # copied as necessary.
-                #
-  EFBIG* = 27 # File too big; the size of a file would be larger than allowed by
-              # the system.
-              #
-  ENOSPC* = 28 # No space left on device; write operation on a file failed because
-               # the disk is full.
-               #
-  ESPIPE* = 29                # Invalid seek operation (such as on a pipe).  *
-  EROFS* = 30                 # An attempt was made to modify something on a read-only file system.  *
-  EMLINK* = 31 # Too many links; the link count of a single file would become too
-               # large.  `rename' can cause this error if the file being renamed
-               # already has as many links as it can take (*note Renaming Files::.).
-               #
-  EPIPE* = 32 # Broken pipe; there is no process reading from the other end of a
-              # pipe.  Every library function that returns this error code also
-              # generates a `SIGPIPE' signal; this signal terminates the program
-              # if not handled or blocked.  Thus, your program will never actually
-              # see `EPIPE' unless it has handled or blocked `SIGPIPE'.
-              #
-  EDOM* = 33 # Domain error; used by mathematical functions when an argument
-             # value does not fall into the domain over which the function is
-             # defined.
-             #
-  ERANGE* = 34 # Range error; used by mathematical functions when the result value
-               # is not representable because of overflow or underflow.
-               #
-  EAGAIN* = 35 # Resource temporarily unavailable; the call might work if you try
-               # again later.  The macro `EWOULDBLOCK' is another name for `EAGAIN';
-               # they are always the same in the GNU C library.
-               #
-  EWOULDBLOCK* = EAGAIN # In the GNU C library, this is another name for `EAGAIN' (above).
-                        # The values are always the same, on every operating system.
-                        # C libraries in many older Unix systems have `EWOULDBLOCK' as a
-                        # separate error code.
-                        #
-  EINPROGRESS* = 36 # An operation that cannot complete immediately was initiated on an
-                    # object that has non-blocking mode selected.  Some functions that
-                    # must always block (such as `connect'; *note Connecting::.) never
-                    # return `EAGAIN'.  Instead, they return `EINPROGRESS' to indicate
-                    # that the operation has begun and will take some time.  Attempts to
-                    # manipulate the object before the call completes return `EALREADY'.
-                    # You can use the `select' function to find out when the pending
-                    # operation has completed; *note Waiting for I/O::..
-                    #
-  EALREADY* = 37 # An operation is already in progress on an object that has
-                 # non-blocking mode selected.
-                 #
-  ENOTSOCK* = 38              # A file that isn't a socket was specified when a socket is required.  *
-  EDESTADDRREQ* = 39 # No default destination address was set for the socket.  You get
-                     # this error when you try to transmit data over a connectionless
-                     # socket, without first specifying a destination for the data with
-                     # `connect'.
-                     #
-  EMSGSIZE* = 40 # The size of a message sent on a socket was larger than the
-                 # supported maximum size.
-                 #
-  EPROTOTYPE* = 41 # The socket type does not support the requested communications
-                   # protocol.
-                   #
-  ENOPROTOOPT* = 42 # You specified a socket option that doesn't make sense for the
-                    # particular protocol being used by the socket.  *Note Socket
-                    # Options::.
-                    #
-  EPROTONOSUPPORT* = 43 # The socket domain does not support the requested communications
-                        # protocol (perhaps because the requested protocol is completely
-                        # invalid.) *Note Creating a Socket::.
-                        #
-  ESOCKTNOSUPPORT* = 44       # The socket type is not supported.  *
-  EOPNOTSUPP* = 45 # The operation you requested is not supported.  Some socket
-                   # functions don't make sense for all types of sockets, and others
-                   # may not be implemented for all communications protocols.  In the
-                   # GNU system, this error can happen for many calls when the object
-                   # does not support the particular operation; it is a generic
-                   # indication that the server knows nothing to do for that call.
-                   #
-  EPFNOSUPPORT* = 46 # The socket communications protocol family you requested is not
-                     # supported.
-                     #
-  EAFNOSUPPORT* = 47 # The address family specified for a socket is not supported; it is
-                     # inconsistent with the protocol being used on the socket.  *Note
-                     # Sockets::.
-                     #
-  EADDRINUSE* = 48 # The requested socket address is already in use.  *Note Socket
-                   # Addresses::.
-                   #
-  EADDRNOTAVAIL* = 49 # The requested socket address is not available; for example, you
-                      # tried to give a socket a name that doesn't match the local host
-                      # name.  *Note Socket Addresses::.
-                      #
-  ENETDOWN* = 50              # A socket operation failed because the network was down.  *
-  ENETUNREACH* = 51 # A socket operation failed because the subnet containing the remote
-                    # host was unreachable.
-                    #
-  ENETRESET* = 52             # A network connection was reset because the remote host crashed.  *
-  ECONNABORTED* = 53          # A network connection was aborted locally. *
-  ECONNRESET* = 54 # A network connection was closed for reasons outside the control of
-                   # the local host, such as by the remote machine rebooting or an
-                   # unrecoverable protocol violation.
-                   #
-  ENOBUFS* = 55 # The kernel's buffers for I/O operations are all in use.  In GNU,
-                # this error is always synonymous with `ENOMEM'; you may get one or
-                # the other from network operations.
-                #
-  EISCONN* = 56 # You tried to connect a socket that is already connected.  *Note
-                # Connecting::.
-                #
-  ENOTCONN* = 57 # The socket is not connected to anything.  You get this error when
-                 # you try to transmit data over a socket, without first specifying a
-                 # destination for the data.  For a connectionless socket (for
-                 # datagram protocols, such as UDP), you get `EDESTADDRREQ' instead.
-                 #
-  ESHUTDOWN* = 58             # The socket has already been shut down.  *
-  ETOOMANYREFS* = 59          # ???  *
-  ETIMEDOUT* = 60 # A socket operation with a specified timeout received no response
-                  # during the timeout period.
-                  #
-  ECONNREFUSED* = 61 # A remote host refused to allow the network connection (typically
-                     # because it is not running the requested service).
-                     #
-  ELOOP* = 62 # Too many levels of symbolic links were encountered in looking up a
-              # file name.  This often indicates a cycle of symbolic links.
-              #
-  ENAMETOOLONG* = 63 # Filename too long (longer than `PATH_MAX'; *note Limits for
-                     # Files::.) or host name too long (in `gethostname' or
-                     # `sethostname'; *note Host Identification::.).
-                     #
-  EHOSTDOWN* = 64             # The remote host for a requested network connection is down.  *
-  EHOSTUNREACH* = 65 # The remote host for a requested network connection is not
-                     # reachable.
-                     #
-  ENOTEMPTY* = 66 # Directory not empty, where an empty directory was expected.
-                  # Typically, this error occurs when you are trying to delete a
-                  # directory.
-                  #
-  EPROCLIM* = 67 # This means that the per-user limit on new process would be
-                 # exceeded by an attempted `fork'.  *Note Limits on Resources::, for
-                 # details on the `RLIMIT_NPROC' limit.
-                 #
-  EUSERS* = 68                # The file quota system is confused because there are too many users.  *
-  EDQUOT* = 69                # The user's disk quota was exceeded.  *
-  ESTALE* = 70 # Stale NFS file handle.  This indicates an internal confusion in
-               # the NFS system which is due to file system rearrangements on the
-               # server host.  Repairing this condition usually requires unmounting
-               # and remounting the NFS file system on the local host.
-               #
-  EREMOTE* = 71 # An attempt was made to NFS-mount a remote file system with a file
-                # name that already specifies an NFS-mounted file.  (This is an
-                # error on some operating systems, but we expect it to work properly
-                # on the GNU system, making this error code impossible.)
-                #
-  EBADRPC* = 72               # ???  *
-  ERPCMISMATCH* = 73          # ???  *
-  EPROGUNAVAIL* = 74          # ???  *
-  EPROGMISMATCH* = 75         # ???  *
-  EPROCUNAVAIL* = 76          # ???  *
-  ENOLCK* = 77 # No locks available.  This is used by the file locking facilities;
-               # see *Note File Locks::.  This error is never generated by the GNU
-               # system, but it can result from an operation to an NFS server
-               # running another operating system.
-               #
-  ENOSYS* = 78 # Function not implemented.  Some functions have commands or options
-               # defined that might not be supported in all implementations, and
-               # this is the kind of error you get if you request them and they are
-               # not supported.
-               #
-  EFTYPE* = 79 # Inappropriate file type or format.  The file was the wrong type
-               # for the operation, or a data file had the wrong format.
-               # On some systems `chmod' returns this error if you try to set the
-               # sticky bit on a non-directory file; *note Setting Permissions::..
-               #
-
-type 
-  TArgv* = cstringArray
-  TClientData* = pointer
-  TFreeProc* = proc (theBlock: pointer){.cdecl.}
-  PInterp* = ptr TInterp
-  TInterp*{.final.} = object  #  Event Definitions
-    result*: cstring # Do not access this directly. Use
-                     # Tcl_GetStringResult since result
-                     # may be pointing to an object
-    freeProc*: TFreeProc
-    errorLine*: int
-
-  TEventSetupProc* = proc (clientData: TClientData, flags: int){.cdecl.}
-  TEventCheckProc* = TEventSetupProc
-  PEvent* = ptr TEvent
-  TEventProc* = proc (evPtr: PEvent, flags: int): int{.cdecl.}
-  TEvent*{.final.} = object 
-    prc*: TEventProc
-    nextPtr*: PEvent
-    ClientData*: TObject      # ClientData is just pointer.*
-  
-  PTime* = ptr TTime
-  TTime*{.final.} = object 
-    sec*: int32               # Seconds. * 
-    usec*: int32              # Microseconds. * 
-  
-  TTimerToken* = pointer
-  PInteger* = ptr int
-  PHashTable* = ptr THashTable
-  PHashEntry* = ptr THashEntry
-  PPHashEntry* = ptr PHashEntry
-  THashEntry*{.final.} = object 
-    nextPtr*: PHashEntry
-    tablePtr*: PHashTable
-    bucketPtr*: PPHashEntry
-    clientData*: TClientData
-    key*: cstring
-
-  THashFindProc* = proc (tablePtr: PHashTable, key: cstring): PHashEntry{.
-      cdecl.}
-  THashCreateProc* = proc (tablePtr: PHashTable, key: cstring, 
-                              newPtr: PInteger): PHashEntry{.cdecl.}
-  THashTable*{.final.} = object 
-    buckets*: ppHashEntry
-    staticBuckets*: array[0..SMALL_HASH_TABLE - 1, PHashEntry]
-    numBuckets*: int
-    numEntries*: int
-    rebuildSize*: int
-    downShift*: int
-    mask*: int
-    keyType*: int
-    findProc*: THashFindProc
-    createProc*: THashCreateProc
-
-  PHashSearch* = ptr THashSearch
-  THashSearch*{.final.} = object 
-    tablePtr*: PHashTable
-    nextIndex*: int
-    nextEntryPtr*: PHashEntry
-
-  TAppInitProc* = proc (interp: pInterp): int{.cdecl.}
-  TPackageInitProc* = proc (interp: pInterp): int{.cdecl.}
-  TCmdProc* = proc (clientData: TClientData, interp: pInterp, argc: int, 
-                    argv: TArgv): int{.cdecl.}
-  TVarTraceProc* = proc (clientData: TClientData, interp: pInterp, 
-                         varName: cstring, elemName: cstring, flags: int): cstring{.
-      cdecl.}
-  TInterpDeleteProc* = proc (clientData: TClientData, interp: pInterp){.cdecl.}
-  TCmdDeleteProc* = proc (clientData: TClientData){.cdecl.}
-  TNamespaceDeleteProc* = proc (clientData: TClientData){.cdecl.}
-
-const 
-  DSTRING_STATIC_SIZE* = 200
-
-type 
-  PDString* = ptr TDString
-  TDString*{.final.} = object 
-    str*: cstring
-    len*: int
-    spaceAvl*: int
-    staticSpace*: array[0..DSTRING_STATIC_SIZE - 1, char]
-
-  PChannel* = ptr TChannel
-  TChannel*{.final.} = object 
-  TDriverBlockModeProc* = proc (instanceData: TClientData, mode: int): int{.
-      cdecl.}
-  TDriverCloseProc* = proc (instanceData: TClientData, interp: PInterp): int{.
-      cdecl.}
-  TDriverInputProc* = proc (instanceData: TClientData, buf: cstring, 
-                            toRead: int, errorCodePtr: PInteger): int{.cdecl.}
-  TDriverOutputProc* = proc (instanceData: TClientData, buf: cstring, 
-                             toWrite: int, errorCodePtr: PInteger): int{.cdecl.}
-  TDriverSeekProc* = proc (instanceData: TClientData, offset: int32, 
-                           mode: int, errorCodePtr: PInteger): int{.cdecl.}
-  TDriverSetOptionProc* = proc (instanceData: TClientData, interp: PInterp, 
-                                optionName: cstring, value: cstring): int{.cdecl.}
-  TDriverGetOptionProc* = proc (instanceData: TClientData, interp: pInterp, 
-                                optionName: cstring, dsPtr: PDString): int{.
-      cdecl.}
-  TDriverWatchProc* = proc (instanceData: TClientData, mask: int){.cdecl.}
-  TDriverGetHandleProc* = proc (instanceData: TClientData, direction: int, 
-                                handlePtr: var TClientData): int{.cdecl.}
-  PChannelType* = ptr TChannelType
-  TChannelType*{.final.} = object 
-    typeName*: cstring
-    blockModeProc*: TDriverBlockModeProc
-    closeProc*: TDriverCloseProc
-    inputProc*: TDriverInputProc
-    ouputProc*: TDriverOutputProc
-    seekProc*: TDriverSeekProc
-    setOptionProc*: TDriverSetOptionProc
-    getOptionProc*: TDriverGetOptionProc
-    watchProc*: TDriverWatchProc
-    getHandleProc*: TDriverGetHandleProc
-
-  TChannelProc* = proc (clientData: TClientData, mask: int){.cdecl.}
-  PObj* = ptr TObj
-  PPObj* = ptr PObj
-  TObj*{.final.} = object 
-    refCount*: int            # ...
-  
-  TObjCmdProc* = proc (clientData: TClientData, interp: PInterp, objc: int, 
-                       PPObj: PPObj): int{.cdecl.}
-  PNamespace* = ptr TNamespace
-  TNamespace*{.final.} = object 
-    name*: cstring
-    fullName*: cstring
-    clientData*: TClientData
-    deleteProc*: TNamespaceDeleteProc
-    parentPtr*: PNamespace
-
-  PCallFrame* = ptr TCallFrame
-  TCallFrame*{.final.} = object 
-    nsPtr*: PNamespace
-    dummy1*: int
-    dummy2*: int
-    dummy3*: cstring
-    dummy4*: cstring
-    dummy5*: cstring
-    dummy6*: int
-    dummy7*: cstring
-    dummy8*: cstring
-    dummy9*: int
-    dummy10*: cstring
-
-  PCmdInfo* = ptr TCmdInfo
-  TCmdInfo*{.final.} = object 
-    isNativeObjectProc*: int
-    objProc*: TObjCmdProc
-    objClientData*: TClientData
-    prc*: TCmdProc
-    clientData*: TClientData
-    deleteProc*: TCmdDeleteProc
-    deleteData*: TClientData
-    namespacePtr*: pNamespace
-
-  pCommand* = ptr TCommand
-  TCommand*{.final.} = object     #       hPtr            : pTcl_HashEntry;
-                                  #        nsPtr           : pTcl_Namespace;
-                                  #        refCount        : integer;
-                                  #        isCmdEpoch      : integer;
-                                  #        compileProc     : pointer;
-                                  #        objProc         : pointer;
-                                  #        objClientData   : Tcl_ClientData;
-                                  #        proc            : pointer;
-                                  #        clientData      : Tcl_ClientData;
-                                  #        deleteProc      : TTclCmdDeleteProc;
-                                  #        deleteData      : Tcl_ClientData;
-                                  #        deleted         : integer;
-                                  #        importRefPtr    : pointer;
-                                  #
-
-type 
-  TPanicProc* = proc (fmt, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8: cstring){.
-      cdecl.}                 # 1/15/97 orig. Tcl style
-  TClientDataProc* = proc (clientData: TClientData){.cdecl.}
-  TIdleProc* = proc (clientData: TClientData){.cdecl.}
-  TTimerProc* = TIdleProc
-  TCreateCloseHandler* = proc (channel: pChannel, prc: TClientDataProc, 
-                               clientData: TClientData){.cdecl.}
-  TDeleteCloseHandler* = TCreateCloseHandler
-  TEventDeleteProc* = proc (evPtr: pEvent, clientData: TClientData): int{.
-      cdecl.}
-
-proc Alloc*(size: int): cstring{.cdecl, dynlib: dllName, 
-                                     importc: "Tcl_Alloc".}
-proc CreateInterp*(): pInterp{.cdecl, dynlib: dllName, 
-                                   importc: "Tcl_CreateInterp".}
-proc DeleteInterp*(interp: pInterp){.cdecl, dynlib: dllName, 
-    importc: "Tcl_DeleteInterp".}
-proc ResetResult*(interp: pInterp){.cdecl, dynlib: dllName, 
-                                        importc: "Tcl_ResetResult".}
-proc Eval*(interp: pInterp, script: cstring): int{.cdecl, dynlib: dllName, 
-    importc: "Tcl_Eval".}
-proc EvalFile*(interp: pInterp, filename: cstring): int{.cdecl, 
-    dynlib: dllName, importc: "Tcl_EvalFile".}
-proc AddErrorInfo*(interp: pInterp, message: cstring){.cdecl, 
-    dynlib: dllName, importc: "Tcl_AddErrorInfo".}
-proc BackgroundError*(interp: pInterp){.cdecl, dynlib: dllName, 
-    importc: "Tcl_BackgroundError".}
-proc CreateCommand*(interp: pInterp, name: cstring, cmdProc: TCmdProc, 
-                        clientData: TClientData, deleteProc: TCmdDeleteProc): pCommand{.
-    cdecl, dynlib: dllName, importc: "Tcl_CreateCommand".}
-proc DeleteCommand*(interp: pInterp, name: cstring): int{.cdecl, 
-    dynlib: dllName, importc: "Tcl_DeleteCommand".}
-proc CallWhenDeleted*(interp: pInterp, prc: TInterpDeleteProc, 
-                          clientData: TClientData){.cdecl, dynlib: dllName, 
-    importc: "Tcl_CallWhenDeleted".}
-proc DontCallWhenDeleted*(interp: pInterp, prc: TInterpDeleteProc, 
-                              clientData: TClientData){.cdecl, 
-    dynlib: dllName, importc: "Tcl_DontCallWhenDeleted".}
-proc CommandComplete*(cmd: cstring): int{.cdecl, dynlib: dllName, 
-    importc: "Tcl_CommandComplete".}
-proc LinkVar*(interp: pInterp, varName: cstring, varAddr: pointer, typ: int): int{.
-    cdecl, dynlib: dllName, importc: "Tcl_LinkVar".}
-proc UnlinkVar*(interp: pInterp, varName: cstring){.cdecl, dynlib: dllName, 
-    importc: "Tcl_UnlinkVar".}
-proc TraceVar*(interp: pInterp, varName: cstring, flags: int, 
-                   prc: TVarTraceProc, clientData: TClientData): int{.cdecl, 
-    dynlib: dllName, importc: "Tcl_TraceVar".}
-proc TraceVar2*(interp: pInterp, varName: cstring, elemName: cstring, 
-                    flags: int, prc: TVarTraceProc, clientData: TClientData): int{.
-    cdecl, dynlib: dllName, importc: "Tcl_TraceVar2".}
-proc UntraceVar*(interp: pInterp, varName: cstring, flags: int, 
-                     prc: TVarTraceProc, clientData: TClientData){.cdecl, 
-    dynlib: dllName, importc: "Tcl_UntraceVar".}
-proc UntraceVar2*(interp: pInterp, varName: cstring, elemName: cstring, 
-                      flags: int, prc: TVarTraceProc, clientData: TClientData){.
-    cdecl, dynlib: dllName, importc: "Tcl_UntraceVar2".}
-proc GetVar*(interp: pInterp, varName: cstring, flags: int): cstring{.cdecl, 
-    dynlib: dllName, importc: "Tcl_GetVar".}
-proc GetVar2*(interp: pInterp, varName: cstring, elemName: cstring, 
-                  flags: int): cstring{.cdecl, dynlib: dllName, 
-                                        importc: "Tcl_GetVar2".}
-proc SetVar*(interp: pInterp, varName: cstring, newValue: cstring, 
-                 flags: int): cstring{.cdecl, dynlib: dllName, 
-                                       importc: "Tcl_SetVar".}
-proc SetVar2*(interp: pInterp, varName: cstring, elemName: cstring, 
-                  newValue: cstring, flags: int): cstring{.cdecl, 
-    dynlib: dllName, importc: "Tcl_SetVar2".}
-proc UnsetVar*(interp: pInterp, varName: cstring, flags: int): int{.cdecl, 
-    dynlib: dllName, importc: "Tcl_UnsetVar".}
-proc UnsetVar2*(interp: pInterp, varName: cstring, elemName: cstring, 
-                    flags: int): int{.cdecl, dynlib: dllName, 
-                                      importc: "Tcl_UnsetVar2".}
-proc SetResult*(interp: pInterp, newValue: cstring, freeProc: TFreeProc){.
-    cdecl, dynlib: dllName, importc: "Tcl_SetResult".}
-proc FirstHashEntry*(hashTbl: pHashTable, searchInfo: var THashSearch): pHashEntry{.
-    cdecl, dynlib: dllName, importc: "Tcl_FirstHashEntry".}
-proc NextHashEntry*(searchInfo: var THashSearch): pHashEntry{.cdecl, 
-    dynlib: dllName, importc: "Tcl_NextHashEntry".}
-proc InitHashTable*(hashTbl: pHashTable, keyType: int){.cdecl, 
-    dynlib: dllName, importc: "Tcl_InitHashTable".}
-proc StringMatch*(str: cstring, pattern: cstring): int{.cdecl, 
-    dynlib: dllName, importc: "Tcl_StringMatch".}
-proc GetErrno*(): int{.cdecl, dynlib: dllName, importc: "Tcl_GetErrno".}
-proc SetErrno*(val: int){.cdecl, dynlib: dllName, importc: "Tcl_SetErrno".}
-proc SetPanicProc*(prc: TPanicProc){.cdecl, dynlib: dllName, 
-    importc: "Tcl_SetPanicProc".}
-proc PkgProvide*(interp: pInterp, name: cstring, version: cstring): int{.
-    cdecl, dynlib: dllName, importc: "Tcl_PkgProvide".}
-proc StaticPackage*(interp: pInterp, pkgName: cstring, 
-                        initProc: TPackageInitProc, 
-                        safeInitProc: TPackageInitProc){.cdecl, dynlib: dllName, 
-    importc: "Tcl_StaticPackage".}
-proc CreateEventSource*(setupProc: TEventSetupProc, 
-                            checkProc: TEventCheckProc, 
-                            clientData: TClientData){.cdecl, dynlib: dllName, 
-    importc: "Tcl_CreateEventSource".}
-proc DeleteEventSource*(setupProc: TEventSetupProc, 
-                            checkProc: TEventCheckProc, 
-                            clientData: TClientData){.cdecl, dynlib: dllName, 
-    importc: "Tcl_DeleteEventSource".}
-proc QueueEvent*(evPtr: pEvent, pos: int){.cdecl, dynlib: dllName, 
-    importc: "Tcl_QueueEvent".}
-proc SetMaxBlockTime*(timePtr: pTime){.cdecl, dynlib: dllName, 
-    importc: "Tcl_SetMaxBlockTime".}
-proc DeleteEvents*(prc: TEventDeleteProc, clientData: TClientData){.
-    cdecl, dynlib: dllName, importc: "Tcl_DeleteEvents".}
-proc DoOneEvent*(flags: int): int{.cdecl, dynlib: dllName, 
-                                       importc: "Tcl_DoOneEvent".}
-proc DoWhenIdle*(prc: TIdleProc, clientData: TClientData){.cdecl, 
-    dynlib: dllName, importc: "Tcl_DoWhenIdle".}
-proc CancelIdleCall*(prc: TIdleProc, clientData: TClientData){.cdecl, 
-    dynlib: dllName, importc: "Tcl_CancelIdleCall".}
-proc CreateTimerHandler*(milliseconds: int, prc: TTimerProc, 
-                             clientData: TClientData): TTimerToken{.cdecl, 
-    dynlib: dllName, importc: "Tcl_CreateTimerHandler".}
-proc DeleteTimerHandler*(token: TTimerToken){.cdecl, dynlib: dllName, 
-    importc: "Tcl_DeleteTimerHandler".}
-  #    procedure Tcl_CreateModalTimeout(milliseconds: integer; prc: TTclTimerProc; clientData: Tcl_ClientData); cdecl; external dllName;
-  #    procedure Tcl_DeleteModalTimeout(prc: TTclTimerProc; clientData: Tcl_ClientData); cdecl; external dllName;
-proc SplitList*(interp: pInterp, list: cstring, argcPtr: var int, 
-                    argvPtr: var TArgv): int{.cdecl, dynlib: dllName, 
-    importc: "Tcl_SplitList".}
-proc Merge*(argc: int, argv: TArgv): cstring{.cdecl, dynlib: dllName, 
-    importc: "Tcl_Merge".}
-proc Free*(p: cstring){.cdecl, dynlib: dllName, importc: "Tcl_Free".}
-proc Init*(interp: pInterp): int{.cdecl, dynlib: dllName, 
-                                      importc: "Tcl_Init".}
-  #    procedure Tcl_InterpDeleteProc(clientData: Tcl_ClientData; interp: pTcl_Interp); cdecl; external dllName;
-proc GetAssocData*(interp: pInterp, key: cstring, prc: var TInterpDeleteProc): TClientData{.
-    cdecl, dynlib: dllName, importc: "Tcl_GetAssocData".}
-proc DeleteAssocData*(interp: pInterp, key: cstring){.cdecl, 
-    dynlib: dllName, importc: "Tcl_DeleteAssocData".}
-proc SetAssocData*(interp: pInterp, key: cstring, prc: TInterpDeleteProc, 
-                       clientData: TClientData){.cdecl, dynlib: dllName, 
-    importc: "Tcl_SetAssocData".}
-proc IsSafe*(interp: pInterp): int{.cdecl, dynlib: dllName, 
-                                        importc: "Tcl_IsSafe".}
-proc MakeSafe*(interp: pInterp): int{.cdecl, dynlib: dllName, 
-    importc: "Tcl_MakeSafe".}
-proc CreateSlave*(interp: pInterp, slaveName: cstring, isSafe: int): pInterp{.
-    cdecl, dynlib: dllName, importc: "Tcl_CreateSlave".}
-proc GetSlave*(interp: pInterp, slaveName: cstring): pInterp{.cdecl, 
-    dynlib: dllName, importc: "Tcl_GetSlave".}
-proc GetMaster*(interp: pInterp): pInterp{.cdecl, dynlib: dllName, 
-    importc: "Tcl_GetMaster".}
-proc GetInterpPath*(askingInterp: pInterp, slaveInterp: pInterp): int{.
-    cdecl, dynlib: dllName, importc: "Tcl_GetInterpPath".}
-proc CreateAlias*(slaveInterp: pInterp, srcCmd: cstring, 
-                      targetInterp: pInterp, targetCmd: cstring, argc: int, 
-                      argv: TArgv): int{.cdecl, dynlib: dllName, 
-    importc: "Tcl_CreateAlias".}
-proc GetAlias*(interp: pInterp, srcCmd: cstring, targetInterp: var pInterp, 
-                   targetCmd: var cstring, argc: var int, argv: var TArgv): int{.
-    cdecl, dynlib: dllName, importc: "Tcl_GetAlias".}
-proc ExposeCommand*(interp: pInterp, hiddenCmdName: cstring, 
-                        cmdName: cstring): int{.cdecl, dynlib: dllName, 
-    importc: "Tcl_ExposeCommand".}
-proc HideCommand*(interp: pInterp, cmdName: cstring, hiddenCmdName: cstring): int{.
-    cdecl, dynlib: dllName, importc: "Tcl_HideCommand".}
-proc EventuallyFree*(clientData: TClientData, freeProc: TFreeProc){.
-    cdecl, dynlib: dllName, importc: "Tcl_EventuallyFree".}
-proc Preserve*(clientData: TClientData){.cdecl, dynlib: dllName, 
-    importc: "Tcl_Preserve".}
-proc Release*(clientData: TClientData){.cdecl, dynlib: dllName, 
-    importc: "Tcl_Release".}
-proc InterpDeleted*(interp: pInterp): int{.cdecl, dynlib: dllName, 
-    importc: "Tcl_InterpDeleted".}
-proc GetCommandInfo*(interp: pInterp, cmdName: cstring, 
-                         info: var TCmdInfo): int{.cdecl, dynlib: dllName, 
-    importc: "Tcl_GetCommandInfo".}
-proc SetCommandInfo*(interp: pInterp, cmdName: cstring, 
-                         info: var TCmdInfo): int{.cdecl, dynlib: dllName, 
-    importc: "Tcl_SetCommandInfo".}
-proc FindExecutable*(path: cstring){.cdecl, dynlib: dllName, 
-    importc: "Tcl_FindExecutable".}
-proc GetStringResult*(interp: pInterp): cstring{.cdecl, dynlib: dllName, 
-    importc: "Tcl_GetStringResult".}
-  #v1.0
-proc FindCommand*(interp: pInterp, cmdName: cstring, 
-                      contextNsPtr: pNamespace, flags: int): TCommand{.cdecl, 
-    dynlib: dllName, importc: "Tcl_FindCommand".}
-  #v1.0
-proc DeleteCommandFromToken*(interp: pInterp, cmd: pCommand): int{.cdecl, 
-    dynlib: dllName, importc: "Tcl_DeleteCommandFromToken".}
-proc CreateNamespace*(interp: pInterp, name: cstring, 
-                          clientData: TClientData, 
-                          deleteProc: TNamespaceDeleteProc): pNamespace{.cdecl, 
-    dynlib: dllName, importc: "Tcl_CreateNamespace".}
-  #v1.0
-proc DeleteNamespace*(namespacePtr: pNamespace){.cdecl, dynlib: dllName, 
-    importc: "Tcl_DeleteNamespace".}
-proc FindNamespace*(interp: pInterp, name: cstring, 
-                        contextNsPtr: pNamespace, flags: int): pNamespace{.
-    cdecl, dynlib: dllName, importc: "Tcl_FindNamespace".}
-proc Tcl_Export*(interp: pInterp, namespacePtr: pNamespace, pattern: cstring, 
-                 resetListFirst: int): int{.cdecl, dynlib: dllName, 
-    importc: "Tcl_Export".}
-proc Tcl_Import*(interp: pInterp, namespacePtr: pNamespace, pattern: cstring, 
-                 allowOverwrite: int): int{.cdecl, dynlib: dllName, 
-    importc: "Tcl_Import".}
-proc GetCurrentNamespace*(interp: pInterp): pNamespace{.cdecl, 
-    dynlib: dllName, importc: "Tcl_GetCurrentNamespace".}
-proc GetGlobalNamespace*(interp: pInterp): pNamespace{.cdecl, 
-    dynlib: dllName, importc: "Tcl_GetGlobalNamespace".}
-proc PushCallFrame*(interp: pInterp, callFramePtr: var TCallFrame, 
-                        namespacePtr: pNamespace, isProcCallFrame: int): int{.
-    cdecl, dynlib: dllName, importc: "Tcl_PushCallFrame".}
-proc PopCallFrame*(interp: pInterp){.cdecl, dynlib: dllName, 
-    importc: "Tcl_PopCallFrame".}
-proc VarEval*(interp: pInterp): int{.cdecl, varargs, dynlib: dllName, 
-    importc: "Tcl_VarEval".}
-  # For TkConsole.c *
-proc RecordAndEval*(interp: pInterp, cmd: cstring, flags: int): int{.cdecl, 
-    dynlib: dllName, importc: "Tcl_RecordAndEval".}
-proc GlobalEval*(interp: pInterp, command: cstring): int{.cdecl, 
-    dynlib: dllName, importc: "Tcl_GlobalEval".}
-proc DStringFree*(dsPtr: pDString){.cdecl, dynlib: dllName, 
-                                        importc: "Tcl_DStringFree".}
-proc DStringAppend*(dsPtr: pDString, str: cstring, length: int): cstring{.
-    cdecl, dynlib: dllName, importc: "Tcl_DStringAppend".}
-proc DStringAppendElement*(dsPtr: pDString, str: cstring): cstring{.cdecl, 
-    dynlib: dllName, importc: "Tcl_DStringAppendElement".}
-proc DStringInit*(dsPtr: pDString){.cdecl, dynlib: dllName, 
-                                        importc: "Tcl_DStringInit".}
-proc AppendResult*(interp: pInterp){.cdecl, varargs, dynlib: dllName, 
-    importc: "Tcl_AppendResult".}
-  # actually a "C" var array
-proc SetStdChannel*(channel: pChannel, typ: int){.cdecl, dynlib: dllName, 
-    importc: "Tcl_SetStdChannel".}
-proc SetChannelOption*(interp: pInterp, chan: pChannel, optionName: cstring, 
-                           newValue: cstring): int{.cdecl, dynlib: dllName, 
-    importc: "Tcl_SetChannelOption".}
-proc GetChannelOption*(interp: pInterp, chan: pChannel, optionName: cstring, 
-                           dsPtr: pDString): int{.cdecl, dynlib: dllName, 
-    importc: "Tcl_GetChannelOption".}
-proc CreateChannel*(typePtr: pChannelType, chanName: cstring, 
-                        instanceData: TClientData, mask: int): pChannel{.
-    cdecl, dynlib: dllName, importc: "Tcl_CreateChannel".}
-proc RegisterChannel*(interp: pInterp, channel: pChannel){.cdecl, 
-    dynlib: dllName, importc: "Tcl_RegisterChannel".}
-proc UnregisterChannel*(interp: pInterp, channel: pChannel): int{.cdecl, 
-    dynlib: dllName, importc: "Tcl_UnregisterChannel".}
-proc CreateChannelHandler*(chan: pChannel, mask: int, prc: TChannelProc, 
-                               clientData: TClientData){.cdecl, 
-    dynlib: dllName, importc: "Tcl_CreateChannelHandler".}
-proc GetChannel*(interp: pInterp, chanName: cstring, modePtr: pInteger): pChannel{.
-    cdecl, dynlib: dllName, importc: "Tcl_GetChannel".}
-proc GetStdChannel*(typ: int): pChannel{.cdecl, dynlib: dllName, 
-    importc: "Tcl_GetStdChannel".}
-proc Gets*(chan: pChannel, dsPtr: pDString): int{.cdecl, dynlib: dllName, 
-    importc: "Tcl_Gets".}
-proc Write*(chan: pChannel, s: cstring, slen: int): int{.cdecl, 
-    dynlib: dllName, importc: "Tcl_Write".}
-proc Flush*(chan: pChannel): int{.cdecl, dynlib: dllName, 
-                                      importc: "Tcl_Flush".}
-  #    TclWinLoadLibrary      = function(name: PChar): HMODULE; cdecl; external dllName;
-proc CreateExitHandler*(prc: TClientDataProc, clientData: TClientData){.
-    cdecl, dynlib: dllName, importc: "Tcl_CreateExitHandler".}
-proc DeleteExitHandler*(prc: TClientDataProc, clientData: TClientData){.
-    cdecl, dynlib: dllName, importc: "Tcl_DeleteExitHandler".}
-proc GetStringFromObj*(pObj: pObj, pLen: pInteger): cstring{.cdecl, 
-    dynlib: dllName, importc: "Tcl_GetStringFromObj".}
-proc CreateObjCommand*(interp: pInterp, name: cstring, cmdProc: TObjCmdProc, 
-                           clientData: TClientData, 
-                           deleteProc: TCmdDeleteProc): pCommand{.cdecl, 
-    dynlib: dllName, importc: "Tcl_CreateObjCommand".}
-proc NewStringObj*(bytes: cstring, length: int): pObj{.cdecl, 
-    dynlib: dllName, importc: "Tcl_NewStringObj".}
-  #    procedure TclFreeObj(pObj: pTcl_Obj); cdecl; external dllName;
-proc EvalObj*(interp: pInterp, pObj: pObj): int{.cdecl, dynlib: dllName, 
-    importc: "Tcl_EvalObj".}
-proc GlobalEvalObj*(interp: pInterp, pObj: pObj): int{.cdecl, 
-    dynlib: dllName, importc: "Tcl_GlobalEvalObj".}
-proc RegComp*(exp: cstring): pointer{.cdecl, dynlib: dllName, 
-    importc: "TclRegComp".}
-
-proc RegExec*(prog: pointer, str: cstring, start: cstring): int{.cdecl, 
-    dynlib: dllName, importc: "TclRegExec".}
-
-proc RegError*(msg: cstring){.cdecl, dynlib: dllName, importc: "TclRegError".}
-
-proc GetRegError*(): cstring{.cdecl, dynlib: dllName, 
-                              importc: "TclGetRegError".}
-
-proc RegExpRange*(prog: pointer, index: int, head: var cstring, 
-                      tail: var cstring){.cdecl, dynlib: dllName, 
-    importc: "Tcl_RegExpRange".}
-    
-proc GetCommandTable*(interp: pInterp): pHashTable = 
-  if interp != nil: 
-    result = cast[pHashTable](cast[int](interp) + sizeof(Interp) +
-        sizeof(pointer))
-
-proc CreateHashEntry*(tablePtr: pHashTable, key: cstring, 
-                      newPtr: pInteger): pHashEntry = 
-  result = cast[pHashTable](tablePtr).createProc(tablePtr, key, newPtr)
-
-proc FindHashEntry*(tablePtr: pHashTable, key: cstring): pHashEntry = 
-  result = cast[pHashTable](tablePtr).findProc(tablePtr, key)
-
-proc SetHashValue*(h: pHashEntry, clientData: TClientData) = 
-  h.clientData = clientData
-
-proc GetHashValue*(h: pHashEntry): TClientData = 
-  result = h.clientData
-
-proc IncrRefCount*(pObj: pObj) = 
-  inc(pObj.refCount)
-
-proc DecrRefCount*(pObj: pObj) = 
-  dec(pObj.refCount)
-  if pObj.refCount <= 0: 
-    dealloc(pObj)
-
-proc IsShared*(pObj: pObj): bool = 
-  return pObj.refCount > 1
-
-proc GetHashKey*(hashTbl: pHashTable, hashEntry: pHashEntry): cstring = 
-  if hashTbl == nil or hashEntry == nil: 
-    result = nil
-  else: 
-    result = hashEntry.key