Update to 2.0.0 tree from current Fremantle build
[opencv] / interfaces / swig / octave / highgui_wrap.cpp
diff --git a/interfaces/swig/octave/highgui_wrap.cpp b/interfaces/swig/octave/highgui_wrap.cpp
new file mode 100644 (file)
index 0000000..1f79291
--- /dev/null
@@ -0,0 +1,8961 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.40
+ * 
+ * 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 SWIGOCTAVE
+#define SWIG_name_d      "highgui"
+#define SWIG_name        highgui
+#define OCTAVE_API_VERSION_OPTION 0
+
+
+#ifdef __cplusplus
+/* SwigValueWrapper is described in swig.swg */
+template<typename T> class SwigValueWrapper {
+  struct SwigMovePointer {
+    T *ptr;
+    SwigMovePointer(T *p) : ptr(p) { }
+    ~SwigMovePointer() { delete ptr; }
+    SwigMovePointer& operator=(SwigMovePointer& rhs) { T* oldptr = ptr; ptr = 0; delete oldptr; ptr = rhs.ptr; rhs.ptr = 0; return *this; }
+  } pointer;
+  SwigValueWrapper& operator=(const SwigValueWrapper<T>& rhs);
+  SwigValueWrapper(const SwigValueWrapper<T>& rhs);
+public:
+  SwigValueWrapper() : pointer(0) { }
+  SwigValueWrapper& operator=(const T& t) { SwigMovePointer tmp(new T(t)); pointer = tmp; return *this; }
+  operator T&() const { return *pointer.ptr; }
+  T *operator&() { return pointer.ptr; }
+};
+
+template <typename T> T SwigValueInit() {
+  return T();
+}
+#endif
+
+/* -----------------------------------------------------------------------------
+ *  This section contains generic SWIG labels for method/variable
+ *  declarations/attributes, and other compiler dependent labels.
+ * ----------------------------------------------------------------------------- */
+
+/* template workaround for compilers that cannot correctly implement the C++ standard */
+#ifndef SWIGTEMPLATEDISAMBIGUATOR
+# if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x560)
+#  define SWIGTEMPLATEDISAMBIGUATOR template
+# elif defined(__HP_aCC)
+/* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */
+/* If we find a maximum version that requires this, the test would be __HP_aCC <= 35500 for A.03.55 */
+#  define SWIGTEMPLATEDISAMBIGUATOR template
+# else
+#  define SWIGTEMPLATEDISAMBIGUATOR
+# endif
+#endif
+
+/* inline attribute */
+#ifndef SWIGINLINE
+# if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__))
+#   define SWIGINLINE inline
+# else
+#   define SWIGINLINE
+# endif
+#endif
+
+/* attribute recognised by some compilers to avoid 'unused' warnings */
+#ifndef SWIGUNUSED
+# if defined(__GNUC__)
+#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+#     define SWIGUNUSED __attribute__ ((__unused__)) 
+#   else
+#     define SWIGUNUSED
+#   endif
+# elif defined(__ICC)
+#   define SWIGUNUSED __attribute__ ((__unused__)) 
+# else
+#   define SWIGUNUSED 
+# endif
+#endif
+
+#ifndef SWIG_MSC_UNSUPPRESS_4505
+# if defined(_MSC_VER)
+#   pragma warning(disable : 4505) /* unreferenced local function has been removed */
+# endif 
+#endif
+
+#ifndef SWIGUNUSEDPARM
+# ifdef __cplusplus
+#   define SWIGUNUSEDPARM(p)
+# else
+#   define SWIGUNUSEDPARM(p) p SWIGUNUSED 
+# endif
+#endif
+
+/* internal SWIG method */
+#ifndef SWIGINTERN
+# define SWIGINTERN static SWIGUNUSED
+#endif
+
+/* internal inline SWIG method */
+#ifndef SWIGINTERNINLINE
+# define SWIGINTERNINLINE SWIGINTERN SWIGINLINE
+#endif
+
+/* exporting methods */
+#if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
+#  ifndef GCC_HASCLASSVISIBILITY
+#    define GCC_HASCLASSVISIBILITY
+#  endif
+#endif
+
+#ifndef SWIGEXPORT
+# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
+#   if defined(STATIC_LINKED)
+#     define SWIGEXPORT
+#   else
+#     define SWIGEXPORT __declspec(dllexport)
+#   endif
+# else
+#   if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY)
+#     define SWIGEXPORT __attribute__ ((visibility("default")))
+#   else
+#     define SWIGEXPORT
+#   endif
+# endif
+#endif
+
+/* calling conventions for Windows */
+#ifndef SWIGSTDCALL
+# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
+#   define SWIGSTDCALL __stdcall
+# else
+#   define SWIGSTDCALL
+# endif 
+#endif
+
+/* Deal with Microsoft's attempt at deprecating C standard runtime functions */
+#if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)
+# define _CRT_SECURE_NO_DEPRECATE
+#endif
+
+/* Deal with Microsoft's attempt at deprecating methods in the standard C++ library */
+#if !defined(SWIG_NO_SCL_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_SCL_SECURE_NO_DEPRECATE)
+# define _SCL_SECURE_NO_DEPRECATE
+#endif
+
+
+
+#include <octave/oct.h>
+#include <octave/parse.h>
+#include <octave/ov-fcn-handle.h>
+#include <octave/Cell.h>
+#include <octave/oct-map.h>
+
+/* -----------------------------------------------------------------------------
+ * swigrun.swg
+ *
+ * This file contains generic C API SWIG runtime support for pointer
+ * type checking.
+ * ----------------------------------------------------------------------------- */
+
+/* This should only be incremented when either the layout of swig_type_info changes,
+   or for whatever reason, the runtime changes incompatibly */
+#define SWIG_RUNTIME_VERSION "4"
+
+/* define SWIG_TYPE_TABLE_NAME as "SWIG_TYPE_TABLE" */
+#ifdef SWIG_TYPE_TABLE
+# define SWIG_QUOTE_STRING(x) #x
+# define SWIG_EXPAND_AND_QUOTE_STRING(x) SWIG_QUOTE_STRING(x)
+# define SWIG_TYPE_TABLE_NAME SWIG_EXPAND_AND_QUOTE_STRING(SWIG_TYPE_TABLE)
+#else
+# define SWIG_TYPE_TABLE_NAME
+#endif
+
+/*
+  You can use the SWIGRUNTIME and SWIGRUNTIMEINLINE macros for
+  creating a static or dynamic library from the SWIG runtime code.
+  In 99.9% of the cases, SWIG just needs to declare them as 'static'.
+  
+  But only do this if strictly necessary, ie, if you have problems
+  with your compiler or suchlike.
+*/
+
+#ifndef SWIGRUNTIME
+# define SWIGRUNTIME SWIGINTERN
+#endif
+
+#ifndef SWIGRUNTIMEINLINE
+# define SWIGRUNTIMEINLINE SWIGRUNTIME SWIGINLINE
+#endif
+
+/*  Generic buffer size */
+#ifndef SWIG_BUFFER_SIZE
+# define SWIG_BUFFER_SIZE 1024
+#endif
+
+/* Flags for pointer conversions */
+#define SWIG_POINTER_DISOWN        0x1
+#define SWIG_CAST_NEW_MEMORY       0x2
+
+/* Flags for new pointer objects */
+#define SWIG_POINTER_OWN           0x1
+
+
+/* 
+   Flags/methods for returning states.
+   
+   The SWIG conversion methods, as ConvertPtr, return and integer 
+   that tells if the conversion was successful or not. And if not,
+   an error code can be returned (see swigerrors.swg for the codes).
+   
+   Use the following macros/flags to set or process the returning
+   states.
+   
+   In old versions of SWIG, code such as the following was usually written:
+
+     if (SWIG_ConvertPtr(obj,vptr,ty.flags) != -1) {
+       // success code
+     } else {
+       //fail code
+     }
+
+   Now you can be more explicit:
+
+    int res = SWIG_ConvertPtr(obj,vptr,ty.flags);
+    if (SWIG_IsOK(res)) {
+      // success code
+    } else {
+      // fail code
+    }
+
+   which is the same really, but now you can also do
+
+    Type *ptr;
+    int res = SWIG_ConvertPtr(obj,(void **)(&ptr),ty.flags);
+    if (SWIG_IsOK(res)) {
+      // success code
+      if (SWIG_IsNewObj(res) {
+        ...
+       delete *ptr;
+      } else {
+        ...
+      }
+    } else {
+      // fail code
+    }
+    
+   I.e., now SWIG_ConvertPtr can return new objects and you can
+   identify the case and take care of the deallocation. Of course that
+   also requires SWIG_ConvertPtr to return new result values, such as
+
+      int SWIG_ConvertPtr(obj, ptr,...) {         
+        if (<obj is ok>) {                            
+          if (<need new object>) {                    
+            *ptr = <ptr to new allocated object>; 
+            return SWIG_NEWOBJ;                       
+          } else {                                    
+            *ptr = <ptr to old object>;               
+            return SWIG_OLDOBJ;                       
+          }                                   
+        } else {                                      
+          return SWIG_BADOBJ;                 
+        }                                             
+      }
+
+   Of course, returning the plain '0(success)/-1(fail)' still works, but you can be
+   more explicit by returning SWIG_BADOBJ, SWIG_ERROR or any of the
+   SWIG errors code.
+
+   Finally, if the SWIG_CASTRANK_MODE is enabled, the result code
+   allows to return the 'cast rank', for example, if you have this
+
+       int food(double)
+       int fooi(int);
+
+   and you call
+      food(1)   // cast rank '1'  (1 -> 1.0)
+      fooi(1)   // cast rank '0'
+
+   just use the SWIG_AddCast()/SWIG_CheckState()
+*/
+
+#define SWIG_OK                    (0) 
+#define SWIG_ERROR                 (-1)
+#define SWIG_IsOK(r)               (r >= 0)
+#define SWIG_ArgError(r)           ((r != SWIG_ERROR) ? r : SWIG_TypeError)  
+
+/* The CastRankLimit says how many bits are used for the cast rank */
+#define SWIG_CASTRANKLIMIT         (1 << 8)
+/* The NewMask denotes the object was created (using new/malloc) */
+#define SWIG_NEWOBJMASK            (SWIG_CASTRANKLIMIT  << 1)
+/* The TmpMask is for in/out typemaps that use temporal objects */
+#define SWIG_TMPOBJMASK            (SWIG_NEWOBJMASK << 1)
+/* Simple returning values */
+#define SWIG_BADOBJ                (SWIG_ERROR)
+#define SWIG_OLDOBJ                (SWIG_OK)
+#define SWIG_NEWOBJ                (SWIG_OK | SWIG_NEWOBJMASK)
+#define SWIG_TMPOBJ                (SWIG_OK | SWIG_TMPOBJMASK)
+/* Check, add and del mask methods */
+#define SWIG_AddNewMask(r)         (SWIG_IsOK(r) ? (r | SWIG_NEWOBJMASK) : r)
+#define SWIG_DelNewMask(r)         (SWIG_IsOK(r) ? (r & ~SWIG_NEWOBJMASK) : r)
+#define SWIG_IsNewObj(r)           (SWIG_IsOK(r) && (r & SWIG_NEWOBJMASK))
+#define SWIG_AddTmpMask(r)         (SWIG_IsOK(r) ? (r | SWIG_TMPOBJMASK) : r)
+#define SWIG_DelTmpMask(r)         (SWIG_IsOK(r) ? (r & ~SWIG_TMPOBJMASK) : r)
+#define SWIG_IsTmpObj(r)           (SWIG_IsOK(r) && (r & SWIG_TMPOBJMASK))
+
+/* Cast-Rank Mode */
+#if defined(SWIG_CASTRANK_MODE)
+#  ifndef SWIG_TypeRank
+#    define SWIG_TypeRank             unsigned long
+#  endif
+#  ifndef SWIG_MAXCASTRANK            /* Default cast allowed */
+#    define SWIG_MAXCASTRANK          (2)
+#  endif
+#  define SWIG_CASTRANKMASK          ((SWIG_CASTRANKLIMIT) -1)
+#  define SWIG_CastRank(r)           (r & SWIG_CASTRANKMASK)
+SWIGINTERNINLINE int SWIG_AddCast(int r) { 
+  return SWIG_IsOK(r) ? ((SWIG_CastRank(r) < SWIG_MAXCASTRANK) ? (r + 1) : SWIG_ERROR) : r;
+}
+SWIGINTERNINLINE int SWIG_CheckState(int r) { 
+  return SWIG_IsOK(r) ? SWIG_CastRank(r) + 1 : 0; 
+}
+#else /* no cast-rank mode */
+#  define SWIG_AddCast
+#  define SWIG_CheckState(r) (SWIG_IsOK(r) ? 1 : 0)
+#endif
+
+
+#include <string.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef void *(*swig_converter_func)(void *, int *);
+typedef struct swig_type_info *(*swig_dycast_func)(void **);
+
+/* Structure to store information on one type */
+typedef struct swig_type_info {
+  const char             *name;                        /* mangled name of this type */
+  const char             *str;                 /* human readable name of this type */
+  swig_dycast_func        dcast;               /* dynamic cast function down a hierarchy */
+  struct swig_cast_info  *cast;                        /* linked list of types that can cast into this type */
+  void                   *clientdata;          /* language specific type data */
+  int                    owndata;              /* flag if the structure owns the clientdata */
+} swig_type_info;
+
+/* Structure to store a type and conversion function used for casting */
+typedef struct swig_cast_info {
+  swig_type_info         *type;                        /* pointer to type that is equivalent to this type */
+  swig_converter_func     converter;           /* function to cast the void pointers */
+  struct swig_cast_info  *next;                        /* pointer to next cast in linked list */
+  struct swig_cast_info  *prev;                        /* pointer to the previous cast */
+} swig_cast_info;
+
+/* Structure used to store module information
+ * Each module generates one structure like this, and the runtime collects
+ * all of these structures and stores them in a circularly linked list.*/
+typedef struct swig_module_info {
+  swig_type_info         **types;              /* Array of pointers to swig_type_info structures that are in this module */
+  size_t                 size;                 /* Number of types in this module */
+  struct swig_module_info *next;               /* Pointer to next element in circularly linked list */
+  swig_type_info         **type_initial;       /* Array of initially generated type structures */
+  swig_cast_info         **cast_initial;       /* Array of initially generated casting structures */
+  void                    *clientdata;         /* Language specific module data */
+} swig_module_info;
+
+/* 
+  Compare two type names skipping the space characters, therefore
+  "char*" == "char *" and "Class<int>" == "Class<int >", etc.
+
+  Return 0 when the two name types are equivalent, as in
+  strncmp, but skipping ' '.
+*/
+SWIGRUNTIME int
+SWIG_TypeNameComp(const char *f1, const char *l1,
+                 const char *f2, const char *l2) {
+  for (;(f1 != l1) && (f2 != l2); ++f1, ++f2) {
+    while ((*f1 == ' ') && (f1 != l1)) ++f1;
+    while ((*f2 == ' ') && (f2 != l2)) ++f2;
+    if (*f1 != *f2) return (*f1 > *f2) ? 1 : -1;
+  }
+  return (int)((l1 - f1) - (l2 - f2));
+}
+
+/*
+  Check type equivalence in a name list like <name1>|<name2>|...
+  Return 0 if not equal, 1 if equal
+*/
+SWIGRUNTIME int
+SWIG_TypeEquiv(const char *nb, const char *tb) {
+  int equiv = 0;
+  const char* te = tb + strlen(tb);
+  const char* ne = nb;
+  while (!equiv && *ne) {
+    for (nb = ne; *ne; ++ne) {
+      if (*ne == '|') break;
+    }
+    equiv = (SWIG_TypeNameComp(nb, ne, tb, te) == 0) ? 1 : 0;
+    if (*ne) ++ne;
+  }
+  return equiv;
+}
+
+/*
+  Check type equivalence in a name list like <name1>|<name2>|...
+  Return 0 if equal, -1 if nb < tb, 1 if nb > tb
+*/
+SWIGRUNTIME int
+SWIG_TypeCompare(const char *nb, const char *tb) {
+  int equiv = 0;
+  const char* te = tb + strlen(tb);
+  const char* ne = nb;
+  while (!equiv && *ne) {
+    for (nb = ne; *ne; ++ne) {
+      if (*ne == '|') break;
+    }
+    equiv = (SWIG_TypeNameComp(nb, ne, tb, te) == 0) ? 1 : 0;
+    if (*ne) ++ne;
+  }
+  return equiv;
+}
+
+
+/*
+  Check the typename
+*/
+SWIGRUNTIME swig_cast_info *
+SWIG_TypeCheck(const char *c, swig_type_info *ty) {
+  if (ty) {
+    swig_cast_info *iter = ty->cast;
+    while (iter) {
+      if (strcmp(iter->type->name, c) == 0) {
+        if (iter == ty->cast)
+          return iter;
+        /* Move iter to the top of the linked list */
+        iter->prev->next = iter->next;
+        if (iter->next)
+          iter->next->prev = iter->prev;
+        iter->next = ty->cast;
+        iter->prev = 0;
+        if (ty->cast) ty->cast->prev = iter;
+        ty->cast = iter;
+        return iter;
+      }
+      iter = iter->next;
+    }
+  }
+  return 0;
+}
+
+/* 
+  Identical to SWIG_TypeCheck, except strcmp is replaced with a pointer comparison
+*/
+SWIGRUNTIME swig_cast_info *
+SWIG_TypeCheckStruct(swig_type_info *from, swig_type_info *ty) {
+  if (ty) {
+    swig_cast_info *iter = ty->cast;
+    while (iter) {
+      if (iter->type == from) {
+        if (iter == ty->cast)
+          return iter;
+        /* Move iter to the top of the linked list */
+        iter->prev->next = iter->next;
+        if (iter->next)
+          iter->next->prev = iter->prev;
+        iter->next = ty->cast;
+        iter->prev = 0;
+        if (ty->cast) ty->cast->prev = iter;
+        ty->cast = iter;
+        return iter;
+      }
+      iter = iter->next;
+    }
+  }
+  return 0;
+}
+
+/*
+  Cast a pointer up an inheritance hierarchy
+*/
+SWIGRUNTIMEINLINE void *
+SWIG_TypeCast(swig_cast_info *ty, void *ptr, int *newmemory) {
+  return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr, newmemory);
+}
+
+/* 
+   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
+*/
+SWIGRUNTIMEINLINE const char *
+SWIG_TypeName(const swig_type_info *ty) {
+  return ty->name;
+}
+
+/*
+  Return the pretty name associated with this type,
+  that is an unmangled type name in a form presentable to the user.
+*/
+SWIGRUNTIME const char *
+SWIG_TypePrettyName(const swig_type_info *type) {
+  /* The "str" field contains the equivalent pretty names of the
+     type, separated by vertical-bar characters.  We choose
+     to print the last name, as it is often (?) the most
+     specific. */
+  if (!type) return NULL;
+  if (type->str != NULL) {
+    const char *last_name = type->str;
+    const char *s;
+    for (s = type->str; *s; s++)
+      if (*s == '|') last_name = s+1;
+    return last_name;
+  }
+  else
+    return type->name;
+}
+
+/* 
+   Set the clientdata field for a type
+*/
+SWIGRUNTIME void
+SWIG_TypeClientData(swig_type_info *ti, void *clientdata) {
+  swig_cast_info *cast = ti->cast;
+  /* if (ti->clientdata == clientdata) return; */
+  ti->clientdata = clientdata;
+  
+  while (cast) {
+    if (!cast->converter) {
+      swig_type_info *tc = cast->type;
+      if (!tc->clientdata) {
+       SWIG_TypeClientData(tc, clientdata);
+      }
+    }    
+    cast = cast->next;
+  }
+}
+SWIGRUNTIME void
+SWIG_TypeNewClientData(swig_type_info *ti, void *clientdata) {
+  SWIG_TypeClientData(ti, clientdata);
+  ti->owndata = 1;
+}
+  
+/*
+  Search for a swig_type_info structure only by mangled name
+  Search is a O(log #types)
+  
+  We start searching at module start, and finish searching when start == end.  
+  Note: if start == end at the beginning of the function, we go all the way around
+  the circular list.
+*/
+SWIGRUNTIME swig_type_info *
+SWIG_MangledTypeQueryModule(swig_module_info *start, 
+                            swig_module_info *end, 
+                           const char *name) {
+  swig_module_info *iter = start;
+  do {
+    if (iter->size) {
+      register size_t l = 0;
+      register size_t r = iter->size - 1;
+      do {
+       /* since l+r >= 0, we can (>> 1) instead (/ 2) */
+       register size_t i = (l + r) >> 1; 
+       const char *iname = iter->types[i]->name;
+       if (iname) {
+         register int compare = strcmp(name, iname);
+         if (compare == 0) {       
+           return iter->types[i];
+         } else if (compare < 0) {
+           if (i) {
+             r = i - 1;
+           } else {
+             break;
+           }
+         } else if (compare > 0) {
+           l = i + 1;
+         }
+       } else {
+         break; /* should never happen */
+       }
+      } while (l <= r);
+    }
+    iter = iter->next;
+  } while (iter != end);
+  return 0;
+}
+
+/*
+  Search for a swig_type_info structure for either a mangled name or a human readable name.
+  It first searches the mangled names of the types, which is a O(log #types)
+  If a type is not found it then searches the human readable names, which is O(#types).
+  
+  We start searching at module start, and finish searching when start == end.  
+  Note: if start == end at the beginning of the function, we go all the way around
+  the circular list.
+*/
+SWIGRUNTIME swig_type_info *
+SWIG_TypeQueryModule(swig_module_info *start, 
+                     swig_module_info *end, 
+                    const char *name) {
+  /* STEP 1: Search the name field using binary search */
+  swig_type_info *ret = SWIG_MangledTypeQueryModule(start, end, name);
+  if (ret) {
+    return ret;
+  } else {
+    /* STEP 2: If the type hasn't been found, do a complete search
+       of the str field (the human readable name) */
+    swig_module_info *iter = start;
+    do {
+      register size_t i = 0;
+      for (; i < iter->size; ++i) {
+       if (iter->types[i]->str && (SWIG_TypeEquiv(iter->types[i]->str, name)))
+         return iter->types[i];
+      }
+      iter = iter->next;
+    } while (iter != end);
+  }
+  
+  /* neither found a match */
+  return 0;
+}
+
+/* 
+   Pack binary data into a string
+*/
+SWIGRUNTIME char *
+SWIG_PackData(char *c, void *ptr, size_t sz) {
+  static const char hex[17] = "0123456789abcdef";
+  register const unsigned char *u = (unsigned char *) ptr;
+  register const unsigned char *eu =  u + sz;
+  for (; u != eu; ++u) {
+    register unsigned char uu = *u;
+    *(c++) = hex[(uu & 0xf0) >> 4];
+    *(c++) = hex[uu & 0xf];
+  }
+  return c;
+}
+
+/* 
+   Unpack binary data from a string
+*/
+SWIGRUNTIME const char *
+SWIG_UnpackData(const char *c, void *ptr, size_t sz) {
+  register unsigned char *u = (unsigned char *) ptr;
+  register const unsigned char *eu = u + sz;
+  for (; u != eu; ++u) {
+    register char d = *(c++);
+    register unsigned char uu;
+    if ((d >= '0') && (d <= '9'))
+      uu = ((d - '0') << 4);
+    else if ((d >= 'a') && (d <= 'f'))
+      uu = ((d - ('a'-10)) << 4);
+    else 
+      return (char *) 0;
+    d = *(c++);
+    if ((d >= '0') && (d <= '9'))
+      uu |= (d - '0');
+    else if ((d >= 'a') && (d <= 'f'))
+      uu |= (d - ('a'-10));
+    else 
+      return (char *) 0;
+    *u = uu;
+  }
+  return c;
+}
+
+/* 
+   Pack 'void *' into a string buffer.
+*/
+SWIGRUNTIME char *
+SWIG_PackVoidPtr(char *buff, void *ptr, const char *name, size_t bsz) {
+  char *r = buff;
+  if ((2*sizeof(void *) + 2) > bsz) return 0;
+  *(r++) = '_';
+  r = SWIG_PackData(r,&ptr,sizeof(void *));
+  if (strlen(name) + 1 > (bsz - (r - buff))) return 0;
+  strcpy(r,name);
+  return buff;
+}
+
+SWIGRUNTIME const char *
+SWIG_UnpackVoidPtr(const char *c, void **ptr, const char *name) {
+  if (*c != '_') {
+    if (strcmp(c,"NULL") == 0) {
+      *ptr = (void *) 0;
+      return name;
+    } else {
+      return 0;
+    }
+  }
+  return SWIG_UnpackData(++c,ptr,sizeof(void *));
+}
+
+SWIGRUNTIME char *
+SWIG_PackDataName(char *buff, void *ptr, size_t sz, const char *name, size_t bsz) {
+  char *r = buff;
+  size_t lname = (name ? strlen(name) : 0);
+  if ((2*sz + 2 + lname) > bsz) return 0;
+  *(r++) = '_';
+  r = SWIG_PackData(r,ptr,sz);
+  if (lname) {
+    strncpy(r,name,lname+1);
+  } else {
+    *r = 0;
+  }
+  return buff;
+}
+
+SWIGRUNTIME const char *
+SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) {
+  if (*c != '_') {
+    if (strcmp(c,"NULL") == 0) {
+      memset(ptr,0,sz);
+      return name;
+    } else {
+      return 0;
+    }
+  }
+  return SWIG_UnpackData(++c,ptr,sz);
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+/*  Errors in SWIG */
+#define  SWIG_UnknownError        -1 
+#define  SWIG_IOError             -2 
+#define  SWIG_RuntimeError        -3 
+#define  SWIG_IndexError          -4 
+#define  SWIG_TypeError           -5 
+#define  SWIG_DivisionByZero      -6 
+#define  SWIG_OverflowError       -7 
+#define  SWIG_SyntaxError         -8 
+#define  SWIG_ValueError          -9 
+#define  SWIG_SystemError         -10
+#define  SWIG_AttributeError      -11
+#define  SWIG_MemoryError         -12 
+#define  SWIG_NullReferenceError   -13
+
+
+
+
+#if OCTAVE_API_VERSION_OPTION>0
+#define USE_OCTAVE_API_VERSION OCTAVE_API_VERSION_OPTION
+#else
+
+#include <octave/version.h>
+#ifdef OCTAVE_API_VERSION_N
+#define USE_OCTAVE_API_VERSION OCTAVE_API_VERSION_N
+
+#else // Interim hack to distinguish between Octave 3.2 and earlier versions.
+
+#define ComplexLU __ignore
+#include <octave/CmplxLU.h>
+#undef ComplexLU
+#ifdef octave_Complex_LU_h
+#define USE_OCTAVE_API_VERSION 36
+#else
+#define USE_OCTAVE_API_VERSION 37
+#endif
+
+#endif
+
+#endif
+
+SWIGRUNTIME bool SWIG_check_num_args(const char *func_name, int num_args, int max_args, int min_args, int varargs) {
+  if (num_args > max_args && !varargs)
+    error("function %s takes at most %i arguments", func_name, max_args);
+  else if (num_args < min_args)
+    error("function %s requires at least %i arguments", func_name, min_args);
+  else
+    return true;
+  return false;
+}
+
+SWIGRUNTIME octave_value_list *SWIG_Octave_AppendOutput(octave_value_list *ovl, const octave_value &ov) {
+  ovl->append(ov);
+  return ovl;
+}
+
+SWIGRUNTIME octave_value SWIG_ErrorType(int code) {
+  switch (code) {
+  case SWIG_MemoryError:
+    return "SWIG_MemoryError";
+  case SWIG_IOError:
+    return "SWIG_IOError";
+  case SWIG_RuntimeError:
+    return "SWIG_RuntimeError";
+  case SWIG_IndexError:
+    return "SWIG_IndexError";
+  case SWIG_TypeError:
+    return "SWIG_TypeError";
+  case SWIG_DivisionByZero:
+    return "SWIG_DivisionByZero";
+  case SWIG_OverflowError:
+    return "SWIG_OverflowError";
+  case SWIG_SyntaxError:
+    return "SWIG_SyntaxError";
+  case SWIG_ValueError:
+    return "SWIG_ValueError";
+  case SWIG_SystemError:
+    return "SWIG_SystemError";
+  case SWIG_AttributeError:
+    return "SWIG_AttributeError";
+  }
+  return "SWIG unknown error";
+}
+
+SWIGRUNTIME octave_value SWIG_Error(int code, const char *msg) {
+  octave_value type(SWIG_ErrorType(code));
+  std::string r = msg;
+  r += " (" + type.string_value() + ")";
+  error(r.c_str());
+  return octave_value(r);
+}
+
+#define SWIG_fail                                       goto fail
+
+#define SWIG_Octave_ConvertPtr(obj, pptr, type, flags)  SWIG_Octave_ConvertPtrAndOwn(obj, pptr, type, flags, 0)
+#define SWIG_ConvertPtr(obj, pptr, type, flags)         SWIG_Octave_ConvertPtr(obj, pptr, type, flags)
+#define SWIG_ConvertPtrAndOwn(obj,pptr,type,flags,own)  SWIG_Octave_ConvertPtrAndOwn(obj, pptr, type, flags, own)
+#define SWIG_ConvertPtr(obj, pptr, type, flags)         SWIG_Octave_ConvertPtr(obj, pptr, type, flags)
+#define SWIG_NewPointerObj(ptr, type, flags)            SWIG_Octave_NewPointerObj(ptr, type, flags)
+#define swig_owntype                                    int
+
+#define SWIG_ConvertPacked(obj, ptr, sz, ty)            SWIG_Octave_ConvertPacked(obj, ptr, sz, ty)
+#define SWIG_NewPackedObj(ptr, sz, type)                SWIG_Octave_NewPackedObj(ptr, sz, type)
+
+#define SWIG_ConvertFunctionPtr(obj, pptr, type)        SWIG_ConvertPtr(obj, pptr, type, 0)
+#define SWIG_NewFunctionPtrObj(ptr, type)               SWIG_NewPointerObj(ptr, type, 0)
+
+#define SWIG_ConvertMember(obj, ptr, sz, ty)            SWIG_Octave_ConvertPacked(obj, ptr, sz, ty)
+#define SWIG_NewMemberObj(ptr, sz, type)                SWIG_Octave_NewPackedObj(ptr, sz, type)
+
+#define SWIG_GetModule(clientdata) SWIG_Octave_GetModule(clientdata)
+#define SWIG_SetModule(clientdata, pointer) SWIG_Octave_SetModule(clientdata,pointer);
+#define SWIG_MODULE_CLIENTDATA_TYPE void*
+
+#define Octave_Error_Occurred() 0
+#define SWIG_Octave_AddErrorMsg(msg) {;}
+
+SWIGRUNTIME swig_module_info *SWIG_Octave_GetModule(void *clientdata);
+SWIGRUNTIME void SWIG_Octave_SetModule(void *clientdata, swig_module_info *pointer);
+
+// For backward compatibility only
+#define SWIG_POINTER_EXCEPTION  0
+#define SWIG_arg_fail(arg)      0
+
+// Runtime API implementation
+
+#include <map>
+#include <vector>
+#include <string>
+
+typedef octave_value_list(*octave_func) (const octave_value_list &, int);
+class octave_swig_type;
+
+namespace Swig {
+  class Director;
+
+  SWIGRUNTIME void swig_register_director(octave_swig_type *self, void *ptr, Director *d);
+  SWIGRUNTIME void swig_director_destroyed(octave_swig_type *self, Director *d);
+  SWIGRUNTIME void swig_director_set_self(Director *d, octave_swig_type *self);
+
+  SWIGRUNTIME octave_base_value *swig_value_ref(octave_swig_type *ost);
+  SWIGRUNTIME octave_swig_type *swig_value_deref(octave_value ov);
+  SWIGRUNTIME octave_swig_type *swig_value_deref(const octave_base_value &ov);
+
+  typedef std::map < void *, Director * > rtdir_map;
+
+  SWIGINTERN rtdir_map* get_rtdir_map() {
+    static swig_module_info *module = 0;
+    if (!module)
+      module = SWIG_GetModule(0);
+    if (!module)
+      return 0;
+    if (!module->clientdata)
+      module->clientdata = new rtdir_map;
+    return (rtdir_map *) module->clientdata;
+  }
+
+  SWIGINTERNINLINE void set_rtdir(void *vptr, Director *d) {
+    rtdir_map* rm = get_rtdir_map();
+    if (rm)
+      (*rm)[vptr] = d;
+  }
+
+  SWIGINTERNINLINE void erase_rtdir(void *vptr) {
+    rtdir_map* rm = get_rtdir_map();
+    if (rm)
+      (*rm).erase(vptr);
+  }
+
+  SWIGINTERNINLINE Director *get_rtdir(void *vptr) {
+    rtdir_map* rm = get_rtdir_map();
+    if (!rm)
+      return 0;
+    rtdir_map::const_iterator pos = rm->find(vptr);
+    Director *rtdir = (pos != rm->end())? pos->second : 0;
+    return rtdir;
+  }
+}
+
+  struct swig_octave_member {
+    const char *name;
+    octave_func method;
+    octave_func get_method;
+    octave_func set_method;
+    int flags;                 // 1 static, 2 global
+    const char *doc;
+    bool is_static() const {
+      return flags &1;
+    } bool is_global() const {
+      return flags &2;
+    }
+  };
+
+  struct swig_octave_class {
+    const char *name;
+    swig_type_info **type;
+    int director;
+    octave_func constructor;
+    const char *constructor_doc;
+    octave_func destructor;
+    const swig_octave_member *members;
+    const char **base_names;
+    const swig_type_info **base;
+  };
+
+  // octave_swig_type plays the role of both the shadow class and the class 
+  // representation within Octave, since there is no support for classes.
+  //
+  // These should really be decoupled, with the class support added to Octave
+  // and the shadow class given by an m-file script. That would dramatically 
+  // reduce the runtime complexity, and be more in line w/ other modules.
+
+  class octave_swig_type:public octave_base_value {
+    struct cpp_ptr {
+      void *ptr;
+      bool destroyed;
+      cpp_ptr(void *_ptr):ptr(_ptr), destroyed(false) {
+      }};
+    typedef std::pair < const swig_type_info *, cpp_ptr > type_ptr_pair;
+
+    mutable swig_module_info *module;
+
+    const swig_type_info *construct_type;      // type of special type object
+    std::vector < type_ptr_pair > types;       // our c++ base classes
+    int own;                   // whether we call c++ destructors when we die
+
+    typedef std::pair < const swig_octave_member *, octave_value > member_value_pair;
+    typedef std::map < std::string, member_value_pair > member_map;
+    member_map members;
+    bool always_static;
+
+    const swig_octave_member *find_member(const swig_type_info *type, const std::string &name) {
+      if (!type->clientdata)
+       return 0;
+      swig_octave_class *c = (swig_octave_class *) type->clientdata;
+      const swig_octave_member *m;
+      for (m = c->members; m->name; ++m)
+       if (m->name == name)
+         return m;
+      for (int j = 0; c->base_names[j]; ++j) {
+       if (!c->base[j]) {
+         if (!module)
+           module = SWIG_GetModule(0);
+         assert(module);
+         c->base[j] = SWIG_MangledTypeQueryModule(module, module, c->base_names[j]);
+       }
+       if (!c->base[j])
+         return 0;
+       if ((m = find_member(c->base[j], name)))
+         return m;
+      }
+      return 0;
+    }
+
+    member_value_pair *find_member(const std::string &name, bool insert_if_not_found) {
+      member_map::iterator it = members.find(name);
+      if (it != members.end())
+       return &it->second;
+      const swig_octave_member *m;
+      for (unsigned int j = 0; j < types.size(); ++j)
+       if ((m = find_member(types[j].first, name)))
+         return &members.insert(std::make_pair(name, std::make_pair(m, octave_value()))).first->second;
+      if (!insert_if_not_found)
+       return 0;
+      return &members[name];
+    }
+
+    const swig_type_info *find_base(const std::string &name, const swig_type_info *base) {
+      if (!base) {
+       for (unsigned int j = 0; j < types.size(); ++j) {
+         assert(types[j].first->clientdata);
+         swig_octave_class *cj = (swig_octave_class *) types[j].first->clientdata;
+         if (cj->name == name)
+           return types[j].first;
+       }
+       return 0;
+      }
+      assert(base->clientdata);
+      swig_octave_class *c = (swig_octave_class *) base->clientdata;
+      for (int j = 0; c->base_names[j]; ++j) {
+       if (!c->base[j]) {
+         if (!module)
+           module = SWIG_GetModule(0);
+         assert(module);
+         c->base[j] = SWIG_MangledTypeQueryModule(module, module, c->base_names[j]);
+       }
+       if (!c->base[j])
+         return 0;
+       assert(c->base[j]->clientdata);
+       swig_octave_class *cj = (swig_octave_class *) c->base[j]->clientdata;
+       if (cj->name == name)
+         return c->base[j];
+      }
+      return 0;
+    }
+
+    void load_members(const swig_octave_class* c,member_map& out) const {
+      for (const swig_octave_member *m = c->members; m->name; ++m) {
+       if (out.find(m->name) == out.end())
+         out.insert(std::make_pair(m->name, std::make_pair(m, octave_value())));
+      }
+      for (int j = 0; c->base_names[j]; ++j) {
+       if (!c->base[j]) {
+         if (!module)
+           module = SWIG_GetModule(0);
+         assert(module);
+         c->base[j] = SWIG_MangledTypeQueryModule(module, module, c->base_names[j]);
+       }
+       if (!c->base[j])
+         continue;
+       assert(c->base[j]->clientdata);
+       const swig_octave_class *cj =
+         (const swig_octave_class *) c->base[j]->clientdata;
+       load_members(cj,out);
+      }
+    }
+
+    void load_members(member_map& out) const {
+      out=members;
+      for (unsigned int j = 0; j < types.size(); ++j)
+       if (types[j].first->clientdata)
+         load_members((const swig_octave_class *) types[j].first->clientdata, out);
+    }
+
+    octave_value_list member_invoke(member_value_pair *m, const octave_value_list &args, int nargout) {
+      if (m->second.is_defined())
+       return m->second.subsref("(", std::list < octave_value_list > (1, args), nargout);
+      else if (m->first && m->first->method)
+       return m->first->method(args, nargout);
+      error("member not defined or not invocable");
+      return octave_value_list();
+    }
+
+    bool dispatch_unary_op(const std::string &symbol, octave_value &ret) {
+      member_value_pair *m = find_member(symbol, false);
+      if (!m || m->first->is_static() || m->first->is_global())
+       return false;
+      octave_value_list args;
+      args.append(as_value());
+      octave_value_list argout(member_invoke(m, args, 1));
+      if (argout.length() < 1)
+       return false;
+      ret = argout(0);
+      return true;
+    }
+
+    bool dispatch_binary_op(const std::string &symbol, const octave_base_value &rhs, octave_value &ret) {
+      member_value_pair *m = find_member(symbol, false);
+      if (!m || m->first->is_static() || m->first->is_global())
+       return false;
+      octave_value_list args;
+      args.append(as_value());
+      args.append(make_value_hack(rhs));
+      octave_value_list argout(member_invoke(m, args, 1));
+      if (argout.length() < 1)
+       return false;
+      ret = argout(0);
+      return true;
+    }
+
+    bool dispatch_index_op(const std::string &symbol, const octave_value_list &rhs, octave_value_list &ret) {
+      member_value_pair *m = find_member(symbol, false);
+      if (!m || m->first->is_static() || m->first->is_global())
+       return false;
+      octave_value_list args;
+      args.append(as_value());
+      args.append(rhs);
+      octave_value_list argout(member_invoke(m, args, 1));
+      if (argout.length() >= 1)
+       ret = argout(0);
+      return true;
+    }
+
+    octave_value_list member_deref(member_value_pair *m, const octave_value_list &args) {
+      if (m->second.is_defined())
+       return m->second;
+      else if (m->first) {
+       if (m->first->get_method)
+         return m->first->get_method(args, 1);
+       else if (m->first->method)
+         return octave_value(new octave_builtin(m->first->method));
+      }
+      error("undefined member");
+      return octave_value_list();
+    }
+
+    static octave_value make_value_hack(const octave_base_value &x) {
+      ((octave_swig_type &) x).count++;
+      return octave_value((octave_base_value *) &x);
+    }
+
+    octave_swig_type(const octave_swig_type &x);
+    octave_swig_type &operator=(const octave_swig_type &rhs);
+  public:
+
+    octave_swig_type(void *_ptr = 0, const swig_type_info *_type = 0, int _own = 0,
+                    bool _always_static = false)
+      :        module(0), construct_type(_ptr ? 0 : _type), own(_own), 
+      always_static(_always_static) {
+      if (_type || _ptr)
+       types.push_back(std::make_pair(_type, _ptr));
+      if (_ptr) {
+       Swig::Director *d = Swig::get_rtdir(_ptr);
+       if (d)
+         Swig::swig_director_set_self(d, this);
+      }
+    }
+
+    ~octave_swig_type() {
+      if (own) {
+       ++count;
+       for (unsigned int j = 0; j < types.size(); ++j) {
+         if (!types[j].first || !types[j].first->clientdata)
+           continue;
+         swig_octave_class *c = (swig_octave_class *) types[j].first->clientdata;
+         if (c->destructor && !types[j].second.destroyed && types[j].second.ptr) {
+           c->destructor(as_value(), 0);
+         }
+       }
+      }
+      for (unsigned int j = 0; j < types.size(); ++j)
+       Swig::erase_rtdir(types[j].second.ptr);
+    }
+
+    octave_value as_value() {
+      ++count;
+      return Swig::swig_value_ref(this);
+    }
+
+    void incref() {
+      ++count;
+    }
+
+    void decref() {
+      if (!--count)
+       delete this;
+    }
+
+    long swig_this() const {
+      if (!types.size())
+       return (long) this;
+      return (long) types[0].second.ptr;
+    }
+    const char* help_text() const {
+      if (!types.size())
+       return 0;
+      if (!types[0].first->clientdata)
+       return 0;
+      swig_octave_class *c = (swig_octave_class *) types[0].first->clientdata;
+      return c->constructor_doc;
+    }
+
+    std::string swig_type_name() const {
+      // * need some way to manually name subclasses.
+      // * eg optional first arg to subclass(), or named_subclass()
+      std::string ret;
+      for (unsigned int j = 0; j < types.size(); ++j) {
+       if (j)
+         ret += "_";
+       if (types[j].first->clientdata) {
+         swig_octave_class *c = (swig_octave_class *) types[j].first->clientdata;
+         ret += c->name;
+       } else
+         ret += types[j].first->name;
+      }
+      return ret;
+    }
+
+    void merge(octave_swig_type &rhs) {
+      rhs.own = 0;
+      for (unsigned int j = 0; j < rhs.types.size(); ++j) {
+       assert(!rhs.types[j].second.destroyed);
+       Swig::Director *d = Swig::get_rtdir(rhs.types[j].second.ptr);
+       if (d)
+         Swig::swig_director_set_self(d, this);
+      }
+      types.insert(types.end(), rhs.types.begin(), rhs.types.end());
+      members.insert(rhs.members.begin(), rhs.members.end());
+      rhs.types.clear();
+      rhs.members.clear();
+    }
+
+    void install_global() {
+      for (member_map::const_iterator it = members.begin(); it != members.end(); ++it) {
+       if (it->second.first && it->second.first->method)
+         install_builtin_function(it->second.first->method, it->first,
+                                  it->second.first->doc?it->second.first->doc:std::string());
+       else if (it->second.second.is_defined()) {
+#if USE_OCTAVE_API_VERSION<37
+         link_to_global_variable(curr_sym_tab->lookup(it->first, true));
+#else 
+         symbol_table::varref(it->first);
+         symbol_table::mark_global(it->first);
+#endif
+         set_global_value(it->first, it->second.second);
+         
+#if USE_OCTAVE_API_VERSION<37
+         octave_swig_type *ost = Swig::swig_value_deref(it->second.second);
+         if (ost) {
+           const char* h = ost->help_text();
+           if (h) {
+             symbol_record *sr = global_sym_tab->lookup (it->first, true);
+             sr->document(h);
+           }
+         }
+#endif
+       }
+      }
+    }
+
+    void *cast(swig_type_info *type, int *_own, int flags) {
+      if (_own)
+       *_own = own;
+      if (flags &SWIG_POINTER_DISOWN)
+       own = 0;
+      if (!type && types.size())
+       return types[0].second.ptr;
+      for (unsigned int j = 0; j < types.size(); ++j)
+       if (type == types[j].first)
+         return types[j].second.ptr;
+      for (unsigned int j = 0; j < types.size(); ++j) {
+       swig_cast_info *tc = SWIG_TypeCheck(types[j].first->name, type);
+       if (!tc)
+         continue;
+       int newmemory = 0;
+       void *vptr = SWIG_TypeCast(tc, types[j].second.ptr, &newmemory);
+       assert(!newmemory);     // newmemory handling not yet implemented
+       return vptr;
+      }
+      return 0;
+    }
+
+    bool is_owned() const {
+      return own;
+    }
+
+    void director_destroyed(Swig::Director *d) {
+      bool found = false;
+      for (unsigned int j = 0; j < types.size(); ++j) {
+       Swig::Director *dj = Swig::get_rtdir(types[j].second.ptr);
+       if (dj == d) {
+         types[j].second.destroyed = true;
+         found = true;
+       }
+      }
+      assert(found);
+    }
+
+    void assign(const std::string &name, const octave_value &ov) {
+      members[name] = std::make_pair((const swig_octave_member *) 0, ov);
+    }
+
+    void assign(const std::string &name, const swig_octave_member *m) {
+      members[name] = std::make_pair(m, octave_value());
+    }
+
+    octave_base_value *clone() const {
+      // pass-by-value is probably not desired, and is harder;
+      // requires calling copy constructors of contained types etc.
+      assert(0);
+      *(int *) 0 = 0;
+      return 0;
+    }
+
+    octave_base_value *empty_clone() const {
+      return new octave_swig_type();
+    }
+
+    bool is_defined() const {
+      return true;
+    }
+
+    virtual bool is_map() const {
+      return true;
+    }
+
+    virtual octave_value subsref(const std::string &ops, const std::list < octave_value_list > &idx) {
+      octave_value_list ovl = subsref(ops, idx, 1);
+      return ovl.length()? ovl(0) : octave_value();
+    }
+
+    virtual octave_value_list subsref(const std::string &ops, const std::list < octave_value_list > &idx, int nargout) {
+      assert(ops.size() > 0);
+      assert(ops.size() == idx.size());
+
+      std::list < octave_value_list >::const_iterator idx_it = idx.begin();
+      int skip = 0;
+      octave_value_list sub_ovl;
+
+      // constructor invocation
+      if (ops[skip] == '(' && construct_type) {
+       assert(construct_type->clientdata);
+       swig_octave_class *c = (swig_octave_class *) construct_type->clientdata;
+       if (!c->constructor) {
+         error("cannot create instance");
+         return octave_value_list();
+       }
+       octave_value_list args;
+       if (c->director)
+         args.append(Swig::swig_value_ref(new octave_swig_type(this, 0, 0)));
+       args.append(*idx_it++);
+       ++skip;
+       sub_ovl = c->constructor(args, nargout);
+      }
+      // member dereference or invocation
+      else if (ops[skip] == '.') {
+       std::string subname;
+       const swig_type_info *base = 0; // eg, a.base.base_cpp_mem
+       for (;;) {
+         octave_value_list subname_ovl(*idx_it++);
+         ++skip;
+         assert(subname_ovl.length() == 1 && subname_ovl(0).is_string());
+         subname = subname_ovl(0).string_value();
+
+         const swig_type_info *next_base = find_base(subname, base);
+         if (!next_base || skip >= (int) ops.size() || ops[skip] != '.')
+           break;
+         base = next_base;
+       }
+
+       member_value_pair tmp, *m = &tmp;
+       if (!base || !(m->first = find_member(base, subname)))
+         m = find_member(subname, false);
+       if (!m) {
+         error("member not found");
+         return octave_value_list();
+       }
+
+       octave_value_list args;
+       if (!always_static &&
+           (!m->first || (!m->first->is_static() && !m->first->is_global())))
+         args.append(as_value());
+       if (skip < (int) ops.size() && ops[skip] == '(' && 
+           ((m->first && m->first->method) || m->second.is_function() || 
+            m->second.is_function_handle())) {
+         args.append(*idx_it++);
+         ++skip;
+         sub_ovl = member_invoke(m, args, nargout);
+       } else {
+         sub_ovl = member_deref(m, args);
+       }
+      }
+      // index operator
+      else {
+       if (ops[skip] == '(' || ops[skip] == '{') {
+         const char *op_name = ops[skip] == '(' ? "__paren__" : "__brace__";
+         octave_value_list args;
+         args.append(*idx_it++);
+         ++skip;
+         if (!dispatch_index_op(op_name, args, sub_ovl)) {
+           error("error evaluating index operator");
+           return octave_value_list();
+         }
+       } else {
+         error("unsupported subsref");
+         return octave_value_list();
+       }
+      }
+
+      if (skip >= (int) ops.size())
+       return sub_ovl;
+      if (sub_ovl.length() < 1) {
+       error("bad subs ref");
+       return octave_value_list();
+      }
+      return sub_ovl(0).next_subsref(nargout, ops, idx, skip);
+    }
+
+    octave_value subsasgn(const std::string &ops, const std::list < octave_value_list > &idx, const octave_value &rhs) {
+      assert(ops.size() > 0);
+      assert(ops.size() == idx.size());
+
+      std::list < octave_value_list >::const_iterator idx_it = idx.begin();
+      int skip = 0;
+
+      if (ops.size() > 1) {
+       std::list < octave_value_list >::const_iterator last = idx.end();
+       --last;
+       std::list < octave_value_list > next_idx(idx.begin(), last);
+       octave_value next_ov = subsref(ops.substr(0, ops.size() - 1), next_idx);
+       next_ov.subsasgn(ops.substr(ops.size() - 1), std::list < octave_value_list > (1, *last), rhs);
+      }
+
+      else if (ops[skip] == '(' || ops[skip] == '{') {
+       const char *op_name = ops[skip] == '(' ? "__paren_asgn__" : "__brace_asgn__";
+       member_value_pair *m = find_member(op_name, false);
+       if (m) {
+         octave_value_list args;
+         args.append(as_value());
+         args.append(*idx_it);
+         args.append(rhs);
+         member_invoke(m, args, 1);
+       } else
+         error("%s member not found", op_name);
+      }
+
+      else if (ops[skip] == '.') {
+       octave_value_list subname_ovl(*idx_it++);
+       ++skip;
+       assert(subname_ovl.length() == 1 &&subname_ovl(0).is_string());
+       std::string subname = subname_ovl(0).string_value();
+
+       member_value_pair *m = find_member(subname, true);
+       if (!m->first || !m->first->set_method) {
+         m->first = 0;
+         m->second = rhs;
+       } else if (m->first->set_method) {
+         octave_value_list args;
+         if (!m->first->is_static() && !m->first->is_global())
+           args.append(as_value());
+         args.append(rhs);
+         m->first->set_method(args, 1);
+       } else
+         error("member not assignable");
+      } else
+       error("unsupported subsasgn");
+
+      return as_value();
+    }
+
+    virtual bool is_string() const {
+      octave_swig_type *nc_this = const_cast < octave_swig_type *>(this);
+      return !!nc_this->find_member("__str__", false);
+    }
+
+    virtual std::string string_value(bool force = false) const {
+      octave_swig_type *nc_this = const_cast < octave_swig_type *>(this);
+      member_value_pair *m = nc_this->find_member("__str__", false);
+      if (!m) {
+       error("__str__ method not defined");
+       return std::string();
+      }
+      octave_value_list outarg = nc_this->member_invoke(m, octave_value_list(nc_this->as_value()), 1);
+      if (outarg.length() < 1 || !outarg(0).is_string()) {
+       error("__str__ method did not return a string");
+       return std::string();
+      }
+      return outarg(0).string_value();
+    }
+
+    virtual Octave_map map_value() const {
+      return Octave_map();
+    }
+
+    virtual string_vector map_keys() const {
+      member_map tmp;
+      load_members(tmp);
+
+      string_vector keys(tmp.size());
+      int k = 0;
+      for (member_map::iterator it = tmp.begin(); it != tmp.end(); ++it)
+       keys(k++) = it->first;
+
+      return keys;
+    }
+
+    virtual bool save_ascii (std::ostream& os) {
+      return true;
+    }
+
+    virtual bool load_ascii (std::istream& is) {
+      return true;
+    }
+
+    virtual bool save_binary (std::ostream& os, bool& save_as_floats) {
+      return true;
+    }
+
+    virtual bool load_binary (std::istream& is, bool swap, 
+                             oct_mach_info::float_format fmt) {
+      return true;
+    }
+
+#if defined (HAVE_HDF5)
+    virtual bool
+      save_hdf5 (hid_t loc_id, const char *name, bool save_as_floats) {
+      return true;
+    }
+
+    virtual bool
+      load_hdf5 (hid_t loc_id, const char *name, bool have_h5giterate_bug) {
+      return true;
+    }
+#endif
+
+    virtual octave_value convert_to_str(bool pad = false, bool force = false, char type = '"') const {
+      return string_value();
+    }
+
+    virtual octave_value convert_to_str_internal(bool pad, bool force, char type) const {
+      return string_value();
+    }
+
+    static bool dispatch_global_op(const std::string &symbol, const octave_value_list &args, octave_value &ret) {
+      // we assume that "op_"-prefixed functions are installed in global namespace
+      // (rather than any module namespace).
+
+      octave_value fcn = get_global_value(symbol, true);
+      if (!fcn.is_function() && !fcn.is_function_handle())
+       return false;
+      ret = fcn.subsref("(", std::list < octave_value_list > (1, args));
+      return true;
+    }
+
+    static octave_value dispatch_unary_op(const octave_base_value &x, const char *op_name) {
+      octave_swig_type *ost = Swig::swig_value_deref(x);
+      assert(ost);
+
+      octave_value ret;
+      if (ost->dispatch_unary_op(std::string("__") + op_name + std::string("__"), ret))
+       return ret;
+      std::string symbol = "op_" + ost->swig_type_name() + "_" + op_name;
+      octave_value_list args;
+      args.append(make_value_hack(x));
+      if (dispatch_global_op(symbol, args, ret))
+       return ret;
+
+      error("could not dispatch unary operator");
+      return octave_value();
+    }
+
+    static octave_value dispatch_binary_op(const octave_base_value &lhs, const octave_base_value &rhs, const char *op_name) {
+      octave_swig_type *lhs_ost = Swig::swig_value_deref(lhs);
+      octave_swig_type *rhs_ost = Swig::swig_value_deref(rhs);
+
+      octave_value ret;
+      if (lhs_ost && lhs_ost->dispatch_binary_op(std::string("__") + op_name + std::string("__"), rhs, ret))
+       return ret;
+
+      std::string symbol;
+      octave_value_list args;
+      args.append(make_value_hack(lhs));
+      args.append(make_value_hack(rhs));
+
+      symbol = "op_";
+      symbol += lhs_ost ? lhs_ost->swig_type_name() : lhs.type_name();
+      symbol += "_";
+      symbol += op_name;
+      symbol += "_";
+      symbol += rhs_ost ? rhs_ost->swig_type_name() : rhs.type_name();
+      if (dispatch_global_op(symbol, args, ret))
+       return ret;
+
+      symbol = "op_";
+      symbol += lhs_ost ? lhs_ost->swig_type_name() : lhs.type_name();
+      symbol += "_";
+      symbol += op_name;
+      symbol += "_";
+      symbol += "any";
+      if (dispatch_global_op(symbol, args, ret))
+       return ret;
+
+      symbol = "op_";
+      symbol += "any";
+      symbol += "_";
+      symbol += op_name;
+      symbol += "_";
+      symbol += rhs_ost ? rhs_ost->swig_type_name() : rhs.type_name();
+      if (dispatch_global_op(symbol, args, ret))
+       return ret;
+
+      error("could not dispatch binary operator");
+      return octave_value();
+    }
+
+    void print(std::ostream &os, bool pr_as_read_syntax = false) const {
+      if (is_string()) {
+       os << string_value();
+       return;
+      }
+
+      member_map tmp;
+      load_members(tmp);
+
+      os << "{" << std::endl;
+      for (unsigned int j = 0; j < types.size(); ++j) {
+       if (types[j].first->clientdata) {
+         const swig_octave_class *c = (const swig_octave_class *) types[j].first->clientdata;
+         os << "  " << c->name << ", ptr = " << types[j].second.ptr << std::endl;
+       } else {
+         os << "  " << types[j].first->name << ", ptr = " << types[j].second.ptr << std::endl;
+       }
+      }
+      for (member_map::const_iterator it = tmp.begin(); it != tmp.end(); ++it) {
+       if (it->second.first) {
+         const char *objtype = it->second.first->method ? "method" : "variable";
+         const char *modifier = (it->second.first->flags &1) ? "static " : (it->second.first->flags &2) ? "global " : "";
+         os << "  " << it->second.first->name << " (" << modifier << objtype << ")" << std::endl;
+         assert(it->second.first->name == it->first);
+       } else {
+         os << "  " << it->first << std::endl;
+       }
+      }
+      os << "}" << std::endl;
+    }
+  };
+
+  // Octave tries hard to preserve pass-by-value semantics. Eg, assignments
+  // will call clone() via make_unique() if there is more than one outstanding 
+  // reference to the lhs, and forces the clone's reference count to 1 
+  // (so you can't just increment your own count and return this).
+  //
+  // One way to fix this (without modifying Octave) is to add a level of
+  // indirection such that clone copies ref-counted pointer and we keep 
+  // pass-by-ref semantics (which are more natural/expected for C++ bindings).
+  //
+  // Supporting both pass-by-{ref,value} and toggling via %feature/option 
+  // might be nice.
+
+  class octave_swig_ref:public octave_base_value {
+    octave_swig_type *ptr;
+  public:
+    octave_swig_ref(octave_swig_type *_ptr = 0)
+      :ptr(_ptr) { }
+
+    ~octave_swig_ref()
+      { if (ptr) ptr->decref(); }
+
+    octave_swig_type *get_ptr() const
+      { return ptr; }
+
+    octave_base_value *clone() const
+      { if (ptr) ptr->incref(); return new octave_swig_ref(ptr); }
+
+    octave_base_value *empty_clone() const
+      { return new octave_swig_ref(0); }
+
+    bool is_defined() const
+      { return ptr->is_defined(); }
+
+    virtual bool is_map() const 
+      { return ptr->is_map(); }
+
+    virtual octave_value subsref(const std::string &ops, const std::list < octave_value_list > &idx) 
+      { return ptr->subsref(ops, idx); }
+
+    virtual octave_value_list subsref(const std::string &ops, const std::list < octave_value_list > &idx, int nargout)
+      { return ptr->subsref(ops, idx, nargout); }
+
+    octave_value subsasgn(const std::string &ops, const std::list < octave_value_list > &idx, const octave_value &rhs)
+      { return ptr->subsasgn(ops, idx, rhs); }
+
+    virtual bool is_string() const 
+      { return ptr->is_string(); }
+
+    virtual std::string string_value(bool force = false) const 
+      { return ptr->string_value(force); }
+
+    virtual Octave_map map_value() const
+      { return ptr->map_value(); }
+
+    virtual string_vector map_keys() const
+      { return ptr->map_keys(); }
+
+    virtual bool save_ascii (std::ostream& os)
+      { return ptr->save_ascii(os); }
+
+    virtual bool load_ascii (std::istream& is)
+      { return ptr->load_ascii(is); }
+
+    virtual bool save_binary (std::ostream& os, bool& save_as_floats)
+      { return ptr->save_binary(os, save_as_floats); }
+
+    virtual bool load_binary (std::istream& is, bool swap, 
+                             oct_mach_info::float_format fmt)
+      { return ptr->load_binary(is, swap, fmt); }
+
+#if defined (HAVE_HDF5)
+    virtual bool
+      save_hdf5 (hid_t loc_id, const char *name, bool save_as_floats)
+      { return ptr->save_hdf5(loc_id, name, save_as_floats); }
+
+    virtual bool
+      load_hdf5 (hid_t loc_id, const char *name, bool have_h5giterate_bug)
+      { return ptr->load_hdf5(loc_id, name, have_h5giterate_bug); }
+#endif
+
+    virtual octave_value convert_to_str(bool pad = false, bool force = false, char type = '"') const
+      { return ptr->convert_to_str(pad, force, type); }
+
+    virtual octave_value convert_to_str_internal(bool pad, bool force, char type) const
+      { return ptr->convert_to_str_internal(pad, force, type); }
+
+    void print(std::ostream &os, bool pr_as_read_syntax = false) const
+      { return ptr->print(os, pr_as_read_syntax); }
+
+  private:
+    DECLARE_OCTAVE_ALLOCATOR;
+    DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA;
+  };
+  DEFINE_OCTAVE_ALLOCATOR(octave_swig_ref);
+  DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA(octave_swig_ref, "swig_ref", "swig_ref");
+
+  class octave_swig_packed:public octave_base_value {
+    swig_type_info *type;
+    std::vector < char > buf;
+  public:
+
+    octave_swig_packed(swig_type_info *_type = 0, const void *_buf = 0, size_t _buf_len = 0)
+      :        type(_type), buf((const char*)_buf, (const char*)_buf + _buf_len) {
+    }
+
+    bool copy(swig_type_info *outtype, void *ptr, size_t sz) const {
+      if (outtype && outtype != type)
+       return false;
+      assert(sz <= buf.size());
+      std::copy(buf.begin(), buf.begin()+sz, (char*)ptr);
+      return true;
+    }
+
+    octave_base_value *clone() const {
+      return new octave_swig_packed(*this);
+    }
+
+    octave_base_value *empty_clone() const {
+      return new octave_swig_packed();
+    }
+
+    bool is_defined() const {
+      return true;
+    }
+
+    void print(std::ostream &os, bool pr_as_read_syntax = false) const {
+      os << "swig packed type: name = " << (type ? type->name : std::string()) << ", len = " << buf.size() << std::endl;
+    }
+
+
+    virtual bool save_ascii (std::ostream& os) {
+      return true;
+    }
+
+    virtual bool load_ascii (std::istream& is) {
+      return true;
+    }
+
+    virtual bool save_binary (std::ostream& os, bool& save_as_floats) {
+      return true;
+    }
+
+    virtual bool load_binary (std::istream& is, bool swap, 
+                             oct_mach_info::float_format fmt) {
+      return true;
+    }
+
+#if defined (HAVE_HDF5)
+    virtual bool
+      save_hdf5 (hid_t loc_id, const char *name, bool save_as_floats) {
+      return true;
+    }
+
+    virtual bool
+      load_hdf5 (hid_t loc_id, const char *name, bool have_h5giterate_bug) {
+      return true;
+    }
+#endif
+
+  private:
+    DECLARE_OCTAVE_ALLOCATOR;
+    DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA;
+  };
+  DEFINE_OCTAVE_ALLOCATOR(octave_swig_packed);
+  DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA(octave_swig_packed, "swig_packed", "swig_packed");
+
+  static octave_value_list octave_set_immutable(const octave_value_list &args, int nargout) {
+    error("attempt to set immutable member variable");
+    return octave_value_list();
+  }
+
+  struct octave_value_ref {
+    const octave_value_list &ovl;
+    int j;
+
+    octave_value_ref(const octave_value_list &_ovl, int _j)
+      :ovl(_ovl), j(_j) { }
+
+    operator  octave_value() const {
+      return ovl(j);
+    }
+
+    octave_value operator*() const {
+      return ovl(j);
+    }
+  };
+
+  octave_value_list swig_subclass(const octave_value_list &args, int nargout) {
+    octave_swig_type *top = new octave_swig_type;
+    for (int j = 0; j < args.length(); ++j) {
+      if (args(j).type_id() == octave_swig_ref::static_type_id()) {
+       octave_swig_ref *osr = static_cast < octave_swig_ref *>(args(j).internal_rep());
+       octave_swig_type *ost = osr->get_ptr();
+       if (!ost->is_owned()) {
+         error("cannot subclass object not constructed on octave side");
+         return octave_value_list();
+       }
+       top->merge(*ost);
+      } else if (args(j).is_function_handle()) {
+       top->assign(args(j).fcn_handle_value()->fcn_name(), args(j));
+      } else if (args(j).is_string()) {
+       if (j + 1 >= args.length()) {
+         error("member assignments must be of string,value form");
+         return octave_value_list();
+       }
+       top->assign(args(j).string_value(), args(j + 1));
+       ++j;
+      } else {
+       error("invalid arguments to subclass");
+       return octave_value_list();
+      }
+    }
+    return octave_value(Swig::swig_value_ref(top));
+  }
+
+  octave_value_list swig_type(const octave_value_list &args, int nargout) {
+    if (args.length() != 1) {
+      error("swig_typeinfo must be called with only a single object");
+      return octave_value_list();
+    }
+    octave_swig_type *ost = Swig::swig_value_deref(args(0));
+    if (!ost) {
+      error("object is not a swig_ref");
+      return octave_value_list();
+    }
+    return octave_value(ost->swig_type_name());
+  }
+
+  octave_value_list swig_typequery(const octave_value_list &args, int nargout) {
+    if (args.length() != 1 || !args(0).is_string()) {
+      error("swig_typeinfo must be called with single string argument");
+      return octave_value_list();
+    }
+    swig_module_info *module = SWIG_GetModule(0);
+    swig_type_info *type = SWIG_TypeQueryModule(module, module, args(0).string_value().c_str());
+    if (!type)
+      return octave_value("<unknown>");
+    return octave_value(type->name);
+  }
+
+  octave_value_list swig_this(const octave_value_list &args, int nargout) {
+    if (args.length() != 1) {
+      error("swig_typeinfo must be called with only a single object");
+      return octave_value_list();
+    }
+    if (args(0).is_matrix_type() && args(0).rows() == 0 && args(0).columns() == 0)
+      return octave_value(octave_uint64(0));
+    octave_swig_type *ost = Swig::swig_value_deref(args(0));
+    if (!ost) {
+      error("object is not a swig_ref");
+      return octave_value_list();
+    }
+    return octave_value(octave_uint64((unsigned long long) ost->swig_this()));
+  }
+
+#define SWIG_DIRECTORS
+
+namespace Swig {
+  class Director {
+    octave_swig_type *self;
+    bool disowned;
+
+    Director(const Director &x);
+    Director &operator=(const Director &rhs);
+  public:
+
+    Director(void *vptr):self(0), disowned(false) {
+      set_rtdir(vptr, this);
+    }
+
+    ~Director() {
+      swig_director_destroyed(self, this);
+      if (disowned)
+       self->decref();
+    }
+
+    void swig_set_self(octave_swig_type *new_self) {
+      assert(!disowned);
+      self = new_self;
+    }
+
+    octave_swig_type *swig_get_self() const {
+      return self;
+    }
+
+    void swig_disown() {
+      if (disowned)
+       return;
+      disowned = true;
+      self->incref();
+    }
+  };
+
+  struct DirectorTypeMismatchException {
+    static void raise(const char *msg) {
+      // ... todo
+      throw(DirectorTypeMismatchException());
+    }
+
+    static void raise(const octave_value &ov, const char *msg) {
+      // ... todo
+      raise(msg);
+    }
+  };
+  struct DirectorPureVirtualException {
+    static void raise(const char *msg) {
+      // ... todo
+      throw(DirectorPureVirtualException());
+    }
+
+    static void raise(const octave_value &ov, const char *msg) {
+      // ... todo
+      raise(msg);
+    }
+  };
+
+}
+
+  SWIGRUNTIME void swig_acquire_ownership(void *vptr) {
+    //  assert(0);
+    // ... todo
+  }
+
+  SWIGRUNTIME void swig_acquire_ownership_array(void *vptr) {
+    //  assert(0);
+    // ... todo
+  }
+
+  SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own) {
+    //  assert(0);
+    // ... todo
+  }
+
+  namespace Swig {
+    SWIGRUNTIME void swig_director_destroyed(octave_swig_type *self, Director *d) {
+      self->director_destroyed(d);
+    }
+
+    SWIGRUNTIME void swig_director_set_self(Director *d, octave_swig_type *self) {
+      d->swig_set_self(self);
+    }
+
+    SWIGRUNTIME octave_base_value *swig_value_ref(octave_swig_type *ost) {
+      return new octave_swig_ref(ost);
+    }
+
+    SWIGRUNTIME octave_swig_type *swig_value_deref(octave_value ov) {
+      if (ov.is_cell() && ov.rows() == 1 && ov.columns() == 1)
+       ov = ov.cell_value()(0);
+      return swig_value_deref(*ov.internal_rep());
+    }
+
+    SWIGRUNTIME octave_swig_type *swig_value_deref(const octave_base_value &ov) {
+      if (ov.type_id() != octave_swig_ref::static_type_id())
+       return 0;
+      const octave_swig_ref *osr = static_cast < const octave_swig_ref *>(&ov);
+      return osr->get_ptr();
+    }
+
+  }
+
+#define swig_unary_op(name) \
+SWIGRUNTIME octave_value swig_unary_op_##name(const octave_base_value &x) { \
+  return octave_swig_type::dispatch_unary_op(x,#name); \
+}
+#define swig_binary_op(name) \
+SWIGRUNTIME octave_value swig_binary_op_##name(const octave_base_value&lhs,const octave_base_value &rhs) { \
+  return octave_swig_type::dispatch_binary_op(lhs,rhs,#name); \
+}
+#define swigreg_unary_op(name) \
+if (!octave_value_typeinfo::lookup_unary_op(octave_value::op_##name,tid)) \
+octave_value_typeinfo::register_unary_op(octave_value::op_##name,tid,swig_unary_op_##name);
+#define swigreg_binary_op(name) \
+if (!octave_value_typeinfo::lookup_binary_op(octave_value::op_##name,tid1,tid2)) \
+octave_value_typeinfo::register_binary_op(octave_value::op_##name,tid1,tid2,swig_binary_op_##name);
+
+  swig_unary_op(not);
+  swig_unary_op(uplus);
+  swig_unary_op(uminus);
+  swig_unary_op(transpose);
+  swig_unary_op(hermitian);
+  swig_unary_op(incr);
+  swig_unary_op(decr);
+
+  swig_binary_op(add);
+  swig_binary_op(sub);
+  swig_binary_op(mul);
+  swig_binary_op(div);
+  swig_binary_op(pow);
+  swig_binary_op(ldiv);
+  swig_binary_op(lshift);
+  swig_binary_op(rshift);
+  swig_binary_op(lt);
+  swig_binary_op(le);
+  swig_binary_op(eq);
+  swig_binary_op(ge);
+  swig_binary_op(gt);
+  swig_binary_op(ne);
+  swig_binary_op(el_mul);
+  swig_binary_op(el_div);
+  swig_binary_op(el_pow);
+  swig_binary_op(el_ldiv);
+  swig_binary_op(el_and);
+  swig_binary_op(el_or);
+
+  SWIGRUNTIME void SWIG_InstallUnaryOps(int tid) {
+    swigreg_unary_op(not);
+    swigreg_unary_op(uplus);
+    swigreg_unary_op(uminus);
+    swigreg_unary_op(transpose);
+    swigreg_unary_op(hermitian);
+    swigreg_unary_op(incr);
+    swigreg_unary_op(decr);
+  }
+  SWIGRUNTIME void SWIG_InstallBinaryOps(int tid1, int tid2) {
+    swigreg_binary_op(add);
+    swigreg_binary_op(sub);
+    swigreg_binary_op(mul);
+    swigreg_binary_op(div);
+    swigreg_binary_op(pow);
+    swigreg_binary_op(ldiv);
+    swigreg_binary_op(lshift);
+    swigreg_binary_op(rshift);
+    swigreg_binary_op(lt);
+    swigreg_binary_op(le);
+    swigreg_binary_op(eq);
+    swigreg_binary_op(ge);
+    swigreg_binary_op(gt);
+    swigreg_binary_op(ne);
+    swigreg_binary_op(el_mul);
+    swigreg_binary_op(el_div);
+    swigreg_binary_op(el_pow);
+    swigreg_binary_op(el_ldiv);
+    swigreg_binary_op(el_and);
+    swigreg_binary_op(el_or);
+  }
+  SWIGRUNTIME void SWIG_InstallOps(int tid) {
+    // here we assume that tid are conseq integers increasing from zero, and 
+    // that our tid is the last one. might be better to have explicit string 
+    // list of types we should bind to, and use lookup_type to resolve their tid.
+
+    SWIG_InstallUnaryOps(tid);
+    SWIG_InstallBinaryOps(tid, tid);
+    for (int j = 0; j < tid; ++j) {
+      SWIG_InstallBinaryOps(j, tid);
+      SWIG_InstallBinaryOps(tid, j);
+    }
+  }
+
+SWIGRUNTIME octave_value SWIG_Octave_NewPointerObj(void *ptr, swig_type_info *type, int flags) {
+  int own = (flags &SWIG_POINTER_OWN) ? SWIG_POINTER_OWN : 0;
+
+  Swig::Director *d = Swig::get_rtdir(ptr);
+  if (d && d->swig_get_self())
+    return d->swig_get_self()->as_value();
+  return Swig::swig_value_ref(new octave_swig_type(ptr, type, own));
+}
+
+SWIGRUNTIME int SWIG_Octave_ConvertPtrAndOwn(octave_value ov, void **ptr, swig_type_info *type, int flags, int *own) {
+  if (ov.is_cell() && ov.rows() == 1 && ov.columns() == 1)
+    ov = ov.cell_value()(0);
+  if (!ov.is_defined() ||
+      (ov.is_matrix_type() && ov.rows() == 0 && ov.columns() == 0) ) {
+    if (ptr)
+      *ptr = 0;
+    return SWIG_OK;
+  }
+  if (ov.type_id() != octave_swig_ref::static_type_id())
+    return SWIG_ERROR;
+  octave_swig_ref *osr = static_cast < octave_swig_ref *>(ov.internal_rep());
+  octave_swig_type *ost = osr->get_ptr();
+  void *vptr = ost->cast(type, own, flags);
+  if (!vptr)
+    return SWIG_ERROR;
+  if (ptr)
+    *ptr = vptr;
+  return SWIG_OK;
+}
+
+SWIGRUNTIME octave_value SWIG_Octave_NewPackedObj(void *ptr, size_t sz, swig_type_info *type) {
+  return new octave_swig_packed(type, (char *) ptr, sz);
+}
+
+SWIGRUNTIME int SWIG_Octave_ConvertPacked(const octave_value &ov, void *ptr, size_t sz, swig_type_info *type) {
+  if (!ov.is_defined())
+    return SWIG_ERROR;
+  if (ov.type_id() != octave_swig_packed::static_type_id())
+    return SWIG_ERROR;
+  octave_swig_packed *ost = static_cast < octave_swig_packed *>(ov.internal_rep());
+  return ost->copy(type, (char *) ptr, sz) ? SWIG_OK : SWIG_ERROR;
+}
+
+void SWIG_Octave_SetConstant(octave_swig_type *module_ns, const std::string &name, const octave_value &ov) {
+  module_ns->assign(name, ov);
+}
+
+SWIGRUNTIME swig_module_info *SWIG_Octave_GetModule(void *clientdata) {
+  octave_value ov = get_global_value("__SWIG_MODULE__" SWIG_TYPE_TABLE_NAME SWIG_RUNTIME_VERSION, true);
+  if (!ov.is_defined() ||
+      ov.type_id() != octave_swig_packed::static_type_id())
+    return 0;
+  const octave_swig_packed* osp = 
+    static_cast < const octave_swig_packed *> (ov.internal_rep());
+  swig_module_info *pointer = 0;
+  osp->copy(0, &pointer, sizeof(swig_module_info *));
+  return pointer;
+}
+
+SWIGRUNTIME void SWIG_Octave_SetModule(void *clientdata, swig_module_info *pointer) {
+  octave_value ov = new octave_swig_packed(0, &pointer, sizeof(swig_module_info *));
+  const char *module_var = "__SWIG_MODULE__" SWIG_TYPE_TABLE_NAME SWIG_RUNTIME_VERSION;
+#if USE_OCTAVE_API_VERSION<37
+  link_to_global_variable(curr_sym_tab->lookup(module_var, true));
+#else
+  symbol_table::varref(module_var);
+  symbol_table::mark_global(module_var);
+#endif
+  set_global_value(module_var, ov);
+}
+
+
+
+#define SWIG_exception_fail(code, msg) do { SWIG_Error(code, msg); SWIG_fail; } while(0) 
+
+#define SWIG_contract_assert(expr, msg) if (!(expr)) { SWIG_Error(SWIG_RuntimeError, msg); SWIG_fail; } else 
+
+
+
+  #define SWIG_exception(code, msg) do { SWIG_Error(code, msg); SWIG_fail;; } while(0) 
+
+
+/* -------- TYPES TABLE (BEGIN) -------- */
+
+#define SWIGTYPE_p_Cv32suf swig_types[0]
+#define SWIGTYPE_p_Cv64suf swig_types[1]
+#define SWIGTYPE_p_CvAttrList swig_types[2]
+#define SWIGTYPE_p_CvAvgComp swig_types[3]
+#define SWIGTYPE_p_CvBox2D swig_types[4]
+#define SWIGTYPE_p_CvCapture swig_types[5]
+#define SWIGTYPE_p_CvChain swig_types[6]
+#define SWIGTYPE_p_CvChainPtReader swig_types[7]
+#define SWIGTYPE_p_CvConDensation swig_types[8]
+#define SWIGTYPE_p_CvConnectedComp swig_types[9]
+#define SWIGTYPE_p_CvContour swig_types[10]
+#define SWIGTYPE_p_CvContourTree swig_types[11]
+#define SWIGTYPE_p_CvConvexityDefect swig_types[12]
+#define SWIGTYPE_p_CvFileNode swig_types[13]
+#define SWIGTYPE_p_CvFileStorage swig_types[14]
+#define SWIGTYPE_p_CvFilter swig_types[15]
+#define SWIGTYPE_p_CvFont swig_types[16]
+#define SWIGTYPE_p_CvGenericHash swig_types[17]
+#define SWIGTYPE_p_CvGraph swig_types[18]
+#define SWIGTYPE_p_CvGraphEdge swig_types[19]
+#define SWIGTYPE_p_CvGraphScanner swig_types[20]
+#define SWIGTYPE_p_CvGraphVtx swig_types[21]
+#define SWIGTYPE_p_CvGraphVtx2D swig_types[22]
+#define SWIGTYPE_p_CvHaarClassifier swig_types[23]
+#define SWIGTYPE_p_CvHaarClassifierCascade swig_types[24]
+#define SWIGTYPE_p_CvHaarFeature swig_types[25]
+#define SWIGTYPE_p_CvHaarStageClassifier swig_types[26]
+#define SWIGTYPE_p_CvHidHaarClassifierCascade swig_types[27]
+#define SWIGTYPE_p_CvHistogram swig_types[28]
+#define SWIGTYPE_p_CvHuMoments swig_types[29]
+#define SWIGTYPE_p_CvKalman swig_types[30]
+#define SWIGTYPE_p_CvLineIterator swig_types[31]
+#define SWIGTYPE_p_CvMSERParams swig_types[32]
+#define SWIGTYPE_p_CvMat swig_types[33]
+#define SWIGTYPE_p_CvMatND swig_types[34]
+#define SWIGTYPE_p_CvMatrix3 swig_types[35]
+#define SWIGTYPE_p_CvMemBlock swig_types[36]
+#define SWIGTYPE_p_CvMemStorage swig_types[37]
+#define SWIGTYPE_p_CvMemStoragePos swig_types[38]
+#define SWIGTYPE_p_CvModuleInfo swig_types[39]
+#define SWIGTYPE_p_CvMoments swig_types[40]
+#define SWIGTYPE_p_CvNArrayIterator swig_types[41]
+#define SWIGTYPE_p_CvNextEdgeType swig_types[42]
+#define SWIGTYPE_p_CvPOSITObject swig_types[43]
+#define SWIGTYPE_p_CvPluginFuncInfo swig_types[44]
+#define SWIGTYPE_p_CvPoint swig_types[45]
+#define SWIGTYPE_p_CvPoint2D32f swig_types[46]
+#define SWIGTYPE_p_CvPoint2D64f swig_types[47]
+#define SWIGTYPE_p_CvPoint3D32f swig_types[48]
+#define SWIGTYPE_p_CvPoint3D64f swig_types[49]
+#define SWIGTYPE_p_CvQuadEdge2D swig_types[50]
+#define SWIGTYPE_p_CvRNG_Wrapper swig_types[51]
+#define SWIGTYPE_p_CvRect swig_types[52]
+#define SWIGTYPE_p_CvSURFParams swig_types[53]
+#define SWIGTYPE_p_CvSURFPoint swig_types[54]
+#define SWIGTYPE_p_CvScalar swig_types[55]
+#define SWIGTYPE_p_CvSeq swig_types[56]
+#define SWIGTYPE_p_CvSeqBlock swig_types[57]
+#define SWIGTYPE_p_CvSeqReader swig_types[58]
+#define SWIGTYPE_p_CvSeqWriter swig_types[59]
+#define SWIGTYPE_p_CvSet swig_types[60]
+#define SWIGTYPE_p_CvSetElem swig_types[61]
+#define SWIGTYPE_p_CvSize swig_types[62]
+#define SWIGTYPE_p_CvSize2D32f swig_types[63]
+#define SWIGTYPE_p_CvSlice swig_types[64]
+#define SWIGTYPE_p_CvSparseMat swig_types[65]
+#define SWIGTYPE_p_CvSparseMatIterator swig_types[66]
+#define SWIGTYPE_p_CvSparseNode swig_types[67]
+#define SWIGTYPE_p_CvStarDetectorParams swig_types[68]
+#define SWIGTYPE_p_CvStarKeypoint swig_types[69]
+#define SWIGTYPE_p_CvStereoBMState swig_types[70]
+#define SWIGTYPE_p_CvStereoGCState swig_types[71]
+#define SWIGTYPE_p_CvString swig_types[72]
+#define SWIGTYPE_p_CvStringHashNode swig_types[73]
+#define SWIGTYPE_p_CvSubdiv2D swig_types[74]
+#define SWIGTYPE_p_CvSubdiv2DEdge_Wrapper swig_types[75]
+#define SWIGTYPE_p_CvSubdiv2DPoint swig_types[76]
+#define SWIGTYPE_p_CvSubdiv2DPointLocation swig_types[77]
+#define SWIGTYPE_p_CvTermCriteria swig_types[78]
+#define SWIGTYPE_p_CvTreeNodeIterator swig_types[79]
+#define SWIGTYPE_p_CvTypeInfo swig_types[80]
+#define SWIGTYPE_p_CvTypedSeqT_CvConnectedComp_t swig_types[81]
+#define SWIGTYPE_p_CvTypedSeqT_CvPoint2D32f_t swig_types[82]
+#define SWIGTYPE_p_CvTypedSeqT_CvPoint_t swig_types[83]
+#define SWIGTYPE_p_CvTypedSeqT_CvQuadEdge2D_t swig_types[84]
+#define SWIGTYPE_p_CvTypedSeqT_CvRect_t swig_types[85]
+#define SWIGTYPE_p_CvTypedSeqT_CvSeq_p_t swig_types[86]
+#define SWIGTYPE_p_CvTypedSeqT_CvTupleT_CvPoint_2_t_t swig_types[87]
+#define SWIGTYPE_p_CvTypedSeqT_CvTupleT_float_2_t_t swig_types[88]
+#define SWIGTYPE_p_CvTypedSeqT_CvTupleT_float_3_t_t swig_types[89]
+#define SWIGTYPE_p_CvVideoWriter swig_types[90]
+#define SWIGTYPE_p_CvvImage swig_types[91]
+#define SWIGTYPE_p__IplConvKernel swig_types[92]
+#define SWIGTYPE_p__IplConvKernelFP swig_types[93]
+#define SWIGTYPE_p__IplImage swig_types[94]
+#define SWIGTYPE_p__IplROI swig_types[95]
+#define SWIGTYPE_p__IplTileInfo swig_types[96]
+#define SWIGTYPE_p_allocator_type swig_types[97]
+#define SWIGTYPE_p_char swig_types[98]
+#define SWIGTYPE_p_difference_type swig_types[99]
+#define SWIGTYPE_p_f_int__void swig_types[100]
+#define SWIGTYPE_p_f_int_int_int_int_p_void__void swig_types[101]
+#define SWIGTYPE_p_f_int_p_void__void swig_types[102]
+#define SWIGTYPE_p_int swig_types[103]
+#define SWIGTYPE_p_int64_t swig_types[104]
+#define SWIGTYPE_p_octave_value swig_types[105]
+#define SWIGTYPE_p_p_CvCapture swig_types[106]
+#define SWIGTYPE_p_p_CvVideoWriter swig_types[107]
+#define SWIGTYPE_p_p_char swig_types[108]
+#define SWIGTYPE_p_signed_char swig_types[109]
+#define SWIGTYPE_p_size_t swig_types[110]
+#define SWIGTYPE_p_size_type swig_types[111]
+#define SWIGTYPE_p_uint64_t swig_types[112]
+#define SWIGTYPE_p_unsigned_char swig_types[113]
+#define SWIGTYPE_p_unsigned_short swig_types[114]
+#define SWIGTYPE_p_value_type swig_types[115]
+#define SWIGTYPE_p_void swig_types[116]
+static swig_type_info *swig_types[118];
+static swig_module_info swig_module = {swig_types, 117, 0, 0, 0, 0};
+#define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)
+#define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)
+
+/* -------- TYPES TABLE (END) -------- */
+
+
+#define SWIGVERSION 0x010340 
+#define SWIG_VERSION SWIGVERSION
+
+
+#define SWIG_as_voidptr(a) (void *)((const void *)(a)) 
+#define SWIG_as_voidptrptr(a) ((void)SWIG_as_voidptr(*a),(void**)(a)) 
+
+
+#include <stdexcept>
+
+
+#include <cxtypes.h>
+#include <cv.h>
+#include <highgui.h>
+#include "octhelpers.h"
+#include "octcvseq.hpp"
+
+
+
+
+  static inline bool OctSwigObject_Check(const octave_value& ov) {
+    return ov.type_id()==octave_swig_ref::static_type_id();
+  }
+
+  static CvArr * OctObject_to_CvArr(octave_value obj, bool * freearg);
+  static CvArr * OctSequence_to_CvArr( octave_value obj );
+
+  // convert a octave sequence/array/list object into a c-array
+#define OctObject_AsArrayImpl(func, ctype, ptype)                              \
+ int func(octave_value obj, ctype * array, int len){                         \
+   void * mat_vptr=NULL;                                                     \
+   void * im_vptr=NULL;                                                      \
+   if(OctNumber_Check(obj)){                                                  \
+     memset( array, 0, sizeof(ctype)*len );                                \
+     array[0] = OctObject_As##ptype( obj );                                 \
+   }                                                                         \
+   else if(OctList_Check(obj) || OctTuple_Check(obj)){                         \
+     int seqsize = OctSequence_Size(obj);                                   \
+     for(int i=0; i<len && i<seqsize; i++){                                \
+       if(i<seqsize){                                                    \
+        array[i] =  OctObject_As##ptype( OctSequence_GetItem(obj, i) ); \
+       }                                                                 \
+       else{                                                             \
+        array[i] = 0;                                                 \
+       }                                                                 \
+     }                                                                     \
+   }                                                                         \
+   else if( SWIG_ConvertPtr(obj, &mat_vptr, SWIGTYPE_p_CvMat, 0)!=-1 ||      \
+           SWIG_ConvertPtr(obj, &im_vptr, SWIGTYPE_p__IplImage, 0)!=-1)     \
+     {                                                                         \
+       CvMat * mat = (CvMat *) mat_vptr;                                     \
+       CvMat stub;                                                           \
+       if(im_vptr) mat = cvGetMat(im_vptr, &stub);                           \
+       if( mat->rows!=1 && mat->cols!=1 ){                                   \
+        error("OctObject_As*Array: CvArr must be row or column vector" );   \
+        return -1;                                                        \
+       }                                                                     \
+       if( mat->rows==1 && mat->cols==1 ){                                   \
+        CvScalar val;                                                     \
+        if( len!=CV_MAT_CN(mat->type) ){                                  \
+          error("OctObject_As*Array: CvArr channels != length" );              \
+          return -1;                                                    \
+        }                                                                 \
+        val = cvGet1D(mat, 0);                                            \
+        for(int i=0; i<len; i++){                                         \
+          array[i] = (ctype) val.val[i];                                \
+        }                                                                 \
+       }                                                                     \
+       else{                                                                 \
+        mat = cvReshape(mat, &stub, -1, mat->rows*mat->cols);             \
+        if( mat->rows != len ){                                           \
+          error("OctObject_As*Array: CvArr rows or cols must equal length" ); \
+          return -1;                                                   \
+        }                                                                 \
+        for(int i=0; i<len; i++){                                         \
+          CvScalar val = cvGet1D(mat, i);                               \
+          array[i] = (ctype) val.val[0];                                \
+        }                                                                 \
+       }                                                                     \
+     }                                                                         \
+   else{                                                                     \
+     error("OctObject_As*Array: Expected a number, sequence or CvArr" );  \
+     return -1;                                                            \
+   }                                                                         \
+   return 0;                                                                 \
+ }
+
+  OctObject_AsArrayImpl( OctObject_AsFloatArray, float, Double );
+  OctObject_AsArrayImpl( OctObject_AsDoubleArray, double, Double );
+  OctObject_AsArrayImpl( OctObject_AsLongArray, int, Long );
+
+  static CvPoint OctObject_to_CvPoint(octave_value obj){
+    CvPoint val;
+    CvPoint *ptr;
+    CvPoint2D32f * ptr2D32f;
+    CvScalar * scalar;
+
+    if( SWIG_ConvertPtr(obj, (void**)&ptr, SWIGTYPE_p_CvPoint, 0) != -1) {
+      return *ptr;
+    }
+    if( SWIG_ConvertPtr(obj, (void**)&ptr2D32f, SWIGTYPE_p_CvPoint2D32f, 0) != -1) {
+      return cvPointFrom32f( *ptr2D32f );
+    }
+    if( SWIG_ConvertPtr(obj, (void**)&scalar, SWIGTYPE_p_CvScalar, 0) != -1) {
+      return cvPointFrom32f(cvPoint2D32f( scalar->val[0], scalar->val[1] ));
+    }
+    if(OctObject_AsLongArray(obj, (int *) &val, 2) != -1){
+      return val;
+    }
+
+    error("could not convert to CvPoint");
+    return cvPoint(0,0);
+  }
+
+  static CvPoint2D32f OctObject_to_CvPoint2D32f(octave_value obj){
+    CvPoint2D32f val;
+    CvPoint2D32f *ptr2D32f;
+    CvPoint *ptr;
+    CvScalar * scalar;
+    if( SWIG_ConvertPtr(obj, (void**)&ptr2D32f, SWIGTYPE_p_CvPoint2D32f, 0) != -1) {
+      return *ptr2D32f;
+    }
+    if( SWIG_ConvertPtr(obj, (void**)&ptr, SWIGTYPE_p_CvPoint, 0) != -1) {
+      return cvPointTo32f(*ptr);
+    }
+    if( SWIG_ConvertPtr(obj, (void**)&scalar, SWIGTYPE_p_CvScalar, 0) != -1) {
+      return cvPoint2D32f( scalar->val[0], scalar->val[1] );
+    }
+    if(OctObject_AsFloatArray(obj, (float *) &val, 2) != -1){
+      return val;
+    }
+    error("could not convert to CvPoint2D32f");
+    return cvPoint2D32f(0,0);
+  }
+
+  static CvScalar OctObject_to_CvScalar(octave_value obj){
+    CvScalar val;
+    CvScalar * ptr;
+    CvPoint2D32f *ptr2D32f;
+    CvPoint *pt_ptr;
+    void * vptr;
+    if( SWIG_ConvertPtr(obj, &vptr, SWIGTYPE_p_CvScalar, 0 ) != -1)
+      {
+       ptr = (CvScalar *) vptr;
+       return *ptr;
+      }
+    if( SWIG_ConvertPtr(obj, (void**)&ptr2D32f, SWIGTYPE_p_CvPoint2D32f, 0) != -1) {
+      return cvScalar(ptr2D32f->x, ptr2D32f->y);
+    }
+    if( SWIG_ConvertPtr(obj, (void**)&pt_ptr, SWIGTYPE_p_CvPoint, 0) != -1) {
+      return cvScalar(pt_ptr->x, pt_ptr->y);
+    }
+    if(OctObject_AsDoubleArray(obj, val.val, 4)!=-1){
+      return val;
+    }
+    return cvScalar(-1,-1,-1,-1); 
+  }
+
+  // if octave sequence type, convert to CvMat or CvMatND
+  static CvArr * OctObject_to_CvArr(octave_value obj, bool * freearg){
+    CvArr * cvarr;
+    *freearg = false;
+
+    // check if OpenCV type
+    if ( OctSwigObject_Check(obj) ){
+      SWIG_ConvertPtr(obj, &cvarr, 0, SWIG_POINTER_EXCEPTION);
+    }
+    else if (OctList_Check(obj) || OctTuple_Check(obj)){
+      cvarr = OctSequence_to_CvArr( obj );
+      *freearg = (cvarr != NULL);
+    }
+    else if (OctLong_Check(obj) && OctLong_AsLong(obj)==0){
+      return NULL;
+    }
+    else {
+      SWIG_ConvertPtr(obj, (void**)&cvarr, 0, SWIG_POINTER_EXCEPTION);
+    }
+    return cvarr;
+  }
+
+  static int OctObject_GetElemType(octave_value obj){
+    void *vptr;
+    if(SWIG_ConvertPtr(obj, &vptr, SWIGTYPE_p_CvPoint, 0) != -1) return CV_32SC2;      
+    if(SWIG_ConvertPtr(obj, &vptr, SWIGTYPE_p_CvSize, 0) != -1) return CV_32SC2;       
+    if(SWIG_ConvertPtr(obj, &vptr, SWIGTYPE_p_CvRect, 0) != -1) return CV_32SC4;       
+    if(SWIG_ConvertPtr(obj, &vptr, SWIGTYPE_p_CvSize2D32f, 0) != -1) return CV_32FC2;  
+    if(SWIG_ConvertPtr(obj, &vptr, SWIGTYPE_p_CvPoint2D32f, 0) != -1) return CV_32FC2; 
+    if(SWIG_ConvertPtr(obj, &vptr, SWIGTYPE_p_CvPoint3D32f, 0) != -1) return CV_32FC3; 
+    if(SWIG_ConvertPtr(obj, &vptr, SWIGTYPE_p_CvPoint2D64f, 0) != -1) return CV_64FC2; 
+    if(SWIG_ConvertPtr(obj, &vptr, SWIGTYPE_p_CvPoint3D64f, 0) != -1) return CV_64FC3; 
+    if(SWIG_ConvertPtr(obj, &vptr, SWIGTYPE_p_CvScalar, 0) != -1) return CV_64FC4;     
+    if(OctTuple_Check(obj) || OctList_Check(obj)) return CV_MAKE_TYPE(CV_32F, OctSequence_Size( obj ));
+    if(OctLong_Check(obj)) return CV_32S;
+    return CV_32F;
+  }
+
+  // Would like this to convert Octave lists to CvMat
+  // Also lists of CvPoints, CvScalars, CvMats? etc
+  static CvArr * OctSequence_to_CvArr( octave_value obj ){
+    int dims[CV_MAX_DIM] = {1,1,1};
+    int ndim=0;
+    int cvtype;
+    octave_value item;
+
+    // figure out dimensions
+    for(item = obj; 
+       (OctTuple_Check(item) || OctList_Check(item));
+       item = OctSequence_GetItem(item, 0))
+      {
+       dims[ndim] = OctSequence_Size( item ); 
+       ndim++;
+      }
+
+    if(ndim==0){
+      error("Cannot convert an empty octave object to a CvArr");
+      return NULL;
+    }
+
+    cvtype = OctObject_GetElemType(item);
+    // collapse last dim into NCH if we found a single channel, but the last dim is <=3
+    if(CV_MAT_CN(cvtype)==1 && dims[ndim-1]>1 && dims[ndim-1]<4){
+      cvtype=CV_MAKE_TYPE(cvtype, dims[ndim-1]);
+      dims[ndim-1]=1;  
+      ndim--;
+    }
+
+    if(cvtype==-1){
+      error("Could not determine OpenCV element type of Octave sequence");
+      return NULL;
+    }
+
+    // CvMat
+    if(ndim<=2){
+      CvMat *m = cvCreateMat(dims[0], dims[1], cvtype);
+      for(int i=0; i<dims[0]; i++){
+       octave_value rowobj = OctSequence_GetItem(obj, i);
+       if( dims[1] > 1 ){
+         // double check size
+         assert((OctTuple_Check(rowobj) || OctList_Check(rowobj)) && 
+                OctSequence_Size(rowobj) == dims[1]);
+
+         for(int j=0; j<dims[1]; j++){
+           octave_value colobj = OctSequence_GetItem(rowobj, j);
+           cvSet2D( m, i, j, OctObject_to_CvScalar( colobj ) );
+         }
+       }
+       else{
+         cvSet1D(m, i, OctObject_to_CvScalar( rowobj ) );
+       }
+      }
+      return (CvArr *) m;
+    }
+
+    // CvMatND
+    error("Cannot convert Octave Object to CvArr -- ndim > 3");
+    return NULL;
+  }
+
+
+  // Wrapper class
+  class CvRNG_Wrapper {
+  private:
+    CvRNG m_val;
+  public:
+    CvRNG_Wrapper( const CvRNG & val ) :
+      m_val(val)
+      {
+      }
+    CvRNG * ptr() { return &m_val; }
+    CvRNG & ref() { return m_val; }
+    bool operator==(const CvRNG_Wrapper & x){
+      return m_val==x.m_val;
+    }
+    bool operator!=(const CvRNG_Wrapper & x){
+      return m_val!=x.m_val;
+    }
+  };
+  
+
+SWIGINTERNINLINE octave_value
+  SWIG_From_bool  (bool value)
+{
+  return octave_value(value);
+}
+
+
+  // Wrapper class
+  class CvSubdiv2DEdge_Wrapper {
+  private:
+    CvSubdiv2DEdge m_val;
+  public:
+    CvSubdiv2DEdge_Wrapper( const CvSubdiv2DEdge & val ) :
+      m_val(val)
+      {
+      }
+    CvSubdiv2DEdge * ptr() { return &m_val; }
+    CvSubdiv2DEdge & ref() { return m_val; }
+    bool operator==(const CvSubdiv2DEdge_Wrapper & x){
+      return m_val==x.m_val;
+    }
+    bool operator!=(const CvSubdiv2DEdge_Wrapper & x){
+      return m_val!=x.m_val;
+    }
+  };
+  
+
+  SWIGINTERN int SWIG_AsVal_unsigned_SS_long (const octave_value& ov, unsigned long* val)
+    {
+      if (!ov.is_scalar_type())
+       return SWIG_TypeError;
+      if (ov.is_complex_scalar())
+       return SWIG_TypeError;
+      if (ov.is_double_type()||ov.is_single_type()) {
+       double v=ov.double_value();
+       if (v<0)
+         return SWIG_OverflowError;  
+       if (v!=floor(v))
+         return SWIG_TypeError;
+      }
+      if (ov.is_int8_type()||ov.is_int16_type()||
+         ov.is_int32_type()) {
+       long v=ov.long_value();
+       if (v<0)
+         return SWIG_OverflowError;  
+      }
+      if (ov.is_int64_type()) {
+       long long v=ov.int64_scalar_value().value();
+       if (v<0)
+         return SWIG_OverflowError;  
+      }
+      if (val)
+       *val = ov.ulong_value();
+      return SWIG_OK;
+    }
+
+
+SWIGINTERNINLINE int
+SWIG_AsVal_size_t (octave_value obj, size_t *val)
+{
+  unsigned long v;
+  int res = SWIG_AsVal_unsigned_SS_long (obj, val ? &v : 0);
+  if (SWIG_IsOK(res) && val) *val = (size_t)(v);
+  return res;
+}
+
+
+  // This encapsulates the octave callback and user_data for mouse callback
+  struct OctCvMouseCBData {
+    octave_value oct_func;
+    octave_value user_data;
+  };
+  // This encapsulates the octave callback and user_data for mouse callback
+  // C helper function which is responsible for calling
+  // the Octave real trackbar callback function
+  static void icvOctOnMouse (int event, int x, int y,
+                            int flags, OctCvMouseCBData * param) {
+    octave_value oct_func(param->oct_func);
+    if (!oct_func.is_function() && !oct_func.is_function_handle())
+      return;
+
+    octave_value_list args;
+    args.append(octave_value(event));
+    args.append(octave_value(x));
+    args.append(octave_value(y));
+    args.append(octave_value(flags));
+    args.append(param->user_data);
+    oct_func.subsref ("(", std::list<octave_value_list>(1, args), 0);
+  }
+
+
+  void cvSetMouseCallbackOct( const char* window_name, octave_value on_mouse, octave_value param = octave_value() ){
+    OctCvMouseCBData * oct_callback = new OctCvMouseCBData;
+    oct_callback->oct_func = on_mouse;
+    oct_callback->user_data = param;
+    cvSetMouseCallback( window_name, (CvMouseCallback) icvOctOnMouse, (void *) oct_callback );
+  }
+
+
+SWIGINTERN int
+SWIG_AsCharPtrAndSize(octave_value ov, char** cptr, size_t* psize, int *alloc)
+{
+  if (ov.is_cell() && ov.rows() == 1 && ov.columns() == 1)
+    ov = ov.cell_value()(0);
+  if (!ov.is_string())
+    return SWIG_TypeError;
+  
+  std::string str=ov.string_value();
+  size_t len=str.size();
+  char* cstr=(char*)str.c_str();
+  if (alloc) {
+    *cptr = (char*)(memcpy((new char[len + 1]), cstr, sizeof(char)*(len + 1)));
+    *alloc = SWIG_NEWOBJ;
+  } else if (cptr)
+    *cptr = cstr;
+  if (psize)
+    *psize = len + 1;
+  return SWIG_OK;
+}
+
+
+
+
+
+  // C helper function which is responsible for calling
+  // the Octave real trackbar callback function
+  static void icvOctOnTrackbar( octave_value oct_cb_func, int pos) {
+    if (!oct_cb_func.is_function() && !oct_cb_func.is_function_handle())
+      return;
+
+    octave_value_list args;
+    args.append(octave_value(pos));
+    oct_cb_func.subsref ("(", std::list<octave_value_list>(1, args), 0);
+  }
+
+#define ICV_OCT_MAX_CB 10
+
+  struct OctCvTrackbar {
+    CvTrackbarCallback cv_func;
+    octave_value oct_func;
+    octave_value oct_pos;
+  };
+
+  static int my_trackbar_cb_size=0;
+  extern OctCvTrackbar my_trackbar_cb_funcs[ICV_OCT_MAX_CB];
+  
+
+static void icvOctTrackbarCB0(int pos){                                      
+  icvOctOnTrackbar(my_trackbar_cb_funcs[0].oct_func, pos);
+}                                                                               
+
+
+static void icvOctTrackbarCB1(int pos){                                      
+  icvOctOnTrackbar(my_trackbar_cb_funcs[1].oct_func, pos);
+}                                                                               
+
+
+static void icvOctTrackbarCB2(int pos){                                      
+  icvOctOnTrackbar(my_trackbar_cb_funcs[2].oct_func, pos);
+}                                                                               
+
+
+static void icvOctTrackbarCB3(int pos){                                      
+  icvOctOnTrackbar(my_trackbar_cb_funcs[3].oct_func, pos);
+}                                                                               
+
+
+static void icvOctTrackbarCB4(int pos){                                      
+  icvOctOnTrackbar(my_trackbar_cb_funcs[4].oct_func, pos);
+}                                                                               
+
+
+static void icvOctTrackbarCB5(int pos){                                      
+  icvOctOnTrackbar(my_trackbar_cb_funcs[5].oct_func, pos);
+}                                                                               
+
+
+static void icvOctTrackbarCB6(int pos){                                      
+  icvOctOnTrackbar(my_trackbar_cb_funcs[6].oct_func, pos);
+}                                                                               
+
+
+static void icvOctTrackbarCB7(int pos){                                      
+  icvOctOnTrackbar(my_trackbar_cb_funcs[7].oct_func, pos);
+}                                                                               
+
+
+static void icvOctTrackbarCB8(int pos){                                      
+  icvOctOnTrackbar(my_trackbar_cb_funcs[8].oct_func, pos);
+}                                                                               
+
+
+static void icvOctTrackbarCB9(int pos){                                      
+  icvOctOnTrackbar(my_trackbar_cb_funcs[9].oct_func, pos);
+}                                                                               
+
+
+  OctCvTrackbar my_trackbar_cb_funcs[ICV_OCT_MAX_CB] = {
+    /*@SWIG:highgui.i,129,%ICV_OCT_CB_TAB_ENTRY@*/
+{(CvTrackbarCallback) icvOctTrackbarCB0, octave_value(), octave_value() }
+/*@SWIG@*/,
+    /*@SWIG:highgui.i,129,%ICV_OCT_CB_TAB_ENTRY@*/
+{(CvTrackbarCallback) icvOctTrackbarCB1, octave_value(), octave_value() }
+/*@SWIG@*/,
+    /*@SWIG:highgui.i,129,%ICV_OCT_CB_TAB_ENTRY@*/
+{(CvTrackbarCallback) icvOctTrackbarCB2, octave_value(), octave_value() }
+/*@SWIG@*/,
+    /*@SWIG:highgui.i,129,%ICV_OCT_CB_TAB_ENTRY@*/
+{(CvTrackbarCallback) icvOctTrackbarCB3, octave_value(), octave_value() }
+/*@SWIG@*/,
+    /*@SWIG:highgui.i,129,%ICV_OCT_CB_TAB_ENTRY@*/
+{(CvTrackbarCallback) icvOctTrackbarCB4, octave_value(), octave_value() }
+/*@SWIG@*/,
+    /*@SWIG:highgui.i,129,%ICV_OCT_CB_TAB_ENTRY@*/
+{(CvTrackbarCallback) icvOctTrackbarCB5, octave_value(), octave_value() }
+/*@SWIG@*/,
+    /*@SWIG:highgui.i,129,%ICV_OCT_CB_TAB_ENTRY@*/
+{(CvTrackbarCallback) icvOctTrackbarCB6, octave_value(), octave_value() }
+/*@SWIG@*/,
+    /*@SWIG:highgui.i,129,%ICV_OCT_CB_TAB_ENTRY@*/
+{(CvTrackbarCallback) icvOctTrackbarCB7, octave_value(), octave_value() }
+/*@SWIG@*/,
+    /*@SWIG:highgui.i,129,%ICV_OCT_CB_TAB_ENTRY@*/
+{(CvTrackbarCallback) icvOctTrackbarCB8, octave_value(), octave_value() }
+/*@SWIG@*/,
+    /*@SWIG:highgui.i,129,%ICV_OCT_CB_TAB_ENTRY@*/
+{(CvTrackbarCallback) icvOctTrackbarCB9, octave_value(), octave_value() }
+/*@SWIG@*/
+  };
+
+
+#include "highgui.h"
+
+  
+namespace swig {
+  struct stop_iteration {
+  };
+
+  struct OctSwigIterator {
+  private:
+    octave_value _seq;
+
+  protected:
+    OctSwigIterator(octave_value seq) : _seq(seq)
+    {
+    }
+      
+  public:
+    virtual ~OctSwigIterator() {}
+
+    virtual octave_value value() const = 0;
+
+    virtual OctSwigIterator *incr(size_t n = 1) = 0;
+
+    virtual OctSwigIterator *decr(size_t n = 1)
+    {
+      throw stop_iteration();
+    }
+
+    virtual ptrdiff_t distance(const OctSwigIterator &x) const
+    {
+      throw std::invalid_argument("operation not supported");
+    }
+
+    virtual bool equal (const OctSwigIterator &x) const
+    {
+      throw std::invalid_argument("operation not supported");
+    }
+    
+    virtual OctSwigIterator *copy() const = 0;
+
+    octave_value next()
+    {
+      octave_value obj = value();
+      incr();
+      return obj;
+    }
+
+    octave_value previous()
+    {
+      decr();
+      return value();
+    }
+
+    OctSwigIterator *advance(ptrdiff_t n)
+    {
+      return  (n > 0) ?  incr(n) : decr(-n);
+    }
+      
+    bool operator == (const OctSwigIterator& x)  const
+    {
+      return equal(x);
+    }
+      
+    bool operator != (const OctSwigIterator& x) const
+    {
+      return ! operator==(x);
+    }
+
+    OctSwigIterator* operator ++ () {
+      incr();
+      return this;
+    }
+
+    OctSwigIterator* operator -- () {
+      decr();
+      return this;
+    }
+      
+    OctSwigIterator* operator + (ptrdiff_t n) const
+    {
+      return copy()->advance(n);
+    }
+
+    OctSwigIterator* operator - (ptrdiff_t n) const
+    {
+      return copy()->advance(-n);
+    }
+      
+    ptrdiff_t operator - (const OctSwigIterator& x) const
+    {
+      return x.distance(*this);
+    }
+      
+    static swig_type_info* descriptor() {
+      static int init = 0;
+      static swig_type_info* desc = 0;
+      if (!init) {
+       desc = SWIG_TypeQuery("swig::OctSwigIterator *");
+       init = 1;
+      }        
+      return desc;
+    }    
+  };
+}
+
+
+namespace swig {  
+  template <class Type>
+  struct noconst_traits {
+    typedef Type noconst_type;
+  };
+
+  template <class Type>
+  struct noconst_traits<const Type> {
+    typedef Type noconst_type;
+  };
+
+  /*
+    type categories
+  */
+  struct pointer_category { };  
+  struct value_category { };
+
+  /*
+    General traits that provides type_name and type_info
+  */
+  template <class Type> struct traits { };
+
+  template <class Type>
+  inline const char* type_name() {
+    return traits<typename noconst_traits<Type >::noconst_type >::type_name();
+  }
+
+  template <class Type> 
+  struct traits_info {
+    static swig_type_info *type_query(std::string name) {
+      name += " *";
+      return SWIG_TypeQuery(name.c_str());
+    }    
+    static swig_type_info *type_info() {
+      static swig_type_info *info = type_query(type_name<Type>());
+      return info;
+    }
+  };
+
+  template <class Type>
+  inline swig_type_info *type_info() {
+    return traits_info<Type>::type_info();
+  }
+
+  /*
+    Partial specialization for pointers
+  */
+  template <class Type> struct traits <Type *> {
+    typedef pointer_category category;
+    static std::string make_ptr_name(const char* name) {
+      std::string ptrname = name;
+      ptrname += " *";
+      return ptrname;
+    }    
+    static const char* type_name() {
+      static std::string name = make_ptr_name(swig::type_name<Type>());
+      return name.c_str();
+    }
+  };
+
+  template <class Type, class Category> 
+  struct traits_as { };
+  template <class Type, class Category> 
+  struct traits_check { };
+
+}
+
+
+namespace swig {  
+// Traits that provides the from method
+  template <class Type> struct traits_from_ptr {
+    static octave_value from(Type *val, int owner = 0) {
+      return SWIG_NewPointerObj(val, type_info<Type>(), owner);
+    }
+  };
+
+  template <class Type> struct traits_from {
+    static octave_value from(const Type& val) {
+      return traits_from_ptr<Type>::from(new Type(val), 1);
+    }
+  };
+
+  template <class Type> struct traits_from<Type *> {
+    static octave_value from(Type* val) {
+      return traits_from_ptr<Type>::from(val, 0);
+    }
+  };
+
+  template <class Type> struct traits_from<const Type *> {
+    static octave_value from(const Type* val) {
+      return traits_from_ptr<Type>::from(const_cast<Type*>(val), 0);
+    }
+  };
+
+
+  template <class Type>
+  inline octave_value from(const Type& val) {
+    return traits_from<Type>::from(val);
+  }
+
+  template <class Type>
+  inline octave_value from_ptr(Type* val, int owner) {
+    return traits_from_ptr<Type>::from(val, owner);
+  }
+
+    // Traits that provides the asval/as/check method
+  template <class Type>
+  struct traits_asptr {   
+    static int asptr(const octave_value& obj, Type **val) {
+      Type *p;
+      int res = SWIG_ConvertPtr(obj, (void**)&p, type_info<Type>(), 0);
+      if (SWIG_IsOK(res)) {
+       if (val) *val = p;
+      }
+      return res;
+    }
+  }; 
+
+  template <class Type>
+  inline int asptr(const octave_value& obj, Type **vptr) {
+    return traits_asptr<Type>::asptr(obj, vptr);
+  }
+
+  template <class Type> 
+  struct traits_asval {
+    static int asval(const octave_value& obj, Type *val) {
+      if (val) {
+       Type *p = 0;
+       int res = traits_asptr<Type>::asptr(obj, &p);
+       if (!SWIG_IsOK(res)) return res;        
+       if (p) {
+         typedef typename noconst_traits<Type>::noconst_type noconst_type;
+         *(const_cast<noconst_type*>(val)) = *p;
+         if (SWIG_IsNewObj(res)){
+           delete p;
+           res = SWIG_DelNewMask(res);
+         }
+         return res;
+       } else {
+         return SWIG_ERROR;
+       }
+      } else {
+       return traits_asptr<Type>::asptr(obj, (Type **)(0));
+      }
+    }
+  };
+
+  template <class Type> struct traits_asval<Type*> {
+    static int asval(const octave_value& obj, Type **val) {
+      if (val) {
+        typedef typename noconst_traits<Type>::noconst_type noconst_type;
+        noconst_type *p = 0;
+        int res = traits_asptr<noconst_type>::asptr(obj,  &p);
+        if (SWIG_IsOK(res)) {
+          *(const_cast<noconst_type**>(val)) = p;
+       }
+       return res;
+      } else {
+       return traits_asptr<Type>::asptr(obj, (Type **)(0));
+      }
+    }
+  };
+  
+  template <class Type>
+  inline int asval(const octave_value& obj, Type *val) {
+    return traits_asval<Type>::asval(obj, val);
+  }
+
+  template <class Type> 
+  struct traits_as<Type, value_category> {
+    static Type as(const octave_value& obj, bool throw_error) {
+      Type v;
+      int res = asval(obj, &v);
+      if (!obj.is_defined() || !SWIG_IsOK(res)) {
+       if (!Octave_Error_Occurred()) {
+         SWIG_Error(SWIG_TypeError,  swig::type_name<Type>());
+       }
+       if (throw_error) throw std::invalid_argument("bad type");
+      }
+      return v;
+    }
+  };
+
+  template <class Type> 
+  struct traits_as<Type, pointer_category> {
+    static Type as(const octave_value& obj, bool throw_error) {
+      Type *v = 0;      
+      int res = traits_asptr<Type>::asptr(obj, &v);
+      if (SWIG_IsOK(res) && v) {
+       if (SWIG_IsNewObj(res)) {
+         Type r(*v);
+         delete v;
+         return r;
+       } else {
+         return *v;
+       }
+      } else {
+       // Uninitialized return value, no Type() constructor required.
+       static Type *v_def = (Type*) malloc(sizeof(Type));
+       if (!Octave_Error_Occurred()) {
+         SWIG_Error(SWIG_TypeError,  swig::type_name<Type>());
+       }
+       if (throw_error) throw std::invalid_argument("bad type");
+       memset(v_def,0,sizeof(Type));
+       return *v_def;
+      }
+    }
+  };
+
+  template <class Type> 
+  struct traits_as<Type*, pointer_category> {
+    static Type* as(const octave_value& obj, bool throw_error) {
+      Type *v = 0;      
+      int res = traits_asptr<Type>::asptr(obj, &v);
+      if (SWIG_IsOK(res)) {
+       return v;
+      } else {
+       if (!Octave_Error_Occurred()) {
+         SWIG_Error(SWIG_TypeError,  swig::type_name<Type>());
+       }
+       if (throw_error) throw std::invalid_argument("bad type");
+       return 0;
+      }
+    }
+  };
+    
+  template <class Type>
+  inline Type as(const octave_value& obj, bool te = false) {
+    return traits_as<Type, typename traits<Type>::category>::as(obj, te);
+  }
+
+  template <class Type> 
+  struct traits_check<Type, value_category> {
+    static bool check(const octave_value& obj) {
+      int res = asval(obj, (Type *)(0));
+      return SWIG_IsOK(res) ? true : false;
+    }
+  };
+
+  template <class Type> 
+  struct traits_check<Type, pointer_category> {
+    static bool check(const octave_value& obj) {
+      int res = asptr(obj, (Type **)(0));
+      return SWIG_IsOK(res) ? true : false;
+    }
+  };
+
+  template <class Type>
+  inline bool check(const octave_value& obj) {
+    return traits_check<Type, typename traits<Type>::category>::check(obj);
+  }
+}
+
+
+#include <functional>
+
+namespace std {
+  template <>
+  struct less <octave_value>: public binary_function<octave_value, octave_value, bool>
+  {
+    bool
+    operator()(const octave_value& v, const octave_value& w) const
+    { 
+      octave_value res = do_binary_op(octave_value::op_le,v,w);
+      return res.is_true();
+    }
+  };
+}
+
+namespace swig {
+  inline size_t
+  check_index(ptrdiff_t i, size_t size, bool insert = false) {
+    if ( i < 0 ) {
+      if ((size_t) (-i) <= size)
+       return (size_t) (i + size);
+    } else if ( (size_t) i < size ) {
+      return (size_t) i;
+    } else if (insert && ((size_t) i == size)) {
+      return size;
+    }
+    
+    throw std::out_of_range("index out of range");
+  }
+
+  inline size_t
+  slice_index(ptrdiff_t i, size_t size) {
+    if ( i < 0 ) {
+      if ((size_t) (-i) <= size) {
+       return (size_t) (i + size);
+      } else {
+       throw std::out_of_range("index out of range");
+      }
+    } else {
+      return ( (size_t) i < size ) ? ((size_t) i) : size;
+    }
+  }
+
+  template <class Sequence, class Difference>
+  inline typename Sequence::iterator
+  getpos(Sequence* self, Difference i)  {
+    typename Sequence::iterator pos = self->begin();
+    std::advance(pos, check_index(i,self->size()));
+    return pos;
+  }
+
+  template <class Sequence, class Difference>
+  inline typename Sequence::const_iterator
+  cgetpos(const Sequence* self, Difference i)  {
+    typename Sequence::const_iterator pos = self->begin();
+    std::advance(pos, check_index(i,self->size()));
+    return pos;
+  }
+
+  template <class Sequence, class Difference>
+  inline Sequence*
+  getslice(const Sequence* self, Difference i, Difference j) {
+    typename Sequence::size_type size = self->size();
+    typename Sequence::size_type ii = swig::check_index(i, size);
+    typename Sequence::size_type jj = swig::slice_index(j, size);
+
+    if (jj > ii) {
+      typename Sequence::const_iterator vb = self->begin();
+      typename Sequence::const_iterator ve = self->begin();
+      std::advance(vb,ii);
+      std::advance(ve,jj);
+      return new Sequence(vb, ve);
+    } else {
+      return new Sequence();
+    }
+  }
+
+  template <class Sequence, class Difference, class InputSeq>
+  inline void
+  setslice(Sequence* self, Difference i, Difference j, const InputSeq& v) {
+    typename Sequence::size_type size = self->size();
+    typename Sequence::size_type ii = swig::check_index(i, size, true);
+    typename Sequence::size_type jj = swig::slice_index(j, size);
+    if (jj < ii) jj = ii;
+    size_t ssize = jj - ii;
+    if (ssize <= v.size()) {
+      typename Sequence::iterator sb = self->begin();
+      typename InputSeq::const_iterator vmid = v.begin();
+      std::advance(sb,ii);
+      std::advance(vmid, jj - ii);
+      self->insert(std::copy(v.begin(), vmid, sb), vmid, v.end());
+    } else {
+      typename Sequence::iterator sb = self->begin();
+      typename Sequence::iterator se = self->begin();
+      std::advance(sb,ii);
+      std::advance(se,jj);
+      self->erase(sb,se);
+      self->insert(sb, v.begin(), v.end());
+    }
+  }
+
+  template <class Sequence, class Difference>
+  inline void
+  delslice(Sequence* self, Difference i, Difference j) {
+    typename Sequence::size_type size = self->size();
+    typename Sequence::size_type ii = swig::check_index(i, size, true);
+    typename Sequence::size_type jj = swig::slice_index(j, size);
+    if (jj > ii) {
+      typename Sequence::iterator sb = self->begin();
+      typename Sequence::iterator se = self->begin();
+      std::advance(sb,ii);
+      std::advance(se,jj);
+      self->erase(sb,se);
+    }
+  }
+}
+
+
+#if defined(__SUNPRO_CC) && defined(_RWSTD_VER)
+#  if !defined(SWIG_NO_STD_NOITERATOR_TRAITS_STL)
+#    define SWIG_STD_NOITERATOR_TRAITS_STL
+#  endif
+#endif
+
+#if !defined(SWIG_STD_NOITERATOR_TRAITS_STL)
+#include <iterator>
+#else
+namespace std {
+  template <class Iterator>
+  struct iterator_traits {
+    typedef ptrdiff_t difference_type;
+    typedef typename Iterator::value_type value_type;
+  };
+
+  template <class Iterator, class Category,class T, class Reference, class Pointer, class Distance>
+  struct iterator_traits<__reverse_bi_iterator<Iterator,Category,T,Reference,Pointer,Distance> > {
+    typedef Distance difference_type;
+    typedef T value_type;
+  };
+
+  template <class T>
+  struct iterator_traits<T*> {
+    typedef T value_type;
+    typedef ptrdiff_t difference_type;
+  };
+
+  template<typename _InputIterator>
+  inline typename iterator_traits<_InputIterator>::difference_type
+  distance(_InputIterator __first, _InputIterator __last)
+  {
+    typename iterator_traits<_InputIterator>::difference_type __n = 0;
+    while (__first != __last) {
+      ++__first; ++__n;
+    }
+    return __n;
+  }
+}
+#endif
+
+
+namespace swig {
+  template<typename OutIterator>
+  class OctSwigIterator_T :  public OctSwigIterator
+  {
+  public:
+    typedef OutIterator out_iterator;
+    typedef typename std::iterator_traits<out_iterator>::value_type value_type;    
+    typedef OctSwigIterator_T<out_iterator> self_type;
+
+    OctSwigIterator_T(out_iterator curr, octave_value seq)
+      : OctSwigIterator(seq), current(curr)
+    {
+    }
+
+    const out_iterator& get_current() const
+    {
+      return current;
+    }
+
+    
+    bool equal (const OctSwigIterator &iter) const
+    {
+      const self_type *iters = dynamic_cast<const self_type *>(&iter);
+      if (iters) {
+       return (current == iters->get_current());
+      } else {
+       throw std::invalid_argument("bad iterator type");
+      }
+    }
+    
+    ptrdiff_t distance(const OctSwigIterator &iter) const
+    {
+      const self_type *iters = dynamic_cast<const self_type *>(&iter);
+      if (iters) {
+       return std::distance(current, iters->get_current());
+      } else {
+       throw std::invalid_argument("bad iterator type");
+      }
+    }    
+    
+  protected:
+    out_iterator current;
+  };
+  
+  template <class ValueType>
+  struct from_oper 
+  {
+    typedef const ValueType& argument_type;
+    typedef octave_value result_type;
+    result_type operator()(argument_type v) const
+    {
+      return swig::from(v);
+    }
+  };
+
+  template<typename OutIterator, 
+          typename ValueType = typename std::iterator_traits<OutIterator>::value_type,
+          typename FromOper = from_oper<ValueType> >
+  class OctSwigIteratorOpen_T :  public OctSwigIterator_T<OutIterator>
+  {
+  public:
+    FromOper from;
+    typedef OutIterator out_iterator;
+    typedef ValueType value_type;
+    typedef OctSwigIterator_T<out_iterator>  base;
+    typedef OctSwigIteratorOpen_T<OutIterator, ValueType, FromOper> self_type;
+    
+    OctSwigIteratorOpen_T(out_iterator curr, octave_value seq)
+      : OctSwigIterator_T<OutIterator>(curr, seq)
+    {
+    }
+    
+    octave_value value() const {
+      return from(static_cast<const value_type&>(*(base::current)));
+    }
+    
+    OctSwigIterator *copy() const
+    {
+      return new self_type(*this);
+    }
+
+    OctSwigIterator *incr(size_t n = 1)
+    {
+      while (n--) {
+       ++base::current;
+      }
+      return this;
+    }
+
+    OctSwigIterator *decr(size_t n = 1)
+    {
+      while (n--) {
+       --base::current;
+      }
+      return this;
+    }
+  };
+
+  template<typename OutIterator, 
+          typename ValueType = typename std::iterator_traits<OutIterator>::value_type,
+          typename FromOper = from_oper<ValueType> >
+  class OctSwigIteratorClosed_T :  public OctSwigIterator_T<OutIterator>
+  {
+  public:
+    FromOper from;
+    typedef OutIterator out_iterator;
+    typedef ValueType value_type;
+    typedef OctSwigIterator_T<out_iterator>  base;    
+    typedef OctSwigIteratorClosed_T<OutIterator, ValueType, FromOper> self_type;
+    
+    OctSwigIteratorClosed_T(out_iterator curr, out_iterator first, out_iterator last, octave_value seq)
+      : OctSwigIterator_T<OutIterator>(curr, seq), begin(first), end(last)
+    {
+    }
+    
+    octave_value value() const {
+      if (base::current == end) {
+       throw stop_iteration();
+      } else {
+       return from(static_cast<const value_type&>(*(base::current)));
+      }
+    }
+    
+    OctSwigIterator *copy() const
+    {
+      return new self_type(*this);
+    }
+
+    OctSwigIterator *incr(size_t n = 1)
+    {
+      while (n--) {
+       if (base::current == end) {
+         throw stop_iteration();
+       } else {
+         ++base::current;
+       }
+      }
+      return this;
+    }
+
+    OctSwigIterator *decr(size_t n = 1)
+    {
+      while (n--) {
+       if (base::current == begin) {
+         throw stop_iteration();
+       } else {
+         --base::current;
+       }
+      }
+      return this;
+    }
+
+  private:
+    out_iterator begin;
+    out_iterator end;
+  };
+
+  template<typename OutIter>
+  inline OctSwigIterator*
+  make_output_iterator(const OutIter& current, const OutIter& begin,const OutIter& end, octave_value seq = octave_value())
+  {
+    return new OctSwigIteratorClosed_T<OutIter>(current, begin, end, seq);
+  }
+
+  template<typename OutIter>
+  inline OctSwigIterator*
+  make_output_iterator(const OutIter& current, octave_value seq = octave_value())
+  {
+    return new OctSwigIteratorOpen_T<OutIter>(current, seq);
+  }
+}
+
+
+namespace swig
+{
+  template <class T>
+    struct OctSequence_Ref // * octave can't support these, because of how assignment works
+  {
+    OctSequence_Ref(const octave_value& seq, int index)
+      : _seq(seq), _index(index)
+    {
+    }
+    
+    operator T () const
+    {
+      //      swig::SwigVar_PyObject item = OctSequence_GetItem(_seq, _index);
+      octave_value item; // * todo
+      try {
+       return swig::as<T>(item, true);
+      } catch (std::exception& e) {
+       char msg[1024];
+       sprintf(msg, "in sequence element %d ", _index);
+       if (!Octave_Error_Occurred()) {
+         SWIG_Error(SWIG_TypeError,  swig::type_name<T>());
+       }
+       SWIG_Octave_AddErrorMsg(msg);
+       SWIG_Octave_AddErrorMsg(e.what());
+       throw;
+      }
+    }
+
+    OctSequence_Ref& operator=(const T& v)
+    {
+      //      OctSequence_SetItem(_seq, _index, swig::from<T>(v));
+      // * todo
+      return *this;
+    }
+
+  private:
+    octave_value _seq;
+    int _index;
+  };
+
+  template <class T>
+  struct OctSequence_ArrowProxy
+  {
+    OctSequence_ArrowProxy(const T& x): m_value(x) {}
+    const T* operator->() const { return &m_value; }
+    operator const T*() const { return &m_value; }
+    T m_value;
+  };
+
+  template <class T, class Reference >
+  struct OctSequence_InputIterator
+  {
+    typedef OctSequence_InputIterator<T, Reference > self;
+
+    typedef std::random_access_iterator_tag iterator_category;
+    typedef Reference reference;
+    typedef T value_type;
+    typedef T* pointer;
+    typedef int difference_type;
+
+    OctSequence_InputIterator()
+    {
+    }
+
+    OctSequence_InputIterator(const octave_value& seq, int index)
+      : _seq(seq), _index(index)
+    {
+    }
+
+    reference operator*() const
+    {
+      return reference(_seq, _index);
+    }
+
+    OctSequence_ArrowProxy<T>
+    operator->() const {
+      return OctSequence_ArrowProxy<T>(operator*());
+    }
+
+    bool operator==(const self& ri) const
+    {
+      return (_index == ri._index);
+    }
+
+    bool operator!=(const self& ri) const
+    {
+      return !(operator==(ri));
+    }
+
+    self& operator ++ ()
+    {
+      ++_index;
+      return *this;
+    }
+
+    self& operator -- ()
+    {
+      --_index;
+      return *this;
+    }
+
+    self& operator += (difference_type n)
+    {
+      _index += n;
+      return *this;
+    }
+
+    self operator +(difference_type n) const
+    {
+      return self(_seq, _index + n);
+    }
+
+    self& operator -= (difference_type n)
+    {
+      _index -= n;
+      return *this;
+    }
+
+    self operator -(difference_type n) const
+    {
+      return self(_seq, _index - n);
+    }
+
+    difference_type operator - (const self& ri) const
+    {
+      return _index - ri._index;
+    }
+
+    bool operator < (const self& ri) const
+    {
+      return _index < ri._index;
+    }
+
+    reference
+    operator[](difference_type n) const
+    {
+      return reference(_seq, _index + n);
+    }
+
+  private:
+    octave_value _seq;
+    difference_type _index;
+  };
+
+  template <class T>
+  struct OctSequence_Cont
+  {
+    typedef OctSequence_Ref<T> reference;
+    typedef const OctSequence_Ref<T> const_reference;
+    typedef T value_type;
+    typedef T* pointer;
+    typedef int difference_type;
+    typedef int size_type;
+    typedef const pointer const_pointer;
+    typedef OctSequence_InputIterator<T, reference> iterator;
+    typedef OctSequence_InputIterator<T, const_reference> const_iterator;
+
+    OctSequence_Cont(const octave_value& seq) : _seq(seq)
+    {
+      // * assert that we have map type etc.
+      /*
+      if (!OctSequence_Check(seq)) {
+       throw std::invalid_argument("a sequence is expected");
+      }
+      _seq = seq;
+      Py_INCREF(_seq);
+      */
+    }
+
+    ~OctSequence_Cont()
+    {
+    }
+
+    size_type size() const
+    {
+      //      return static_cast<size_type>(OctSequence_Size(_seq));
+      return 0; // * todo
+    }
+
+    bool empty() const
+    {
+      return size() == 0;
+    }
+
+    iterator begin()
+    {
+      return iterator(_seq, 0);
+    }
+
+    const_iterator begin() const
+    {
+      return const_iterator(_seq, 0);
+    }
+
+    iterator end()
+    {
+      return iterator(_seq, size());
+    }
+
+    const_iterator end() const
+    {
+      return const_iterator(_seq, size());
+    }
+
+    reference operator[](difference_type n)
+    {
+      return reference(_seq, n);
+    }
+
+    const_reference operator[](difference_type n)  const
+    {
+      return const_reference(_seq, n);
+    }
+
+    bool check(bool set_err = true) const
+    {
+      int s = size();
+      for (int i = 0; i < s; ++i) {
+       //      swig::SwigVar_PyObject item = OctSequence_GetItem(_seq, i);
+       octave_value item; // * todo
+       if (!swig::check<value_type>(item)) {
+         if (set_err) {
+           char msg[1024];
+           sprintf(msg, "in sequence element %d", i);
+           SWIG_Error(SWIG_RuntimeError, msg);
+         }
+         return false;
+       }
+      }
+      return true;
+    }
+
+  private:
+    octave_value _seq;
+  };
+
+}
+
+
+CvMat * cvLoadImageMat(const char* filename, int iscolor=CV_LOAD_IMAGE_COLOR ){
+       return cvLoadImageM(filename, iscolor);
+}
+
+
+#include <limits.h>
+#if !defined(SWIG_NO_LLONG_MAX)
+# if !defined(LLONG_MAX) && defined(__GNUC__) && defined (__LONG_LONG_MAX__)
+#   define LLONG_MAX __LONG_LONG_MAX__
+#   define LLONG_MIN (-LLONG_MAX - 1LL)
+#   define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL)
+# endif
+#endif
+
+
+  SWIGINTERN int SWIG_AsVal_long (const octave_value& ov, long* val)
+    {
+      if (!ov.is_scalar_type())
+       return SWIG_TypeError;
+      if (ov.is_complex_scalar())
+       return SWIG_TypeError;
+      if (ov.is_double_type()||ov.is_single_type()) {
+       double v=ov.double_value();
+       if (v!=floor(v))
+         return SWIG_TypeError;
+      }
+      if (val)
+       *val = ov.long_value();
+      return SWIG_OK;
+    }
+
+
+SWIGINTERN int
+SWIG_AsVal_int (octave_value obj, int *val)
+{
+  long v;
+  int res = SWIG_AsVal_long (obj, &v);
+  if (SWIG_IsOK(res)) {
+    if ((v < INT_MIN || v > INT_MAX)) {
+      return SWIG_OverflowError;
+    } else {
+      if (val) *val = (int)(v);
+    }
+  }  
+  return res;
+}
+
+
+CvMat * cvRetrieveFrame__CvMat( CvCapture* capture ){
+       IplImage * im = cvRetrieveFrame(capture);
+       if(im){
+               CvMat * mat = (CvMat *)cvAlloc(sizeof(CvMat));
+               mat = cvGetMat(im, mat);
+               return mat;
+       }
+       return false;
+}
+
+
+CvMat * cvQueryFrame__CvMat( CvCapture * capture ){
+       IplImage * im = cvQueryFrame(capture);
+       if(im){
+               CvMat * mat = (CvMat *)cvAlloc(sizeof(CvMat));
+               mat = cvGetMat(im, mat);
+               return mat;
+       }
+       return false;
+}
+
+
+  SWIGINTERNINLINE octave_value SWIG_From_long    (long value)
+    {    
+      return octave_value(value);
+    }
+
+
+SWIGINTERNINLINE octave_value
+SWIG_From_int  (int value)
+{    
+  return SWIG_From_long  (value);
+}
+
+
+SWIGINTERN swig_type_info*
+SWIG_pchar_descriptor(void)
+{
+  static int init = 0;
+  static swig_type_info* info = 0;
+  if (!init) {
+    info = SWIG_TypeQuery("_p_char");
+    init = 1;
+  }
+  return info;
+}
+
+
+SWIGINTERNINLINE octave_value
+SWIG_FromCharPtrAndSize(const char* carray, size_t size)
+{
+  return std::string(carray,carray+size);
+}
+
+
+SWIGINTERNINLINE octave_value 
+SWIG_FromCharPtr(const char *cptr)
+{ 
+  return SWIG_FromCharPtrAndSize(cptr, (cptr ? strlen(cptr) : 0));
+}
+
+
+  SWIGINTERNINLINE octave_value SWIG_From_double    (double value)
+    {    
+      return octave_value(value);
+    }
+
+
+  SWIGINTERN int SWIG_AsVal_double (const octave_value& ov, double* val)
+    {
+      if (!ov.is_scalar_type())
+       return SWIG_TypeError;
+      if (ov.is_complex_scalar())
+       return SWIG_TypeError;
+      if (val)
+       *val = ov.double_value();
+      return SWIG_OK;
+    }
+
+
+SWIGINTERN int
+SWIG_AsCharArray(octave_value obj, char *val, size_t size)
+{ 
+  char* cptr = 0; size_t csize = 0; int alloc = SWIG_OLDOBJ;
+  int res = SWIG_AsCharPtrAndSize(obj, &cptr, &csize, &alloc);
+  if (SWIG_IsOK(res)) {
+    if ((csize == size + 1) && cptr && !(cptr[csize-1])) --csize;
+    if (csize <= size) {
+      if (val) {
+       if (csize) memcpy(val, cptr, csize*sizeof(char));
+       if (csize < size) memset(val + csize, 0, (size - csize)*sizeof(char));
+      }
+      if (alloc == SWIG_NEWOBJ) {
+       delete[] cptr;
+       res = SWIG_DelNewMask(res);
+      }      
+      return res;
+    }
+    if (alloc == SWIG_NEWOBJ) delete[] cptr;
+  }
+  return SWIG_TypeError;
+}
+
+
+SWIGINTERN int
+SWIG_AsVal_char (octave_value obj, char *val)
+{    
+  int res = SWIG_AsCharArray(obj, val, 1);
+  if (!SWIG_IsOK(res)) {
+    long v;
+    res = SWIG_AddCast(SWIG_AsVal_long (obj, &v));
+    if (SWIG_IsOK(res)) {
+      if ((CHAR_MIN <= v) && (v <= CHAR_MAX)) {
+       if (val) *val = (char)(v);
+      } else {
+       res = SWIG_OverflowError;
+      }
+    }
+  }
+  return res;
+}
+
+SWIGINTERN void delete_CvCapture(CvCapture *self){ CvCapture *     dummy = self; cvReleaseCapture     (& dummy); }
+SWIGINTERN void delete_CvVideoWriter(CvVideoWriter *self){ CvVideoWriter * dummy = self; cvReleaseVideoWriter (& dummy); }
+
+
+class ndim_iterator {
+  int nd;
+  int dims[CV_MAX_DIM];
+  int step[CV_MAX_DIM];
+  int curr[CV_MAX_DIM];
+  uchar* _data;
+  int _type;
+  bool done;
+ public:
+  ndim_iterator() {}
+  ndim_iterator(CvMat* m) {
+    int c = CV_MAT_CN(m->type);
+    int elem_size = CV_ELEM_SIZE1(m->type);
+    nd = c == 1 ? 2 : 3;
+    dims[0] = m->rows;
+    dims[1] = m->cols;
+    dims[2] = c;
+    step[0] = m->step;
+    step[1] = c * elem_size;
+    step[2] = elem_size;
+    curr[0] = curr[1] = curr[2] = 0;
+    _data = m->data.ptr;
+    _type = m->type;
+    done = false;
+  }
+  ndim_iterator(CvMatND* m) {
+    int c = CV_MAT_CN(m->type);
+    int elem_size = CV_ELEM_SIZE1(m->type);
+    nd = m->dims + (c == 1 ? 0 : 1);
+    for (int j = 0; j < m->dims; ++j) {
+      dims[j] = m->dim[j].size;
+      step[j] = m->dim[j].step;
+      curr[j] = 0;
+    }
+    if (c > 1) {
+      dims[m->dims] = c;
+      step[m->dims] = elem_size;
+      curr[m->dims] = 0;
+    }
+    _data = m->data.ptr;
+    _type = m->type;
+    done = false;
+  }
+  ndim_iterator(IplImage* img) {
+    nd = img->nChannels == 1 ? 2 : 3;
+    dims[0] = img->height;
+    dims[1] = img->width;
+    dims[2] = img->nChannels;
+
+    switch (img->depth) {
+    case IPL_DEPTH_8U: _type = CV_8U; break;
+    case IPL_DEPTH_8S: _type = CV_8S; break;
+    case IPL_DEPTH_16U: _type = CV_16U; break;
+    case IPL_DEPTH_16S: _type = CV_16S; break;
+    case IPL_DEPTH_32S: _type = CV_32S; break;
+    case IPL_DEPTH_32F: _type = CV_32F; break;
+    case IPL_DEPTH_1U: _type = CV_64F; break;
+    default:
+      error("unsupported image depth");
+      return;
+    }
+
+    int elem_size = CV_ELEM_SIZE1(_type);
+    step[0] = img->widthStep;
+    step[1] = img->nChannels * elem_size;
+    step[2] = elem_size;
+    curr[0] = curr[1] = curr[2] = 0;
+    _data = (uchar*)img->imageData;
+    done = false;
+  }
+  ndim_iterator(NDArray& nda) {
+    dim_vector d(nda.dims());
+    nd = d.length();
+    int last_step = sizeof(double);
+    for (int j = 0; j < d.length(); ++j) {
+      dims[j] = d(j);
+      step[j] = last_step;
+      last_step *= dims[j];
+      curr[j] = 0;
+    }
+    _data = (uchar*)const_cast<double*>(nda.data());
+    _type = CV_64F;
+    done = false;
+  }
+
+  operator bool () const {
+    return !done;
+  }
+  uchar* data() {
+    return _data;
+  }
+  int type() const {
+    return _type;
+  }
+  ndim_iterator& operator++ () {
+    int curr_dim = 0;
+    for (;;) {
+      _data += step[curr_dim];
+      if (++curr[curr_dim] < dims[curr_dim])
+       break;
+      curr[curr_dim] = 0;
+      _data -= step[curr_dim] * dims[curr_dim];
+      ++curr_dim;
+      if (curr_dim == nd) {
+       done = true;
+       break;
+      }
+    }
+    return *this;
+  }
+};
+
+template <class T1, class T2>
+  void transpose_copy_typed(ndim_iterator src_it, ndim_iterator dst_it, 
+                          double scale) {
+  assert(sizeof(T1) == CV_ELEM_SIZE1(src_it.type()));
+  assert(sizeof(T2) == CV_ELEM_SIZE1(dst_it.type()));
+  if (scale == 1) {
+    while (src_it) {
+      *(T2*)dst_it.data() = (T2)*(T1*)src_it.data();
+      ++src_it;
+      ++dst_it;
+    }
+  } else {
+    while (src_it) {
+      *(T2*)dst_it.data() = (T2)(scale * (*(T1*)src_it.data()));
+      ++src_it;
+      ++dst_it;
+    }
+  }
+}
+
+template <class T1>
+void transpose_copy2(ndim_iterator src_it, ndim_iterator dst_it, 
+                    double scale) {
+  switch (CV_MAT_DEPTH(dst_it.type())) {
+  case CV_8U: transpose_copy_typed<T1,unsigned char>(src_it,dst_it,scale); break;
+  case CV_8S: transpose_copy_typed<T1,signed char>(src_it,dst_it,scale); break;
+  case CV_16U: transpose_copy_typed<T1,unsigned short>(src_it,dst_it,scale); break;
+  case CV_16S: transpose_copy_typed<T1,signed short>(src_it,dst_it,scale); break;
+  case CV_32S: transpose_copy_typed<T1,signed int>(src_it,dst_it,scale); break;
+  case CV_32F: transpose_copy_typed<T1,float>(src_it,dst_it,scale); break;
+  case CV_64F: transpose_copy_typed<T1,double>(src_it,dst_it,scale); break;
+  default:
+    error("unsupported dest array type (supported types are CV_8U, CV_8S, "
+         "CV_16U, CV_16S, CV_32S, CV_32F, CV_64F)");
+  }
+}
+
+void transpose_copy(ndim_iterator src_it, ndim_iterator dst_it, 
+                   double scale = 1) {
+  switch (CV_MAT_DEPTH(src_it.type())) {
+  case CV_8U: transpose_copy2<unsigned char>(src_it,dst_it,scale); break;
+  case CV_8S: transpose_copy2<signed char>(src_it,dst_it,scale); break;
+  case CV_16U: transpose_copy2<unsigned short>(src_it,dst_it,scale); break;
+  case CV_16S: transpose_copy2<signed short>(src_it,dst_it,scale); break;
+  case CV_32S: transpose_copy2<signed int>(src_it,dst_it,scale); break;
+  case CV_32F: transpose_copy2<float>(src_it,dst_it,scale); break;
+  case CV_64F: transpose_copy2<double>(src_it,dst_it,scale); break;
+  default:
+    error("unsupported source array type (supported types are CV_8U, CV_8S, "
+         "CV_16U, CV_16S, CV_32S, CV_32F, CV_64F)");
+  }
+}
+
+octave_value cv2mat(CvArr* arr) {
+  dim_vector d;
+  NDArray nda;
+
+  if (CV_IS_MAT(arr)) {
+    // m x n x c
+    CvMat* m = (CvMat*)arr;
+
+    int c = CV_MAT_CN(m->type);
+    if (c == 1) {
+      d.resize(2);
+      d(0) = m->rows;
+      d(1) = m->cols;
+    } else {
+      d.resize(3);
+      d(0) = m->rows;
+      d(1) = m->cols;
+      d(2) = c;
+    }
+
+    nda = NDArray(d);
+    transpose_copy(m, nda);
+  }
+  else if (CV_IS_MATND(arr)) {
+    // m1 x m2 x ... x mn x c
+    CvMatND* m = (CvMatND*)arr;
+
+    int c = CV_MAT_CN(m->type);
+    if (c == 1) {
+      d.resize(m->dims);
+      for (int j = 0; j < m->dims; ++j)
+       d(j) = m->dim[j].size;
+    } else {
+      d.resize(m->dims + 1);
+      for (int j = 0; j < m->dims; ++j)
+       d(j) = m->dim[j].size;
+      d(m->dims) = c;
+    }
+
+    nda = NDArray(d);
+    transpose_copy(m, nda);
+  }
+  else if (CV_IS_IMAGE(arr)) {
+    // m x n x c
+    IplImage* img = (IplImage*)arr;
+
+    if (img->nChannels == 1) {
+      d.resize(2);
+      d(0) = img->height;
+      d(1) = img->width;
+    } else {
+      d.resize(3);
+      d(0) = img->height;
+      d(1) = img->width;
+      d(2) = img->nChannels;
+    }
+
+    nda = NDArray(d);
+    transpose_copy(img, nda);
+  }
+  else {
+    error("unsupported array type (supported types are CvMat, CvMatND, IplImage)");
+    return octave_value();
+  }
+
+  return nda;
+}
+
+octave_value mat2cv(const octave_value& ov, int type) {
+  NDArray nda(ov.array_value());
+  if (error_state)
+    return 0;
+
+  dim_vector d = ov.dims();
+  assert(d.length() > 0);
+
+  int nd = d.length();
+  int last_dim = d(d.length() - 1);
+  int c = CV_MAT_CN(type);
+  if (c != 1 && c != last_dim) {
+    error("last dimension and channel must agree, or channel must equal one");
+    return 0;
+  }
+  if (c > 1)
+    --nd;
+
+  if (nd == 2) {
+    CvMat *m = cvCreateMat(d(0), d(1), type);
+    transpose_copy(nda, m);
+    return SWIG_NewPointerObj(m, SWIGTYPE_p_CvMat, SWIG_POINTER_OWN);
+  }
+  else {
+    int tmp[CV_MAX_DIM];
+    for (int j = 0; j < nd; ++j)
+      tmp[j] = d(j);
+    CvMatND *m = cvCreateMatND(nd, tmp, type);
+    transpose_copy(nda, m);
+    return SWIG_NewPointerObj(m, SWIGTYPE_p_CvMatND, SWIG_POINTER_OWN);
+  }
+}
+
+octave_value cv2im(CvArr* arr) {
+  if (!CV_IS_IMAGE(arr) && !CV_IS_MAT(arr)) {
+    error("input is not an OpenCV image or 2D matrix");
+    return octave_value();
+  }
+
+  dim_vector d;
+  NDArray nda;
+
+  if (CV_IS_MAT(arr)) {
+    // m x n x c
+    CvMat* m = (CvMat*)arr;
+
+    int c = CV_MAT_CN(m->type);
+    if (c == 1) {
+      d.resize(2);
+      d(0) = m->rows;
+      d(1) = m->cols;
+    } else {
+      d.resize(3);
+      d(0) = m->rows;
+      d(1) = m->cols;
+      d(2) = c;
+    }
+
+    nda = NDArray(d);
+    transpose_copy(m, nda, 1/256.0);
+  }
+  else if (CV_IS_IMAGE(arr)) {
+    // m x n x c
+    IplImage* img = (IplImage*)arr;
+
+    if (img->nChannels == 1) {
+      d.resize(2);
+      d(0) = img->height;
+      d(1) = img->width;
+    } else {
+      d.resize(3);
+      d(0) = img->height;
+      d(1) = img->width;
+      d(2) = img->nChannels;
+    }
+
+    nda = NDArray(d);
+    transpose_copy(img, nda, 1/256.0);
+  }
+
+  return nda;
+}
+
+CvMat* im2cv(const octave_value& ov, int depth) {
+  NDArray nda(ov.array_value());
+  if (error_state)
+    return 0;
+
+  dim_vector d = ov.dims();
+  assert(d.length() > 0);
+
+  if (d.length() != 2 && d.length() != 3 && 
+      !(d.length() == 3 && d(2) <= 4)) {
+    error("input must be m x n or m x n x c matrix, where 1<=c<=4");
+    return 0;
+  }
+
+  int channels = d.length() == 2 ? 1 : d(2);
+  int type = CV_MAKETYPE(depth, channels);
+
+  CvMat *m = cvCreateMat(d(0), d(1), type);
+  transpose_copy(nda, m, 256);
+
+  return m;
+}
+
+
+const char* _wrap_CV_FOURCC_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{retval} = CV_FOURCC (@var{c1}, @var{c2}, @var{c3}, @var{c4})\n\
+@var{c1} is of type char. @var{c2} is of type char. @var{c3} is of type char. @var{c4} is of type char. @var{retval} is of type int. \n\
+@end deftypefn";
+const char* _wrap_cvRetrieveFrame__Deprecated_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{retval} = cvRetrieveFrame (@var{capture}, @var{streamIdx} = 0)\n\
+@var{capture} is of type CvCapture. @var{streamIdx} is of type int. @var{retval} is of type . \n\
+@end deftypefn";
+const char* _wrap_cvQueryFrame__Deprecated_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{retval} = cvQueryFrame (@var{capture})\n\
+@var{capture} is of type CvCapture. @var{retval} is of type . \n\
+@end deftypefn";
+const char* _wrap_CvvImage_GetImage_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{retval} = GetImage (@var{self})\n\
+@var{self} is of type CvvImage. @var{retval} is of type . \n\
+@end deftypefn";
+const char* _wrap_CvvImage_Width_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{retval} = Width (@var{self})\n\
+@var{self} is of type CvvImage. @var{retval} is of type int. \n\
+@end deftypefn";
+const char* _wrap_cvSetMouseCallbackOld_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} cvSetMouseCallback (@var{window_name}, @var{on_mouse}, @var{param} = nil)\n\
+@var{window_name} is of type char. @var{on_mouse} is of type CvMouseCallback. @var{param} is of type void. \n\
+@end deftypefn";
+const char* _wrap_cvDestroyAllWindows_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} cvDestroyAllWindows ()\n\
+\n\
+@end deftypefn";
+const char* _wrap_cvDecodeImage_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{retval} = cvDecodeImage (@var{buf}, @var{iscolor} = 1)\n\
+@var{buf} is of type CvMat. @var{iscolor} is of type int. @var{retval} is of type . \n\
+@end deftypefn";
+const char* _wrap_cvSaveImage_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{retval} = cvSaveImage (@var{filename}, @var{image}, @var{params} = 0)\n\
+@var{filename} is of type char. @var{image} is of type CvArr. @var{params} is of type int. @var{retval} is of type int. \n\
+@end deftypefn";
+const char* _wrap_cvGetWindowHandle_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{retval} = cvGetWindowHandle (@var{name})\n\
+@var{name} is of type char. @var{retval} is of type void. \n\
+@end deftypefn";
+const char* _wrap_cvEncodeImage_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{retval} = cvEncodeImage (@var{ext}, @var{image}, @var{params} = 0)\n\
+@var{ext} is of type char. @var{image} is of type CvArr. @var{params} is of type int. @var{retval} is of type CvMat. \n\
+@end deftypefn";
+const char* _wrap_CvvImage_Fill_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} Fill (@var{self}, @var{color})\n\
+@var{self} is of type CvvImage. @var{color} is of type int. \n\
+@end deftypefn";
+const char* _wrap_cvNamedWindow_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{retval} = cvNamedWindow (@var{name}, @var{flags} = 1)\n\
+@var{name} is of type char. @var{flags} is of type int. @var{retval} is of type int. \n\
+@end deftypefn";
+const char* _wrap_mat2cv_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{m1} = mat2cv (@var{m2}, @var{type})\n\
+Convert the Octave array @var{m2} into either a CvMat or a CvMatND of type\n\
+@var{type}.\n\
+@var{type} is one of CV_8UC(n), CV_8SC(n), CV_16UC(n), CV_16SC(n), CV_32SC(n), \n\
+CV_32FC(n), CV_64FC(n), where n indicates channel and is between 1 and 4.\n\
+If the dimension of @var{m2} is equal to 2 (not counting channels),\n\
+a CvMat is returned. Otherwise, a CvMatND is returned.\n\
+@end deftypefn\n\
+";
+const char* _wrap_CvvImage_Load_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{retval} = Load (@var{self}, @var{filename})\n\
+@var{self} is of type CvvImage. @var{filename} is of type char. @var{retval} is of type bool. \n\
+@end deftypefn";
+const char* _wrap_cvConvertImage_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} cvConvertImage (@var{src}, @var{dst}, @var{flags} = 0)\n\
+@var{src} is of type CvArr. @var{dst} is of type CvArr. @var{flags} is of type int. \n\
+@end deftypefn";
+const char* _wrap_cvInitSystem_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{retval} = cvInitSystem (@var{argc}, @var{argv})\n\
+@var{argc} is of type int. @var{argv} is of type char. @var{retval} is of type int. \n\
+@end deftypefn";
+const char* _wrap_CvvImage_Save_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{retval} = Save (@var{self}, @var{filename})\n\
+@var{self} is of type CvvImage. @var{filename} is of type char. @var{retval} is of type bool. \n\
+@end deftypefn";
+const char* _wrap_cvLoadImage_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{retval} = cvLoadImageMat (@var{filename})\n\
+@var{filename} is of type char. @var{retval} is of type CvMat. \n\
+@end deftypefn";
+const char* _wrap_CvvImage_CopyOf_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} CopyOf (@var{self}, @var{img})\n\
+@var{self} is of type CvvImage. @var{img} is of type . \n\
+@end deftypefn";
+const char* _wrap_cvLoadImageM_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{retval} = cvLoadImageM (@var{filename}, @var{iscolor} = 1)\n\
+@var{filename} is of type char. @var{iscolor} is of type int. @var{retval} is of type CvMat. \n\
+@end deftypefn";
+const char* _wrap_new_CvvImage_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{retval} = CvvImage ()\n\
+@var{retval} is of type CvvImage. \n\
+@end deftypefn";
+const char* _wrap_delete_CvvImage_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} CvvImage (@var{self})\n\
+@var{self} is of type CvvImage. \n\
+@end deftypefn";
+const char* _wrap_CvvImage_Bpp_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{retval} = Bpp (@var{self})\n\
+@var{self} is of type CvvImage. @var{retval} is of type int. \n\
+@end deftypefn";
+const char* _wrap_cvCreateTrackbar2_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{retval} = cvCreateTrackbar2 (@var{trackbar_name}, @var{window_name}, @var{value}, @var{count}, @var{on_change}, @var{userdata} = 0)\n\
+@var{trackbar_name} is of type char. @var{window_name} is of type char. @var{value} is of type int. @var{count} is of type int. @var{on_change} is of type CvTrackbarCallback2. @var{userdata} is of type void. @var{retval} is of type int. \n\
+@end deftypefn";
+const char* _wrap_cvCreateVideoWriter_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{retval} = cvCreateVideoWriter (@var{filename}, @var{fourcc}, @var{fps}, @var{frame_size}, @var{is_color} = 1)\n\
+@var{filename} is of type char. @var{fourcc} is of type int. @var{fps} is of type double. @var{frame_size} is of type CvSize. @var{is_color} is of type int. @var{retval} is of type CvVideoWriter. \n\
+@end deftypefn";
+const char* _wrap_cvReleaseVideoWriter_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} cvReleaseVideoWriter (@var{writer})\n\
+@var{writer} is of type CvVideoWriter. \n\
+@end deftypefn";
+const char* _wrap_delete_CvVideoWriter_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} CvVideoWriter (@var{self})\n\
+@var{self} is of type CvVideoWriter. \n\
+@end deftypefn";
+const char* _wrap_CvvImage_Show_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} Show (@var{self}, @var{window})\n\
+@var{self} is of type CvvImage. @var{window} is of type char. \n\
+@end deftypefn";
+const char* _wrap_cvDestroyWindow_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} cvDestroyWindow (@var{name})\n\
+@var{name} is of type char. \n\
+@end deftypefn";
+const char* _wrap_cvMoveWindow_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} cvMoveWindow (@var{name}, @var{x}, @var{y})\n\
+@var{name} is of type char. @var{x} is of type int. @var{y} is of type int. \n\
+@end deftypefn";
+const char* _wrap_cvResizeWindow_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} cvResizeWindow (@var{name}, @var{width}, @var{height})\n\
+@var{name} is of type char. @var{width} is of type int. @var{height} is of type int. \n\
+@end deftypefn";
+const char* _wrap_cvGetCaptureDomain_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{retval} = cvGetCaptureDomain (@var{capture})\n\
+@var{capture} is of type CvCapture. @var{retval} is of type int. \n\
+@end deftypefn";
+const char* _wrap_cvGetWindowName_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{retval} = cvGetWindowName (@var{window_handle})\n\
+@var{window_handle} is of type void. @var{retval} is of type char. \n\
+@end deftypefn";
+const char* _wrap_cvStartWindowThread_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{retval} = cvStartWindowThread ()\n\
+@var{retval} is of type int. \n\
+@end deftypefn";
+const char* _wrap_cvWaitKey_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{retval} = cvWaitKey (@var{delay} = 0)\n\
+@var{delay} is of type int. @var{retval} is of type int. \n\
+@end deftypefn";
+const char* _wrap_cvSetTrackbarPos_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} cvSetTrackbarPos (@var{trackbar_name}, @var{window_name}, @var{pos})\n\
+@var{trackbar_name} is of type char. @var{window_name} is of type char. @var{pos} is of type int. \n\
+@end deftypefn";
+const char* _wrap_cvGetTrackbarPos_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{retval} = cvGetTrackbarPos (@var{trackbar_name}, @var{window_name})\n\
+@var{trackbar_name} is of type char. @var{window_name} is of type char. @var{retval} is of type int. \n\
+@end deftypefn";
+const char* _wrap_cv2mat_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{m1} = cv2mat (@var{m2})\n\
+Convert the CvMat, CvMatND, or IplImage @var{m2} into an Octave real matrix @var{m1}.\n\
+The dimensions @var{m1} are those of @var{m2}, plus an addition dimension \n\
+if @var{m2} has more than one channel.\n\
+@end deftypefn\n\
+";
+const char* _wrap_cvQueryFrame_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{retval} = cvQueryFrame__CvMat (@var{capture})\n\
+@var{capture} is of type CvCapture. @var{retval} is of type CvMat. \n\
+@end deftypefn";
+const char* _wrap_cvShowImage_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} cvShowImage (@var{name}, @var{image})\n\
+@var{name} is of type char. @var{image} is of type CvArr. \n\
+@end deftypefn";
+const char* _wrap_CvvImage_Height_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{retval} = Height (@var{self})\n\
+@var{self} is of type CvvImage. @var{retval} is of type int. \n\
+@end deftypefn";
+const char* _wrap_cvDecodeImageM_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{retval} = cvDecodeImageM (@var{buf}, @var{iscolor} = 1)\n\
+@var{buf} is of type CvMat. @var{iscolor} is of type int. @var{retval} is of type CvMat. \n\
+@end deftypefn";
+const char* _wrap_cvGetCaptureProperty_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{retval} = cvGetCaptureProperty (@var{capture}, @var{property_id})\n\
+@var{capture} is of type CvCapture. @var{property_id} is of type int. @var{retval} is of type double. \n\
+@end deftypefn";
+const char* _wrap_cvSetCaptureProperty_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{retval} = cvSetCaptureProperty (@var{capture}, @var{property_id}, @var{value})\n\
+@var{capture} is of type CvCapture. @var{property_id} is of type int. @var{value} is of type double. @var{retval} is of type int. \n\
+@end deftypefn";
+const char* _wrap_CvvImage_LoadRect_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{retval} = LoadRect (@var{self}, @var{filename}, @var{desired_color}, @var{r})\n\
+@var{self} is of type CvvImage. @var{filename} is of type char. @var{desired_color} is of type int. @var{r} is of type CvRect. @var{retval} is of type bool. \n\
+@end deftypefn";
+const char* _wrap_im2cv_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{I} = im2cv (@var{im}, @var{depth})\n\
+Convert the Octave image @var{im} into the OpenCV image @var{I} of depth\n\
+@var{depth}.\n\
+@var{im} is a real matrix of dimension height x width or \n\
+height x width x channels, with values within the interval [0,1].\n\
+@var{depth} must be one of 0, 1, 2, 3, 4, 5, 6.\n\
+@end deftypefn\n\
+";
+const char* _wrap_cvRetrieveFrame_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{retval} = cvRetrieveFrame__CvMat (@var{capture})\n\
+@var{capture} is of type CvCapture. @var{retval} is of type CvMat. \n\
+@end deftypefn";
+const char* _wrap_cvCreateTrackbar_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{retval} = cvCreateTrackbar (@var{trackbar_name}, @var{window_name}, @var{value}, @var{count}, @var{on_change})\n\
+@var{trackbar_name} is of type char. @var{window_name} is of type char. @var{value} is of type int. @var{count} is of type int. @var{on_change} is of type CvTrackbarCallback. @var{retval} is of type int. \n\
+@end deftypefn";
+const char* _wrap_cvWriteFrame_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{retval} = cvWriteFrame (@var{writer}, @var{image})\n\
+@var{writer} is of type CvVideoWriter. @var{image} is of type . @var{retval} is of type int. \n\
+@end deftypefn";
+const char* _wrap_cvCreateFileCapture_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{retval} = cvCreateFileCapture (@var{filename})\n\
+@var{filename} is of type char. @var{retval} is of type CvCapture. \n\
+@end deftypefn";
+const char* _wrap_cvCreateCameraCapture_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{retval} = cvCreateCameraCapture (@var{index})\n\
+@var{index} is of type int. @var{retval} is of type CvCapture. \n\
+@end deftypefn";
+const char* _wrap_cvGrabFrame_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{retval} = cvGrabFrame (@var{capture})\n\
+@var{capture} is of type CvCapture. @var{retval} is of type int. \n\
+@end deftypefn";
+const char* _wrap_cvReleaseCapture_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} cvReleaseCapture (@var{capture})\n\
+@var{capture} is of type CvCapture. \n\
+@end deftypefn";
+const char* _wrap_delete_CvCapture_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} CvCapture (@var{self})\n\
+@var{self} is of type CvCapture. \n\
+@end deftypefn";
+const char* _wrap_cv2im_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{im} = cv2im (@var{I})\n\
+Convert the OpenCV image or 2D matrix @var{I} into an Octave image @var{im}.\n\
+@var{im} is a real matrix of dimension height x width or \n\
+height x width x channels, with values within the interval [0,1]).\n\
+@end deftypefn\n\
+";
+const char* _wrap_delete_CvRNG_Wrapper_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} CvRNG_Wrapper::~CvRNG_Wrapper (@var{self})\n\
+@var{self} is of type CvRNG_Wrapper. \n\
+@end deftypefn";
+const char* _wrap_delete_CvSubdiv2DEdge_Wrapper_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} CvSubdiv2DEdge_Wrapper::~CvSubdiv2DEdge_Wrapper (@var{self})\n\
+@var{self} is of type CvSubdiv2DEdge_Wrapper. \n\
+@end deftypefn";
+const char* _wrap_CvvImage_Create_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{retval} = Create (@var{self}, @var{width}, @var{height}, @var{bits_per_pixel})\n\
+@var{self} is of type CvvImage. @var{width} is of type int. @var{height} is of type int. @var{bits_per_pixel} is of type int. @var{retval} is of type bool. \n\
+@end deftypefn";
+const char* _wrap_CvvImage_Destroy_texinfo = "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} Destroy (@var{self})\n\
+@var{self} is of type CvvImage. \n\
+@end deftypefn";
+
+static octave_value_list _wrap_new_CvRNG_Wrapper (const octave_value_list& args, int nargout) {
+  CvRNG *arg1 = 0 ;
+  void *argp1 ;
+  int res1 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  CvRNG_Wrapper *result = 0 ;
+  
+  if (!SWIG_check_num_args("new_CvRNG_Wrapper",args.length(),1,1,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1, SWIGTYPE_p_uint64_t,  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_CvRNG_Wrapper" "', argument " "1"" of type '" "CvRNG const &""'"); 
+  }
+  if (!argp1) {
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_CvRNG_Wrapper" "', argument " "1"" of type '" "CvRNG const &""'"); 
+  }
+  arg1 = (CvRNG *)(argp1);
+  result = (CvRNG_Wrapper *)new CvRNG_Wrapper((CvRNG const &)*arg1);
+  _outv = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_CvRNG_Wrapper, 1 |  0 );
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_CvRNG_Wrapper_ptr (const octave_value_list& args, int nargout) {
+  CvRNG_Wrapper *arg1 = (CvRNG_Wrapper *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  CvRNG *result = 0 ;
+  
+  if (!SWIG_check_num_args("CvRNG_Wrapper_ptr",args.length(),1,1,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvRNG_Wrapper, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "CvRNG_Wrapper_ptr" "', argument " "1"" of type '" "CvRNG_Wrapper *""'"); 
+  }
+  arg1 = (CvRNG_Wrapper *)(argp1);
+  result = (CvRNG *)(arg1)->ptr();
+  _outv = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_uint64_t, 0 |  0 );
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_CvRNG_Wrapper_ref (const octave_value_list& args, int nargout) {
+  CvRNG_Wrapper *arg1 = (CvRNG_Wrapper *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  CvRNG *result = 0 ;
+  
+  if (!SWIG_check_num_args("CvRNG_Wrapper_ref",args.length(),1,1,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvRNG_Wrapper, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "CvRNG_Wrapper_ref" "', argument " "1"" of type '" "CvRNG_Wrapper *""'"); 
+  }
+  arg1 = (CvRNG_Wrapper *)(argp1);
+  result = (CvRNG *) &(arg1)->ref();
+  _outv = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_uint64_t, 0 |  0 );
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_CvRNG_Wrapper___eq__ (const octave_value_list& args, int nargout) {
+  CvRNG_Wrapper *arg1 = (CvRNG_Wrapper *) 0 ;
+  CvRNG_Wrapper *arg2 = 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  void *argp2 ;
+  int res2 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  bool result;
+  
+  if (!SWIG_check_num_args("CvRNG_Wrapper___eq__",args.length(),2,2,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvRNG_Wrapper, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "CvRNG_Wrapper___eq__" "', argument " "1"" of type '" "CvRNG_Wrapper *""'"); 
+  }
+  arg1 = (CvRNG_Wrapper *)(argp1);
+  res2 = SWIG_ConvertPtr(args(1), &argp2, SWIGTYPE_p_CvRNG_Wrapper,  0 );
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "CvRNG_Wrapper___eq__" "', argument " "2"" of type '" "CvRNG_Wrapper const &""'"); 
+  }
+  if (!argp2) {
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "CvRNG_Wrapper___eq__" "', argument " "2"" of type '" "CvRNG_Wrapper const &""'"); 
+  }
+  arg2 = (CvRNG_Wrapper *)(argp2);
+  result = (bool)(arg1)->operator ==((CvRNG_Wrapper const &)*arg2);
+  _outv = SWIG_From_bool((bool)(result));
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_CvRNG_Wrapper___ne__ (const octave_value_list& args, int nargout) {
+  CvRNG_Wrapper *arg1 = (CvRNG_Wrapper *) 0 ;
+  CvRNG_Wrapper *arg2 = 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  void *argp2 ;
+  int res2 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  bool result;
+  
+  if (!SWIG_check_num_args("CvRNG_Wrapper___ne__",args.length(),2,2,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvRNG_Wrapper, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "CvRNG_Wrapper___ne__" "', argument " "1"" of type '" "CvRNG_Wrapper *""'"); 
+  }
+  arg1 = (CvRNG_Wrapper *)(argp1);
+  res2 = SWIG_ConvertPtr(args(1), &argp2, SWIGTYPE_p_CvRNG_Wrapper,  0 );
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "CvRNG_Wrapper___ne__" "', argument " "2"" of type '" "CvRNG_Wrapper const &""'"); 
+  }
+  if (!argp2) {
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "CvRNG_Wrapper___ne__" "', argument " "2"" of type '" "CvRNG_Wrapper const &""'"); 
+  }
+  arg2 = (CvRNG_Wrapper *)(argp2);
+  result = (bool)(arg1)->operator !=((CvRNG_Wrapper const &)*arg2);
+  _outv = SWIG_From_bool((bool)(result));
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_delete_CvRNG_Wrapper (const octave_value_list& args, int nargout) {
+  CvRNG_Wrapper *arg1 = (CvRNG_Wrapper *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  
+  if (!SWIG_check_num_args("delete_CvRNG_Wrapper",args.length(),1,1,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvRNG_Wrapper, SWIG_POINTER_DISOWN |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_CvRNG_Wrapper" "', argument " "1"" of type '" "CvRNG_Wrapper *""'"); 
+  }
+  arg1 = (CvRNG_Wrapper *)(argp1);
+  {
+    try {
+      delete arg1; 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = octave_value();
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static swig_octave_member swig_CvRNG_Wrapper_members[] = {
+{"ptr",_wrap_CvRNG_Wrapper_ptr,0,0,0,0},
+{"ref",_wrap_CvRNG_Wrapper_ref,0,0,0,0},
+{"__eq__",_wrap_CvRNG_Wrapper___eq__,0,0,0,0},
+{"__ne__",_wrap_CvRNG_Wrapper___ne__,0,0,0,0},
+{0,0,0,0}
+};
+static const char *swig_CvRNG_Wrapper_base_names[] = {0};
+static const swig_type_info *swig_CvRNG_Wrapper_base[] = {0};
+static swig_octave_class _wrap_class_CvRNG_Wrapper = {"CvRNG_Wrapper", &SWIGTYPE_p_CvRNG_Wrapper,0,_wrap_new_CvRNG_Wrapper,0,_wrap_delete_CvRNG_Wrapper,swig_CvRNG_Wrapper_members,swig_CvRNG_Wrapper_base_names,swig_CvRNG_Wrapper_base };
+
+static octave_value_list _wrap_new_CvSubdiv2DEdge_Wrapper (const octave_value_list& args, int nargout) {
+  CvSubdiv2DEdge *arg1 = 0 ;
+  CvSubdiv2DEdge temp1 ;
+  size_t val1 ;
+  int ecode1 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  CvSubdiv2DEdge_Wrapper *result = 0 ;
+  
+  if (!SWIG_check_num_args("new_CvSubdiv2DEdge_Wrapper",args.length(),1,1,0)) {
+    SWIG_fail;
+  }
+  ecode1 = SWIG_AsVal_size_t(args(0), &val1);
+  if (!SWIG_IsOK(ecode1)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_CvSubdiv2DEdge_Wrapper" "', argument " "1"" of type '" "CvSubdiv2DEdge""'");
+  } 
+  temp1 = (CvSubdiv2DEdge)(val1);
+  arg1 = &temp1;
+  result = (CvSubdiv2DEdge_Wrapper *)new CvSubdiv2DEdge_Wrapper((CvSubdiv2DEdge const &)*arg1);
+  _outv = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_CvSubdiv2DEdge_Wrapper, 1 |  0 );
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_CvSubdiv2DEdge_Wrapper_ptr (const octave_value_list& args, int nargout) {
+  CvSubdiv2DEdge_Wrapper *arg1 = (CvSubdiv2DEdge_Wrapper *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  CvSubdiv2DEdge *result = 0 ;
+  
+  if (!SWIG_check_num_args("CvSubdiv2DEdge_Wrapper_ptr",args.length(),1,1,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvSubdiv2DEdge_Wrapper, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "CvSubdiv2DEdge_Wrapper_ptr" "', argument " "1"" of type '" "CvSubdiv2DEdge_Wrapper *""'"); 
+  }
+  arg1 = (CvSubdiv2DEdge_Wrapper *)(argp1);
+  result = (CvSubdiv2DEdge *)(arg1)->ptr();
+  _outv = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_size_t, 0 |  0 );
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_CvSubdiv2DEdge_Wrapper_ref (const octave_value_list& args, int nargout) {
+  CvSubdiv2DEdge_Wrapper *arg1 = (CvSubdiv2DEdge_Wrapper *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  CvSubdiv2DEdge *result = 0 ;
+  
+  if (!SWIG_check_num_args("CvSubdiv2DEdge_Wrapper_ref",args.length(),1,1,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvSubdiv2DEdge_Wrapper, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "CvSubdiv2DEdge_Wrapper_ref" "', argument " "1"" of type '" "CvSubdiv2DEdge_Wrapper *""'"); 
+  }
+  arg1 = (CvSubdiv2DEdge_Wrapper *)(argp1);
+  result = (CvSubdiv2DEdge *) &(arg1)->ref();
+  _outv = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_size_t, 0 |  0 );
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_CvSubdiv2DEdge_Wrapper___eq__ (const octave_value_list& args, int nargout) {
+  CvSubdiv2DEdge_Wrapper *arg1 = (CvSubdiv2DEdge_Wrapper *) 0 ;
+  CvSubdiv2DEdge_Wrapper *arg2 = 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  void *argp2 ;
+  int res2 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  bool result;
+  
+  if (!SWIG_check_num_args("CvSubdiv2DEdge_Wrapper___eq__",args.length(),2,2,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvSubdiv2DEdge_Wrapper, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "CvSubdiv2DEdge_Wrapper___eq__" "', argument " "1"" of type '" "CvSubdiv2DEdge_Wrapper *""'"); 
+  }
+  arg1 = (CvSubdiv2DEdge_Wrapper *)(argp1);
+  res2 = SWIG_ConvertPtr(args(1), &argp2, SWIGTYPE_p_CvSubdiv2DEdge_Wrapper,  0 );
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "CvSubdiv2DEdge_Wrapper___eq__" "', argument " "2"" of type '" "CvSubdiv2DEdge_Wrapper const &""'"); 
+  }
+  if (!argp2) {
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "CvSubdiv2DEdge_Wrapper___eq__" "', argument " "2"" of type '" "CvSubdiv2DEdge_Wrapper const &""'"); 
+  }
+  arg2 = (CvSubdiv2DEdge_Wrapper *)(argp2);
+  result = (bool)(arg1)->operator ==((CvSubdiv2DEdge_Wrapper const &)*arg2);
+  _outv = SWIG_From_bool((bool)(result));
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_CvSubdiv2DEdge_Wrapper___ne__ (const octave_value_list& args, int nargout) {
+  CvSubdiv2DEdge_Wrapper *arg1 = (CvSubdiv2DEdge_Wrapper *) 0 ;
+  CvSubdiv2DEdge_Wrapper *arg2 = 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  void *argp2 ;
+  int res2 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  bool result;
+  
+  if (!SWIG_check_num_args("CvSubdiv2DEdge_Wrapper___ne__",args.length(),2,2,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvSubdiv2DEdge_Wrapper, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "CvSubdiv2DEdge_Wrapper___ne__" "', argument " "1"" of type '" "CvSubdiv2DEdge_Wrapper *""'"); 
+  }
+  arg1 = (CvSubdiv2DEdge_Wrapper *)(argp1);
+  res2 = SWIG_ConvertPtr(args(1), &argp2, SWIGTYPE_p_CvSubdiv2DEdge_Wrapper,  0 );
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "CvSubdiv2DEdge_Wrapper___ne__" "', argument " "2"" of type '" "CvSubdiv2DEdge_Wrapper const &""'"); 
+  }
+  if (!argp2) {
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "CvSubdiv2DEdge_Wrapper___ne__" "', argument " "2"" of type '" "CvSubdiv2DEdge_Wrapper const &""'"); 
+  }
+  arg2 = (CvSubdiv2DEdge_Wrapper *)(argp2);
+  result = (bool)(arg1)->operator !=((CvSubdiv2DEdge_Wrapper const &)*arg2);
+  _outv = SWIG_From_bool((bool)(result));
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_delete_CvSubdiv2DEdge_Wrapper (const octave_value_list& args, int nargout) {
+  CvSubdiv2DEdge_Wrapper *arg1 = (CvSubdiv2DEdge_Wrapper *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  
+  if (!SWIG_check_num_args("delete_CvSubdiv2DEdge_Wrapper",args.length(),1,1,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvSubdiv2DEdge_Wrapper, SWIG_POINTER_DISOWN |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_CvSubdiv2DEdge_Wrapper" "', argument " "1"" of type '" "CvSubdiv2DEdge_Wrapper *""'"); 
+  }
+  arg1 = (CvSubdiv2DEdge_Wrapper *)(argp1);
+  {
+    try {
+      delete arg1; 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = octave_value();
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static swig_octave_member swig_CvSubdiv2DEdge_Wrapper_members[] = {
+{"ptr",_wrap_CvSubdiv2DEdge_Wrapper_ptr,0,0,0,0},
+{"ref",_wrap_CvSubdiv2DEdge_Wrapper_ref,0,0,0,0},
+{"__eq__",_wrap_CvSubdiv2DEdge_Wrapper___eq__,0,0,0,0},
+{"__ne__",_wrap_CvSubdiv2DEdge_Wrapper___ne__,0,0,0,0},
+{0,0,0,0}
+};
+static const char *swig_CvSubdiv2DEdge_Wrapper_base_names[] = {0};
+static const swig_type_info *swig_CvSubdiv2DEdge_Wrapper_base[] = {0};
+static swig_octave_class _wrap_class_CvSubdiv2DEdge_Wrapper = {"CvSubdiv2DEdge_Wrapper", &SWIGTYPE_p_CvSubdiv2DEdge_Wrapper,0,_wrap_new_CvSubdiv2DEdge_Wrapper,0,_wrap_delete_CvSubdiv2DEdge_Wrapper,swig_CvSubdiv2DEdge_Wrapper_members,swig_CvSubdiv2DEdge_Wrapper_base_names,swig_CvSubdiv2DEdge_Wrapper_base };
+
+static octave_value_list _wrap_cvSetMouseCallback__SWIG_0 (const octave_value_list& args, int nargout) {
+  char *arg1 = (char *) 0 ;
+  octave_value arg2 ;
+  octave_value arg3 ;
+  int res1 ;
+  char *buf1 = 0 ;
+  int alloc1 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  
+  if (!SWIG_check_num_args("cvSetMouseCallback",args.length(),3,3,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_AsCharPtrAndSize(args(0), &buf1, NULL, &alloc1);
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "cvSetMouseCallback" "', argument " "1"" of type '" "char const *""'");
+  }
+  arg1 = (char *)(buf1);
+  arg2 = args(1);
+  arg3 = args(2);
+  cvSetMouseCallbackOct((char const *)arg1,arg2,arg3);
+  _outv = octave_value();
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cvSetMouseCallback__SWIG_1 (const octave_value_list& args, int nargout) {
+  char *arg1 = (char *) 0 ;
+  octave_value arg2 ;
+  int res1 ;
+  char *buf1 = 0 ;
+  int alloc1 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  
+  if (!SWIG_check_num_args("cvSetMouseCallback",args.length(),2,2,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_AsCharPtrAndSize(args(0), &buf1, NULL, &alloc1);
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "cvSetMouseCallback" "', argument " "1"" of type '" "char const *""'");
+  }
+  arg1 = (char *)(buf1);
+  arg2 = args(1);
+  cvSetMouseCallbackOct((char const *)arg1,arg2);
+  _outv = octave_value();
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cvSetMouseCallback (const octave_value_list& args, int nargout) {
+  int argc = args.length();
+  octave_value_ref argv[3]={
+    octave_value_ref(args,0),octave_value_ref(args,1),octave_value_ref(args,2)
+  };
+  
+  if (argc == 2) {
+    int _v;
+    int res = SWIG_AsCharPtrAndSize(argv[0], 0, NULL, 0);
+    _v = SWIG_CheckState(res);
+    if (_v) {
+      _v = (*argv[1]).is_defined();
+      if (_v) {
+        return _wrap_cvSetMouseCallback__SWIG_1(args, nargout);
+      }
+    }
+  }
+  if (argc == 3) {
+    int _v;
+    int res = SWIG_AsCharPtrAndSize(argv[0], 0, NULL, 0);
+    _v = SWIG_CheckState(res);
+    if (_v) {
+      _v = (*argv[1]).is_defined();
+      if (_v) {
+        _v = (*argv[2]).is_defined();
+        if (_v) {
+          return _wrap_cvSetMouseCallback__SWIG_0(args, nargout);
+        }
+      }
+    }
+  }
+  
+  error("No matching function for overload");
+  return octave_value_list();
+}
+
+
+static octave_value_list _wrap_cvLoadImage__SWIG_0 (const octave_value_list& args, int nargout) {
+  char *arg1 = (char *) 0 ;
+  int arg2 ;
+  int res1 ;
+  char *buf1 = 0 ;
+  int alloc1 = 0 ;
+  int val2 ;
+  int ecode2 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  CvMat *result = 0 ;
+  
+  if (!SWIG_check_num_args("cvLoadImage",args.length(),2,2,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_AsCharPtrAndSize(args(0), &buf1, NULL, &alloc1);
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "cvLoadImage" "', argument " "1"" of type '" "char const *""'");
+  }
+  arg1 = (char *)(buf1);
+  ecode2 = SWIG_AsVal_int(args(1), &val2);
+  if (!SWIG_IsOK(ecode2)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "cvLoadImage" "', argument " "2"" of type '" "int""'");
+  } 
+  arg2 = (int)(val2);
+  {
+    try {
+      result = (CvMat *)cvLoadImageMat((char const *)arg1,arg2); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_CvMat, 1 |  0 );
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cvLoadImage__SWIG_1 (const octave_value_list& args, int nargout) {
+  char *arg1 = (char *) 0 ;
+  int res1 ;
+  char *buf1 = 0 ;
+  int alloc1 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  CvMat *result = 0 ;
+  
+  if (!SWIG_check_num_args("cvLoadImage",args.length(),1,1,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_AsCharPtrAndSize(args(0), &buf1, NULL, &alloc1);
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "cvLoadImage" "', argument " "1"" of type '" "char const *""'");
+  }
+  arg1 = (char *)(buf1);
+  {
+    try {
+      result = (CvMat *)cvLoadImageMat((char const *)arg1); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_CvMat, 1 |  0 );
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cvLoadImage (const octave_value_list& args, int nargout) {
+  int argc = args.length();
+  octave_value_ref argv[2]={
+    octave_value_ref(args,0),octave_value_ref(args,1)
+  };
+  
+  if (argc == 1) {
+    int _v;
+    int res = SWIG_AsCharPtrAndSize(argv[0], 0, NULL, 0);
+    _v = SWIG_CheckState(res);
+    if (_v) {
+      return _wrap_cvLoadImage__SWIG_1(args, nargout);
+    }
+  }
+  if (argc == 2) {
+    int _v;
+    int res = SWIG_AsCharPtrAndSize(argv[0], 0, NULL, 0);
+    _v = SWIG_CheckState(res);
+    if (_v) {
+      {
+        int res = SWIG_AsVal_int(argv[1], NULL);
+        _v = SWIG_CheckState(res);
+      }
+      if (_v) {
+        return _wrap_cvLoadImage__SWIG_0(args, nargout);
+      }
+    }
+  }
+  
+  error("No matching function for overload");
+  return octave_value_list();
+}
+
+
+static octave_value_list _wrap_cvRetrieveFrame (const octave_value_list& args, int nargout) {
+  CvCapture *arg1 = (CvCapture *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  CvMat *result = 0 ;
+  
+  if (!SWIG_check_num_args("cvRetrieveFrame",args.length(),1,1,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvCapture, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "cvRetrieveFrame" "', argument " "1"" of type '" "CvCapture *""'"); 
+  }
+  arg1 = (CvCapture *)(argp1);
+  {
+    try {
+      result = (CvMat *)cvRetrieveFrame__CvMat(arg1); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_CvMat, 0 |  0 );
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cvQueryFrame (const octave_value_list& args, int nargout) {
+  CvCapture *arg1 = (CvCapture *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  CvMat *result = 0 ;
+  
+  if (!SWIG_check_num_args("cvQueryFrame",args.length(),1,1,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvCapture, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "cvQueryFrame" "', argument " "1"" of type '" "CvCapture *""'"); 
+  }
+  arg1 = (CvCapture *)(argp1);
+  {
+    try {
+      result = (CvMat *)cvQueryFrame__CvMat(arg1); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_CvMat, 0 |  0 );
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cvInitSystem (const octave_value_list& args, int nargout) {
+  int arg1 ;
+  char **arg2 = (char **) 0 ;
+  int val1 ;
+  int ecode1 = 0 ;
+  void *vptr2 ;
+  char *buffer2 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  int result;
+  
+  if (!SWIG_check_num_args("cvInitSystem",args.length(),2,2,0)) {
+    SWIG_fail;
+  }
+  ecode1 = SWIG_AsVal_int(args(0), &val1);
+  if (!SWIG_IsOK(ecode1)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "cvInitSystem" "', argument " "1"" of type '" "int""'");
+  } 
+  arg1 = (int)(val1);
+  {
+    if ((SWIG_ConvertPtr(args(1), &vptr2, SWIGTYPE_p_char, 1)) == -1){
+      SWIG_fail;
+    }
+    buffer2 = (char *) vptr2;
+    arg2=&buffer2;
+  }
+  {
+    try {
+      result = (int)cvInitSystem(arg1,arg2); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = SWIG_From_int((int)(result));
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cvStartWindowThread (const octave_value_list& args, int nargout) {
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  int result;
+  
+  if (!SWIG_check_num_args("cvStartWindowThread",args.length(),0,0,0)) {
+    SWIG_fail;
+  }
+  {
+    try {
+      result = (int)cvStartWindowThread(); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = SWIG_From_int((int)(result));
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cvNamedWindow (const octave_value_list& args, int nargout) {
+  char *arg1 = (char *) 0 ;
+  int arg2 = (int) 1 ;
+  int res1 ;
+  char *buf1 = 0 ;
+  int alloc1 = 0 ;
+  int val2 ;
+  int ecode2 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  int result;
+  
+  if (!SWIG_check_num_args("cvNamedWindow",args.length(),2,1,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_AsCharPtrAndSize(args(0), &buf1, NULL, &alloc1);
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "cvNamedWindow" "', argument " "1"" of type '" "char const *""'");
+  }
+  arg1 = (char *)(buf1);
+  if (1<args.length()) {
+    ecode2 = SWIG_AsVal_int(args(1), &val2);
+    if (!SWIG_IsOK(ecode2)) {
+      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "cvNamedWindow" "', argument " "2"" of type '" "int""'");
+    } 
+    arg2 = (int)(val2);
+  }
+  {
+    try {
+      result = (int)cvNamedWindow((char const *)arg1,arg2); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = SWIG_From_int((int)(result));
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cvShowImage (const octave_value_list& args, int nargout) {
+  char *arg1 = (char *) 0 ;
+  CvArr *arg2 = (CvArr *) 0 ;
+  int res1 ;
+  char *buf1 = 0 ;
+  int alloc1 = 0 ;
+  bool freearg2 = false ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  
+  if (!SWIG_check_num_args("cvShowImage",args.length(),2,2,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_AsCharPtrAndSize(args(0), &buf1, NULL, &alloc1);
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "cvShowImage" "', argument " "1"" of type '" "char const *""'");
+  }
+  arg1 = (char *)(buf1);
+  {
+    arg2 = OctObject_to_CvArr(args(1), &freearg2);
+  }
+  {
+    try {
+      cvShowImage((char const *)arg1,(void const *)arg2); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = octave_value();
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
+  {
+    if(arg2!=NULL && freearg2){
+      cvReleaseData( arg2 );
+      cvFree(&(arg2));
+    }
+  }
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cvResizeWindow (const octave_value_list& args, int nargout) {
+  char *arg1 = (char *) 0 ;
+  int arg2 ;
+  int arg3 ;
+  int res1 ;
+  char *buf1 = 0 ;
+  int alloc1 = 0 ;
+  int val2 ;
+  int ecode2 = 0 ;
+  int val3 ;
+  int ecode3 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  
+  if (!SWIG_check_num_args("cvResizeWindow",args.length(),3,3,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_AsCharPtrAndSize(args(0), &buf1, NULL, &alloc1);
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "cvResizeWindow" "', argument " "1"" of type '" "char const *""'");
+  }
+  arg1 = (char *)(buf1);
+  ecode2 = SWIG_AsVal_int(args(1), &val2);
+  if (!SWIG_IsOK(ecode2)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "cvResizeWindow" "', argument " "2"" of type '" "int""'");
+  } 
+  arg2 = (int)(val2);
+  ecode3 = SWIG_AsVal_int(args(2), &val3);
+  if (!SWIG_IsOK(ecode3)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "cvResizeWindow" "', argument " "3"" of type '" "int""'");
+  } 
+  arg3 = (int)(val3);
+  {
+    try {
+      cvResizeWindow((char const *)arg1,arg2,arg3); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = octave_value();
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cvMoveWindow (const octave_value_list& args, int nargout) {
+  char *arg1 = (char *) 0 ;
+  int arg2 ;
+  int arg3 ;
+  int res1 ;
+  char *buf1 = 0 ;
+  int alloc1 = 0 ;
+  int val2 ;
+  int ecode2 = 0 ;
+  int val3 ;
+  int ecode3 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  
+  if (!SWIG_check_num_args("cvMoveWindow",args.length(),3,3,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_AsCharPtrAndSize(args(0), &buf1, NULL, &alloc1);
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "cvMoveWindow" "', argument " "1"" of type '" "char const *""'");
+  }
+  arg1 = (char *)(buf1);
+  ecode2 = SWIG_AsVal_int(args(1), &val2);
+  if (!SWIG_IsOK(ecode2)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "cvMoveWindow" "', argument " "2"" of type '" "int""'");
+  } 
+  arg2 = (int)(val2);
+  ecode3 = SWIG_AsVal_int(args(2), &val3);
+  if (!SWIG_IsOK(ecode3)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "cvMoveWindow" "', argument " "3"" of type '" "int""'");
+  } 
+  arg3 = (int)(val3);
+  {
+    try {
+      cvMoveWindow((char const *)arg1,arg2,arg3); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = octave_value();
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cvDestroyWindow (const octave_value_list& args, int nargout) {
+  char *arg1 = (char *) 0 ;
+  int res1 ;
+  char *buf1 = 0 ;
+  int alloc1 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  
+  if (!SWIG_check_num_args("cvDestroyWindow",args.length(),1,1,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_AsCharPtrAndSize(args(0), &buf1, NULL, &alloc1);
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "cvDestroyWindow" "', argument " "1"" of type '" "char const *""'");
+  }
+  arg1 = (char *)(buf1);
+  {
+    try {
+      cvDestroyWindow((char const *)arg1); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = octave_value();
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cvDestroyAllWindows (const octave_value_list& args, int nargout) {
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  
+  if (!SWIG_check_num_args("cvDestroyAllWindows",args.length(),0,0,0)) {
+    SWIG_fail;
+  }
+  {
+    try {
+      cvDestroyAllWindows(); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = octave_value();
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cvGetWindowHandle (const octave_value_list& args, int nargout) {
+  char *arg1 = (char *) 0 ;
+  int res1 ;
+  char *buf1 = 0 ;
+  int alloc1 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  void *result = 0 ;
+  
+  if (!SWIG_check_num_args("cvGetWindowHandle",args.length(),1,1,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_AsCharPtrAndSize(args(0), &buf1, NULL, &alloc1);
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "cvGetWindowHandle" "', argument " "1"" of type '" "char const *""'");
+  }
+  arg1 = (char *)(buf1);
+  {
+    try {
+      result = (void *)cvGetWindowHandle((char const *)arg1); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_void, 0 |  0 );
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cvGetWindowName (const octave_value_list& args, int nargout) {
+  void *arg1 = (void *) 0 ;
+  int res1 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  char *result = 0 ;
+  
+  if (!SWIG_check_num_args("cvGetWindowName",args.length(),1,1,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0),SWIG_as_voidptrptr(&arg1), 0, 0);
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "cvGetWindowName" "', argument " "1"" of type '" "void *""'"); 
+  }
+  {
+    try {
+      result = (char *)cvGetWindowName(arg1); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = SWIG_FromCharPtr((const char *)result);
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cvCreateTrackbar (const octave_value_list& args, int nargout) {
+  char *arg1 = (char *) 0 ;
+  char *arg2 = (char *) 0 ;
+  int *arg3 = (int *) 0 ;
+  int arg4 ;
+  CvTrackbarCallback arg5 = (CvTrackbarCallback) 0 ;
+  int res1 ;
+  char *buf1 = 0 ;
+  int alloc1 = 0 ;
+  int res2 ;
+  char *buf2 = 0 ;
+  int alloc2 = 0 ;
+  int val4 ;
+  int ecode4 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  int result;
+  
+  if (!SWIG_check_num_args("cvCreateTrackbar",args.length(),5,5,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_AsCharPtrAndSize(args(0), &buf1, NULL, &alloc1);
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "cvCreateTrackbar" "', argument " "1"" of type '" "char const *""'");
+  }
+  arg1 = (char *)(buf1);
+  res2 = SWIG_AsCharPtrAndSize(args(1), &buf2, NULL, &alloc2);
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "cvCreateTrackbar" "', argument " "2"" of type '" "char const *""'");
+  }
+  arg2 = (char *)(buf2);
+  {
+    arg3 = (int *)malloc (sizeof (int));
+    *arg3 = OctInt_AsLong (args(2));
+  }
+  ecode4 = SWIG_AsVal_int(args(3), &val4);
+  if (!SWIG_IsOK(ecode4)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "cvCreateTrackbar" "', argument " "4"" of type '" "int""'");
+  } 
+  arg4 = (int)(val4);
+  {
+    if(my_trackbar_cb_size == ICV_OCT_MAX_CB){
+      SWIG_exception(SWIG_IndexError, "Exceeded maximum number of trackbars");
+    }
+    
+    my_trackbar_cb_size++;
+    
+    // memorize the Octave address of the callback function
+    my_trackbar_cb_funcs[my_trackbar_cb_size-1].oct_func = (octave_value) args(4);
+    
+    // prepare to call the C function who will register the callback
+    arg5 = my_trackbar_cb_funcs[ my_trackbar_cb_size-1 ].cv_func;
+  }
+  {
+    try {
+      result = (int)cvCreateTrackbar((char const *)arg1,(char const *)arg2,arg3,arg4,arg5); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = SWIG_From_int((int)(result));
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
+  if (alloc2 == SWIG_NEWOBJ) delete[] buf2;
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cvCreateTrackbar2 (const octave_value_list& args, int nargout) {
+  char *arg1 = (char *) 0 ;
+  char *arg2 = (char *) 0 ;
+  int *arg3 = (int *) 0 ;
+  int arg4 ;
+  CvTrackbarCallback2 arg5 = (CvTrackbarCallback2) 0 ;
+  void *arg6 = (void *) 0 ;
+  int res1 ;
+  char *buf1 = 0 ;
+  int alloc1 = 0 ;
+  int res2 ;
+  char *buf2 = 0 ;
+  int alloc2 = 0 ;
+  int val4 ;
+  int ecode4 = 0 ;
+  int res6 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  int result;
+  
+  if (!SWIG_check_num_args("cvCreateTrackbar2",args.length(),6,5,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_AsCharPtrAndSize(args(0), &buf1, NULL, &alloc1);
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "cvCreateTrackbar2" "', argument " "1"" of type '" "char const *""'");
+  }
+  arg1 = (char *)(buf1);
+  res2 = SWIG_AsCharPtrAndSize(args(1), &buf2, NULL, &alloc2);
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "cvCreateTrackbar2" "', argument " "2"" of type '" "char const *""'");
+  }
+  arg2 = (char *)(buf2);
+  {
+    arg3 = (int *)malloc (sizeof (int));
+    *arg3 = OctInt_AsLong (args(2));
+  }
+  ecode4 = SWIG_AsVal_int(args(3), &val4);
+  if (!SWIG_IsOK(ecode4)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "cvCreateTrackbar2" "', argument " "4"" of type '" "int""'");
+  } 
+  arg4 = (int)(val4);
+  {
+    int res = SWIG_ConvertFunctionPtr(args(4), (void**)(&arg5), SWIGTYPE_p_f_int_p_void__void);
+    if (!SWIG_IsOK(res)) {
+      SWIG_exception_fail(SWIG_ArgError(res), "in method '" "cvCreateTrackbar2" "', argument " "5"" of type '" "CvTrackbarCallback2""'"); 
+    }
+  }
+  if (5<args.length()) {
+    res6 = SWIG_ConvertPtr(args(5),SWIG_as_voidptrptr(&arg6), 0, 0);
+    if (!SWIG_IsOK(res6)) {
+      SWIG_exception_fail(SWIG_ArgError(res6), "in method '" "cvCreateTrackbar2" "', argument " "6"" of type '" "void *""'"); 
+    }
+  }
+  {
+    try {
+      result = (int)cvCreateTrackbar2((char const *)arg1,(char const *)arg2,arg3,arg4,arg5,arg6); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = SWIG_From_int((int)(result));
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
+  if (alloc2 == SWIG_NEWOBJ) delete[] buf2;
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cvGetTrackbarPos (const octave_value_list& args, int nargout) {
+  char *arg1 = (char *) 0 ;
+  char *arg2 = (char *) 0 ;
+  int res1 ;
+  char *buf1 = 0 ;
+  int alloc1 = 0 ;
+  int res2 ;
+  char *buf2 = 0 ;
+  int alloc2 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  int result;
+  
+  if (!SWIG_check_num_args("cvGetTrackbarPos",args.length(),2,2,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_AsCharPtrAndSize(args(0), &buf1, NULL, &alloc1);
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "cvGetTrackbarPos" "', argument " "1"" of type '" "char const *""'");
+  }
+  arg1 = (char *)(buf1);
+  res2 = SWIG_AsCharPtrAndSize(args(1), &buf2, NULL, &alloc2);
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "cvGetTrackbarPos" "', argument " "2"" of type '" "char const *""'");
+  }
+  arg2 = (char *)(buf2);
+  {
+    try {
+      result = (int)cvGetTrackbarPos((char const *)arg1,(char const *)arg2); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = SWIG_From_int((int)(result));
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
+  if (alloc2 == SWIG_NEWOBJ) delete[] buf2;
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cvSetTrackbarPos (const octave_value_list& args, int nargout) {
+  char *arg1 = (char *) 0 ;
+  char *arg2 = (char *) 0 ;
+  int arg3 ;
+  int res1 ;
+  char *buf1 = 0 ;
+  int alloc1 = 0 ;
+  int res2 ;
+  char *buf2 = 0 ;
+  int alloc2 = 0 ;
+  int val3 ;
+  int ecode3 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  
+  if (!SWIG_check_num_args("cvSetTrackbarPos",args.length(),3,3,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_AsCharPtrAndSize(args(0), &buf1, NULL, &alloc1);
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "cvSetTrackbarPos" "', argument " "1"" of type '" "char const *""'");
+  }
+  arg1 = (char *)(buf1);
+  res2 = SWIG_AsCharPtrAndSize(args(1), &buf2, NULL, &alloc2);
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "cvSetTrackbarPos" "', argument " "2"" of type '" "char const *""'");
+  }
+  arg2 = (char *)(buf2);
+  ecode3 = SWIG_AsVal_int(args(2), &val3);
+  if (!SWIG_IsOK(ecode3)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "cvSetTrackbarPos" "', argument " "3"" of type '" "int""'");
+  } 
+  arg3 = (int)(val3);
+  {
+    try {
+      cvSetTrackbarPos((char const *)arg1,(char const *)arg2,arg3); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = octave_value();
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
+  if (alloc2 == SWIG_NEWOBJ) delete[] buf2;
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cvSetMouseCallbackOld (const octave_value_list& args, int nargout) {
+  char *arg1 = (char *) 0 ;
+  CvMouseCallback arg2 = (CvMouseCallback) 0 ;
+  void *arg3 = (void *) NULL ;
+  int res1 ;
+  char *buf1 = 0 ;
+  int alloc1 = 0 ;
+  int res3 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  
+  if (!SWIG_check_num_args("cvSetMouseCallbackOld",args.length(),3,2,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_AsCharPtrAndSize(args(0), &buf1, NULL, &alloc1);
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "cvSetMouseCallbackOld" "', argument " "1"" of type '" "char const *""'");
+  }
+  arg1 = (char *)(buf1);
+  {
+    int res = SWIG_ConvertFunctionPtr(args(1), (void**)(&arg2), SWIGTYPE_p_f_int_int_int_int_p_void__void);
+    if (!SWIG_IsOK(res)) {
+      SWIG_exception_fail(SWIG_ArgError(res), "in method '" "cvSetMouseCallbackOld" "', argument " "2"" of type '" "CvMouseCallback""'"); 
+    }
+  }
+  if (2<args.length()) {
+    res3 = SWIG_ConvertPtr(args(2),SWIG_as_voidptrptr(&arg3), 0, 0);
+    if (!SWIG_IsOK(res3)) {
+      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "cvSetMouseCallbackOld" "', argument " "3"" of type '" "void *""'"); 
+    }
+  }
+  {
+    try {
+      cvSetMouseCallback((char const *)arg1,arg2,arg3); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = octave_value();
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cvLoadImageM (const octave_value_list& args, int nargout) {
+  char *arg1 = (char *) 0 ;
+  int arg2 = (int) 1 ;
+  int res1 ;
+  char *buf1 = 0 ;
+  int alloc1 = 0 ;
+  int val2 ;
+  int ecode2 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  CvMat *result = 0 ;
+  
+  if (!SWIG_check_num_args("cvLoadImageM",args.length(),2,1,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_AsCharPtrAndSize(args(0), &buf1, NULL, &alloc1);
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "cvLoadImageM" "', argument " "1"" of type '" "char const *""'");
+  }
+  arg1 = (char *)(buf1);
+  if (1<args.length()) {
+    ecode2 = SWIG_AsVal_int(args(1), &val2);
+    if (!SWIG_IsOK(ecode2)) {
+      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "cvLoadImageM" "', argument " "2"" of type '" "int""'");
+    } 
+    arg2 = (int)(val2);
+  }
+  {
+    try {
+      result = (CvMat *)cvLoadImageM((char const *)arg1,arg2); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_CvMat, 1 |  0 );
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cvSaveImage (const octave_value_list& args, int nargout) {
+  char *arg1 = (char *) 0 ;
+  CvArr *arg2 = (CvArr *) 0 ;
+  int *arg3 = (int *) 0 ;
+  int res1 ;
+  char *buf1 = 0 ;
+  int alloc1 = 0 ;
+  bool freearg2 = false ;
+  void *argp3 = 0 ;
+  int res3 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  int result;
+  
+  if (!SWIG_check_num_args("cvSaveImage",args.length(),3,2,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_AsCharPtrAndSize(args(0), &buf1, NULL, &alloc1);
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "cvSaveImage" "', argument " "1"" of type '" "char const *""'");
+  }
+  arg1 = (char *)(buf1);
+  {
+    arg2 = OctObject_to_CvArr(args(1), &freearg2);
+  }
+  if (2<args.length()) {
+    res3 = SWIG_ConvertPtr(args(2), &argp3,SWIGTYPE_p_int, 0 |  0 );
+    if (!SWIG_IsOK(res3)) {
+      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "cvSaveImage" "', argument " "3"" of type '" "int const *""'"); 
+    }
+    arg3 = (int *)(argp3);
+  }
+  {
+    try {
+      result = (int)cvSaveImage((char const *)arg1,(void const *)arg2,(int const *)arg3); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = SWIG_From_int((int)(result));
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
+  {
+    if(arg2!=NULL && freearg2){
+      cvReleaseData( arg2 );
+      cvFree(&(arg2));
+    }
+  }
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cvDecodeImage (const octave_value_list& args, int nargout) {
+  CvMat *arg1 = (CvMat *) 0 ;
+  int arg2 = (int) 1 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  int val2 ;
+  int ecode2 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  IplImage *result = 0 ;
+  
+  if (!SWIG_check_num_args("cvDecodeImage",args.length(),2,1,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvMat, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "cvDecodeImage" "', argument " "1"" of type '" "CvMat const *""'"); 
+  }
+  arg1 = (CvMat *)(argp1);
+  if (1<args.length()) {
+    ecode2 = SWIG_AsVal_int(args(1), &val2);
+    if (!SWIG_IsOK(ecode2)) {
+      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "cvDecodeImage" "', argument " "2"" of type '" "int""'");
+    } 
+    arg2 = (int)(val2);
+  }
+  {
+    try {
+      result = (IplImage *)cvDecodeImage((CvMat const *)arg1,arg2); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  {
+    SWIG_exception( SWIG_TypeError, "IplImage * return type is deprecated. Please file a bug report at www.sourceforge.net/opencvlibrary if you see this error message.");
+    SWIG_fail;
+  }
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cvDecodeImageM (const octave_value_list& args, int nargout) {
+  CvMat *arg1 = (CvMat *) 0 ;
+  int arg2 = (int) 1 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  int val2 ;
+  int ecode2 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  CvMat *result = 0 ;
+  
+  if (!SWIG_check_num_args("cvDecodeImageM",args.length(),2,1,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvMat, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "cvDecodeImageM" "', argument " "1"" of type '" "CvMat const *""'"); 
+  }
+  arg1 = (CvMat *)(argp1);
+  if (1<args.length()) {
+    ecode2 = SWIG_AsVal_int(args(1), &val2);
+    if (!SWIG_IsOK(ecode2)) {
+      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "cvDecodeImageM" "', argument " "2"" of type '" "int""'");
+    } 
+    arg2 = (int)(val2);
+  }
+  {
+    try {
+      result = (CvMat *)cvDecodeImageM((CvMat const *)arg1,arg2); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_CvMat, 0 |  0 );
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cvEncodeImage (const octave_value_list& args, int nargout) {
+  char *arg1 = (char *) 0 ;
+  CvArr *arg2 = (CvArr *) 0 ;
+  int *arg3 = (int *) 0 ;
+  int res1 ;
+  char *buf1 = 0 ;
+  int alloc1 = 0 ;
+  bool freearg2 = false ;
+  void *argp3 = 0 ;
+  int res3 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  CvMat *result = 0 ;
+  
+  if (!SWIG_check_num_args("cvEncodeImage",args.length(),3,2,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_AsCharPtrAndSize(args(0), &buf1, NULL, &alloc1);
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "cvEncodeImage" "', argument " "1"" of type '" "char const *""'");
+  }
+  arg1 = (char *)(buf1);
+  {
+    arg2 = OctObject_to_CvArr(args(1), &freearg2);
+  }
+  if (2<args.length()) {
+    res3 = SWIG_ConvertPtr(args(2), &argp3,SWIGTYPE_p_int, 0 |  0 );
+    if (!SWIG_IsOK(res3)) {
+      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "cvEncodeImage" "', argument " "3"" of type '" "int const *""'"); 
+    }
+    arg3 = (int *)(argp3);
+  }
+  {
+    try {
+      result = (CvMat *)cvEncodeImage((char const *)arg1,(void const *)arg2,(int const *)arg3); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_CvMat, 0 |  0 );
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
+  {
+    if(arg2!=NULL && freearg2){
+      cvReleaseData( arg2 );
+      cvFree(&(arg2));
+    }
+  }
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cvConvertImage (const octave_value_list& args, int nargout) {
+  CvArr *arg1 = (CvArr *) 0 ;
+  CvArr *arg2 = (CvArr *) 0 ;
+  int arg3 = (int) 0 ;
+  bool freearg1 = false ;
+  bool freearg2 = false ;
+  int val3 ;
+  int ecode3 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  
+  if (!SWIG_check_num_args("cvConvertImage",args.length(),3,2,0)) {
+    SWIG_fail;
+  }
+  {
+    arg1 = OctObject_to_CvArr(args(0), &freearg1);
+  }
+  {
+    arg2 = OctObject_to_CvArr(args(1), &freearg2);
+  }
+  if (2<args.length()) {
+    ecode3 = SWIG_AsVal_int(args(2), &val3);
+    if (!SWIG_IsOK(ecode3)) {
+      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "cvConvertImage" "', argument " "3"" of type '" "int""'");
+    } 
+    arg3 = (int)(val3);
+  }
+  {
+    try {
+      cvConvertImage((void const *)arg1,arg2,arg3); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = octave_value();
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+  {
+    if(arg1!=NULL && freearg1){
+      cvReleaseData( arg1 );
+      cvFree(&(arg1));
+    }
+  }
+  {
+    if(arg2!=NULL && freearg2){
+      cvReleaseData( arg2 );
+      cvFree(&(arg2));
+    }
+  }
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cvWaitKey (const octave_value_list& args, int nargout) {
+  int arg1 = (int) 0 ;
+  int val1 ;
+  int ecode1 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  int result;
+  
+  if (!SWIG_check_num_args("cvWaitKey",args.length(),1,0,0)) {
+    SWIG_fail;
+  }
+  if (0<args.length()) {
+    ecode1 = SWIG_AsVal_int(args(0), &val1);
+    if (!SWIG_IsOK(ecode1)) {
+      SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "cvWaitKey" "', argument " "1"" of type '" "int""'");
+    } 
+    arg1 = (int)(val1);
+  }
+  {
+    try {
+      result = (int)cvWaitKey(arg1); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = SWIG_From_int((int)(result));
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cvCreateFileCapture (const octave_value_list& args, int nargout) {
+  char *arg1 = (char *) 0 ;
+  int res1 ;
+  char *buf1 = 0 ;
+  int alloc1 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  CvCapture *result = 0 ;
+  
+  if (!SWIG_check_num_args("cvCreateFileCapture",args.length(),1,1,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_AsCharPtrAndSize(args(0), &buf1, NULL, &alloc1);
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "cvCreateFileCapture" "', argument " "1"" of type '" "char const *""'");
+  }
+  arg1 = (char *)(buf1);
+  {
+    try {
+      result = (CvCapture *)cvCreateFileCapture((char const *)arg1); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_CvCapture, 0 |  0 );
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cvCreateCameraCapture (const octave_value_list& args, int nargout) {
+  int arg1 ;
+  int val1 ;
+  int ecode1 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  CvCapture *result = 0 ;
+  
+  if (!SWIG_check_num_args("cvCreateCameraCapture",args.length(),1,1,0)) {
+    SWIG_fail;
+  }
+  ecode1 = SWIG_AsVal_int(args(0), &val1);
+  if (!SWIG_IsOK(ecode1)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "cvCreateCameraCapture" "', argument " "1"" of type '" "int""'");
+  } 
+  arg1 = (int)(val1);
+  {
+    try {
+      result = (CvCapture *)cvCreateCameraCapture(arg1); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_CvCapture, 0 |  0 );
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cvGrabFrame (const octave_value_list& args, int nargout) {
+  CvCapture *arg1 = (CvCapture *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  int result;
+  
+  if (!SWIG_check_num_args("cvGrabFrame",args.length(),1,1,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvCapture, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "cvGrabFrame" "', argument " "1"" of type '" "CvCapture *""'"); 
+  }
+  arg1 = (CvCapture *)(argp1);
+  {
+    try {
+      result = (int)cvGrabFrame(arg1); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = SWIG_From_int((int)(result));
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cvRetrieveFrame__Deprecated (const octave_value_list& args, int nargout) {
+  CvCapture *arg1 = (CvCapture *) 0 ;
+  int arg2 = (int) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  int val2 ;
+  int ecode2 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  IplImage *result = 0 ;
+  
+  if (!SWIG_check_num_args("cvRetrieveFrame__Deprecated",args.length(),2,1,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvCapture, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "cvRetrieveFrame__Deprecated" "', argument " "1"" of type '" "CvCapture *""'"); 
+  }
+  arg1 = (CvCapture *)(argp1);
+  if (1<args.length()) {
+    ecode2 = SWIG_AsVal_int(args(1), &val2);
+    if (!SWIG_IsOK(ecode2)) {
+      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "cvRetrieveFrame__Deprecated" "', argument " "2"" of type '" "int""'");
+    } 
+    arg2 = (int)(val2);
+  }
+  {
+    try {
+      result = (IplImage *)cvRetrieveFrame(arg1,arg2); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  {
+    SWIG_exception( SWIG_TypeError, "IplImage * return type is deprecated. Please file a bug report at www.sourceforge.net/opencvlibrary if you see this error message.");
+    SWIG_fail;
+  }
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cvQueryFrame__Deprecated (const octave_value_list& args, int nargout) {
+  CvCapture *arg1 = (CvCapture *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  IplImage *result = 0 ;
+  
+  if (!SWIG_check_num_args("cvQueryFrame__Deprecated",args.length(),1,1,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvCapture, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "cvQueryFrame__Deprecated" "', argument " "1"" of type '" "CvCapture *""'"); 
+  }
+  arg1 = (CvCapture *)(argp1);
+  {
+    try {
+      result = (IplImage *)cvQueryFrame(arg1); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  {
+    SWIG_exception( SWIG_TypeError, "IplImage * return type is deprecated. Please file a bug report at www.sourceforge.net/opencvlibrary if you see this error message.");
+    SWIG_fail;
+  }
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cvReleaseCapture (const octave_value_list& args, int nargout) {
+  CvCapture **arg1 = (CvCapture **) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  
+  if (!SWIG_check_num_args("cvReleaseCapture",args.length(),1,1,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_p_CvCapture, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "cvReleaseCapture" "', argument " "1"" of type '" "CvCapture **""'"); 
+  }
+  arg1 = (CvCapture **)(argp1);
+  {
+    try {
+      cvReleaseCapture(arg1); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = octave_value();
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cvGetCaptureProperty (const octave_value_list& args, int nargout) {
+  CvCapture *arg1 = (CvCapture *) 0 ;
+  int arg2 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  int val2 ;
+  int ecode2 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  double result;
+  
+  if (!SWIG_check_num_args("cvGetCaptureProperty",args.length(),2,2,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvCapture, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "cvGetCaptureProperty" "', argument " "1"" of type '" "CvCapture *""'"); 
+  }
+  arg1 = (CvCapture *)(argp1);
+  ecode2 = SWIG_AsVal_int(args(1), &val2);
+  if (!SWIG_IsOK(ecode2)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "cvGetCaptureProperty" "', argument " "2"" of type '" "int""'");
+  } 
+  arg2 = (int)(val2);
+  {
+    try {
+      result = (double)cvGetCaptureProperty(arg1,arg2); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = SWIG_From_double((double)(result));
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cvSetCaptureProperty (const octave_value_list& args, int nargout) {
+  CvCapture *arg1 = (CvCapture *) 0 ;
+  int arg2 ;
+  double arg3 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  int val2 ;
+  int ecode2 = 0 ;
+  double val3 ;
+  int ecode3 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  int result;
+  
+  if (!SWIG_check_num_args("cvSetCaptureProperty",args.length(),3,3,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvCapture, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "cvSetCaptureProperty" "', argument " "1"" of type '" "CvCapture *""'"); 
+  }
+  arg1 = (CvCapture *)(argp1);
+  ecode2 = SWIG_AsVal_int(args(1), &val2);
+  if (!SWIG_IsOK(ecode2)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "cvSetCaptureProperty" "', argument " "2"" of type '" "int""'");
+  } 
+  arg2 = (int)(val2);
+  ecode3 = SWIG_AsVal_double(args(2), &val3);
+  if (!SWIG_IsOK(ecode3)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "cvSetCaptureProperty" "', argument " "3"" of type '" "double""'");
+  } 
+  arg3 = (double)(val3);
+  {
+    try {
+      result = (int)cvSetCaptureProperty(arg1,arg2,arg3); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = SWIG_From_int((int)(result));
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cvGetCaptureDomain (const octave_value_list& args, int nargout) {
+  CvCapture *arg1 = (CvCapture *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  int result;
+  
+  if (!SWIG_check_num_args("cvGetCaptureDomain",args.length(),1,1,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvCapture, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "cvGetCaptureDomain" "', argument " "1"" of type '" "CvCapture *""'"); 
+  }
+  arg1 = (CvCapture *)(argp1);
+  {
+    try {
+      result = (int)cvGetCaptureDomain(arg1); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = SWIG_From_int((int)(result));
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_CV_FOURCC (const octave_value_list& args, int nargout) {
+  char arg1 ;
+  char arg2 ;
+  char arg3 ;
+  char arg4 ;
+  char val1 ;
+  int ecode1 = 0 ;
+  char val2 ;
+  int ecode2 = 0 ;
+  char val3 ;
+  int ecode3 = 0 ;
+  char val4 ;
+  int ecode4 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  int result;
+  
+  if (!SWIG_check_num_args("CV_FOURCC",args.length(),4,4,0)) {
+    SWIG_fail;
+  }
+  ecode1 = SWIG_AsVal_char(args(0), &val1);
+  if (!SWIG_IsOK(ecode1)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "CV_FOURCC" "', argument " "1"" of type '" "char""'");
+  } 
+  arg1 = (char)(val1);
+  ecode2 = SWIG_AsVal_char(args(1), &val2);
+  if (!SWIG_IsOK(ecode2)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "CV_FOURCC" "', argument " "2"" of type '" "char""'");
+  } 
+  arg2 = (char)(val2);
+  ecode3 = SWIG_AsVal_char(args(2), &val3);
+  if (!SWIG_IsOK(ecode3)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "CV_FOURCC" "', argument " "3"" of type '" "char""'");
+  } 
+  arg3 = (char)(val3);
+  ecode4 = SWIG_AsVal_char(args(3), &val4);
+  if (!SWIG_IsOK(ecode4)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "CV_FOURCC" "', argument " "4"" of type '" "char""'");
+  } 
+  arg4 = (char)(val4);
+  {
+    try {
+      result = (int)CV_FOURCC(arg1,arg2,arg3,arg4); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = SWIG_From_int((int)(result));
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cvCreateVideoWriter (const octave_value_list& args, int nargout) {
+  char *arg1 = (char *) 0 ;
+  int arg2 ;
+  double arg3 ;
+  CvSize arg4 ;
+  int arg5 = (int) 1 ;
+  int res1 ;
+  char *buf1 = 0 ;
+  int alloc1 = 0 ;
+  int val2 ;
+  int ecode2 = 0 ;
+  double val3 ;
+  int ecode3 = 0 ;
+  void *argp4 ;
+  int res4 = 0 ;
+  int val5 ;
+  int ecode5 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  CvVideoWriter *result = 0 ;
+  
+  if (!SWIG_check_num_args("cvCreateVideoWriter",args.length(),5,4,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_AsCharPtrAndSize(args(0), &buf1, NULL, &alloc1);
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "cvCreateVideoWriter" "', argument " "1"" of type '" "char const *""'");
+  }
+  arg1 = (char *)(buf1);
+  ecode2 = SWIG_AsVal_int(args(1), &val2);
+  if (!SWIG_IsOK(ecode2)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "cvCreateVideoWriter" "', argument " "2"" of type '" "int""'");
+  } 
+  arg2 = (int)(val2);
+  ecode3 = SWIG_AsVal_double(args(2), &val3);
+  if (!SWIG_IsOK(ecode3)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "cvCreateVideoWriter" "', argument " "3"" of type '" "double""'");
+  } 
+  arg3 = (double)(val3);
+  {
+    res4 = SWIG_ConvertPtr(args(3), &argp4, SWIGTYPE_p_CvSize,  0 );
+    if (!SWIG_IsOK(res4)) {
+      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "cvCreateVideoWriter" "', argument " "4"" of type '" "CvSize""'"); 
+    }  
+    if (!argp4) {
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "cvCreateVideoWriter" "', argument " "4"" of type '" "CvSize""'");
+    } else {
+      arg4 = *((CvSize *)(argp4));
+    }
+  }
+  if (4<args.length()) {
+    ecode5 = SWIG_AsVal_int(args(4), &val5);
+    if (!SWIG_IsOK(ecode5)) {
+      SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "cvCreateVideoWriter" "', argument " "5"" of type '" "int""'");
+    } 
+    arg5 = (int)(val5);
+  }
+  {
+    try {
+      result = (CvVideoWriter *)cvCreateVideoWriter((char const *)arg1,arg2,arg3,arg4,arg5); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_CvVideoWriter, 1 |  0 );
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cvWriteFrame (const octave_value_list& args, int nargout) {
+  CvVideoWriter *arg1 = (CvVideoWriter *) 0 ;
+  IplImage *arg2 = (IplImage *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  IplImage header2 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  int result;
+  
+  if (!SWIG_check_num_args("cvWriteFrame",args.length(),2,2,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvVideoWriter, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "cvWriteFrame" "', argument " "1"" of type '" "CvVideoWriter *""'"); 
+  }
+  arg1 = (CvVideoWriter *)(argp1);
+  {
+    void * vptr;
+    int res = SWIG_ConvertPtr(args(1), (&vptr), SWIGTYPE_p_CvMat, 0);
+    if ( res == -1 ){
+      SWIG_exception( SWIG_TypeError, "%%typemap(in) IplImage * : could not convert to CvMat");
+      SWIG_fail;
+    }
+    arg2 = cvGetImage((CvMat *)vptr, &header2);
+  }
+  {
+    try {
+      result = (int)cvWriteFrame(arg1,(_IplImage const *)arg2); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = SWIG_From_int((int)(result));
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cvReleaseVideoWriter (const octave_value_list& args, int nargout) {
+  CvVideoWriter **arg1 = (CvVideoWriter **) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  
+  if (!SWIG_check_num_args("cvReleaseVideoWriter",args.length(),1,1,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_p_CvVideoWriter, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "cvReleaseVideoWriter" "', argument " "1"" of type '" "CvVideoWriter **""'"); 
+  }
+  arg1 = (CvVideoWriter **)(argp1);
+  {
+    try {
+      cvReleaseVideoWriter(arg1); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = octave_value();
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_new_CvvImage (const octave_value_list& args, int nargout) {
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  CvvImage *result = 0 ;
+  
+  if (!SWIG_check_num_args("new_CvvImage",args.length(),0,0,0)) {
+    SWIG_fail;
+  }
+  {
+    try {
+      result = (CvvImage *)new CvvImage(); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_CvvImage, 1 |  0 );
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_delete_CvvImage (const octave_value_list& args, int nargout) {
+  CvvImage *arg1 = (CvvImage *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  
+  if (!SWIG_check_num_args("delete_CvvImage",args.length(),1,1,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvvImage, SWIG_POINTER_DISOWN |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_CvvImage" "', argument " "1"" of type '" "CvvImage *""'"); 
+  }
+  arg1 = (CvvImage *)(argp1);
+  {
+    try {
+      delete arg1; 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = octave_value();
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_CvvImage_Create__SWIG_0 (const octave_value_list& args, int nargout) {
+  CvvImage *arg1 = (CvvImage *) 0 ;
+  int arg2 ;
+  int arg3 ;
+  int arg4 ;
+  int arg5 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  int val2 ;
+  int ecode2 = 0 ;
+  int val3 ;
+  int ecode3 = 0 ;
+  int val4 ;
+  int ecode4 = 0 ;
+  int val5 ;
+  int ecode5 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  bool result;
+  
+  if (!SWIG_check_num_args("CvvImage_Create",args.length(),5,5,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvvImage, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "CvvImage_Create" "', argument " "1"" of type '" "CvvImage *""'"); 
+  }
+  arg1 = (CvvImage *)(argp1);
+  ecode2 = SWIG_AsVal_int(args(1), &val2);
+  if (!SWIG_IsOK(ecode2)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "CvvImage_Create" "', argument " "2"" of type '" "int""'");
+  } 
+  arg2 = (int)(val2);
+  ecode3 = SWIG_AsVal_int(args(2), &val3);
+  if (!SWIG_IsOK(ecode3)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "CvvImage_Create" "', argument " "3"" of type '" "int""'");
+  } 
+  arg3 = (int)(val3);
+  ecode4 = SWIG_AsVal_int(args(3), &val4);
+  if (!SWIG_IsOK(ecode4)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "CvvImage_Create" "', argument " "4"" of type '" "int""'");
+  } 
+  arg4 = (int)(val4);
+  ecode5 = SWIG_AsVal_int(args(4), &val5);
+  if (!SWIG_IsOK(ecode5)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "CvvImage_Create" "', argument " "5"" of type '" "int""'");
+  } 
+  arg5 = (int)(val5);
+  {
+    try {
+      result = (bool)(arg1)->Create(arg2,arg3,arg4,arg5); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = SWIG_From_bool((bool)(result));
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_CvvImage_Create__SWIG_1 (const octave_value_list& args, int nargout) {
+  CvvImage *arg1 = (CvvImage *) 0 ;
+  int arg2 ;
+  int arg3 ;
+  int arg4 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  int val2 ;
+  int ecode2 = 0 ;
+  int val3 ;
+  int ecode3 = 0 ;
+  int val4 ;
+  int ecode4 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  bool result;
+  
+  if (!SWIG_check_num_args("CvvImage_Create",args.length(),4,4,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvvImage, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "CvvImage_Create" "', argument " "1"" of type '" "CvvImage *""'"); 
+  }
+  arg1 = (CvvImage *)(argp1);
+  ecode2 = SWIG_AsVal_int(args(1), &val2);
+  if (!SWIG_IsOK(ecode2)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "CvvImage_Create" "', argument " "2"" of type '" "int""'");
+  } 
+  arg2 = (int)(val2);
+  ecode3 = SWIG_AsVal_int(args(2), &val3);
+  if (!SWIG_IsOK(ecode3)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "CvvImage_Create" "', argument " "3"" of type '" "int""'");
+  } 
+  arg3 = (int)(val3);
+  ecode4 = SWIG_AsVal_int(args(3), &val4);
+  if (!SWIG_IsOK(ecode4)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "CvvImage_Create" "', argument " "4"" of type '" "int""'");
+  } 
+  arg4 = (int)(val4);
+  {
+    try {
+      result = (bool)(arg1)->Create(arg2,arg3,arg4); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = SWIG_From_bool((bool)(result));
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_CvvImage_Create (const octave_value_list& args, int nargout) {
+  int argc = args.length();
+  octave_value_ref argv[5]={
+    octave_value_ref(args,0),octave_value_ref(args,1),octave_value_ref(args,2),octave_value_ref(args,3),octave_value_ref(args,4)
+  };
+  
+  if (argc == 4) {
+    int _v;
+    void *vptr = 0;
+    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_CvvImage, 0);
+    _v = SWIG_CheckState(res);
+    if (_v) {
+      {
+        int res = SWIG_AsVal_int(argv[1], NULL);
+        _v = SWIG_CheckState(res);
+      }
+      if (_v) {
+        {
+          int res = SWIG_AsVal_int(argv[2], NULL);
+          _v = SWIG_CheckState(res);
+        }
+        if (_v) {
+          {
+            int res = SWIG_AsVal_int(argv[3], NULL);
+            _v = SWIG_CheckState(res);
+          }
+          if (_v) {
+            return _wrap_CvvImage_Create__SWIG_1(args, nargout);
+          }
+        }
+      }
+    }
+  }
+  if (argc == 5) {
+    int _v;
+    void *vptr = 0;
+    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_CvvImage, 0);
+    _v = SWIG_CheckState(res);
+    if (_v) {
+      {
+        int res = SWIG_AsVal_int(argv[1], NULL);
+        _v = SWIG_CheckState(res);
+      }
+      if (_v) {
+        {
+          int res = SWIG_AsVal_int(argv[2], NULL);
+          _v = SWIG_CheckState(res);
+        }
+        if (_v) {
+          {
+            int res = SWIG_AsVal_int(argv[3], NULL);
+            _v = SWIG_CheckState(res);
+          }
+          if (_v) {
+            {
+              int res = SWIG_AsVal_int(argv[4], NULL);
+              _v = SWIG_CheckState(res);
+            }
+            if (_v) {
+              return _wrap_CvvImage_Create__SWIG_0(args, nargout);
+            }
+          }
+        }
+      }
+    }
+  }
+  
+  error("No matching function for overload");
+  return octave_value_list();
+}
+
+
+static octave_value_list _wrap_CvvImage_Load__SWIG_0 (const octave_value_list& args, int nargout) {
+  CvvImage *arg1 = (CvvImage *) 0 ;
+  char *arg2 = (char *) 0 ;
+  int arg3 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  int res2 ;
+  char *buf2 = 0 ;
+  int alloc2 = 0 ;
+  int val3 ;
+  int ecode3 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  bool result;
+  
+  if (!SWIG_check_num_args("CvvImage_Load",args.length(),3,3,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvvImage, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "CvvImage_Load" "', argument " "1"" of type '" "CvvImage *""'"); 
+  }
+  arg1 = (CvvImage *)(argp1);
+  res2 = SWIG_AsCharPtrAndSize(args(1), &buf2, NULL, &alloc2);
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "CvvImage_Load" "', argument " "2"" of type '" "char const *""'");
+  }
+  arg2 = (char *)(buf2);
+  ecode3 = SWIG_AsVal_int(args(2), &val3);
+  if (!SWIG_IsOK(ecode3)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "CvvImage_Load" "', argument " "3"" of type '" "int""'");
+  } 
+  arg3 = (int)(val3);
+  {
+    try {
+      result = (bool)(arg1)->Load((char const *)arg2,arg3); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = SWIG_From_bool((bool)(result));
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+  if (alloc2 == SWIG_NEWOBJ) delete[] buf2;
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_CvvImage_Load__SWIG_1 (const octave_value_list& args, int nargout) {
+  CvvImage *arg1 = (CvvImage *) 0 ;
+  char *arg2 = (char *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  int res2 ;
+  char *buf2 = 0 ;
+  int alloc2 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  bool result;
+  
+  if (!SWIG_check_num_args("CvvImage_Load",args.length(),2,2,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvvImage, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "CvvImage_Load" "', argument " "1"" of type '" "CvvImage *""'"); 
+  }
+  arg1 = (CvvImage *)(argp1);
+  res2 = SWIG_AsCharPtrAndSize(args(1), &buf2, NULL, &alloc2);
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "CvvImage_Load" "', argument " "2"" of type '" "char const *""'");
+  }
+  arg2 = (char *)(buf2);
+  {
+    try {
+      result = (bool)(arg1)->Load((char const *)arg2); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = SWIG_From_bool((bool)(result));
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+  if (alloc2 == SWIG_NEWOBJ) delete[] buf2;
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_CvvImage_Load (const octave_value_list& args, int nargout) {
+  int argc = args.length();
+  octave_value_ref argv[3]={
+    octave_value_ref(args,0),octave_value_ref(args,1),octave_value_ref(args,2)
+  };
+  
+  if (argc == 2) {
+    int _v;
+    void *vptr = 0;
+    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_CvvImage, 0);
+    _v = SWIG_CheckState(res);
+    if (_v) {
+      int res = SWIG_AsCharPtrAndSize(argv[1], 0, NULL, 0);
+      _v = SWIG_CheckState(res);
+      if (_v) {
+        return _wrap_CvvImage_Load__SWIG_1(args, nargout);
+      }
+    }
+  }
+  if (argc == 3) {
+    int _v;
+    void *vptr = 0;
+    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_CvvImage, 0);
+    _v = SWIG_CheckState(res);
+    if (_v) {
+      int res = SWIG_AsCharPtrAndSize(argv[1], 0, NULL, 0);
+      _v = SWIG_CheckState(res);
+      if (_v) {
+        {
+          int res = SWIG_AsVal_int(argv[2], NULL);
+          _v = SWIG_CheckState(res);
+        }
+        if (_v) {
+          return _wrap_CvvImage_Load__SWIG_0(args, nargout);
+        }
+      }
+    }
+  }
+  
+  error("No matching function for overload");
+  return octave_value_list();
+}
+
+
+static octave_value_list _wrap_CvvImage_LoadRect (const octave_value_list& args, int nargout) {
+  CvvImage *arg1 = (CvvImage *) 0 ;
+  char *arg2 = (char *) 0 ;
+  int arg3 ;
+  CvRect arg4 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  int res2 ;
+  char *buf2 = 0 ;
+  int alloc2 = 0 ;
+  int val3 ;
+  int ecode3 = 0 ;
+  void *argp4 ;
+  int res4 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  bool result;
+  
+  if (!SWIG_check_num_args("CvvImage_LoadRect",args.length(),4,4,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvvImage, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "CvvImage_LoadRect" "', argument " "1"" of type '" "CvvImage *""'"); 
+  }
+  arg1 = (CvvImage *)(argp1);
+  res2 = SWIG_AsCharPtrAndSize(args(1), &buf2, NULL, &alloc2);
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "CvvImage_LoadRect" "', argument " "2"" of type '" "char const *""'");
+  }
+  arg2 = (char *)(buf2);
+  ecode3 = SWIG_AsVal_int(args(2), &val3);
+  if (!SWIG_IsOK(ecode3)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "CvvImage_LoadRect" "', argument " "3"" of type '" "int""'");
+  } 
+  arg3 = (int)(val3);
+  {
+    res4 = SWIG_ConvertPtr(args(3), &argp4, SWIGTYPE_p_CvRect,  0 );
+    if (!SWIG_IsOK(res4)) {
+      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "CvvImage_LoadRect" "', argument " "4"" of type '" "CvRect""'"); 
+    }  
+    if (!argp4) {
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "CvvImage_LoadRect" "', argument " "4"" of type '" "CvRect""'");
+    } else {
+      arg4 = *((CvRect *)(argp4));
+    }
+  }
+  {
+    try {
+      result = (bool)(arg1)->LoadRect((char const *)arg2,arg3,arg4); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = SWIG_From_bool((bool)(result));
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+  if (alloc2 == SWIG_NEWOBJ) delete[] buf2;
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_CvvImage_Save (const octave_value_list& args, int nargout) {
+  CvvImage *arg1 = (CvvImage *) 0 ;
+  char *arg2 = (char *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  int res2 ;
+  char *buf2 = 0 ;
+  int alloc2 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  bool result;
+  
+  if (!SWIG_check_num_args("CvvImage_Save",args.length(),2,2,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvvImage, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "CvvImage_Save" "', argument " "1"" of type '" "CvvImage *""'"); 
+  }
+  arg1 = (CvvImage *)(argp1);
+  res2 = SWIG_AsCharPtrAndSize(args(1), &buf2, NULL, &alloc2);
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "CvvImage_Save" "', argument " "2"" of type '" "char const *""'");
+  }
+  arg2 = (char *)(buf2);
+  {
+    try {
+      result = (bool)(arg1)->Save((char const *)arg2); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = SWIG_From_bool((bool)(result));
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+  if (alloc2 == SWIG_NEWOBJ) delete[] buf2;
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_CvvImage_CopyOf__SWIG_0 (const octave_value_list& args, int nargout) {
+  CvvImage *arg1 = (CvvImage *) 0 ;
+  CvvImage *arg2 = 0 ;
+  int arg3 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  void *argp2 = 0 ;
+  int res2 = 0 ;
+  int val3 ;
+  int ecode3 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  
+  if (!SWIG_check_num_args("CvvImage_CopyOf",args.length(),3,3,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvvImage, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "CvvImage_CopyOf" "', argument " "1"" of type '" "CvvImage *""'"); 
+  }
+  arg1 = (CvvImage *)(argp1);
+  res2 = SWIG_ConvertPtr(args(1), &argp2, SWIGTYPE_p_CvvImage,  0 );
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "CvvImage_CopyOf" "', argument " "2"" of type '" "CvvImage &""'"); 
+  }
+  if (!argp2) {
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "CvvImage_CopyOf" "', argument " "2"" of type '" "CvvImage &""'"); 
+  }
+  arg2 = (CvvImage *)(argp2);
+  ecode3 = SWIG_AsVal_int(args(2), &val3);
+  if (!SWIG_IsOK(ecode3)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "CvvImage_CopyOf" "', argument " "3"" of type '" "int""'");
+  } 
+  arg3 = (int)(val3);
+  {
+    try {
+      (arg1)->CopyOf(*arg2,arg3); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = octave_value();
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_CvvImage_CopyOf__SWIG_1 (const octave_value_list& args, int nargout) {
+  CvvImage *arg1 = (CvvImage *) 0 ;
+  CvvImage *arg2 = 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  void *argp2 = 0 ;
+  int res2 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  
+  if (!SWIG_check_num_args("CvvImage_CopyOf",args.length(),2,2,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvvImage, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "CvvImage_CopyOf" "', argument " "1"" of type '" "CvvImage *""'"); 
+  }
+  arg1 = (CvvImage *)(argp1);
+  res2 = SWIG_ConvertPtr(args(1), &argp2, SWIGTYPE_p_CvvImage,  0 );
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "CvvImage_CopyOf" "', argument " "2"" of type '" "CvvImage &""'"); 
+  }
+  if (!argp2) {
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "CvvImage_CopyOf" "', argument " "2"" of type '" "CvvImage &""'"); 
+  }
+  arg2 = (CvvImage *)(argp2);
+  {
+    try {
+      (arg1)->CopyOf(*arg2); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = octave_value();
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_CvvImage_CopyOf__SWIG_2 (const octave_value_list& args, int nargout) {
+  CvvImage *arg1 = (CvvImage *) 0 ;
+  IplImage *arg2 = (IplImage *) 0 ;
+  int arg3 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  IplImage header2 ;
+  int val3 ;
+  int ecode3 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  
+  if (!SWIG_check_num_args("CvvImage_CopyOf",args.length(),3,3,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvvImage, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "CvvImage_CopyOf" "', argument " "1"" of type '" "CvvImage *""'"); 
+  }
+  arg1 = (CvvImage *)(argp1);
+  {
+    void * vptr;
+    int res = SWIG_ConvertPtr(args(1), (&vptr), SWIGTYPE_p_CvMat, 0);
+    if ( res == -1 ){
+      SWIG_exception( SWIG_TypeError, "%%typemap(in) IplImage * : could not convert to CvMat");
+      SWIG_fail;
+    }
+    arg2 = cvGetImage((CvMat *)vptr, &header2);
+  }
+  ecode3 = SWIG_AsVal_int(args(2), &val3);
+  if (!SWIG_IsOK(ecode3)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "CvvImage_CopyOf" "', argument " "3"" of type '" "int""'");
+  } 
+  arg3 = (int)(val3);
+  {
+    try {
+      (arg1)->CopyOf(arg2,arg3); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = octave_value();
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_CvvImage_CopyOf__SWIG_3 (const octave_value_list& args, int nargout) {
+  CvvImage *arg1 = (CvvImage *) 0 ;
+  IplImage *arg2 = (IplImage *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  IplImage header2 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  
+  if (!SWIG_check_num_args("CvvImage_CopyOf",args.length(),2,2,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvvImage, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "CvvImage_CopyOf" "', argument " "1"" of type '" "CvvImage *""'"); 
+  }
+  arg1 = (CvvImage *)(argp1);
+  {
+    void * vptr;
+    int res = SWIG_ConvertPtr(args(1), (&vptr), SWIGTYPE_p_CvMat, 0);
+    if ( res == -1 ){
+      SWIG_exception( SWIG_TypeError, "%%typemap(in) IplImage * : could not convert to CvMat");
+      SWIG_fail;
+    }
+    arg2 = cvGetImage((CvMat *)vptr, &header2);
+  }
+  {
+    try {
+      (arg1)->CopyOf(arg2); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = octave_value();
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_CvvImage_CopyOf (const octave_value_list& args, int nargout) {
+  int argc = args.length();
+  octave_value_ref argv[3]={
+    octave_value_ref(args,0),octave_value_ref(args,1),octave_value_ref(args,2)
+  };
+  
+  if (argc == 2) {
+    int _v;
+    void *vptr = 0;
+    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_CvvImage, 0);
+    _v = SWIG_CheckState(res);
+    if (_v) {
+      void *vptr = 0;
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_CvvImage, 0);
+      _v = SWIG_CheckState(res);
+      if (_v) {
+        return _wrap_CvvImage_CopyOf__SWIG_1(args, nargout);
+      }
+    }
+  }
+  if (argc == 2) {
+    int _v;
+    void *vptr = 0;
+    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_CvvImage, 0);
+    _v = SWIG_CheckState(res);
+    if (_v) {
+      void *vptr = 0;
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p__IplImage, 0);
+      _v = SWIG_CheckState(res);
+      if (_v) {
+        return _wrap_CvvImage_CopyOf__SWIG_3(args, nargout);
+      }
+    }
+  }
+  if (argc == 3) {
+    int _v;
+    void *vptr = 0;
+    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_CvvImage, 0);
+    _v = SWIG_CheckState(res);
+    if (_v) {
+      void *vptr = 0;
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p__IplImage, 0);
+      _v = SWIG_CheckState(res);
+      if (_v) {
+        {
+          int res = SWIG_AsVal_int(argv[2], NULL);
+          _v = SWIG_CheckState(res);
+        }
+        if (_v) {
+          return _wrap_CvvImage_CopyOf__SWIG_2(args, nargout);
+        }
+      }
+    }
+  }
+  if (argc == 3) {
+    int _v;
+    void *vptr = 0;
+    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_CvvImage, 0);
+    _v = SWIG_CheckState(res);
+    if (_v) {
+      void *vptr = 0;
+      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_CvvImage, 0);
+      _v = SWIG_CheckState(res);
+      if (_v) {
+        {
+          int res = SWIG_AsVal_int(argv[2], NULL);
+          _v = SWIG_CheckState(res);
+        }
+        if (_v) {
+          return _wrap_CvvImage_CopyOf__SWIG_0(args, nargout);
+        }
+      }
+    }
+  }
+  
+  error("No matching function for overload");
+  return octave_value_list();
+}
+
+
+static octave_value_list _wrap_CvvImage_GetImage (const octave_value_list& args, int nargout) {
+  CvvImage *arg1 = (CvvImage *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  IplImage *result = 0 ;
+  
+  if (!SWIG_check_num_args("CvvImage_GetImage",args.length(),1,1,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvvImage, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "CvvImage_GetImage" "', argument " "1"" of type '" "CvvImage *""'"); 
+  }
+  arg1 = (CvvImage *)(argp1);
+  {
+    try {
+      result = (IplImage *)(arg1)->GetImage(); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  {
+    SWIG_exception( SWIG_TypeError, "IplImage * return type is deprecated. Please file a bug report at www.sourceforge.net/opencvlibrary if you see this error message.");
+    SWIG_fail;
+  }
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_CvvImage_Destroy (const octave_value_list& args, int nargout) {
+  CvvImage *arg1 = (CvvImage *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  
+  if (!SWIG_check_num_args("CvvImage_Destroy",args.length(),1,1,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvvImage, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "CvvImage_Destroy" "', argument " "1"" of type '" "CvvImage *""'"); 
+  }
+  arg1 = (CvvImage *)(argp1);
+  {
+    try {
+      (arg1)->Destroy(); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = octave_value();
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_CvvImage_Width (const octave_value_list& args, int nargout) {
+  CvvImage *arg1 = (CvvImage *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  int result;
+  
+  if (!SWIG_check_num_args("CvvImage_Width",args.length(),1,1,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvvImage, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "CvvImage_Width" "', argument " "1"" of type '" "CvvImage *""'"); 
+  }
+  arg1 = (CvvImage *)(argp1);
+  {
+    try {
+      result = (int)(arg1)->Width(); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = SWIG_From_int((int)(result));
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_CvvImage_Height (const octave_value_list& args, int nargout) {
+  CvvImage *arg1 = (CvvImage *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  int result;
+  
+  if (!SWIG_check_num_args("CvvImage_Height",args.length(),1,1,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvvImage, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "CvvImage_Height" "', argument " "1"" of type '" "CvvImage *""'"); 
+  }
+  arg1 = (CvvImage *)(argp1);
+  {
+    try {
+      result = (int)(arg1)->Height(); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = SWIG_From_int((int)(result));
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_CvvImage_Bpp (const octave_value_list& args, int nargout) {
+  CvvImage *arg1 = (CvvImage *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  int result;
+  
+  if (!SWIG_check_num_args("CvvImage_Bpp",args.length(),1,1,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvvImage, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "CvvImage_Bpp" "', argument " "1"" of type '" "CvvImage *""'"); 
+  }
+  arg1 = (CvvImage *)(argp1);
+  {
+    try {
+      result = (int)(arg1)->Bpp(); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = SWIG_From_int((int)(result));
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_CvvImage_Fill (const octave_value_list& args, int nargout) {
+  CvvImage *arg1 = (CvvImage *) 0 ;
+  int arg2 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  int val2 ;
+  int ecode2 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  
+  if (!SWIG_check_num_args("CvvImage_Fill",args.length(),2,2,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvvImage, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "CvvImage_Fill" "', argument " "1"" of type '" "CvvImage *""'"); 
+  }
+  arg1 = (CvvImage *)(argp1);
+  ecode2 = SWIG_AsVal_int(args(1), &val2);
+  if (!SWIG_IsOK(ecode2)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "CvvImage_Fill" "', argument " "2"" of type '" "int""'");
+  } 
+  arg2 = (int)(val2);
+  {
+    try {
+      (arg1)->Fill(arg2); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = octave_value();
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_CvvImage_Show (const octave_value_list& args, int nargout) {
+  CvvImage *arg1 = (CvvImage *) 0 ;
+  char *arg2 = (char *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  int res2 ;
+  char *buf2 = 0 ;
+  int alloc2 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  
+  if (!SWIG_check_num_args("CvvImage_Show",args.length(),2,2,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvvImage, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "CvvImage_Show" "', argument " "1"" of type '" "CvvImage *""'"); 
+  }
+  arg1 = (CvvImage *)(argp1);
+  res2 = SWIG_AsCharPtrAndSize(args(1), &buf2, NULL, &alloc2);
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "CvvImage_Show" "', argument " "2"" of type '" "char const *""'");
+  }
+  arg2 = (char *)(buf2);
+  {
+    try {
+      (arg1)->Show((char const *)arg2); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = octave_value();
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+  if (alloc2 == SWIG_NEWOBJ) delete[] buf2;
+fail:
+  return _out;
+}
+
+
+static swig_octave_member swig_CvvImage_members[] = {
+{"Create",_wrap_CvvImage_Create,0,0,0,0},
+{"Load",_wrap_CvvImage_Load,0,0,0,0},
+{"LoadRect",_wrap_CvvImage_LoadRect,0,0,0,0},
+{"Save",_wrap_CvvImage_Save,0,0,0,0},
+{"CopyOf",_wrap_CvvImage_CopyOf,0,0,0,0},
+{"GetImage",_wrap_CvvImage_GetImage,0,0,0,0},
+{"Destroy",_wrap_CvvImage_Destroy,0,0,0,0},
+{"Width",_wrap_CvvImage_Width,0,0,0,0},
+{"Height",_wrap_CvvImage_Height,0,0,0,0},
+{"Bpp",_wrap_CvvImage_Bpp,0,0,0,0},
+{"Fill",_wrap_CvvImage_Fill,0,0,0,0},
+{"Show",_wrap_CvvImage_Show,0,0,0,0},
+{0,0,0,0}
+};
+static const char *swig_CvvImage_base_names[] = {0};
+static const swig_type_info *swig_CvvImage_base[] = {0};
+static swig_octave_class _wrap_class_CvvImage = {"CvvImage", &SWIGTYPE_p_CvvImage,0,_wrap_new_CvvImage,0,_wrap_delete_CvvImage,swig_CvvImage_members,swig_CvvImage_base_names,swig_CvvImage_base };
+
+static octave_value_list _wrap_delete_CvCapture (const octave_value_list& args, int nargout) {
+  CvCapture *arg1 = (CvCapture *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  
+  if (!SWIG_check_num_args("delete_CvCapture",args.length(),1,1,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvCapture, SWIG_POINTER_DISOWN |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_CvCapture" "', argument " "1"" of type '" "CvCapture *""'"); 
+  }
+  arg1 = (CvCapture *)(argp1);
+  {
+    try {
+      delete_CvCapture(arg1); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = octave_value();
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static swig_octave_member swig_CvCapture_members[] = {
+{0,0,0,0}
+};
+static const char *swig_CvCapture_base_names[] = {0};
+static const swig_type_info *swig_CvCapture_base[] = {0};
+static swig_octave_class _wrap_class_CvCapture = {"CvCapture", &SWIGTYPE_p_CvCapture,0,0,0,_wrap_delete_CvCapture,swig_CvCapture_members,swig_CvCapture_base_names,swig_CvCapture_base };
+
+static octave_value_list _wrap_delete_CvVideoWriter (const octave_value_list& args, int nargout) {
+  CvVideoWriter *arg1 = (CvVideoWriter *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  
+  if (!SWIG_check_num_args("delete_CvVideoWriter",args.length(),1,1,0)) {
+    SWIG_fail;
+  }
+  res1 = SWIG_ConvertPtr(args(0), &argp1,SWIGTYPE_p_CvVideoWriter, SWIG_POINTER_DISOWN |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_CvVideoWriter" "', argument " "1"" of type '" "CvVideoWriter *""'"); 
+  }
+  arg1 = (CvVideoWriter *)(argp1);
+  {
+    try {
+      delete_CvVideoWriter(arg1); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = octave_value();
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static swig_octave_member swig_CvVideoWriter_members[] = {
+{0,0,0,0}
+};
+static const char *swig_CvVideoWriter_base_names[] = {0};
+static const swig_type_info *swig_CvVideoWriter_base[] = {0};
+static swig_octave_class _wrap_class_CvVideoWriter = {"CvVideoWriter", &SWIGTYPE_p_CvVideoWriter,0,0,0,_wrap_delete_CvVideoWriter,swig_CvVideoWriter_members,swig_CvVideoWriter_base_names,swig_CvVideoWriter_base };
+
+static octave_value_list _wrap_cv2mat (const octave_value_list& args, int nargout) {
+  CvArr *arg1 = (CvArr *) 0 ;
+  bool freearg1 = false ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  octave_value result;
+  
+  if (!SWIG_check_num_args("cv2mat",args.length(),1,1,0)) {
+    SWIG_fail;
+  }
+  {
+    arg1 = OctObject_to_CvArr(args(0), &freearg1);
+  }
+  {
+    try {
+      result = cv2mat(arg1); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = result;
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+  {
+    if(arg1!=NULL && freearg1){
+      cvReleaseData( arg1 );
+      cvFree(&(arg1));
+    }
+  }
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_mat2cv (const octave_value_list& args, int nargout) {
+  octave_value *arg1 = 0 ;
+  int arg2 ;
+  octave_value temp1 ;
+  int val2 ;
+  int ecode2 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  octave_value result;
+  
+  if (!SWIG_check_num_args("mat2cv",args.length(),2,2,0)) {
+    SWIG_fail;
+  }
+  temp1 = (octave_value)(args(0));
+  arg1 = &temp1;
+  ecode2 = SWIG_AsVal_int(args(1), &val2);
+  if (!SWIG_IsOK(ecode2)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "mat2cv" "', argument " "2"" of type '" "int""'");
+  } 
+  arg2 = (int)(val2);
+  {
+    try {
+      result = mat2cv((octave_value const &)*arg1,arg2); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = result;
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_cv2im (const octave_value_list& args, int nargout) {
+  CvArr *arg1 = (CvArr *) 0 ;
+  bool freearg1 = false ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  octave_value result;
+  
+  if (!SWIG_check_num_args("cv2im",args.length(),1,1,0)) {
+    SWIG_fail;
+  }
+  {
+    arg1 = OctObject_to_CvArr(args(0), &freearg1);
+  }
+  {
+    try {
+      result = cv2im(arg1); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = result;
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+  {
+    if(arg1!=NULL && freearg1){
+      cvReleaseData( arg1 );
+      cvFree(&(arg1));
+    }
+  }
+fail:
+  return _out;
+}
+
+
+static octave_value_list _wrap_im2cv (const octave_value_list& args, int nargout) {
+  octave_value *arg1 = 0 ;
+  int arg2 ;
+  octave_value temp1 ;
+  int val2 ;
+  int ecode2 = 0 ;
+  octave_value_list _out;
+  octave_value_list *_outp=&_out;
+  octave_value _outv;
+  CvMat *result = 0 ;
+  
+  if (!SWIG_check_num_args("im2cv",args.length(),2,2,0)) {
+    SWIG_fail;
+  }
+  temp1 = (octave_value)(args(0));
+  arg1 = &temp1;
+  ecode2 = SWIG_AsVal_int(args(1), &val2);
+  if (!SWIG_IsOK(ecode2)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "im2cv" "', argument " "2"" of type '" "int""'");
+  } 
+  arg2 = (int)(val2);
+  {
+    try {
+      result = (CvMat *)im2cv((octave_value const &)*arg1,arg2); 
+    } 
+    catch (...) 
+    {
+      SWIG_fail;
+    } 
+  }
+  _outv = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_CvMat, 1 |  0 );
+  if (_outv.is_defined()) _outp = SWIG_Octave_AppendOutput(_outp, _outv);
+fail:
+  return _out;
+}
+
+
+
+static const struct swig_octave_member swig_globals[] = {
+{"new_CvRNG_Wrapper",_wrap_new_CvRNG_Wrapper,0,0,2,0},
+{"CvRNG_Wrapper_ptr",_wrap_CvRNG_Wrapper_ptr,0,0,2,0},
+{"CvRNG_Wrapper_ref",_wrap_CvRNG_Wrapper_ref,0,0,2,0},
+{"CvRNG_Wrapper___eq__",_wrap_CvRNG_Wrapper___eq__,0,0,2,0},
+{"CvRNG_Wrapper___ne__",_wrap_CvRNG_Wrapper___ne__,0,0,2,0},
+{"delete_CvRNG_Wrapper",_wrap_delete_CvRNG_Wrapper,0,0,2,_wrap_delete_CvRNG_Wrapper_texinfo},
+{"new_CvSubdiv2DEdge_Wrapper",_wrap_new_CvSubdiv2DEdge_Wrapper,0,0,2,0},
+{"CvSubdiv2DEdge_Wrapper_ptr",_wrap_CvSubdiv2DEdge_Wrapper_ptr,0,0,2,0},
+{"CvSubdiv2DEdge_Wrapper_ref",_wrap_CvSubdiv2DEdge_Wrapper_ref,0,0,2,0},
+{"CvSubdiv2DEdge_Wrapper___eq__",_wrap_CvSubdiv2DEdge_Wrapper___eq__,0,0,2,0},
+{"CvSubdiv2DEdge_Wrapper___ne__",_wrap_CvSubdiv2DEdge_Wrapper___ne__,0,0,2,0},
+{"delete_CvSubdiv2DEdge_Wrapper",_wrap_delete_CvSubdiv2DEdge_Wrapper,0,0,2,_wrap_delete_CvSubdiv2DEdge_Wrapper_texinfo},
+{"cvSetMouseCallback",_wrap_cvSetMouseCallback,0,0,2,0},
+{"cvLoadImage",_wrap_cvLoadImage,0,0,2,_wrap_cvLoadImage_texinfo},
+{"cvRetrieveFrame",_wrap_cvRetrieveFrame,0,0,2,_wrap_cvRetrieveFrame_texinfo},
+{"cvQueryFrame",_wrap_cvQueryFrame,0,0,2,_wrap_cvQueryFrame_texinfo},
+{"cvInitSystem",_wrap_cvInitSystem,0,0,2,_wrap_cvInitSystem_texinfo},
+{"cvStartWindowThread",_wrap_cvStartWindowThread,0,0,2,_wrap_cvStartWindowThread_texinfo},
+{"cvNamedWindow",_wrap_cvNamedWindow,0,0,2,_wrap_cvNamedWindow_texinfo},
+{"cvShowImage",_wrap_cvShowImage,0,0,2,_wrap_cvShowImage_texinfo},
+{"cvResizeWindow",_wrap_cvResizeWindow,0,0,2,_wrap_cvResizeWindow_texinfo},
+{"cvMoveWindow",_wrap_cvMoveWindow,0,0,2,_wrap_cvMoveWindow_texinfo},
+{"cvDestroyWindow",_wrap_cvDestroyWindow,0,0,2,_wrap_cvDestroyWindow_texinfo},
+{"cvDestroyAllWindows",_wrap_cvDestroyAllWindows,0,0,2,_wrap_cvDestroyAllWindows_texinfo},
+{"cvGetWindowHandle",_wrap_cvGetWindowHandle,0,0,2,_wrap_cvGetWindowHandle_texinfo},
+{"cvGetWindowName",_wrap_cvGetWindowName,0,0,2,_wrap_cvGetWindowName_texinfo},
+{"cvCreateTrackbar",_wrap_cvCreateTrackbar,0,0,2,_wrap_cvCreateTrackbar_texinfo},
+{"cvCreateTrackbar2",_wrap_cvCreateTrackbar2,0,0,2,_wrap_cvCreateTrackbar2_texinfo},
+{"cvGetTrackbarPos",_wrap_cvGetTrackbarPos,0,0,2,_wrap_cvGetTrackbarPos_texinfo},
+{"cvSetTrackbarPos",_wrap_cvSetTrackbarPos,0,0,2,_wrap_cvSetTrackbarPos_texinfo},
+{"cvSetMouseCallbackOld",_wrap_cvSetMouseCallbackOld,0,0,2,_wrap_cvSetMouseCallbackOld_texinfo},
+{"cvLoadImageM",_wrap_cvLoadImageM,0,0,2,_wrap_cvLoadImageM_texinfo},
+{"cvSaveImage",_wrap_cvSaveImage,0,0,2,_wrap_cvSaveImage_texinfo},
+{"cvDecodeImage",_wrap_cvDecodeImage,0,0,2,_wrap_cvDecodeImage_texinfo},
+{"cvDecodeImageM",_wrap_cvDecodeImageM,0,0,2,_wrap_cvDecodeImageM_texinfo},
+{"cvEncodeImage",_wrap_cvEncodeImage,0,0,2,_wrap_cvEncodeImage_texinfo},
+{"cvConvertImage",_wrap_cvConvertImage,0,0,2,_wrap_cvConvertImage_texinfo},
+{"cvWaitKey",_wrap_cvWaitKey,0,0,2,_wrap_cvWaitKey_texinfo},
+{"cvCreateFileCapture",_wrap_cvCreateFileCapture,0,0,2,_wrap_cvCreateFileCapture_texinfo},
+{"cvCreateCameraCapture",_wrap_cvCreateCameraCapture,0,0,2,_wrap_cvCreateCameraCapture_texinfo},
+{"cvGrabFrame",_wrap_cvGrabFrame,0,0,2,_wrap_cvGrabFrame_texinfo},
+{"cvRetrieveFrame__Deprecated",_wrap_cvRetrieveFrame__Deprecated,0,0,2,_wrap_cvRetrieveFrame__Deprecated_texinfo},
+{"cvQueryFrame__Deprecated",_wrap_cvQueryFrame__Deprecated,0,0,2,_wrap_cvQueryFrame__Deprecated_texinfo},
+{"cvReleaseCapture",_wrap_cvReleaseCapture,0,0,2,_wrap_cvReleaseCapture_texinfo},
+{"cvGetCaptureProperty",_wrap_cvGetCaptureProperty,0,0,2,_wrap_cvGetCaptureProperty_texinfo},
+{"cvSetCaptureProperty",_wrap_cvSetCaptureProperty,0,0,2,_wrap_cvSetCaptureProperty_texinfo},
+{"cvGetCaptureDomain",_wrap_cvGetCaptureDomain,0,0,2,_wrap_cvGetCaptureDomain_texinfo},
+{"CV_FOURCC",_wrap_CV_FOURCC,0,0,2,_wrap_CV_FOURCC_texinfo},
+{"cvCreateVideoWriter",_wrap_cvCreateVideoWriter,0,0,2,_wrap_cvCreateVideoWriter_texinfo},
+{"cvWriteFrame",_wrap_cvWriteFrame,0,0,2,_wrap_cvWriteFrame_texinfo},
+{"cvReleaseVideoWriter",_wrap_cvReleaseVideoWriter,0,0,2,_wrap_cvReleaseVideoWriter_texinfo},
+{"new_CvvImage",_wrap_new_CvvImage,0,0,2,_wrap_new_CvvImage_texinfo},
+{"delete_CvvImage",_wrap_delete_CvvImage,0,0,2,_wrap_delete_CvvImage_texinfo},
+{"CvvImage_Create",_wrap_CvvImage_Create,0,0,2,_wrap_CvvImage_Create_texinfo},
+{"CvvImage_Load",_wrap_CvvImage_Load,0,0,2,_wrap_CvvImage_Load_texinfo},
+{"CvvImage_LoadRect",_wrap_CvvImage_LoadRect,0,0,2,_wrap_CvvImage_LoadRect_texinfo},
+{"CvvImage_Save",_wrap_CvvImage_Save,0,0,2,_wrap_CvvImage_Save_texinfo},
+{"CvvImage_CopyOf",_wrap_CvvImage_CopyOf,0,0,2,_wrap_CvvImage_CopyOf_texinfo},
+{"CvvImage_GetImage",_wrap_CvvImage_GetImage,0,0,2,_wrap_CvvImage_GetImage_texinfo},
+{"CvvImage_Destroy",_wrap_CvvImage_Destroy,0,0,2,_wrap_CvvImage_Destroy_texinfo},
+{"CvvImage_Width",_wrap_CvvImage_Width,0,0,2,_wrap_CvvImage_Width_texinfo},
+{"CvvImage_Height",_wrap_CvvImage_Height,0,0,2,_wrap_CvvImage_Height_texinfo},
+{"CvvImage_Bpp",_wrap_CvvImage_Bpp,0,0,2,_wrap_CvvImage_Bpp_texinfo},
+{"CvvImage_Fill",_wrap_CvvImage_Fill,0,0,2,_wrap_CvvImage_Fill_texinfo},
+{"CvvImage_Show",_wrap_CvvImage_Show,0,0,2,_wrap_CvvImage_Show_texinfo},
+{"delete_CvCapture",_wrap_delete_CvCapture,0,0,2,_wrap_delete_CvCapture_texinfo},
+{"delete_CvVideoWriter",_wrap_delete_CvVideoWriter,0,0,2,_wrap_delete_CvVideoWriter_texinfo},
+{"cv2mat",_wrap_cv2mat,0,0,2,_wrap_cv2mat_texinfo},
+{"mat2cv",_wrap_mat2cv,0,0,2,_wrap_mat2cv_texinfo},
+{"cv2im",_wrap_cv2im,0,0,2,_wrap_cv2im_texinfo},
+{"im2cv",_wrap_im2cv,0,0,2,_wrap_im2cv_texinfo},
+{0,0,0,0,0}
+};
+
+/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */
+
+static void *_p_CvTypedSeqT_CvTupleT_CvPoint_2_t_tTo_p_CvSeq(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((CvSeq *)  ((CvTypedSeq< CvTuple< CvPoint,2 > > *) x));
+}
+static void *_p_CvTypedSeqT_CvTupleT_float_2_t_tTo_p_CvSeq(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((CvSeq *)  ((CvTypedSeq< CvTuple< float,2 > > *) x));
+}
+static void *_p_CvTypedSeqT_CvConnectedComp_tTo_p_CvSeq(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((CvSeq *)  ((CvTypedSeq< CvConnectedComp > *) x));
+}
+static void *_p_CvTypedSeqT_CvRect_tTo_p_CvSeq(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((CvSeq *)  ((CvTypedSeq< CvRect > *) x));
+}
+static void *_p_CvTypedSeqT_CvPoint_tTo_p_CvSeq(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((CvSeq *)  ((CvTypedSeq< CvPoint > *) x));
+}
+static void *_p_CvTypedSeqT_CvTupleT_float_3_t_tTo_p_CvSeq(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((CvSeq *)  ((CvTypedSeq< CvTuple< float,3 > > *) x));
+}
+static void *_p_CvTypedSeqT_CvSeq_p_tTo_p_CvSeq(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((CvSeq *)  ((CvTypedSeq< CvSeq * > *) x));
+}
+static void *_p_CvTypedSeqT_CvQuadEdge2D_tTo_p_CvSeq(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((CvSeq *)  ((CvTypedSeq< CvQuadEdge2D > *) x));
+}
+static void *_p_CvTypedSeqT_CvPoint2D32f_tTo_p_CvSeq(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((CvSeq *)  ((CvTypedSeq< CvPoint2D32f > *) x));
+}
+static swig_type_info _swigt__p_Cv32suf = {"_p_Cv32suf", "Cv32suf *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_Cv64suf = {"_p_Cv64suf", "Cv64suf *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvAttrList = {"_p_CvAttrList", "CvAttrList *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvAvgComp = {"_p_CvAvgComp", "CvAvgComp *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvBox2D = {"_p_CvBox2D", "CvBox2D *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvCapture = {"_p_CvCapture", "CvCapture *", 0, 0, (void*)&_wrap_class_CvCapture, 0};
+static swig_type_info _swigt__p_CvChain = {"_p_CvChain", "CvChain *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvChainPtReader = {"_p_CvChainPtReader", "CvChainPtReader *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvConDensation = {"_p_CvConDensation", "CvConDensation *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvConnectedComp = {"_p_CvConnectedComp", "CvConnectedComp *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvContour = {"_p_CvContour", "CvPoint2DSeq *|CvContour *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvContourTree = {"_p_CvContourTree", "CvContourTree *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvConvexityDefect = {"_p_CvConvexityDefect", "CvConvexityDefect *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvFileNode = {"_p_CvFileNode", "CvFileNode *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvFileStorage = {"_p_CvFileStorage", "CvFileStorage *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvFilter = {"_p_CvFilter", "enum CvFilter *|CvFilter *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvFont = {"_p_CvFont", "CvFont *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvGenericHash = {"_p_CvGenericHash", "CvGenericHash *|CvFileNodeHash *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvGraph = {"_p_CvGraph", "CvGraph *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvGraphEdge = {"_p_CvGraphEdge", "CvGraphEdge *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvGraphScanner = {"_p_CvGraphScanner", "CvGraphScanner *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvGraphVtx = {"_p_CvGraphVtx", "CvGraphVtx *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvGraphVtx2D = {"_p_CvGraphVtx2D", "CvGraphVtx2D *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvHaarClassifier = {"_p_CvHaarClassifier", "CvHaarClassifier *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvHaarClassifierCascade = {"_p_CvHaarClassifierCascade", "CvHaarClassifierCascade *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvHaarFeature = {"_p_CvHaarFeature", "CvHaarFeature *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvHaarStageClassifier = {"_p_CvHaarStageClassifier", "CvHaarStageClassifier *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvHidHaarClassifierCascade = {"_p_CvHidHaarClassifierCascade", "CvHidHaarClassifierCascade *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvHistogram = {"_p_CvHistogram", "CvHistogram *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvHuMoments = {"_p_CvHuMoments", "CvHuMoments *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvKalman = {"_p_CvKalman", "CvKalman *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvLineIterator = {"_p_CvLineIterator", "CvLineIterator *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvMSERParams = {"_p_CvMSERParams", "CvMSERParams *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvMat = {"_p_CvMat", "CvMat *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvMatND = {"_p_CvMatND", "CvMatND *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvMatrix3 = {"_p_CvMatrix3", "CvMatrix3 *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvMemBlock = {"_p_CvMemBlock", "CvMemBlock *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvMemStorage = {"_p_CvMemStorage", "CvMemStorage *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvMemStoragePos = {"_p_CvMemStoragePos", "CvMemStoragePos *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvModuleInfo = {"_p_CvModuleInfo", "CvModuleInfo *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvMoments = {"_p_CvMoments", "CvMoments *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvNArrayIterator = {"_p_CvNArrayIterator", "CvNArrayIterator *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvNextEdgeType = {"_p_CvNextEdgeType", "enum CvNextEdgeType *|CvNextEdgeType *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvPOSITObject = {"_p_CvPOSITObject", "CvPOSITObject *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvPluginFuncInfo = {"_p_CvPluginFuncInfo", "CvPluginFuncInfo *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvPoint = {"_p_CvPoint", "CvPoint *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvPoint2D32f = {"_p_CvPoint2D32f", "CvPoint2D32f *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvPoint2D64f = {"_p_CvPoint2D64f", "CvPoint2D64f *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvPoint3D32f = {"_p_CvPoint3D32f", "CvPoint3D32f *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvPoint3D64f = {"_p_CvPoint3D64f", "CvPoint3D64f *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvQuadEdge2D = {"_p_CvQuadEdge2D", "CvQuadEdge2D *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvRNG_Wrapper = {"_p_CvRNG_Wrapper", "CvRNG_Wrapper *", 0, 0, (void*)&_wrap_class_CvRNG_Wrapper, 0};
+static swig_type_info _swigt__p_CvRect = {"_p_CvRect", "CvRect *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvSURFParams = {"_p_CvSURFParams", "CvSURFParams *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvSURFPoint = {"_p_CvSURFPoint", "CvSURFPoint *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvScalar = {"_p_CvScalar", "CvScalar *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvSeq = {"_p_CvSeq", "CvSeq *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvTypedSeqT_CvTupleT_CvPoint_2_t_t = {"_p_CvTypedSeqT_CvTupleT_CvPoint_2_t_t", 0, 0, 0, 0, 0};
+static swig_type_info _swigt__p_CvTypedSeqT_CvTupleT_float_2_t_t = {"_p_CvTypedSeqT_CvTupleT_float_2_t_t", 0, 0, 0, 0, 0};
+static swig_type_info _swigt__p_CvTypedSeqT_CvRect_t = {"_p_CvTypedSeqT_CvRect_t", 0, 0, 0, 0, 0};
+static swig_type_info _swigt__p_CvTypedSeqT_CvPoint_t = {"_p_CvTypedSeqT_CvPoint_t", 0, 0, 0, 0, 0};
+static swig_type_info _swigt__p_CvTypedSeqT_CvQuadEdge2D_t = {"_p_CvTypedSeqT_CvQuadEdge2D_t", 0, 0, 0, 0, 0};
+static swig_type_info _swigt__p_CvTypedSeqT_CvSeq_p_t = {"_p_CvTypedSeqT_CvSeq_p_t", 0, 0, 0, 0, 0};
+static swig_type_info _swigt__p_CvTypedSeqT_CvPoint2D32f_t = {"_p_CvTypedSeqT_CvPoint2D32f_t", 0, 0, 0, 0, 0};
+static swig_type_info _swigt__p_CvTypedSeqT_CvTupleT_float_3_t_t = {"_p_CvTypedSeqT_CvTupleT_float_3_t_t", 0, 0, 0, 0, 0};
+static swig_type_info _swigt__p_CvTypedSeqT_CvConnectedComp_t = {"_p_CvTypedSeqT_CvConnectedComp_t", 0, 0, 0, 0, 0};
+static swig_type_info _swigt__p_CvSeqBlock = {"_p_CvSeqBlock", "CvSeqBlock *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvSeqReader = {"_p_CvSeqReader", "CvSeqReader *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvSeqWriter = {"_p_CvSeqWriter", "CvSeqWriter *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvSet = {"_p_CvSet", "CvSet *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvSetElem = {"_p_CvSetElem", "CvSetElem *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvSize = {"_p_CvSize", "CvSize *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvSize2D32f = {"_p_CvSize2D32f", "CvSize2D32f *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvSlice = {"_p_CvSlice", "CvSlice *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvSparseMat = {"_p_CvSparseMat", "CvSparseMat *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvSparseMatIterator = {"_p_CvSparseMatIterator", "CvSparseMatIterator *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvSparseNode = {"_p_CvSparseNode", "CvSparseNode *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvStarDetectorParams = {"_p_CvStarDetectorParams", "CvStarDetectorParams *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvStarKeypoint = {"_p_CvStarKeypoint", "CvStarKeypoint *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvStereoBMState = {"_p_CvStereoBMState", "CvStereoBMState *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvStereoGCState = {"_p_CvStereoGCState", "CvStereoGCState *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvString = {"_p_CvString", "CvString *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvStringHashNode = {"_p_CvStringHashNode", "CvStringHashNode *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvSubdiv2D = {"_p_CvSubdiv2D", "CvSubdiv2D *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvSubdiv2DEdge_Wrapper = {"_p_CvSubdiv2DEdge_Wrapper", "CvSubdiv2DEdge_Wrapper *", 0, 0, (void*)&_wrap_class_CvSubdiv2DEdge_Wrapper, 0};
+static swig_type_info _swigt__p_CvSubdiv2DPoint = {"_p_CvSubdiv2DPoint", "CvSubdiv2DPoint *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvSubdiv2DPointLocation = {"_p_CvSubdiv2DPointLocation", "enum CvSubdiv2DPointLocation *|CvSubdiv2DPointLocation *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvTermCriteria = {"_p_CvTermCriteria", "CvTermCriteria *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvTreeNodeIterator = {"_p_CvTreeNodeIterator", "CvTreeNodeIterator *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvTypeInfo = {"_p_CvTypeInfo", "CvTypeInfo *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_CvVideoWriter = {"_p_CvVideoWriter", "CvVideoWriter *", 0, 0, (void*)&_wrap_class_CvVideoWriter, 0};
+static swig_type_info _swigt__p_CvvImage = {"_p_CvvImage", "CvvImage *|CImage *", 0, 0, (void*)&_wrap_class_CvvImage, 0};
+static swig_type_info _swigt__p__IplConvKernel = {"_p__IplConvKernel", "_IplConvKernel *|IplConvKernel *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p__IplConvKernelFP = {"_p__IplConvKernelFP", "_IplConvKernelFP *|IplConvKernelFP *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p__IplImage = {"_p__IplImage", "_IplImage *|IplImage *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p__IplROI = {"_p__IplROI", "_IplROI *|IplROI *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p__IplTileInfo = {"_p__IplTileInfo", "_IplTileInfo *|IplTileInfo *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_allocator_type = {"_p_allocator_type", "allocator_type *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_char = {"_p_char", "char *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_difference_type = {"_p_difference_type", "difference_type *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_f_int__void = {"_p_f_int__void", "void (*)(int)|CvTrackbarCallback", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_f_int_int_int_int_p_void__void = {"_p_f_int_int_int_int_p_void__void", "void (*)(int,int,int,int,void *)|CvMouseCallback", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_f_int_p_void__void = {"_p_f_int_p_void__void", "CvTrackbarCallback2|void (*)(int,void *)", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_int = {"_p_int", "CvHistType *|int *|CVStatus *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_int64_t = {"_p_int64_t", "int64_t *|int64 *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_octave_value = {"_p_octave_value", "octave_value *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_p_CvCapture = {"_p_p_CvCapture", "CvCapture **", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_p_CvVideoWriter = {"_p_p_CvVideoWriter", "CvVideoWriter **", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_p_char = {"_p_p_char", "char **", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_signed_char = {"_p_signed_char", "schar *|signed char *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_size_t = {"_p_size_t", "size_t *|CvSubdiv2DEdge *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_size_type = {"_p_size_type", "size_type *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_uint64_t = {"_p_uint64_t", "uint64_t *|uint64 *|CvRNG *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_unsigned_char = {"_p_unsigned_char", "uchar *|unsigned char *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_unsigned_short = {"_p_unsigned_short", "unsigned short *|ushort *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_value_type = {"_p_value_type", "value_type *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_void = {"_p_void", "CvArr *|void *", 0, 0, (void*)0, 0};
+
+static swig_type_info *swig_type_initial[] = {
+  &_swigt__p_Cv32suf,
+  &_swigt__p_Cv64suf,
+  &_swigt__p_CvAttrList,
+  &_swigt__p_CvAvgComp,
+  &_swigt__p_CvBox2D,
+  &_swigt__p_CvCapture,
+  &_swigt__p_CvChain,
+  &_swigt__p_CvChainPtReader,
+  &_swigt__p_CvConDensation,
+  &_swigt__p_CvConnectedComp,
+  &_swigt__p_CvContour,
+  &_swigt__p_CvContourTree,
+  &_swigt__p_CvConvexityDefect,
+  &_swigt__p_CvFileNode,
+  &_swigt__p_CvFileStorage,
+  &_swigt__p_CvFilter,
+  &_swigt__p_CvFont,
+  &_swigt__p_CvGenericHash,
+  &_swigt__p_CvGraph,
+  &_swigt__p_CvGraphEdge,
+  &_swigt__p_CvGraphScanner,
+  &_swigt__p_CvGraphVtx,
+  &_swigt__p_CvGraphVtx2D,
+  &_swigt__p_CvHaarClassifier,
+  &_swigt__p_CvHaarClassifierCascade,
+  &_swigt__p_CvHaarFeature,
+  &_swigt__p_CvHaarStageClassifier,
+  &_swigt__p_CvHidHaarClassifierCascade,
+  &_swigt__p_CvHistogram,
+  &_swigt__p_CvHuMoments,
+  &_swigt__p_CvKalman,
+  &_swigt__p_CvLineIterator,
+  &_swigt__p_CvMSERParams,
+  &_swigt__p_CvMat,
+  &_swigt__p_CvMatND,
+  &_swigt__p_CvMatrix3,
+  &_swigt__p_CvMemBlock,
+  &_swigt__p_CvMemStorage,
+  &_swigt__p_CvMemStoragePos,
+  &_swigt__p_CvModuleInfo,
+  &_swigt__p_CvMoments,
+  &_swigt__p_CvNArrayIterator,
+  &_swigt__p_CvNextEdgeType,
+  &_swigt__p_CvPOSITObject,
+  &_swigt__p_CvPluginFuncInfo,
+  &_swigt__p_CvPoint,
+  &_swigt__p_CvPoint2D32f,
+  &_swigt__p_CvPoint2D64f,
+  &_swigt__p_CvPoint3D32f,
+  &_swigt__p_CvPoint3D64f,
+  &_swigt__p_CvQuadEdge2D,
+  &_swigt__p_CvRNG_Wrapper,
+  &_swigt__p_CvRect,
+  &_swigt__p_CvSURFParams,
+  &_swigt__p_CvSURFPoint,
+  &_swigt__p_CvScalar,
+  &_swigt__p_CvSeq,
+  &_swigt__p_CvSeqBlock,
+  &_swigt__p_CvSeqReader,
+  &_swigt__p_CvSeqWriter,
+  &_swigt__p_CvSet,
+  &_swigt__p_CvSetElem,
+  &_swigt__p_CvSize,
+  &_swigt__p_CvSize2D32f,
+  &_swigt__p_CvSlice,
+  &_swigt__p_CvSparseMat,
+  &_swigt__p_CvSparseMatIterator,
+  &_swigt__p_CvSparseNode,
+  &_swigt__p_CvStarDetectorParams,
+  &_swigt__p_CvStarKeypoint,
+  &_swigt__p_CvStereoBMState,
+  &_swigt__p_CvStereoGCState,
+  &_swigt__p_CvString,
+  &_swigt__p_CvStringHashNode,
+  &_swigt__p_CvSubdiv2D,
+  &_swigt__p_CvSubdiv2DEdge_Wrapper,
+  &_swigt__p_CvSubdiv2DPoint,
+  &_swigt__p_CvSubdiv2DPointLocation,
+  &_swigt__p_CvTermCriteria,
+  &_swigt__p_CvTreeNodeIterator,
+  &_swigt__p_CvTypeInfo,
+  &_swigt__p_CvTypedSeqT_CvConnectedComp_t,
+  &_swigt__p_CvTypedSeqT_CvPoint2D32f_t,
+  &_swigt__p_CvTypedSeqT_CvPoint_t,
+  &_swigt__p_CvTypedSeqT_CvQuadEdge2D_t,
+  &_swigt__p_CvTypedSeqT_CvRect_t,
+  &_swigt__p_CvTypedSeqT_CvSeq_p_t,
+  &_swigt__p_CvTypedSeqT_CvTupleT_CvPoint_2_t_t,
+  &_swigt__p_CvTypedSeqT_CvTupleT_float_2_t_t,
+  &_swigt__p_CvTypedSeqT_CvTupleT_float_3_t_t,
+  &_swigt__p_CvVideoWriter,
+  &_swigt__p_CvvImage,
+  &_swigt__p__IplConvKernel,
+  &_swigt__p__IplConvKernelFP,
+  &_swigt__p__IplImage,
+  &_swigt__p__IplROI,
+  &_swigt__p__IplTileInfo,
+  &_swigt__p_allocator_type,
+  &_swigt__p_char,
+  &_swigt__p_difference_type,
+  &_swigt__p_f_int__void,
+  &_swigt__p_f_int_int_int_int_p_void__void,
+  &_swigt__p_f_int_p_void__void,
+  &_swigt__p_int,
+  &_swigt__p_int64_t,
+  &_swigt__p_octave_value,
+  &_swigt__p_p_CvCapture,
+  &_swigt__p_p_CvVideoWriter,
+  &_swigt__p_p_char,
+  &_swigt__p_signed_char,
+  &_swigt__p_size_t,
+  &_swigt__p_size_type,
+  &_swigt__p_uint64_t,
+  &_swigt__p_unsigned_char,
+  &_swigt__p_unsigned_short,
+  &_swigt__p_value_type,
+  &_swigt__p_void,
+};
+
+static swig_cast_info _swigc__p_Cv32suf[] = {  {&_swigt__p_Cv32suf, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_Cv64suf[] = {  {&_swigt__p_Cv64suf, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvAttrList[] = {  {&_swigt__p_CvAttrList, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvAvgComp[] = {  {&_swigt__p_CvAvgComp, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvBox2D[] = {  {&_swigt__p_CvBox2D, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvCapture[] = {  {&_swigt__p_CvCapture, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvChain[] = {  {&_swigt__p_CvChain, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvChainPtReader[] = {  {&_swigt__p_CvChainPtReader, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvConDensation[] = {  {&_swigt__p_CvConDensation, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvConnectedComp[] = {  {&_swigt__p_CvConnectedComp, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvContour[] = {  {&_swigt__p_CvContour, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvContourTree[] = {  {&_swigt__p_CvContourTree, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvConvexityDefect[] = {  {&_swigt__p_CvConvexityDefect, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvFileNode[] = {  {&_swigt__p_CvFileNode, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvFileStorage[] = {  {&_swigt__p_CvFileStorage, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvFilter[] = {  {&_swigt__p_CvFilter, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvFont[] = {  {&_swigt__p_CvFont, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvGenericHash[] = {  {&_swigt__p_CvGenericHash, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvGraph[] = {  {&_swigt__p_CvGraph, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvGraphEdge[] = {  {&_swigt__p_CvGraphEdge, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvGraphScanner[] = {  {&_swigt__p_CvGraphScanner, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvGraphVtx[] = {  {&_swigt__p_CvGraphVtx, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvGraphVtx2D[] = {  {&_swigt__p_CvGraphVtx2D, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvHaarClassifier[] = {  {&_swigt__p_CvHaarClassifier, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvHaarClassifierCascade[] = {  {&_swigt__p_CvHaarClassifierCascade, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvHaarFeature[] = {  {&_swigt__p_CvHaarFeature, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvHaarStageClassifier[] = {  {&_swigt__p_CvHaarStageClassifier, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvHidHaarClassifierCascade[] = {  {&_swigt__p_CvHidHaarClassifierCascade, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvHistogram[] = {  {&_swigt__p_CvHistogram, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvHuMoments[] = {  {&_swigt__p_CvHuMoments, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvKalman[] = {  {&_swigt__p_CvKalman, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvLineIterator[] = {  {&_swigt__p_CvLineIterator, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvMSERParams[] = {  {&_swigt__p_CvMSERParams, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvMat[] = {  {&_swigt__p_CvMat, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvMatND[] = {  {&_swigt__p_CvMatND, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvMatrix3[] = {  {&_swigt__p_CvMatrix3, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvMemBlock[] = {  {&_swigt__p_CvMemBlock, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvMemStorage[] = {  {&_swigt__p_CvMemStorage, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvMemStoragePos[] = {  {&_swigt__p_CvMemStoragePos, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvModuleInfo[] = {  {&_swigt__p_CvModuleInfo, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvMoments[] = {  {&_swigt__p_CvMoments, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvNArrayIterator[] = {  {&_swigt__p_CvNArrayIterator, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvNextEdgeType[] = {  {&_swigt__p_CvNextEdgeType, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvPOSITObject[] = {  {&_swigt__p_CvPOSITObject, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvPluginFuncInfo[] = {  {&_swigt__p_CvPluginFuncInfo, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvPoint[] = {  {&_swigt__p_CvPoint, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvPoint2D32f[] = {  {&_swigt__p_CvPoint2D32f, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvPoint2D64f[] = {  {&_swigt__p_CvPoint2D64f, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvPoint3D32f[] = {  {&_swigt__p_CvPoint3D32f, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvPoint3D64f[] = {  {&_swigt__p_CvPoint3D64f, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvQuadEdge2D[] = {  {&_swigt__p_CvQuadEdge2D, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvRNG_Wrapper[] = {  {&_swigt__p_CvRNG_Wrapper, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvRect[] = {  {&_swigt__p_CvRect, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvSURFParams[] = {  {&_swigt__p_CvSURFParams, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvSURFPoint[] = {  {&_swigt__p_CvSURFPoint, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvScalar[] = {  {&_swigt__p_CvScalar, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvTypedSeqT_CvTupleT_CvPoint_2_t_t[] = {{&_swigt__p_CvTypedSeqT_CvTupleT_CvPoint_2_t_t, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvTypedSeqT_CvTupleT_float_2_t_t[] = {{&_swigt__p_CvTypedSeqT_CvTupleT_float_2_t_t, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvTypedSeqT_CvRect_t[] = {{&_swigt__p_CvTypedSeqT_CvRect_t, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvTypedSeqT_CvPoint_t[] = {{&_swigt__p_CvTypedSeqT_CvPoint_t, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvTypedSeqT_CvQuadEdge2D_t[] = {{&_swigt__p_CvTypedSeqT_CvQuadEdge2D_t, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvTypedSeqT_CvSeq_p_t[] = {{&_swigt__p_CvTypedSeqT_CvSeq_p_t, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvTypedSeqT_CvPoint2D32f_t[] = {{&_swigt__p_CvTypedSeqT_CvPoint2D32f_t, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvTypedSeqT_CvTupleT_float_3_t_t[] = {{&_swigt__p_CvTypedSeqT_CvTupleT_float_3_t_t, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvTypedSeqT_CvConnectedComp_t[] = {{&_swigt__p_CvTypedSeqT_CvConnectedComp_t, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvSeq[] = {  {&_swigt__p_CvTypedSeqT_CvTupleT_CvPoint_2_t_t, _p_CvTypedSeqT_CvTupleT_CvPoint_2_t_tTo_p_CvSeq, 0, 0},  {&_swigt__p_CvTypedSeqT_CvTupleT_float_2_t_t, _p_CvTypedSeqT_CvTupleT_float_2_t_tTo_p_CvSeq, 0, 0},  {&_swigt__p_CvTypedSeqT_CvRect_t, _p_CvTypedSeqT_CvRect_tTo_p_CvSeq, 0, 0},  {&_swigt__p_CvTypedSeqT_CvPoint_t, _p_CvTypedSeqT_CvPoint_tTo_p_CvSeq, 0, 0},  {&_swigt__p_CvTypedSeqT_CvQuadEdge2D_t, _p_CvTypedSeqT_CvQuadEdge2D_tTo_p_CvSeq, 0, 0},  {&_swigt__p_CvTypedSeqT_CvSeq_p_t, _p_CvTypedSeqT_CvSeq_p_tTo_p_CvSeq, 0, 0},  {&_swigt__p_CvTypedSeqT_CvPoint2D32f_t, _p_CvTypedSeqT_CvPoint2D32f_tTo_p_CvSeq, 0, 0},  {&_swigt__p_CvSeq, 0, 0, 0},  {&_swigt__p_CvTypedSeqT_CvTupleT_float_3_t_t, _p_CvTypedSeqT_CvTupleT_float_3_t_tTo_p_CvSeq, 0, 0},  {&_swigt__p_CvTypedSeqT_CvConnectedComp_t, _p_CvTypedSeqT_CvConnectedComp_tTo_p_CvSeq, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvSeqBlock[] = {  {&_swigt__p_CvSeqBlock, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvSeqReader[] = {  {&_swigt__p_CvSeqReader, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvSeqWriter[] = {  {&_swigt__p_CvSeqWriter, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvSet[] = {  {&_swigt__p_CvSet, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvSetElem[] = {  {&_swigt__p_CvSetElem, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvSize[] = {  {&_swigt__p_CvSize, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvSize2D32f[] = {  {&_swigt__p_CvSize2D32f, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvSlice[] = {  {&_swigt__p_CvSlice, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvSparseMat[] = {  {&_swigt__p_CvSparseMat, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvSparseMatIterator[] = {  {&_swigt__p_CvSparseMatIterator, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvSparseNode[] = {  {&_swigt__p_CvSparseNode, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvStarDetectorParams[] = {  {&_swigt__p_CvStarDetectorParams, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvStarKeypoint[] = {  {&_swigt__p_CvStarKeypoint, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvStereoBMState[] = {  {&_swigt__p_CvStereoBMState, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvStereoGCState[] = {  {&_swigt__p_CvStereoGCState, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvString[] = {  {&_swigt__p_CvString, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvStringHashNode[] = {  {&_swigt__p_CvStringHashNode, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvSubdiv2D[] = {  {&_swigt__p_CvSubdiv2D, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvSubdiv2DEdge_Wrapper[] = {  {&_swigt__p_CvSubdiv2DEdge_Wrapper, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvSubdiv2DPoint[] = {  {&_swigt__p_CvSubdiv2DPoint, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvSubdiv2DPointLocation[] = {  {&_swigt__p_CvSubdiv2DPointLocation, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvTermCriteria[] = {  {&_swigt__p_CvTermCriteria, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvTreeNodeIterator[] = {  {&_swigt__p_CvTreeNodeIterator, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvTypeInfo[] = {  {&_swigt__p_CvTypeInfo, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvVideoWriter[] = {  {&_swigt__p_CvVideoWriter, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CvvImage[] = {  {&_swigt__p_CvvImage, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p__IplConvKernel[] = {  {&_swigt__p__IplConvKernel, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p__IplConvKernelFP[] = {  {&_swigt__p__IplConvKernelFP, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p__IplImage[] = {  {&_swigt__p__IplImage, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p__IplROI[] = {  {&_swigt__p__IplROI, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p__IplTileInfo[] = {  {&_swigt__p__IplTileInfo, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_allocator_type[] = {  {&_swigt__p_allocator_type, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_char[] = {  {&_swigt__p_char, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_difference_type[] = {  {&_swigt__p_difference_type, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_f_int__void[] = {  {&_swigt__p_f_int__void, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_f_int_int_int_int_p_void__void[] = {  {&_swigt__p_f_int_int_int_int_p_void__void, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_f_int_p_void__void[] = {  {&_swigt__p_f_int_p_void__void, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_int[] = {  {&_swigt__p_int, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_int64_t[] = {  {&_swigt__p_int64_t, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_octave_value[] = {  {&_swigt__p_octave_value, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_p_CvCapture[] = {  {&_swigt__p_p_CvCapture, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_p_CvVideoWriter[] = {  {&_swigt__p_p_CvVideoWriter, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_p_char[] = {  {&_swigt__p_p_char, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_signed_char[] = {  {&_swigt__p_signed_char, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_size_t[] = {  {&_swigt__p_size_t, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_size_type[] = {  {&_swigt__p_size_type, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_uint64_t[] = {  {&_swigt__p_uint64_t, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_unsigned_char[] = {  {&_swigt__p_unsigned_char, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_unsigned_short[] = {  {&_swigt__p_unsigned_short, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_value_type[] = {  {&_swigt__p_value_type, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_void[] = {  {&_swigt__p_void, 0, 0, 0},{0, 0, 0, 0}};
+
+static swig_cast_info *swig_cast_initial[] = {
+  _swigc__p_Cv32suf,
+  _swigc__p_Cv64suf,
+  _swigc__p_CvAttrList,
+  _swigc__p_CvAvgComp,
+  _swigc__p_CvBox2D,
+  _swigc__p_CvCapture,
+  _swigc__p_CvChain,
+  _swigc__p_CvChainPtReader,
+  _swigc__p_CvConDensation,
+  _swigc__p_CvConnectedComp,
+  _swigc__p_CvContour,
+  _swigc__p_CvContourTree,
+  _swigc__p_CvConvexityDefect,
+  _swigc__p_CvFileNode,
+  _swigc__p_CvFileStorage,
+  _swigc__p_CvFilter,
+  _swigc__p_CvFont,
+  _swigc__p_CvGenericHash,
+  _swigc__p_CvGraph,
+  _swigc__p_CvGraphEdge,
+  _swigc__p_CvGraphScanner,
+  _swigc__p_CvGraphVtx,
+  _swigc__p_CvGraphVtx2D,
+  _swigc__p_CvHaarClassifier,
+  _swigc__p_CvHaarClassifierCascade,
+  _swigc__p_CvHaarFeature,
+  _swigc__p_CvHaarStageClassifier,
+  _swigc__p_CvHidHaarClassifierCascade,
+  _swigc__p_CvHistogram,
+  _swigc__p_CvHuMoments,
+  _swigc__p_CvKalman,
+  _swigc__p_CvLineIterator,
+  _swigc__p_CvMSERParams,
+  _swigc__p_CvMat,
+  _swigc__p_CvMatND,
+  _swigc__p_CvMatrix3,
+  _swigc__p_CvMemBlock,
+  _swigc__p_CvMemStorage,
+  _swigc__p_CvMemStoragePos,
+  _swigc__p_CvModuleInfo,
+  _swigc__p_CvMoments,
+  _swigc__p_CvNArrayIterator,
+  _swigc__p_CvNextEdgeType,
+  _swigc__p_CvPOSITObject,
+  _swigc__p_CvPluginFuncInfo,
+  _swigc__p_CvPoint,
+  _swigc__p_CvPoint2D32f,
+  _swigc__p_CvPoint2D64f,
+  _swigc__p_CvPoint3D32f,
+  _swigc__p_CvPoint3D64f,
+  _swigc__p_CvQuadEdge2D,
+  _swigc__p_CvRNG_Wrapper,
+  _swigc__p_CvRect,
+  _swigc__p_CvSURFParams,
+  _swigc__p_CvSURFPoint,
+  _swigc__p_CvScalar,
+  _swigc__p_CvSeq,
+  _swigc__p_CvSeqBlock,
+  _swigc__p_CvSeqReader,
+  _swigc__p_CvSeqWriter,
+  _swigc__p_CvSet,
+  _swigc__p_CvSetElem,
+  _swigc__p_CvSize,
+  _swigc__p_CvSize2D32f,
+  _swigc__p_CvSlice,
+  _swigc__p_CvSparseMat,
+  _swigc__p_CvSparseMatIterator,
+  _swigc__p_CvSparseNode,
+  _swigc__p_CvStarDetectorParams,
+  _swigc__p_CvStarKeypoint,
+  _swigc__p_CvStereoBMState,
+  _swigc__p_CvStereoGCState,
+  _swigc__p_CvString,
+  _swigc__p_CvStringHashNode,
+  _swigc__p_CvSubdiv2D,
+  _swigc__p_CvSubdiv2DEdge_Wrapper,
+  _swigc__p_CvSubdiv2DPoint,
+  _swigc__p_CvSubdiv2DPointLocation,
+  _swigc__p_CvTermCriteria,
+  _swigc__p_CvTreeNodeIterator,
+  _swigc__p_CvTypeInfo,
+  _swigc__p_CvTypedSeqT_CvConnectedComp_t,
+  _swigc__p_CvTypedSeqT_CvPoint2D32f_t,
+  _swigc__p_CvTypedSeqT_CvPoint_t,
+  _swigc__p_CvTypedSeqT_CvQuadEdge2D_t,
+  _swigc__p_CvTypedSeqT_CvRect_t,
+  _swigc__p_CvTypedSeqT_CvSeq_p_t,
+  _swigc__p_CvTypedSeqT_CvTupleT_CvPoint_2_t_t,
+  _swigc__p_CvTypedSeqT_CvTupleT_float_2_t_t,
+  _swigc__p_CvTypedSeqT_CvTupleT_float_3_t_t,
+  _swigc__p_CvVideoWriter,
+  _swigc__p_CvvImage,
+  _swigc__p__IplConvKernel,
+  _swigc__p__IplConvKernelFP,
+  _swigc__p__IplImage,
+  _swigc__p__IplROI,
+  _swigc__p__IplTileInfo,
+  _swigc__p_allocator_type,
+  _swigc__p_char,
+  _swigc__p_difference_type,
+  _swigc__p_f_int__void,
+  _swigc__p_f_int_int_int_int_p_void__void,
+  _swigc__p_f_int_p_void__void,
+  _swigc__p_int,
+  _swigc__p_int64_t,
+  _swigc__p_octave_value,
+  _swigc__p_p_CvCapture,
+  _swigc__p_p_CvVideoWriter,
+  _swigc__p_p_char,
+  _swigc__p_signed_char,
+  _swigc__p_size_t,
+  _swigc__p_size_type,
+  _swigc__p_uint64_t,
+  _swigc__p_unsigned_char,
+  _swigc__p_unsigned_short,
+  _swigc__p_value_type,
+  _swigc__p_void,
+};
+
+
+/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */
+
+/* -----------------------------------------------------------------------------
+ * Type initialization:
+ * This problem is tough by the requirement that no dynamic 
+ * memory is used. Also, since swig_type_info structures store pointers to 
+ * swig_cast_info structures and swig_cast_info structures store pointers back
+ * to swig_type_info structures, we need some lookup code at initialization. 
+ * The idea is that swig generates all the structures that are needed. 
+ * The runtime then collects these partially filled structures. 
+ * The SWIG_InitializeModule function takes these initial arrays out of 
+ * swig_module, and does all the lookup, filling in the swig_module.types
+ * array with the correct data and linking the correct swig_cast_info
+ * structures together.
+ *
+ * The generated swig_type_info structures are assigned staticly to an initial 
+ * array. We just loop through that array, and handle each type individually.
+ * First we lookup if this type has been already loaded, and if so, use the
+ * loaded structure instead of the generated one. Then we have to fill in the
+ * cast linked list. The cast data is initially stored in something like a
+ * two-dimensional array. Each row corresponds to a type (there are the same
+ * number of rows as there are in the swig_type_initial array). Each entry in
+ * a column is one of the swig_cast_info structures for that type.
+ * The cast_initial array is actually an array of arrays, because each row has
+ * a variable number of columns. So to actually build the cast linked list,
+ * we find the array of casts associated with the type, and loop through it 
+ * adding the casts to the list. The one last trick we need to do is making
+ * sure the type pointer in the swig_cast_info struct is correct.
+ *
+ * First off, we lookup the cast->type name to see if it is already loaded. 
+ * There are three cases to handle:
+ *  1) If the cast->type has already been loaded AND the type we are adding
+ *     casting info to has not been loaded (it is in this module), THEN we
+ *     replace the cast->type pointer with the type pointer that has already
+ *     been loaded.
+ *  2) If BOTH types (the one we are adding casting info to, and the 
+ *     cast->type) are loaded, THEN the cast info has already been loaded by
+ *     the previous module so we just ignore it.
+ *  3) Finally, if cast->type has not already been loaded, then we add that
+ *     swig_cast_info to the linked list (because the cast->type) pointer will
+ *     be correct.
+ * ----------------------------------------------------------------------------- */
+
+#ifdef __cplusplus
+extern "C" {
+#if 0
+} /* c-mode */
+#endif
+#endif
+
+#if 0
+#define SWIGRUNTIME_DEBUG
+#endif
+
+
+SWIGRUNTIME void
+SWIG_InitializeModule(void *clientdata) {
+  size_t i;
+  swig_module_info *module_head, *iter;
+  int found, init;
+
+  clientdata = clientdata;
+
+  /* check to see if the circular list has been setup, if not, set it up */
+  if (swig_module.next==0) {
+    /* Initialize the swig_module */
+    swig_module.type_initial = swig_type_initial;
+    swig_module.cast_initial = swig_cast_initial;
+    swig_module.next = &swig_module;
+    init = 1;
+  } else {
+    init = 0;
+  }
+
+  /* Try and load any already created modules */
+  module_head = SWIG_GetModule(clientdata);
+  if (!module_head) {
+    /* This is the first module loaded for this interpreter */
+    /* so set the swig module into the interpreter */
+    SWIG_SetModule(clientdata, &swig_module);
+    module_head = &swig_module;
+  } else {
+    /* the interpreter has loaded a SWIG module, but has it loaded this one? */
+    found=0;
+    iter=module_head;
+    do {
+      if (iter==&swig_module) {
+        found=1;
+        break;
+      }
+      iter=iter->next;
+    } while (iter!= module_head);
+
+    /* if the is found in the list, then all is done and we may leave */
+    if (found) return;
+    /* otherwise we must add out module into the list */
+    swig_module.next = module_head->next;
+    module_head->next = &swig_module;
+  }
+
+  /* When multiple interpeters are used, a module could have already been initialized in
+     a different interpreter, but not yet have a pointer in this interpreter.
+     In this case, we do not want to continue adding types... everything should be
+     set up already */
+  if (init == 0) return;
+
+  /* Now work on filling in swig_module.types */
+#ifdef SWIGRUNTIME_DEBUG
+  printf("SWIG_InitializeModule: size %d\n", swig_module.size);
+#endif
+  for (i = 0; i < swig_module.size; ++i) {
+    swig_type_info *type = 0;
+    swig_type_info *ret;
+    swig_cast_info *cast;
+  
+#ifdef SWIGRUNTIME_DEBUG
+    printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name);
+#endif
+
+    /* if there is another module already loaded */
+    if (swig_module.next != &swig_module) {
+      type = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, swig_module.type_initial[i]->name);
+    }
+    if (type) {
+      /* Overwrite clientdata field */
+#ifdef SWIGRUNTIME_DEBUG
+      printf("SWIG_InitializeModule: found type %s\n", type->name);
+#endif
+      if (swig_module.type_initial[i]->clientdata) {
+       type->clientdata = swig_module.type_initial[i]->clientdata;
+#ifdef SWIGRUNTIME_DEBUG
+      printf("SWIG_InitializeModule: found and overwrite type %s \n", type->name);
+#endif
+      }
+    } else {
+      type = swig_module.type_initial[i];
+    }
+
+    /* Insert casting types */
+    cast = swig_module.cast_initial[i];
+    while (cast->type) {
+    
+      /* Don't need to add information already in the list */
+      ret = 0;
+#ifdef SWIGRUNTIME_DEBUG
+      printf("SWIG_InitializeModule: look cast %s\n", cast->type->name);
+#endif
+      if (swig_module.next != &swig_module) {
+        ret = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, cast->type->name);
+#ifdef SWIGRUNTIME_DEBUG
+       if (ret) printf("SWIG_InitializeModule: found cast %s\n", ret->name);
+#endif
+      }
+      if (ret) {
+       if (type == swig_module.type_initial[i]) {
+#ifdef SWIGRUNTIME_DEBUG
+         printf("SWIG_InitializeModule: skip old type %s\n", ret->name);
+#endif
+         cast->type = ret;
+         ret = 0;
+       } else {
+         /* Check for casting already in the list */
+         swig_cast_info *ocast = SWIG_TypeCheck(ret->name, type);
+#ifdef SWIGRUNTIME_DEBUG
+         if (ocast) printf("SWIG_InitializeModule: skip old cast %s\n", ret->name);
+#endif
+         if (!ocast) ret = 0;
+       }
+      }
+
+      if (!ret) {
+#ifdef SWIGRUNTIME_DEBUG
+       printf("SWIG_InitializeModule: adding cast %s\n", cast->type->name);
+#endif
+        if (type->cast) {
+          type->cast->prev = cast;
+          cast->next = type->cast;
+        }
+        type->cast = cast;
+      }
+      cast++;
+    }
+    /* Set entry in modules->types array equal to the type */
+    swig_module.types[i] = type;
+  }
+  swig_module.types[i] = 0;
+
+#ifdef SWIGRUNTIME_DEBUG
+  printf("**** SWIG_InitializeModule: Cast List ******\n");
+  for (i = 0; i < swig_module.size; ++i) {
+    int j = 0;
+    swig_cast_info *cast = swig_module.cast_initial[i];
+    printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name);
+    while (cast->type) {
+      printf("SWIG_InitializeModule: cast type %s\n", cast->type->name);
+      cast++;
+      ++j;
+    }
+  printf("---- Total casts: %d\n",j);
+  }
+  printf("**** SWIG_InitializeModule: Cast List ******\n");
+#endif
+}
+
+/* This function will propagate the clientdata field of type to
+* any new swig_type_info structures that have been added into the list
+* of equivalent types.  It is like calling
+* SWIG_TypeClientData(type, clientdata) a second time.
+*/
+SWIGRUNTIME void
+SWIG_PropagateClientData(void) {
+  size_t i;
+  swig_cast_info *equiv;
+  static int init_run = 0;
+
+  if (init_run) return;
+  init_run = 1;
+
+  for (i = 0; i < swig_module.size; i++) {
+    if (swig_module.types[i]->clientdata) {
+      equiv = swig_module.types[i]->cast;
+      while (equiv) {
+        if (!equiv->converter) {
+          if (equiv->type && !equiv->type->clientdata)
+            SWIG_TypeClientData(equiv->type, swig_module.types[i]->clientdata);
+        }
+        equiv = equiv->next;
+      }
+    }
+  }
+}
+
+#ifdef __cplusplus
+#if 0
+{ /* c-mode */
+#endif
+}
+#endif
+
+
+
+static void SWIG_init_user(octave_swig_type* module_ns);
+
+DEFUN_DLD (SWIG_name,args,nargout,SWIG_name_d) {
+  static bool already_init=false;
+  if (already_init)
+    return octave_value_list();
+  already_init=true;
+
+  octave_swig_ref::register_type();
+  octave_swig_packed::register_type();
+  SWIG_InitializeModule(0);
+  SWIG_PropagateClientData();
+  
+  install_builtin_function(swig_type,"swig_type",std::string());
+  install_builtin_function(swig_typequery,"swig_typequery",std::string());
+  install_builtin_function(swig_this,"swig_this",std::string());
+  install_builtin_function(swig_subclass,"subclass",std::string());
+
+  bool global_option=true; // * swig cli option should control this default
+  for (int j=0;j<args.length();++j)
+    if (args(j).is_string()&&args(j).string_value()=="noglobal")
+      global_option=true;
+    else if (args(j).is_string()&&args(j).string_value()=="noglobal")
+      global_option=false;
+
+  octave_swig_type* cvar_ns=new octave_swig_type;
+  for (int j=0;swig_globals[j].name;++j)
+    if (swig_globals[j].get_method)
+      cvar_ns->assign(swig_globals[j].name,&swig_globals[j]);
+
+  octave_swig_type* module_ns=new octave_swig_type(0, 0, 0, true);
+  module_ns->assign("cvar",Swig::swig_value_ref(cvar_ns));
+  for (int j=0;swig_globals[j].name;++j)
+    if (swig_globals[j].method)
+      module_ns->assign(swig_globals[j].name,&swig_globals[j]);
+
+  // * need better solution here; swig_type -> octave_class mapping is 
+  // * really n-to-1, in some cases such as template partial spec, etc. 
+  // * see failing tests.
+  for (int j=0;swig_types[j];++j)
+    if (swig_types[j]->clientdata) {
+      swig_octave_class* c=(swig_octave_class*)swig_types[j]->clientdata;
+      module_ns->assign(c->name,
+                       Swig::swig_value_ref
+                       (new octave_swig_type(0,swig_types[j])));
+    }
+
+  SWIG_init_user(module_ns);
+
+  SWIG_InstallOps(octave_swig_ref::static_type_id());
+
+  // the incref is necessary so install_global doesn't destroy module_ns,
+  // as it would if it installed something with the same name as the module.
+  module_ns->incref();
+  if (global_option)
+    module_ns->install_global();
+  module_ns->decref();
+
+#if USE_OCTAVE_API_VERSION<37
+  link_to_global_variable(curr_sym_tab->lookup(SWIG_name_d,true));
+#else
+  symbol_table::varref(SWIG_name_d);
+  symbol_table::mark_global(SWIG_name_d);
+#endif
+  set_global_value(SWIG_name_d,Swig::swig_value_ref(module_ns));
+
+#if USE_OCTAVE_API_VERSION>=37
+  mlock();
+#endif
+
+  return octave_value_list();
+}
+
+// workaround bug in octave where installing global variable of custom type and then
+// exiting without explicitly clearing the variable causes octave to segfault.
+#if USE_OCTAVE_API_VERSION>=37
+struct oct_file_unload {
+  ~oct_file_unload() {
+    string_vector vars = symbol_table::global_variable_names();
+    for (int i = 0; i < vars.length(); i++)
+      symbol_table::clear_global(vars[i]);
+  }
+};
+static oct_file_unload __unload;
+#endif
+
+
+static void SWIG_init_user(octave_swig_type* module_ns)
+{
+  SWIG_Octave_SetConstant(module_ns,"CV_WINDOW_AUTOSIZE",SWIG_From_int((int)(1)));
+  SWIG_Octave_SetConstant(module_ns,"CV_EVENT_MOUSEMOVE",SWIG_From_int((int)(0)));
+  SWIG_Octave_SetConstant(module_ns,"CV_EVENT_LBUTTONDOWN",SWIG_From_int((int)(1)));
+  SWIG_Octave_SetConstant(module_ns,"CV_EVENT_RBUTTONDOWN",SWIG_From_int((int)(2)));
+  SWIG_Octave_SetConstant(module_ns,"CV_EVENT_MBUTTONDOWN",SWIG_From_int((int)(3)));
+  SWIG_Octave_SetConstant(module_ns,"CV_EVENT_LBUTTONUP",SWIG_From_int((int)(4)));
+  SWIG_Octave_SetConstant(module_ns,"CV_EVENT_RBUTTONUP",SWIG_From_int((int)(5)));
+  SWIG_Octave_SetConstant(module_ns,"CV_EVENT_MBUTTONUP",SWIG_From_int((int)(6)));
+  SWIG_Octave_SetConstant(module_ns,"CV_EVENT_LBUTTONDBLCLK",SWIG_From_int((int)(7)));
+  SWIG_Octave_SetConstant(module_ns,"CV_EVENT_RBUTTONDBLCLK",SWIG_From_int((int)(8)));
+  SWIG_Octave_SetConstant(module_ns,"CV_EVENT_MBUTTONDBLCLK",SWIG_From_int((int)(9)));
+  SWIG_Octave_SetConstant(module_ns,"CV_EVENT_FLAG_LBUTTON",SWIG_From_int((int)(1)));
+  SWIG_Octave_SetConstant(module_ns,"CV_EVENT_FLAG_RBUTTON",SWIG_From_int((int)(2)));
+  SWIG_Octave_SetConstant(module_ns,"CV_EVENT_FLAG_MBUTTON",SWIG_From_int((int)(4)));
+  SWIG_Octave_SetConstant(module_ns,"CV_EVENT_FLAG_CTRLKEY",SWIG_From_int((int)(8)));
+  SWIG_Octave_SetConstant(module_ns,"CV_EVENT_FLAG_SHIFTKEY",SWIG_From_int((int)(16)));
+  SWIG_Octave_SetConstant(module_ns,"CV_EVENT_FLAG_ALTKEY",SWIG_From_int((int)(32)));
+  SWIG_Octave_SetConstant(module_ns,"CV_LOAD_IMAGE_UNCHANGED",SWIG_From_int((int)(-1)));
+  SWIG_Octave_SetConstant(module_ns,"CV_LOAD_IMAGE_GRAYSCALE",SWIG_From_int((int)(0)));
+  SWIG_Octave_SetConstant(module_ns,"CV_LOAD_IMAGE_COLOR",SWIG_From_int((int)(1)));
+  SWIG_Octave_SetConstant(module_ns,"CV_LOAD_IMAGE_ANYDEPTH",SWIG_From_int((int)(2)));
+  SWIG_Octave_SetConstant(module_ns,"CV_LOAD_IMAGE_ANYCOLOR",SWIG_From_int((int)(4)));
+  SWIG_Octave_SetConstant(module_ns,"CV_IMWRITE_JPEG_QUALITY",SWIG_From_int((int)(1)));
+  SWIG_Octave_SetConstant(module_ns,"CV_IMWRITE_PNG_COMPRESSION",SWIG_From_int((int)(16)));
+  SWIG_Octave_SetConstant(module_ns,"CV_IMWRITE_PXM_BINARY",SWIG_From_int((int)(32)));
+  SWIG_Octave_SetConstant(module_ns,"CV_CVTIMG_FLIP",SWIG_From_int((int)(1)));
+  SWIG_Octave_SetConstant(module_ns,"CV_CVTIMG_SWAP_RB",SWIG_From_int((int)(2)));
+  SWIG_Octave_SetConstant(module_ns,"CV_CAP_ANY",SWIG_From_int((int)(0)));
+  SWIG_Octave_SetConstant(module_ns,"CV_CAP_MIL",SWIG_From_int((int)(100)));
+  SWIG_Octave_SetConstant(module_ns,"CV_CAP_VFW",SWIG_From_int((int)(200)));
+  SWIG_Octave_SetConstant(module_ns,"CV_CAP_V4L",SWIG_From_int((int)(200)));
+  SWIG_Octave_SetConstant(module_ns,"CV_CAP_V4L2",SWIG_From_int((int)(200)));
+  SWIG_Octave_SetConstant(module_ns,"CV_CAP_FIREWARE",SWIG_From_int((int)(300)));
+  SWIG_Octave_SetConstant(module_ns,"CV_CAP_FIREWIRE",SWIG_From_int((int)(300)));
+  SWIG_Octave_SetConstant(module_ns,"CV_CAP_IEEE1394",SWIG_From_int((int)(300)));
+  SWIG_Octave_SetConstant(module_ns,"CV_CAP_DC1394",SWIG_From_int((int)(300)));
+  SWIG_Octave_SetConstant(module_ns,"CV_CAP_CMU1394",SWIG_From_int((int)(300)));
+  SWIG_Octave_SetConstant(module_ns,"CV_CAP_STEREO",SWIG_From_int((int)(400)));
+  SWIG_Octave_SetConstant(module_ns,"CV_CAP_TYZX",SWIG_From_int((int)(400)));
+  SWIG_Octave_SetConstant(module_ns,"CV_TYZX_LEFT",SWIG_From_int((int)(400)));
+  SWIG_Octave_SetConstant(module_ns,"CV_TYZX_RIGHT",SWIG_From_int((int)(401)));
+  SWIG_Octave_SetConstant(module_ns,"CV_TYZX_COLOR",SWIG_From_int((int)(402)));
+  SWIG_Octave_SetConstant(module_ns,"CV_TYZX_Z",SWIG_From_int((int)(403)));
+  SWIG_Octave_SetConstant(module_ns,"CV_CAP_QT",SWIG_From_int((int)(500)));
+  SWIG_Octave_SetConstant(module_ns,"CV_CAP_UNICAP",SWIG_From_int((int)(600)));
+  SWIG_Octave_SetConstant(module_ns,"CV_CAP_DSHOW",SWIG_From_int((int)(700)));
+  SWIG_Octave_SetConstant(module_ns,"CV_CAP_PROP_POS_MSEC",SWIG_From_int((int)(0)));
+  SWIG_Octave_SetConstant(module_ns,"CV_CAP_PROP_POS_FRAMES",SWIG_From_int((int)(1)));
+  SWIG_Octave_SetConstant(module_ns,"CV_CAP_PROP_POS_AVI_RATIO",SWIG_From_int((int)(2)));
+  SWIG_Octave_SetConstant(module_ns,"CV_CAP_PROP_FRAME_WIDTH",SWIG_From_int((int)(3)));
+  SWIG_Octave_SetConstant(module_ns,"CV_CAP_PROP_FRAME_HEIGHT",SWIG_From_int((int)(4)));
+  SWIG_Octave_SetConstant(module_ns,"CV_CAP_PROP_FPS",SWIG_From_int((int)(5)));
+  SWIG_Octave_SetConstant(module_ns,"CV_CAP_PROP_FOURCC",SWIG_From_int((int)(6)));
+  SWIG_Octave_SetConstant(module_ns,"CV_CAP_PROP_FRAME_COUNT",SWIG_From_int((int)(7)));
+  SWIG_Octave_SetConstant(module_ns,"CV_CAP_PROP_FORMAT",SWIG_From_int((int)(8)));
+  SWIG_Octave_SetConstant(module_ns,"CV_CAP_PROP_MODE",SWIG_From_int((int)(9)));
+  SWIG_Octave_SetConstant(module_ns,"CV_CAP_PROP_BRIGHTNESS",SWIG_From_int((int)(10)));
+  SWIG_Octave_SetConstant(module_ns,"CV_CAP_PROP_CONTRAST",SWIG_From_int((int)(11)));
+  SWIG_Octave_SetConstant(module_ns,"CV_CAP_PROP_SATURATION",SWIG_From_int((int)(12)));
+  SWIG_Octave_SetConstant(module_ns,"CV_CAP_PROP_HUE",SWIG_From_int((int)(13)));
+  SWIG_Octave_SetConstant(module_ns,"CV_CAP_PROP_GAIN",SWIG_From_int((int)(14)));
+  SWIG_Octave_SetConstant(module_ns,"CV_CAP_PROP_EXPOSURE",SWIG_From_int((int)(15)));
+  SWIG_Octave_SetConstant(module_ns,"CV_CAP_PROP_CONVERT_RGB",SWIG_From_int((int)(16)));
+  SWIG_Octave_SetConstant(module_ns,"CV_CAP_PROP_WHITE_BALANCE",SWIG_From_int((int)(17)));
+  SWIG_Octave_SetConstant(module_ns,"CV_CAP_PROP_RECTIFICATION",SWIG_From_int((int)(18)));
+  SWIG_Octave_SetConstant(module_ns,"CV_FOURCC_PROMPT",SWIG_From_int((int)(-1)));
+  SWIG_Octave_SetConstant(module_ns,"HG_AUTOSIZE",SWIG_From_int((int)(1)));
+}
+