Rewrite of python wrappers based on swig
authorDavid Schleef <ds@schleef.org>
Tue, 3 Jun 2003 23:57:32 +0000 (23:57 +0000)
committerDavid Schleef <ds@schleef.org>
Tue, 3 Jun 2003 23:57:32 +0000 (23:57 +0000)
13 files changed:
python/Makefile.am [new file with mode: 0644]
python/Makefile.pre.in [deleted file]
python/README.txt [new file with mode: 0644]
python/Setup.in [deleted file]
python/comedi.i [new file with mode: 0644]
python/comedi.py [new file with mode: 0644]
python/comedi_wrap.c [new file with mode: 0644]
python/comedi_wrap.doc [new file with mode: 0644]
python/compy.c [deleted file]
python/sample.py [deleted file]
python/sample1.py [deleted file]
python/setup.py [new file with mode: 0644]
python/test_comedi.py [new file with mode: 0644]

diff --git a/python/Makefile.am b/python/Makefile.am
new file mode 100644 (file)
index 0000000..d86b2b7
--- /dev/null
@@ -0,0 +1,17 @@
+
+pyexec_LTLIBRARIES = pycomedi.la
+
+pycomedi_la_SOURCES = comedi_wrap.c
+pycomedi_la_CFLAGS = $(COMEDILIB_CFLAGS) -I/usr/include/python2.2
+pycomedi_la_LDFLAGS = -module -avoid-version $(COMEDILIB_LIBS)
+
+pyexec_SCRIPTS = comedi.py
+
+EXTRA_DIST = comedi.i
+
+install-exec-local:
+
+
+#$(INSTALL) build/lib.linux-i686-2.2/_comedi.so $(pythondir)/
+#$(INSTALL) comedi.py $(pythondir)/
+
diff --git a/python/Makefile.pre.in b/python/Makefile.pre.in
deleted file mode 100644 (file)
index a9a7fc0..0000000
+++ /dev/null
@@ -1,305 +0,0 @@
-# Universal Unix Makefile for Python extensions
-# =============================================
-
-# Short Instructions
-# ------------------
-
-# 1. Build and install Python (1.5 or newer).
-# 2. "make -f Makefile.pre.in boot"
-# 3. "make"
-# You should now have a shared library.
-
-# Long Instructions
-# -----------------
-
-# Build *and install* the basic Python 1.5 distribution.  See the
-# Python README for instructions.  (This version of Makefile.pre.in
-# only withs with Python 1.5, alpha 3 or newer.)
-
-# Create a file Setup.in for your extension.  This file follows the
-# format of the Modules/Setup.in file; see the instructions there.
-# For a simple module called "spam" on file "spammodule.c", it can
-# contain a single line:
-#   spam spammodule.c
-# You can build as many modules as you want in the same directory --
-# just have a separate line for each of them in the Setup.in file.
-
-# If you want to build your extension as a shared library, insert a
-# line containing just the string
-#   *shared*
-# at the top of your Setup.in file.
-
-# Note that the build process copies Setup.in to Setup, and then works
-# with Setup.  It doesn't overwrite Setup when Setup.in is changed, so
-# while you're in the process of debugging your Setup.in file, you may
-# want to edit Setup instead, and copy it back to Setup.in later.
-# (All this is done so you can distribute your extension easily and
-# someone else can select the modules they actually want to build by
-# commenting out lines in the Setup file, without editing the
-# original.  Editing Setup is also used to specify nonstandard
-# locations for include or library files.)
-
-# Copy this file (Misc/Makefile.pre.in) to the directory containing
-# your extension.
-
-# Run "make -f Makefile.pre.in boot".  This creates Makefile
-# (producing Makefile.pre and sedscript as intermediate files) and
-# config.c, incorporating the values for sys.prefix, sys.exec_prefix
-# and sys.version from the installed Python binary.  For this to work,
-# the python binary must be on your path.  If this fails, try
-#   make -f Makefile.pre.in Makefile VERSION=1.5 installdir=<prefix>
-# where <prefix> is the prefix used to install Python for installdir
-# (and possibly similar for exec_installdir=<exec_prefix>).
-
-# Note: "make boot" implies "make clobber" -- it assumes that when you
-# bootstrap you may have changed platforms so it removes all previous
-# output files.
-
-# If you are building your extension as a shared library (your
-# Setup.in file starts with *shared*), run "make" or "make sharedmods"
-# to build the shared library files.  If you are building a statically
-# linked Python binary (the only solution of your platform doesn't
-# support shared libraries, and sometimes handy if you want to
-# distribute or install the resulting Python binary), run "make
-# python".
-
-# Note: Each time you edit Makefile.pre.in or Setup, you must run
-# "make Makefile" before running "make".
-
-# Hint: if you want to use VPATH, you can start in an empty
-# subdirectory and say (e.g.):
-#   make -f ../Makefile.pre.in boot srcdir=.. VPATH=..
-
-
-# === Bootstrap variables (edited through "make boot") ===
-
-# The prefix used by "make inclinstall libainstall" of core python
-installdir=    /usr/local
-
-# The exec_prefix used by the same
-exec_installdir=$(installdir)
-
-# Source directory and VPATH in case you want to use VPATH.
-# (You will have to edit these two lines yourself -- there is no
-# automatic support as the Makefile is not generated by
-# config.status.)
-srcdir=                .
-VPATH=         .
-
-# === Variables that you may want to customize (rarely) ===
-
-# (Static) build target
-TARGET=                python
-
-# Installed python binary (used only by boot target)
-PYTHON=                python
-
-# Add more -I and -D options here
-CFLAGS=                $(OPT) -I$(INCLUDEPY) -I$(EXECINCLUDEPY) $(DEFS)
-
-# These two variables can be set in Setup to merge extensions.
-# See example[23].
-BASELIB=       
-BASESETUP=     
-
-# === Variables set by makesetup ===
-
-MODOBJS=       _MODOBJS_
-MODLIBS=       _MODLIBS_
-
-# === Definitions added by makesetup ===
-
-# === Variables from configure (through sedscript) ===
-
-VERSION=       @VERSION@
-CC=            @CC@
-LINKCC=                @LINKCC@
-SGI_ABI=       @SGI_ABI@
-OPT=           @OPT@
-LDFLAGS=       @LDFLAGS@
-LDLAST=                @LDLAST@
-DEFS=          @DEFS@
-LIBS=          @LIBS@
-LIBM=          @LIBM@
-LIBC=          @LIBC@
-RANLIB=                @RANLIB@
-MACHDEP=       @MACHDEP@
-SO=            @SO@
-LDSHARED=      @LDSHARED@
-CCSHARED=      @CCSHARED@
-LINKFORSHARED= @LINKFORSHARED@
-#@SET_CCC@
-
-# Install prefix for architecture-independent files
-prefix=                /usr/local
-
-# Install prefix for architecture-dependent files
-exec_prefix=   $(prefix)
-
-# Uncomment the following two lines for AIX
-#LINKCC=       $(LIBPL)/makexp_aix $(LIBPL)/python.exp "" $(LIBRARY); $(PURIFY) $(CC)
-#LDSHARED=     $(LIBPL)/ld_so_aix $(CC) -bI:$(LIBPL)/python.exp
-
-# === Fixed definitions ===
-
-# Shell used by make (some versions default to the login shell, which is bad)
-SHELL=         /bin/sh
-
-# Expanded directories
-BINDIR=                $(exec_installdir)/bin
-LIBDIR=                $(exec_prefix)/lib
-MANDIR=                $(installdir)/man
-INCLUDEDIR=    $(installdir)/include
-SCRIPTDIR=     $(prefix)/lib
-
-# Detailed destination directories
-BINLIBDEST=    $(LIBDIR)/python$(VERSION)
-LIBDEST=       $(SCRIPTDIR)/python$(VERSION)
-INCLUDEPY=     $(INCLUDEDIR)/python$(VERSION)
-EXECINCLUDEPY= $(exec_installdir)/include/python$(VERSION)
-LIBP=          $(exec_installdir)/lib/python$(VERSION)
-DESTSHARED=    $(BINLIBDEST)/site-packages
-
-LIBPL=         $(LIBP)/config
-
-PYTHONLIBS=    $(LIBPL)/libpython$(VERSION).a
-
-MAKESETUP=     $(LIBPL)/makesetup
-MAKEFILE=      $(LIBPL)/Makefile
-CONFIGC=       $(LIBPL)/config.c
-CONFIGCIN=     $(LIBPL)/config.c.in
-SETUP=         $(LIBPL)/Setup.thread $(LIBPL)/Setup.local $(LIBPL)/Setup
-
-SYSLIBS=       $(LIBM) $(LIBC) -lcomedi
-
-ADDOBJS=       $(LIBPL)/python.o config.o
-
-# Portable install script (configure doesn't always guess right)
-INSTALL=       $(LIBPL)/install-sh -c
-# Shared libraries must be installed with executable mode on some systems;
-# rather than figuring out exactly which, we always give them executable mode.
-# Also, making them read-only seems to be a good idea...
-INSTALL_SHARED=        ${INSTALL} -m 555
-
-# === Fixed rules ===
-
-# Default target.  This builds shared libraries only
-default:       sharedmods
-
-# Build everything
-all:           static sharedmods
-
-# Build shared libraries from our extension modules
-sharedmods:    $(SHAREDMODS)
-
-# Build a static Python binary containing our extension modules
-static:                $(TARGET)
-$(TARGET):     $(ADDOBJS) lib.a $(PYTHONLIBS) Makefile $(BASELIB)
-               $(LINKCC) $(LDFLAGS) $(LINKFORSHARED) \
-                $(ADDOBJS) lib.a $(PYTHONLIBS) \
-                $(LINKPATH) $(BASELIB) $(MODLIBS) $(LIBS) $(SYSLIBS) \
-                -o $(TARGET) $(LDLAST)
-
-install:       sharedmods
-               if test ! -d $(DESTSHARED) ; then \
-                       mkdir $(DESTSHARED) ; else true ; fi
-               -for i in X $(SHAREDMODS); do \
-                       if test $$i != X; \
-                       then $(INSTALL_SHARED) $$i $(DESTSHARED)/$$i; \
-                       fi; \
-               done
-
-# Build the library containing our extension modules
-lib.a:         $(MODOBJS)
-               -rm -f lib.a
-               ar cr lib.a $(MODOBJS)
-               -$(RANLIB) lib.a 
-
-# This runs makesetup *twice* to use the BASESETUP definition from Setup
-config.c Makefile:     Makefile.pre Setup $(BASESETUP) $(MAKESETUP)
-               $(MAKESETUP) \
-                -m Makefile.pre -c $(CONFIGCIN) Setup -n $(BASESETUP) $(SETUP)
-               $(MAKE) -f Makefile do-it-again
-
-# Internal target to run makesetup for the second time
-do-it-again:
-               $(MAKESETUP) \
-                -m Makefile.pre -c $(CONFIGCIN) Setup -n $(BASESETUP) $(SETUP)
-
-# Make config.o from the config.c created by makesetup
-config.o:      config.c
-               $(CC) $(CFLAGS) -c config.c
-
-# Setup is copied from Setup.in *only* if it doesn't yet exist
-Setup:
-               cp $(srcdir)/Setup.in Setup
-
-# Make the intermediate Makefile.pre from Makefile.pre.in
-Makefile.pre: Makefile.pre.in sedscript
-               sed -f sedscript $(srcdir)/Makefile.pre.in >Makefile.pre
-
-# Shortcuts to make the sed arguments on one line
-P=prefix
-E=exec_prefix
-H=Generated automatically from Makefile.pre.in by sedscript.
-L=LINKFORSHARED
-
-# Make the sed script used to create Makefile.pre from Makefile.pre.in
-sedscript:     $(MAKEFILE)
-       sed -n \
-        -e '1s/.*/1i\\/p' \
-        -e '2s%.*%# $H%p' \
-        -e '/^VERSION=/s/^VERSION=[    ]*\(.*\)/s%@VERSION[@]%\1%/p' \
-        -e '/^CC=/s/^CC=[      ]*\(.*\)/s%@CC[@]%\1%/p' \
-        -e '/^CCC=/s/^CCC=[    ]*\(.*\)/s%#@SET_CCC[@]%CCC=\1%/p' \
-        -e '/^LINKCC=/s/^LINKCC=[      ]*\(.*\)/s%@LINKCC[@]%\1%/p' \
-        -e '/^OPT=/s/^OPT=[    ]*\(.*\)/s%@OPT[@]%\1%/p' \
-        -e '/^LDFLAGS=/s/^LDFLAGS=[    ]*\(.*\)/s%@LDFLAGS[@]%\1%/p' \
-        -e '/^LDLAST=/s/^LDLAST=[      ]*\(.*\)/s%@LDLAST[@]%\1%/p' \
-        -e '/^DEFS=/s/^DEFS=[  ]*\(.*\)/s%@DEFS[@]%\1%/p' \
-        -e '/^LIBS=/s/^LIBS=[  ]*\(.*\)/s%@LIBS[@]%\1%/p' \
-        -e '/^LIBM=/s/^LIBM=[  ]*\(.*\)/s%@LIBM[@]%\1%/p' \
-        -e '/^LIBC=/s/^LIBC=[  ]*\(.*\)/s%@LIBC[@]%\1%/p' \
-        -e '/^RANLIB=/s/^RANLIB=[      ]*\(.*\)/s%@RANLIB[@]%\1%/p' \
-        -e '/^MACHDEP=/s/^MACHDEP=[    ]*\(.*\)/s%@MACHDEP[@]%\1%/p' \
-        -e '/^SO=/s/^SO=[      ]*\(.*\)/s%@SO[@]%\1%/p' \
-        -e '/^LDSHARED=/s/^LDSHARED=[  ]*\(.*\)/s%@LDSHARED[@]%\1%/p' \
-        -e '/^CCSHARED=/s/^CCSHARED=[  ]*\(.*\)/s%@CCSHARED[@]%\1%/p' \
-        -e '/^SGI_ABI=/s/^SGI_ABI=[    ]*\(.*\)/s%@SGI_ABI[@]%\1%/p' \
-        -e '/^$L=/s/^$L=[      ]*\(.*\)/s%@$L[@]%\1%/p' \
-        -e '/^$P=/s/^$P=\(.*\)/s%^$P=.*%$P=\1%/p' \
-        -e '/^$E=/s/^$E=\(.*\)/s%^$E=.*%$E=\1%/p' \
-        $(MAKEFILE) >sedscript
-       echo "/^#@SET_CCC@/d" >>sedscript
-       echo "/^installdir=/s%=.*%=     $(installdir)%" >>sedscript
-       echo "/^exec_installdir=/s%=.*%=$(exec_installdir)%" >>sedscript
-       echo "/^srcdir=/s%=.*%=         $(srcdir)%" >>sedscript
-       echo "/^VPATH=/s%=.*%=          $(VPATH)%" >>sedscript
-       echo "/^LINKPATH=/s%=.*%=       $(LINKPATH)%" >>sedscript
-       echo "/^BASELIB=/s%=.*%=        $(BASELIB)%" >>sedscript
-       echo "/^BASESETUP=/s%=.*%=      $(BASESETUP)%" >>sedscript
-
-# Bootstrap target
-boot:  clobber
-       VERSION=`$(PYTHON) -c "import sys; print sys.version[:3]"`; \
-       installdir=`$(PYTHON) -c "import sys; print sys.prefix"`; \
-       exec_installdir=`$(PYTHON) -c "import sys; print sys.exec_prefix"`; \
-       $(MAKE) -f $(srcdir)/Makefile.pre.in VPATH=$(VPATH) srcdir=$(srcdir) \
-               VERSION=$$VERSION \
-               installdir=$$installdir \
-               exec_installdir=$$exec_installdir \
-               Makefile
-
-# Handy target to remove intermediate files and backups
-clean:
-               -rm -f *.o *~
-
-# Handy target to remove everything that is easily regenerated
-clobber:       clean
-               -rm -f *.a tags TAGS config.c Makefile.pre $(TARGET) sedscript
-               -rm -f *.so *.sl so_locations
-
-
-# Handy target to remove everything you don't want to distribute
-distclean:     clobber
-               -rm -f Makefile Setup
diff --git a/python/README.txt b/python/README.txt
new file mode 100644 (file)
index 0000000..9ddd91f
--- /dev/null
@@ -0,0 +1,40 @@
+** General info on the swig-generated wrappers for Comedilib **
+
+1) Regenerating the wrappers
+       The wrapper were made using swig-1.3.19. Any of the swig-1.3.x seris should work
+       N.B. the default swig on redhat systems is version 1.1. Upgrade to v-1.3.19. It's better!
+       
+       run $> swig -python comedi.i
+       
+2) Building the module
+       i) edit the setup.py file so that the include and lib paths are correct for your system
+       ii) run $>      python setup.py build
+       
+3) Installing the module
+       i) Manual installation I'm afraid. Copy comedi.py and _comedi.pyd files to somewhere in your PYTHONPATH
+       
+4) Using the module
+       All the comedilib functions are translated directly to python function. The various comedi structs
+       are now available as python classes (e.g. comedi_cmd_struct). The members of each struct are now
+       attributes of the class and can be set and retrieved in the usual way. Comedilib Functions which 
+       take a pointer to a comedilib struct as an argument (in C) now, in python, accept the appropriate 
+       struct python object.
+       
+       For a multichannel acquisition, a C-array containing the channel list, gains and referencing is
+       required. This can be created using a swig-generated helper class: chanlist(n). This creates a C-array
+       of length n and type Unsigned Int. Individual members of the array can be accessed/set using 
+       pythons indexing syntax:
+               mylist = chanlist(3)   #creates a chanlist array of length 3
+               mylist[0] = 100 #set some values
+               mylist[1] = 200
+               mylist[2] = 300
+               
+       The chanlist object can then be passed to a comedi_cmd_struct object, for example. N.B. The
+       chanlist object contains *no* length-checking or other error protection so use with care! Don't
+       try to get/set indexes outside the array bounds.
+       
+       All the comedilib macros (e.g. CR_PACK) are now available as python functions.
+       
+       check out the example test_comedi.py to clarify the above.
+       
+       
\ No newline at end of file
diff --git a/python/Setup.in b/python/Setup.in
deleted file mode 100644 (file)
index c6ae49e..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-*shared*
-comedi compy.c -lcomedi
diff --git a/python/comedi.i b/python/comedi.i
new file mode 100644 (file)
index 0000000..24b8745
--- /dev/null
@@ -0,0 +1,40 @@
+/***********************************************************
+*           Interface file for wrapping Comedilib                                  
+*           author: Bryan Cole  email: bryan.cole@teraview.co.uk  
+*
+*     This file was created with Python wrappers in mind but wil
+*  probably work for other swig-supported script languages
+*
+*    to regenerate the wrappers run:
+*    swig -python comedi.i
+*
+***********************************************************/
+%module comedi
+%{
+#include "../comedilib-0.7.19/include/comedi.h"
+#include "../comedilib-0.7.19/include/comedilib.h"\r
+%}
+%include "carrays.i"
+
+%inline %{
+static unsigned int cr_pack(unsigned int chan, unsigned int rng, unsigned int aref){
+       return CR_PACK(chan,rng,aref);
+}
+static unsigned int cr_pack_flags(unsigned int chan, unsigned int rng, unsigned int aref, unsigned int flags){
+       return CR_PACK_FLAGS(chan,rng,aref, flags);
+}
+static unsigned int cr_chan(unsigned int a){
+       return CR_CHAN(a);
+}
+static unsigned int cr_range(unsigned int a){
+       return CR_RANGE(a);
+}
+static unsigned int cr_aref(unsigned int a){
+       return CR_AREF(a);
+}
+%}
+
+%array_class(unsigned int, chanlist);
+
+%include "../comedilib-0.7.19/include/comedi.h"
+%include "../comedilib-0.7.19/include/comedilib.h"
diff --git a/python/comedi.py b/python/comedi.py
new file mode 100644 (file)
index 0000000..b1be475
--- /dev/null
@@ -0,0 +1,880 @@
+# This file was created automatically by SWIG.
+# Don't modify this file, modify the SWIG interface instead.
+# This file is compatible with both classic and new-style classes.
+import _comedi
+def _swig_setattr(self,class_type,name,value):
+    if (name == "this"):
+        if isinstance(value, class_type):
+            self.__dict__[name] = value.this
+            if hasattr(value,"thisown"): self.__dict__["thisown"] = value.thisown
+            del value.thisown
+            return
+    method = class_type.__swig_setmethods__.get(name,None)
+    if method: return method(self,value)
+    self.__dict__[name] = value
+
+def _swig_getattr(self,class_type,name):
+    method = class_type.__swig_getmethods__.get(name,None)
+    if method: return method(self)
+    raise AttributeError,name
+
+import types
+try:
+    _object = types.ObjectType
+    _newclass = 1
+except AttributeError:
+    class _object : pass
+    _newclass = 0
+
+
+cr_pack = _comedi.cr_pack
+
+cr_pack_flags = _comedi.cr_pack_flags
+
+cr_chan = _comedi.cr_chan
+
+cr_range = _comedi.cr_range
+
+cr_aref = _comedi.cr_aref
+
+class chanlist(_object):
+    __swig_setmethods__ = {}
+    __setattr__ = lambda self, name, value: _swig_setattr(self, chanlist, name, value)
+    __swig_getmethods__ = {}
+    __getattr__ = lambda self, name: _swig_getattr(self, chanlist, name)
+    def __init__(self,*args):
+        _swig_setattr(self, chanlist, 'this', apply(_comedi.new_chanlist,args))
+        _swig_setattr(self, chanlist, 'thisown', 1)
+    def __del__(self, destroy= _comedi.delete_chanlist):
+        try:
+            if self.thisown: destroy(self)
+        except: pass
+    def __getitem__(*args): return apply(_comedi.chanlist___getitem__,args)
+    def __setitem__(*args): return apply(_comedi.chanlist___setitem__,args)
+    def cast(*args): return apply(_comedi.chanlist_cast,args)
+    __swig_getmethods__["frompointer"] = lambda x: _comedi.chanlist_frompointer
+    if _newclass:frompointer = staticmethod(_comedi.chanlist_frompointer)
+    def __repr__(self):
+        return "<C chanlist instance at %s>" % (self.this,)
+
+class chanlistPtr(chanlist):
+    def __init__(self,this):
+        _swig_setattr(self, chanlist, 'this', this)
+        if not hasattr(self,"thisown"): _swig_setattr(self, chanlist, 'thisown', 0)
+        _swig_setattr(self, chanlist,self.__class__,chanlist)
+_comedi.chanlist_swigregister(chanlistPtr)
+chanlist_frompointer = _comedi.chanlist_frompointer
+
+
+COMEDI_MAJOR = _comedi.COMEDI_MAJOR
+COMEDI_NDEVICES = _comedi.COMEDI_NDEVICES
+COMEDI_NDEVCONFOPTS = _comedi.COMEDI_NDEVCONFOPTS
+COMEDI_NAMELEN = _comedi.COMEDI_NAMELEN
+CR_FLAGS_MASK = _comedi.CR_FLAGS_MASK
+CR_ALT_FILTER = _comedi.CR_ALT_FILTER
+CR_DITHER = _comedi.CR_DITHER
+CR_DEGLITCH = _comedi.CR_DEGLITCH
+CR_ALT_SOURCE = _comedi.CR_ALT_SOURCE
+CR_EDGE = _comedi.CR_EDGE
+CR_INVERT = _comedi.CR_INVERT
+AREF_GROUND = _comedi.AREF_GROUND
+AREF_COMMON = _comedi.AREF_COMMON
+AREF_DIFF = _comedi.AREF_DIFF
+AREF_OTHER = _comedi.AREF_OTHER
+GPCT_RESET = _comedi.GPCT_RESET
+GPCT_SET_SOURCE = _comedi.GPCT_SET_SOURCE
+GPCT_SET_GATE = _comedi.GPCT_SET_GATE
+GPCT_SET_DIRECTION = _comedi.GPCT_SET_DIRECTION
+GPCT_SET_OPERATION = _comedi.GPCT_SET_OPERATION
+GPCT_ARM = _comedi.GPCT_ARM
+GPCT_DISARM = _comedi.GPCT_DISARM
+GPCT_GET_INT_CLK_FRQ = _comedi.GPCT_GET_INT_CLK_FRQ
+GPCT_INT_CLOCK = _comedi.GPCT_INT_CLOCK
+GPCT_EXT_PIN = _comedi.GPCT_EXT_PIN
+GPCT_NO_GATE = _comedi.GPCT_NO_GATE
+GPCT_UP = _comedi.GPCT_UP
+GPCT_DOWN = _comedi.GPCT_DOWN
+GPCT_HWUD = _comedi.GPCT_HWUD
+GPCT_SIMPLE_EVENT = _comedi.GPCT_SIMPLE_EVENT
+GPCT_SINGLE_PERIOD = _comedi.GPCT_SINGLE_PERIOD
+GPCT_SINGLE_PW = _comedi.GPCT_SINGLE_PW
+GPCT_CONT_PULSE_OUT = _comedi.GPCT_CONT_PULSE_OUT
+GPCT_SINGLE_PULSE_OUT = _comedi.GPCT_SINGLE_PULSE_OUT
+INSN_MASK_WRITE = _comedi.INSN_MASK_WRITE
+INSN_MASK_READ = _comedi.INSN_MASK_READ
+INSN_MASK_SPECIAL = _comedi.INSN_MASK_SPECIAL
+INSN_READ = _comedi.INSN_READ
+INSN_WRITE = _comedi.INSN_WRITE
+INSN_BITS = _comedi.INSN_BITS
+INSN_CONFIG = _comedi.INSN_CONFIG
+INSN_GTOD = _comedi.INSN_GTOD
+INSN_WAIT = _comedi.INSN_WAIT
+INSN_INTTRIG = _comedi.INSN_INTTRIG
+TRIG_BOGUS = _comedi.TRIG_BOGUS
+TRIG_DITHER = _comedi.TRIG_DITHER
+TRIG_DEGLITCH = _comedi.TRIG_DEGLITCH
+TRIG_CONFIG = _comedi.TRIG_CONFIG
+CMDF_PRIORITY = _comedi.CMDF_PRIORITY
+TRIG_RT = _comedi.TRIG_RT
+TRIG_WAKE_EOS = _comedi.TRIG_WAKE_EOS
+CMDF_WRITE = _comedi.CMDF_WRITE
+TRIG_WRITE = _comedi.TRIG_WRITE
+CMDF_RAWDATA = _comedi.CMDF_RAWDATA
+COMEDI_EV_START = _comedi.COMEDI_EV_START
+COMEDI_EV_SCAN_BEGIN = _comedi.COMEDI_EV_SCAN_BEGIN
+COMEDI_EV_CONVERT = _comedi.COMEDI_EV_CONVERT
+COMEDI_EV_SCAN_END = _comedi.COMEDI_EV_SCAN_END
+COMEDI_EV_STOP = _comedi.COMEDI_EV_STOP
+TRIG_ROUND_MASK = _comedi.TRIG_ROUND_MASK
+TRIG_ROUND_NEAREST = _comedi.TRIG_ROUND_NEAREST
+TRIG_ROUND_DOWN = _comedi.TRIG_ROUND_DOWN
+TRIG_ROUND_UP = _comedi.TRIG_ROUND_UP
+TRIG_ROUND_UP_NEXT = _comedi.TRIG_ROUND_UP_NEXT
+TRIG_ANY = _comedi.TRIG_ANY
+TRIG_INVALID = _comedi.TRIG_INVALID
+TRIG_NONE = _comedi.TRIG_NONE
+TRIG_NOW = _comedi.TRIG_NOW
+TRIG_FOLLOW = _comedi.TRIG_FOLLOW
+TRIG_TIME = _comedi.TRIG_TIME
+TRIG_TIMER = _comedi.TRIG_TIMER
+TRIG_COUNT = _comedi.TRIG_COUNT
+TRIG_EXT = _comedi.TRIG_EXT
+TRIG_INT = _comedi.TRIG_INT
+TRIG_OTHER = _comedi.TRIG_OTHER
+SDF_BUSY = _comedi.SDF_BUSY
+SDF_BUSY_OWNER = _comedi.SDF_BUSY_OWNER
+SDF_LOCKED = _comedi.SDF_LOCKED
+SDF_LOCK_OWNER = _comedi.SDF_LOCK_OWNER
+SDF_MAXDATA = _comedi.SDF_MAXDATA
+SDF_FLAGS = _comedi.SDF_FLAGS
+SDF_RANGETYPE = _comedi.SDF_RANGETYPE
+SDF_MODE0 = _comedi.SDF_MODE0
+SDF_MODE1 = _comedi.SDF_MODE1
+SDF_MODE2 = _comedi.SDF_MODE2
+SDF_MODE3 = _comedi.SDF_MODE3
+SDF_MODE4 = _comedi.SDF_MODE4
+SDF_CMD = _comedi.SDF_CMD
+SDF_READABLE = _comedi.SDF_READABLE
+SDF_WRITABLE = _comedi.SDF_WRITABLE
+SDF_WRITEABLE = _comedi.SDF_WRITEABLE
+SDF_INTERNAL = _comedi.SDF_INTERNAL
+SDF_RT = _comedi.SDF_RT
+SDF_GROUND = _comedi.SDF_GROUND
+SDF_COMMON = _comedi.SDF_COMMON
+SDF_DIFF = _comedi.SDF_DIFF
+SDF_OTHER = _comedi.SDF_OTHER
+SDF_DITHER = _comedi.SDF_DITHER
+SDF_DEGLITCH = _comedi.SDF_DEGLITCH
+SDF_MMAP = _comedi.SDF_MMAP
+SDF_RUNNING = _comedi.SDF_RUNNING
+SDF_LSAMPL = _comedi.SDF_LSAMPL
+SDF_PACKED = _comedi.SDF_PACKED
+COMEDI_SUBD_UNUSED = _comedi.COMEDI_SUBD_UNUSED
+COMEDI_SUBD_AI = _comedi.COMEDI_SUBD_AI
+COMEDI_SUBD_AO = _comedi.COMEDI_SUBD_AO
+COMEDI_SUBD_DI = _comedi.COMEDI_SUBD_DI
+COMEDI_SUBD_DO = _comedi.COMEDI_SUBD_DO
+COMEDI_SUBD_DIO = _comedi.COMEDI_SUBD_DIO
+COMEDI_SUBD_COUNTER = _comedi.COMEDI_SUBD_COUNTER
+COMEDI_SUBD_TIMER = _comedi.COMEDI_SUBD_TIMER
+COMEDI_SUBD_MEMORY = _comedi.COMEDI_SUBD_MEMORY
+COMEDI_SUBD_CALIB = _comedi.COMEDI_SUBD_CALIB
+COMEDI_SUBD_PROC = _comedi.COMEDI_SUBD_PROC
+COMEDI_INPUT = _comedi.COMEDI_INPUT
+COMEDI_OUTPUT = _comedi.COMEDI_OUTPUT
+COMEDI_OPENDRAIN = _comedi.COMEDI_OPENDRAIN
+INSN_CONFIG_ANALOG_TRIG = _comedi.INSN_CONFIG_ANALOG_TRIG
+INSN_CONFIG_ALT_SOURCE = _comedi.INSN_CONFIG_ALT_SOURCE
+CIO = _comedi.CIO
+class comedi_trig_struct(_object):
+    __swig_setmethods__ = {}
+    __setattr__ = lambda self, name, value: _swig_setattr(self, comedi_trig_struct, name, value)
+    __swig_getmethods__ = {}
+    __getattr__ = lambda self, name: _swig_getattr(self, comedi_trig_struct, name)
+    __swig_setmethods__["subdev"] = _comedi.comedi_trig_struct_subdev_set
+    __swig_getmethods__["subdev"] = _comedi.comedi_trig_struct_subdev_get
+    if _newclass:subdev = property(_comedi.comedi_trig_struct_subdev_get,_comedi.comedi_trig_struct_subdev_set)
+    __swig_setmethods__["mode"] = _comedi.comedi_trig_struct_mode_set
+    __swig_getmethods__["mode"] = _comedi.comedi_trig_struct_mode_get
+    if _newclass:mode = property(_comedi.comedi_trig_struct_mode_get,_comedi.comedi_trig_struct_mode_set)
+    __swig_setmethods__["flags"] = _comedi.comedi_trig_struct_flags_set
+    __swig_getmethods__["flags"] = _comedi.comedi_trig_struct_flags_get
+    if _newclass:flags = property(_comedi.comedi_trig_struct_flags_get,_comedi.comedi_trig_struct_flags_set)
+    __swig_setmethods__["n_chan"] = _comedi.comedi_trig_struct_n_chan_set
+    __swig_getmethods__["n_chan"] = _comedi.comedi_trig_struct_n_chan_get
+    if _newclass:n_chan = property(_comedi.comedi_trig_struct_n_chan_get,_comedi.comedi_trig_struct_n_chan_set)
+    __swig_setmethods__["chanlist"] = _comedi.comedi_trig_struct_chanlist_set
+    __swig_getmethods__["chanlist"] = _comedi.comedi_trig_struct_chanlist_get
+    if _newclass:chanlist = property(_comedi.comedi_trig_struct_chanlist_get,_comedi.comedi_trig_struct_chanlist_set)
+    __swig_setmethods__["data"] = _comedi.comedi_trig_struct_data_set
+    __swig_getmethods__["data"] = _comedi.comedi_trig_struct_data_get
+    if _newclass:data = property(_comedi.comedi_trig_struct_data_get,_comedi.comedi_trig_struct_data_set)
+    __swig_setmethods__["n"] = _comedi.comedi_trig_struct_n_set
+    __swig_getmethods__["n"] = _comedi.comedi_trig_struct_n_get
+    if _newclass:n = property(_comedi.comedi_trig_struct_n_get,_comedi.comedi_trig_struct_n_set)
+    __swig_setmethods__["trigsrc"] = _comedi.comedi_trig_struct_trigsrc_set
+    __swig_getmethods__["trigsrc"] = _comedi.comedi_trig_struct_trigsrc_get
+    if _newclass:trigsrc = property(_comedi.comedi_trig_struct_trigsrc_get,_comedi.comedi_trig_struct_trigsrc_set)
+    __swig_setmethods__["trigvar"] = _comedi.comedi_trig_struct_trigvar_set
+    __swig_getmethods__["trigvar"] = _comedi.comedi_trig_struct_trigvar_get
+    if _newclass:trigvar = property(_comedi.comedi_trig_struct_trigvar_get,_comedi.comedi_trig_struct_trigvar_set)
+    __swig_setmethods__["trigvar1"] = _comedi.comedi_trig_struct_trigvar1_set
+    __swig_getmethods__["trigvar1"] = _comedi.comedi_trig_struct_trigvar1_get
+    if _newclass:trigvar1 = property(_comedi.comedi_trig_struct_trigvar1_get,_comedi.comedi_trig_struct_trigvar1_set)
+    __swig_setmethods__["data_len"] = _comedi.comedi_trig_struct_data_len_set
+    __swig_getmethods__["data_len"] = _comedi.comedi_trig_struct_data_len_get
+    if _newclass:data_len = property(_comedi.comedi_trig_struct_data_len_get,_comedi.comedi_trig_struct_data_len_set)
+    __swig_setmethods__["unused"] = _comedi.comedi_trig_struct_unused_set
+    __swig_getmethods__["unused"] = _comedi.comedi_trig_struct_unused_get
+    if _newclass:unused = property(_comedi.comedi_trig_struct_unused_get,_comedi.comedi_trig_struct_unused_set)
+    def __init__(self,*args):
+        _swig_setattr(self, comedi_trig_struct, 'this', apply(_comedi.new_comedi_trig_struct,args))
+        _swig_setattr(self, comedi_trig_struct, 'thisown', 1)
+    def __del__(self, destroy= _comedi.delete_comedi_trig_struct):
+        try:
+            if self.thisown: destroy(self)
+        except: pass
+    def __repr__(self):
+        return "<C comedi_trig_struct instance at %s>" % (self.this,)
+
+class comedi_trig_structPtr(comedi_trig_struct):
+    def __init__(self,this):
+        _swig_setattr(self, comedi_trig_struct, 'this', this)
+        if not hasattr(self,"thisown"): _swig_setattr(self, comedi_trig_struct, 'thisown', 0)
+        _swig_setattr(self, comedi_trig_struct,self.__class__,comedi_trig_struct)
+_comedi.comedi_trig_struct_swigregister(comedi_trig_structPtr)
+
+class comedi_insn_struct(_object):
+    __swig_setmethods__ = {}
+    __setattr__ = lambda self, name, value: _swig_setattr(self, comedi_insn_struct, name, value)
+    __swig_getmethods__ = {}
+    __getattr__ = lambda self, name: _swig_getattr(self, comedi_insn_struct, name)
+    __swig_setmethods__["insn"] = _comedi.comedi_insn_struct_insn_set
+    __swig_getmethods__["insn"] = _comedi.comedi_insn_struct_insn_get
+    if _newclass:insn = property(_comedi.comedi_insn_struct_insn_get,_comedi.comedi_insn_struct_insn_set)
+    __swig_setmethods__["n"] = _comedi.comedi_insn_struct_n_set
+    __swig_getmethods__["n"] = _comedi.comedi_insn_struct_n_get
+    if _newclass:n = property(_comedi.comedi_insn_struct_n_get,_comedi.comedi_insn_struct_n_set)
+    __swig_setmethods__["data"] = _comedi.comedi_insn_struct_data_set
+    __swig_getmethods__["data"] = _comedi.comedi_insn_struct_data_get
+    if _newclass:data = property(_comedi.comedi_insn_struct_data_get,_comedi.comedi_insn_struct_data_set)
+    __swig_setmethods__["subdev"] = _comedi.comedi_insn_struct_subdev_set
+    __swig_getmethods__["subdev"] = _comedi.comedi_insn_struct_subdev_get
+    if _newclass:subdev = property(_comedi.comedi_insn_struct_subdev_get,_comedi.comedi_insn_struct_subdev_set)
+    __swig_setmethods__["chanspec"] = _comedi.comedi_insn_struct_chanspec_set
+    __swig_getmethods__["chanspec"] = _comedi.comedi_insn_struct_chanspec_get
+    if _newclass:chanspec = property(_comedi.comedi_insn_struct_chanspec_get,_comedi.comedi_insn_struct_chanspec_set)
+    __swig_setmethods__["unused"] = _comedi.comedi_insn_struct_unused_set
+    __swig_getmethods__["unused"] = _comedi.comedi_insn_struct_unused_get
+    if _newclass:unused = property(_comedi.comedi_insn_struct_unused_get,_comedi.comedi_insn_struct_unused_set)
+    def __init__(self,*args):
+        _swig_setattr(self, comedi_insn_struct, 'this', apply(_comedi.new_comedi_insn_struct,args))
+        _swig_setattr(self, comedi_insn_struct, 'thisown', 1)
+    def __del__(self, destroy= _comedi.delete_comedi_insn_struct):
+        try:
+            if self.thisown: destroy(self)
+        except: pass
+    def __repr__(self):
+        return "<C comedi_insn_struct instance at %s>" % (self.this,)
+
+class comedi_insn_structPtr(comedi_insn_struct):
+    def __init__(self,this):
+        _swig_setattr(self, comedi_insn_struct, 'this', this)
+        if not hasattr(self,"thisown"): _swig_setattr(self, comedi_insn_struct, 'thisown', 0)
+        _swig_setattr(self, comedi_insn_struct,self.__class__,comedi_insn_struct)
+_comedi.comedi_insn_struct_swigregister(comedi_insn_structPtr)
+
+class comedi_insnlist_struct(_object):
+    __swig_setmethods__ = {}
+    __setattr__ = lambda self, name, value: _swig_setattr(self, comedi_insnlist_struct, name, value)
+    __swig_getmethods__ = {}
+    __getattr__ = lambda self, name: _swig_getattr(self, comedi_insnlist_struct, name)
+    __swig_setmethods__["n_insns"] = _comedi.comedi_insnlist_struct_n_insns_set
+    __swig_getmethods__["n_insns"] = _comedi.comedi_insnlist_struct_n_insns_get
+    if _newclass:n_insns = property(_comedi.comedi_insnlist_struct_n_insns_get,_comedi.comedi_insnlist_struct_n_insns_set)
+    __swig_setmethods__["insns"] = _comedi.comedi_insnlist_struct_insns_set
+    __swig_getmethods__["insns"] = _comedi.comedi_insnlist_struct_insns_get
+    if _newclass:insns = property(_comedi.comedi_insnlist_struct_insns_get,_comedi.comedi_insnlist_struct_insns_set)
+    def __init__(self,*args):
+        _swig_setattr(self, comedi_insnlist_struct, 'this', apply(_comedi.new_comedi_insnlist_struct,args))
+        _swig_setattr(self, comedi_insnlist_struct, 'thisown', 1)
+    def __del__(self, destroy= _comedi.delete_comedi_insnlist_struct):
+        try:
+            if self.thisown: destroy(self)
+        except: pass
+    def __repr__(self):
+        return "<C comedi_insnlist_struct instance at %s>" % (self.this,)
+
+class comedi_insnlist_structPtr(comedi_insnlist_struct):
+    def __init__(self,this):
+        _swig_setattr(self, comedi_insnlist_struct, 'this', this)
+        if not hasattr(self,"thisown"): _swig_setattr(self, comedi_insnlist_struct, 'thisown', 0)
+        _swig_setattr(self, comedi_insnlist_struct,self.__class__,comedi_insnlist_struct)
+_comedi.comedi_insnlist_struct_swigregister(comedi_insnlist_structPtr)
+
+class comedi_cmd_struct(_object):
+    __swig_setmethods__ = {}
+    __setattr__ = lambda self, name, value: _swig_setattr(self, comedi_cmd_struct, name, value)
+    __swig_getmethods__ = {}
+    __getattr__ = lambda self, name: _swig_getattr(self, comedi_cmd_struct, name)
+    __swig_setmethods__["subdev"] = _comedi.comedi_cmd_struct_subdev_set
+    __swig_getmethods__["subdev"] = _comedi.comedi_cmd_struct_subdev_get
+    if _newclass:subdev = property(_comedi.comedi_cmd_struct_subdev_get,_comedi.comedi_cmd_struct_subdev_set)
+    __swig_setmethods__["flags"] = _comedi.comedi_cmd_struct_flags_set
+    __swig_getmethods__["flags"] = _comedi.comedi_cmd_struct_flags_get
+    if _newclass:flags = property(_comedi.comedi_cmd_struct_flags_get,_comedi.comedi_cmd_struct_flags_set)
+    __swig_setmethods__["start_src"] = _comedi.comedi_cmd_struct_start_src_set
+    __swig_getmethods__["start_src"] = _comedi.comedi_cmd_struct_start_src_get
+    if _newclass:start_src = property(_comedi.comedi_cmd_struct_start_src_get,_comedi.comedi_cmd_struct_start_src_set)
+    __swig_setmethods__["start_arg"] = _comedi.comedi_cmd_struct_start_arg_set
+    __swig_getmethods__["start_arg"] = _comedi.comedi_cmd_struct_start_arg_get
+    if _newclass:start_arg = property(_comedi.comedi_cmd_struct_start_arg_get,_comedi.comedi_cmd_struct_start_arg_set)
+    __swig_setmethods__["scan_begin_src"] = _comedi.comedi_cmd_struct_scan_begin_src_set
+    __swig_getmethods__["scan_begin_src"] = _comedi.comedi_cmd_struct_scan_begin_src_get
+    if _newclass:scan_begin_src = property(_comedi.comedi_cmd_struct_scan_begin_src_get,_comedi.comedi_cmd_struct_scan_begin_src_set)
+    __swig_setmethods__["scan_begin_arg"] = _comedi.comedi_cmd_struct_scan_begin_arg_set
+    __swig_getmethods__["scan_begin_arg"] = _comedi.comedi_cmd_struct_scan_begin_arg_get
+    if _newclass:scan_begin_arg = property(_comedi.comedi_cmd_struct_scan_begin_arg_get,_comedi.comedi_cmd_struct_scan_begin_arg_set)
+    __swig_setmethods__["convert_src"] = _comedi.comedi_cmd_struct_convert_src_set
+    __swig_getmethods__["convert_src"] = _comedi.comedi_cmd_struct_convert_src_get
+    if _newclass:convert_src = property(_comedi.comedi_cmd_struct_convert_src_get,_comedi.comedi_cmd_struct_convert_src_set)
+    __swig_setmethods__["convert_arg"] = _comedi.comedi_cmd_struct_convert_arg_set
+    __swig_getmethods__["convert_arg"] = _comedi.comedi_cmd_struct_convert_arg_get
+    if _newclass:convert_arg = property(_comedi.comedi_cmd_struct_convert_arg_get,_comedi.comedi_cmd_struct_convert_arg_set)
+    __swig_setmethods__["scan_end_src"] = _comedi.comedi_cmd_struct_scan_end_src_set
+    __swig_getmethods__["scan_end_src"] = _comedi.comedi_cmd_struct_scan_end_src_get
+    if _newclass:scan_end_src = property(_comedi.comedi_cmd_struct_scan_end_src_get,_comedi.comedi_cmd_struct_scan_end_src_set)
+    __swig_setmethods__["scan_end_arg"] = _comedi.comedi_cmd_struct_scan_end_arg_set
+    __swig_getmethods__["scan_end_arg"] = _comedi.comedi_cmd_struct_scan_end_arg_get
+    if _newclass:scan_end_arg = property(_comedi.comedi_cmd_struct_scan_end_arg_get,_comedi.comedi_cmd_struct_scan_end_arg_set)
+    __swig_setmethods__["stop_src"] = _comedi.comedi_cmd_struct_stop_src_set
+    __swig_getmethods__["stop_src"] = _comedi.comedi_cmd_struct_stop_src_get
+    if _newclass:stop_src = property(_comedi.comedi_cmd_struct_stop_src_get,_comedi.comedi_cmd_struct_stop_src_set)
+    __swig_setmethods__["stop_arg"] = _comedi.comedi_cmd_struct_stop_arg_set
+    __swig_getmethods__["stop_arg"] = _comedi.comedi_cmd_struct_stop_arg_get
+    if _newclass:stop_arg = property(_comedi.comedi_cmd_struct_stop_arg_get,_comedi.comedi_cmd_struct_stop_arg_set)
+    __swig_setmethods__["chanlist"] = _comedi.comedi_cmd_struct_chanlist_set
+    __swig_getmethods__["chanlist"] = _comedi.comedi_cmd_struct_chanlist_get
+    if _newclass:chanlist = property(_comedi.comedi_cmd_struct_chanlist_get,_comedi.comedi_cmd_struct_chanlist_set)
+    __swig_setmethods__["chanlist_len"] = _comedi.comedi_cmd_struct_chanlist_len_set
+    __swig_getmethods__["chanlist_len"] = _comedi.comedi_cmd_struct_chanlist_len_get
+    if _newclass:chanlist_len = property(_comedi.comedi_cmd_struct_chanlist_len_get,_comedi.comedi_cmd_struct_chanlist_len_set)
+    __swig_setmethods__["data"] = _comedi.comedi_cmd_struct_data_set
+    __swig_getmethods__["data"] = _comedi.comedi_cmd_struct_data_get
+    if _newclass:data = property(_comedi.comedi_cmd_struct_data_get,_comedi.comedi_cmd_struct_data_set)
+    __swig_setmethods__["data_len"] = _comedi.comedi_cmd_struct_data_len_set
+    __swig_getmethods__["data_len"] = _comedi.comedi_cmd_struct_data_len_get
+    if _newclass:data_len = property(_comedi.comedi_cmd_struct_data_len_get,_comedi.comedi_cmd_struct_data_len_set)
+    def __init__(self,*args):
+        _swig_setattr(self, comedi_cmd_struct, 'this', apply(_comedi.new_comedi_cmd_struct,args))
+        _swig_setattr(self, comedi_cmd_struct, 'thisown', 1)
+    def __del__(self, destroy= _comedi.delete_comedi_cmd_struct):
+        try:
+            if self.thisown: destroy(self)
+        except: pass
+    def __repr__(self):
+        return "<C comedi_cmd_struct instance at %s>" % (self.this,)
+
+class comedi_cmd_structPtr(comedi_cmd_struct):
+    def __init__(self,this):
+        _swig_setattr(self, comedi_cmd_struct, 'this', this)
+        if not hasattr(self,"thisown"): _swig_setattr(self, comedi_cmd_struct, 'thisown', 0)
+        _swig_setattr(self, comedi_cmd_struct,self.__class__,comedi_cmd_struct)
+_comedi.comedi_cmd_struct_swigregister(comedi_cmd_structPtr)
+
+class comedi_chaninfo_struct(_object):
+    __swig_setmethods__ = {}
+    __setattr__ = lambda self, name, value: _swig_setattr(self, comedi_chaninfo_struct, name, value)
+    __swig_getmethods__ = {}
+    __getattr__ = lambda self, name: _swig_getattr(self, comedi_chaninfo_struct, name)
+    __swig_setmethods__["subdev"] = _comedi.comedi_chaninfo_struct_subdev_set
+    __swig_getmethods__["subdev"] = _comedi.comedi_chaninfo_struct_subdev_get
+    if _newclass:subdev = property(_comedi.comedi_chaninfo_struct_subdev_get,_comedi.comedi_chaninfo_struct_subdev_set)
+    __swig_setmethods__["maxdata_list"] = _comedi.comedi_chaninfo_struct_maxdata_list_set
+    __swig_getmethods__["maxdata_list"] = _comedi.comedi_chaninfo_struct_maxdata_list_get
+    if _newclass:maxdata_list = property(_comedi.comedi_chaninfo_struct_maxdata_list_get,_comedi.comedi_chaninfo_struct_maxdata_list_set)
+    __swig_setmethods__["flaglist"] = _comedi.comedi_chaninfo_struct_flaglist_set
+    __swig_getmethods__["flaglist"] = _comedi.comedi_chaninfo_struct_flaglist_get
+    if _newclass:flaglist = property(_comedi.comedi_chaninfo_struct_flaglist_get,_comedi.comedi_chaninfo_struct_flaglist_set)
+    __swig_setmethods__["rangelist"] = _comedi.comedi_chaninfo_struct_rangelist_set
+    __swig_getmethods__["rangelist"] = _comedi.comedi_chaninfo_struct_rangelist_get
+    if _newclass:rangelist = property(_comedi.comedi_chaninfo_struct_rangelist_get,_comedi.comedi_chaninfo_struct_rangelist_set)
+    __swig_setmethods__["unused"] = _comedi.comedi_chaninfo_struct_unused_set
+    __swig_getmethods__["unused"] = _comedi.comedi_chaninfo_struct_unused_get
+    if _newclass:unused = property(_comedi.comedi_chaninfo_struct_unused_get,_comedi.comedi_chaninfo_struct_unused_set)
+    def __init__(self,*args):
+        _swig_setattr(self, comedi_chaninfo_struct, 'this', apply(_comedi.new_comedi_chaninfo_struct,args))
+        _swig_setattr(self, comedi_chaninfo_struct, 'thisown', 1)
+    def __del__(self, destroy= _comedi.delete_comedi_chaninfo_struct):
+        try:
+            if self.thisown: destroy(self)
+        except: pass
+    def __repr__(self):
+        return "<C comedi_chaninfo_struct instance at %s>" % (self.this,)
+
+class comedi_chaninfo_structPtr(comedi_chaninfo_struct):
+    def __init__(self,this):
+        _swig_setattr(self, comedi_chaninfo_struct, 'this', this)
+        if not hasattr(self,"thisown"): _swig_setattr(self, comedi_chaninfo_struct, 'thisown', 0)
+        _swig_setattr(self, comedi_chaninfo_struct,self.__class__,comedi_chaninfo_struct)
+_comedi.comedi_chaninfo_struct_swigregister(comedi_chaninfo_structPtr)
+
+class comedi_rangeinfo_struct(_object):
+    __swig_setmethods__ = {}
+    __setattr__ = lambda self, name, value: _swig_setattr(self, comedi_rangeinfo_struct, name, value)
+    __swig_getmethods__ = {}
+    __getattr__ = lambda self, name: _swig_getattr(self, comedi_rangeinfo_struct, name)
+    __swig_setmethods__["range_type"] = _comedi.comedi_rangeinfo_struct_range_type_set
+    __swig_getmethods__["range_type"] = _comedi.comedi_rangeinfo_struct_range_type_get
+    if _newclass:range_type = property(_comedi.comedi_rangeinfo_struct_range_type_get,_comedi.comedi_rangeinfo_struct_range_type_set)
+    __swig_setmethods__["range_ptr"] = _comedi.comedi_rangeinfo_struct_range_ptr_set
+    __swig_getmethods__["range_ptr"] = _comedi.comedi_rangeinfo_struct_range_ptr_get
+    if _newclass:range_ptr = property(_comedi.comedi_rangeinfo_struct_range_ptr_get,_comedi.comedi_rangeinfo_struct_range_ptr_set)
+    def __init__(self,*args):
+        _swig_setattr(self, comedi_rangeinfo_struct, 'this', apply(_comedi.new_comedi_rangeinfo_struct,args))
+        _swig_setattr(self, comedi_rangeinfo_struct, 'thisown', 1)
+    def __del__(self, destroy= _comedi.delete_comedi_rangeinfo_struct):
+        try:
+            if self.thisown: destroy(self)
+        except: pass
+    def __repr__(self):
+        return "<C comedi_rangeinfo_struct instance at %s>" % (self.this,)
+
+class comedi_rangeinfo_structPtr(comedi_rangeinfo_struct):
+    def __init__(self,this):
+        _swig_setattr(self, comedi_rangeinfo_struct, 'this', this)
+        if not hasattr(self,"thisown"): _swig_setattr(self, comedi_rangeinfo_struct, 'thisown', 0)
+        _swig_setattr(self, comedi_rangeinfo_struct,self.__class__,comedi_rangeinfo_struct)
+_comedi.comedi_rangeinfo_struct_swigregister(comedi_rangeinfo_structPtr)
+
+class comedi_krange_struct(_object):
+    __swig_setmethods__ = {}
+    __setattr__ = lambda self, name, value: _swig_setattr(self, comedi_krange_struct, name, value)
+    __swig_getmethods__ = {}
+    __getattr__ = lambda self, name: _swig_getattr(self, comedi_krange_struct, name)
+    __swig_setmethods__["min"] = _comedi.comedi_krange_struct_min_set
+    __swig_getmethods__["min"] = _comedi.comedi_krange_struct_min_get
+    if _newclass:min = property(_comedi.comedi_krange_struct_min_get,_comedi.comedi_krange_struct_min_set)
+    __swig_setmethods__["max"] = _comedi.comedi_krange_struct_max_set
+    __swig_getmethods__["max"] = _comedi.comedi_krange_struct_max_get
+    if _newclass:max = property(_comedi.comedi_krange_struct_max_get,_comedi.comedi_krange_struct_max_set)
+    __swig_setmethods__["flags"] = _comedi.comedi_krange_struct_flags_set
+    __swig_getmethods__["flags"] = _comedi.comedi_krange_struct_flags_get
+    if _newclass:flags = property(_comedi.comedi_krange_struct_flags_get,_comedi.comedi_krange_struct_flags_set)
+    def __init__(self,*args):
+        _swig_setattr(self, comedi_krange_struct, 'this', apply(_comedi.new_comedi_krange_struct,args))
+        _swig_setattr(self, comedi_krange_struct, 'thisown', 1)
+    def __del__(self, destroy= _comedi.delete_comedi_krange_struct):
+        try:
+            if self.thisown: destroy(self)
+        except: pass
+    def __repr__(self):
+        return "<C comedi_krange_struct instance at %s>" % (self.this,)
+
+class comedi_krange_structPtr(comedi_krange_struct):
+    def __init__(self,this):
+        _swig_setattr(self, comedi_krange_struct, 'this', this)
+        if not hasattr(self,"thisown"): _swig_setattr(self, comedi_krange_struct, 'thisown', 0)
+        _swig_setattr(self, comedi_krange_struct,self.__class__,comedi_krange_struct)
+_comedi.comedi_krange_struct_swigregister(comedi_krange_structPtr)
+
+class comedi_subdinfo_struct(_object):
+    __swig_setmethods__ = {}
+    __setattr__ = lambda self, name, value: _swig_setattr(self, comedi_subdinfo_struct, name, value)
+    __swig_getmethods__ = {}
+    __getattr__ = lambda self, name: _swig_getattr(self, comedi_subdinfo_struct, name)
+    __swig_setmethods__["type"] = _comedi.comedi_subdinfo_struct_type_set
+    __swig_getmethods__["type"] = _comedi.comedi_subdinfo_struct_type_get
+    if _newclass:type = property(_comedi.comedi_subdinfo_struct_type_get,_comedi.comedi_subdinfo_struct_type_set)
+    __swig_setmethods__["n_chan"] = _comedi.comedi_subdinfo_struct_n_chan_set
+    __swig_getmethods__["n_chan"] = _comedi.comedi_subdinfo_struct_n_chan_get
+    if _newclass:n_chan = property(_comedi.comedi_subdinfo_struct_n_chan_get,_comedi.comedi_subdinfo_struct_n_chan_set)
+    __swig_setmethods__["subd_flags"] = _comedi.comedi_subdinfo_struct_subd_flags_set
+    __swig_getmethods__["subd_flags"] = _comedi.comedi_subdinfo_struct_subd_flags_get
+    if _newclass:subd_flags = property(_comedi.comedi_subdinfo_struct_subd_flags_get,_comedi.comedi_subdinfo_struct_subd_flags_set)
+    __swig_setmethods__["timer_type"] = _comedi.comedi_subdinfo_struct_timer_type_set
+    __swig_getmethods__["timer_type"] = _comedi.comedi_subdinfo_struct_timer_type_get
+    if _newclass:timer_type = property(_comedi.comedi_subdinfo_struct_timer_type_get,_comedi.comedi_subdinfo_struct_timer_type_set)
+    __swig_setmethods__["len_chanlist"] = _comedi.comedi_subdinfo_struct_len_chanlist_set
+    __swig_getmethods__["len_chanlist"] = _comedi.comedi_subdinfo_struct_len_chanlist_get
+    if _newclass:len_chanlist = property(_comedi.comedi_subdinfo_struct_len_chanlist_get,_comedi.comedi_subdinfo_struct_len_chanlist_set)
+    __swig_setmethods__["maxdata"] = _comedi.comedi_subdinfo_struct_maxdata_set
+    __swig_getmethods__["maxdata"] = _comedi.comedi_subdinfo_struct_maxdata_get
+    if _newclass:maxdata = property(_comedi.comedi_subdinfo_struct_maxdata_get,_comedi.comedi_subdinfo_struct_maxdata_set)
+    __swig_setmethods__["flags"] = _comedi.comedi_subdinfo_struct_flags_set
+    __swig_getmethods__["flags"] = _comedi.comedi_subdinfo_struct_flags_get
+    if _newclass:flags = property(_comedi.comedi_subdinfo_struct_flags_get,_comedi.comedi_subdinfo_struct_flags_set)
+    __swig_setmethods__["range_type"] = _comedi.comedi_subdinfo_struct_range_type_set
+    __swig_getmethods__["range_type"] = _comedi.comedi_subdinfo_struct_range_type_get
+    if _newclass:range_type = property(_comedi.comedi_subdinfo_struct_range_type_get,_comedi.comedi_subdinfo_struct_range_type_set)
+    __swig_setmethods__["unused"] = _comedi.comedi_subdinfo_struct_unused_set
+    __swig_getmethods__["unused"] = _comedi.comedi_subdinfo_struct_unused_get
+    if _newclass:unused = property(_comedi.comedi_subdinfo_struct_unused_get,_comedi.comedi_subdinfo_struct_unused_set)
+    def __init__(self,*args):
+        _swig_setattr(self, comedi_subdinfo_struct, 'this', apply(_comedi.new_comedi_subdinfo_struct,args))
+        _swig_setattr(self, comedi_subdinfo_struct, 'thisown', 1)
+    def __del__(self, destroy= _comedi.delete_comedi_subdinfo_struct):
+        try:
+            if self.thisown: destroy(self)
+        except: pass
+    def __repr__(self):
+        return "<C comedi_subdinfo_struct instance at %s>" % (self.this,)
+
+class comedi_subdinfo_structPtr(comedi_subdinfo_struct):
+    def __init__(self,this):
+        _swig_setattr(self, comedi_subdinfo_struct, 'this', this)
+        if not hasattr(self,"thisown"): _swig_setattr(self, comedi_subdinfo_struct, 'thisown', 0)
+        _swig_setattr(self, comedi_subdinfo_struct,self.__class__,comedi_subdinfo_struct)
+_comedi.comedi_subdinfo_struct_swigregister(comedi_subdinfo_structPtr)
+
+class comedi_devinfo_struct(_object):
+    __swig_setmethods__ = {}
+    __setattr__ = lambda self, name, value: _swig_setattr(self, comedi_devinfo_struct, name, value)
+    __swig_getmethods__ = {}
+    __getattr__ = lambda self, name: _swig_getattr(self, comedi_devinfo_struct, name)
+    __swig_setmethods__["version_code"] = _comedi.comedi_devinfo_struct_version_code_set
+    __swig_getmethods__["version_code"] = _comedi.comedi_devinfo_struct_version_code_get
+    if _newclass:version_code = property(_comedi.comedi_devinfo_struct_version_code_get,_comedi.comedi_devinfo_struct_version_code_set)
+    __swig_setmethods__["n_subdevs"] = _comedi.comedi_devinfo_struct_n_subdevs_set
+    __swig_getmethods__["n_subdevs"] = _comedi.comedi_devinfo_struct_n_subdevs_get
+    if _newclass:n_subdevs = property(_comedi.comedi_devinfo_struct_n_subdevs_get,_comedi.comedi_devinfo_struct_n_subdevs_set)
+    __swig_setmethods__["driver_name"] = _comedi.comedi_devinfo_struct_driver_name_set
+    __swig_getmethods__["driver_name"] = _comedi.comedi_devinfo_struct_driver_name_get
+    if _newclass:driver_name = property(_comedi.comedi_devinfo_struct_driver_name_get,_comedi.comedi_devinfo_struct_driver_name_set)
+    __swig_setmethods__["board_name"] = _comedi.comedi_devinfo_struct_board_name_set
+    __swig_getmethods__["board_name"] = _comedi.comedi_devinfo_struct_board_name_get
+    if _newclass:board_name = property(_comedi.comedi_devinfo_struct_board_name_get,_comedi.comedi_devinfo_struct_board_name_set)
+    __swig_setmethods__["read_subdevice"] = _comedi.comedi_devinfo_struct_read_subdevice_set
+    __swig_getmethods__["read_subdevice"] = _comedi.comedi_devinfo_struct_read_subdevice_get
+    if _newclass:read_subdevice = property(_comedi.comedi_devinfo_struct_read_subdevice_get,_comedi.comedi_devinfo_struct_read_subdevice_set)
+    __swig_setmethods__["write_subdevice"] = _comedi.comedi_devinfo_struct_write_subdevice_set
+    __swig_getmethods__["write_subdevice"] = _comedi.comedi_devinfo_struct_write_subdevice_get
+    if _newclass:write_subdevice = property(_comedi.comedi_devinfo_struct_write_subdevice_get,_comedi.comedi_devinfo_struct_write_subdevice_set)
+    __swig_setmethods__["unused"] = _comedi.comedi_devinfo_struct_unused_set
+    __swig_getmethods__["unused"] = _comedi.comedi_devinfo_struct_unused_get
+    if _newclass:unused = property(_comedi.comedi_devinfo_struct_unused_get,_comedi.comedi_devinfo_struct_unused_set)
+    def __init__(self,*args):
+        _swig_setattr(self, comedi_devinfo_struct, 'this', apply(_comedi.new_comedi_devinfo_struct,args))
+        _swig_setattr(self, comedi_devinfo_struct, 'thisown', 1)
+    def __del__(self, destroy= _comedi.delete_comedi_devinfo_struct):
+        try:
+            if self.thisown: destroy(self)
+        except: pass
+    def __repr__(self):
+        return "<C comedi_devinfo_struct instance at %s>" % (self.this,)
+
+class comedi_devinfo_structPtr(comedi_devinfo_struct):
+    def __init__(self,this):
+        _swig_setattr(self, comedi_devinfo_struct, 'this', this)
+        if not hasattr(self,"thisown"): _swig_setattr(self, comedi_devinfo_struct, 'thisown', 0)
+        _swig_setattr(self, comedi_devinfo_struct,self.__class__,comedi_devinfo_struct)
+_comedi.comedi_devinfo_struct_swigregister(comedi_devinfo_structPtr)
+
+class comedi_devconfig_struct(_object):
+    __swig_setmethods__ = {}
+    __setattr__ = lambda self, name, value: _swig_setattr(self, comedi_devconfig_struct, name, value)
+    __swig_getmethods__ = {}
+    __getattr__ = lambda self, name: _swig_getattr(self, comedi_devconfig_struct, name)
+    __swig_setmethods__["board_name"] = _comedi.comedi_devconfig_struct_board_name_set
+    __swig_getmethods__["board_name"] = _comedi.comedi_devconfig_struct_board_name_get
+    if _newclass:board_name = property(_comedi.comedi_devconfig_struct_board_name_get,_comedi.comedi_devconfig_struct_board_name_set)
+    __swig_setmethods__["options"] = _comedi.comedi_devconfig_struct_options_set
+    __swig_getmethods__["options"] = _comedi.comedi_devconfig_struct_options_get
+    if _newclass:options = property(_comedi.comedi_devconfig_struct_options_get,_comedi.comedi_devconfig_struct_options_set)
+    def __init__(self,*args):
+        _swig_setattr(self, comedi_devconfig_struct, 'this', apply(_comedi.new_comedi_devconfig_struct,args))
+        _swig_setattr(self, comedi_devconfig_struct, 'thisown', 1)
+    def __del__(self, destroy= _comedi.delete_comedi_devconfig_struct):
+        try:
+            if self.thisown: destroy(self)
+        except: pass
+    def __repr__(self):
+        return "<C comedi_devconfig_struct instance at %s>" % (self.this,)
+
+class comedi_devconfig_structPtr(comedi_devconfig_struct):
+    def __init__(self,this):
+        _swig_setattr(self, comedi_devconfig_struct, 'this', this)
+        if not hasattr(self,"thisown"): _swig_setattr(self, comedi_devconfig_struct, 'thisown', 0)
+        _swig_setattr(self, comedi_devconfig_struct,self.__class__,comedi_devconfig_struct)
+_comedi.comedi_devconfig_struct_swigregister(comedi_devconfig_structPtr)
+
+class comedi_bufconfig_struct(_object):
+    __swig_setmethods__ = {}
+    __setattr__ = lambda self, name, value: _swig_setattr(self, comedi_bufconfig_struct, name, value)
+    __swig_getmethods__ = {}
+    __getattr__ = lambda self, name: _swig_getattr(self, comedi_bufconfig_struct, name)
+    __swig_setmethods__["subdevice"] = _comedi.comedi_bufconfig_struct_subdevice_set
+    __swig_getmethods__["subdevice"] = _comedi.comedi_bufconfig_struct_subdevice_get
+    if _newclass:subdevice = property(_comedi.comedi_bufconfig_struct_subdevice_get,_comedi.comedi_bufconfig_struct_subdevice_set)
+    __swig_setmethods__["flags"] = _comedi.comedi_bufconfig_struct_flags_set
+    __swig_getmethods__["flags"] = _comedi.comedi_bufconfig_struct_flags_get
+    if _newclass:flags = property(_comedi.comedi_bufconfig_struct_flags_get,_comedi.comedi_bufconfig_struct_flags_set)
+    __swig_setmethods__["maximum_size"] = _comedi.comedi_bufconfig_struct_maximum_size_set
+    __swig_getmethods__["maximum_size"] = _comedi.comedi_bufconfig_struct_maximum_size_get
+    if _newclass:maximum_size = property(_comedi.comedi_bufconfig_struct_maximum_size_get,_comedi.comedi_bufconfig_struct_maximum_size_set)
+    __swig_setmethods__["size"] = _comedi.comedi_bufconfig_struct_size_set
+    __swig_getmethods__["size"] = _comedi.comedi_bufconfig_struct_size_get
+    if _newclass:size = property(_comedi.comedi_bufconfig_struct_size_get,_comedi.comedi_bufconfig_struct_size_set)
+    __swig_setmethods__["unused"] = _comedi.comedi_bufconfig_struct_unused_set
+    __swig_getmethods__["unused"] = _comedi.comedi_bufconfig_struct_unused_get
+    if _newclass:unused = property(_comedi.comedi_bufconfig_struct_unused_get,_comedi.comedi_bufconfig_struct_unused_set)
+    def __init__(self,*args):
+        _swig_setattr(self, comedi_bufconfig_struct, 'this', apply(_comedi.new_comedi_bufconfig_struct,args))
+        _swig_setattr(self, comedi_bufconfig_struct, 'thisown', 1)
+    def __del__(self, destroy= _comedi.delete_comedi_bufconfig_struct):
+        try:
+            if self.thisown: destroy(self)
+        except: pass
+    def __repr__(self):
+        return "<C comedi_bufconfig_struct instance at %s>" % (self.this,)
+
+class comedi_bufconfig_structPtr(comedi_bufconfig_struct):
+    def __init__(self,this):
+        _swig_setattr(self, comedi_bufconfig_struct, 'this', this)
+        if not hasattr(self,"thisown"): _swig_setattr(self, comedi_bufconfig_struct, 'thisown', 0)
+        _swig_setattr(self, comedi_bufconfig_struct,self.__class__,comedi_bufconfig_struct)
+_comedi.comedi_bufconfig_struct_swigregister(comedi_bufconfig_structPtr)
+
+class comedi_bufinfo_struct(_object):
+    __swig_setmethods__ = {}
+    __setattr__ = lambda self, name, value: _swig_setattr(self, comedi_bufinfo_struct, name, value)
+    __swig_getmethods__ = {}
+    __getattr__ = lambda self, name: _swig_getattr(self, comedi_bufinfo_struct, name)
+    __swig_setmethods__["subdevice"] = _comedi.comedi_bufinfo_struct_subdevice_set
+    __swig_getmethods__["subdevice"] = _comedi.comedi_bufinfo_struct_subdevice_get
+    if _newclass:subdevice = property(_comedi.comedi_bufinfo_struct_subdevice_get,_comedi.comedi_bufinfo_struct_subdevice_set)
+    __swig_setmethods__["bytes_read"] = _comedi.comedi_bufinfo_struct_bytes_read_set
+    __swig_getmethods__["bytes_read"] = _comedi.comedi_bufinfo_struct_bytes_read_get
+    if _newclass:bytes_read = property(_comedi.comedi_bufinfo_struct_bytes_read_get,_comedi.comedi_bufinfo_struct_bytes_read_set)
+    __swig_setmethods__["buf_int_ptr"] = _comedi.comedi_bufinfo_struct_buf_int_ptr_set
+    __swig_getmethods__["buf_int_ptr"] = _comedi.comedi_bufinfo_struct_buf_int_ptr_get
+    if _newclass:buf_int_ptr = property(_comedi.comedi_bufinfo_struct_buf_int_ptr_get,_comedi.comedi_bufinfo_struct_buf_int_ptr_set)
+    __swig_setmethods__["buf_user_ptr"] = _comedi.comedi_bufinfo_struct_buf_user_ptr_set
+    __swig_getmethods__["buf_user_ptr"] = _comedi.comedi_bufinfo_struct_buf_user_ptr_get
+    if _newclass:buf_user_ptr = property(_comedi.comedi_bufinfo_struct_buf_user_ptr_get,_comedi.comedi_bufinfo_struct_buf_user_ptr_set)
+    __swig_setmethods__["buf_int_count"] = _comedi.comedi_bufinfo_struct_buf_int_count_set
+    __swig_getmethods__["buf_int_count"] = _comedi.comedi_bufinfo_struct_buf_int_count_get
+    if _newclass:buf_int_count = property(_comedi.comedi_bufinfo_struct_buf_int_count_get,_comedi.comedi_bufinfo_struct_buf_int_count_set)
+    __swig_setmethods__["buf_user_count"] = _comedi.comedi_bufinfo_struct_buf_user_count_set
+    __swig_getmethods__["buf_user_count"] = _comedi.comedi_bufinfo_struct_buf_user_count_get
+    if _newclass:buf_user_count = property(_comedi.comedi_bufinfo_struct_buf_user_count_get,_comedi.comedi_bufinfo_struct_buf_user_count_set)
+    __swig_setmethods__["unused"] = _comedi.comedi_bufinfo_struct_unused_set
+    __swig_getmethods__["unused"] = _comedi.comedi_bufinfo_struct_unused_get
+    if _newclass:unused = property(_comedi.comedi_bufinfo_struct_unused_get,_comedi.comedi_bufinfo_struct_unused_set)
+    def __init__(self,*args):
+        _swig_setattr(self, comedi_bufinfo_struct, 'this', apply(_comedi.new_comedi_bufinfo_struct,args))
+        _swig_setattr(self, comedi_bufinfo_struct, 'thisown', 1)
+    def __del__(self, destroy= _comedi.delete_comedi_bufinfo_struct):
+        try:
+            if self.thisown: destroy(self)
+        except: pass
+    def __repr__(self):
+        return "<C comedi_bufinfo_struct instance at %s>" % (self.this,)
+
+class comedi_bufinfo_structPtr(comedi_bufinfo_struct):
+    def __init__(self,this):
+        _swig_setattr(self, comedi_bufinfo_struct, 'this', this)
+        if not hasattr(self,"thisown"): _swig_setattr(self, comedi_bufinfo_struct, 'thisown', 0)
+        _swig_setattr(self, comedi_bufinfo_struct,self.__class__,comedi_bufinfo_struct)
+_comedi.comedi_bufinfo_struct_swigregister(comedi_bufinfo_structPtr)
+
+RF_EXTERNAL = _comedi.RF_EXTERNAL
+UNIT_volt = _comedi.UNIT_volt
+UNIT_mA = _comedi.UNIT_mA
+UNIT_none = _comedi.UNIT_none
+COMEDI_CB_EOS = _comedi.COMEDI_CB_EOS
+COMEDI_CB_EOA = _comedi.COMEDI_CB_EOA
+COMEDI_CB_BLOCK = _comedi.COMEDI_CB_BLOCK
+COMEDI_CB_EOBUF = _comedi.COMEDI_CB_EOBUF
+COMEDI_CB_ERROR = _comedi.COMEDI_CB_ERROR
+class comedi_range(_object):
+    __swig_setmethods__ = {}
+    __setattr__ = lambda self, name, value: _swig_setattr(self, comedi_range, name, value)
+    __swig_getmethods__ = {}
+    __getattr__ = lambda self, name: _swig_getattr(self, comedi_range, name)
+    __swig_setmethods__["min"] = _comedi.comedi_range_min_set
+    __swig_getmethods__["min"] = _comedi.comedi_range_min_get
+    if _newclass:min = property(_comedi.comedi_range_min_get,_comedi.comedi_range_min_set)
+    __swig_setmethods__["max"] = _comedi.comedi_range_max_set
+    __swig_getmethods__["max"] = _comedi.comedi_range_max_get
+    if _newclass:max = property(_comedi.comedi_range_max_get,_comedi.comedi_range_max_set)
+    __swig_setmethods__["unit"] = _comedi.comedi_range_unit_set
+    __swig_getmethods__["unit"] = _comedi.comedi_range_unit_get
+    if _newclass:unit = property(_comedi.comedi_range_unit_get,_comedi.comedi_range_unit_set)
+    def __init__(self,*args):
+        _swig_setattr(self, comedi_range, 'this', apply(_comedi.new_comedi_range,args))
+        _swig_setattr(self, comedi_range, 'thisown', 1)
+    def __del__(self, destroy= _comedi.delete_comedi_range):
+        try:
+            if self.thisown: destroy(self)
+        except: pass
+    def __repr__(self):
+        return "<C comedi_range instance at %s>" % (self.this,)
+
+class comedi_rangePtr(comedi_range):
+    def __init__(self,this):
+        _swig_setattr(self, comedi_range, 'this', this)
+        if not hasattr(self,"thisown"): _swig_setattr(self, comedi_range, 'thisown', 0)
+        _swig_setattr(self, comedi_range,self.__class__,comedi_range)
+_comedi.comedi_range_swigregister(comedi_rangePtr)
+
+class comedi_sv_t(_object):
+    __swig_setmethods__ = {}
+    __setattr__ = lambda self, name, value: _swig_setattr(self, comedi_sv_t, name, value)
+    __swig_getmethods__ = {}
+    __getattr__ = lambda self, name: _swig_getattr(self, comedi_sv_t, name)
+    __swig_setmethods__["dev"] = _comedi.comedi_sv_t_dev_set
+    __swig_getmethods__["dev"] = _comedi.comedi_sv_t_dev_get
+    if _newclass:dev = property(_comedi.comedi_sv_t_dev_get,_comedi.comedi_sv_t_dev_set)
+    __swig_setmethods__["subdevice"] = _comedi.comedi_sv_t_subdevice_set
+    __swig_getmethods__["subdevice"] = _comedi.comedi_sv_t_subdevice_get
+    if _newclass:subdevice = property(_comedi.comedi_sv_t_subdevice_get,_comedi.comedi_sv_t_subdevice_set)
+    __swig_setmethods__["chan"] = _comedi.comedi_sv_t_chan_set
+    __swig_getmethods__["chan"] = _comedi.comedi_sv_t_chan_get
+    if _newclass:chan = property(_comedi.comedi_sv_t_chan_get,_comedi.comedi_sv_t_chan_set)
+    __swig_setmethods__["range"] = _comedi.comedi_sv_t_range_set
+    __swig_getmethods__["range"] = _comedi.comedi_sv_t_range_get
+    if _newclass:range = property(_comedi.comedi_sv_t_range_get,_comedi.comedi_sv_t_range_set)
+    __swig_setmethods__["aref"] = _comedi.comedi_sv_t_aref_set
+    __swig_getmethods__["aref"] = _comedi.comedi_sv_t_aref_get
+    if _newclass:aref = property(_comedi.comedi_sv_t_aref_get,_comedi.comedi_sv_t_aref_set)
+    __swig_setmethods__["n"] = _comedi.comedi_sv_t_n_set
+    __swig_getmethods__["n"] = _comedi.comedi_sv_t_n_get
+    if _newclass:n = property(_comedi.comedi_sv_t_n_get,_comedi.comedi_sv_t_n_set)
+    __swig_setmethods__["maxdata"] = _comedi.comedi_sv_t_maxdata_set
+    __swig_getmethods__["maxdata"] = _comedi.comedi_sv_t_maxdata_get
+    if _newclass:maxdata = property(_comedi.comedi_sv_t_maxdata_get,_comedi.comedi_sv_t_maxdata_set)
+    def __init__(self,*args):
+        _swig_setattr(self, comedi_sv_t, 'this', apply(_comedi.new_comedi_sv_t,args))
+        _swig_setattr(self, comedi_sv_t, 'thisown', 1)
+    def __del__(self, destroy= _comedi.delete_comedi_sv_t):
+        try:
+            if self.thisown: destroy(self)
+        except: pass
+    def __repr__(self):
+        return "<C comedi_sv_t instance at %s>" % (self.this,)
+
+class comedi_sv_tPtr(comedi_sv_t):
+    def __init__(self,this):
+        _swig_setattr(self, comedi_sv_t, 'this', this)
+        if not hasattr(self,"thisown"): _swig_setattr(self, comedi_sv_t, 'thisown', 0)
+        _swig_setattr(self, comedi_sv_t,self.__class__,comedi_sv_t)
+_comedi.comedi_sv_t_swigregister(comedi_sv_tPtr)
+
+COMEDI_OOR_NUMBER = _comedi.COMEDI_OOR_NUMBER
+COMEDI_OOR_NAN = _comedi.COMEDI_OOR_NAN
+comedi_open = _comedi.comedi_open
+
+comedi_close = _comedi.comedi_close
+
+comedi_loglevel = _comedi.comedi_loglevel
+
+comedi_perror = _comedi.comedi_perror
+
+comedi_strerror = _comedi.comedi_strerror
+
+comedi_errno = _comedi.comedi_errno
+
+comedi_fileno = _comedi.comedi_fileno
+
+comedi_set_global_oor_behavior = _comedi.comedi_set_global_oor_behavior
+
+comedi_get_n_subdevices = _comedi.comedi_get_n_subdevices
+
+comedi_get_version_code = _comedi.comedi_get_version_code
+
+comedi_get_driver_name = _comedi.comedi_get_driver_name
+
+comedi_get_board_name = _comedi.comedi_get_board_name
+
+comedi_get_read_subdevice = _comedi.comedi_get_read_subdevice
+
+comedi_get_write_subdevice = _comedi.comedi_get_write_subdevice
+
+comedi_get_subdevice_type = _comedi.comedi_get_subdevice_type
+
+comedi_find_subdevice_by_type = _comedi.comedi_find_subdevice_by_type
+
+comedi_get_subdevice_flags = _comedi.comedi_get_subdevice_flags
+
+comedi_get_n_channels = _comedi.comedi_get_n_channels
+
+comedi_range_is_chan_specific = _comedi.comedi_range_is_chan_specific
+
+comedi_maxdata_is_chan_specific = _comedi.comedi_maxdata_is_chan_specific
+
+comedi_get_maxdata = _comedi.comedi_get_maxdata
+
+comedi_get_n_ranges = _comedi.comedi_get_n_ranges
+
+comedi_get_range = _comedi.comedi_get_range
+
+comedi_find_range = _comedi.comedi_find_range
+
+comedi_get_buffer_size = _comedi.comedi_get_buffer_size
+
+comedi_get_max_buffer_size = _comedi.comedi_get_max_buffer_size
+
+comedi_set_buffer_size = _comedi.comedi_set_buffer_size
+
+comedi_do_insnlist = _comedi.comedi_do_insnlist
+
+comedi_do_insn = _comedi.comedi_do_insn
+
+comedi_lock = _comedi.comedi_lock
+
+comedi_unlock = _comedi.comedi_unlock
+
+comedi_to_phys = _comedi.comedi_to_phys
+
+comedi_from_phys = _comedi.comedi_from_phys
+
+comedi_sampl_to_phys = _comedi.comedi_sampl_to_phys
+
+comedi_sampl_from_phys = _comedi.comedi_sampl_from_phys
+
+comedi_data_read = _comedi.comedi_data_read
+
+comedi_data_read_n = _comedi.comedi_data_read_n
+
+comedi_data_read_hint = _comedi.comedi_data_read_hint
+
+comedi_data_read_delayed = _comedi.comedi_data_read_delayed
+
+comedi_data_write = _comedi.comedi_data_write
+
+comedi_dio_config = _comedi.comedi_dio_config
+
+comedi_dio_read = _comedi.comedi_dio_read
+
+comedi_dio_write = _comedi.comedi_dio_write
+
+comedi_dio_bitfield = _comedi.comedi_dio_bitfield
+
+comedi_sv_init = _comedi.comedi_sv_init
+
+comedi_sv_update = _comedi.comedi_sv_update
+
+comedi_sv_measure = _comedi.comedi_sv_measure
+
+comedi_get_cmd_src_mask = _comedi.comedi_get_cmd_src_mask
+
+comedi_get_cmd_generic_timed = _comedi.comedi_get_cmd_generic_timed
+
+comedi_cancel = _comedi.comedi_cancel
+
+comedi_command = _comedi.comedi_command
+
+comedi_command_test = _comedi.comedi_command_test
+
+comedi_poll = _comedi.comedi_poll
+
+comedi_set_max_buffer_size = _comedi.comedi_set_max_buffer_size
+
+comedi_get_buffer_contents = _comedi.comedi_get_buffer_contents
+
+comedi_mark_buffer_read = _comedi.comedi_mark_buffer_read
+
+comedi_get_buffer_offset = _comedi.comedi_get_buffer_offset
+
+
diff --git a/python/comedi_wrap.c b/python/comedi_wrap.c
new file mode 100644 (file)
index 0000000..9a7da01
--- /dev/null
@@ -0,0 +1,6442 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.19
+ * 
+ * This file is not intended to be easily readable and contains a number of 
+ * coding conventions designed to improve portability and efficiency. Do not make
+ * changes to this file unless you know what you are doing--modify the SWIG 
+ * interface file instead. 
+ * ----------------------------------------------------------------------------- */
+
+#define SWIGPYTHON
+
+#include "Python.h"
+
+/***********************************************************************
+ * common.swg
+ *
+ *     This file contains generic SWIG runtime support for pointer
+ *     type checking as well as a few commonly used macros to control
+ *     external linkage.
+ *
+ * Author : David Beazley (beazley@cs.uchicago.edu)
+ *
+ * Copyright (c) 1999-2000, The University of Chicago
+ * 
+ * This file may be freely redistributed without license or fee provided
+ * this copyright message remains intact.
+ ************************************************************************/
+
+#include <string.h>
+
+#if defined(_WIN32) || defined(__WIN32__)
+#       if defined(_MSC_VER)
+#               if defined(STATIC_LINKED)
+#                       define SWIGEXPORT(a) a
+#                       define SWIGIMPORT(a) extern a
+#               else
+#                       define SWIGEXPORT(a) __declspec(dllexport) a
+#                       define SWIGIMPORT(a) extern a
+#               endif
+#       else
+#               if defined(__BORLANDC__)
+#                       define SWIGEXPORT(a) a _export
+#                       define SWIGIMPORT(a) a _export
+#               else
+#                       define SWIGEXPORT(a) a
+#                       define SWIGIMPORT(a) a
+#               endif
+#       endif
+#else
+#       define SWIGEXPORT(a) a
+#       define SWIGIMPORT(a) a
+#endif
+
+#ifdef SWIG_GLOBAL
+#define SWIGRUNTIME(a) SWIGEXPORT(a)
+#else
+#define SWIGRUNTIME(a) static a
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef void *(*swig_converter_func)(void *);
+typedef struct swig_type_info *(*swig_dycast_func)(void **);
+
+typedef struct swig_type_info {
+  const char             *name;                 
+  swig_converter_func     converter;
+  const char             *str;
+  void                   *clientdata;  
+  swig_dycast_func        dcast;
+  struct swig_type_info  *next;
+  struct swig_type_info  *prev;
+} swig_type_info;
+
+#ifdef SWIG_NOINCLUDE
+
+SWIGIMPORT(swig_type_info *) SWIG_TypeRegister(swig_type_info *);
+SWIGIMPORT(swig_type_info *) SWIG_TypeCheck(char *c, swig_type_info *);
+SWIGIMPORT(void *)           SWIG_TypeCast(swig_type_info *, void *);
+SWIGIMPORT(swig_type_info *) SWIG_TypeDynamicCast(swig_type_info *, void **);
+SWIGIMPORT(const char *)     SWIG_TypeName(const swig_type_info *);
+SWIGIMPORT(swig_type_info *) SWIG_TypeQuery(const char *);
+SWIGIMPORT(void)             SWIG_TypeClientData(swig_type_info *, void *);
+
+#else
+
+static swig_type_info *swig_type_list = 0;
+
+/* Register a type mapping with the type-checking */
+SWIGRUNTIME(swig_type_info *)
+SWIG_TypeRegister(swig_type_info *ti)
+{
+  swig_type_info *tc, *head, *ret, *next;
+  /* Check to see if this type has already been registered */
+  tc = swig_type_list;
+  while (tc) {
+    if (strcmp(tc->name, ti->name) == 0) {
+      /* Already exists in the table.  Just add additional types to the list */
+      if (tc->clientdata) ti->clientdata = tc->clientdata;     
+      head = tc;
+      next = tc->next;
+      goto l1;
+    }
+    tc = tc->prev;
+  }
+  head = ti;
+  next = 0;
+
+  /* Place in list */
+  ti->prev = swig_type_list;
+  swig_type_list = ti;
+
+  /* Build linked lists */
+ l1:
+  ret = head;
+  tc = ti + 1;
+  /* Patch up the rest of the links */
+  while (tc->name) {
+    head->next = tc;
+    tc->prev = head;
+    head = tc;
+    tc++;
+  }
+  if (next) next->prev = head;  /**/
+  head->next = next;
+  return ret;
+}
+
+/* Check the typename */
+SWIGRUNTIME(swig_type_info *) 
+SWIG_TypeCheck(char *c, swig_type_info *ty)
+{
+  swig_type_info *s;
+  if (!ty) return 0;        /* Void pointer */
+  s = ty->next;             /* First element always just a name */
+  do {
+    if (strcmp(s->name,c) == 0) {
+      if (s == ty->next) return s;
+      /* Move s to the top of the linked list */
+      s->prev->next = s->next;
+      if (s->next) {
+       s->next->prev = s->prev;
+      }
+      /* Insert s as second element in the list */
+      s->next = ty->next;
+      if (ty->next) ty->next->prev = s;
+      ty->next = s;
+      s->prev = ty;  /**/
+      return s;
+    }
+    s = s->next;
+  } while (s && (s != ty->next));
+  return 0;
+}
+
+/* Cast a pointer up an inheritance hierarchy */
+SWIGRUNTIME(void *) 
+SWIG_TypeCast(swig_type_info *ty, void *ptr) 
+{
+  if ((!ty) || (!ty->converter)) return ptr;
+  return (*ty->converter)(ptr);
+}
+
+/* Dynamic pointer casting. Down an inheritance hierarchy */
+SWIGRUNTIME(swig_type_info *) 
+SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr) 
+{
+  swig_type_info *lastty = ty;
+  if (!ty || !ty->dcast) return ty;
+  while (ty && (ty->dcast)) {
+     ty = (*ty->dcast)(ptr);
+     if (ty) lastty = ty;
+  }
+  return lastty;
+}
+
+/* Return the name associated with this type */
+SWIGRUNTIME(const char *)
+SWIG_TypeName(const swig_type_info *ty) {
+  return ty->name;
+}
+
+/* Search for a swig_type_info structure */
+SWIGRUNTIME(swig_type_info *)
+SWIG_TypeQuery(const char *name) {
+  swig_type_info *ty = swig_type_list;
+  while (ty) {
+    if (ty->str && (strcmp(name,ty->str) == 0)) return ty;
+    if (ty->name && (strcmp(name,ty->name) == 0)) return ty;
+    ty = ty->prev;
+  }
+  return 0;
+}
+
+/* Set the clientdata field for a type */
+SWIGRUNTIME(void)
+SWIG_TypeClientData(swig_type_info *ti, void *clientdata) {
+  swig_type_info *tc, *equiv;
+  if (ti->clientdata == clientdata) return;
+  ti->clientdata = clientdata;
+  equiv = ti->next;
+  while (equiv) {
+    if (!equiv->converter) {
+      tc = swig_type_list;
+      while (tc) {
+       if ((strcmp(tc->name, equiv->name) == 0))
+         SWIG_TypeClientData(tc,clientdata);
+       tc = tc->prev;
+      }
+    }
+    equiv = equiv->next;
+  }
+}
+#endif
+
+#ifdef __cplusplus
+}
+
+#endif
+
+/***********************************************************************
+ * python.swg
+ *
+ *     This file contains the runtime support for Python modules
+ *     and includes code for managing global variables and pointer
+ *     type checking.
+ *
+ * Author : David Beazley (beazley@cs.uchicago.edu)
+ ************************************************************************/
+
+#include "Python.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define SWIG_PY_INT     1
+#define SWIG_PY_FLOAT   2
+#define SWIG_PY_STRING  3
+#define SWIG_PY_POINTER 4
+#define SWIG_PY_BINARY  5
+
+/* Flags for pointer conversion */
+
+#define SWIG_POINTER_EXCEPTION     0x1
+#define SWIG_POINTER_DISOWN        0x2
+
+/* Exception handling in wrappers */
+#define SWIG_fail   goto fail
+
+/* Constant information structure */
+typedef struct swig_const_info {
+    int type;
+    char *name;
+    long lvalue;
+    double dvalue;
+    void   *pvalue;
+    swig_type_info **ptype;
+} swig_const_info;
+
+#ifdef SWIG_NOINCLUDE
+
+SWIGEXPORT(PyObject *)        SWIG_newvarlink(void);
+SWIGEXPORT(void)              SWIG_addvarlink(PyObject *, char *, PyObject *(*)(void), int (*)(PyObject *));
+SWIGEXPORT(int)               SWIG_ConvertPtr(PyObject *, void **, swig_type_info *, int);
+SWIGEXPORT(int)               SWIG_ConvertPacked(PyObject *, void *, int sz, swig_type_info *, int);
+SWIGEXPORT(char *)            SWIG_PackData(char *c, void *, int);
+SWIGEXPORT(char *)            SWIG_UnpackData(char *c, void *, int);
+SWIGEXPORT(PyObject *)        SWIG_NewPointerObj(void *, swig_type_info *,int own);
+SWIGEXPORT(PyObject *)        SWIG_NewPackedObj(void *, int sz, swig_type_info *);
+SWIGEXPORT(void)              SWIG_InstallConstants(PyObject *d, swig_const_info constants[]);
+#else
+
+/* -----------------------------------------------------------------------------
+ * global variable support code.
+ * ----------------------------------------------------------------------------- */
+
+typedef struct swig_globalvar {   
+  char       *name;                  /* Name of global variable */
+  PyObject *(*get_attr)(void);       /* Return the current value */
+  int       (*set_attr)(PyObject *); /* Set the value */
+  struct swig_globalvar *next;
+} swig_globalvar;
+
+typedef struct swig_varlinkobject {
+  PyObject_HEAD
+  swig_globalvar *vars;
+} swig_varlinkobject;
+
+static PyObject *
+swig_varlink_repr(swig_varlinkobject *v) {
+  v = v;
+  return PyString_FromString("<Global variables>");
+}
+
+static int
+swig_varlink_print(swig_varlinkobject *v, FILE *fp, int flags) {
+  swig_globalvar  *var;
+  flags = flags;
+  fprintf(fp,"Global variables { ");
+  for (var = v->vars; var; var=var->next) {
+    fprintf(fp,"%s", var->name);
+    if (var->next) fprintf(fp,", ");
+  }
+  fprintf(fp," }\n");
+  return 0;
+}
+
+static PyObject *
+swig_varlink_getattr(swig_varlinkobject *v, char *n) {
+  swig_globalvar *var = v->vars;
+  while (var) {
+    if (strcmp(var->name,n) == 0) {
+      return (*var->get_attr)();
+    }
+    var = var->next;
+  }
+  PyErr_SetString(PyExc_NameError,"Unknown C global variable");
+  return NULL;
+}
+
+static int
+swig_varlink_setattr(swig_varlinkobject *v, char *n, PyObject *p) {
+  swig_globalvar *var = v->vars;
+  while (var) {
+    if (strcmp(var->name,n) == 0) {
+      return (*var->set_attr)(p);
+    }
+    var = var->next;
+  }
+  PyErr_SetString(PyExc_NameError,"Unknown C global variable");
+  return 1;
+}
+
+statichere PyTypeObject varlinktype = {
+  PyObject_HEAD_INIT(0)              
+  0,
+  (char *)"swigvarlink",                      /* Type name    */
+  sizeof(swig_varlinkobject),         /* Basic size   */
+  0,                                  /* Itemsize     */
+  0,                                  /* Deallocator  */ 
+  (printfunc) swig_varlink_print,     /* Print        */
+  (getattrfunc) swig_varlink_getattr, /* get attr     */
+  (setattrfunc) swig_varlink_setattr, /* Set attr     */
+  0,                                  /* tp_compare   */
+  (reprfunc) swig_varlink_repr,       /* tp_repr      */    
+  0,                                  /* tp_as_number */
+  0,                                  /* tp_as_mapping*/
+  0,                                  /* tp_hash      */
+};
+
+/* Create a variable linking object for use later */
+SWIGRUNTIME(PyObject *)
+SWIG_newvarlink(void) {
+  swig_varlinkobject *result = 0;
+  result = PyMem_NEW(swig_varlinkobject,1);
+  varlinktype.ob_type = &PyType_Type;    /* Patch varlinktype into a PyType */
+  result->ob_type = &varlinktype;
+  result->vars = 0;
+  result->ob_refcnt = 0;
+  Py_XINCREF((PyObject *) result);
+  return ((PyObject*) result);
+}
+
+SWIGRUNTIME(void)
+SWIG_addvarlink(PyObject *p, char *name,
+          PyObject *(*get_attr)(void), int (*set_attr)(PyObject *p)) {
+  swig_varlinkobject *v;
+  swig_globalvar *gv;
+  v= (swig_varlinkobject *) p;
+  gv = (swig_globalvar *) malloc(sizeof(swig_globalvar));
+  gv->name = (char *) malloc(strlen(name)+1);
+  strcpy(gv->name,name);
+  gv->get_attr = get_attr;
+  gv->set_attr = set_attr;
+  gv->next = v->vars;
+  v->vars = gv;
+}
+
+/* Pack binary data into a string */
+SWIGRUNTIME(char *)
+SWIG_PackData(char *c, void *ptr, int sz) {
+  static char hex[17] = "0123456789abcdef";
+  int i;
+  unsigned char *u = (unsigned char *) ptr;
+  register unsigned char uu;
+  for (i = 0; i < sz; i++,u++) {
+    uu = *u;
+    *(c++) = hex[(uu & 0xf0) >> 4];
+    *(c++) = hex[uu & 0xf];
+  }
+  return c;
+}
+
+/* Unpack binary data from a string */
+SWIGRUNTIME(char *)
+SWIG_UnpackData(char *c, void *ptr, int sz) {
+  register unsigned char uu = 0;
+  register int d;
+  unsigned char *u = (unsigned char *) ptr;
+  int i;
+  for (i = 0; i < sz; i++, u++) {
+    d = *(c++);
+    if ((d >= '0') && (d <= '9'))
+      uu = ((d - '0') << 4);
+    else if ((d >= 'a') && (d <= 'f'))
+      uu = ((d - ('a'-10)) << 4);
+    d = *(c++);
+    if ((d >= '0') && (d <= '9'))
+      uu |= (d - '0');
+    else if ((d >= 'a') && (d <= 'f'))
+      uu |= (d - ('a'-10));
+    *u = uu;
+  }
+  return c;
+}
+
+/* Convert a pointer value */
+SWIGRUNTIME(int)
+SWIG_ConvertPtr(PyObject *obj, void **ptr, swig_type_info *ty, int flags) {
+  swig_type_info *tc;
+  char  *c;
+  static PyObject *SWIG_this = 0;
+  int    newref = 0;
+  PyObject  *pyobj = 0;
+
+  if (!obj) return 0;
+  if (obj == Py_None) {
+    *ptr = 0;
+    return 0;
+  }
+#ifdef SWIG_COBJECT_TYPES
+  if (!(PyCObject_Check(obj))) {
+    if (!SWIG_this)
+      SWIG_this = PyString_FromString("this");
+    pyobj = obj;
+    obj = PyObject_GetAttr(obj,SWIG_this);
+    newref = 1;
+    if (!obj) goto type_error;
+    if (!PyCObject_Check(obj)) {
+      Py_DECREF(obj);
+      goto type_error;
+    }
+  }  
+  *ptr = PyCObject_AsVoidPtr(obj);
+  c = (char *) PyCObject_GetDesc(obj);
+  if (newref) Py_DECREF(obj);
+  goto cobject;
+#else
+  if (!(PyString_Check(obj))) {
+    if (!SWIG_this)
+      SWIG_this = PyString_FromString("this");
+    pyobj = obj;
+    obj = PyObject_GetAttr(obj,SWIG_this);
+    newref = 1;
+    if (!obj) goto type_error;
+    if (!PyString_Check(obj)) {
+      Py_DECREF(obj);
+      goto type_error;
+    }
+  } 
+  c = PyString_AsString(obj);
+  /* Pointer values must start with leading underscore */
+  if (*c != '_') {
+    *ptr = (void *) 0;
+    if (strcmp(c,"NULL") == 0) {
+      if (newref) { Py_DECREF(obj); }
+      return 0;
+    } else {
+      if (newref) { Py_DECREF(obj); }
+      goto type_error;
+    }
+  }
+  c++;
+  c = SWIG_UnpackData(c,ptr,sizeof(void *));
+  if (newref) { Py_DECREF(obj); }
+#endif
+
+#ifdef SWIG_COBJECT_TYPES
+cobject:
+#endif
+
+  if (ty) {
+    tc = SWIG_TypeCheck(c,ty);
+    if (!tc) goto type_error;
+    *ptr = SWIG_TypeCast(tc,(void*) *ptr);
+  }
+
+  if ((pyobj) && (flags & SWIG_POINTER_DISOWN)) {
+      PyObject *zero = PyInt_FromLong(0);
+      PyObject_SetAttrString(pyobj,(char*)"thisown",zero);
+      Py_DECREF(zero);
+  }
+  return 0;
+
+type_error:
+  if (flags & SWIG_POINTER_EXCEPTION) {
+    if (ty) {
+      char *temp = (char *) malloc(64+strlen(ty->name));
+      sprintf(temp,"Type error. Expected %s", ty->name);
+      PyErr_SetString(PyExc_TypeError, temp);
+      free((char *) temp);
+    } else {
+      PyErr_SetString(PyExc_TypeError,"Expected a pointer");
+    }
+  }
+  return -1;
+}
+
+/* Convert a packed value value */
+SWIGRUNTIME(int)
+SWIG_ConvertPacked(PyObject *obj, void *ptr, int sz, swig_type_info *ty, int flags) {
+  swig_type_info *tc;
+  char  *c;
+
+  if ((!obj) || (!PyString_Check(obj))) goto type_error;
+  c = PyString_AsString(obj);
+  /* Pointer values must start with leading underscore */
+  if (*c != '_') goto type_error;
+  c++;
+  c = SWIG_UnpackData(c,ptr,sz);
+  if (ty) {
+    tc = SWIG_TypeCheck(c,ty);
+    if (!tc) goto type_error;
+  }
+  return 0;
+
+type_error:
+
+  if (flags) {
+    if (ty) {
+      char *temp = (char *) malloc(64+strlen(ty->name));
+      sprintf(temp,"Type error. Expected %s", ty->name);
+      PyErr_SetString(PyExc_TypeError, temp);
+      free((char *) temp);
+    } else {
+      PyErr_SetString(PyExc_TypeError,"Expected a pointer");
+    }
+  }
+  return -1;
+}
+
+/* Create a new pointer object */
+SWIGRUNTIME(PyObject *)
+SWIG_NewPointerObj(void *ptr, swig_type_info *type, int own) {
+  PyObject *robj;
+  if (!ptr) {
+    Py_INCREF(Py_None);
+    return Py_None;
+  }
+#ifdef SWIG_COBJECT_TYPES
+  robj = PyCObject_FromVoidPtrAndDesc((void *) ptr, (char *) type->name, NULL);
+#else
+  {
+    char result[1024];
+    char *r = result;
+    *(r++) = '_';
+    r = SWIG_PackData(r,&ptr,sizeof(void *));
+    strcpy(r,type->name);
+    robj = PyString_FromString(result);
+  }
+#endif
+  if (!robj || (robj == Py_None)) return robj;
+  if (type->clientdata) {
+    PyObject *inst;
+    PyObject *args = Py_BuildValue((char*)"(O)", robj);
+    Py_DECREF(robj);
+    inst = PyObject_CallObject((PyObject *) type->clientdata, args);
+    Py_DECREF(args);
+    if (inst) {
+      if (own) {
+       PyObject *n = PyInt_FromLong(1);
+       PyObject_SetAttrString(inst,(char*)"thisown",n);
+       Py_DECREF(n);
+      }
+      robj = inst;
+    }
+  }
+  return robj;
+}
+
+SWIGRUNTIME(PyObject *)
+SWIG_NewPackedObj(void *ptr, int sz, swig_type_info *type) {
+  char result[1024];
+  char *r = result;
+  if ((2*sz + 1 + strlen(type->name)) > 1000) return 0;
+  *(r++) = '_';
+  r = SWIG_PackData(r,ptr,sz);
+  strcpy(r,type->name);
+  return PyString_FromString(result);
+}
+
+/* Install Constants */
+SWIGRUNTIME(void)
+SWIG_InstallConstants(PyObject *d, swig_const_info constants[]) {
+  int i;
+  PyObject *obj;
+  for (i = 0; constants[i].type; i++) {
+    switch(constants[i].type) {
+    case SWIG_PY_INT:
+      obj = PyInt_FromLong(constants[i].lvalue);
+      break;
+    case SWIG_PY_FLOAT:
+      obj = PyFloat_FromDouble(constants[i].dvalue);
+      break;
+    case SWIG_PY_STRING:
+      obj = PyString_FromString((char *) constants[i].pvalue);
+      break;
+    case SWIG_PY_POINTER:
+      obj = SWIG_NewPointerObj(constants[i].pvalue, *(constants[i]).ptype,0);
+      break;
+    case SWIG_PY_BINARY:
+      obj = SWIG_NewPackedObj(constants[i].pvalue, constants[i].lvalue, *(constants[i].ptype));
+      break;
+    default:
+      obj = 0;
+      break;
+    }
+    if (obj) {
+      PyDict_SetItemString(d,constants[i].name,obj);
+      Py_DECREF(obj);
+    }
+  }
+}
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+
+
+
+
+
+
+
+/* -------- TYPES TABLE (BEGIN) -------- */
+
+#define  SWIGTYPE_p_lsampl_t swig_types[0] 
+#define  SWIGTYPE_p_sampl_t swig_types[1] 
+#define  SWIGTYPE_p_double swig_types[2] 
+#define  SWIGTYPE_p_comedi_range swig_types[3] 
+#define  SWIGTYPE_p_unsigned_int swig_types[4] 
+#define  SWIGTYPE_p_void swig_types[5] 
+#define  SWIGTYPE_p_comedi_subdinfo_struct swig_types[6] 
+#define  SWIGTYPE_p_comedi_krange_struct swig_types[7] 
+#define  SWIGTYPE_p_comedi_rangeinfo_struct swig_types[8] 
+#define  SWIGTYPE_p_comedi_chaninfo_struct swig_types[9] 
+#define  SWIGTYPE_p_comedi_cmd_struct swig_types[10] 
+#define  SWIGTYPE_p_comedi_insnlist_struct swig_types[11] 
+#define  SWIGTYPE_p_comedi_insn_struct swig_types[12] 
+#define  SWIGTYPE_p_comedi_trig_struct swig_types[13] 
+#define  SWIGTYPE_p_comedi_devinfo_struct swig_types[14] 
+#define  SWIGTYPE_p_char swig_types[15] 
+#define  SWIGTYPE_p_comedi_devconfig_struct swig_types[16] 
+#define  SWIGTYPE_p_comedi_bufconfig_struct swig_types[17] 
+#define  SWIGTYPE_p_comedi_bufinfo_struct swig_types[18] 
+#define  SWIGTYPE_p_comedi_sv_t swig_types[19] 
+#define  SWIGTYPE_p_chanlist swig_types[20] 
+#define  SWIGTYPE_p_comedi_insn swig_types[21] 
+#define  SWIGTYPE_p_comedi_insnlist swig_types[22] 
+#define  SWIGTYPE_p_comedi_t swig_types[23] 
+#define  SWIGTYPE_p_int swig_types[24] 
+#define  SWIGTYPE_p_comedi_cmd swig_types[25] 
+static swig_type_info *swig_types[27];
+
+/* -------- TYPES TABLE (END) -------- */
+
+
+/*-----------------------------------------------
+              @(target):= _comedi.so
+  ------------------------------------------------*/
+#define SWIG_init    init_comedi
+
+#define SWIG_name    "_comedi"
+
+#include "../comedilib-0.7.19/include/comedi.h"
+#include "../comedilib-0.7.19/include/comedilib.h"
+
+
+static unsigned int cr_pack(unsigned int chan, unsigned int rng, unsigned int aref){
+       return CR_PACK(chan,rng,aref);
+}
+static unsigned int cr_pack_flags(unsigned int chan, unsigned int rng, unsigned int aref, unsigned int flags){
+       return CR_PACK_FLAGS(chan,rng,aref, flags);
+}
+static unsigned int cr_chan(unsigned int a){
+       return CR_CHAN(a);
+}
+static unsigned int cr_range(unsigned int a){
+       return CR_RANGE(a);
+}
+static unsigned int cr_aref(unsigned int a){
+       return CR_AREF(a);
+}
+
+
+typedef unsigned int chanlist;
+
+chanlist *new_chanlist(int nelements){
+  return (unsigned int *) calloc(nelements,sizeof(unsigned int));
+}
+void delete_chanlist(chanlist *self){
+  free(self);
+}
+unsigned int chanlist_getitem(chanlist *self,int index){
+  return self[index];
+}
+void chanlist_setitem(chanlist *self,int index,unsigned int value){
+  self[index] = value;
+}
+unsigned int *chanlist_cast(chanlist *self){
+  return self;
+}
+chanlist *chanlist_frompointer(unsigned int *t){
+  return (chanlist *) t;
+}
+#ifdef __cplusplus
+extern "C" {
+#endif
+static PyObject *_wrap_cr_pack(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    unsigned int arg1 ;
+    unsigned int arg2 ;
+    unsigned int arg3 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOO:cr_pack",&obj0,&obj1,&obj2)) goto fail;
+    arg1 = (unsigned int) PyInt_AsLong(obj0);
+    if (PyErr_Occurred()) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    arg3 = (unsigned int) PyInt_AsLong(obj2);
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (unsigned int)cr_pack(arg1,arg2,arg3);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_cr_pack_flags(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    unsigned int arg1 ;
+    unsigned int arg2 ;
+    unsigned int arg3 ;
+    unsigned int arg4 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOOO:cr_pack_flags",&obj0,&obj1,&obj2,&obj3)) goto fail;
+    arg1 = (unsigned int) PyInt_AsLong(obj0);
+    if (PyErr_Occurred()) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    arg3 = (unsigned int) PyInt_AsLong(obj2);
+    if (PyErr_Occurred()) SWIG_fail;
+    arg4 = (unsigned int) PyInt_AsLong(obj3);
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (unsigned int)cr_pack_flags(arg1,arg2,arg3,arg4);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_cr_chan(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    unsigned int arg1 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:cr_chan",&obj0)) goto fail;
+    arg1 = (unsigned int) PyInt_AsLong(obj0);
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (unsigned int)cr_chan(arg1);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_cr_range(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    unsigned int arg1 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:cr_range",&obj0)) goto fail;
+    arg1 = (unsigned int) PyInt_AsLong(obj0);
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (unsigned int)cr_range(arg1);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_cr_aref(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    unsigned int arg1 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:cr_aref",&obj0)) goto fail;
+    arg1 = (unsigned int) PyInt_AsLong(obj0);
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (unsigned int)cr_aref(arg1);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_new_chanlist(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    chanlist *result;
+    
+    if(!PyArg_ParseTuple(args,(char *)"i:new_chanlist",&arg1)) goto fail;
+    result = (chanlist *)new_chanlist(arg1);
+    
+    resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_chanlist, 1);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_delete_chanlist(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    chanlist *arg1 = (chanlist *) 0 ;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:delete_chanlist",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_chanlist,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    delete_chanlist(arg1);
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_chanlist___getitem__(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    chanlist *arg1 = (chanlist *) 0 ;
+    int arg2 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"Oi:chanlist___getitem__",&obj0,&arg2)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_chanlist,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int)chanlist_getitem(arg1,arg2);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_chanlist___setitem__(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    chanlist *arg1 = (chanlist *) 0 ;
+    int arg2 ;
+    unsigned int arg3 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj2 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OiO:chanlist___setitem__",&obj0,&arg2,&obj2)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_chanlist,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg3 = (unsigned int) PyInt_AsLong(obj2);
+    if (PyErr_Occurred()) SWIG_fail;
+    chanlist_setitem(arg1,arg2,arg3);
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_chanlist_cast(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    chanlist *arg1 = (chanlist *) 0 ;
+    unsigned int *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:chanlist_cast",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_chanlist,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int *)chanlist_cast(arg1);
+    
+    resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_unsigned_int, 0);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_chanlist_frompointer(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    unsigned int *arg1 = (unsigned int *) 0 ;
+    chanlist *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:chanlist_frompointer",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_unsigned_int,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (chanlist *)chanlist_frompointer(arg1);
+    
+    resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_chanlist, 0);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject * chanlist_swigregister(PyObject *self, PyObject *args) {
+    PyObject *obj;
+    if (!PyArg_ParseTuple(args,(char*)"O", &obj)) return NULL;
+    SWIG_TypeClientData(SWIGTYPE_p_chanlist, obj);
+    Py_INCREF(obj);
+    return Py_BuildValue((char *)"");
+}
+static PyObject *_wrap_comedi_trig_struct_subdev_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_trig_struct *arg1 = (struct comedi_trig_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_trig_struct_subdev_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_trig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->subdev = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_trig_struct_subdev_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_trig_struct *arg1 = (struct comedi_trig_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_trig_struct_subdev_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_trig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->subdev);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_trig_struct_mode_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_trig_struct *arg1 = (struct comedi_trig_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_trig_struct_mode_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_trig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->mode = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_trig_struct_mode_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_trig_struct *arg1 = (struct comedi_trig_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_trig_struct_mode_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_trig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->mode);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_trig_struct_flags_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_trig_struct *arg1 = (struct comedi_trig_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_trig_struct_flags_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_trig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->flags = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_trig_struct_flags_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_trig_struct *arg1 = (struct comedi_trig_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_trig_struct_flags_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_trig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->flags);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_trig_struct_n_chan_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_trig_struct *arg1 = (struct comedi_trig_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_trig_struct_n_chan_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_trig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->n_chan = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_trig_struct_n_chan_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_trig_struct *arg1 = (struct comedi_trig_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_trig_struct_n_chan_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_trig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->n_chan);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_trig_struct_chanlist_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_trig_struct *arg1 = (struct comedi_trig_struct *) 0 ;
+    unsigned int *arg2 = (unsigned int *) 0 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_trig_struct_chanlist_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_trig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj1,(void **) &arg2, SWIGTYPE_p_unsigned_int,SWIG_POINTER_EXCEPTION | SWIG_POINTER_DISOWN )) == -1) SWIG_fail;
+    if (arg1) (arg1)->chanlist = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_trig_struct_chanlist_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_trig_struct *arg1 = (struct comedi_trig_struct *) 0 ;
+    unsigned int *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_trig_struct_chanlist_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_trig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int *) ((arg1)->chanlist);
+    
+    resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_unsigned_int, 0);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_trig_struct_data_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_trig_struct *arg1 = (struct comedi_trig_struct *) 0 ;
+    sampl_t *arg2 = (sampl_t *) 0 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_trig_struct_data_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_trig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj1,(void **) &arg2, SWIGTYPE_p_sampl_t,SWIG_POINTER_EXCEPTION | SWIG_POINTER_DISOWN )) == -1) SWIG_fail;
+    if (arg1) (arg1)->data = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_trig_struct_data_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_trig_struct *arg1 = (struct comedi_trig_struct *) 0 ;
+    sampl_t *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_trig_struct_data_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_trig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (sampl_t *) ((arg1)->data);
+    
+    resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_sampl_t, 0);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_trig_struct_n_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_trig_struct *arg1 = (struct comedi_trig_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_trig_struct_n_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_trig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->n = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_trig_struct_n_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_trig_struct *arg1 = (struct comedi_trig_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_trig_struct_n_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_trig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->n);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_trig_struct_trigsrc_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_trig_struct *arg1 = (struct comedi_trig_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_trig_struct_trigsrc_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_trig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->trigsrc = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_trig_struct_trigsrc_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_trig_struct *arg1 = (struct comedi_trig_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_trig_struct_trigsrc_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_trig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->trigsrc);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_trig_struct_trigvar_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_trig_struct *arg1 = (struct comedi_trig_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_trig_struct_trigvar_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_trig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->trigvar = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_trig_struct_trigvar_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_trig_struct *arg1 = (struct comedi_trig_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_trig_struct_trigvar_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_trig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->trigvar);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_trig_struct_trigvar1_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_trig_struct *arg1 = (struct comedi_trig_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_trig_struct_trigvar1_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_trig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->trigvar1 = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_trig_struct_trigvar1_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_trig_struct *arg1 = (struct comedi_trig_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_trig_struct_trigvar1_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_trig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->trigvar1);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_trig_struct_data_len_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_trig_struct *arg1 = (struct comedi_trig_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_trig_struct_data_len_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_trig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->data_len = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_trig_struct_data_len_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_trig_struct *arg1 = (struct comedi_trig_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_trig_struct_data_len_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_trig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->data_len);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_trig_struct_unused_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_trig_struct *arg1 = (struct comedi_trig_struct *) 0 ;
+    unsigned int *arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_trig_struct_unused_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_trig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj1,(void **) &arg2, SWIGTYPE_p_unsigned_int,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    {
+        int ii;
+        unsigned int *b = (unsigned int *) arg1->unused;
+        for (ii = 0; ii < 3; ii++) b[ii] = *((unsigned int *) arg2 + ii);
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_trig_struct_unused_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_trig_struct *arg1 = (struct comedi_trig_struct *) 0 ;
+    unsigned int *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_trig_struct_unused_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_trig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int *)(unsigned int *) ((arg1)->unused);
+    
+    resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_unsigned_int, 0);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_new_comedi_trig_struct(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_trig_struct *result;
+    
+    if(!PyArg_ParseTuple(args,(char *)":new_comedi_trig_struct")) goto fail;
+    result = (struct comedi_trig_struct *)(struct comedi_trig_struct *) calloc(1, sizeof(struct comedi_trig_struct));
+    
+    resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_comedi_trig_struct, 1);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_delete_comedi_trig_struct(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_trig_struct *arg1 = (struct comedi_trig_struct *) 0 ;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:delete_comedi_trig_struct",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_trig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    free((char *) arg1);
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject * comedi_trig_struct_swigregister(PyObject *self, PyObject *args) {
+    PyObject *obj;
+    if (!PyArg_ParseTuple(args,(char*)"O", &obj)) return NULL;
+    SWIG_TypeClientData(SWIGTYPE_p_comedi_trig_struct, obj);
+    Py_INCREF(obj);
+    return Py_BuildValue((char *)"");
+}
+static PyObject *_wrap_comedi_insn_struct_insn_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_insn_struct *arg1 = (struct comedi_insn_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_insn_struct_insn_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_insn_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->insn = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_insn_struct_insn_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_insn_struct *arg1 = (struct comedi_insn_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_insn_struct_insn_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_insn_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->insn);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_insn_struct_n_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_insn_struct *arg1 = (struct comedi_insn_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_insn_struct_n_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_insn_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->n = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_insn_struct_n_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_insn_struct *arg1 = (struct comedi_insn_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_insn_struct_n_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_insn_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->n);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_insn_struct_data_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_insn_struct *arg1 = (struct comedi_insn_struct *) 0 ;
+    lsampl_t *arg2 = (lsampl_t *) 0 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_insn_struct_data_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_insn_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj1,(void **) &arg2, SWIGTYPE_p_lsampl_t,SWIG_POINTER_EXCEPTION | SWIG_POINTER_DISOWN )) == -1) SWIG_fail;
+    if (arg1) (arg1)->data = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_insn_struct_data_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_insn_struct *arg1 = (struct comedi_insn_struct *) 0 ;
+    lsampl_t *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_insn_struct_data_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_insn_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (lsampl_t *) ((arg1)->data);
+    
+    resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_lsampl_t, 0);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_insn_struct_subdev_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_insn_struct *arg1 = (struct comedi_insn_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_insn_struct_subdev_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_insn_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->subdev = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_insn_struct_subdev_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_insn_struct *arg1 = (struct comedi_insn_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_insn_struct_subdev_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_insn_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->subdev);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_insn_struct_chanspec_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_insn_struct *arg1 = (struct comedi_insn_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_insn_struct_chanspec_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_insn_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->chanspec = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_insn_struct_chanspec_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_insn_struct *arg1 = (struct comedi_insn_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_insn_struct_chanspec_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_insn_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->chanspec);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_insn_struct_unused_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_insn_struct *arg1 = (struct comedi_insn_struct *) 0 ;
+    unsigned int *arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_insn_struct_unused_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_insn_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj1,(void **) &arg2, SWIGTYPE_p_unsigned_int,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    {
+        int ii;
+        unsigned int *b = (unsigned int *) arg1->unused;
+        for (ii = 0; ii < 3; ii++) b[ii] = *((unsigned int *) arg2 + ii);
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_insn_struct_unused_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_insn_struct *arg1 = (struct comedi_insn_struct *) 0 ;
+    unsigned int *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_insn_struct_unused_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_insn_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int *)(unsigned int *) ((arg1)->unused);
+    
+    resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_unsigned_int, 0);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_new_comedi_insn_struct(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_insn_struct *result;
+    
+    if(!PyArg_ParseTuple(args,(char *)":new_comedi_insn_struct")) goto fail;
+    result = (struct comedi_insn_struct *)(struct comedi_insn_struct *) calloc(1, sizeof(struct comedi_insn_struct));
+    
+    resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_comedi_insn_struct, 1);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_delete_comedi_insn_struct(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_insn_struct *arg1 = (struct comedi_insn_struct *) 0 ;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:delete_comedi_insn_struct",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_insn_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    free((char *) arg1);
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject * comedi_insn_struct_swigregister(PyObject *self, PyObject *args) {
+    PyObject *obj;
+    if (!PyArg_ParseTuple(args,(char*)"O", &obj)) return NULL;
+    SWIG_TypeClientData(SWIGTYPE_p_comedi_insn_struct, obj);
+    Py_INCREF(obj);
+    return Py_BuildValue((char *)"");
+}
+static PyObject *_wrap_comedi_insnlist_struct_n_insns_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_insnlist_struct *arg1 = (struct comedi_insnlist_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_insnlist_struct_n_insns_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_insnlist_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->n_insns = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_insnlist_struct_n_insns_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_insnlist_struct *arg1 = (struct comedi_insnlist_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_insnlist_struct_n_insns_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_insnlist_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->n_insns);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_insnlist_struct_insns_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_insnlist_struct *arg1 = (struct comedi_insnlist_struct *) 0 ;
+    comedi_insn *arg2 = (comedi_insn *) 0 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_insnlist_struct_insns_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_insnlist_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj1,(void **) &arg2, SWIGTYPE_p_comedi_insn,SWIG_POINTER_EXCEPTION | SWIG_POINTER_DISOWN )) == -1) SWIG_fail;
+    if (arg1) (arg1)->insns = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_insnlist_struct_insns_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_insnlist_struct *arg1 = (struct comedi_insnlist_struct *) 0 ;
+    comedi_insn *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_insnlist_struct_insns_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_insnlist_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (comedi_insn *) ((arg1)->insns);
+    
+    resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_comedi_insn, 0);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_new_comedi_insnlist_struct(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_insnlist_struct *result;
+    
+    if(!PyArg_ParseTuple(args,(char *)":new_comedi_insnlist_struct")) goto fail;
+    result = (struct comedi_insnlist_struct *)(struct comedi_insnlist_struct *) calloc(1, sizeof(struct comedi_insnlist_struct));
+    
+    resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_comedi_insnlist_struct, 1);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_delete_comedi_insnlist_struct(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_insnlist_struct *arg1 = (struct comedi_insnlist_struct *) 0 ;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:delete_comedi_insnlist_struct",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_insnlist_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    free((char *) arg1);
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject * comedi_insnlist_struct_swigregister(PyObject *self, PyObject *args) {
+    PyObject *obj;
+    if (!PyArg_ParseTuple(args,(char*)"O", &obj)) return NULL;
+    SWIG_TypeClientData(SWIGTYPE_p_comedi_insnlist_struct, obj);
+    Py_INCREF(obj);
+    return Py_BuildValue((char *)"");
+}
+static PyObject *_wrap_comedi_cmd_struct_subdev_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_cmd_struct *arg1 = (struct comedi_cmd_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_cmd_struct_subdev_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_cmd_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->subdev = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_cmd_struct_subdev_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_cmd_struct *arg1 = (struct comedi_cmd_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_cmd_struct_subdev_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_cmd_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->subdev);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_cmd_struct_flags_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_cmd_struct *arg1 = (struct comedi_cmd_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_cmd_struct_flags_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_cmd_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->flags = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_cmd_struct_flags_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_cmd_struct *arg1 = (struct comedi_cmd_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_cmd_struct_flags_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_cmd_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->flags);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_cmd_struct_start_src_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_cmd_struct *arg1 = (struct comedi_cmd_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_cmd_struct_start_src_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_cmd_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->start_src = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_cmd_struct_start_src_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_cmd_struct *arg1 = (struct comedi_cmd_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_cmd_struct_start_src_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_cmd_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->start_src);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_cmd_struct_start_arg_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_cmd_struct *arg1 = (struct comedi_cmd_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_cmd_struct_start_arg_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_cmd_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->start_arg = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_cmd_struct_start_arg_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_cmd_struct *arg1 = (struct comedi_cmd_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_cmd_struct_start_arg_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_cmd_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->start_arg);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_cmd_struct_scan_begin_src_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_cmd_struct *arg1 = (struct comedi_cmd_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_cmd_struct_scan_begin_src_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_cmd_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->scan_begin_src = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_cmd_struct_scan_begin_src_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_cmd_struct *arg1 = (struct comedi_cmd_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_cmd_struct_scan_begin_src_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_cmd_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->scan_begin_src);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_cmd_struct_scan_begin_arg_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_cmd_struct *arg1 = (struct comedi_cmd_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_cmd_struct_scan_begin_arg_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_cmd_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->scan_begin_arg = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_cmd_struct_scan_begin_arg_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_cmd_struct *arg1 = (struct comedi_cmd_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_cmd_struct_scan_begin_arg_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_cmd_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->scan_begin_arg);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_cmd_struct_convert_src_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_cmd_struct *arg1 = (struct comedi_cmd_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_cmd_struct_convert_src_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_cmd_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->convert_src = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_cmd_struct_convert_src_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_cmd_struct *arg1 = (struct comedi_cmd_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_cmd_struct_convert_src_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_cmd_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->convert_src);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_cmd_struct_convert_arg_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_cmd_struct *arg1 = (struct comedi_cmd_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_cmd_struct_convert_arg_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_cmd_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->convert_arg = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_cmd_struct_convert_arg_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_cmd_struct *arg1 = (struct comedi_cmd_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_cmd_struct_convert_arg_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_cmd_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->convert_arg);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_cmd_struct_scan_end_src_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_cmd_struct *arg1 = (struct comedi_cmd_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_cmd_struct_scan_end_src_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_cmd_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->scan_end_src = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_cmd_struct_scan_end_src_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_cmd_struct *arg1 = (struct comedi_cmd_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_cmd_struct_scan_end_src_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_cmd_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->scan_end_src);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_cmd_struct_scan_end_arg_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_cmd_struct *arg1 = (struct comedi_cmd_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_cmd_struct_scan_end_arg_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_cmd_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->scan_end_arg = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_cmd_struct_scan_end_arg_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_cmd_struct *arg1 = (struct comedi_cmd_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_cmd_struct_scan_end_arg_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_cmd_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->scan_end_arg);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_cmd_struct_stop_src_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_cmd_struct *arg1 = (struct comedi_cmd_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_cmd_struct_stop_src_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_cmd_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->stop_src = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_cmd_struct_stop_src_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_cmd_struct *arg1 = (struct comedi_cmd_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_cmd_struct_stop_src_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_cmd_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->stop_src);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_cmd_struct_stop_arg_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_cmd_struct *arg1 = (struct comedi_cmd_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_cmd_struct_stop_arg_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_cmd_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->stop_arg = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_cmd_struct_stop_arg_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_cmd_struct *arg1 = (struct comedi_cmd_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_cmd_struct_stop_arg_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_cmd_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->stop_arg);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_cmd_struct_chanlist_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_cmd_struct *arg1 = (struct comedi_cmd_struct *) 0 ;
+    unsigned int *arg2 = (unsigned int *) 0 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_cmd_struct_chanlist_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_cmd_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj1,(void **) &arg2, SWIGTYPE_p_unsigned_int,SWIG_POINTER_EXCEPTION | SWIG_POINTER_DISOWN )) == -1) SWIG_fail;
+    if (arg1) (arg1)->chanlist = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_cmd_struct_chanlist_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_cmd_struct *arg1 = (struct comedi_cmd_struct *) 0 ;
+    unsigned int *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_cmd_struct_chanlist_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_cmd_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int *) ((arg1)->chanlist);
+    
+    resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_unsigned_int, 0);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_cmd_struct_chanlist_len_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_cmd_struct *arg1 = (struct comedi_cmd_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_cmd_struct_chanlist_len_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_cmd_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->chanlist_len = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_cmd_struct_chanlist_len_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_cmd_struct *arg1 = (struct comedi_cmd_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_cmd_struct_chanlist_len_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_cmd_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->chanlist_len);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_cmd_struct_data_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_cmd_struct *arg1 = (struct comedi_cmd_struct *) 0 ;
+    sampl_t *arg2 = (sampl_t *) 0 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_cmd_struct_data_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_cmd_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj1,(void **) &arg2, SWIGTYPE_p_sampl_t,SWIG_POINTER_EXCEPTION | SWIG_POINTER_DISOWN )) == -1) SWIG_fail;
+    if (arg1) (arg1)->data = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_cmd_struct_data_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_cmd_struct *arg1 = (struct comedi_cmd_struct *) 0 ;
+    sampl_t *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_cmd_struct_data_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_cmd_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (sampl_t *) ((arg1)->data);
+    
+    resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_sampl_t, 0);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_cmd_struct_data_len_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_cmd_struct *arg1 = (struct comedi_cmd_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_cmd_struct_data_len_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_cmd_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->data_len = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_cmd_struct_data_len_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_cmd_struct *arg1 = (struct comedi_cmd_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_cmd_struct_data_len_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_cmd_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->data_len);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_new_comedi_cmd_struct(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_cmd_struct *result;
+    
+    if(!PyArg_ParseTuple(args,(char *)":new_comedi_cmd_struct")) goto fail;
+    result = (struct comedi_cmd_struct *)(struct comedi_cmd_struct *) calloc(1, sizeof(struct comedi_cmd_struct));
+    
+    resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_comedi_cmd_struct, 1);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_delete_comedi_cmd_struct(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_cmd_struct *arg1 = (struct comedi_cmd_struct *) 0 ;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:delete_comedi_cmd_struct",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_cmd_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    free((char *) arg1);
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject * comedi_cmd_struct_swigregister(PyObject *self, PyObject *args) {
+    PyObject *obj;
+    if (!PyArg_ParseTuple(args,(char*)"O", &obj)) return NULL;
+    SWIG_TypeClientData(SWIGTYPE_p_comedi_cmd_struct, obj);
+    Py_INCREF(obj);
+    return Py_BuildValue((char *)"");
+}
+static PyObject *_wrap_comedi_chaninfo_struct_subdev_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_chaninfo_struct *arg1 = (struct comedi_chaninfo_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_chaninfo_struct_subdev_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_chaninfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->subdev = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_chaninfo_struct_subdev_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_chaninfo_struct *arg1 = (struct comedi_chaninfo_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_chaninfo_struct_subdev_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_chaninfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->subdev);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_chaninfo_struct_maxdata_list_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_chaninfo_struct *arg1 = (struct comedi_chaninfo_struct *) 0 ;
+    lsampl_t *arg2 = (lsampl_t *) 0 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_chaninfo_struct_maxdata_list_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_chaninfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj1,(void **) &arg2, SWIGTYPE_p_lsampl_t,SWIG_POINTER_EXCEPTION | SWIG_POINTER_DISOWN )) == -1) SWIG_fail;
+    if (arg1) (arg1)->maxdata_list = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_chaninfo_struct_maxdata_list_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_chaninfo_struct *arg1 = (struct comedi_chaninfo_struct *) 0 ;
+    lsampl_t *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_chaninfo_struct_maxdata_list_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_chaninfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (lsampl_t *) ((arg1)->maxdata_list);
+    
+    resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_lsampl_t, 0);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_chaninfo_struct_flaglist_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_chaninfo_struct *arg1 = (struct comedi_chaninfo_struct *) 0 ;
+    unsigned int *arg2 = (unsigned int *) 0 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_chaninfo_struct_flaglist_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_chaninfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj1,(void **) &arg2, SWIGTYPE_p_unsigned_int,SWIG_POINTER_EXCEPTION | SWIG_POINTER_DISOWN )) == -1) SWIG_fail;
+    if (arg1) (arg1)->flaglist = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_chaninfo_struct_flaglist_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_chaninfo_struct *arg1 = (struct comedi_chaninfo_struct *) 0 ;
+    unsigned int *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_chaninfo_struct_flaglist_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_chaninfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int *) ((arg1)->flaglist);
+    
+    resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_unsigned_int, 0);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_chaninfo_struct_rangelist_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_chaninfo_struct *arg1 = (struct comedi_chaninfo_struct *) 0 ;
+    unsigned int *arg2 = (unsigned int *) 0 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_chaninfo_struct_rangelist_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_chaninfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj1,(void **) &arg2, SWIGTYPE_p_unsigned_int,SWIG_POINTER_EXCEPTION | SWIG_POINTER_DISOWN )) == -1) SWIG_fail;
+    if (arg1) (arg1)->rangelist = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_chaninfo_struct_rangelist_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_chaninfo_struct *arg1 = (struct comedi_chaninfo_struct *) 0 ;
+    unsigned int *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_chaninfo_struct_rangelist_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_chaninfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int *) ((arg1)->rangelist);
+    
+    resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_unsigned_int, 0);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_chaninfo_struct_unused_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_chaninfo_struct *arg1 = (struct comedi_chaninfo_struct *) 0 ;
+    unsigned int *arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_chaninfo_struct_unused_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_chaninfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj1,(void **) &arg2, SWIGTYPE_p_unsigned_int,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    {
+        int ii;
+        unsigned int *b = (unsigned int *) arg1->unused;
+        for (ii = 0; ii < 4; ii++) b[ii] = *((unsigned int *) arg2 + ii);
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_chaninfo_struct_unused_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_chaninfo_struct *arg1 = (struct comedi_chaninfo_struct *) 0 ;
+    unsigned int *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_chaninfo_struct_unused_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_chaninfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int *)(unsigned int *) ((arg1)->unused);
+    
+    resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_unsigned_int, 0);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_new_comedi_chaninfo_struct(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_chaninfo_struct *result;
+    
+    if(!PyArg_ParseTuple(args,(char *)":new_comedi_chaninfo_struct")) goto fail;
+    result = (struct comedi_chaninfo_struct *)(struct comedi_chaninfo_struct *) calloc(1, sizeof(struct comedi_chaninfo_struct));
+    
+    resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_comedi_chaninfo_struct, 1);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_delete_comedi_chaninfo_struct(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_chaninfo_struct *arg1 = (struct comedi_chaninfo_struct *) 0 ;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:delete_comedi_chaninfo_struct",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_chaninfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    free((char *) arg1);
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject * comedi_chaninfo_struct_swigregister(PyObject *self, PyObject *args) {
+    PyObject *obj;
+    if (!PyArg_ParseTuple(args,(char*)"O", &obj)) return NULL;
+    SWIG_TypeClientData(SWIGTYPE_p_comedi_chaninfo_struct, obj);
+    Py_INCREF(obj);
+    return Py_BuildValue((char *)"");
+}
+static PyObject *_wrap_comedi_rangeinfo_struct_range_type_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_rangeinfo_struct *arg1 = (struct comedi_rangeinfo_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_rangeinfo_struct_range_type_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_rangeinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->range_type = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_rangeinfo_struct_range_type_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_rangeinfo_struct *arg1 = (struct comedi_rangeinfo_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_rangeinfo_struct_range_type_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_rangeinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->range_type);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_rangeinfo_struct_range_ptr_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_rangeinfo_struct *arg1 = (struct comedi_rangeinfo_struct *) 0 ;
+    void *arg2 = (void *) 0 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_rangeinfo_struct_range_ptr_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_rangeinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj1,(void **) &arg2, 0, SWIG_POINTER_EXCEPTION | SWIG_POINTER_DISOWN )) == -1) SWIG_fail;
+    if (arg1) (arg1)->range_ptr = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_rangeinfo_struct_range_ptr_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_rangeinfo_struct *arg1 = (struct comedi_rangeinfo_struct *) 0 ;
+    void *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_rangeinfo_struct_range_ptr_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_rangeinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (void *) ((arg1)->range_ptr);
+    
+    resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_void, 0);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_new_comedi_rangeinfo_struct(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_rangeinfo_struct *result;
+    
+    if(!PyArg_ParseTuple(args,(char *)":new_comedi_rangeinfo_struct")) goto fail;
+    result = (struct comedi_rangeinfo_struct *)(struct comedi_rangeinfo_struct *) calloc(1, sizeof(struct comedi_rangeinfo_struct));
+    
+    resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_comedi_rangeinfo_struct, 1);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_delete_comedi_rangeinfo_struct(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_rangeinfo_struct *arg1 = (struct comedi_rangeinfo_struct *) 0 ;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:delete_comedi_rangeinfo_struct",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_rangeinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    free((char *) arg1);
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject * comedi_rangeinfo_struct_swigregister(PyObject *self, PyObject *args) {
+    PyObject *obj;
+    if (!PyArg_ParseTuple(args,(char*)"O", &obj)) return NULL;
+    SWIG_TypeClientData(SWIGTYPE_p_comedi_rangeinfo_struct, obj);
+    Py_INCREF(obj);
+    return Py_BuildValue((char *)"");
+}
+static PyObject *_wrap_comedi_krange_struct_min_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_krange_struct *arg1 = (struct comedi_krange_struct *) 0 ;
+    int arg2 ;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"Oi:comedi_krange_struct_min_set",&obj0,&arg2)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_krange_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    if (arg1) (arg1)->min = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_krange_struct_min_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_krange_struct *arg1 = (struct comedi_krange_struct *) 0 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_krange_struct_min_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_krange_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (int) ((arg1)->min);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_krange_struct_max_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_krange_struct *arg1 = (struct comedi_krange_struct *) 0 ;
+    int arg2 ;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"Oi:comedi_krange_struct_max_set",&obj0,&arg2)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_krange_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    if (arg1) (arg1)->max = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_krange_struct_max_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_krange_struct *arg1 = (struct comedi_krange_struct *) 0 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_krange_struct_max_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_krange_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (int) ((arg1)->max);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_krange_struct_flags_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_krange_struct *arg1 = (struct comedi_krange_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_krange_struct_flags_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_krange_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->flags = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_krange_struct_flags_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_krange_struct *arg1 = (struct comedi_krange_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_krange_struct_flags_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_krange_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->flags);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_new_comedi_krange_struct(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_krange_struct *result;
+    
+    if(!PyArg_ParseTuple(args,(char *)":new_comedi_krange_struct")) goto fail;
+    result = (struct comedi_krange_struct *)(struct comedi_krange_struct *) calloc(1, sizeof(struct comedi_krange_struct));
+    
+    resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_comedi_krange_struct, 1);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_delete_comedi_krange_struct(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_krange_struct *arg1 = (struct comedi_krange_struct *) 0 ;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:delete_comedi_krange_struct",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_krange_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    free((char *) arg1);
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject * comedi_krange_struct_swigregister(PyObject *self, PyObject *args) {
+    PyObject *obj;
+    if (!PyArg_ParseTuple(args,(char*)"O", &obj)) return NULL;
+    SWIG_TypeClientData(SWIGTYPE_p_comedi_krange_struct, obj);
+    Py_INCREF(obj);
+    return Py_BuildValue((char *)"");
+}
+static PyObject *_wrap_comedi_subdinfo_struct_type_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_subdinfo_struct *arg1 = (struct comedi_subdinfo_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_subdinfo_struct_type_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_subdinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->type = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_subdinfo_struct_type_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_subdinfo_struct *arg1 = (struct comedi_subdinfo_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_subdinfo_struct_type_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_subdinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->type);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_subdinfo_struct_n_chan_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_subdinfo_struct *arg1 = (struct comedi_subdinfo_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_subdinfo_struct_n_chan_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_subdinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->n_chan = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_subdinfo_struct_n_chan_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_subdinfo_struct *arg1 = (struct comedi_subdinfo_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_subdinfo_struct_n_chan_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_subdinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->n_chan);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_subdinfo_struct_subd_flags_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_subdinfo_struct *arg1 = (struct comedi_subdinfo_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_subdinfo_struct_subd_flags_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_subdinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->subd_flags = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_subdinfo_struct_subd_flags_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_subdinfo_struct *arg1 = (struct comedi_subdinfo_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_subdinfo_struct_subd_flags_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_subdinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->subd_flags);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_subdinfo_struct_timer_type_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_subdinfo_struct *arg1 = (struct comedi_subdinfo_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_subdinfo_struct_timer_type_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_subdinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->timer_type = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_subdinfo_struct_timer_type_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_subdinfo_struct *arg1 = (struct comedi_subdinfo_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_subdinfo_struct_timer_type_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_subdinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->timer_type);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_subdinfo_struct_len_chanlist_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_subdinfo_struct *arg1 = (struct comedi_subdinfo_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_subdinfo_struct_len_chanlist_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_subdinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->len_chanlist = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_subdinfo_struct_len_chanlist_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_subdinfo_struct *arg1 = (struct comedi_subdinfo_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_subdinfo_struct_len_chanlist_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_subdinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->len_chanlist);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_subdinfo_struct_maxdata_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_subdinfo_struct *arg1 = (struct comedi_subdinfo_struct *) 0 ;
+    lsampl_t arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_subdinfo_struct_maxdata_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_subdinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (lsampl_t) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->maxdata = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_subdinfo_struct_maxdata_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_subdinfo_struct *arg1 = (struct comedi_subdinfo_struct *) 0 ;
+    lsampl_t result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_subdinfo_struct_maxdata_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_subdinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (lsampl_t) ((arg1)->maxdata);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_subdinfo_struct_flags_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_subdinfo_struct *arg1 = (struct comedi_subdinfo_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_subdinfo_struct_flags_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_subdinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->flags = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_subdinfo_struct_flags_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_subdinfo_struct *arg1 = (struct comedi_subdinfo_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_subdinfo_struct_flags_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_subdinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->flags);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_subdinfo_struct_range_type_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_subdinfo_struct *arg1 = (struct comedi_subdinfo_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_subdinfo_struct_range_type_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_subdinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->range_type = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_subdinfo_struct_range_type_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_subdinfo_struct *arg1 = (struct comedi_subdinfo_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_subdinfo_struct_range_type_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_subdinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->range_type);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_subdinfo_struct_unused_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_subdinfo_struct *arg1 = (struct comedi_subdinfo_struct *) 0 ;
+    unsigned int *arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_subdinfo_struct_unused_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_subdinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj1,(void **) &arg2, SWIGTYPE_p_unsigned_int,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    {
+        int ii;
+        unsigned int *b = (unsigned int *) arg1->unused;
+        for (ii = 0; ii < 10; ii++) b[ii] = *((unsigned int *) arg2 + ii);
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_subdinfo_struct_unused_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_subdinfo_struct *arg1 = (struct comedi_subdinfo_struct *) 0 ;
+    unsigned int *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_subdinfo_struct_unused_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_subdinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int *)(unsigned int *) ((arg1)->unused);
+    
+    resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_unsigned_int, 0);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_new_comedi_subdinfo_struct(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_subdinfo_struct *result;
+    
+    if(!PyArg_ParseTuple(args,(char *)":new_comedi_subdinfo_struct")) goto fail;
+    result = (struct comedi_subdinfo_struct *)(struct comedi_subdinfo_struct *) calloc(1, sizeof(struct comedi_subdinfo_struct));
+    
+    resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_comedi_subdinfo_struct, 1);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_delete_comedi_subdinfo_struct(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_subdinfo_struct *arg1 = (struct comedi_subdinfo_struct *) 0 ;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:delete_comedi_subdinfo_struct",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_subdinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    free((char *) arg1);
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject * comedi_subdinfo_struct_swigregister(PyObject *self, PyObject *args) {
+    PyObject *obj;
+    if (!PyArg_ParseTuple(args,(char*)"O", &obj)) return NULL;
+    SWIG_TypeClientData(SWIGTYPE_p_comedi_subdinfo_struct, obj);
+    Py_INCREF(obj);
+    return Py_BuildValue((char *)"");
+}
+static PyObject *_wrap_comedi_devinfo_struct_version_code_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_devinfo_struct *arg1 = (struct comedi_devinfo_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_devinfo_struct_version_code_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_devinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->version_code = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_devinfo_struct_version_code_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_devinfo_struct *arg1 = (struct comedi_devinfo_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_devinfo_struct_version_code_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_devinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->version_code);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_devinfo_struct_n_subdevs_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_devinfo_struct *arg1 = (struct comedi_devinfo_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_devinfo_struct_n_subdevs_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_devinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->n_subdevs = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_devinfo_struct_n_subdevs_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_devinfo_struct *arg1 = (struct comedi_devinfo_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_devinfo_struct_n_subdevs_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_devinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->n_subdevs);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_devinfo_struct_driver_name_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_devinfo_struct *arg1 = (struct comedi_devinfo_struct *) 0 ;
+    char *arg2 ;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"Os:comedi_devinfo_struct_driver_name_set",&obj0,&arg2)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_devinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    {
+        if (arg2) strncpy(arg1->driver_name,arg2,20);
+        else arg1->driver_name[0] = 0;
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_devinfo_struct_driver_name_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_devinfo_struct *arg1 = (struct comedi_devinfo_struct *) 0 ;
+    char *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_devinfo_struct_driver_name_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_devinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (char *)(char *) ((arg1)->driver_name);
+    
+    resultobj = PyString_FromString(result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_devinfo_struct_board_name_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_devinfo_struct *arg1 = (struct comedi_devinfo_struct *) 0 ;
+    char *arg2 ;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"Os:comedi_devinfo_struct_board_name_set",&obj0,&arg2)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_devinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    {
+        if (arg2) strncpy(arg1->board_name,arg2,20);
+        else arg1->board_name[0] = 0;
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_devinfo_struct_board_name_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_devinfo_struct *arg1 = (struct comedi_devinfo_struct *) 0 ;
+    char *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_devinfo_struct_board_name_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_devinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (char *)(char *) ((arg1)->board_name);
+    
+    resultobj = PyString_FromString(result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_devinfo_struct_read_subdevice_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_devinfo_struct *arg1 = (struct comedi_devinfo_struct *) 0 ;
+    int arg2 ;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"Oi:comedi_devinfo_struct_read_subdevice_set",&obj0,&arg2)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_devinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    if (arg1) (arg1)->read_subdevice = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_devinfo_struct_read_subdevice_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_devinfo_struct *arg1 = (struct comedi_devinfo_struct *) 0 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_devinfo_struct_read_subdevice_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_devinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (int) ((arg1)->read_subdevice);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_devinfo_struct_write_subdevice_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_devinfo_struct *arg1 = (struct comedi_devinfo_struct *) 0 ;
+    int arg2 ;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"Oi:comedi_devinfo_struct_write_subdevice_set",&obj0,&arg2)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_devinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    if (arg1) (arg1)->write_subdevice = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_devinfo_struct_write_subdevice_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_devinfo_struct *arg1 = (struct comedi_devinfo_struct *) 0 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_devinfo_struct_write_subdevice_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_devinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (int) ((arg1)->write_subdevice);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_devinfo_struct_unused_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_devinfo_struct *arg1 = (struct comedi_devinfo_struct *) 0 ;
+    int *arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_devinfo_struct_unused_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_devinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj1,(void **) &arg2, SWIGTYPE_p_int,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    {
+        int ii;
+        int *b = (int *) arg1->unused;
+        for (ii = 0; ii < 30; ii++) b[ii] = *((int *) arg2 + ii);
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_devinfo_struct_unused_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_devinfo_struct *arg1 = (struct comedi_devinfo_struct *) 0 ;
+    int *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_devinfo_struct_unused_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_devinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (int *)(int *) ((arg1)->unused);
+    
+    resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_int, 0);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_new_comedi_devinfo_struct(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_devinfo_struct *result;
+    
+    if(!PyArg_ParseTuple(args,(char *)":new_comedi_devinfo_struct")) goto fail;
+    result = (struct comedi_devinfo_struct *)(struct comedi_devinfo_struct *) calloc(1, sizeof(struct comedi_devinfo_struct));
+    
+    resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_comedi_devinfo_struct, 1);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_delete_comedi_devinfo_struct(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_devinfo_struct *arg1 = (struct comedi_devinfo_struct *) 0 ;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:delete_comedi_devinfo_struct",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_devinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    free((char *) arg1);
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject * comedi_devinfo_struct_swigregister(PyObject *self, PyObject *args) {
+    PyObject *obj;
+    if (!PyArg_ParseTuple(args,(char*)"O", &obj)) return NULL;
+    SWIG_TypeClientData(SWIGTYPE_p_comedi_devinfo_struct, obj);
+    Py_INCREF(obj);
+    return Py_BuildValue((char *)"");
+}
+static PyObject *_wrap_comedi_devconfig_struct_board_name_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_devconfig_struct *arg1 = (struct comedi_devconfig_struct *) 0 ;
+    char *arg2 ;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"Os:comedi_devconfig_struct_board_name_set",&obj0,&arg2)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_devconfig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    {
+        if (arg2) strncpy(arg1->board_name,arg2,20);
+        else arg1->board_name[0] = 0;
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_devconfig_struct_board_name_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_devconfig_struct *arg1 = (struct comedi_devconfig_struct *) 0 ;
+    char *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_devconfig_struct_board_name_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_devconfig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (char *)(char *) ((arg1)->board_name);
+    
+    resultobj = PyString_FromString(result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_devconfig_struct_options_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_devconfig_struct *arg1 = (struct comedi_devconfig_struct *) 0 ;
+    int *arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_devconfig_struct_options_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_devconfig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj1,(void **) &arg2, SWIGTYPE_p_int,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    {
+        int ii;
+        int *b = (int *) arg1->options;
+        for (ii = 0; ii < 32; ii++) b[ii] = *((int *) arg2 + ii);
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_devconfig_struct_options_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_devconfig_struct *arg1 = (struct comedi_devconfig_struct *) 0 ;
+    int *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_devconfig_struct_options_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_devconfig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (int *)(int *) ((arg1)->options);
+    
+    resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_int, 0);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_new_comedi_devconfig_struct(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_devconfig_struct *result;
+    
+    if(!PyArg_ParseTuple(args,(char *)":new_comedi_devconfig_struct")) goto fail;
+    result = (struct comedi_devconfig_struct *)(struct comedi_devconfig_struct *) calloc(1, sizeof(struct comedi_devconfig_struct));
+    
+    resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_comedi_devconfig_struct, 1);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_delete_comedi_devconfig_struct(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_devconfig_struct *arg1 = (struct comedi_devconfig_struct *) 0 ;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:delete_comedi_devconfig_struct",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_devconfig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    free((char *) arg1);
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject * comedi_devconfig_struct_swigregister(PyObject *self, PyObject *args) {
+    PyObject *obj;
+    if (!PyArg_ParseTuple(args,(char*)"O", &obj)) return NULL;
+    SWIG_TypeClientData(SWIGTYPE_p_comedi_devconfig_struct, obj);
+    Py_INCREF(obj);
+    return Py_BuildValue((char *)"");
+}
+static PyObject *_wrap_comedi_bufconfig_struct_subdevice_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_bufconfig_struct *arg1 = (struct comedi_bufconfig_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_bufconfig_struct_subdevice_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_bufconfig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->subdevice = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_bufconfig_struct_subdevice_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_bufconfig_struct *arg1 = (struct comedi_bufconfig_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_bufconfig_struct_subdevice_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_bufconfig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->subdevice);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_bufconfig_struct_flags_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_bufconfig_struct *arg1 = (struct comedi_bufconfig_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_bufconfig_struct_flags_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_bufconfig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->flags = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_bufconfig_struct_flags_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_bufconfig_struct *arg1 = (struct comedi_bufconfig_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_bufconfig_struct_flags_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_bufconfig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->flags);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_bufconfig_struct_maximum_size_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_bufconfig_struct *arg1 = (struct comedi_bufconfig_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_bufconfig_struct_maximum_size_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_bufconfig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->maximum_size = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_bufconfig_struct_maximum_size_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_bufconfig_struct *arg1 = (struct comedi_bufconfig_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_bufconfig_struct_maximum_size_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_bufconfig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->maximum_size);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_bufconfig_struct_size_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_bufconfig_struct *arg1 = (struct comedi_bufconfig_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_bufconfig_struct_size_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_bufconfig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->size = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_bufconfig_struct_size_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_bufconfig_struct *arg1 = (struct comedi_bufconfig_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_bufconfig_struct_size_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_bufconfig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->size);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_bufconfig_struct_unused_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_bufconfig_struct *arg1 = (struct comedi_bufconfig_struct *) 0 ;
+    unsigned int *arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_bufconfig_struct_unused_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_bufconfig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj1,(void **) &arg2, SWIGTYPE_p_unsigned_int,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    {
+        int ii;
+        unsigned int *b = (unsigned int *) arg1->unused;
+        for (ii = 0; ii < 4; ii++) b[ii] = *((unsigned int *) arg2 + ii);
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_bufconfig_struct_unused_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_bufconfig_struct *arg1 = (struct comedi_bufconfig_struct *) 0 ;
+    unsigned int *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_bufconfig_struct_unused_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_bufconfig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int *)(unsigned int *) ((arg1)->unused);
+    
+    resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_unsigned_int, 0);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_new_comedi_bufconfig_struct(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_bufconfig_struct *result;
+    
+    if(!PyArg_ParseTuple(args,(char *)":new_comedi_bufconfig_struct")) goto fail;
+    result = (struct comedi_bufconfig_struct *)(struct comedi_bufconfig_struct *) calloc(1, sizeof(struct comedi_bufconfig_struct));
+    
+    resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_comedi_bufconfig_struct, 1);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_delete_comedi_bufconfig_struct(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_bufconfig_struct *arg1 = (struct comedi_bufconfig_struct *) 0 ;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:delete_comedi_bufconfig_struct",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_bufconfig_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    free((char *) arg1);
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject * comedi_bufconfig_struct_swigregister(PyObject *self, PyObject *args) {
+    PyObject *obj;
+    if (!PyArg_ParseTuple(args,(char*)"O", &obj)) return NULL;
+    SWIG_TypeClientData(SWIGTYPE_p_comedi_bufconfig_struct, obj);
+    Py_INCREF(obj);
+    return Py_BuildValue((char *)"");
+}
+static PyObject *_wrap_comedi_bufinfo_struct_subdevice_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_bufinfo_struct *arg1 = (struct comedi_bufinfo_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_bufinfo_struct_subdevice_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_bufinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->subdevice = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_bufinfo_struct_subdevice_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_bufinfo_struct *arg1 = (struct comedi_bufinfo_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_bufinfo_struct_subdevice_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_bufinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->subdevice);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_bufinfo_struct_bytes_read_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_bufinfo_struct *arg1 = (struct comedi_bufinfo_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_bufinfo_struct_bytes_read_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_bufinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->bytes_read = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_bufinfo_struct_bytes_read_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_bufinfo_struct *arg1 = (struct comedi_bufinfo_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_bufinfo_struct_bytes_read_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_bufinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->bytes_read);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_bufinfo_struct_buf_int_ptr_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_bufinfo_struct *arg1 = (struct comedi_bufinfo_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_bufinfo_struct_buf_int_ptr_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_bufinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->buf_int_ptr = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_bufinfo_struct_buf_int_ptr_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_bufinfo_struct *arg1 = (struct comedi_bufinfo_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_bufinfo_struct_buf_int_ptr_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_bufinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->buf_int_ptr);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_bufinfo_struct_buf_user_ptr_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_bufinfo_struct *arg1 = (struct comedi_bufinfo_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_bufinfo_struct_buf_user_ptr_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_bufinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->buf_user_ptr = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_bufinfo_struct_buf_user_ptr_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_bufinfo_struct *arg1 = (struct comedi_bufinfo_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_bufinfo_struct_buf_user_ptr_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_bufinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->buf_user_ptr);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_bufinfo_struct_buf_int_count_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_bufinfo_struct *arg1 = (struct comedi_bufinfo_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_bufinfo_struct_buf_int_count_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_bufinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->buf_int_count = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_bufinfo_struct_buf_int_count_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_bufinfo_struct *arg1 = (struct comedi_bufinfo_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_bufinfo_struct_buf_int_count_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_bufinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->buf_int_count);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_bufinfo_struct_buf_user_count_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_bufinfo_struct *arg1 = (struct comedi_bufinfo_struct *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_bufinfo_struct_buf_user_count_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_bufinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->buf_user_count = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_bufinfo_struct_buf_user_count_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_bufinfo_struct *arg1 = (struct comedi_bufinfo_struct *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_bufinfo_struct_buf_user_count_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_bufinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->buf_user_count);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_bufinfo_struct_unused_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_bufinfo_struct *arg1 = (struct comedi_bufinfo_struct *) 0 ;
+    unsigned int *arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_bufinfo_struct_unused_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_bufinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj1,(void **) &arg2, SWIGTYPE_p_unsigned_int,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    {
+        int ii;
+        unsigned int *b = (unsigned int *) arg1->unused;
+        for (ii = 0; ii < 5; ii++) b[ii] = *((unsigned int *) arg2 + ii);
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_bufinfo_struct_unused_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_bufinfo_struct *arg1 = (struct comedi_bufinfo_struct *) 0 ;
+    unsigned int *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_bufinfo_struct_unused_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_bufinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int *)(unsigned int *) ((arg1)->unused);
+    
+    resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_unsigned_int, 0);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_new_comedi_bufinfo_struct(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_bufinfo_struct *result;
+    
+    if(!PyArg_ParseTuple(args,(char *)":new_comedi_bufinfo_struct")) goto fail;
+    result = (struct comedi_bufinfo_struct *)(struct comedi_bufinfo_struct *) calloc(1, sizeof(struct comedi_bufinfo_struct));
+    
+    resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_comedi_bufinfo_struct, 1);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_delete_comedi_bufinfo_struct(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    struct comedi_bufinfo_struct *arg1 = (struct comedi_bufinfo_struct *) 0 ;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:delete_comedi_bufinfo_struct",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_bufinfo_struct,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    free((char *) arg1);
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject * comedi_bufinfo_struct_swigregister(PyObject *self, PyObject *args) {
+    PyObject *obj;
+    if (!PyArg_ParseTuple(args,(char*)"O", &obj)) return NULL;
+    SWIG_TypeClientData(SWIGTYPE_p_comedi_bufinfo_struct, obj);
+    Py_INCREF(obj);
+    return Py_BuildValue((char *)"");
+}
+static PyObject *_wrap_comedi_range_min_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_range *arg1 = (comedi_range *) 0 ;
+    double arg2 ;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"Od:comedi_range_min_set",&obj0,&arg2)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_range,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    if (arg1) (arg1)->min = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_range_min_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_range *arg1 = (comedi_range *) 0 ;
+    double result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_range_min_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_range,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (double) ((arg1)->min);
+    
+    resultobj = PyFloat_FromDouble(result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_range_max_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_range *arg1 = (comedi_range *) 0 ;
+    double arg2 ;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"Od:comedi_range_max_set",&obj0,&arg2)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_range,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    if (arg1) (arg1)->max = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_range_max_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_range *arg1 = (comedi_range *) 0 ;
+    double result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_range_max_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_range,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (double) ((arg1)->max);
+    
+    resultobj = PyFloat_FromDouble(result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_range_unit_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_range *arg1 = (comedi_range *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_range_unit_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_range,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->unit = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_range_unit_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_range *arg1 = (comedi_range *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_range_unit_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_range,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->unit);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_new_comedi_range(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_range *result;
+    
+    if(!PyArg_ParseTuple(args,(char *)":new_comedi_range")) goto fail;
+    result = (comedi_range *)(comedi_range *) calloc(1, sizeof(comedi_range));
+    
+    resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_comedi_range, 1);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_delete_comedi_range(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_range *arg1 = (comedi_range *) 0 ;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:delete_comedi_range",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_range,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    free((char *) arg1);
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject * comedi_range_swigregister(PyObject *self, PyObject *args) {
+    PyObject *obj;
+    if (!PyArg_ParseTuple(args,(char*)"O", &obj)) return NULL;
+    SWIG_TypeClientData(SWIGTYPE_p_comedi_range, obj);
+    Py_INCREF(obj);
+    return Py_BuildValue((char *)"");
+}
+static PyObject *_wrap_comedi_sv_t_dev_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_sv_t *arg1 = (comedi_sv_t *) 0 ;
+    comedi_t *arg2 = (comedi_t *) 0 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_sv_t_dev_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_sv_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj1,(void **) &arg2, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | SWIG_POINTER_DISOWN )) == -1) SWIG_fail;
+    if (arg1) (arg1)->dev = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_sv_t_dev_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_sv_t *arg1 = (comedi_sv_t *) 0 ;
+    comedi_t *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_sv_t_dev_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_sv_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (comedi_t *) ((arg1)->dev);
+    
+    resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_comedi_t, 0);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_sv_t_subdevice_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_sv_t *arg1 = (comedi_sv_t *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_sv_t_subdevice_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_sv_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->subdevice = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_sv_t_subdevice_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_sv_t *arg1 = (comedi_sv_t *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_sv_t_subdevice_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_sv_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->subdevice);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_sv_t_chan_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_sv_t *arg1 = (comedi_sv_t *) 0 ;
+    unsigned int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_sv_t_chan_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_sv_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->chan = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_sv_t_chan_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_sv_t *arg1 = (comedi_sv_t *) 0 ;
+    unsigned int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_sv_t_chan_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_sv_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (unsigned int) ((arg1)->chan);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_sv_t_range_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_sv_t *arg1 = (comedi_sv_t *) 0 ;
+    int arg2 ;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"Oi:comedi_sv_t_range_set",&obj0,&arg2)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_sv_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    if (arg1) (arg1)->range = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_sv_t_range_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_sv_t *arg1 = (comedi_sv_t *) 0 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_sv_t_range_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_sv_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (int) ((arg1)->range);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_sv_t_aref_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_sv_t *arg1 = (comedi_sv_t *) 0 ;
+    int arg2 ;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"Oi:comedi_sv_t_aref_set",&obj0,&arg2)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_sv_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    if (arg1) (arg1)->aref = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_sv_t_aref_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_sv_t *arg1 = (comedi_sv_t *) 0 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_sv_t_aref_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_sv_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (int) ((arg1)->aref);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_sv_t_n_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_sv_t *arg1 = (comedi_sv_t *) 0 ;
+    int arg2 ;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"Oi:comedi_sv_t_n_set",&obj0,&arg2)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_sv_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    if (arg1) (arg1)->n = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_sv_t_n_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_sv_t *arg1 = (comedi_sv_t *) 0 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_sv_t_n_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_sv_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (int) ((arg1)->n);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_sv_t_maxdata_set(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_sv_t *arg1 = (comedi_sv_t *) 0 ;
+    lsampl_t arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_sv_t_maxdata_set",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_sv_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (lsampl_t) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if (arg1) (arg1)->maxdata = arg2;
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_sv_t_maxdata_get(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_sv_t *arg1 = (comedi_sv_t *) 0 ;
+    lsampl_t result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_sv_t_maxdata_get",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_sv_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (lsampl_t) ((arg1)->maxdata);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_new_comedi_sv_t(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_sv_t *result;
+    
+    if(!PyArg_ParseTuple(args,(char *)":new_comedi_sv_t")) goto fail;
+    result = (comedi_sv_t *)(comedi_sv_t *) calloc(1, sizeof(comedi_sv_t));
+    
+    resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_comedi_sv_t, 1);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_delete_comedi_sv_t(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_sv_t *arg1 = (comedi_sv_t *) 0 ;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:delete_comedi_sv_t",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_sv_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    free((char *) arg1);
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject * comedi_sv_t_swigregister(PyObject *self, PyObject *args) {
+    PyObject *obj;
+    if (!PyArg_ParseTuple(args,(char*)"O", &obj)) return NULL;
+    SWIG_TypeClientData(SWIGTYPE_p_comedi_sv_t, obj);
+    Py_INCREF(obj);
+    return Py_BuildValue((char *)"");
+}
+static PyObject *_wrap_comedi_open(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    char *arg1 ;
+    comedi_t *result;
+    
+    if(!PyArg_ParseTuple(args,(char *)"s:comedi_open",&arg1)) goto fail;
+    result = (comedi_t *)comedi_open((char const *)arg1);
+    
+    resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_comedi_t, 0);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_close(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_close",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (int)comedi_close(arg1);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_loglevel(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    int result;
+    
+    if(!PyArg_ParseTuple(args,(char *)"i:comedi_loglevel",&arg1)) goto fail;
+    result = (int)comedi_loglevel(arg1);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_perror(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    char *arg1 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"s:comedi_perror",&arg1)) goto fail;
+    comedi_perror((char const *)arg1);
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_strerror(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    char *result;
+    
+    if(!PyArg_ParseTuple(args,(char *)"i:comedi_strerror",&arg1)) goto fail;
+    result = (char *)comedi_strerror(arg1);
+    
+    resultobj = result ? PyString_FromString(result) : Py_BuildValue((char*)"");
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_errno(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int result;
+    
+    if(!PyArg_ParseTuple(args,(char *)":comedi_errno")) goto fail;
+    result = (int)comedi_errno();
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_fileno(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_fileno",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (int)comedi_fileno(arg1);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_set_global_oor_behavior(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    int result;
+    
+    if(!PyArg_ParseTuple(args,(char *)"i:comedi_set_global_oor_behavior",&arg1)) goto fail;
+    result = (int)comedi_set_global_oor_behavior((enum comedi_oor_behavior)arg1);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_get_n_subdevices(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_get_n_subdevices",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (int)comedi_get_n_subdevices(arg1);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_get_version_code(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_get_version_code",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (int)comedi_get_version_code(arg1);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_get_driver_name(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    char *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_get_driver_name",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (char *)comedi_get_driver_name(arg1);
+    
+    resultobj = result ? PyString_FromString(result) : Py_BuildValue((char*)"");
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_get_board_name(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    char *result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_get_board_name",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (char *)comedi_get_board_name(arg1);
+    
+    resultobj = result ? PyString_FromString(result) : Py_BuildValue((char*)"");
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_get_read_subdevice(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_get_read_subdevice",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (int)comedi_get_read_subdevice(arg1);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_get_write_subdevice(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_get_write_subdevice",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (int)comedi_get_write_subdevice(arg1);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_get_subdevice_type(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    unsigned int arg2 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_get_subdevice_type",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (int)comedi_get_subdevice_type(arg1,arg2);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_find_subdevice_by_type(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    int arg2 ;
+    unsigned int arg3 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj2 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OiO:comedi_find_subdevice_by_type",&obj0,&arg2,&obj2)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg3 = (unsigned int) PyInt_AsLong(obj2);
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (int)comedi_find_subdevice_by_type(arg1,arg2,arg3);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_get_subdevice_flags(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    unsigned int arg2 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_get_subdevice_flags",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (int)comedi_get_subdevice_flags(arg1,arg2);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_get_n_channels(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    unsigned int arg2 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_get_n_channels",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (int)comedi_get_n_channels(arg1,arg2);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_range_is_chan_specific(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    unsigned int arg2 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_range_is_chan_specific",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (int)comedi_range_is_chan_specific(arg1,arg2);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_maxdata_is_chan_specific(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    unsigned int arg2 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_maxdata_is_chan_specific",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (int)comedi_maxdata_is_chan_specific(arg1,arg2);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_get_maxdata(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    unsigned int arg2 ;
+    unsigned int arg3 ;
+    lsampl_t result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOO:comedi_get_maxdata",&obj0,&obj1,&obj2)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    arg3 = (unsigned int) PyInt_AsLong(obj2);
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (lsampl_t)comedi_get_maxdata(arg1,arg2,arg3);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_get_n_ranges(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    unsigned int arg2 ;
+    unsigned int arg3 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOO:comedi_get_n_ranges",&obj0,&obj1,&obj2)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    arg3 = (unsigned int) PyInt_AsLong(obj2);
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (int)comedi_get_n_ranges(arg1,arg2,arg3);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_get_range(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    unsigned int arg2 ;
+    unsigned int arg3 ;
+    unsigned int arg4 ;
+    comedi_range *result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOOO:comedi_get_range",&obj0,&obj1,&obj2,&obj3)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    arg3 = (unsigned int) PyInt_AsLong(obj2);
+    if (PyErr_Occurred()) SWIG_fail;
+    arg4 = (unsigned int) PyInt_AsLong(obj3);
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (comedi_range *)comedi_get_range(arg1,arg2,arg3,arg4);
+    
+    resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_comedi_range, 0);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_find_range(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    unsigned int arg2 ;
+    unsigned int arg3 ;
+    unsigned int arg4 ;
+    double arg5 ;
+    double arg6 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOOOdd:comedi_find_range",&obj0,&obj1,&obj2,&obj3,&arg5,&arg6)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    arg3 = (unsigned int) PyInt_AsLong(obj2);
+    if (PyErr_Occurred()) SWIG_fail;
+    arg4 = (unsigned int) PyInt_AsLong(obj3);
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (int)comedi_find_range(arg1,arg2,arg3,arg4,arg5,arg6);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_get_buffer_size(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    unsigned int arg2 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_get_buffer_size",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (int)comedi_get_buffer_size(arg1,arg2);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_get_max_buffer_size(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    unsigned int arg2 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_get_max_buffer_size",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (int)comedi_get_max_buffer_size(arg1,arg2);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_set_buffer_size(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    unsigned int arg2 ;
+    unsigned int arg3 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOO:comedi_set_buffer_size",&obj0,&obj1,&obj2)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    arg3 = (unsigned int) PyInt_AsLong(obj2);
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (int)comedi_set_buffer_size(arg1,arg2,arg3);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_do_insnlist(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    comedi_insnlist *arg2 = (comedi_insnlist *) 0 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_do_insnlist",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj1,(void **) &arg2, SWIGTYPE_p_comedi_insnlist,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (int)comedi_do_insnlist(arg1,arg2);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_do_insn(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    comedi_insn *arg2 = (comedi_insn *) 0 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_do_insn",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj1,(void **) &arg2, SWIGTYPE_p_comedi_insn,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (int)comedi_do_insn(arg1,arg2);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_lock(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    unsigned int arg2 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_lock",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (int)comedi_lock(arg1,arg2);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_unlock(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    unsigned int arg2 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_unlock",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (int)comedi_unlock(arg1,arg2);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_to_phys(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    lsampl_t arg1 ;
+    comedi_range *arg2 = (comedi_range *) 0 ;
+    lsampl_t arg3 ;
+    double result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOO:comedi_to_phys",&obj0,&obj1,&obj2)) goto fail;
+    arg1 = (lsampl_t) PyInt_AsLong(obj0);
+    if (PyErr_Occurred()) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj1,(void **) &arg2, SWIGTYPE_p_comedi_range,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg3 = (lsampl_t) PyInt_AsLong(obj2);
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (double)comedi_to_phys(arg1,arg2,arg3);
+    
+    resultobj = PyFloat_FromDouble(result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_from_phys(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    double arg1 ;
+    comedi_range *arg2 = (comedi_range *) 0 ;
+    lsampl_t arg3 ;
+    lsampl_t result;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"dOO:comedi_from_phys",&arg1,&obj1,&obj2)) goto fail;
+    if ((SWIG_ConvertPtr(obj1,(void **) &arg2, SWIGTYPE_p_comedi_range,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg3 = (lsampl_t) PyInt_AsLong(obj2);
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (lsampl_t)comedi_from_phys(arg1,arg2,arg3);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_sampl_to_phys(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    double *arg1 = (double *) 0 ;
+    int arg2 ;
+    sampl_t *arg3 = (sampl_t *) 0 ;
+    int arg4 ;
+    comedi_range *arg5 = (comedi_range *) 0 ;
+    lsampl_t arg6 ;
+    int arg7 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj4 = 0 ;
+    PyObject * obj5 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OiOiOOi:comedi_sampl_to_phys",&obj0,&arg2,&obj2,&arg4,&obj4,&obj5,&arg7)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_double,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj2,(void **) &arg3, SWIGTYPE_p_sampl_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj4,(void **) &arg5, SWIGTYPE_p_comedi_range,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg6 = (lsampl_t) PyInt_AsLong(obj5);
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (int)comedi_sampl_to_phys(arg1,arg2,arg3,arg4,arg5,arg6,arg7);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_sampl_from_phys(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    sampl_t *arg1 = (sampl_t *) 0 ;
+    int arg2 ;
+    double *arg3 = (double *) 0 ;
+    int arg4 ;
+    comedi_range *arg5 = (comedi_range *) 0 ;
+    lsampl_t arg6 ;
+    int arg7 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj4 = 0 ;
+    PyObject * obj5 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OiOiOOi:comedi_sampl_from_phys",&obj0,&arg2,&obj2,&arg4,&obj4,&obj5,&arg7)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_sampl_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj2,(void **) &arg3, SWIGTYPE_p_double,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj4,(void **) &arg5, SWIGTYPE_p_comedi_range,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg6 = (lsampl_t) PyInt_AsLong(obj5);
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (int)comedi_sampl_from_phys(arg1,arg2,arg3,arg4,arg5,arg6,arg7);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_data_read(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    unsigned int arg2 ;
+    unsigned int arg3 ;
+    unsigned int arg4 ;
+    unsigned int arg5 ;
+    lsampl_t *arg6 = (lsampl_t *) 0 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    PyObject * obj4 = 0 ;
+    PyObject * obj5 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOOOOO:comedi_data_read",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    arg3 = (unsigned int) PyInt_AsLong(obj2);
+    if (PyErr_Occurred()) SWIG_fail;
+    arg4 = (unsigned int) PyInt_AsLong(obj3);
+    if (PyErr_Occurred()) SWIG_fail;
+    arg5 = (unsigned int) PyInt_AsLong(obj4);
+    if (PyErr_Occurred()) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj5,(void **) &arg6, SWIGTYPE_p_lsampl_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (int)comedi_data_read(arg1,arg2,arg3,arg4,arg5,arg6);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_data_read_n(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    unsigned int arg2 ;
+    unsigned int arg3 ;
+    unsigned int arg4 ;
+    unsigned int arg5 ;
+    lsampl_t *arg6 = (lsampl_t *) 0 ;
+    unsigned int arg7 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    PyObject * obj4 = 0 ;
+    PyObject * obj5 = 0 ;
+    PyObject * obj6 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOOOOOO:comedi_data_read_n",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    arg3 = (unsigned int) PyInt_AsLong(obj2);
+    if (PyErr_Occurred()) SWIG_fail;
+    arg4 = (unsigned int) PyInt_AsLong(obj3);
+    if (PyErr_Occurred()) SWIG_fail;
+    arg5 = (unsigned int) PyInt_AsLong(obj4);
+    if (PyErr_Occurred()) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj5,(void **) &arg6, SWIGTYPE_p_lsampl_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg7 = (unsigned int) PyInt_AsLong(obj6);
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (int)comedi_data_read_n(arg1,arg2,arg3,arg4,arg5,arg6,arg7);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_data_read_hint(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    unsigned int arg2 ;
+    unsigned int arg3 ;
+    unsigned int arg4 ;
+    unsigned int arg5 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    PyObject * obj4 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOOOO:comedi_data_read_hint",&obj0,&obj1,&obj2,&obj3,&obj4)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    arg3 = (unsigned int) PyInt_AsLong(obj2);
+    if (PyErr_Occurred()) SWIG_fail;
+    arg4 = (unsigned int) PyInt_AsLong(obj3);
+    if (PyErr_Occurred()) SWIG_fail;
+    arg5 = (unsigned int) PyInt_AsLong(obj4);
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (int)comedi_data_read_hint(arg1,arg2,arg3,arg4,arg5);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_data_read_delayed(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    unsigned int arg2 ;
+    unsigned int arg3 ;
+    unsigned int arg4 ;
+    unsigned int arg5 ;
+    lsampl_t *arg6 = (lsampl_t *) 0 ;
+    unsigned int arg7 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    PyObject * obj4 = 0 ;
+    PyObject * obj5 = 0 ;
+    PyObject * obj6 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOOOOOO:comedi_data_read_delayed",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    arg3 = (unsigned int) PyInt_AsLong(obj2);
+    if (PyErr_Occurred()) SWIG_fail;
+    arg4 = (unsigned int) PyInt_AsLong(obj3);
+    if (PyErr_Occurred()) SWIG_fail;
+    arg5 = (unsigned int) PyInt_AsLong(obj4);
+    if (PyErr_Occurred()) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj5,(void **) &arg6, SWIGTYPE_p_lsampl_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg7 = (unsigned int) PyInt_AsLong(obj6);
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (int)comedi_data_read_delayed(arg1,arg2,arg3,arg4,arg5,arg6,arg7);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_data_write(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    unsigned int arg2 ;
+    unsigned int arg3 ;
+    unsigned int arg4 ;
+    unsigned int arg5 ;
+    lsampl_t arg6 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    PyObject * obj4 = 0 ;
+    PyObject * obj5 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOOOOO:comedi_data_write",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    arg3 = (unsigned int) PyInt_AsLong(obj2);
+    if (PyErr_Occurred()) SWIG_fail;
+    arg4 = (unsigned int) PyInt_AsLong(obj3);
+    if (PyErr_Occurred()) SWIG_fail;
+    arg5 = (unsigned int) PyInt_AsLong(obj4);
+    if (PyErr_Occurred()) SWIG_fail;
+    arg6 = (lsampl_t) PyInt_AsLong(obj5);
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (int)comedi_data_write(arg1,arg2,arg3,arg4,arg5,arg6);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_dio_config(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    unsigned int arg2 ;
+    unsigned int arg3 ;
+    unsigned int arg4 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOOO:comedi_dio_config",&obj0,&obj1,&obj2,&obj3)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    arg3 = (unsigned int) PyInt_AsLong(obj2);
+    if (PyErr_Occurred()) SWIG_fail;
+    arg4 = (unsigned int) PyInt_AsLong(obj3);
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (int)comedi_dio_config(arg1,arg2,arg3,arg4);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_dio_read(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    unsigned int arg2 ;
+    unsigned int arg3 ;
+    unsigned int *arg4 = (unsigned int *) 0 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOOO:comedi_dio_read",&obj0,&obj1,&obj2,&obj3)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    arg3 = (unsigned int) PyInt_AsLong(obj2);
+    if (PyErr_Occurred()) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj3,(void **) &arg4, SWIGTYPE_p_unsigned_int,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (int)comedi_dio_read(arg1,arg2,arg3,arg4);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_dio_write(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    unsigned int arg2 ;
+    unsigned int arg3 ;
+    unsigned int arg4 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOOO:comedi_dio_write",&obj0,&obj1,&obj2,&obj3)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    arg3 = (unsigned int) PyInt_AsLong(obj2);
+    if (PyErr_Occurred()) SWIG_fail;
+    arg4 = (unsigned int) PyInt_AsLong(obj3);
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (int)comedi_dio_write(arg1,arg2,arg3,arg4);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_dio_bitfield(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    unsigned int arg2 ;
+    unsigned int arg3 ;
+    unsigned int *arg4 = (unsigned int *) 0 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOOO:comedi_dio_bitfield",&obj0,&obj1,&obj2,&obj3)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    arg3 = (unsigned int) PyInt_AsLong(obj2);
+    if (PyErr_Occurred()) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj3,(void **) &arg4, SWIGTYPE_p_unsigned_int,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (int)comedi_dio_bitfield(arg1,arg2,arg3,arg4);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_sv_init(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_sv_t *arg1 = (comedi_sv_t *) 0 ;
+    comedi_t *arg2 = (comedi_t *) 0 ;
+    unsigned int arg3 ;
+    unsigned int arg4 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOOO:comedi_sv_init",&obj0,&obj1,&obj2,&obj3)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_sv_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj1,(void **) &arg2, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg3 = (unsigned int) PyInt_AsLong(obj2);
+    if (PyErr_Occurred()) SWIG_fail;
+    arg4 = (unsigned int) PyInt_AsLong(obj3);
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (int)comedi_sv_init(arg1,arg2,arg3,arg4);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_sv_update(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_sv_t *arg1 = (comedi_sv_t *) 0 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:comedi_sv_update",&obj0)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_sv_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (int)comedi_sv_update(arg1);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_sv_measure(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_sv_t *arg1 = (comedi_sv_t *) 0 ;
+    double *arg2 = (double *) 0 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_sv_measure",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_sv_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj1,(void **) &arg2, SWIGTYPE_p_double,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (int)comedi_sv_measure(arg1,arg2);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_get_cmd_src_mask(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    unsigned int arg2 ;
+    comedi_cmd *arg3 = (comedi_cmd *) 0 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOO:comedi_get_cmd_src_mask",&obj0,&obj1,&obj2)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj2,(void **) &arg3, SWIGTYPE_p_comedi_cmd,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (int)comedi_get_cmd_src_mask(arg1,arg2,arg3);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_get_cmd_generic_timed(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    unsigned int arg2 ;
+    comedi_cmd *arg3 = (comedi_cmd *) 0 ;
+    unsigned int arg4 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOOO:comedi_get_cmd_generic_timed",&obj0,&obj1,&obj2,&obj3)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj2,(void **) &arg3, SWIGTYPE_p_comedi_cmd,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg4 = (unsigned int) PyInt_AsLong(obj3);
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (int)comedi_get_cmd_generic_timed(arg1,arg2,arg3,arg4);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_cancel(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    unsigned int arg2 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_cancel",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (int)comedi_cancel(arg1,arg2);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_command(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    comedi_cmd *arg2 = (comedi_cmd *) 0 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_command",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj1,(void **) &arg2, SWIGTYPE_p_comedi_cmd,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (int)comedi_command(arg1,arg2);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_command_test(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    comedi_cmd *arg2 = (comedi_cmd *) 0 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_command_test",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    if ((SWIG_ConvertPtr(obj1,(void **) &arg2, SWIGTYPE_p_comedi_cmd,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    result = (int)comedi_command_test(arg1,arg2);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_poll(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    unsigned int arg2 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_poll",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (int)comedi_poll(arg1,arg2);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_set_max_buffer_size(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    unsigned int arg2 ;
+    unsigned int arg3 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOO:comedi_set_max_buffer_size",&obj0,&obj1,&obj2)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    arg3 = (unsigned int) PyInt_AsLong(obj2);
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (int)comedi_set_max_buffer_size(arg1,arg2,arg3);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_get_buffer_contents(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    unsigned int arg2 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_get_buffer_contents",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (int)comedi_get_buffer_contents(arg1,arg2);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_mark_buffer_read(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    unsigned int arg2 ;
+    unsigned int arg3 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOO:comedi_mark_buffer_read",&obj0,&obj1,&obj2)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    arg3 = (unsigned int) PyInt_AsLong(obj2);
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (int)comedi_mark_buffer_read(arg1,arg2,arg3);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_comedi_get_buffer_offset(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    comedi_t *arg1 = (comedi_t *) 0 ;
+    unsigned int arg2 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:comedi_get_buffer_offset",&obj0,&obj1)) goto fail;
+    if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_comedi_t,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
+    arg2 = (unsigned int) PyInt_AsLong(obj1);
+    if (PyErr_Occurred()) SWIG_fail;
+    result = (int)comedi_get_buffer_offset(arg1,arg2);
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyMethodDef SwigMethods[] = {
+        { (char *)"cr_pack", _wrap_cr_pack, METH_VARARGS },
+        { (char *)"cr_pack_flags", _wrap_cr_pack_flags, METH_VARARGS },
+        { (char *)"cr_chan", _wrap_cr_chan, METH_VARARGS },
+        { (char *)"cr_range", _wrap_cr_range, METH_VARARGS },
+        { (char *)"cr_aref", _wrap_cr_aref, METH_VARARGS },
+        { (char *)"new_chanlist", _wrap_new_chanlist, METH_VARARGS },
+        { (char *)"delete_chanlist", _wrap_delete_chanlist, METH_VARARGS },
+        { (char *)"chanlist___getitem__", _wrap_chanlist___getitem__, METH_VARARGS },
+        { (char *)"chanlist___setitem__", _wrap_chanlist___setitem__, METH_VARARGS },
+        { (char *)"chanlist_cast", _wrap_chanlist_cast, METH_VARARGS },
+        { (char *)"chanlist_frompointer", _wrap_chanlist_frompointer, METH_VARARGS },
+        { (char *)"chanlist_swigregister", chanlist_swigregister, METH_VARARGS },
+        { (char *)"comedi_trig_struct_subdev_set", _wrap_comedi_trig_struct_subdev_set, METH_VARARGS },
+        { (char *)"comedi_trig_struct_subdev_get", _wrap_comedi_trig_struct_subdev_get, METH_VARARGS },
+        { (char *)"comedi_trig_struct_mode_set", _wrap_comedi_trig_struct_mode_set, METH_VARARGS },
+        { (char *)"comedi_trig_struct_mode_get", _wrap_comedi_trig_struct_mode_get, METH_VARARGS },
+        { (char *)"comedi_trig_struct_flags_set", _wrap_comedi_trig_struct_flags_set, METH_VARARGS },
+        { (char *)"comedi_trig_struct_flags_get", _wrap_comedi_trig_struct_flags_get, METH_VARARGS },
+        { (char *)"comedi_trig_struct_n_chan_set", _wrap_comedi_trig_struct_n_chan_set, METH_VARARGS },
+        { (char *)"comedi_trig_struct_n_chan_get", _wrap_comedi_trig_struct_n_chan_get, METH_VARARGS },
+        { (char *)"comedi_trig_struct_chanlist_set", _wrap_comedi_trig_struct_chanlist_set, METH_VARARGS },
+        { (char *)"comedi_trig_struct_chanlist_get", _wrap_comedi_trig_struct_chanlist_get, METH_VARARGS },
+        { (char *)"comedi_trig_struct_data_set", _wrap_comedi_trig_struct_data_set, METH_VARARGS },
+        { (char *)"comedi_trig_struct_data_get", _wrap_comedi_trig_struct_data_get, METH_VARARGS },
+        { (char *)"comedi_trig_struct_n_set", _wrap_comedi_trig_struct_n_set, METH_VARARGS },
+        { (char *)"comedi_trig_struct_n_get", _wrap_comedi_trig_struct_n_get, METH_VARARGS },
+        { (char *)"comedi_trig_struct_trigsrc_set", _wrap_comedi_trig_struct_trigsrc_set, METH_VARARGS },
+        { (char *)"comedi_trig_struct_trigsrc_get", _wrap_comedi_trig_struct_trigsrc_get, METH_VARARGS },
+        { (char *)"comedi_trig_struct_trigvar_set", _wrap_comedi_trig_struct_trigvar_set, METH_VARARGS },
+        { (char *)"comedi_trig_struct_trigvar_get", _wrap_comedi_trig_struct_trigvar_get, METH_VARARGS },
+        { (char *)"comedi_trig_struct_trigvar1_set", _wrap_comedi_trig_struct_trigvar1_set, METH_VARARGS },
+        { (char *)"comedi_trig_struct_trigvar1_get", _wrap_comedi_trig_struct_trigvar1_get, METH_VARARGS },
+        { (char *)"comedi_trig_struct_data_len_set", _wrap_comedi_trig_struct_data_len_set, METH_VARARGS },
+        { (char *)"comedi_trig_struct_data_len_get", _wrap_comedi_trig_struct_data_len_get, METH_VARARGS },
+        { (char *)"comedi_trig_struct_unused_set", _wrap_comedi_trig_struct_unused_set, METH_VARARGS },
+        { (char *)"comedi_trig_struct_unused_get", _wrap_comedi_trig_struct_unused_get, METH_VARARGS },
+        { (char *)"new_comedi_trig_struct", _wrap_new_comedi_trig_struct, METH_VARARGS },
+        { (char *)"delete_comedi_trig_struct", _wrap_delete_comedi_trig_struct, METH_VARARGS },
+        { (char *)"comedi_trig_struct_swigregister", comedi_trig_struct_swigregister, METH_VARARGS },
+        { (char *)"comedi_insn_struct_insn_set", _wrap_comedi_insn_struct_insn_set, METH_VARARGS },
+        { (char *)"comedi_insn_struct_insn_get", _wrap_comedi_insn_struct_insn_get, METH_VARARGS },
+        { (char *)"comedi_insn_struct_n_set", _wrap_comedi_insn_struct_n_set, METH_VARARGS },
+        { (char *)"comedi_insn_struct_n_get", _wrap_comedi_insn_struct_n_get, METH_VARARGS },
+        { (char *)"comedi_insn_struct_data_set", _wrap_comedi_insn_struct_data_set, METH_VARARGS },
+        { (char *)"comedi_insn_struct_data_get", _wrap_comedi_insn_struct_data_get, METH_VARARGS },
+        { (char *)"comedi_insn_struct_subdev_set", _wrap_comedi_insn_struct_subdev_set, METH_VARARGS },
+        { (char *)"comedi_insn_struct_subdev_get", _wrap_comedi_insn_struct_subdev_get, METH_VARARGS },
+        { (char *)"comedi_insn_struct_chanspec_set", _wrap_comedi_insn_struct_chanspec_set, METH_VARARGS },
+        { (char *)"comedi_insn_struct_chanspec_get", _wrap_comedi_insn_struct_chanspec_get, METH_VARARGS },
+        { (char *)"comedi_insn_struct_unused_set", _wrap_comedi_insn_struct_unused_set, METH_VARARGS },
+        { (char *)"comedi_insn_struct_unused_get", _wrap_comedi_insn_struct_unused_get, METH_VARARGS },
+        { (char *)"new_comedi_insn_struct", _wrap_new_comedi_insn_struct, METH_VARARGS },
+        { (char *)"delete_comedi_insn_struct", _wrap_delete_comedi_insn_struct, METH_VARARGS },
+        { (char *)"comedi_insn_struct_swigregister", comedi_insn_struct_swigregister, METH_VARARGS },
+        { (char *)"comedi_insnlist_struct_n_insns_set", _wrap_comedi_insnlist_struct_n_insns_set, METH_VARARGS },
+        { (char *)"comedi_insnlist_struct_n_insns_get", _wrap_comedi_insnlist_struct_n_insns_get, METH_VARARGS },
+        { (char *)"comedi_insnlist_struct_insns_set", _wrap_comedi_insnlist_struct_insns_set, METH_VARARGS },
+        { (char *)"comedi_insnlist_struct_insns_get", _wrap_comedi_insnlist_struct_insns_get, METH_VARARGS },
+        { (char *)"new_comedi_insnlist_struct", _wrap_new_comedi_insnlist_struct, METH_VARARGS },
+        { (char *)"delete_comedi_insnlist_struct", _wrap_delete_comedi_insnlist_struct, METH_VARARGS },
+        { (char *)"comedi_insnlist_struct_swigregister", comedi_insnlist_struct_swigregister, METH_VARARGS },
+        { (char *)"comedi_cmd_struct_subdev_set", _wrap_comedi_cmd_struct_subdev_set, METH_VARARGS },
+        { (char *)"comedi_cmd_struct_subdev_get", _wrap_comedi_cmd_struct_subdev_get, METH_VARARGS },
+        { (char *)"comedi_cmd_struct_flags_set", _wrap_comedi_cmd_struct_flags_set, METH_VARARGS },
+        { (char *)"comedi_cmd_struct_flags_get", _wrap_comedi_cmd_struct_flags_get, METH_VARARGS },
+        { (char *)"comedi_cmd_struct_start_src_set", _wrap_comedi_cmd_struct_start_src_set, METH_VARARGS },
+        { (char *)"comedi_cmd_struct_start_src_get", _wrap_comedi_cmd_struct_start_src_get, METH_VARARGS },
+        { (char *)"comedi_cmd_struct_start_arg_set", _wrap_comedi_cmd_struct_start_arg_set, METH_VARARGS },
+        { (char *)"comedi_cmd_struct_start_arg_get", _wrap_comedi_cmd_struct_start_arg_get, METH_VARARGS },
+        { (char *)"comedi_cmd_struct_scan_begin_src_set", _wrap_comedi_cmd_struct_scan_begin_src_set, METH_VARARGS },
+        { (char *)"comedi_cmd_struct_scan_begin_src_get", _wrap_comedi_cmd_struct_scan_begin_src_get, METH_VARARGS },
+        { (char *)"comedi_cmd_struct_scan_begin_arg_set", _wrap_comedi_cmd_struct_scan_begin_arg_set, METH_VARARGS },
+        { (char *)"comedi_cmd_struct_scan_begin_arg_get", _wrap_comedi_cmd_struct_scan_begin_arg_get, METH_VARARGS },
+        { (char *)"comedi_cmd_struct_convert_src_set", _wrap_comedi_cmd_struct_convert_src_set, METH_VARARGS },
+        { (char *)"comedi_cmd_struct_convert_src_get", _wrap_comedi_cmd_struct_convert_src_get, METH_VARARGS },
+        { (char *)"comedi_cmd_struct_convert_arg_set", _wrap_comedi_cmd_struct_convert_arg_set, METH_VARARGS },
+        { (char *)"comedi_cmd_struct_convert_arg_get", _wrap_comedi_cmd_struct_convert_arg_get, METH_VARARGS },
+        { (char *)"comedi_cmd_struct_scan_end_src_set", _wrap_comedi_cmd_struct_scan_end_src_set, METH_VARARGS },
+        { (char *)"comedi_cmd_struct_scan_end_src_get", _wrap_comedi_cmd_struct_scan_end_src_get, METH_VARARGS },
+        { (char *)"comedi_cmd_struct_scan_end_arg_set", _wrap_comedi_cmd_struct_scan_end_arg_set, METH_VARARGS },
+        { (char *)"comedi_cmd_struct_scan_end_arg_get", _wrap_comedi_cmd_struct_scan_end_arg_get, METH_VARARGS },
+        { (char *)"comedi_cmd_struct_stop_src_set", _wrap_comedi_cmd_struct_stop_src_set, METH_VARARGS },
+        { (char *)"comedi_cmd_struct_stop_src_get", _wrap_comedi_cmd_struct_stop_src_get, METH_VARARGS },
+        { (char *)"comedi_cmd_struct_stop_arg_set", _wrap_comedi_cmd_struct_stop_arg_set, METH_VARARGS },
+        { (char *)"comedi_cmd_struct_stop_arg_get", _wrap_comedi_cmd_struct_stop_arg_get, METH_VARARGS },
+        { (char *)"comedi_cmd_struct_chanlist_set", _wrap_comedi_cmd_struct_chanlist_set, METH_VARARGS },
+        { (char *)"comedi_cmd_struct_chanlist_get", _wrap_comedi_cmd_struct_chanlist_get, METH_VARARGS },
+        { (char *)"comedi_cmd_struct_chanlist_len_set", _wrap_comedi_cmd_struct_chanlist_len_set, METH_VARARGS },
+        { (char *)"comedi_cmd_struct_chanlist_len_get", _wrap_comedi_cmd_struct_chanlist_len_get, METH_VARARGS },
+        { (char *)"comedi_cmd_struct_data_set", _wrap_comedi_cmd_struct_data_set, METH_VARARGS },
+        { (char *)"comedi_cmd_struct_data_get", _wrap_comedi_cmd_struct_data_get, METH_VARARGS },
+        { (char *)"comedi_cmd_struct_data_len_set", _wrap_comedi_cmd_struct_data_len_set, METH_VARARGS },
+        { (char *)"comedi_cmd_struct_data_len_get", _wrap_comedi_cmd_struct_data_len_get, METH_VARARGS },
+        { (char *)"new_comedi_cmd_struct", _wrap_new_comedi_cmd_struct, METH_VARARGS },
+        { (char *)"delete_comedi_cmd_struct", _wrap_delete_comedi_cmd_struct, METH_VARARGS },
+        { (char *)"comedi_cmd_struct_swigregister", comedi_cmd_struct_swigregister, METH_VARARGS },
+        { (char *)"comedi_chaninfo_struct_subdev_set", _wrap_comedi_chaninfo_struct_subdev_set, METH_VARARGS },
+        { (char *)"comedi_chaninfo_struct_subdev_get", _wrap_comedi_chaninfo_struct_subdev_get, METH_VARARGS },
+        { (char *)"comedi_chaninfo_struct_maxdata_list_set", _wrap_comedi_chaninfo_struct_maxdata_list_set, METH_VARARGS },
+        { (char *)"comedi_chaninfo_struct_maxdata_list_get", _wrap_comedi_chaninfo_struct_maxdata_list_get, METH_VARARGS },
+        { (char *)"comedi_chaninfo_struct_flaglist_set", _wrap_comedi_chaninfo_struct_flaglist_set, METH_VARARGS },
+        { (char *)"comedi_chaninfo_struct_flaglist_get", _wrap_comedi_chaninfo_struct_flaglist_get, METH_VARARGS },
+        { (char *)"comedi_chaninfo_struct_rangelist_set", _wrap_comedi_chaninfo_struct_rangelist_set, METH_VARARGS },
+        { (char *)"comedi_chaninfo_struct_rangelist_get", _wrap_comedi_chaninfo_struct_rangelist_get, METH_VARARGS },
+        { (char *)"comedi_chaninfo_struct_unused_set", _wrap_comedi_chaninfo_struct_unused_set, METH_VARARGS },
+        { (char *)"comedi_chaninfo_struct_unused_get", _wrap_comedi_chaninfo_struct_unused_get, METH_VARARGS },
+        { (char *)"new_comedi_chaninfo_struct", _wrap_new_comedi_chaninfo_struct, METH_VARARGS },
+        { (char *)"delete_comedi_chaninfo_struct", _wrap_delete_comedi_chaninfo_struct, METH_VARARGS },
+        { (char *)"comedi_chaninfo_struct_swigregister", comedi_chaninfo_struct_swigregister, METH_VARARGS },
+        { (char *)"comedi_rangeinfo_struct_range_type_set", _wrap_comedi_rangeinfo_struct_range_type_set, METH_VARARGS },
+        { (char *)"comedi_rangeinfo_struct_range_type_get", _wrap_comedi_rangeinfo_struct_range_type_get, METH_VARARGS },
+        { (char *)"comedi_rangeinfo_struct_range_ptr_set", _wrap_comedi_rangeinfo_struct_range_ptr_set, METH_VARARGS },
+        { (char *)"comedi_rangeinfo_struct_range_ptr_get", _wrap_comedi_rangeinfo_struct_range_ptr_get, METH_VARARGS },
+        { (char *)"new_comedi_rangeinfo_struct", _wrap_new_comedi_rangeinfo_struct, METH_VARARGS },
+        { (char *)"delete_comedi_rangeinfo_struct", _wrap_delete_comedi_rangeinfo_struct, METH_VARARGS },
+        { (char *)"comedi_rangeinfo_struct_swigregister", comedi_rangeinfo_struct_swigregister, METH_VARARGS },
+        { (char *)"comedi_krange_struct_min_set", _wrap_comedi_krange_struct_min_set, METH_VARARGS },
+        { (char *)"comedi_krange_struct_min_get", _wrap_comedi_krange_struct_min_get, METH_VARARGS },
+        { (char *)"comedi_krange_struct_max_set", _wrap_comedi_krange_struct_max_set, METH_VARARGS },
+        { (char *)"comedi_krange_struct_max_get", _wrap_comedi_krange_struct_max_get, METH_VARARGS },
+        { (char *)"comedi_krange_struct_flags_set", _wrap_comedi_krange_struct_flags_set, METH_VARARGS },
+        { (char *)"comedi_krange_struct_flags_get", _wrap_comedi_krange_struct_flags_get, METH_VARARGS },
+        { (char *)"new_comedi_krange_struct", _wrap_new_comedi_krange_struct, METH_VARARGS },
+        { (char *)"delete_comedi_krange_struct", _wrap_delete_comedi_krange_struct, METH_VARARGS },
+        { (char *)"comedi_krange_struct_swigregister", comedi_krange_struct_swigregister, METH_VARARGS },
+        { (char *)"comedi_subdinfo_struct_type_set", _wrap_comedi_subdinfo_struct_type_set, METH_VARARGS },
+        { (char *)"comedi_subdinfo_struct_type_get", _wrap_comedi_subdinfo_struct_type_get, METH_VARARGS },
+        { (char *)"comedi_subdinfo_struct_n_chan_set", _wrap_comedi_subdinfo_struct_n_chan_set, METH_VARARGS },
+        { (char *)"comedi_subdinfo_struct_n_chan_get", _wrap_comedi_subdinfo_struct_n_chan_get, METH_VARARGS },
+        { (char *)"comedi_subdinfo_struct_subd_flags_set", _wrap_comedi_subdinfo_struct_subd_flags_set, METH_VARARGS },
+        { (char *)"comedi_subdinfo_struct_subd_flags_get", _wrap_comedi_subdinfo_struct_subd_flags_get, METH_VARARGS },
+        { (char *)"comedi_subdinfo_struct_timer_type_set", _wrap_comedi_subdinfo_struct_timer_type_set, METH_VARARGS },
+        { (char *)"comedi_subdinfo_struct_timer_type_get", _wrap_comedi_subdinfo_struct_timer_type_get, METH_VARARGS },
+        { (char *)"comedi_subdinfo_struct_len_chanlist_set", _wrap_comedi_subdinfo_struct_len_chanlist_set, METH_VARARGS },
+        { (char *)"comedi_subdinfo_struct_len_chanlist_get", _wrap_comedi_subdinfo_struct_len_chanlist_get, METH_VARARGS },
+        { (char *)"comedi_subdinfo_struct_maxdata_set", _wrap_comedi_subdinfo_struct_maxdata_set, METH_VARARGS },
+        { (char *)"comedi_subdinfo_struct_maxdata_get", _wrap_comedi_subdinfo_struct_maxdata_get, METH_VARARGS },
+        { (char *)"comedi_subdinfo_struct_flags_set", _wrap_comedi_subdinfo_struct_flags_set, METH_VARARGS },
+        { (char *)"comedi_subdinfo_struct_flags_get", _wrap_comedi_subdinfo_struct_flags_get, METH_VARARGS },
+        { (char *)"comedi_subdinfo_struct_range_type_set", _wrap_comedi_subdinfo_struct_range_type_set, METH_VARARGS },
+        { (char *)"comedi_subdinfo_struct_range_type_get", _wrap_comedi_subdinfo_struct_range_type_get, METH_VARARGS },
+        { (char *)"comedi_subdinfo_struct_unused_set", _wrap_comedi_subdinfo_struct_unused_set, METH_VARARGS },
+        { (char *)"comedi_subdinfo_struct_unused_get", _wrap_comedi_subdinfo_struct_unused_get, METH_VARARGS },
+        { (char *)"new_comedi_subdinfo_struct", _wrap_new_comedi_subdinfo_struct, METH_VARARGS },
+        { (char *)"delete_comedi_subdinfo_struct", _wrap_delete_comedi_subdinfo_struct, METH_VARARGS },
+        { (char *)"comedi_subdinfo_struct_swigregister", comedi_subdinfo_struct_swigregister, METH_VARARGS },
+        { (char *)"comedi_devinfo_struct_version_code_set", _wrap_comedi_devinfo_struct_version_code_set, METH_VARARGS },
+        { (char *)"comedi_devinfo_struct_version_code_get", _wrap_comedi_devinfo_struct_version_code_get, METH_VARARGS },
+        { (char *)"comedi_devinfo_struct_n_subdevs_set", _wrap_comedi_devinfo_struct_n_subdevs_set, METH_VARARGS },
+        { (char *)"comedi_devinfo_struct_n_subdevs_get", _wrap_comedi_devinfo_struct_n_subdevs_get, METH_VARARGS },
+        { (char *)"comedi_devinfo_struct_driver_name_set", _wrap_comedi_devinfo_struct_driver_name_set, METH_VARARGS },
+        { (char *)"comedi_devinfo_struct_driver_name_get", _wrap_comedi_devinfo_struct_driver_name_get, METH_VARARGS },
+        { (char *)"comedi_devinfo_struct_board_name_set", _wrap_comedi_devinfo_struct_board_name_set, METH_VARARGS },
+        { (char *)"comedi_devinfo_struct_board_name_get", _wrap_comedi_devinfo_struct_board_name_get, METH_VARARGS },
+        { (char *)"comedi_devinfo_struct_read_subdevice_set", _wrap_comedi_devinfo_struct_read_subdevice_set, METH_VARARGS },
+        { (char *)"comedi_devinfo_struct_read_subdevice_get", _wrap_comedi_devinfo_struct_read_subdevice_get, METH_VARARGS },
+        { (char *)"comedi_devinfo_struct_write_subdevice_set", _wrap_comedi_devinfo_struct_write_subdevice_set, METH_VARARGS },
+        { (char *)"comedi_devinfo_struct_write_subdevice_get", _wrap_comedi_devinfo_struct_write_subdevice_get, METH_VARARGS },
+        { (char *)"comedi_devinfo_struct_unused_set", _wrap_comedi_devinfo_struct_unused_set, METH_VARARGS },
+        { (char *)"comedi_devinfo_struct_unused_get", _wrap_comedi_devinfo_struct_unused_get, METH_VARARGS },
+        { (char *)"new_comedi_devinfo_struct", _wrap_new_comedi_devinfo_struct, METH_VARARGS },
+        { (char *)"delete_comedi_devinfo_struct", _wrap_delete_comedi_devinfo_struct, METH_VARARGS },
+        { (char *)"comedi_devinfo_struct_swigregister", comedi_devinfo_struct_swigregister, METH_VARARGS },
+        { (char *)"comedi_devconfig_struct_board_name_set", _wrap_comedi_devconfig_struct_board_name_set, METH_VARARGS },
+        { (char *)"comedi_devconfig_struct_board_name_get", _wrap_comedi_devconfig_struct_board_name_get, METH_VARARGS },
+        { (char *)"comedi_devconfig_struct_options_set", _wrap_comedi_devconfig_struct_options_set, METH_VARARGS },
+        { (char *)"comedi_devconfig_struct_options_get", _wrap_comedi_devconfig_struct_options_get, METH_VARARGS },
+        { (char *)"new_comedi_devconfig_struct", _wrap_new_comedi_devconfig_struct, METH_VARARGS },
+        { (char *)"delete_comedi_devconfig_struct", _wrap_delete_comedi_devconfig_struct, METH_VARARGS },
+        { (char *)"comedi_devconfig_struct_swigregister", comedi_devconfig_struct_swigregister, METH_VARARGS },
+        { (char *)"comedi_bufconfig_struct_subdevice_set", _wrap_comedi_bufconfig_struct_subdevice_set, METH_VARARGS },
+        { (char *)"comedi_bufconfig_struct_subdevice_get", _wrap_comedi_bufconfig_struct_subdevice_get, METH_VARARGS },
+        { (char *)"comedi_bufconfig_struct_flags_set", _wrap_comedi_bufconfig_struct_flags_set, METH_VARARGS },
+        { (char *)"comedi_bufconfig_struct_flags_get", _wrap_comedi_bufconfig_struct_flags_get, METH_VARARGS },
+        { (char *)"comedi_bufconfig_struct_maximum_size_set", _wrap_comedi_bufconfig_struct_maximum_size_set, METH_VARARGS },
+        { (char *)"comedi_bufconfig_struct_maximum_size_get", _wrap_comedi_bufconfig_struct_maximum_size_get, METH_VARARGS },
+        { (char *)"comedi_bufconfig_struct_size_set", _wrap_comedi_bufconfig_struct_size_set, METH_VARARGS },
+        { (char *)"comedi_bufconfig_struct_size_get", _wrap_comedi_bufconfig_struct_size_get, METH_VARARGS },
+        { (char *)"comedi_bufconfig_struct_unused_set", _wrap_comedi_bufconfig_struct_unused_set, METH_VARARGS },
+        { (char *)"comedi_bufconfig_struct_unused_get", _wrap_comedi_bufconfig_struct_unused_get, METH_VARARGS },
+        { (char *)"new_comedi_bufconfig_struct", _wrap_new_comedi_bufconfig_struct, METH_VARARGS },
+        { (char *)"delete_comedi_bufconfig_struct", _wrap_delete_comedi_bufconfig_struct, METH_VARARGS },
+        { (char *)"comedi_bufconfig_struct_swigregister", comedi_bufconfig_struct_swigregister, METH_VARARGS },
+        { (char *)"comedi_bufinfo_struct_subdevice_set", _wrap_comedi_bufinfo_struct_subdevice_set, METH_VARARGS },
+        { (char *)"comedi_bufinfo_struct_subdevice_get", _wrap_comedi_bufinfo_struct_subdevice_get, METH_VARARGS },
+        { (char *)"comedi_bufinfo_struct_bytes_read_set", _wrap_comedi_bufinfo_struct_bytes_read_set, METH_VARARGS },
+        { (char *)"comedi_bufinfo_struct_bytes_read_get", _wrap_comedi_bufinfo_struct_bytes_read_get, METH_VARARGS },
+        { (char *)"comedi_bufinfo_struct_buf_int_ptr_set", _wrap_comedi_bufinfo_struct_buf_int_ptr_set, METH_VARARGS },
+        { (char *)"comedi_bufinfo_struct_buf_int_ptr_get", _wrap_comedi_bufinfo_struct_buf_int_ptr_get, METH_VARARGS },
+        { (char *)"comedi_bufinfo_struct_buf_user_ptr_set", _wrap_comedi_bufinfo_struct_buf_user_ptr_set, METH_VARARGS },
+        { (char *)"comedi_bufinfo_struct_buf_user_ptr_get", _wrap_comedi_bufinfo_struct_buf_user_ptr_get, METH_VARARGS },
+        { (char *)"comedi_bufinfo_struct_buf_int_count_set", _wrap_comedi_bufinfo_struct_buf_int_count_set, METH_VARARGS },
+        { (char *)"comedi_bufinfo_struct_buf_int_count_get", _wrap_comedi_bufinfo_struct_buf_int_count_get, METH_VARARGS },
+        { (char *)"comedi_bufinfo_struct_buf_user_count_set", _wrap_comedi_bufinfo_struct_buf_user_count_set, METH_VARARGS },
+        { (char *)"comedi_bufinfo_struct_buf_user_count_get", _wrap_comedi_bufinfo_struct_buf_user_count_get, METH_VARARGS },
+        { (char *)"comedi_bufinfo_struct_unused_set", _wrap_comedi_bufinfo_struct_unused_set, METH_VARARGS },
+        { (char *)"comedi_bufinfo_struct_unused_get", _wrap_comedi_bufinfo_struct_unused_get, METH_VARARGS },
+        { (char *)"new_comedi_bufinfo_struct", _wrap_new_comedi_bufinfo_struct, METH_VARARGS },
+        { (char *)"delete_comedi_bufinfo_struct", _wrap_delete_comedi_bufinfo_struct, METH_VARARGS },
+        { (char *)"comedi_bufinfo_struct_swigregister", comedi_bufinfo_struct_swigregister, METH_VARARGS },
+        { (char *)"comedi_range_min_set", _wrap_comedi_range_min_set, METH_VARARGS },
+        { (char *)"comedi_range_min_get", _wrap_comedi_range_min_get, METH_VARARGS },
+        { (char *)"comedi_range_max_set", _wrap_comedi_range_max_set, METH_VARARGS },
+        { (char *)"comedi_range_max_get", _wrap_comedi_range_max_get, METH_VARARGS },
+        { (char *)"comedi_range_unit_set", _wrap_comedi_range_unit_set, METH_VARARGS },
+        { (char *)"comedi_range_unit_get", _wrap_comedi_range_unit_get, METH_VARARGS },
+        { (char *)"new_comedi_range", _wrap_new_comedi_range, METH_VARARGS },
+        { (char *)"delete_comedi_range", _wrap_delete_comedi_range, METH_VARARGS },
+        { (char *)"comedi_range_swigregister", comedi_range_swigregister, METH_VARARGS },
+        { (char *)"comedi_sv_t_dev_set", _wrap_comedi_sv_t_dev_set, METH_VARARGS },
+        { (char *)"comedi_sv_t_dev_get", _wrap_comedi_sv_t_dev_get, METH_VARARGS },
+        { (char *)"comedi_sv_t_subdevice_set", _wrap_comedi_sv_t_subdevice_set, METH_VARARGS },
+        { (char *)"comedi_sv_t_subdevice_get", _wrap_comedi_sv_t_subdevice_get, METH_VARARGS },
+        { (char *)"comedi_sv_t_chan_set", _wrap_comedi_sv_t_chan_set, METH_VARARGS },
+        { (char *)"comedi_sv_t_chan_get", _wrap_comedi_sv_t_chan_get, METH_VARARGS },
+        { (char *)"comedi_sv_t_range_set", _wrap_comedi_sv_t_range_set, METH_VARARGS },
+        { (char *)"comedi_sv_t_range_get", _wrap_comedi_sv_t_range_get, METH_VARARGS },
+        { (char *)"comedi_sv_t_aref_set", _wrap_comedi_sv_t_aref_set, METH_VARARGS },
+        { (char *)"comedi_sv_t_aref_get", _wrap_comedi_sv_t_aref_get, METH_VARARGS },
+        { (char *)"comedi_sv_t_n_set", _wrap_comedi_sv_t_n_set, METH_VARARGS },
+        { (char *)"comedi_sv_t_n_get", _wrap_comedi_sv_t_n_get, METH_VARARGS },
+        { (char *)"comedi_sv_t_maxdata_set", _wrap_comedi_sv_t_maxdata_set, METH_VARARGS },
+        { (char *)"comedi_sv_t_maxdata_get", _wrap_comedi_sv_t_maxdata_get, METH_VARARGS },
+        { (char *)"new_comedi_sv_t", _wrap_new_comedi_sv_t, METH_VARARGS },
+        { (char *)"delete_comedi_sv_t", _wrap_delete_comedi_sv_t, METH_VARARGS },
+        { (char *)"comedi_sv_t_swigregister", comedi_sv_t_swigregister, METH_VARARGS },
+        { (char *)"comedi_open", _wrap_comedi_open, METH_VARARGS },
+        { (char *)"comedi_close", _wrap_comedi_close, METH_VARARGS },
+        { (char *)"comedi_loglevel", _wrap_comedi_loglevel, METH_VARARGS },
+        { (char *)"comedi_perror", _wrap_comedi_perror, METH_VARARGS },
+        { (char *)"comedi_strerror", _wrap_comedi_strerror, METH_VARARGS },
+        { (char *)"comedi_errno", _wrap_comedi_errno, METH_VARARGS },
+        { (char *)"comedi_fileno", _wrap_comedi_fileno, METH_VARARGS },
+        { (char *)"comedi_set_global_oor_behavior", _wrap_comedi_set_global_oor_behavior, METH_VARARGS },
+        { (char *)"comedi_get_n_subdevices", _wrap_comedi_get_n_subdevices, METH_VARARGS },
+        { (char *)"comedi_get_version_code", _wrap_comedi_get_version_code, METH_VARARGS },
+        { (char *)"comedi_get_driver_name", _wrap_comedi_get_driver_name, METH_VARARGS },
+        { (char *)"comedi_get_board_name", _wrap_comedi_get_board_name, METH_VARARGS },
+        { (char *)"comedi_get_read_subdevice", _wrap_comedi_get_read_subdevice, METH_VARARGS },
+        { (char *)"comedi_get_write_subdevice", _wrap_comedi_get_write_subdevice, METH_VARARGS },
+        { (char *)"comedi_get_subdevice_type", _wrap_comedi_get_subdevice_type, METH_VARARGS },
+        { (char *)"comedi_find_subdevice_by_type", _wrap_comedi_find_subdevice_by_type, METH_VARARGS },
+        { (char *)"comedi_get_subdevice_flags", _wrap_comedi_get_subdevice_flags, METH_VARARGS },
+        { (char *)"comedi_get_n_channels", _wrap_comedi_get_n_channels, METH_VARARGS },
+        { (char *)"comedi_range_is_chan_specific", _wrap_comedi_range_is_chan_specific, METH_VARARGS },
+        { (char *)"comedi_maxdata_is_chan_specific", _wrap_comedi_maxdata_is_chan_specific, METH_VARARGS },
+        { (char *)"comedi_get_maxdata", _wrap_comedi_get_maxdata, METH_VARARGS },
+        { (char *)"comedi_get_n_ranges", _wrap_comedi_get_n_ranges, METH_VARARGS },
+        { (char *)"comedi_get_range", _wrap_comedi_get_range, METH_VARARGS },
+        { (char *)"comedi_find_range", _wrap_comedi_find_range, METH_VARARGS },
+        { (char *)"comedi_get_buffer_size", _wrap_comedi_get_buffer_size, METH_VARARGS },
+        { (char *)"comedi_get_max_buffer_size", _wrap_comedi_get_max_buffer_size, METH_VARARGS },
+        { (char *)"comedi_set_buffer_size", _wrap_comedi_set_buffer_size, METH_VARARGS },
+        { (char *)"comedi_do_insnlist", _wrap_comedi_do_insnlist, METH_VARARGS },
+        { (char *)"comedi_do_insn", _wrap_comedi_do_insn, METH_VARARGS },
+        { (char *)"comedi_lock", _wrap_comedi_lock, METH_VARARGS },
+        { (char *)"comedi_unlock", _wrap_comedi_unlock, METH_VARARGS },
+        { (char *)"comedi_to_phys", _wrap_comedi_to_phys, METH_VARARGS },
+        { (char *)"comedi_from_phys", _wrap_comedi_from_phys, METH_VARARGS },
+        { (char *)"comedi_sampl_to_phys", _wrap_comedi_sampl_to_phys, METH_VARARGS },
+        { (char *)"comedi_sampl_from_phys", _wrap_comedi_sampl_from_phys, METH_VARARGS },
+        { (char *)"comedi_data_read", _wrap_comedi_data_read, METH_VARARGS },
+        { (char *)"comedi_data_read_n", _wrap_comedi_data_read_n, METH_VARARGS },
+        { (char *)"comedi_data_read_hint", _wrap_comedi_data_read_hint, METH_VARARGS },
+        { (char *)"comedi_data_read_delayed", _wrap_comedi_data_read_delayed, METH_VARARGS },
+        { (char *)"comedi_data_write", _wrap_comedi_data_write, METH_VARARGS },
+        { (char *)"comedi_dio_config", _wrap_comedi_dio_config, METH_VARARGS },
+        { (char *)"comedi_dio_read", _wrap_comedi_dio_read, METH_VARARGS },
+        { (char *)"comedi_dio_write", _wrap_comedi_dio_write, METH_VARARGS },
+        { (char *)"comedi_dio_bitfield", _wrap_comedi_dio_bitfield, METH_VARARGS },
+        { (char *)"comedi_sv_init", _wrap_comedi_sv_init, METH_VARARGS },
+        { (char *)"comedi_sv_update", _wrap_comedi_sv_update, METH_VARARGS },
+        { (char *)"comedi_sv_measure", _wrap_comedi_sv_measure, METH_VARARGS },
+        { (char *)"comedi_get_cmd_src_mask", _wrap_comedi_get_cmd_src_mask, METH_VARARGS },
+        { (char *)"comedi_get_cmd_generic_timed", _wrap_comedi_get_cmd_generic_timed, METH_VARARGS },
+        { (char *)"comedi_cancel", _wrap_comedi_cancel, METH_VARARGS },
+        { (char *)"comedi_command", _wrap_comedi_command, METH_VARARGS },
+        { (char *)"comedi_command_test", _wrap_comedi_command_test, METH_VARARGS },
+        { (char *)"comedi_poll", _wrap_comedi_poll, METH_VARARGS },
+        { (char *)"comedi_set_max_buffer_size", _wrap_comedi_set_max_buffer_size, METH_VARARGS },
+        { (char *)"comedi_get_buffer_contents", _wrap_comedi_get_buffer_contents, METH_VARARGS },
+        { (char *)"comedi_mark_buffer_read", _wrap_comedi_mark_buffer_read, METH_VARARGS },
+        { (char *)"comedi_get_buffer_offset", _wrap_comedi_get_buffer_offset, METH_VARARGS },
+        { NULL, NULL }
+};
+
+
+/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */
+
+static void *_p_chanlistTo_p_unsigned_int(void *x) {
+    return (void *)((unsigned int *)  ((chanlist *) x));
+}
+static swig_type_info _swigt__p_lsampl_t[] = {{"_p_lsampl_t", 0, "lsampl_t *", 0},{"_p_chanlist"},{"_p_lsampl_t"},{"_p_unsigned_int"},{0}};
+static swig_type_info _swigt__p_sampl_t[] = {{"_p_sampl_t", 0, "sampl_t *", 0},{"_p_sampl_t"},{0}};
+static swig_type_info _swigt__p_double[] = {{"_p_double", 0, "double *", 0},{"_p_double"},{0}};
+static swig_type_info _swigt__p_comedi_range[] = {{"_p_comedi_range", 0, "comedi_range *", 0},{"_p_comedi_range"},{0}};
+static swig_type_info _swigt__p_unsigned_int[] = {{"_p_unsigned_int", 0, "unsigned int *", 0},{"_p_chanlist", _p_chanlistTo_p_unsigned_int},{"_p_lsampl_t"},{"_p_unsigned_int"},{0}};
+static swig_type_info _swigt__p_void[] = {{"_p_void", 0, "void *", 0},{"_p_void"},{0}};
+static swig_type_info _swigt__p_comedi_subdinfo_struct[] = {{"_p_comedi_subdinfo_struct", 0, "comedi_subdinfo_struct *", 0},{"_p_comedi_subdinfo_struct"},{0}};
+static swig_type_info _swigt__p_comedi_krange_struct[] = {{"_p_comedi_krange_struct", 0, "comedi_krange_struct *", 0},{"_p_comedi_krange_struct"},{0}};
+static swig_type_info _swigt__p_comedi_rangeinfo_struct[] = {{"_p_comedi_rangeinfo_struct", 0, "comedi_rangeinfo_struct *", 0},{"_p_comedi_rangeinfo_struct"},{0}};
+static swig_type_info _swigt__p_comedi_chaninfo_struct[] = {{"_p_comedi_chaninfo_struct", 0, "comedi_chaninfo_struct *", 0},{"_p_comedi_chaninfo_struct"},{0}};
+static swig_type_info _swigt__p_comedi_cmd_struct[] = {{"_p_comedi_cmd_struct", 0, "comedi_cmd_struct *", 0},{"_p_comedi_cmd_struct"},{"_p_comedi_cmd"},{0}};
+static swig_type_info _swigt__p_comedi_insnlist_struct[] = {{"_p_comedi_insnlist_struct", 0, "comedi_insnlist_struct *", 0},{"_p_comedi_insnlist"},{"_p_comedi_insnlist_struct"},{0}};
+static swig_type_info _swigt__p_comedi_insn_struct[] = {{"_p_comedi_insn_struct", 0, "comedi_insn_struct *", 0},{"_p_comedi_insn_struct"},{"_p_comedi_insn"},{0}};
+static swig_type_info _swigt__p_comedi_trig_struct[] = {{"_p_comedi_trig_struct", 0, "comedi_trig_struct *", 0},{"_p_comedi_trig_struct"},{0}};
+static swig_type_info _swigt__p_comedi_devinfo_struct[] = {{"_p_comedi_devinfo_struct", 0, "comedi_devinfo_struct *", 0},{"_p_comedi_devinfo_struct"},{0}};
+static swig_type_info _swigt__p_char[] = {{"_p_char", 0, "char *", 0},{"_p_char"},{0}};
+static swig_type_info _swigt__p_comedi_devconfig_struct[] = {{"_p_comedi_devconfig_struct", 0, "comedi_devconfig_struct *", 0},{"_p_comedi_devconfig_struct"},{0}};
+static swig_type_info _swigt__p_comedi_bufconfig_struct[] = {{"_p_comedi_bufconfig_struct", 0, "comedi_bufconfig_struct *", 0},{"_p_comedi_bufconfig_struct"},{0}};
+static swig_type_info _swigt__p_comedi_bufinfo_struct[] = {{"_p_comedi_bufinfo_struct", 0, "comedi_bufinfo_struct *", 0},{"_p_comedi_bufinfo_struct"},{0}};
+static swig_type_info _swigt__p_comedi_sv_t[] = {{"_p_comedi_sv_t", 0, "comedi_sv_t *", 0},{"_p_comedi_sv_t"},{0}};
+static swig_type_info _swigt__p_chanlist[] = {{"_p_chanlist", 0, "chanlist *", 0},{"_p_chanlist"},{0}};
+static swig_type_info _swigt__p_comedi_insn[] = {{"_p_comedi_insn", 0, "comedi_insn *", 0},{"_p_comedi_insn_struct"},{"_p_comedi_insn"},{0}};
+static swig_type_info _swigt__p_comedi_insnlist[] = {{"_p_comedi_insnlist", 0, "comedi_insnlist *", 0},{"_p_comedi_insnlist"},{"_p_comedi_insnlist_struct"},{0}};
+static swig_type_info _swigt__p_comedi_t[] = {{"_p_comedi_t", 0, "comedi_t *", 0},{"_p_comedi_t"},{0}};
+static swig_type_info _swigt__p_int[] = {{"_p_int", 0, "int *", 0},{"_p_int"},{0}};
+static swig_type_info _swigt__p_comedi_cmd[] = {{"_p_comedi_cmd", 0, "comedi_cmd *", 0},{"_p_comedi_cmd"},{"_p_comedi_cmd_struct"},{0}};
+
+static swig_type_info *swig_types_initial[] = {
+_swigt__p_lsampl_t, 
+_swigt__p_sampl_t, 
+_swigt__p_double, 
+_swigt__p_comedi_range, 
+_swigt__p_unsigned_int, 
+_swigt__p_void, 
+_swigt__p_comedi_subdinfo_struct, 
+_swigt__p_comedi_krange_struct, 
+_swigt__p_comedi_rangeinfo_struct, 
+_swigt__p_comedi_chaninfo_struct, 
+_swigt__p_comedi_cmd_struct, 
+_swigt__p_comedi_insnlist_struct, 
+_swigt__p_comedi_insn_struct, 
+_swigt__p_comedi_trig_struct, 
+_swigt__p_comedi_devinfo_struct, 
+_swigt__p_char, 
+_swigt__p_comedi_devconfig_struct, 
+_swigt__p_comedi_bufconfig_struct, 
+_swigt__p_comedi_bufinfo_struct, 
+_swigt__p_comedi_sv_t, 
+_swigt__p_chanlist, 
+_swigt__p_comedi_insn, 
+_swigt__p_comedi_insnlist, 
+_swigt__p_comedi_t, 
+_swigt__p_int, 
+_swigt__p_comedi_cmd, 
+0
+};
+
+
+/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */
+
+static swig_const_info swig_const_table[] = {
+{ SWIG_PY_INT,     (char *)"COMEDI_MAJOR", (long) 98, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"COMEDI_NDEVICES", (long) 4, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"COMEDI_NDEVCONFOPTS", (long) 32, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"COMEDI_NAMELEN", (long) 20, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"CR_FLAGS_MASK", (long) 0xfc000000, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"CR_ALT_FILTER", (long) (1<<26), 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"CR_DITHER", (long) (1<<26), 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"CR_DEGLITCH", (long) (1<<26), 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"CR_ALT_SOURCE", (long) (1<<27), 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"CR_EDGE", (long) (1<<30), 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"CR_INVERT", (long) (1<<31), 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"AREF_GROUND", (long) 0x00, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"AREF_COMMON", (long) 0x01, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"AREF_DIFF", (long) 0x02, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"AREF_OTHER", (long) 0x03, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"GPCT_RESET", (long) 0x0001, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"GPCT_SET_SOURCE", (long) 0x0002, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"GPCT_SET_GATE", (long) 0x0004, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"GPCT_SET_DIRECTION", (long) 0x0008, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"GPCT_SET_OPERATION", (long) 0x0010, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"GPCT_ARM", (long) 0x0020, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"GPCT_DISARM", (long) 0x0040, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"GPCT_GET_INT_CLK_FRQ", (long) 0x0080, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"GPCT_INT_CLOCK", (long) 0x0001, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"GPCT_EXT_PIN", (long) 0x0002, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"GPCT_NO_GATE", (long) 0x0004, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"GPCT_UP", (long) 0x0008, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"GPCT_DOWN", (long) 0x0010, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"GPCT_HWUD", (long) 0x0020, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"GPCT_SIMPLE_EVENT", (long) 0x0040, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"GPCT_SINGLE_PERIOD", (long) 0x0080, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"GPCT_SINGLE_PW", (long) 0x0100, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"GPCT_CONT_PULSE_OUT", (long) 0x0200, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"GPCT_SINGLE_PULSE_OUT", (long) 0x0400, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"INSN_MASK_WRITE", (long) 0x8000000, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"INSN_MASK_READ", (long) 0x4000000, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"INSN_MASK_SPECIAL", (long) 0x2000000, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"INSN_READ", (long) (0|0x4000000), 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"INSN_WRITE", (long) (1|0x8000000), 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"INSN_BITS", (long) (2|0x4000000|0x8000000), 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"INSN_CONFIG", (long) (3|0x4000000|0x8000000), 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"INSN_GTOD", (long) (4|0x4000000|0x2000000), 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"INSN_WAIT", (long) (5|0x8000000|0x2000000), 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"INSN_INTTRIG", (long) (6|0x8000000|0x2000000), 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"TRIG_BOGUS", (long) 0x0001, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"TRIG_DITHER", (long) 0x0002, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"TRIG_DEGLITCH", (long) 0x0004, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"TRIG_CONFIG", (long) 0x0010, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"CMDF_PRIORITY", (long) 0x00000008, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"TRIG_RT", (long) 0x00000008, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"TRIG_WAKE_EOS", (long) 0x00000020, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"CMDF_WRITE", (long) 0x00000040, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"TRIG_WRITE", (long) 0x00000040, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"CMDF_RAWDATA", (long) 0x00000080, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"COMEDI_EV_START", (long) 0x00040000, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"COMEDI_EV_SCAN_BEGIN", (long) 0x00080000, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"COMEDI_EV_CONVERT", (long) 0x00100000, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"COMEDI_EV_SCAN_END", (long) 0x00200000, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"COMEDI_EV_STOP", (long) 0x00400000, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"TRIG_ROUND_MASK", (long) 0x00030000, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"TRIG_ROUND_NEAREST", (long) 0x00000000, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"TRIG_ROUND_DOWN", (long) 0x00010000, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"TRIG_ROUND_UP", (long) 0x00020000, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"TRIG_ROUND_UP_NEXT", (long) 0x00030000, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"TRIG_ANY", (long) 0xffffffff, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"TRIG_INVALID", (long) 0x00000000, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"TRIG_NONE", (long) 0x00000001, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"TRIG_NOW", (long) 0x00000002, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"TRIG_FOLLOW", (long) 0x00000004, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"TRIG_TIME", (long) 0x00000008, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"TRIG_TIMER", (long) 0x00000010, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"TRIG_COUNT", (long) 0x00000020, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"TRIG_EXT", (long) 0x00000040, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"TRIG_INT", (long) 0x00000080, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"TRIG_OTHER", (long) 0x00000100, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"SDF_BUSY", (long) 0x0001, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"SDF_BUSY_OWNER", (long) 0x0002, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"SDF_LOCKED", (long) 0x0004, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"SDF_LOCK_OWNER", (long) 0x0008, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"SDF_MAXDATA", (long) 0x0010, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"SDF_FLAGS", (long) 0x0020, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"SDF_RANGETYPE", (long) 0x0040, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"SDF_MODE0", (long) 0x0080, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"SDF_MODE1", (long) 0x0100, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"SDF_MODE2", (long) 0x0200, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"SDF_MODE3", (long) 0x0400, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"SDF_MODE4", (long) 0x0800, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"SDF_CMD", (long) 0x1000, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"SDF_READABLE", (long) 0x00010000, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"SDF_WRITABLE", (long) 0x00020000, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"SDF_WRITEABLE", (long) 0x00020000, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"SDF_INTERNAL", (long) 0x00040000, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"SDF_RT", (long) 0x00080000, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"SDF_GROUND", (long) 0x00100000, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"SDF_COMMON", (long) 0x00200000, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"SDF_DIFF", (long) 0x00400000, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"SDF_OTHER", (long) 0x00800000, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"SDF_DITHER", (long) 0x01000000, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"SDF_DEGLITCH", (long) 0x02000000, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"SDF_MMAP", (long) 0x04000000, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"SDF_RUNNING", (long) 0x08000000, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"SDF_LSAMPL", (long) 0x10000000, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"SDF_PACKED", (long) 0x20000000, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"COMEDI_SUBD_UNUSED", (long) 0, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"COMEDI_SUBD_AI", (long) 1, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"COMEDI_SUBD_AO", (long) 2, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"COMEDI_SUBD_DI", (long) 3, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"COMEDI_SUBD_DO", (long) 4, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"COMEDI_SUBD_DIO", (long) 5, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"COMEDI_SUBD_COUNTER", (long) 6, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"COMEDI_SUBD_TIMER", (long) 7, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"COMEDI_SUBD_MEMORY", (long) 8, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"COMEDI_SUBD_CALIB", (long) 9, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"COMEDI_SUBD_PROC", (long) 10, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"COMEDI_INPUT", (long) 0, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"COMEDI_OUTPUT", (long) 1, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"COMEDI_OPENDRAIN", (long) 2, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"INSN_CONFIG_ANALOG_TRIG", (long) 0x10, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"INSN_CONFIG_ALT_SOURCE", (long) 0x14, 0, 0, 0},
+{ SWIG_PY_STRING,  (char*)"CIO", 0, 0, (void *)"d", 0},
+{ SWIG_PY_INT,     (char *)"RF_EXTERNAL", (long) (1<<8), 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"UNIT_volt", (long) 0, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"UNIT_mA", (long) 1, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"UNIT_none", (long) 2, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"COMEDI_CB_EOS", (long) 1, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"COMEDI_CB_EOA", (long) 2, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"COMEDI_CB_BLOCK", (long) 4, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"COMEDI_CB_EOBUF", (long) 8, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"COMEDI_CB_ERROR", (long) 16, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"COMEDI_OOR_NUMBER", (long) COMEDI_OOR_NUMBER, 0, 0, 0},
+{ SWIG_PY_INT,     (char *)"COMEDI_OOR_NAN", (long) COMEDI_OOR_NAN, 0, 0, 0},
+{0}};
+
+#ifdef __cplusplus
+}
+#endif
+
+#ifdef __cplusplus
+extern "C"
+#endif
+SWIGEXPORT(void) SWIG_init(void) {
+    static PyObject *SWIG_globals = 0; 
+    static int       typeinit = 0;
+    PyObject *m, *d;
+    int       i;
+    if (!SWIG_globals) SWIG_globals = SWIG_newvarlink();
+    m = Py_InitModule((char *) SWIG_name, SwigMethods);
+    d = PyModule_GetDict(m);
+    
+    if (!typeinit) {
+        for (i = 0; swig_types_initial[i]; i++) {
+            swig_types[i] = SWIG_TypeRegister(swig_types_initial[i]);
+        }
+        typeinit = 1;
+    }
+    SWIG_InstallConstants(d,swig_const_table);
+    
+}
+
diff --git a/python/comedi_wrap.doc b/python/comedi_wrap.doc
new file mode 100644 (file)
index 0000000..b0b6fd1
--- /dev/null
@@ -0,0 +1,1065 @@
+comedi_wrap.c
+
+[ Python Module : comedi ]
+
+
+COMEDI_MAJOR = 98
+        [ Constant: int  ]
+        maximum number of minor devices. This can be increased, although
+        kernel structures are currently statically allocated, thus you
+        don't want this to be much more than you actually use. 
+
+COMEDI_NDEVICES = 4
+        [ Constant: int  ]
+        number of config options in the config structure 
+
+COMEDI_NDEVCONFOPTS = 32
+        [ Constant: int  ]
+        max length of device and driver names 
+
+COMEDI_NAMELEN = 20
+        [ Constant: int  ]
+
+CR_FLAGS_MASK = 0xfc000000
+        [ Constant: int  ]
+
+CR_ALT_FILTER = (1<<26)
+        [ Constant: int  ]
+
+CR_DITHER = ((1<<26))
+        [ Constant: int  ]
+
+CR_DEGLITCH = ((1<<26))
+        [ Constant: int  ]
+
+CR_ALT_SOURCE = (1<<27)
+        [ Constant: int  ]
+
+CR_EDGE = (1<<30)
+        [ Constant: int  ]
+
+CR_INVERT = (1<<31)
+        [ Constant: int  ]
+        analog ref = analog ground 
+
+AREF_GROUND = 0x00
+        [ Constant: int  ]
+        analog ref = analog common 
+
+AREF_COMMON = 0x01
+        [ Constant: int  ]
+        analog ref = differential 
+
+AREF_DIFF = 0x02
+        [ Constant: int  ]
+        analog ref = other (undefined) 
+
+AREF_OTHER = 0x03
+        [ Constant: int  ]
+        counters -- these are arbitrary values 
+
+GPCT_RESET = 0x0001
+        [ Constant: int  ]
+
+GPCT_SET_SOURCE = 0x0002
+        [ Constant: int  ]
+
+GPCT_SET_GATE = 0x0004
+        [ Constant: int  ]
+
+GPCT_SET_DIRECTION = 0x0008
+        [ Constant: int  ]
+
+GPCT_SET_OPERATION = 0x0010
+        [ Constant: int  ]
+
+GPCT_ARM = 0x0020
+        [ Constant: int  ]
+
+GPCT_DISARM = 0x0040
+        [ Constant: int  ]
+
+GPCT_GET_INT_CLK_FRQ = 0x0080
+        [ Constant: int  ]
+
+GPCT_INT_CLOCK = 0x0001
+        [ Constant: int  ]
+
+GPCT_EXT_PIN = 0x0002
+        [ Constant: int  ]
+
+GPCT_NO_GATE = 0x0004
+        [ Constant: int  ]
+
+GPCT_UP = 0x0008
+        [ Constant: int  ]
+
+GPCT_DOWN = 0x0010
+        [ Constant: int  ]
+
+GPCT_HWUD = 0x0020
+        [ Constant: int  ]
+
+GPCT_SIMPLE_EVENT = 0x0040
+        [ Constant: int  ]
+
+GPCT_SINGLE_PERIOD = 0x0080
+        [ Constant: int  ]
+
+GPCT_SINGLE_PW = 0x0100
+        [ Constant: int  ]
+
+GPCT_CONT_PULSE_OUT = 0x0200
+        [ Constant: int  ]
+
+GPCT_SINGLE_PULSE_OUT = 0x0400
+        [ Constant: int  ]
+
+INSN_MASK_WRITE = 0x8000000
+        [ Constant: int  ]
+
+INSN_MASK_READ = 0x4000000
+        [ Constant: int  ]
+
+INSN_MASK_SPECIAL = 0x2000000
+        [ Constant: int  ]
+
+INSN_READ = (0|(0x4000000))
+        [ Constant: int  ]
+
+INSN_WRITE = (1|(0x8000000))
+        [ Constant: int  ]
+
+INSN_BITS = (2|(0x4000000)|(0x8000000))
+        [ Constant: int  ]
+
+INSN_CONFIG = (3|(0x4000000)|(0x8000000))
+        [ Constant: int  ]
+
+INSN_GTOD = (4|(0x4000000)|(0x2000000))
+        [ Constant: int  ]
+
+INSN_WAIT = (5|(0x8000000)|(0x2000000))
+        [ Constant: int  ]
+
+INSN_INTTRIG = (6|(0x8000000)|(0x2000000))
+        [ Constant: int  ]
+        trigger flags These flags are used in comedi_trig structures 
+
+TRIG_BOGUS = 0x0001
+        [ Constant: int  ]
+        enable dithering 
+
+TRIG_DITHER = 0x0002
+        [ Constant: int  ]
+        enable deglitching 
+
+TRIG_DEGLITCH = 0x0004
+        [ Constant: int  ]
+        perform configuration, not triggering 
+
+TRIG_CONFIG = 0x0010
+        [ Constant: int  ]
+        #define TRIG_WAKE_EOS 0x0020 /* wake up on end-of-scan events */
+        #define TRIG_WRITE 0x0040 /* write to bidirectional devices */
+
+CMDF_PRIORITY = 0x00000008
+        [ Constant: int  ]
+        compatibility definition 
+
+TRIG_RT = (0x00000008)
+        [ Constant: int  ]
+        legacy definition for COMEDI_EV_SCAN_END 
+
+TRIG_WAKE_EOS = 0x00000020
+        [ Constant: int  ]
+
+CMDF_WRITE = 0x00000040
+        [ Constant: int  ]
+        compatibility definition 
+
+TRIG_WRITE = (0x00000040)
+        [ Constant: int  ]
+
+CMDF_RAWDATA = 0x00000080
+        [ Constant: int  ]
+
+COMEDI_EV_START = 0x00040000
+        [ Constant: int  ]
+
+COMEDI_EV_SCAN_BEGIN = 0x00080000
+        [ Constant: int  ]
+
+COMEDI_EV_CONVERT = 0x00100000
+        [ Constant: int  ]
+
+COMEDI_EV_SCAN_END = 0x00200000
+        [ Constant: int  ]
+
+COMEDI_EV_STOP = 0x00400000
+        [ Constant: int  ]
+
+TRIG_ROUND_MASK = 0x00030000
+        [ Constant: int  ]
+
+TRIG_ROUND_NEAREST = 0x00000000
+        [ Constant: int  ]
+
+TRIG_ROUND_DOWN = 0x00010000
+        [ Constant: int  ]
+
+TRIG_ROUND_UP = 0x00020000
+        [ Constant: int  ]
+
+TRIG_ROUND_UP_NEXT = 0x00030000
+        [ Constant: int  ]
+        trigger sources 
+
+TRIG_ANY = 0xffffffff
+        [ Constant: int  ]
+
+TRIG_INVALID = 0x00000000
+        [ Constant: int  ]
+        never trigger 
+
+TRIG_NONE = 0x00000001
+        [ Constant: int  ]
+        trigger now + N ns 
+
+TRIG_NOW = 0x00000002
+        [ Constant: int  ]
+        trigger on next lower level trig 
+
+TRIG_FOLLOW = 0x00000004
+        [ Constant: int  ]
+        trigger at time N ns 
+
+TRIG_TIME = 0x00000008
+        [ Constant: int  ]
+        trigger at rate N ns 
+
+TRIG_TIMER = 0x00000010
+        [ Constant: int  ]
+        trigger when count reaches N 
+
+TRIG_COUNT = 0x00000020
+        [ Constant: int  ]
+        trigger on external signal N 
+
+TRIG_EXT = 0x00000040
+        [ Constant: int  ]
+        trigger on comedi-internal signal N 
+
+TRIG_INT = 0x00000080
+        [ Constant: int  ]
+        driver defined 
+
+TRIG_OTHER = 0x00000100
+        [ Constant: int  ]
+        subdevice flags 
+
+SDF_BUSY = 0x0001
+        [ Constant: int  ]
+        device is busy with your job 
+
+SDF_BUSY_OWNER = 0x0002
+        [ Constant: int  ]
+        subdevice is locked 
+
+SDF_LOCKED = 0x0004
+        [ Constant: int  ]
+        you own lock 
+
+SDF_LOCK_OWNER = 0x0008
+        [ Constant: int  ]
+        maxdata depends on channel 
+
+SDF_MAXDATA = 0x0010
+        [ Constant: int  ]
+        flags depend on channel 
+
+SDF_FLAGS = 0x0020
+        [ Constant: int  ]
+        range type depends on channel 
+
+SDF_RANGETYPE = 0x0040
+        [ Constant: int  ]
+        can do mode 0 
+
+SDF_MODE0 = 0x0080
+        [ Constant: int  ]
+        can do mode 1 
+
+SDF_MODE1 = 0x0100
+        [ Constant: int  ]
+        can do mode 2 
+
+SDF_MODE2 = 0x0200
+        [ Constant: int  ]
+        can do mode 3 
+
+SDF_MODE3 = 0x0400
+        [ Constant: int  ]
+        can do mode 4 
+
+SDF_MODE4 = 0x0800
+        [ Constant: int  ]
+        can do commands 
+
+SDF_CMD = 0x1000
+        [ Constant: int  ]
+        subdevice can be read (e.g. analog input) 
+
+SDF_READABLE = 0x00010000
+        [ Constant: int  ]
+        subdevice can be written (e.g. analog output) 
+
+SDF_WRITABLE = 0x00020000
+        [ Constant: int  ]
+        spelling error in API 
+
+SDF_WRITEABLE = (0x00020000)
+        [ Constant: int  ]
+        subdevice does not have externally visible lines 
+
+SDF_INTERNAL = 0x00040000
+        [ Constant: int  ]
+        subdevice is RT capable 
+
+SDF_RT = 0x00080000
+        [ Constant: int  ]
+        can do aref=ground 
+
+SDF_GROUND = 0x00100000
+        [ Constant: int  ]
+        can do aref=common 
+
+SDF_COMMON = 0x00200000
+        [ Constant: int  ]
+        can do aref=diff 
+
+SDF_DIFF = 0x00400000
+        [ Constant: int  ]
+        can do aref=other 
+
+SDF_OTHER = 0x00800000
+        [ Constant: int  ]
+        can do dithering 
+
+SDF_DITHER = 0x01000000
+        [ Constant: int  ]
+        can do deglitching 
+
+SDF_DEGLITCH = 0x02000000
+        [ Constant: int  ]
+        can do mmap() 
+
+SDF_MMAP = 0x04000000
+        [ Constant: int  ]
+        subdevice is acquiring data 
+
+SDF_RUNNING = 0x08000000
+        [ Constant: int  ]
+        subdevice uses 32-bit samples 
+
+SDF_LSAMPL = 0x10000000
+        [ Constant: int  ]
+        subdevice can do packed DIO 
+
+SDF_PACKED = 0x20000000
+        [ Constant: int  ]
+        subdevice types 
+
+COMEDI_SUBD_UNUSED = 0
+        [ Constant: int  ]
+
+COMEDI_SUBD_AI = 1
+        [ Constant: int  ]
+
+COMEDI_SUBD_AO = 2
+        [ Constant: int  ]
+
+COMEDI_SUBD_DI = 3
+        [ Constant: int  ]
+
+COMEDI_SUBD_DO = 4
+        [ Constant: int  ]
+
+COMEDI_SUBD_DIO = 5
+        [ Constant: int  ]
+
+COMEDI_SUBD_COUNTER = 6
+        [ Constant: int  ]
+
+COMEDI_SUBD_TIMER = 7
+        [ Constant: int  ]
+
+COMEDI_SUBD_MEMORY = 8
+        [ Constant: int  ]
+
+COMEDI_SUBD_CALIB = 9
+        [ Constant: int  ]
+        processor, DSP 
+
+COMEDI_SUBD_PROC = 10
+        [ Constant: int  ]
+        configuration instructions 
+
+COMEDI_INPUT = 0
+        [ Constant: int  ]
+
+COMEDI_OUTPUT = 1
+        [ Constant: int  ]
+
+COMEDI_OPENDRAIN = 2
+        [ Constant: int  ]
+
+INSN_CONFIG_ANALOG_TRIG = 0x10
+        [ Constant: int  ]
+        #define INSN_CONFIG_WAVEFORM 0x11 #define INSN_CONFIG_TRIG 0x12
+        #define INSN_CONFIG_COUNTER 0x13
+
+INSN_CONFIG_ALT_SOURCE = 0x14
+        [ Constant: int  ]
+        #define INSN_CONFIG_DIGITAL_TRIG 0x15 #define INSN_CONFIG_BLOCK_SIZE
+        0x16
+
+CIO = d
+        [ Constant: char * ]
+
+1.  class comedi_trig_struct
+============================
+[ created from struct comedi_trig_struct ]
+
+
+self.subdev
+        [ Member data: returns unsigned int  ]
+        subdevice 
+
+self.mode
+        [ Member data: returns unsigned int  ]
+        mode 
+
+self.flags
+        [ Member data: returns unsigned int  ]
+
+self.n_chan
+        [ Member data: returns unsigned int  ]
+        number of channels 
+
+self.chanlist
+        [ Member data: returns unsigned int * ]
+        channel/range list 
+
+self.data
+        [ Member data: returns sampl_t * ]
+        data list, size depends on subd flags 
+
+self.n
+        [ Member data: returns unsigned int  ]
+        number of scans 
+
+self.trigsrc
+        [ Member data: returns unsigned int  ]
+
+self.trigvar
+        [ Member data: returns unsigned int  ]
+
+self.trigvar1
+        [ Member data: returns unsigned int  ]
+
+self.data_len
+        [ Member data: returns unsigned int  ]
+
+self.unused
+        [ Member data: returns unsigned int * ]
+
+comedi_trig_struct()
+        [ Constructor: returns struct comedi_trig_struct * ]
+
+del this
+        [ Destructor: returns void  ]
+
+2.  class comedi_insn_struct
+============================
+[ created from struct comedi_insn_struct ]
+
+
+self.insn
+        [ Member data: returns unsigned int  ]
+
+self.n
+        [ Member data: returns unsigned int  ]
+
+self.data
+        [ Member data: returns lsampl_t * ]
+
+self.subdev
+        [ Member data: returns unsigned int  ]
+
+self.chanspec
+        [ Member data: returns unsigned int  ]
+
+self.unused
+        [ Member data: returns unsigned int * ]
+
+comedi_insn_struct()
+        [ Constructor: returns struct comedi_insn_struct * ]
+
+del this
+        [ Destructor: returns void  ]
+
+3.  class comedi_insnlist_struct
+================================
+[ created from struct comedi_insnlist_struct ]
+
+
+self.n_insns
+        [ Member data: returns unsigned int  ]
+
+self.insns
+        [ Member data: returns comedi_insn * ]
+
+comedi_insnlist_struct()
+        [ Constructor: returns struct comedi_insnlist_struct * ]
+
+del this
+        [ Destructor: returns void  ]
+
+4.  class comedi_cmd_struct
+===========================
+[ created from struct comedi_cmd_struct ]
+
+
+self.subdev
+        [ Member data: returns unsigned int  ]
+
+self.flags
+        [ Member data: returns unsigned int  ]
+
+self.start_src
+        [ Member data: returns unsigned int  ]
+
+self.start_arg
+        [ Member data: returns unsigned int  ]
+
+self.scan_begin_src
+        [ Member data: returns unsigned int  ]
+
+self.scan_begin_arg
+        [ Member data: returns unsigned int  ]
+
+self.convert_src
+        [ Member data: returns unsigned int  ]
+
+self.convert_arg
+        [ Member data: returns unsigned int  ]
+
+self.scan_end_src
+        [ Member data: returns unsigned int  ]
+
+self.scan_end_arg
+        [ Member data: returns unsigned int  ]
+
+self.stop_src
+        [ Member data: returns unsigned int  ]
+
+self.stop_arg
+        [ Member data: returns unsigned int  ]
+
+self.chanlist
+        [ Member data: returns unsigned int * ]
+        channel/range list 
+
+self.chanlist_len
+        [ Member data: returns unsigned int  ]
+
+self.data
+        [ Member data: returns sampl_t * ]
+        data list, size depends on subd flags 
+
+self.data_len
+        [ Member data: returns unsigned int  ]
+
+comedi_cmd_struct()
+        [ Constructor: returns struct comedi_cmd_struct * ]
+
+del this
+        [ Destructor: returns void  ]
+
+5.  class comedi_chaninfo_struct
+================================
+[ created from struct comedi_chaninfo_struct ]
+
+
+self.subdev
+        [ Member data: returns unsigned int  ]
+
+self.maxdata_list
+        [ Member data: returns lsampl_t * ]
+
+self.flaglist
+        [ Member data: returns unsigned int * ]
+
+self.rangelist
+        [ Member data: returns unsigned int * ]
+
+self.unused
+        [ Member data: returns unsigned int * ]
+
+comedi_chaninfo_struct()
+        [ Constructor: returns struct comedi_chaninfo_struct * ]
+
+del this
+        [ Destructor: returns void  ]
+
+6.  class comedi_rangeinfo_struct
+=================================
+[ created from struct comedi_rangeinfo_struct ]
+
+
+self.range_type
+        [ Member data: returns unsigned int  ]
+
+self.range_ptr
+        [ Member data: returns void * ]
+
+comedi_rangeinfo_struct()
+        [ Constructor: returns struct comedi_rangeinfo_struct * ]
+
+del this
+        [ Destructor: returns void  ]
+
+7.  class comedi_krange_struct
+==============================
+[ created from struct comedi_krange_struct ]
+
+
+self.min
+        [ Member data: returns int  ]
+        fixed point, multiply by 1e-6 
+
+self.max
+        [ Member data: returns int  ]
+        fixed point, multiply by 1e-6 
+
+self.flags
+        [ Member data: returns unsigned int  ]
+
+comedi_krange_struct()
+        [ Constructor: returns struct comedi_krange_struct * ]
+
+del this
+        [ Destructor: returns void  ]
+
+8.  class comedi_subdinfo_struct
+================================
+[ created from struct comedi_subdinfo_struct ]
+
+
+self.type
+        [ Member data: returns unsigned int  ]
+
+self.n_chan
+        [ Member data: returns unsigned int  ]
+
+self.subd_flags
+        [ Member data: returns unsigned int  ]
+
+self.timer_type
+        [ Member data: returns unsigned int  ]
+
+self.len_chanlist
+        [ Member data: returns unsigned int  ]
+
+self.maxdata
+        [ Member data: returns lsampl_t  ]
+
+self.flags
+        [ Member data: returns unsigned int  ]
+        channel flags 
+
+self.range_type
+        [ Member data: returns unsigned int  ]
+        lookup in kernel 
+
+self.unused
+        [ Member data: returns unsigned int * ]
+
+comedi_subdinfo_struct()
+        [ Constructor: returns struct comedi_subdinfo_struct * ]
+
+del this
+        [ Destructor: returns void  ]
+
+9.  class comedi_devinfo_struct
+===============================
+[ created from struct comedi_devinfo_struct ]
+
+
+self.version_code
+        [ Member data: returns unsigned int  ]
+
+self.n_subdevs
+        [ Member data: returns unsigned int  ]
+
+self.driver_name
+        [ Member data: returns char * ]
+
+self.board_name
+        [ Member data: returns char * ]
+
+self.read_subdevice
+        [ Member data: returns int  ]
+
+self.write_subdevice
+        [ Member data: returns int  ]
+
+self.unused
+        [ Member data: returns int * ]
+
+comedi_devinfo_struct()
+        [ Constructor: returns struct comedi_devinfo_struct * ]
+
+del this
+        [ Destructor: returns void  ]
+
+10.  class comedi_devconfig_struct
+==================================
+[ created from struct comedi_devconfig_struct ]
+
+
+self.board_name
+        [ Member data: returns char * ]
+
+self.options
+        [ Member data: returns int * ]
+
+comedi_devconfig_struct()
+        [ Constructor: returns struct comedi_devconfig_struct * ]
+
+del this
+        [ Destructor: returns void  ]
+
+11.  class comedi_bufconfig_struct
+==================================
+[ created from struct comedi_bufconfig_struct ]
+
+
+self.subdevice
+        [ Member data: returns unsigned int  ]
+
+self.flags
+        [ Member data: returns unsigned int  ]
+
+self.maximum_size
+        [ Member data: returns unsigned int  ]
+
+self.size
+        [ Member data: returns unsigned int  ]
+
+self.unused
+        [ Member data: returns unsigned int * ]
+
+comedi_bufconfig_struct()
+        [ Constructor: returns struct comedi_bufconfig_struct * ]
+
+del this
+        [ Destructor: returns void  ]
+
+12.  class comedi_bufinfo_struct
+================================
+[ created from struct comedi_bufinfo_struct ]
+
+
+self.subdevice
+        [ Member data: returns unsigned int  ]
+
+self.bytes_read
+        [ Member data: returns unsigned int  ]
+
+self.buf_int_ptr
+        [ Member data: returns unsigned int  ]
+
+self.buf_user_ptr
+        [ Member data: returns unsigned int  ]
+
+self.buf_int_count
+        [ Member data: returns unsigned int  ]
+
+self.buf_user_count
+        [ Member data: returns unsigned int  ]
+
+self.unused
+        [ Member data: returns unsigned int * ]
+
+comedi_bufinfo_struct()
+        [ Constructor: returns struct comedi_bufinfo_struct * ]
+
+del this
+        [ Destructor: returns void  ]
+
+----------
+
+RF_EXTERNAL = (1<<8)
+        [ Constant: int  ]
+
+UNIT_volt = 0
+        [ Constant: int  ]
+
+UNIT_mA = 1
+        [ Constant: int  ]
+
+UNIT_none = 2
+        [ Constant: int  ]
+
+COMEDI_MIN_SPEED = ((unsigned int)0xffffffff)
+        [ Constant: unsigned int  ]
+        callback stuff only relevant to kernel modules. 
+
+COMEDI_CB_EOS = 1
+        [ Constant: int  ]
+
+COMEDI_CB_EOA = 2
+        [ Constant: int  ]
+        convenient block size 
+
+COMEDI_CB_BLOCK = 4
+        [ Constant: int  ]
+        end of buffer 
+
+COMEDI_CB_EOBUF = 8
+        [ Constant: int  ]
+        card error during acquisition 
+
+COMEDI_CB_ERROR = 16
+        [ Constant: int  ]
+
+13.  class comedi_range
+=======================
+[ created from struct comedi_range ]
+
+
+self.min
+        [ Member data: returns double  ]
+
+self.max
+        [ Member data: returns double  ]
+
+self.unit
+        [ Member data: returns unsigned int  ]
+
+comedi_range()
+        [ Constructor: returns comedi_range * ]
+
+del this
+        [ Destructor: returns void  ]
+
+14.  class comedi_sv_t
+======================
+[ created from struct comedi_sv_t ]
+
+
+self.dev
+        [ Member data: returns comedi_t * ]
+
+self.subdevice
+        [ Member data: returns unsigned int  ]
+
+self.chan
+        [ Member data: returns unsigned int  ]
+
+self.range
+        [ Member data: returns int  ]
+
+self.aref
+        [ Member data: returns int  ]
+
+self.n
+        [ Member data: returns int  ]
+
+self.maxdata
+        [ Member data: returns lsampl_t  ]
+
+comedi_sv_t()
+        [ Constructor: returns comedi_sv_t * ]
+
+del this
+        [ Destructor: returns void  ]
+
+----------
+
+COMEDI_OOR_NUMBER = COMEDI_OOR_NUMBER
+        [ Constant: int  ]
+
+COMEDI_OOR_NAN = COMEDI_OOR_NAN
+        [ Constant: int  ]
+
+comedi_open(fn)
+        [ returns comedi_t * ]
+
+comedi_close(it)
+        [ returns int  ]
+
+comedi_loglevel(loglevel)
+        [ returns int  ]
+
+comedi_perror(s)
+        [ returns void  ]
+
+comedi_strerror(errnum)
+        [ returns char * ]
+
+comedi_errno()
+        [ returns int  ]
+
+comedi_fileno(it)
+        [ returns int  ]
+
+comedi_get_n_subdevices(it)
+        [ returns int  ]
+
+comedi_get_version_code(it)
+        [ returns int  ]
+
+comedi_get_driver_name(it)
+        [ returns char * ]
+
+comedi_get_board_name(it)
+        [ returns char * ]
+
+comedi_get_read_subdevice(dev)
+        [ returns int  ]
+
+comedi_get_write_subdevice(dev)
+        [ returns int  ]
+
+comedi_get_subdevice_type(it,subdevice)
+        [ returns int  ]
+
+comedi_find_subdevice_by_type(it,type,subd)
+        [ returns int  ]
+
+comedi_get_subdevice_flags(it,subdevice)
+        [ returns int  ]
+
+comedi_get_n_channels(it,subdevice)
+        [ returns int  ]
+
+comedi_range_is_chan_specific(it,subdevice)
+        [ returns int  ]
+
+comedi_maxdata_is_chan_specific(it,subdevice)
+        [ returns int  ]
+
+comedi_get_maxdata(it,subdevice,chan)
+        [ returns lsampl_t  ]
+
+comedi_get_n_ranges(it,subdevice,chan)
+        [ returns int  ]
+
+comedi_get_range(it,subdevice,chan,range)
+        [ returns comedi_range * ]
+
+comedi_find_range(it,subd,chan,unit,min,max)
+        [ returns int  ]
+
+comedi_get_buffer_size(it,subdevice)
+        [ returns int  ]
+
+comedi_get_max_buffer_size(it,subdevice)
+        [ returns int  ]
+
+comedi_set_buffer_size(it,subdevice,len)
+        [ returns int  ]
+
+comedi_do_insnlist(it,il)
+        [ returns int  ]
+
+comedi_do_insn(it,insn)
+        [ returns int  ]
+
+comedi_lock(it,subdevice)
+        [ returns int  ]
+
+comedi_unlock(it,subdevice)
+        [ returns int  ]
+
+comedi_to_phys(data,rng,maxdata)
+        [ returns double  ]
+
+comedi_from_phys(data,rng,maxdata)
+        [ returns lsampl_t  ]
+
+comedi_sampl_to_phys(dest,dst_stride,src,src_stride,rng,maxdata,n)
+        [ returns int  ]
+
+comedi_sampl_from_phys(dest,dst_stride,src,src_stride,rng,maxdata,n)
+        [ returns int  ]
+
+comedi_data_read(it,subd,chan,range,aref,data)
+        [ returns int  ]
+
+comedi_data_read_n(it,subd,chan,range,aref,data,n)
+        [ returns int  ]
+
+comedi_data_read_hint(it,subd,chan,range,aref)
+        [ returns int  ]
+
+comedi_data_read_delayed(it,subd,chan,range,aref,data,nano_sec)
+        [ returns int  ]
+
+comedi_data_write(it,subd,chan,range,aref,data)
+        [ returns int  ]
+
+comedi_dio_config(it,subd,chan,dir)
+        [ returns int  ]
+
+comedi_dio_read(it,subd,chan,bit)
+        [ returns int  ]
+
+comedi_dio_write(it,subd,chan,bit)
+        [ returns int  ]
+
+comedi_dio_bitfield(it,subd,write_mask,bits)
+        [ returns int  ]
+
+comedi_sv_init(it,dev,subd,chan)
+        [ returns int  ]
+
+comedi_sv_update(it)
+        [ returns int  ]
+
+comedi_sv_measure(it,data)
+        [ returns int  ]
+
+comedi_get_cmd_src_mask(dev,subdevice,cmd)
+        [ returns int  ]
+
+comedi_get_cmd_generic_timed(dev,subdevice,cmd,ns)
+        [ returns int  ]
+
+comedi_cancel(it,subdevice)
+        [ returns int  ]
+
+comedi_command(it,cmd)
+        [ returns int  ]
+
+comedi_command_test(it,cmd)
+        [ returns int  ]
+
+comedi_poll(dev,subdevice)
+        [ returns int  ]
+
+comedi_set_max_buffer_size(it,subdev,max_size)
+        [ returns int  ]
+
+comedi_get_buffer_contents(it,subdev)
+        [ returns int  ]
+
+comedi_mark_buffer_read(it,subdev,bytes)
+        [ returns int  ]
+
+comedi_get_buffer_offset(it,subdev)
+        [ returns int  ]
+
diff --git a/python/compy.c b/python/compy.c
deleted file mode 100644 (file)
index f563918..0000000
+++ /dev/null
@@ -1,469 +0,0 @@
-/*  Compy: COMedi PYthon interface
-* A simple hack sharded object for importing into Python
-* to start using Comedi drivers for Digital I/O
-* 
-* Extensively referenced xxmodule.c and others from python distribution
-*                        misc comedi examples.
-*
-* Blaine Lee Copyright 11/2000 Licence LGPL 2.0
-*
-* V 0.4  Major additions to add support for more of the comedilib
-*       functions.  So far we have support for the comedi_ commands
-*       open, close, get_n_subdevices, get_driver_name, get_board_name
-*       get_n_channels, get_maxdata, get_n_ranges, get_range, 
-*       to_phys, from_phys, data_read.   Changed the way the debug
-*       and printstatus code works. 
-* V 0.3  changed to tuple parsing & added version number __version__()
-* V 0.21 Resynced with sorce that had printstats debugging code in it
-* V 0.2  Added card number, so that multiple cards are supported
-* V 0.1  First release, only 'trig' type transfers are supported 
-*
-*/
-
-#include <Python.h>
-#include <stdio.h>     /* for printf() */
-#include <comedilib.h>
-
-#define Version 4
-
-#define maxcards 4
-
-static comedi_t *compy_it[maxcards];
-#ifdef _COMEDILIB_DEPRECATED
-static comedi_trig trig;
-static int trigchan[2];
-static short trigdata;
-#endif
-/******************************
- * Debug flags - set with the 
- * open call. Output is sent
- * to stderr.
- *****************************/
-static int printstats=0;       // if 1 prints mostly the received calling parms
-static int debug = 0;          // if 1 print details of function calls
-
-/******************************
- * compy_open()
- * opens the requested comedi device
- * args - a tuple containing
- *     int - board number (0 to maxcards)
- *     string - the comedi device to open 
- *     int - printstats 0-no, 1-yes, 2-also debug
- ******************************/
-static PyObject *
-compy_open( PyObject *self, PyObject *args )
-{
-    const char *filen;
-    int card;
-
-    if (!PyArg_ParseTuple(args, "isi", &card, &filen, &printstats))
-       return NULL;
-    if (printstats > 1)
-       debug = 1;
-
-    if ((card < 0) || (card >= maxcards))
-       return NULL;
-
-    if(printstats)
-       fprintf(stderr,"compy open '%s'\n",filen);
-
-    compy_it[card]=comedi_open(filen);
-
-    if(debug)
-       fprintf(stderr,"open returned %p\n",compy_it[card]);
-
-    return Py_BuildValue("i", 1);
-}
-
-/******************************
- * compy_close()
- * close the requested comedi device
- * args - a tuple containing
- *     int - board number (0 to maxcards)
- ******************************/
-static PyObject *
-compy_close( PyObject *self, PyObject *args )
-{
-    int card;
-
-    if (!PyArg_ParseTuple(args, "i", &card))
-       return NULL;
-    if ((card < 0) || (card >= maxcards))
-       return NULL;
-    if(printstats)
-       fprintf(stderr,"compy close %d\n",card);
-    comedi_close(compy_it[card]);
-
-    return Py_BuildValue("i", 1);
-}
-
-/******************************
- * compy_get_n_subdevices()
- * get the number of subdevices
- * args -
- *     int - board number (0 to maxcards)
- * returns the number of subdevices on card
- ******************************/
-static PyObject *
-compy_get_n_subdevices( PyObject *self, PyObject *args )
-{
-    int card;
-
-    if (!PyArg_ParseTuple(args, "i:get_n_subdevices", &card))
-       return NULL;
-    if ((card < 0) || (card >= maxcards))
-       return NULL;
-    if(printstats)
-       fprintf(stderr,"compy get_n_subdevices %d\n",card);
-
-    return Py_BuildValue("i", comedi_get_n_subdevices(compy_it[card]));
-}
-
-/******************************
- * compy_get_driver_name()
- * get the number of subdevices
- * args -
- *     int - board number (0 to maxcards)
- * returns the name of the driver for the board
- ******************************/
-static PyObject *
-compy_get_driver_name( PyObject *self, PyObject *args )
-{
-    int card;
-
-    if (!PyArg_ParseTuple(args, "i:get_driver_name", &card))
-       return NULL;
-    if ((card < 0) || (card >= maxcards))
-       return NULL;
-    if(printstats)
-       fprintf(stderr,"compy get_driver_name (%d)\n",card);
-
-    return Py_BuildValue("s", comedi_get_driver_name(compy_it[card]));
-}
-
-/******************************
- * compy_get_board_name()
- * get the number of subdevices
- * args -
- *     int - board number (0 to maxcards)
- * returns the name of the driver for the board
- ******************************/
-static PyObject *
-compy_get_board_name( PyObject *self, PyObject *args )
-{
-    int card;
-
-    if (!PyArg_ParseTuple(args, "i:get_board_name", &card))
-       return NULL;
-    if ((card < 0) || (card >= maxcards))
-       return NULL;
-    if(printstats)
-       fprintf(stderr,"compy get_board_name (%d)\n",card);
-
-    return Py_BuildValue("s", comedi_get_board_name(compy_it[card]));
-}
-
-/******************************
- * compy_get_subdevice_type()
- * get the number of subdevices
- * args -
- *     int - board number (0 to maxcards)
- * returns the name of the driver for the board
- ******************************/
-static PyObject *
-compy_get_subdevice_type( PyObject *self, PyObject *args )
-{
-    int card;
-    int sub_dev;
-
-    if (!PyArg_ParseTuple(args, "ii:get_subdevice_type", &card,&sub_dev))
-       return NULL;
-    if ((card < 0) || (card >= maxcards))
-       return NULL;
-    if(printstats)
-       fprintf(stderr,"compy get_subdevice_type (%d)\n",card);
-
-    return Py_BuildValue("i", comedi_get_subdevice_type(compy_it[card],sub_dev));
-}
-
-/******************************
- * compy_get_n_channels()
- * get the number of channels on subdevice
- * args - 
- *     int - board number (0 to maxcards)
- *     int - subdevice
- * returns number of channels on subdevice
- ******************************/
-static PyObject *
-compy_get_n_channels( PyObject *self, PyObject *args )
-{
-    int card;
-    int sub_dev;
-
-    if (!PyArg_ParseTuple(args, "ii", &card, &sub_dev))
-       return NULL;
-    if ((card < 0) || (card >= maxcards))
-       return NULL;
-    if(printstats)
-       fprintf(stderr,"compy get_n_channels ( %d, %d)\n",card,sub_dev);
-
-    return Py_BuildValue("i", comedi_get_n_channels(compy_it[card],sub_dev));
-}
-
-/******************************
- * compy_get_maxdata()
- * get the maxdata value for a channel
- * args -
- *     int - board number (0 to maxcards)
- *     int - subdevice number
- *     int - channel number
- * returns maximum sample value for channel (0 on error)
- ******************************/
-static PyObject *
-compy_get_maxdata( PyObject *self, PyObject *args )
-{
-    int card;
-    int sub_dev;
-    int channel;
-
-    if (!PyArg_ParseTuple(args, "iii:maxdata", &card,&sub_dev,&channel))
-       return NULL;
-    if ((card < 0) || (card >= maxcards))
-       return NULL;
-    if(printstats)
-       fprintf(stderr,"compy get_maxdata ( %d, %d, %d)\n",card,sub_dev,channel);
-
-    return Py_BuildValue("i", comedi_get_maxdata(compy_it[card],sub_dev,channel));
-}
-
-/******************************
- * compy_get_n_ranges()
- * get the number of ranges a channel
- * args -
- *     int - board number (0 to maxcards)
- *     int - subdevice number
- *     int - channel number
- * returns number of ranges for channel (-1 on error)
- ******************************/
-static PyObject *
-compy_get_n_ranges( PyObject *self, PyObject *args )
-{
-    int card;
-    int sub_dev;
-    int channel;
-
-    if (!PyArg_ParseTuple(args, "iii:get_n_ranges", &card,&sub_dev,&channel))
-       return NULL;
-    if ((card < 0) || (card >= maxcards))
-       return NULL;
-    if(printstats)
-       fprintf(stderr,"compy get_n_ranges ( %d, %d, %d)\n",card,sub_dev,channel);
-
-    return Py_BuildValue("i", comedi_get_n_ranges(compy_it[card],sub_dev,channel));
-}
-
-/******************************
- * compy_get_range()
- * get the number of ranges a channel
- * args -
- *     int - board number (0 to maxcards)
- *     int - subdevice number
- *     int - channel number
- * returns range information on channel 
- *     tuple containing 
- *         min value
- *         max value
- *         units ( 0-volts, 1-mAmps, 2-none)
- ******************************/
-static PyObject *
-compy_get_range( PyObject *self, PyObject *args )
-{
-    comedi_range *rng_p;
-    int card;
-    int sub_dev;
-    int channel;
-    int range;
-
-    if (!PyArg_ParseTuple(args, "iiii:get_range", &card,&sub_dev,&channel,&range))
-       return NULL;
-    if ((card < 0) || (card >= maxcards))
-       return NULL;
-    if(printstats)
-       fprintf(stderr,"compy get_n_ranges ( %d, %d, %d, %d)\n",card,sub_dev,channel,range);
-
-    if ((rng_p = comedi_get_range(compy_it[card],sub_dev,channel,range))==NULL)
-       return NULL;
-    else
-       return Py_BuildValue("ddi", rng_p->min, rng_p->max, rng_p->unit);
-}
-
-/******************************
- * compy_to_phys()
- * convert sample to physical units
- * args -
- *     int - data
- *     tuple containing range information
- *         min value
- *         max value
- *         units ( 0-volts, 1-mAmps, 2-none)
- *     int - maxdata value for channel
- * returns physical value (volts) for input
- ******************************/
-static PyObject *
-compy_to_phys( PyObject *self, PyObject *args )
-{
-    comedi_range rng;
-    lsampl_t data;
-    lsampl_t maxdata;
-
-    if (!PyArg_ParseTuple(args, "i(ddi)i:to_phys",
-               &data,&rng.min,&rng.max,&rng.unit,&maxdata))
-       return NULL;
-    if(printstats)
-       fprintf(stderr,"compy get_to_phys ( %d, %8.3f, %8.3f, %d, %d)\n",
-               data,rng.min,rng.max,rng.unit,maxdata);
-
-    return Py_BuildValue("d",comedi_to_phys(data,&rng, maxdata) );
-}
-
-/******************************
- * compy_from_phys()
- * convert physical units to sample
- * args -
- *     int - data
- *     tuple containing range information
- *         min value
- *         max value
- *         units ( 0-volts, 1-mAmps, 2-none)
- *     int - maxdata value for channel
- * returns the sample value (0-maxdata)
- ******************************/
-static PyObject *
-compy_from_phys( PyObject *self, PyObject *args )
-{
-    comedi_range rng;
-    double data;
-    lsampl_t maxdata;
-
-    if (!PyArg_ParseTuple(args, "d(ddi)i:from_phys",
-               &data,&rng.min,&rng.max,&rng.unit,&maxdata))
-       return NULL;
-    if(printstats)
-       fprintf(stderr,"compy get_from_phys ( %8.3f, %8.3f, %8.3f, %d, %d)\n",
-               data,rng.min,rng.max,rng.unit,maxdata);
-
-    return Py_BuildValue("i",comedi_from_phys(data,&rng, maxdata) );
-}
-/******************************
- * compy_data_read()
- * read the requested comedi device
- * args -
- *      tuple containing
- *         int - board number (0 to maxcards)
- *         int - subdevice number
- *     int - channel number
- *     int - range
- *     int - aref
- ******************************/
-static PyObject *
-compy_data_read(PyObject *self, PyObject *args)
-{
-    int card;
-    int subd, chan;
-    unsigned int range = 0;
-    unsigned int aref  = 0;
-    lsampl_t data;
-
-    if (!PyArg_ParseTuple(args, "(ii)i|ii:data_read", &card, &subd, &chan,&range,&aref))
-       return NULL;
-    if ((card < 0) || (card >= maxcards))
-       return NULL;
-    if(debug)
-       fprintf(stderr,"compy_data_read dev %d subd %d chan %d range %d aref %d\n",card,subd,chan,range,aref);
-
-    comedi_data_read(compy_it[card],subd,chan,range,aref,&data);
-
-    if(debug)
-       fprintf(stderr,"comedi_data_read value %d\n",data);
-
-    return Py_BuildValue("l", data);
-}
-
-#ifdef _COMEDILIB_DEPRECATED
-/******************************
- * compy_trig()
- * read the requested comedi device
- * args - a tuple containing
- *     int - board number (0 to maxcards)
- *     int - subdevice number
- *     int - channel number
- ******************************/
-static PyObject *
-compy_trig( PyObject *self, PyObject *args )
-{
-    int dev, chan, data;
-    int card;
-
-    if (!PyArg_ParseTuple(args, "(iii)i", &card, &dev, &chan, &data))
-       return NULL;
-    if ((card < 0) || (card >= maxcards))
-       return NULL;
-    if(printstats)
-       fprintf(stderr,"compy trig card %d dev %d chanel %d val %d\n",card,dev,chan,data);
-
-    trig.subdev=dev;
-    trig.chanlist[0]=chan;
-    trig.data[0]=data;
-
-    comedi_trigger(compy_it[card],&trig);
-
-    return Py_BuildValue("i", trig.data[0]);
-}
-#endif
-
-
-static PyObject *
-compy_version( PyObject *self, PyObject *args )
-{
-    if(printstats)
-       fprintf(stderr,"Compy version %d\n",Version);
-
-    return Py_BuildValue("i", Version);
-}
-
-
-/* List of functions defined in the module */
-
-static PyMethodDef comedi_methods[] = {
-    {"open",           compy_open,             METH_VARARGS},
-    {"close",          compy_close,            METH_VARARGS},
-    {"get_n_subdevices",compy_get_n_subdevices,        METH_VARARGS},
-    {"get_driver_name",        compy_get_driver_name,  METH_VARARGS},
-    {"get_board_name", compy_get_board_name,   METH_VARARGS},
-    {"get_subdevice_type",compy_get_subdevice_type,    METH_VARARGS},
-    {"get_n_channels", compy_get_n_channels,   METH_VARARGS},
-    {"get_maxdata",    compy_get_maxdata,      METH_VARARGS},
-    {"get_n_ranges",   compy_get_n_ranges,     METH_VARARGS},
-    {"get_range",      compy_get_range,        METH_VARARGS},
-#ifdef _COMEDILIB_DEPRECATED
-    {"trig",           compy_trig,             METH_VARARGS},
-#endif
-    {"to_phys",                compy_to_phys,          METH_VARARGS},
-    {"from_phys",      compy_from_phys,        METH_VARARGS},
-    {"data_read",      compy_data_read,        METH_VARARGS},
-    {"__version__",    compy_version,          METH_VARARGS},
-    {NULL,             NULL}           /* sentinel */
-};
-
-static char comedi_doc[] = "Module to interface comedi library to Python\n";
-
-/* Initialization function for the module (*must* be called initxx) */
-
-DL_EXPORT(void)
-initcomedi(void)
-{
-    /* Create the module and add the functions */
-    (void) Py_InitModule3("comedi", comedi_methods, comedi_doc);
-}
-
-
diff --git a/python/sample.py b/python/sample.py
deleted file mode 100755 (executable)
index c348b9c..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#! /usr/bin/env python
-
-# Sample.py sample code to use python with comedi via the compy interface.
-# Compy: COMedi PYthon interface
-#
-# Blaine Lee Copyright 11/2000 Licence GPL 2.0
-#
-# V0 hacked out of working code for others to look at.
-
-############# imports
-import os
-import stat
-import time
-import comedi                  # important if you want to use compy
-from string import *
-
-comedi.open(0,"/dev/comedi0",1)
-
-val = comedi.data_read((0,0,0));
-print val
-
-comedi.close(0)
-
diff --git a/python/sample1.py b/python/sample1.py
deleted file mode 100755 (executable)
index a83b53a..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-#! /usr/bin/env python
-#
-# Sample1.py sample code to use python with comedi via the compy interface.
-# Compy: COMedi PYthon interface
-#
-# Blaine Lee Copyright 11/2000 Licence GPL 2.0
-#
-# V1 reworkd sample.py to test a number of the new functions added to 
-#    compy.c.  Seems to work with the das16 driver.  John Conner - 20020304
-# V0 hacked out of working code for others to look at.
-
-############# imports
-import os
-import stat
-import time
-import comedi                  # important if you want to use compy
-from string import *
-
-board = 0
-sub_dev = 0
-brd_dev = (board,sub_dev)
-channel = 0
-
-debug_level = 0
-
-comedi.open(board,"/dev/comedi0",debug_level)
-print 'The compy versions is ', comedi.__version__()
-
-driver_name = comedi.get_driver_name(board)
-board_name  = comedi.get_board_name(board)
-num_subdevices = comedi.get_n_subdevices(board)
-print 'The board uses driver %s, is named %s and has %d subdevices'%(
-                       driver_name,board_name,num_subdevices)
-for subdevice in range(0,num_subdevices):
-    print '\tsubdevice %d is type %d'%(
-               subdevice,comedi.get_subdevice_type(board,subdevice))
-print 'Subdevice %d has %d channels'%(
-               sub_dev,comedi.get_n_channels(board,sub_dev))
-
-maxdata = comedi.get_maxdata(board,sub_dev,channel)
-print 'The maximum input count for channel %d is %d'%(channel,maxdata)
-num_ranges = comedi.get_n_ranges(board,sub_dev,channel)
-print 'Channel %d has %d ranges'%(channel,num_ranges)
-for rng in range(0,num_ranges):
-    (min,max,unit) = comedi.get_range(board,sub_dev,channel,rng)
-    if unit == 0: unit = 'volts'
-    if unit == 1: unit = 'mAmps'
-    if unit == 2: unit = ''
-    print '\trange %d  %8.3f  -- %8.3f  %s'%(rng,min,max,unit)
-
-rng = 0
-(min,max,unit) = comedi.get_range(board,sub_dev,channel,rng)
-val = comedi.data_read(brd_dev,channel,rng,0);
-volt = comedi.to_phys(val,(min,max,unit),maxdata);
-print 'range = %d  input = %6d (%6d) or %8.4f volts'%(rng, val, val-32768, volt)
-
-rng = 1
-(min,max,unit) = comedi.get_range(board,sub_dev,channel,rng)
-val = comedi.data_read(brd_dev,channel,rng,0);
-volt = comedi.to_phys(val,(min,max,unit),maxdata);
-print 'range = %d  input = %6d (%6d) or %8.4f volts'%(rng, val, val-32768, volt)
-
-rng = 2
-(min,max,unit) = comedi.get_range(board,sub_dev,channel,rng)
-val = comedi.data_read(brd_dev,channel,rng,0);
-volt = comedi.to_phys(val,(min,max,unit),maxdata);
-print 'range = %d  input = %6d (%6d) or %8.4f volts'%(rng, val, val-32768, volt)
-
-rng = 3
-(min,max,unit) = comedi.get_range(board,sub_dev,channel,rng)
-val = comedi.data_read(brd_dev,channel,rng,0);
-volt = comedi.to_phys(val,(min,max,unit),maxdata);
-print 'range = %d  input = %6d (%6d) or %8.4f volts'%(rng, val, val-32768, volt)
-
-rng = 1
-(min,max,unit) = comedi.get_range(board,sub_dev,channel,rng)
-volt = 1.5
-val = comedi.from_phys(volt,(min,max,unit),maxdata)
-print 'range = %d   an input of %8.4f volts should give %6d from A/D' % (rng, volt, val)
-
-comedi.close(0)
-
diff --git a/python/setup.py b/python/setup.py
new file mode 100644 (file)
index 0000000..1c77d1b
--- /dev/null
@@ -0,0 +1,17 @@
+from distutils.core import setup, Extension
+
+module1 = Extension('_comedi',
+                       define_macros = [('MAJOR_VERSION','0'),
+                                       ('MINOR_VERSION','1')],
+                       include_dirs = ['../comedilib-0.7.19/include'],
+                       library_dirs = ['../comedilib-0.7.19/lib'],
+                       libraries = ['comedi'],
+                       sources = ['comedi_wrap.c'])
+                       
+setup (name='_comedi',
+       version = '0.1',
+       description = 'Python wrapper module for the Comedi data-acquisition drivers',
+       author = 'Bryan E. Cole',
+       author_email = 'bryan.cole@teraview.co.uk',
+       long_description = ''' Wrapper for the Comedi data-acquisition library ''',
+       ext_modules = [module1])
diff --git a/python/test_comedi.py b/python/test_comedi.py
new file mode 100644 (file)
index 0000000..2440499
--- /dev/null
@@ -0,0 +1,80 @@
+#A test-application to demonstrate using the Comedilib API
+# and streaming acquisition in particular, from Python. 
+#This script is completely untested!
+# author bryan.cole@teraview.co.uk
+
+#set the paths so python can find the comedi module
+import sys, os, string
+sys.path.append('./build/lib.linux-i686-2.2')
+
+import comedi as c
+
+#open a comedi device
+dev=c.comedi_open('/dev/comedi0')
+if not dev: raise "Error openning Comedi device"
+
+#get a file-descriptor for use later
+fd = c.comedi_fileno(dev)
+
+nscans=1000 #specify total number of scans
+
+#three lists containing the chans, gains and referencing
+#the lists must all have the same length
+chans=[0,2,3]
+gains=[1,1,1]
+aref =[c.AREF_GROUND, c.AREF_GROUND, c.AREF_GROUND]
+
+nchans = len(chans) #number of channels
+
+#wrappers include a "chanlist" object (just an Unsigned Int array) for holding the chanlist information
+mylist = c.chanlist(nchans) #create a chanlist of length nchans
+
+#now pack the channel, gain and reference information into the chanlist object
+#N.B. the CR_PACK and other comedi macros are now python functions
+for index in range(nchans):
+       mylist[index]=c.cr_pack(chans[index], gains[index], aref[index])
+
+#construct a comedi command manually
+cmd = c.comedi_cmd_struct()
+cmd.subdev = 0
+cmd.flags = 0
+cmd.start_src = c.TRIG_NOW
+cmd.sart_arg = 0
+cmd.scan_begin_src = c.TRIG_TIMER
+cmd.scan_begin_arg = int(1.0e9/100000)
+cmd.convert_src = c.TRIG_TIMER
+cmd.convert_arg = 1
+cmd.scan_end_src = c.TRIG_COUNT
+cmd.scan_end_arg = nchans
+cmd.stop_src = c.TRIG_COUNT
+cmd.stop_arg = nscans
+cmd.chanlist = mylist
+cmd.chanlist_len = nchans
+
+#test our comedi command a few times. 
+ret = c.comedi_command_test(dev,cmd)
+print "first cmd test returns ", ret
+ret = c.comedi_command_test(dev,cmd)
+print "second test returns ", ret
+ret = c.comedi_command_test(dev,cmd)
+if not ret: raise "Error testing comedi command"
+
+#execute the command!
+ret = c.comedi_command(dev,cmd)
+
+#I think this will work but it's completely untested!
+datalist=[]
+data=os.read(fd)
+while len(data)>0:
+       datalist.append(data)
+       data=os.read(fd)
+
+ret = c.comedi_close(dev)
+
+datastr = string.join(datalist,'')
+
+print datastr #heres your data, as a single string!
+
+#if you've got Numeric installed you can convert data into a flat Numpy array
+# with:
+# dataarray = Numeric.fromstring(data, Int16)
\ No newline at end of file