diff options
Diffstat (limited to 'lib/base/devel/python.nim')
-rw-r--r-- | lib/base/devel/python.nim | 1877 |
1 files changed, 0 insertions, 1877 deletions
diff --git a/lib/base/devel/python.nim b/lib/base/devel/python.nim deleted file mode 100644 index d9e87af8c..000000000 --- a/lib/base/devel/python.nim +++ /dev/null @@ -1,1877 +0,0 @@ -# -# Light-weight binding for the Python interpreter -# (c) 2008 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 -#************************************************************************ - -import - dyncalls - -when defined(windows): - const - DllName* = "python24.dll" -else: - const - DllName* = "libpython2.4.so" # for UNIX systems -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 - TPChar* = array[0..16000, cstring] - PPChar* = ptr TPChar - PInt* = ptr int - PDouble* = ptr float64 - PFloat* = ptr float - PLong* = ptr int32 - PShort* = ptr int8 - PString* = ptr cstring - -type - PP_frozen* = ptr Pfrozen - P_frozen* = ptr Tfrozen - PPyObject* = ptr PyObject - PPPyObject* = ptr PPyObject - PPPPyObject* = ptr PPPyObject - PPyIntObject* = ptr PyIntObject - PPyTypeObject* = ptr PyTypeObject - PPySliceObject* = ptr PySliceObject - 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: var file, 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, ptr: Pointer): int{.cdecl.} - Tgetwritebufferproc* = proc (ob1: PPyObject, i: int, ptr: 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, ptr: Pointer): int{.cdecl.} - Ttraverseproc* = proc (ob1: PPyObject, proc: visitproc, ptr: 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 #/ jah 29-sep-2000: updated for python 2.0 - #/ added from .h - 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 PyMappingMethods #/ jah 29-sep-2000: updated for python 2.0 - #/ added from .h - 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.} = 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 - set_*: 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 # Instance method objects are used for two purposes: - # (a) as bound instance methods (returned by instancename.methodname) - # (b) as unbound methods (returned by ClassName.methodname) - # In case (b), im_self is NULL - # - 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, PyTryBlock] # 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 # from datetime.h - #* Fields are packed into successive bytes, each viewed as unsigned and - # * big-endian, unless otherwise noted: - # * - # * byte offset - # * 0 year 2 bytes, 1-9999 - # * 2 month 1 byte, 1-12 - # * 3 day 1 byte, 1-31 - # * 4 hour 1 byte, 0-23 - # * 5 minute 1 byte, 0-59 - # * 6 second 1 byte, 0-59 - # * 7 usecond 3 bytes, 0-999999 - # * 10 - # * - wr_object*: PPyObject - wr_callback*: PPyObject - hash*: int32 - wr_prev*: PPyWeakReference - wr_next*: PPyWeakReference - - -const # # of bytes for year, month, and day. - PyDateTime_DATE_DATASIZE* = 4 # # of bytes for hour, minute, second, and usecond. - PyDateTime_TIME_DATASIZE* = 6 # # of bytes for year, month, day, hour, minute, second, and usecond. - PyDateTime_DATETIME_DATASIZE* = 10 - -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 # - #/* The datetime and time types have hashcodes, and an optional tzinfo member, - # * present if and only if hastzinfo is true. - # */ - ##define _PyTZINFO_HEAD \ - # PyObject_HEAD \ - # long hashcode; \ - # char hastzinfo; /* boolean flag */ - # - #* No _PyDateTime_BaseTZInfo is allocated; it's just to have something - # * convenient to cast to, when getting at the hastzinfo member of objects - # * starting with _PyTZINFO_HEAD. - # * - TPyDateTime_BaseTZInfo* = object of TPyObject - hashcode*: int - hastzinfo*: bool # boolean flag - - PPyDateTime_BaseTZInfo* = ptr TPyDateTime_BaseTZInfo #* All time objects are of PyDateTime_TimeType, but that can be allocated - # * in two ways, with or without a tzinfo member. Without is the same as - # * tzinfo == None, but consumes less memory. _PyDateTime_BaseTime is an - # * internal struct used to allocate the right amount of space for the - # * "without" case. - # * - ##define _PyDateTime_TIMEHEAD \ - # _PyTZINFO_HEAD \ - # unsigned char data[_PyDateTime_TIME_DATASIZE]; - # - 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 PyDateTime_Time #* All datetime objects are of PyDateTime_DateTimeType, but that can be - # * allocated in two ways too, just like for time objects above. In addition, - # * the plain date type is a base class for datetime, so it must also have - # * a hastzinfo member (although it's unused there). - # * - TPyDateTime_Date* = object of TPyDateTime_BaseTZInfo - data*: array[0..Pred(PyDateTime_DATE_DATASIZE), int8] - - PPyDateTime_Date* = ptr TPyDateTime_Date # - ##define _PyDateTime_DATETIMEHEAD \ - # _PyTZINFO_HEAD \ - # unsigned char data[_PyDateTime_DATETIME_DATASIZE]; - # - TPyDateTime_BaseDateTime* = object of TPyDateTime_BaseTZInfo # hastzinfo false - data*: array[0..Pred(PyDateTime_DATETIME_DATASIZE), int8] - - PPyDateTime_BaseDateTime* = ptr TPyDateTime_BaseDateTime - TPyDateTime_DateTime* = object of TPyDateTime_BaseTZInfo # hastzinfo true - 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.} # define Python flags. See file pyDebug.h - 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: function(args: PPyObject; nargs, i: integer; p_a: PPPyObject): integer; cdecl; - #PyArg_GetLong: function(args: PPyObject; nargs, i: integer; p_a: PLong): integer; cdecl; - #PyArg_GetShort: function(args: PPyObject; nargs, i: integer; p_a: PShort): integer; cdecl; - #PyArg_GetFloat: function(args: PPyObject; nargs, i: integer; p_a: PFloat): integer; cdecl; - #PyArg_GetString: function(args: PPyObject; nargs, i: integer; p_a: PString): integer; cdecl; - #PyArgs_VaParse: function (args: PPyObject; format: PChar; va_list: array of const): integer; cdecl; - # Does not work! - # Py_VaBuildValue: function (format: PChar; va_list: array of const): PPyObject; cdecl; - #PyBuiltin_Init: procedure; cdecl; - PyComplex_FromCComplex*: proc (c: TPy_complex): PPyObject{.cdecl.} - PyComplex_FromDoubles*: proc (realv, imag: float64): PPyObject{.cdecl.} - PyComplex_RealAsDouble*: proc (op: PPyObject): float64{.cdecl.} - PyComplex_ImagAsDouble*: proc (op: PPyObject): float64{.cdecl.} - PyComplex_AsCComplex*: proc (op: PPyObject): TPy_complex{.cdecl.} - PyCFunction_GetFunction*: proc (ob: PPyObject): Pointer{.cdecl.} - PyCFunction_GetSelf*: proc (ob: PPyObject): PPyObject{.cdecl.} - PyCallable_Check*: proc (ob: PPyObject): int{.cdecl.} - PyCObject_FromVoidPtr*: proc (cobj, destruct: Pointer): PPyObject{.cdecl.} - PyCObject_AsVoidPtr*: proc (ob: PPyObject): Pointer{.cdecl.} - PyClass_New*: proc (ob1, ob2, ob3: PPyObject): PPyObject{.cdecl.} - PyClass_IsSubclass*: proc (ob1, ob2: PPyObject): int{.cdecl.} - Py_InitModule4*: proc (name: cstring, methods: PPyMethodDef, doc: cstring, - passthrough: PPyObject, Api_Version: int): PPyObject{. - cdecl.} - PyErr_BadArgument*: proc (): int{.cdecl.} - PyErr_BadInternalCall*: proc (){.cdecl.} - PyErr_CheckSignals*: proc (): int{.cdecl.} - PyErr_Clear*: proc (){.cdecl.} - PyErr_Fetch*: proc (errtype, errvalue, errtraceback: PPPyObject){.cdecl.} - PyErr_NoMemory*: proc (): PPyObject{.cdecl.} - PyErr_Occurred*: proc (): PPyObject{.cdecl.} - PyErr_Print*: proc (){.cdecl.} - PyErr_Restore*: proc (errtype, errvalue, errtraceback: PPyObject){.cdecl.} - PyErr_SetFromErrno*: proc (ob: PPyObject): PPyObject{.cdecl.} - PyErr_SetNone*: proc (value: PPyObject){.cdecl.} - PyErr_SetObject*: proc (ob1, ob2: PPyObject){.cdecl.} - PyErr_SetString*: proc (ErrorObject: PPyObject, text: cstring){.cdecl.} - PyImport_GetModuleDict*: proc (): PPyObject{.cdecl.} - PyInt_FromLong*: proc (x: int32): PPyObject{.cdecl.} - Py_Initialize*: proc (){.cdecl.} - Py_Exit*: proc (RetVal: int){.cdecl.} - PyEval_GetBuiltins*: proc (): PPyObject{.cdecl.} - PyDict_GetItem*: proc (mp, key: PPyObject): PPyObject{.cdecl.} - PyDict_SetItem*: proc (mp, key, item: PPyObject): int{.cdecl.} - PyDict_DelItem*: proc (mp, key: PPyObject): int{.cdecl.} - PyDict_Clear*: proc (mp: PPyObject){.cdecl.} - PyDict_Next*: proc (mp: PPyObject, pos: PInt, key, value: PPPyObject): int{. - cdecl.} - PyDict_Keys*: proc (mp: PPyObject): PPyObject{.cdecl.} - PyDict_Values*: proc (mp: PPyObject): PPyObject{.cdecl.} - PyDict_Items*: proc (mp: PPyObject): PPyObject{.cdecl.} - PyDict_Size*: proc (mp: PPyObject): int{.cdecl.} - PyDict_DelItemString*: proc (dp: PPyObject, key: cstring): int{.cdecl.} - PyDict_New*: proc (): PPyObject{.cdecl.} - PyDict_GetItemString*: proc (dp: PPyObject, key: cstring): PPyObject{.cdecl.} - PyDict_SetItemString*: proc (dp: PPyObject, key: cstring, item: PPyObject): int{. - cdecl.} - PyDictProxy_New*: proc (obj: PPyObject): PPyObject{.cdecl.} - PyModule_GetDict*: proc (module: PPyObject): PPyObject{.cdecl.} - PyObject_Str*: proc (v: PPyObject): PPyObject{.cdecl.} - PyRun_String*: proc (str: cstring, start: int, globals: PPyObject, - locals: PPyObject): PPyObject{.cdecl.} - PyRun_SimpleString*: proc (str: cstring): int{.cdecl.} - PyString_AsString*: proc (ob: PPyObject): cstring{.cdecl.} - PyString_FromString*: proc (str: cstring): PPyObject{.cdecl.} - PySys_SetArgv*: proc (argc: int, argv: PPChar){.cdecl.} #+ means, Grzegorz or me has tested his non object version of this function - #+ - PyCFunction_New*: proc (md: PPyMethodDef, ob: PPyObject): PPyObject{.cdecl.} #+ - PyEval_CallObject*: proc (ob1, ob2: PPyObject): PPyObject{.cdecl.} #- - PyEval_CallObjectWithKeywords*: proc (ob1, ob2, ob3: PPyObject): PPyObject{. - cdecl.} #- - PyEval_GetFrame*: proc (): PPyObject{.cdecl.} #- - PyEval_GetGlobals*: proc (): PPyObject{.cdecl.} #- - PyEval_GetLocals*: proc (): PPyObject{.cdecl.} #- - #PyEval_GetOwner:function:PPyObject; cdecl; - #- - PyEval_GetRestricted*: proc (): int{.cdecl.} #- - PyEval_InitThreads*: proc (){.cdecl.} #- - PyEval_RestoreThread*: proc (tstate: PPyThreadState){.cdecl.} #- - PyEval_SaveThread*: proc (): PPyThreadState{.cdecl.} #- - PyFile_FromString*: proc (pc1, pc2: cstring): PPyObject{.cdecl.} #- - PyFile_GetLine*: proc (ob: PPyObject, i: int): PPyObject{.cdecl.} #- - PyFile_Name*: proc (ob: PPyObject): PPyObject{.cdecl.} #- - PyFile_SetBufSize*: proc (ob: PPyObject, i: int){.cdecl.} #- - PyFile_SoftSpace*: proc (ob: PPyObject, i: int): int{.cdecl.} #- - PyFile_WriteObject*: proc (ob1, ob2: PPyObject, i: int): int{.cdecl.} #- - PyFile_WriteString*: proc (s: cstring, ob: PPyObject){.cdecl.} #+ - PyFloat_AsDouble*: proc (ob: PPyObject): float64{.cdecl.} #+ - PyFloat_FromDouble*: proc (db: float64): PPyObject{.cdecl.} #- - PyFunction_GetCode*: proc (ob: PPyObject): PPyObject{.cdecl.} #- - PyFunction_GetGlobals*: proc (ob: PPyObject): PPyObject{.cdecl.} #- - PyFunction_New*: proc (ob1, ob2: PPyObject): PPyObject{.cdecl.} #- - PyImport_AddModule*: proc (name: cstring): PPyObject{.cdecl.} #- - PyImport_Cleanup*: proc (){.cdecl.} #- - PyImport_GetMagicNumber*: proc (): int32{.cdecl.} #+ - PyImport_ImportFrozenModule*: proc (key: cstring): int{.cdecl.} #+ - PyImport_ImportModule*: proc (name: cstring): PPyObject{.cdecl.} #+ - PyImport_Import*: proc (name: PPyObject): PPyObject{.cdecl.} #- - #PyImport_Init:procedure; cdecl; - #- - PyImport_ReloadModule*: proc (ob: PPyObject): PPyObject{.cdecl.} #- - PyInstance_New*: proc (obClass, obArg, obKW: PPyObject): PPyObject{.cdecl.} #+ - PyInt_AsLong*: proc (ob: PPyObject): int32{.cdecl.} #- - PyList_Append*: proc (ob1, ob2: PPyObject): int{.cdecl.} #- - PyList_AsTuple*: proc (ob: PPyObject): PPyObject{.cdecl.} #+ - PyList_GetItem*: proc (ob: PPyObject, i: int): PPyObject{.cdecl.} #- - PyList_GetSlice*: proc (ob: PPyObject, i1, i2: int): PPyObject{.cdecl.} #- - PyList_Insert*: proc (dp: PPyObject, idx: int, item: PPyObject): int{.cdecl.} #- - PyList_New*: proc (size: int): PPyObject{.cdecl.} #- - PyList_Reverse*: proc (ob: PPyObject): int{.cdecl.} #- - PyList_SetItem*: proc (dp: PPyObject, idx: int, item: PPyObject): int{.cdecl.} #- - PyList_SetSlice*: proc (ob: PPyObject, i1, i2: int, ob2: PPyObject): int{. - cdecl.} #+ - PyList_Size*: proc (ob: PPyObject): int{.cdecl.} #- - PyList_Sort*: proc (ob: PPyObject): int{.cdecl.} #- - PyLong_AsDouble*: proc (ob: PPyObject): float64{.cdecl.} #+ - PyLong_AsLong*: proc (ob: PPyObject): int32{.cdecl.} #+ - PyLong_FromDouble*: proc (db: float64): PPyObject{.cdecl.} #+ - PyLong_FromLong*: proc (l: int32): PPyObject{.cdecl.} #- - PyLong_FromString*: proc (pc: cstring, ppc: var cstring, i: int): PPyObject{. - cdecl.} #- - PyLong_FromUnsignedLong*: proc (val: int): PPyObject{.cdecl.} #- - PyLong_AsUnsignedLong*: proc (ob: PPyObject): int{.cdecl.} #- - PyLong_FromUnicode*: proc (ob: PPyObject, a, b: int): PPyObject{.cdecl.} #- - PyLong_FromLongLong*: proc (val: Int64): PPyObject{.cdecl.} #- - PyLong_AsLongLong*: proc (ob: PPyObject): Int64{.cdecl.} #- - PyMapping_Check*: proc (ob: PPyObject): int{.cdecl.} #- - PyMapping_GetItemString*: proc (ob: PPyObject, key: cstring): PPyObject{.cdecl.} #- - PyMapping_HasKey*: proc (ob, key: PPyObject): int{.cdecl.} #- - PyMapping_HasKeyString*: proc (ob: PPyObject, key: cstring): int{.cdecl.} #- - PyMapping_Length*: proc (ob: PPyObject): int{.cdecl.} #- - PyMapping_SetItemString*: proc (ob: PPyObject, key: cstring, value: PPyObject): int{. - cdecl.} #- - PyMethod_Class*: proc (ob: PPyObject): PPyObject{.cdecl.} #- - PyMethod_Function*: proc (ob: PPyObject): PPyObject{.cdecl.} #- - PyMethod_New*: proc (ob1, ob2, ob3: PPyObject): PPyObject{.cdecl.} #- - PyMethod_Self*: proc (ob: PPyObject): PPyObject{.cdecl.} #- - PyModule_GetName*: proc (ob: PPyObject): cstring{.cdecl.} #- - PyModule_New*: proc (key: cstring): PPyObject{.cdecl.} #- - PyNumber_Absolute*: proc (ob: PPyObject): PPyObject{.cdecl.} #- - PyNumber_Add*: proc (ob1, ob2: PPyObject): PPyObject{.cdecl.} #- - PyNumber_And*: proc (ob1, ob2: PPyObject): PPyObject{.cdecl.} #- - PyNumber_Check*: proc (ob: PPyObject): int{.cdecl.} #- - PyNumber_Coerce*: proc (ob1, ob2: var PPyObject): int{.cdecl.} #- - PyNumber_Divide*: proc (ob1, ob2: PPyObject): PPyObject{.cdecl.} #- - PyNumber_FloorDivide*: proc (ob1, ob2: PPyObject): PPyObject{.cdecl.} #- - PyNumber_TrueDivide*: proc (ob1, ob2: PPyObject): PPyObject{.cdecl.} #- - PyNumber_Divmod*: proc (ob1, ob2: PPyObject): PPyObject{.cdecl.} #- - PyNumber_Float*: proc (ob: PPyObject): PPyObject{.cdecl.} #- - PyNumber_Int*: proc (ob: PPyObject): PPyObject{.cdecl.} #- - PyNumber_Invert*: proc (ob: PPyObject): PPyObject{.cdecl.} #- - PyNumber_Long*: proc (ob: PPyObject): PPyObject{.cdecl.} #- - PyNumber_Lshift*: proc (ob1, ob2: PPyObject): PPyObject{.cdecl.} #- - PyNumber_Multiply*: proc (ob1, ob2: PPyObject): PPyObject{.cdecl.} #- - PyNumber_Negative*: proc (ob: PPyObject): PPyObject{.cdecl.} #- - PyNumber_Or*: proc (ob1, ob2: PPyObject): PPyObject{.cdecl.} #- - PyNumber_Positive*: proc (ob: PPyObject): PPyObject{.cdecl.} #- - PyNumber_Power*: proc (ob1, ob2, ob3: PPyObject): PPyObject{.cdecl.} #- - PyNumber_Remainder*: proc (ob1, ob2: PPyObject): PPyObject{.cdecl.} #- - PyNumber_Rshift*: proc (ob1, ob2: PPyObject): PPyObject{.cdecl.} #- - PyNumber_Subtract*: proc (ob1, ob2: PPyObject): PPyObject{.cdecl.} #- - PyNumber_Xor*: proc (ob1, ob2: PPyObject): PPyObject{.cdecl.} #- - PyOS_InitInterrupts*: proc (){.cdecl.} #- - PyOS_InterruptOccurred*: proc (): int{.cdecl.} #- - PyObject_CallObject*: proc (ob, args: PPyObject): PPyObject{.cdecl.} #- - PyObject_Compare*: proc (ob1, ob2: PPyObject): int{.cdecl.} #- - PyObject_GetAttr*: proc (ob1, ob2: PPyObject): PPyObject{.cdecl.} #+ - PyObject_GetAttrString*: proc (ob: PPyObject, c: cstring): PPyObject{.cdecl.} #- - PyObject_GetItem*: proc (ob, key: PPyObject): PPyObject{.cdecl.} #- - PyObject_DelItem*: proc (ob, key: PPyObject): PPyObject{.cdecl.} #- - PyObject_HasAttrString*: proc (ob: PPyObject, key: cstring): int{.cdecl.} #- - PyObject_Hash*: proc (ob: PPyObject): int32{.cdecl.} #- - PyObject_IsTrue*: proc (ob: PPyObject): int{.cdecl.} #- - PyObject_Length*: proc (ob: PPyObject): int{.cdecl.} #- - PyObject_Repr*: proc (ob: PPyObject): PPyObject{.cdecl.} #- - PyObject_SetAttr*: proc (ob1, ob2, ob3: PPyObject): int{.cdecl.} #- - PyObject_SetAttrString*: proc (ob: PPyObject, key: cstring, value: PPyObject): int{. - cdecl.} #- - PyObject_SetItem*: proc (ob1, ob2, ob3: PPyObject): int{.cdecl.} #- - PyObject_Init*: proc (ob: PPyObject, t: PPyTypeObject): PPyObject{.cdecl.} #- - PyObject_InitVar*: proc (ob: PPyObject, t: PPyTypeObject, size: int): PPyObject{. - cdecl.} #- - PyObject_New*: proc (t: PPyTypeObject): PPyObject{.cdecl.} #- - PyObject_NewVar*: proc (t: PPyTypeObject, size: int): PPyObject{.cdecl.} - PyObject_Free*: proc (ob: PPyObject){.cdecl.} #- - PyObject_IsInstance*: proc (inst, cls: PPyObject): int{.cdecl.} #- - PyObject_IsSubclass*: proc (derived, cls: PPyObject): int{.cdecl.} - PyObject_GenericGetAttr*: proc (obj, name: PPyObject): PPyObject{.cdecl.} - PyObject_GenericSetAttr*: proc (obj, name, value: PPyObject): int{.cdecl.} #- - PyObject_GC_Malloc*: proc (size: int): PPyObject{.cdecl.} #- - PyObject_GC_New*: proc (t: PPyTypeObject): PPyObject{.cdecl.} #- - PyObject_GC_NewVar*: proc (t: PPyTypeObject, size: int): PPyObject{.cdecl.} #- - PyObject_GC_Resize*: proc (t: PPyObject, newsize: int): PPyObject{.cdecl.} #- - PyObject_GC_Del*: proc (ob: PPyObject){.cdecl.} #- - PyObject_GC_Track*: proc (ob: PPyObject){.cdecl.} #- - PyObject_GC_UnTrack*: proc (ob: PPyObject){.cdecl.} #- - PyRange_New*: proc (l1, l2, l3: int32, i: int): PPyObject{.cdecl.} #- - PySequence_Check*: proc (ob: PPyObject): int{.cdecl.} #- - PySequence_Concat*: proc (ob1, ob2: PPyObject): PPyObject{.cdecl.} #- - PySequence_Count*: proc (ob1, ob2: PPyObject): int{.cdecl.} #- - PySequence_GetItem*: proc (ob: PPyObject, i: int): PPyObject{.cdecl.} #- - PySequence_GetSlice*: proc (ob: PPyObject, i1, i2: int): PPyObject{.cdecl.} #- - PySequence_In*: proc (ob1, ob2: PPyObject): int{.cdecl.} #- - PySequence_Index*: proc (ob1, ob2: PPyObject): int{.cdecl.} #- - PySequence_Length*: proc (ob: PPyObject): int{.cdecl.} #- - PySequence_Repeat*: proc (ob: PPyObject, count: int): PPyObject{.cdecl.} #- - PySequence_SetItem*: proc (ob: PPyObject, i: int, value: PPyObject): int{. - cdecl.} #- - PySequence_SetSlice*: proc (ob: PPyObject, i1, i2: int, value: PPyObject): int{. - cdecl.} #- - PySequence_DelSlice*: proc (ob: PPyObject, i1, i2: int): int{.cdecl.} #- - PySequence_Tuple*: proc (ob: PPyObject): PPyObject{.cdecl.} #- - PySequence_Contains*: proc (ob, value: PPyObject): int{.cdecl.} #- - PySlice_GetIndices*: proc (ob: PPySliceObject, len: int, - start, stop, step: var int): int{.cdecl.} #- - PySlice_GetIndicesEx*: proc (ob: PPySliceObject, len: int, - start, stop, step, slicelength: var int): int{. - cdecl.} #- - PySlice_New*: proc (start, stop, step: PPyObject): PPyObject{.cdecl.} #- - PyString_Concat*: proc (ob1: var PPyObject, ob2: PPyObject){.cdecl.} #- - PyString_ConcatAndDel*: proc (ob1: var PPyObject, ob2: PPyObject){.cdecl.} #- - PyString_Format*: proc (ob1, ob2: PPyObject): PPyObject{.cdecl.} #- - PyString_FromStringAndSize*: proc (s: cstring, i: int): PPyObject{.cdecl.} #- - PyString_Size*: proc (ob: PPyObject): int{.cdecl.} #- - PyString_DecodeEscape*: proc (s: cstring, length: int, errors: cstring, - unicode: int, recode_encoding: cstring): PPyObject{. - cdecl.} #- - PyString_Repr*: proc (ob: PPyObject, smartquotes: int): PPyObject{.cdecl.} #+ - PySys_GetObject*: proc (s: cstring): PPyObject{.cdecl.} #- - #PySys_Init:procedure; cdecl; - #- - PySys_SetObject*: proc (s: cstring, ob: PPyObject): int{.cdecl.} #- - PySys_SetPath*: proc (path: cstring){.cdecl.} #- - #PyTraceBack_Fetch:function:PPyObject; cdecl; - #- - PyTraceBack_Here*: proc (p: pointer): int{.cdecl.} #- - PyTraceBack_Print*: proc (ob1, ob2: PPyObject): int{.cdecl.} #- - #PyTraceBack_Store:function (ob:PPyObject):integer; cdecl; - #+ - PyTuple_GetItem*: proc (ob: PPyObject, i: int): PPyObject{.cdecl.} #- - PyTuple_GetSlice*: proc (ob: PPyObject, i1, i2: int): PPyObject{.cdecl.} #+ - PyTuple_New*: proc (size: int): PPyObject{.cdecl.} #+ - PyTuple_SetItem*: proc (ob: PPyObject, key: int, value: PPyObject): int{.cdecl.} #+ - PyTuple_Size*: proc (ob: PPyObject): int{.cdecl.} #+ - PyType_IsSubtype*: proc (a, b: PPyTypeObject): int{.cdecl.} - PyType_GenericAlloc*: proc (atype: PPyTypeObject, nitems: int): PPyObject{. - cdecl.} - PyType_GenericNew*: proc (atype: PPyTypeObject, args, kwds: PPyObject): PPyObject{. - cdecl.} - PyType_Ready*: proc (atype: PPyTypeObject): int{.cdecl.} #+ - PyUnicode_FromWideChar*: proc (w: PWideChar, size: int): PPyObject{.cdecl.} #+ - PyUnicode_AsWideChar*: proc (unicode: PPyObject, w: PWideChar, size: int): int{. - cdecl.} #- - PyUnicode_FromOrdinal*: proc (ordinal: int): PPyObject{.cdecl.} - PyWeakref_GetObject*: proc (ref: PPyObject): PPyObject{.cdecl.} - PyWeakref_NewProxy*: proc (ob, callback: PPyObject): PPyObject{.cdecl.} - PyWeakref_NewRef*: proc (ob, callback: PPyObject): PPyObject{.cdecl.} - PyWrapper_New*: proc (ob1, ob2: PPyObject): PPyObject{.cdecl.} - PyBool_FromLong*: proc (ok: int): PPyObject{.cdecl.} #- - Py_AtExit*: proc (proc: proc ()): int{.cdecl.} #- - #Py_Cleanup:procedure; cdecl; - #- - Py_CompileString*: proc (s1, s2: cstring, i: int): PPyObject{.cdecl.} #- - Py_FatalError*: proc (s: cstring){.cdecl.} #- - Py_FindMethod*: proc (md: PPyMethodDef, ob: PPyObject, key: cstring): PPyObject{. - cdecl.} #- - Py_FindMethodInChain*: proc (mc: PPyMethodChain, ob: PPyObject, key: cstring): PPyObject{. - cdecl.} #- - Py_FlushLine*: proc (){.cdecl.} #+ - Py_Finalize*: proc (){.cdecl.} #- - PyErr_ExceptionMatches*: proc (exc: PPyObject): int{.cdecl.} #- - PyErr_GivenExceptionMatches*: proc (raised_exc, exc: PPyObject): int{.cdecl.} #- - PyEval_EvalCode*: proc (co: PPyCodeObject, globals, locals: PPyObject): PPyObject{. - cdecl.} #+ - Py_GetVersion*: proc (): cstring{.cdecl.} #+ - Py_GetCopyright*: proc (): cstring{.cdecl.} #+ - Py_GetExecPrefix*: proc (): cstring{.cdecl.} #+ - Py_GetPath*: proc (): cstring{.cdecl.} #+ - Py_GetPrefix*: proc (): cstring{.cdecl.} #+ - Py_GetProgramName*: proc (): cstring{.cdecl.} #- - PyParser_SimpleParseString*: proc (str: cstring, start: int): PNode{.cdecl.} #- - PyNode_Free*: proc (n: PNode){.cdecl.} #- - PyErr_NewException*: proc (name: cstring, base, dict: PPyObject): PPyObject{. - cdecl.} #- - Py_Malloc*: proc (size: int): Pointer #- - PyMem_Malloc*: proc (size: int): Pointer #- - PyObject_CallMethod*: proc (obj: PPyObject, method, format: cstring): PPyObject{. - cdecl.} #New exported Objects in Python 1.5 - Py_SetProgramName*: proc (name: cstring){.cdecl.} - Py_IsInitialized*: proc (): int{.cdecl.} - Py_GetProgramFullPath*: proc (): cstring{.cdecl.} - Py_NewInterpreter*: proc (): PPyThreadState{.cdecl.} - Py_EndInterpreter*: proc (tstate: PPyThreadState){.cdecl.} - PyEval_AcquireLock*: proc (){.cdecl.} - PyEval_ReleaseLock*: proc (){.cdecl.} - PyEval_AcquireThread*: proc (tstate: PPyThreadState){.cdecl.} - PyEval_ReleaseThread*: proc (tstate: PPyThreadState){.cdecl.} - PyInterpreterState_New*: proc (): PPyInterpreterState{.cdecl.} - PyInterpreterState_Clear*: proc (interp: PPyInterpreterState){.cdecl.} - PyInterpreterState_Delete*: proc (interp: PPyInterpreterState){.cdecl.} - PyThreadState_New*: proc (interp: PPyInterpreterState): PPyThreadState{.cdecl.} - PyThreadState_Clear*: proc (tstate: PPyThreadState){.cdecl.} - PyThreadState_Delete*: proc (tstate: PPyThreadState){.cdecl.} - PyThreadState_Get*: proc (): PPyThreadState{.cdecl.} - PyThreadState_Swap*: proc (tstate: PPyThreadState): PPyThreadState{.cdecl.} - -#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 PyWeakref_Check*(obj: PPyObject): bool -proc PyWeakref_CheckRef*(obj: PPyObject): bool -proc PyWeakref_CheckProxy*(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( - Format("Loaded module %.200s not found in sys.modules", [name]))) - 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 == PPyTypeObject(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 == PPyTypeObject(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 == PPyTypeObject(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 == PPyTypeObject(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 == PPyTypeObject(PyTuple_Type)) - -proc PyInstance_Check(obj: PPyObject): bool = - Result = (obj != nil) and (obj^ .ob_type == PPyTypeObject(PyInstance_Type)) - -proc PyClass_Check(obj: PPyObject): bool = - Result = (obj != nil) and (obj^ .ob_type == PPyTypeObject(PyClass_Type)) - -proc PyMethod_Check(obj: PPyObject): bool = - Result = (obj != nil) and (obj^ .ob_type == PPyTypeObject(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 == PPyTypeObject(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 == PPyTypeObject(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 == PPyTypeObject(PyModule_Type)) - -proc PySlice_Check(obj: PPyObject): bool = - Result = (obj != nil) and (obj^ .ob_type == PPyTypeObject(PySlice_Type)) - -proc PyFunction_Check(obj: PPyObject): bool = - Result = (obj != nil) and - ((obj.ob_type == PPyTypeObject(PyCFunction_Type)) or - (obj.ob_type == PPyTypeObject(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 == PPyTypeObject(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 PyWeakref_Check(obj: PPyObject): bool = - Result = (obj != nil) and - (PyWeakref_CheckRef(obj) or PyWeakref_CheckProxy(obj)) - -proc PyWeakref_CheckRef(obj: PPyObject): bool = - Result = (obj != nil) and (obj.ob_type == PPyTypeObject(PyWeakref_RefType)) - -proc PyWeakref_CheckProxy(obj: PPyObject): bool = - Result = (obj != nil) and - ((obj.ob_type == PPyTypeObject(PyWeakref_ProxyType)) or - (obj.ob_type == PPyTypeObject(PyWeakref_CallableProxyType))) - -proc PyBool_Check(obj: PPyObject): bool = - Result = (obj != nil) and (obj.ob_type == PPyTypeObject(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 == PPyTypeObject(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 = getProcAddr(lib, "Py_DebugFlag") - Py_VerboseFlag = getProcAddr(lib, "Py_VerboseFlag") - Py_InteractiveFlag = getProcAddr(lib, "Py_InteractiveFlag") - Py_OptimizeFlag = getProcAddr(lib, "Py_OptimizeFlag") - Py_NoSiteFlag = getProcAddr(lib, "Py_NoSiteFlag") - Py_UseClassExceptionsFlag = getProcAddr(lib, "Py_UseClassExceptionsFlag") - Py_FrozenFlag = getProcAddr(lib, "Py_FrozenFlag") - Py_TabcheckFlag = getProcAddr(lib, "Py_TabcheckFlag") - Py_UnicodeFlag = getProcAddr(lib, "Py_UnicodeFlag") - Py_IgnoreEnvironmentFlag = getProcAddr(lib, "Py_IgnoreEnvironmentFlag") - Py_DivisionWarningFlag = getProcAddr(lib, "Py_DivisionWarningFlag") - Py_None = getProcAddr(lib, "_Py_NoneStruct") - Py_Ellipsis = getProcAddr(lib, "_Py_EllipsisObject") - Py_False = getProcAddr(lib, "_Py_ZeroStruct") - Py_True = getProcAddr(lib, "_Py_TrueStruct") - Py_NotImplemented = getProcAddr(lib, "_Py_NotImplementedStruct") - PyImport_FrozenModules = getProcAddr(lib, "PyImport_FrozenModules") - PyExc_AttributeError = getProcAddr(lib, "PyExc_AttributeError") - PyExc_EOFError = getProcAddr(lib, "PyExc_EOFError") - PyExc_IOError = getProcAddr(lib, "PyExc_IOError") - PyExc_ImportError = getProcAddr(lib, "PyExc_ImportError") - PyExc_IndexError = getProcAddr(lib, "PyExc_IndexError") - PyExc_KeyError = getProcAddr(lib, "PyExc_KeyError") - PyExc_KeyboardInterrupt = getProcAddr(lib, "PyExc_KeyboardInterrupt") - PyExc_MemoryError = getProcAddr(lib, "PyExc_MemoryError") - PyExc_NameError = getProcAddr(lib, "PyExc_NameError") - PyExc_OverflowError = getProcAddr(lib, "PyExc_OverflowError") - PyExc_RuntimeError = getProcAddr(lib, "PyExc_RuntimeError") - PyExc_SyntaxError = getProcAddr(lib, "PyExc_SyntaxError") - PyExc_SystemError = getProcAddr(lib, "PyExc_SystemError") - PyExc_SystemExit = getProcAddr(lib, "PyExc_SystemExit") - PyExc_TypeError = getProcAddr(lib, "PyExc_TypeError") - PyExc_ValueError = getProcAddr(lib, "PyExc_ValueError") - PyExc_ZeroDivisionError = getProcAddr(lib, "PyExc_ZeroDivisionError") - PyExc_ArithmeticError = getProcAddr(lib, "PyExc_ArithmeticError") - PyExc_Exception = getProcAddr(lib, "PyExc_Exception") - PyExc_FloatingPointError = getProcAddr(lib, "PyExc_FloatingPointError") - PyExc_LookupError = getProcAddr(lib, "PyExc_LookupError") - PyExc_StandardError = getProcAddr(lib, "PyExc_StandardError") - PyExc_AssertionError = getProcAddr(lib, "PyExc_AssertionError") - PyExc_EnvironmentError = getProcAddr(lib, "PyExc_EnvironmentError") - PyExc_IndentationError = getProcAddr(lib, "PyExc_IndentationError") - PyExc_MemoryErrorInst = getProcAddr(lib, "PyExc_MemoryErrorInst") - PyExc_NotImplementedError = getProcAddr(lib, "PyExc_NotImplementedError") - PyExc_OSError = getProcAddr(lib, "PyExc_OSError") - PyExc_TabError = getProcAddr(lib, "PyExc_TabError") - PyExc_UnboundLocalError = getProcAddr(lib, "PyExc_UnboundLocalError") - PyExc_UnicodeError = getProcAddr(lib, "PyExc_UnicodeError") - PyExc_Warning = getProcAddr(lib, "PyExc_Warning") - PyExc_DeprecationWarning = getProcAddr(lib, "PyExc_DeprecationWarning") - PyExc_RuntimeWarning = getProcAddr(lib, "PyExc_RuntimeWarning") - PyExc_SyntaxWarning = getProcAddr(lib, "PyExc_SyntaxWarning") - PyExc_UserWarning = getProcAddr(lib, "PyExc_UserWarning") - PyExc_OverflowWarning = getProcAddr(lib, "PyExc_OverflowWarning") - PyExc_ReferenceError = getProcAddr(lib, "PyExc_ReferenceError") - PyExc_StopIteration = getProcAddr(lib, "PyExc_StopIteration") - PyExc_FutureWarning = getProcAddr(lib, "PyExc_FutureWarning") - PyExc_PendingDeprecationWarning = getProcAddr(lib, - "PyExc_PendingDeprecationWarning") - PyExc_UnicodeDecodeError = getProcAddr(lib, "PyExc_UnicodeDecodeError") - PyExc_UnicodeEncodeError = getProcAddr(lib, "PyExc_UnicodeEncodeError") - PyExc_UnicodeTranslateError = getProcAddr(lib, "PyExc_UnicodeTranslateError") - PyType_Type = getProcAddr(lib, "PyType_Type") - PyCFunction_Type = getProcAddr(lib, "PyCFunction_Type") - PyCObject_Type = getProcAddr(lib, "PyCObject_Type") - PyClass_Type = getProcAddr(lib, "PyClass_Type") - PyCode_Type = getProcAddr(lib, "PyCode_Type") - PyComplex_Type = getProcAddr(lib, "PyComplex_Type") - PyDict_Type = getProcAddr(lib, "PyDict_Type") - PyFile_Type = getProcAddr(lib, "PyFile_Type") - PyFloat_Type = getProcAddr(lib, "PyFloat_Type") - PyFrame_Type = getProcAddr(lib, "PyFrame_Type") - PyFunction_Type = getProcAddr(lib, "PyFunction_Type") - PyInstance_Type = getProcAddr(lib, "PyInstance_Type") - PyInt_Type = getProcAddr(lib, "PyInt_Type") - PyList_Type = getProcAddr(lib, "PyList_Type") - PyLong_Type = getProcAddr(lib, "PyLong_Type") - PyMethod_Type = getProcAddr(lib, "PyMethod_Type") - PyModule_Type = getProcAddr(lib, "PyModule_Type") - PyObject_Type = getProcAddr(lib, "PyObject_Type") - PyRange_Type = getProcAddr(lib, "PyRange_Type") - PySlice_Type = getProcAddr(lib, "PySlice_Type") - PyString_Type = getProcAddr(lib, "PyString_Type") - PyTuple_Type = getProcAddr(lib, "PyTuple_Type") - PyUnicode_Type = getProcAddr(lib, "PyUnicode_Type") - PyBaseObject_Type = getProcAddr(lib, "PyBaseObject_Type") - PyBuffer_Type = getProcAddr(lib, "PyBuffer_Type") - PyCallIter_Type = getProcAddr(lib, "PyCallIter_Type") - PyCell_Type = getProcAddr(lib, "PyCell_Type") - PyClassMethod_Type = getProcAddr(lib, "PyClassMethod_Type") - PyProperty_Type = getProcAddr(lib, "PyProperty_Type") - PySeqIter_Type = getProcAddr(lib, "PySeqIter_Type") - PyStaticMethod_Type = getProcAddr(lib, "PyStaticMethod_Type") - PySuper_Type = getProcAddr(lib, "PySuper_Type") - PySymtableEntry_Type = getProcAddr(lib, "PySymtableEntry_Type") - PyTraceBack_Type = getProcAddr(lib, "PyTraceBack_Type") - PyWrapperDescr_Type = getProcAddr(lib, "PyWrapperDescr_Type") - PyBaseString_Type = getProcAddr(lib, "PyBaseString_Type") - PyBool_Type = getProcAddr(lib, "PyBool_Type") - PyEnum_Type = getProcAddr(lib, "PyEnum_Type") #PyArg_GetObject := getProcAddr(lib, 'PyArg_GetObject'); - #PyArg_GetLong := getProcAddr(lib, 'PyArg_GetLong'); - #PyArg_GetShort := getProcAddr(lib, 'PyArg_GetShort'); - #PyArg_GetFloat := getProcAddr(lib, 'PyArg_GetFloat'); - #PyArg_GetString := getProcAddr(lib, 'PyArg_GetString'); - #PyArgs_VaParse := getProcAddr(lib, 'PyArgs_VaParse'); - #Py_VaBuildValue := getProcAddr(lib, 'Py_VaBuildValue'); - #PyBuiltin_Init := getProcAddr(lib, 'PyBuiltin_Init'); - PyComplex_FromCComplex = getProcAddr(lib, "PyComplex_FromCComplex") - PyComplex_FromDoubles = getProcAddr(lib, "PyComplex_FromDoubles") - PyComplex_RealAsDouble = getProcAddr(lib, "PyComplex_RealAsDouble") - PyComplex_ImagAsDouble = getProcAddr(lib, "PyComplex_ImagAsDouble") - PyComplex_AsCComplex = getProcAddr(lib, "PyComplex_AsCComplex") - PyCFunction_GetFunction = getProcAddr(lib, "PyCFunction_GetFunction") - PyCFunction_GetSelf = getProcAddr(lib, "PyCFunction_GetSelf") - PyCallable_Check = getProcAddr(lib, "PyCallable_Check") - PyCObject_FromVoidPtr = getProcAddr(lib, "PyCObject_FromVoidPtr") - PyCObject_AsVoidPtr = getProcAddr(lib, "PyCObject_AsVoidPtr") - PyClass_New = getProcAddr(lib, "PyClass_New") - PyClass_IsSubclass = getProcAddr(lib, "PyClass_IsSubclass") - PyDict_GetItem = getProcAddr(lib, "PyDict_GetItem") - PyDict_SetItem = getProcAddr(lib, "PyDict_SetItem") - PyDict_DelItem = getProcAddr(lib, "PyDict_DelItem") - PyDict_Clear = getProcAddr(lib, "PyDict_Clear") - PyDict_Next = getProcAddr(lib, "PyDict_Next") - PyDict_Keys = getProcAddr(lib, "PyDict_Keys") - PyDict_Values = getProcAddr(lib, "PyDict_Values") - PyDict_Items = getProcAddr(lib, "PyDict_Items") - PyDict_Size = getProcAddr(lib, "PyDict_Size") - PyDict_DelItemString = getProcAddr(lib, "PyDict_DelItemString") - PyDictProxy_New = getProcAddr(lib, "PyDictProxy_New") - Py_InitModule4 = getProcAddr(lib, "Py_InitModule4") - PyErr_Print = getProcAddr(lib, "PyErr_Print") - PyErr_SetNone = getProcAddr(lib, "PyErr_SetNone") - PyErr_SetObject = getProcAddr(lib, "PyErr_SetObject") - PyErr_Restore = getProcAddr(lib, "PyErr_Restore") - PyErr_BadArgument = getProcAddr(lib, "PyErr_BadArgument") - PyErr_NoMemory = getProcAddr(lib, "PyErr_NoMemory") - PyErr_SetFromErrno = getProcAddr(lib, "PyErr_SetFromErrno") - PyErr_BadInternalCall = getProcAddr(lib, "PyErr_BadInternalCall") - PyErr_CheckSignals = getProcAddr(lib, "PyErr_CheckSignals") - PyErr_Occurred = getProcAddr(lib, "PyErr_Occurred") - PyErr_Clear = getProcAddr(lib, "PyErr_Clear") - PyErr_Fetch = getProcAddr(lib, "PyErr_Fetch") - PyErr_SetString = getProcAddr(lib, "PyErr_SetString") - PyEval_GetBuiltins = getProcAddr(lib, "PyEval_GetBuiltins") - PyImport_GetModuleDict = getProcAddr(lib, "PyImport_GetModuleDict") - PyInt_FromLong = getProcAddr(lib, "PyInt_FromLong") - PyArg_ParseTuple = getProcAddr(lib, "PyArg_ParseTuple") - PyArg_Parse = getProcAddr(lib, "PyArg_Parse") - Py_BuildValue = getProcAddr(lib, "Py_BuildValue") - Py_Initialize = getProcAddr(lib, "Py_Initialize") - PyDict_New = getProcAddr(lib, "PyDict_New") - PyDict_SetItemString = getProcAddr(lib, "PyDict_SetItemString") - PyModule_GetDict = getProcAddr(lib, "PyModule_GetDict") - PyObject_Str = getProcAddr(lib, "PyObject_Str") - PyRun_String = getProcAddr(lib, "PyRun_String") - PyRun_SimpleString = getProcAddr(lib, "PyRun_SimpleString") - PyDict_GetItemString = getProcAddr(lib, "PyDict_GetItemString") - PyString_AsString = getProcAddr(lib, "PyString_AsString") - PyString_FromString = getProcAddr(lib, "PyString_FromString") - PySys_SetArgv = getProcAddr(lib, "PySys_SetArgv") - Py_Exit = getProcAddr(lib, "Py_Exit") - PyCFunction_New = getProcAddr(lib, "PyCFunction_New") - PyEval_CallObject = getProcAddr(lib, "PyEval_CallObject") - PyEval_CallObjectWithKeywords = getProcAddr(lib, - "PyEval_CallObjectWithKeywords") - PyEval_GetFrame = getProcAddr(lib, "PyEval_GetFrame") - PyEval_GetGlobals = getProcAddr(lib, "PyEval_GetGlobals") - PyEval_GetLocals = getProcAddr(lib, "PyEval_GetLocals") #PyEval_GetOwner :=getProcAddr(lib, 'PyEval_GetOwner'); - PyEval_GetRestricted = getProcAddr(lib, "PyEval_GetRestricted") - PyEval_InitThreads = getProcAddr(lib, "PyEval_InitThreads") - PyEval_RestoreThread = getProcAddr(lib, "PyEval_RestoreThread") - PyEval_SaveThread = getProcAddr(lib, "PyEval_SaveThread") - PyFile_FromString = getProcAddr(lib, "PyFile_FromString") - PyFile_GetLine = getProcAddr(lib, "PyFile_GetLine") - PyFile_Name = getProcAddr(lib, "PyFile_Name") - PyFile_SetBufSize = getProcAddr(lib, "PyFile_SetBufSize") - PyFile_SoftSpace = getProcAddr(lib, "PyFile_SoftSpace") - PyFile_WriteObject = getProcAddr(lib, "PyFile_WriteObject") - PyFile_WriteString = getProcAddr(lib, "PyFile_WriteString") - PyFloat_AsDouble = getProcAddr(lib, "PyFloat_AsDouble") - PyFloat_FromDouble = getProcAddr(lib, "PyFloat_FromDouble") - PyFunction_GetCode = getProcAddr(lib, "PyFunction_GetCode") - PyFunction_GetGlobals = getProcAddr(lib, "PyFunction_GetGlobals") - PyFunction_New = getProcAddr(lib, "PyFunction_New") - PyImport_AddModule = getProcAddr(lib, "PyImport_AddModule") - PyImport_Cleanup = getProcAddr(lib, "PyImport_Cleanup") - PyImport_GetMagicNumber = getProcAddr(lib, "PyImport_GetMagicNumber") - PyImport_ImportFrozenModule = getProcAddr(lib, "PyImport_ImportFrozenModule") - PyImport_ImportModule = getProcAddr(lib, "PyImport_ImportModule") - PyImport_Import = getProcAddr(lib, "PyImport_Import") #@PyImport_Init :=getProcAddr(lib, 'PyImport_Init'); - PyImport_ReloadModule = getProcAddr(lib, "PyImport_ReloadModule") - PyInstance_New = getProcAddr(lib, "PyInstance_New") - PyInt_AsLong = getProcAddr(lib, "PyInt_AsLong") - PyList_Append = getProcAddr(lib, "PyList_Append") - PyList_AsTuple = getProcAddr(lib, "PyList_AsTuple") - PyList_GetItem = getProcAddr(lib, "PyList_GetItem") - PyList_GetSlice = getProcAddr(lib, "PyList_GetSlice") - PyList_Insert = getProcAddr(lib, "PyList_Insert") - PyList_New = getProcAddr(lib, "PyList_New") - PyList_Reverse = getProcAddr(lib, "PyList_Reverse") - PyList_SetItem = getProcAddr(lib, "PyList_SetItem") - PyList_SetSlice = getProcAddr(lib, "PyList_SetSlice") - PyList_Size = getProcAddr(lib, "PyList_Size") - PyList_Sort = getProcAddr(lib, "PyList_Sort") - PyLong_AsDouble = getProcAddr(lib, "PyLong_AsDouble") - PyLong_AsLong = getProcAddr(lib, "PyLong_AsLong") - PyLong_FromDouble = getProcAddr(lib, "PyLong_FromDouble") - PyLong_FromLong = getProcAddr(lib, "PyLong_FromLong") - PyLong_FromString = getProcAddr(lib, "PyLong_FromString") - PyLong_FromString = getProcAddr(lib, "PyLong_FromString") - PyLong_FromUnsignedLong = getProcAddr(lib, "PyLong_FromUnsignedLong") - PyLong_AsUnsignedLong = getProcAddr(lib, "PyLong_AsUnsignedLong") - PyLong_FromUnicode = getProcAddr(lib, "PyLong_FromUnicode") - PyLong_FromLongLong = getProcAddr(lib, "PyLong_FromLongLong") - PyLong_AsLongLong = getProcAddr(lib, "PyLong_AsLongLong") - PyMapping_Check = getProcAddr(lib, "PyMapping_Check") - PyMapping_GetItemString = getProcAddr(lib, "PyMapping_GetItemString") - PyMapping_HasKey = getProcAddr(lib, "PyMapping_HasKey") - PyMapping_HasKeyString = getProcAddr(lib, "PyMapping_HasKeyString") - PyMapping_Length = getProcAddr(lib, "PyMapping_Length") - PyMapping_SetItemString = getProcAddr(lib, "PyMapping_SetItemString") - PyMethod_Class = getProcAddr(lib, "PyMethod_Class") - PyMethod_Function = getProcAddr(lib, "PyMethod_Function") - PyMethod_New = getProcAddr(lib, "PyMethod_New") - PyMethod_Self = getProcAddr(lib, "PyMethod_Self") - PyModule_GetName = getProcAddr(lib, "PyModule_GetName") - PyModule_New = getProcAddr(lib, "PyModule_New") - PyNumber_Absolute = getProcAddr(lib, "PyNumber_Absolute") - PyNumber_Add = getProcAddr(lib, "PyNumber_Add") - PyNumber_And = getProcAddr(lib, "PyNumber_And") - PyNumber_Check = getProcAddr(lib, "PyNumber_Check") - PyNumber_Coerce = getProcAddr(lib, "PyNumber_Coerce") - PyNumber_Divide = getProcAddr(lib, "PyNumber_Divide") - PyNumber_FloorDivide = getProcAddr(lib, "PyNumber_FloorDivide") - PyNumber_TrueDivide = getProcAddr(lib, "PyNumber_TrueDivide") - PyNumber_Divmod = getProcAddr(lib, "PyNumber_Divmod") - PyNumber_Float = getProcAddr(lib, "PyNumber_Float") - PyNumber_Int = getProcAddr(lib, "PyNumber_Int") - PyNumber_Invert = getProcAddr(lib, "PyNumber_Invert") - PyNumber_Long = getProcAddr(lib, "PyNumber_Long") - PyNumber_Lshift = getProcAddr(lib, "PyNumber_Lshift") - PyNumber_Multiply = getProcAddr(lib, "PyNumber_Multiply") - PyNumber_Negative = getProcAddr(lib, "PyNumber_Negative") - PyNumber_Or = getProcAddr(lib, "PyNumber_Or") - PyNumber_Positive = getProcAddr(lib, "PyNumber_Positive") - PyNumber_Power = getProcAddr(lib, "PyNumber_Power") - PyNumber_Remainder = getProcAddr(lib, "PyNumber_Remainder") - PyNumber_Rshift = getProcAddr(lib, "PyNumber_Rshift") - PyNumber_Subtract = getProcAddr(lib, "PyNumber_Subtract") - PyNumber_Xor = getProcAddr(lib, "PyNumber_Xor") - PyOS_InitInterrupts = getProcAddr(lib, "PyOS_InitInterrupts") - PyOS_InterruptOccurred = getProcAddr(lib, "PyOS_InterruptOccurred") - PyObject_CallObject = getProcAddr(lib, "PyObject_CallObject") - PyObject_Compare = getProcAddr(lib, "PyObject_Compare") - PyObject_GetAttr = getProcAddr(lib, "PyObject_GetAttr") - PyObject_GetAttrString = getProcAddr(lib, "PyObject_GetAttrString") - PyObject_GetItem = getProcAddr(lib, "PyObject_GetItem") - PyObject_DelItem = getProcAddr(lib, "PyObject_DelItem") - PyObject_HasAttrString = getProcAddr(lib, "PyObject_HasAttrString") - PyObject_Hash = getProcAddr(lib, "PyObject_Hash") - PyObject_IsTrue = getProcAddr(lib, "PyObject_IsTrue") - PyObject_Length = getProcAddr(lib, "PyObject_Length") - PyObject_Repr = getProcAddr(lib, "PyObject_Repr") - PyObject_SetAttr = getProcAddr(lib, "PyObject_SetAttr") - PyObject_SetAttrString = getProcAddr(lib, "PyObject_SetAttrString") - PyObject_SetItem = getProcAddr(lib, "PyObject_SetItem") - PyObject_Init = getProcAddr(lib, "PyObject_Init") - PyObject_InitVar = getProcAddr(lib, "PyObject_InitVar") - PyObject_New = getProcAddr(lib, "_PyObject_New") - PyObject_NewVar = getProcAddr(lib, "_PyObject_NewVar") - PyObject_Free = getProcAddr(lib, "PyObject_Free") - PyObject_IsInstance = getProcAddr(lib, "PyObject_IsInstance") - PyObject_IsSubclass = getProcAddr(lib, "PyObject_IsSubclass") - PyObject_GenericGetAttr = getProcAddr(lib, "PyObject_GenericGetAttr") - PyObject_GenericSetAttr = getProcAddr(lib, "PyObject_GenericSetAttr") - PyObject_GC_Malloc = getProcAddr(lib, "_PyObject_GC_Malloc") - PyObject_GC_New = getProcAddr(lib, "_PyObject_GC_New") - PyObject_GC_NewVar = getProcAddr(lib, "_PyObject_GC_NewVar") - PyObject_GC_Resize = getProcAddr(lib, "_PyObject_GC_Resize") - PyObject_GC_Del = getProcAddr(lib, "PyObject_GC_Del") - PyObject_GC_Track = getProcAddr(lib, "PyObject_GC_Track") - PyObject_GC_UnTrack = getProcAddr(lib, "PyObject_GC_UnTrack") - PyRange_New = getProcAddr(lib, "PyRange_New") - PySequence_Check = getProcAddr(lib, "PySequence_Check") - PySequence_Concat = getProcAddr(lib, "PySequence_Concat") - PySequence_Count = getProcAddr(lib, "PySequence_Count") - PySequence_GetItem = getProcAddr(lib, "PySequence_GetItem") - PySequence_GetSlice = getProcAddr(lib, "PySequence_GetSlice") - PySequence_In = getProcAddr(lib, "PySequence_In") - PySequence_Index = getProcAddr(lib, "PySequence_Index") - PySequence_Length = getProcAddr(lib, "PySequence_Length") - PySequence_Repeat = getProcAddr(lib, "PySequence_Repeat") - PySequence_SetItem = getProcAddr(lib, "PySequence_SetItem") - PySequence_SetSlice = getProcAddr(lib, "PySequence_SetSlice") - PySequence_DelSlice = getProcAddr(lib, "PySequence_DelSlice") - PySequence_Tuple = getProcAddr(lib, "PySequence_Tuple") - PySequence_Contains = getProcAddr(lib, "PySequence_Contains") - PySlice_GetIndices = getProcAddr(lib, "PySlice_GetIndices") - PySlice_GetIndicesEx = getProcAddr(lib, "PySlice_GetIndicesEx") - PySlice_New = getProcAddr(lib, "PySlice_New") - PyString_Concat = getProcAddr(lib, "PyString_Concat") - PyString_ConcatAndDel = getProcAddr(lib, "PyString_ConcatAndDel") - PyString_Format = getProcAddr(lib, "PyString_Format") - PyString_FromStringAndSize = getProcAddr(lib, "PyString_FromStringAndSize") - PyString_Size = getProcAddr(lib, "PyString_Size") - PyString_DecodeEscape = getProcAddr(lib, "PyString_DecodeEscape") - PyString_Repr = getProcAddr(lib, "PyString_Repr") - PySys_GetObject = getProcAddr(lib, "PySys_GetObject") #PySys_Init :=getProcAddr(lib, 'PySys_Init'); - PySys_SetObject = getProcAddr(lib, "PySys_SetObject") - PySys_SetPath = getProcAddr(lib, "PySys_SetPath") #PyTraceBack_Fetch :=getProcAddr(lib, 'PyTraceBack_Fetch'); - PyTraceBack_Here = getProcAddr(lib, "PyTraceBack_Here") - PyTraceBack_Print = getProcAddr(lib, "PyTraceBack_Print") #PyTraceBack_Store :=getProcAddr(lib, 'PyTraceBack_Store'); - PyTuple_GetItem = getProcAddr(lib, "PyTuple_GetItem") - PyTuple_GetSlice = getProcAddr(lib, "PyTuple_GetSlice") - PyTuple_New = getProcAddr(lib, "PyTuple_New") - PyTuple_SetItem = getProcAddr(lib, "PyTuple_SetItem") - PyTuple_Size = getProcAddr(lib, "PyTuple_Size") - PyType_IsSubtype = getProcAddr(lib, "PyType_IsSubtype") - PyType_GenericAlloc = getProcAddr(lib, "PyType_GenericAlloc") - PyType_GenericNew = getProcAddr(lib, "PyType_GenericNew") - PyType_Ready = getProcAddr(lib, "PyType_Ready") - PyUnicode_FromWideChar = getProcAddr(lib, "PyUnicodeUCS2_FromWideChar") - PyUnicode_AsWideChar = getProcAddr(lib, "PyUnicodeUCS2_AsWideChar") - PyUnicode_FromOrdinal = getProcAddr(lib, "PyUnicodeUCS2_FromOrdinal") - PyWeakref_GetObject = getProcAddr(lib, "PyWeakref_GetObject") - PyWeakref_NewProxy = getProcAddr(lib, "PyWeakref_NewProxy") - PyWeakref_NewRef = getProcAddr(lib, "PyWeakref_NewRef") - PyWrapper_New = getProcAddr(lib, "PyWrapper_New") - PyBool_FromLong = getProcAddr(lib, "PyBool_FromLong") - Py_AtExit = getProcAddr(lib, "Py_AtExit") #Py_Cleanup :=getProcAddr(lib, 'Py_Cleanup'); - Py_CompileString = getProcAddr(lib, "Py_CompileString") - Py_FatalError = getProcAddr(lib, "Py_FatalError") - Py_FindMethod = getProcAddr(lib, "Py_FindMethod") - Py_FindMethodInChain = getProcAddr(lib, "Py_FindMethodInChain") - Py_FlushLine = getProcAddr(lib, "Py_FlushLine") - Py_Finalize = getProcAddr(lib, "Py_Finalize") - PyCode_Addr2Line = getProcAddr(lib, "PyCode_Addr2Line") - PyClass_IsSubclass = getProcAddr(lib, "PyClass_IsSubclass") - PyErr_ExceptionMatches = getProcAddr(lib, "PyErr_ExceptionMatches") - PyErr_GivenExceptionMatches = getProcAddr(lib, "PyErr_GivenExceptionMatches") - PyEval_EvalCode = getProcAddr(lib, "PyEval_EvalCode") - Py_GetVersion = getProcAddr(lib, "Py_GetVersion") - Py_GetCopyright = getProcAddr(lib, "Py_GetCopyright") - Py_GetExecPrefix = getProcAddr(lib, "Py_GetExecPrefix") - Py_GetPath = getProcAddr(lib, "Py_GetPath") - Py_GetPrefix = getProcAddr(lib, "Py_GetPrefix") - Py_GetProgramName = getProcAddr(lib, "Py_GetProgramName") - PyParser_SimpleParseString = getProcAddr(lib, "PyParser_SimpleParseString") - PyNode_Free = getProcAddr(lib, "PyNode_Free") - PyErr_NewException = getProcAddr(lib, "PyErr_NewException") #/ jah 29-sep-2000 : updated for python 2.0 - #/ replaced Py_Malloc with PyMem_Malloc - #/--- @Py_Malloc := Import ('Py_Malloc'); - #/+++ @Py_Malloc := Import ('PyMem_Malloc'); - Py_Malloc = getProcAddr(lib, "PyMem_Malloc") - PyMem_Malloc = getProcAddr(lib, "PyMem_Malloc") - PyObject_CallMethod = getProcAddr(lib, "PyObject_CallMethod") - Py_SetProgramName = getProcAddr(lib, "Py_SetProgramName") - Py_IsInitialized = getProcAddr(lib, "Py_IsInitialized") - Py_GetProgramFullPath = getProcAddr(lib, "Py_GetProgramFullPath") - DLL_Py_GetBuildInfo = getProcAddr(lib, "Py_GetBuildInfo") - Py_NewInterpreter = getProcAddr(lib, "Py_NewInterpreter") - Py_EndInterpreter = getProcAddr(lib, "Py_EndInterpreter") - PyEval_AcquireLock = getProcAddr(lib, "PyEval_AcquireLock") - PyEval_ReleaseLock = getProcAddr(lib, "PyEval_ReleaseLock") - PyEval_AcquireThread = getProcAddr(lib, "PyEval_AcquireThread") - PyEval_ReleaseThread = getProcAddr(lib, "PyEval_ReleaseThread") - PyInterpreterState_New = getProcAddr(lib, "PyInterpreterState_New") - PyInterpreterState_Clear = getProcAddr(lib, "PyInterpreterState_Clear") - PyInterpreterState_Delete = getProcAddr(lib, "PyInterpreterState_Delete") - PyThreadState_New = getProcAddr(lib, "PyThreadState_New") - PyThreadState_Clear = getProcAddr(lib, "PyThreadState_Clear") - PyThreadState_Delete = getProcAddr(lib, "PyThreadState_Delete") - PyThreadState_Get = getProcAddr(lib, "PyThreadState_Get") - PyThreadState_Swap = getProcAddr(lib, "PyThreadState_Swap") - -var lib: TLibHandle - -lib = loadLibrary(dllName) -if lib != NilLibHandle: init(lib) |