/* ----------------------------------------------------------------------------
 * This file was automatically generated by SWIG (http://www.swig.org).
 * Version 1.3.27
 * 
 * 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. 
 * ----------------------------------------------------------------------------- */


#ifdef __cplusplus
template<class T> class SwigValueWrapper {
    T *tt;
public:
    SwigValueWrapper() : tt(0) { }
    SwigValueWrapper(const SwigValueWrapper<T>& rhs) : tt(new T(*rhs.tt)) { }
    SwigValueWrapper(const T& t) : tt(new T(t)) { }
    ~SwigValueWrapper() { delete tt; } 
    SwigValueWrapper& operator=(const T& t) { delete tt; tt = new T(t); return *this; }
    operator T&() const { return *tt; }
    T *operator&() { return tt; }
private:
    SwigValueWrapper& operator=(const SwigValueWrapper<T>& rhs);
};
#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
#  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__) || defined(__ICC)
#   define SWIGUNUSED __attribute__ ((unused)) 
# else
#   define 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 for Windows DLLs */
#ifndef SWIGEXPORT
# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
#   if defined(STATIC_LINKED)
#     define SWIGEXPORT
#   else
#     define SWIGEXPORT __declspec(dllexport)
#   endif
# else
#   define SWIGEXPORT
# endif
#endif

/* calling conventions for Windows */
#ifndef SWIGSTDCALL
# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
#   define SWIGSTDCALL __stdcall
# else
#   define SWIGSTDCALL
# endif 
#endif


/***********************************************************************
 * swigrun.swg
 *
 *     This file contains generic CAPI 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 "2"

/* 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 is strictly necessary, ie, if you have problems
  with your compiler or so.
*/

#ifndef SWIGRUNTIME
# define SWIGRUNTIME SWIGINTERN
#endif

#ifndef SWIGRUNTIMEINLINE
# define SWIGRUNTIMEINLINE SWIGRUNTIME SWIGINLINE
#endif

#include <string.h>

#ifdef __cplusplus
extern "C" {
#endif

typedef void *(*swig_converter_func)(void *);
typedef struct swig_type_info *(*swig_dycast_func)(void **);

/* Structure to store inforomation 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 */
} 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 (int)(*f1 - *f2);
  }
  return (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;
}


/* think of this as a c++ template<> or a scheme macro */
#define SWIG_TypeCheck_Template(comparison, ty)         \
  if (ty) {                                             \
    swig_cast_info *iter = ty->cast;                    \
    while (iter) {                                      \
      if (comparison) {                                 \
        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

/*
  Check the typename
*/
SWIGRUNTIME swig_cast_info *
SWIG_TypeCheck(const char *c, swig_type_info *ty) {
  SWIG_TypeCheck_Template(strcmp(iter->type->name, c) == 0, ty);
}

/* Same as previous function, except strcmp is replaced with a pointer comparison */
SWIGRUNTIME swig_cast_info *
SWIG_TypeCheckStruct(swig_type_info *from, swig_type_info *into) {
  SWIG_TypeCheck_Template(iter->type == from, into);
}

/*
  Cast a pointer up an inheritance hierarchy
*/
SWIGRUNTIMEINLINE void *
SWIG_TypeCast(swig_cast_info *ty, void *ptr) {
  return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr);
}

/* 
   Dynamic pointer casting. Down an inheritance hierarchy
*/
SWIGRUNTIME swig_type_info *
SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr) {
  swig_type_info *lastty = ty;
  if (!ty || !ty->dcast) return ty;
  while (ty && (ty->dcast)) {
    ty = (*ty->dcast)(ptr);
    if (ty) lastty = ty;
  }
  return lastty;
}

/*
  Return the name associated with this type
*/
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->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;
  }
}

/*
  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 = 0;
    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

/* ---------------------------------------------------------------------- -*- c -*-
 * perl5.swg
 *
 * Perl5 runtime library
 * $Header: /cvsroot/openbabel/openbabel/scripts/perl/openbabel_perl.cpp,v 1.2 2005/11/18 00:53:08 ghutchis Exp $
 * ----------------------------------------------------------------------------- */

#define SWIGPERL
#define SWIGPERL5
#ifdef __cplusplus
/* Needed on some windows machines---since MS plays funny games with the header files under C++ */
#include <math.h>
#include <stdlib.h>
extern "C" {
#endif
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"

/* Get rid of free and malloc defined by perl */
#undef free
#undef malloc

#ifndef pTHX_
#define pTHX_
#endif

#include <string.h>
#ifdef __cplusplus
}
#endif

/* Macro to call an XS function */

#ifdef PERL_OBJECT 
#  define SWIG_CALLXS(_name) _name(cv,pPerl) 
#else 
#  ifndef MULTIPLICITY 
#    define SWIG_CALLXS(_name) _name(cv) 
#  else 
#    define SWIG_CALLXS(_name) _name(PERL_GET_THX, cv) 
#  endif 
#endif 

/* Contract support */

#define SWIG_contract_assert(expr,msg) if (!(expr)) { SWIG_croak(msg); } else

/* Note: SwigMagicFuncHack is a typedef used to get the C++ compiler to just shut up already */

#ifdef PERL_OBJECT
#define MAGIC_PPERL  CPerlObj *pPerl = (CPerlObj *) this;
typedef int (CPerlObj::*SwigMagicFunc)(SV *, MAGIC *);

#ifdef __cplusplus
extern "C" {
#endif
typedef int (CPerlObj::*SwigMagicFuncHack)(SV *, MAGIC *);
#ifdef __cplusplus
}
#endif

#define SWIG_MAGIC(a,b) (SV *a, MAGIC *b)
#define SWIGCLASS_STATIC
#else
#define MAGIC_PPERL
#define SWIGCLASS_STATIC static
#ifndef MULTIPLICITY
#define SWIG_MAGIC(a,b) (SV *a, MAGIC *b)
typedef int (*SwigMagicFunc)(SV *, MAGIC *);

#ifdef __cplusplus
extern "C" {
#endif
typedef int (*SwigMagicFuncHack)(SV *, MAGIC *);
#ifdef __cplusplus
}
#endif


#else
#define SWIG_MAGIC(a,b) (struct interpreter *interp, SV *a, MAGIC *b)
typedef int (*SwigMagicFunc)(struct interpreter *, SV *, MAGIC *);
#ifdef __cplusplus
extern "C" {
#endif
typedef int (*SwigMagicFuncHack)(struct interpreter *, SV *, MAGIC *);
#ifdef __cplusplus
}
#endif

#endif
#endif

#if defined(WIN32) && defined(PERL_OBJECT) && !defined(PerlIO_exportFILE)
#define PerlIO_exportFILE(fh,fl) (FILE*)(fh)
#endif

/* Modifications for newer Perl 5.005 releases */

#if !defined(PERL_REVISION) || ((PERL_REVISION >= 5) && ((PERL_VERSION < 5) || ((PERL_VERSION == 5) && (PERL_SUBVERSION < 50))))
#  ifndef PL_sv_yes
#    define PL_sv_yes sv_yes
#  endif
#  ifndef PL_sv_undef
#    define PL_sv_undef sv_undef
#  endif
#  ifndef PL_na
#    define PL_na na
#  endif
#endif

#include <stdlib.h>

#ifdef __cplusplus
extern "C" {
#endif

#define SWIG_OWNER 1
#define SWIG_SHADOW 2

/* Common SWIG API */

#ifdef PERL_OBJECT
#  define SWIG_ConvertPtr(obj, pp, type, flags) \
     SWIG_Perl_ConvertPtr(pPerl, obj, pp, type, flags)
#  define SWIG_NewPointerObj(p, type, flags) \
     SWIG_Perl_NewPointerObj(pPerl, p, type, flags)
#  define SWIG_MakePackedObj(sv, p, s, type)	\
     SWIG_Perl_MakePackedObj(pPerl, sv, p, s, type)
#  define SWIG_ConvertPacked(obj, p, s, type, flags) \
     SWIG_Perl_ConvertPacked(pPerl, obj, p, s, type, flags)

#else
#  define SWIG_ConvertPtr(obj, pp, type, flags) \
     SWIG_Perl_ConvertPtr(obj, pp, type, flags)
#  define SWIG_NewPointerObj(p, type, flags) \
     SWIG_Perl_NewPointerObj(p, type, flags)
#  define SWIG_MakePackedObj(sv, p, s, type)	\
     SWIG_Perl_MakePackedObj(sv, p, s, type )
#  define SWIG_ConvertPacked(obj, p, s, type, flags) \
     SWIG_Perl_ConvertPacked(obj, p, s, type, flags)
#endif

/* Runtime API */
#define SWIG_GetModule(clientdata) SWIG_Perl_GetModule()
#define SWIG_SetModule(clientdata, pointer) SWIG_Perl_SetModule(pointer)

/* Perl-specific API */
#ifdef PERL_OBJECT
#  define SWIG_MakePtr(sv, ptr, type, flags) \
     SWIG_Perl_MakePtr(pPerl, sv, ptr, type, flags)
#  define SWIG_SetError(str) \
     SWIG_Perl_SetError(pPerl, str)
#else
#  define SWIG_MakePtr(sv, ptr, type, flags) \
     SWIG_Perl_MakePtr(sv, ptr, type, flags)
#  define SWIG_SetError(str) \
     SWIG_Perl_SetError(str)
#  define SWIG_SetErrorSV(str) \
     SWIG_Perl_SetErrorSV(str)
#endif

#define SWIG_SetErrorf SWIG_Perl_SetErrorf


#ifdef PERL_OBJECT
#  define SWIG_MAYBE_PERL_OBJECT CPerlObj *pPerl,
#else
#  define SWIG_MAYBE_PERL_OBJECT
#endif

static swig_cast_info *
SWIG_Perl_TypeCheckRV(SWIG_MAYBE_PERL_OBJECT SV *rv, swig_type_info *ty) {
  SWIG_TypeCheck_Template(sv_derived_from(rv, (char *) iter->type->name), ty);
}

/* Function for getting a pointer value */

static int
SWIG_Perl_ConvertPtr(SWIG_MAYBE_PERL_OBJECT SV *sv, void **ptr, swig_type_info *_t, int flags) {
  swig_cast_info *tc;
  void *voidptr = (void *)0;

  /* If magical, apply more magic */
  if (SvGMAGICAL(sv))
    mg_get(sv);

  /* Check to see if this is an object */
  if (sv_isobject(sv)) {
    SV *tsv = (SV*) SvRV(sv);
    IV tmp = 0;
    if ((SvTYPE(tsv) == SVt_PVHV)) {
      MAGIC *mg;
      if (SvMAGICAL(tsv)) {
        mg = mg_find(tsv,'P');
        if (mg) {
          sv = mg->mg_obj;
          if (sv_isobject(sv)) {
            tmp = SvIV((SV*)SvRV(sv));
          }
        }
      } else {
        return -1;
      }
    } else {
      tmp = SvIV((SV*)SvRV(sv));
    }
    voidptr = (void *)tmp;
    if (!_t) {
      *(ptr) = voidptr;
      return 0;
    }
  } else if (! SvOK(sv)) {            /* Check for undef */
    *(ptr) = (void *) 0;
    return 0;
  } else if (SvTYPE(sv) == SVt_RV) {  /* Check for NULL pointer */
    *(ptr) = (void *) 0;
    if (!SvROK(sv))
      return 0;
    else
      return -1;
  } else {                            /* Don't know what it is */
    *(ptr) = (void *) 0;
    return -1;
  }
  if (_t) {
    /* Now see if the types match */
    char *_c = HvNAME(SvSTASH(SvRV(sv)));
    tc = SWIG_TypeCheck(_c,_t);
    if (!tc) {
      *ptr = voidptr;
      return -1;
    }
    *ptr = SWIG_TypeCast(tc,voidptr);
    return 0;
  }
  *ptr = voidptr;
  return 0;
}

static void
SWIG_Perl_MakePtr(SWIG_MAYBE_PERL_OBJECT SV *sv, void *ptr, swig_type_info *t, int flags) {
  if (ptr && (flags & SWIG_SHADOW)) {
    SV *self;
    SV *obj=newSV(0);
    HV *hash=newHV();
    HV *stash;
    sv_setref_pv(obj, (char *) t->name, ptr);
    stash=SvSTASH(SvRV(obj));
    if (flags & SWIG_OWNER) {
      HV *hv;
      GV *gv=*(GV**)hv_fetch(stash, "OWNER", 5, TRUE);
      if (!isGV(gv))
        gv_init(gv, stash, "OWNER", 5, FALSE);
      hv=GvHVn(gv);
      hv_store_ent(hv, obj, newSViv(1), 0);
    }
    sv_magic((SV *)hash, (SV *)obj, 'P', Nullch, 0);
    SvREFCNT_dec(obj);
    self=newRV_noinc((SV *)hash);
    sv_setsv(sv, self);
    SvREFCNT_dec((SV *)self);
    sv_bless(sv, stash);
  }
  else {
    sv_setref_pv(sv, (char *) t->name, ptr);
  }
}

static SWIGINLINE SV *
SWIG_Perl_NewPointerObj(SWIG_MAYBE_PERL_OBJECT void *ptr, swig_type_info *t, int flags) {
  SV *result = sv_newmortal();
  SWIG_MakePtr(result, ptr, t, flags);
  return result;
}

static void
  SWIG_Perl_MakePackedObj(SWIG_MAYBE_PERL_OBJECT SV *sv, void *ptr, int sz, swig_type_info *type) {
  char result[1024];
  char *r = result;
  if ((2*sz + 1 + strlen(type->name)) > 1000) return;
  *(r++) = '_';
  r = SWIG_PackData(r,ptr,sz);
  strcpy(r,type->name);
  sv_setpv(sv, result);
}

/* Convert a packed value value */
static int
SWIG_Perl_ConvertPacked(SWIG_MAYBE_PERL_OBJECT SV *obj, void *ptr, int sz, swig_type_info *ty, int flags) {
  swig_cast_info *tc;
  const char  *c = 0;

  if ((!obj) || (!SvOK(obj))) return -1;
  c = SvPV(obj, PL_na);
  /* Pointer values must start with leading underscore */
  if (*c != '_') return -1;
  c++;
  c = SWIG_UnpackData(c,ptr,sz);
  if (ty) {
    tc = SWIG_TypeCheck(c,ty);
    if (!tc) return -1;
  }
  return 0;
}

static SWIGINLINE void
SWIG_Perl_SetError(SWIG_MAYBE_PERL_OBJECT const char *error) {
  if (error) sv_setpv(perl_get_sv("@", TRUE), error);
}

static SWIGINLINE void
SWIG_Perl_SetErrorSV(SWIG_MAYBE_PERL_OBJECT SV *error) {
  if (error) sv_setsv(perl_get_sv("@", TRUE), error);
}

static void
SWIG_Perl_SetErrorf(const char *fmt, ...) {
  va_list args;
  va_start(args, fmt);
  sv_vsetpvfn(perl_get_sv("@", TRUE), fmt, strlen(fmt), &args, Null(SV**), 0, Null(bool*));
  va_end(args);
}

/* Macros for low-level exception handling */
#define SWIG_fail       goto fail
#define SWIG_croak(x)   { SWIG_SetError(x); goto fail; }
#define SWIG_croakSV(x) { SWIG_SetErrorSV(x); goto fail; }
/* most preprocessors do not support vararg macros :-( */
/* #define SWIG_croakf(x...) { SWIG_SetErrorf(x); goto fail; } */


typedef XS(SwigPerlWrapper);
typedef SwigPerlWrapper *SwigPerlWrapperPtr;

/* Structure for command table */
typedef struct {
  const char         *name;
  SwigPerlWrapperPtr  wrapper;
} swig_command_info;

/* Information for constant table */

#define SWIG_INT     1
#define SWIG_FLOAT   2
#define SWIG_STRING  3
#define SWIG_POINTER 4
#define SWIG_BINARY  5

/* Constant information structure */
typedef struct swig_constant_info {
    int              type;
    const char      *name;
    long             lvalue;
    double           dvalue;
    void            *pvalue;
    swig_type_info **ptype;
} swig_constant_info;

#ifdef __cplusplus
}
#endif

/* Structure for variable table */
typedef struct {
  const char   *name;
  SwigMagicFunc   set;
  SwigMagicFunc   get;
  swig_type_info  **type;
} swig_variable_info;

/* Magic variable code */
#ifndef PERL_OBJECT
#define swig_create_magic(s,a,b,c) _swig_create_magic(s,a,b,c)
  #ifndef MULTIPLICITY
     static void _swig_create_magic(SV *sv, char *name, int (*set)(SV *, MAGIC *), int (*get)(SV *,MAGIC *)) {
  #else
     static void _swig_create_magic(SV *sv, char *name, int (*set)(struct interpreter*, SV *, MAGIC *), int (*get)(struct interpreter*, SV *,MAGIC *)) {
  #endif
#else
#  define swig_create_magic(s,a,b,c) _swig_create_magic(pPerl,s,a,b,c)
static void _swig_create_magic(CPerlObj *pPerl, SV *sv, const char *name, int (CPerlObj::*set)(SV *, MAGIC *), int (CPerlObj::*get)(SV *, MAGIC *)) {
#endif
  MAGIC *mg;
  sv_magic(sv,sv,'U',(char *) name,strlen(name));
  mg = mg_find(sv,'U');
  mg->mg_virtual = (MGVTBL *) malloc(sizeof(MGVTBL));
  mg->mg_virtual->svt_get = (SwigMagicFuncHack) get;
  mg->mg_virtual->svt_set = (SwigMagicFuncHack) set;
  mg->mg_virtual->svt_len = 0;
  mg->mg_virtual->svt_clear = 0;
  mg->mg_virtual->svt_free = 0;
}


static swig_module_info *
SWIG_Perl_GetModule() {
  static void *type_pointer = (void *)0;
  SV *pointer;

  /* first check if pointer already created */
  if (!type_pointer) {
    pointer = get_sv("swig_runtime_data::type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, FALSE);
    if (pointer && SvOK(pointer)) {
      type_pointer = INT2PTR(swig_type_info **, SvIV(pointer));
    }
  }

  return (swig_module_info *) type_pointer;
}

static void
SWIG_Perl_SetModule(swig_module_info *module) {
  SV *pointer;

  /* create a new pointer */
  pointer = get_sv("swig_runtime_data::type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, TRUE);
  sv_setiv(pointer, PTR2IV(module));
}

#ifdef do_open
  #undef do_open
#endif
#ifdef do_close
  #undef do_close
#endif
#ifdef scalar
  #undef scalar
#endif
#ifdef list
  #undef list
#endif
#ifdef apply
  #undef apply
#endif
#ifdef convert
  #undef convert
#endif
#ifdef Error
  #undef Error
#endif
#ifdef form
  #undef form
#endif
#ifdef vform
  #undef vform
#endif
#ifdef LABEL
  #undef LABEL
#endif
#ifdef METHOD
  #undef METHOD
#endif
#ifdef Move
  #undef Move
#endif
#ifdef yylex
  #undef yylex
#endif
#ifdef yyparse
  #undef yyparse
#endif
#ifdef yyerror
  #undef yyerror
#endif
#ifdef invert
  #undef invert
#endif
#ifdef ref
  #undef ref
#endif
#ifdef ENTER
  #undef ENTER
#endif
#ifdef read
  #undef read
#endif
#ifdef write
  #undef write
#endif
#ifdef eof
  #undef eof
#endif
#ifdef bool
  #undef bool
#endif
#ifdef close
  #undef close
#endif
#ifdef rewind
  #undef rewind
#endif



/* -------- TYPES TABLE (BEGIN) -------- */

#define SWIGTYPE_p_OpenBabel__CharPtrLess swig_types[0]
#define SWIGTYPE_p_OpenBabel__FMapType__iterator swig_types[1]
#define SWIGTYPE_p_OpenBabel__OBAngleData swig_types[2]
#define SWIGTYPE_p_OpenBabel__OBAromaticTyper swig_types[3]
#define SWIGTYPE_p_OpenBabel__OBAtom swig_types[4]
#define SWIGTYPE_p_OpenBabel__OBAtomTyper swig_types[5]
#define SWIGTYPE_p_OpenBabel__OBBase swig_types[6]
#define SWIGTYPE_p_OpenBabel__OBBitVec swig_types[7]
#define SWIGTYPE_p_OpenBabel__OBBond swig_types[8]
#define SWIGTYPE_p_OpenBabel__OBChainsParser swig_types[9]
#define SWIGTYPE_p_OpenBabel__OBChiralData swig_types[10]
#define SWIGTYPE_p_OpenBabel__OBCommentData swig_types[11]
#define SWIGTYPE_p_OpenBabel__OBConformerData swig_types[12]
#define SWIGTYPE_p_OpenBabel__OBConversion swig_types[13]
#define SWIGTYPE_p_OpenBabel__OBEdgeBase swig_types[14]
#define SWIGTYPE_p_OpenBabel__OBElement swig_types[15]
#define SWIGTYPE_p_OpenBabel__OBElementTable swig_types[16]
#define SWIGTYPE_p_OpenBabel__OBExternalBondData swig_types[17]
#define SWIGTYPE_p_OpenBabel__OBFormat swig_types[18]
#define SWIGTYPE_p_OpenBabel__OBGenericData swig_types[19]
#define SWIGTYPE_p_OpenBabel__OBGlobalDataBase swig_types[20]
#define SWIGTYPE_p_OpenBabel__OBGraphBase swig_types[21]
#define SWIGTYPE_p_OpenBabel__OBInternalCoord swig_types[22]
#define SWIGTYPE_p_OpenBabel__OBIsotopeTable swig_types[23]
#define SWIGTYPE_p_OpenBabel__OBMol swig_types[24]
#define SWIGTYPE_p_OpenBabel__OBNodeBase swig_types[25]
#define SWIGTYPE_p_OpenBabel__OBPairData swig_types[26]
#define SWIGTYPE_p_OpenBabel__OBResidue swig_types[27]
#define SWIGTYPE_p_OpenBabel__OBResidueData swig_types[28]
#define SWIGTYPE_p_OpenBabel__OBRingData swig_types[29]
#define SWIGTYPE_p_OpenBabel__OBSerialNums swig_types[30]
#define SWIGTYPE_p_OpenBabel__OBSymmetryData swig_types[31]
#define SWIGTYPE_p_OpenBabel__OBTorsionData swig_types[32]
#define SWIGTYPE_p_OpenBabel__OBTypeTable swig_types[33]
#define SWIGTYPE_p_OpenBabel__OBUnitCell swig_types[34]
#define SWIGTYPE_p_OpenBabel__OBVirtualBond swig_types[35]
#define SWIGTYPE_p_OpenBabel__vector3 swig_types[36]
#define SWIGTYPE_p_a_3__double swig_types[37]
#define SWIGTYPE_p_double swig_types[38]
#define SWIGTYPE_p_int swig_types[39]
#define SWIGTYPE_p_p_OpenBabel__OBFormat swig_types[40]
#define SWIGTYPE_p_p_char swig_types[41]
#define SWIGTYPE_p_p_double swig_types[42]
#define SWIGTYPE_p_std__istream swig_types[43]
#define SWIGTYPE_p_std__mapTchar_const_p_OpenBabel__OBFormat_p_OpenBabel__CharPtrLess_t swig_types[44]
#define SWIGTYPE_p_std__mapTstd__string_std__string_t swig_types[45]
#define SWIGTYPE_p_std__ostream swig_types[46]
#define SWIGTYPE_p_std__streampos swig_types[47]
#define SWIGTYPE_p_std__string swig_types[48]
#define SWIGTYPE_p_std__type_info swig_types[49]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBAtom_p_t swig_types[50]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBAtom_p_t__iterator swig_types[51]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBBond_p_t swig_types[52]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBEdgeBase_p_t__iterator swig_types[53]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBGenericData_p_t swig_types[54]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBGenericData_p_t__iterator swig_types[55]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBInternalCoord_p_t swig_types[56]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBInternalCoord_p_t__iterator swig_types[57]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBNodeBase_p_t swig_types[58]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBNodeBase_p_t__iterator swig_types[59]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBResidue_p_t__iterator swig_types[60]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBRing_p_t swig_types[61]
#define SWIGTYPE_p_std__vectorTdouble_p_t swig_types[62]
#define SWIGTYPE_p_std__vectorTdouble_p_t__iterator swig_types[63]
#define SWIGTYPE_p_std__vectorTdouble_t swig_types[64]
#define SWIGTYPE_p_std__vectorTint_t swig_types[65]
#define SWIGTYPE_p_std__vectorTstd__string_t swig_types[66]
#define SWIGTYPE_p_std__vectorTstd__vectorTint_t_t swig_types[67]
#define SWIGTYPE_p_std__vectorTunsigned_int_t swig_types[68]
static swig_type_info *swig_types[70];
static swig_module_info swig_module = {swig_types, 69, 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 SWIG_init    boot_Chemistry__OpenBabel

#define SWIG_name   "Chemistry::OpenBabelc::boot_Chemistry__OpenBabel"
#define SWIG_prefix "Chemistry::OpenBabelc::"

#ifdef __cplusplus
extern "C"
#endif
#ifndef PERL_OBJECT
#ifndef MULTIPLICITY
SWIGEXPORT void SWIG_init (CV* cv);
#else
SWIGEXPORT void SWIG_init (pTHXo_ CV* cv);
#endif
#else
SWIGEXPORT void SWIG_init (CV *cv, CPerlObj *);
#endif


#include "mol.h"
#include "obconversion.h"
#include "data.h"


#define  SWIG_MemoryError    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_UnknownError  99


#define SWIG_exception(a,b)   SWIG_croak(b)


#include <stdexcept>


#include <string>

double SwigSvToNumber(SV* sv) {
    return SvIOK(sv) ? double(SvIVX(sv)) : SvNVX(sv);
}
std::string SwigSvToString(SV* sv) {
    STRLEN len;
    return SvPV(sv,len);
}
void SwigSvFromString(SV* sv, const std::string& s) {
    sv_setpv(sv,s.c_str());
}


#include <list>
#include <algorithm>
#include <stdexcept>


#include <map>
#include <algorithm>
#include <stdexcept>


#include <vector>
#include <algorithm>
#include <stdexcept>


#include <string>

#ifdef PERL_OBJECT
#define MAGIC_CLASS _wrap_Chemistry::OpenBabel_var::
class _wrap_Chemistry::OpenBabel_var : public CPerlObj {
public:
#else
#define MAGIC_CLASS
#endif
SWIGCLASS_STATIC int swig_magic_readonly(pTHX_ SV *sv, MAGIC *mg) {
    MAGIC_PPERL
    sv = sv; mg = mg;
    croak("Value is read-only.");
    return 0;
}
SWIGCLASS_STATIC int _wrap_set_etab(pTHX_ SV* sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    {
        OpenBabel::OBElementTable * temp;
        if (SWIG_ConvertPtr(sv,(void **) &temp, SWIGTYPE_p_OpenBabel__OBElementTable,0) < 0) {
            croak("Type error in argument $argnum of etab. Expected _p_OpenBabel__OBElementTable");
        }
        OpenBabel::etab = *temp;
    }
    return 1;
}


SWIGCLASS_STATIC int _wrap_val_etab(pTHX_ SV *sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    sv_setiv(SvRV(sv), (IV) &OpenBabel::etab);
    return 1;
}


SWIGCLASS_STATIC int _wrap_set_ttab(pTHX_ SV* sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    {
        OpenBabel::OBTypeTable * temp;
        if (SWIG_ConvertPtr(sv,(void **) &temp, SWIGTYPE_p_OpenBabel__OBTypeTable,0) < 0) {
            croak("Type error in argument $argnum of ttab. Expected _p_OpenBabel__OBTypeTable");
        }
        OpenBabel::ttab = *temp;
    }
    return 1;
}


SWIGCLASS_STATIC int _wrap_val_ttab(pTHX_ SV *sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    sv_setiv(SvRV(sv), (IV) &OpenBabel::ttab);
    return 1;
}


SWIGCLASS_STATIC int _wrap_set_isotab(pTHX_ SV* sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    {
        OpenBabel::OBIsotopeTable * temp;
        if (SWIG_ConvertPtr(sv,(void **) &temp, SWIGTYPE_p_OpenBabel__OBIsotopeTable,0) < 0) {
            croak("Type error in argument $argnum of isotab. Expected _p_OpenBabel__OBIsotopeTable");
        }
        OpenBabel::isotab = *temp;
    }
    return 1;
}


SWIGCLASS_STATIC int _wrap_val_isotab(pTHX_ SV *sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    sv_setiv(SvRV(sv), (IV) &OpenBabel::isotab);
    return 1;
}


SWIGCLASS_STATIC int _wrap_set_aromtyper(pTHX_ SV* sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    {
        OpenBabel::OBAromaticTyper * temp;
        if (SWIG_ConvertPtr(sv,(void **) &temp, SWIGTYPE_p_OpenBabel__OBAromaticTyper,0) < 0) {
            croak("Type error in argument $argnum of aromtyper. Expected _p_OpenBabel__OBAromaticTyper");
        }
        OpenBabel::aromtyper = *temp;
    }
    return 1;
}


SWIGCLASS_STATIC int _wrap_val_aromtyper(pTHX_ SV *sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    sv_setiv(SvRV(sv), (IV) &OpenBabel::aromtyper);
    return 1;
}


SWIGCLASS_STATIC int _wrap_set_atomtyper(pTHX_ SV* sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    {
        OpenBabel::OBAtomTyper * temp;
        if (SWIG_ConvertPtr(sv,(void **) &temp, SWIGTYPE_p_OpenBabel__OBAtomTyper,0) < 0) {
            croak("Type error in argument $argnum of atomtyper. Expected _p_OpenBabel__OBAtomTyper");
        }
        OpenBabel::atomtyper = *temp;
    }
    return 1;
}


SWIGCLASS_STATIC int _wrap_val_atomtyper(pTHX_ SV *sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    sv_setiv(SvRV(sv), (IV) &OpenBabel::atomtyper);
    return 1;
}


SWIGCLASS_STATIC int _wrap_set_chainsparser(pTHX_ SV* sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    {
        OpenBabel::OBChainsParser * temp;
        if (SWIG_ConvertPtr(sv,(void **) &temp, SWIGTYPE_p_OpenBabel__OBChainsParser,0) < 0) {
            croak("Type error in argument $argnum of chainsparser. Expected _p_OpenBabel__OBChainsParser");
        }
        OpenBabel::chainsparser = *temp;
    }
    return 1;
}


SWIGCLASS_STATIC int _wrap_val_chainsparser(pTHX_ SV *sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    sv_setiv(SvRV(sv), (IV) &OpenBabel::chainsparser);
    return 1;
}


SWIGCLASS_STATIC int _wrap_set_resdat(pTHX_ SV* sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    {
        OpenBabel::OBResidueData * temp;
        if (SWIG_ConvertPtr(sv,(void **) &temp, SWIGTYPE_p_OpenBabel__OBResidueData,0) < 0) {
            croak("Type error in argument $argnum of resdat. Expected _p_OpenBabel__OBResidueData");
        }
        OpenBabel::resdat = *temp;
    }
    return 1;
}


SWIGCLASS_STATIC int _wrap_val_resdat(pTHX_ SV *sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    sv_setiv(SvRV(sv), (IV) &OpenBabel::resdat);
    return 1;
}




#ifdef PERL_OBJECT
};
#endif

#ifdef __cplusplus
extern "C" {
#endif
XS(_wrap_new_OBGlobalDataBase) {
    {
        OpenBabel::OBGlobalDataBase *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 0) || (items > 0)) {
            SWIG_croak("Usage: new_OBGlobalDataBase();");
        }
        result = (OpenBabel::OBGlobalDataBase *)new OpenBabel::OBGlobalDataBase();
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBGlobalDataBase, SWIG_SHADOW|SWIG_OWNER);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_delete_OBGlobalDataBase) {
    {
        OpenBabel::OBGlobalDataBase *arg1 = (OpenBabel::OBGlobalDataBase *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: delete_OBGlobalDataBase(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBGlobalDataBase,0) < 0) {
                SWIG_croak("Type error in argument 1 of delete_OBGlobalDataBase. Expected _p_OpenBabel__OBGlobalDataBase");
            }
        }
        delete arg1;
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBGlobalDataBase_Init) {
    {
        OpenBabel::OBGlobalDataBase *arg1 = (OpenBabel::OBGlobalDataBase *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBGlobalDataBase_Init(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBGlobalDataBase,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBGlobalDataBase_Init. Expected _p_OpenBabel__OBGlobalDataBase");
            }
        }
        (arg1)->Init();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBGlobalDataBase_GetSize) {
    {
        OpenBabel::OBGlobalDataBase *arg1 = (OpenBabel::OBGlobalDataBase *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBGlobalDataBase_GetSize(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBGlobalDataBase,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBGlobalDataBase_GetSize. Expected _p_OpenBabel__OBGlobalDataBase");
            }
        }
        result = (unsigned int)(arg1)->GetSize();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBGlobalDataBase_SetReadDirectory) {
    {
        OpenBabel::OBGlobalDataBase *arg1 = (OpenBabel::OBGlobalDataBase *) 0 ;
        char *arg2 = (char *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBGlobalDataBase_SetReadDirectory(self,dir);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBGlobalDataBase,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBGlobalDataBase_SetReadDirectory. Expected _p_OpenBabel__OBGlobalDataBase");
            }
        }
        if (!SvOK((SV*) ST(1))) arg2 = 0;
        else arg2 = (char *) SvPV(ST(1), PL_na);
        (arg1)->SetReadDirectory(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBGlobalDataBase_SetEnvironmentVariable) {
    {
        OpenBabel::OBGlobalDataBase *arg1 = (OpenBabel::OBGlobalDataBase *) 0 ;
        char *arg2 = (char *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBGlobalDataBase_SetEnvironmentVariable(self,var);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBGlobalDataBase,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBGlobalDataBase_SetEnvironmentVariable. Expected _p_OpenBabel__OBGlobalDataBase");
            }
        }
        if (!SvOK((SV*) ST(1))) arg2 = 0;
        else arg2 = (char *) SvPV(ST(1), PL_na);
        (arg1)->SetEnvironmentVariable(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBGlobalDataBase_ParseLine) {
    {
        OpenBabel::OBGlobalDataBase *arg1 = (OpenBabel::OBGlobalDataBase *) 0 ;
        char *arg2 = (char *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBGlobalDataBase_ParseLine(self,char const *);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBGlobalDataBase,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBGlobalDataBase_ParseLine. Expected _p_OpenBabel__OBGlobalDataBase");
            }
        }
        if (!SvOK((SV*) ST(1))) arg2 = 0;
        else arg2 = (char *) SvPV(ST(1), PL_na);
        (arg1)->ParseLine((char const *)arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_new_OBElement__SWIG_0) {
    {
        OpenBabel::OBElement *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 0) || (items > 0)) {
            SWIG_croak("Usage: new_OBElement();");
        }
        result = (OpenBabel::OBElement *)new OpenBabel::OBElement();
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBElement, SWIG_SHADOW|SWIG_OWNER);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_new_OBElement__SWIG_1) {
    {
        int arg1 ;
        char *arg2 = (char *) 0 ;
        double arg3 ;
        double arg4 ;
        int arg5 ;
        double arg6 ;
        double arg7 ;
        double arg8 ;
        double arg9 ;
        double arg10 ;
        double arg11 ;
        double arg12 ;
        std::string arg13 ;
        OpenBabel::OBElement *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 13) || (items > 13)) {
            SWIG_croak("Usage: new_OBElement(num,sym,rcov,rvdw,maxbo,mass,elNeg,ionize,elAffin,red,green,blue,name);");
        }
        arg1 = (int) SvIV(ST(0));
        if (!SvOK((SV*) ST(1))) arg2 = 0;
        else arg2 = (char *) SvPV(ST(1), PL_na);
        arg3 = (double) SvNV(ST(2));
        
        arg4 = (double) SvNV(ST(3));
        
        arg5 = (int) SvIV(ST(4));
        arg6 = (double) SvNV(ST(5));
        
        arg7 = (double) SvNV(ST(6));
        
        arg8 = (double) SvNV(ST(7));
        
        arg9 = (double) SvNV(ST(8));
        
        arg10 = (double) SvNV(ST(9));
        
        arg11 = (double) SvNV(ST(10));
        
        arg12 = (double) SvNV(ST(11));
        
        {
            STRLEN len;
            const char *ptr = SvPV(ST(12), len);
            if (!ptr) {
                SWIG_croak("Undefined variable in argument 13 of new_OBElement.");
            } else {
                arg13 = std::string(ptr, len);
            }
        }
        result = (OpenBabel::OBElement *)new OpenBabel::OBElement(arg1,(char const *)arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBElement, SWIG_SHADOW|SWIG_OWNER);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_new_OBElement) {
    dXSARGS;
    
    if (items == 0) {
        (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_new_OBElement__SWIG_0); return;
    }
    if (items == 13) {
        int _v;
        {
            _v = SvIOK(ST(0)) ? 1 : 0;
        }
        if (_v) {
            {
                _v = SvPOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                {
                    _v = SvNIOK(ST(2)) ? 1 : 0;
                }
                if (_v) {
                    {
                        _v = SvNIOK(ST(3)) ? 1 : 0;
                    }
                    if (_v) {
                        {
                            _v = SvIOK(ST(4)) ? 1 : 0;
                        }
                        if (_v) {
                            {
                                _v = SvNIOK(ST(5)) ? 1 : 0;
                            }
                            if (_v) {
                                {
                                    _v = SvNIOK(ST(6)) ? 1 : 0;
                                }
                                if (_v) {
                                    {
                                        _v = SvNIOK(ST(7)) ? 1 : 0;
                                    }
                                    if (_v) {
                                        {
                                            _v = SvNIOK(ST(8)) ? 1 : 0;
                                        }
                                        if (_v) {
                                            {
                                                _v = SvNIOK(ST(9)) ? 1 : 0;
                                            }
                                            if (_v) {
                                                {
                                                    _v = SvNIOK(ST(10)) ? 1 : 0;
                                                }
                                                if (_v) {
                                                    {
                                                        _v = SvNIOK(ST(11)) ? 1 : 0;
                                                    }
                                                    if (_v) {
                                                        {
                                                            _v = SvPOK(ST(12)) ? 1 : 0;
                                                        }
                                                        if (_v) {
                                                            (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_new_OBElement__SWIG_1); return;
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    
    croak("No matching function for overloaded 'new_OBElement'");
    XSRETURN(0);
}


XS(_wrap_OBElement_GetAtomicNum) {
    {
        OpenBabel::OBElement *arg1 = (OpenBabel::OBElement *) 0 ;
        int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBElement_GetAtomicNum(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBElement,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBElement_GetAtomicNum. Expected _p_OpenBabel__OBElement");
            }
        }
        result = (int)(arg1)->GetAtomicNum();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBElement_GetSymbol) {
    {
        OpenBabel::OBElement *arg1 = (OpenBabel::OBElement *) 0 ;
        char *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBElement_GetSymbol(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBElement,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBElement_GetSymbol. Expected _p_OpenBabel__OBElement");
            }
        }
        result = (char *)(arg1)->GetSymbol();
        
        ST(argvi) = sv_newmortal();
        if (result) {
            sv_setpv((SV*)ST(argvi++), (char *) result);
        } else {
            sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBElement_GetCovalentRad) {
    {
        OpenBabel::OBElement *arg1 = (OpenBabel::OBElement *) 0 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBElement_GetCovalentRad(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBElement,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBElement_GetCovalentRad. Expected _p_OpenBabel__OBElement");
            }
        }
        result = (double)(arg1)->GetCovalentRad();
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBElement_GetVdwRad) {
    {
        OpenBabel::OBElement *arg1 = (OpenBabel::OBElement *) 0 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBElement_GetVdwRad(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBElement,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBElement_GetVdwRad. Expected _p_OpenBabel__OBElement");
            }
        }
        result = (double)(arg1)->GetVdwRad();
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBElement_GetMass) {
    {
        OpenBabel::OBElement *arg1 = (OpenBabel::OBElement *) 0 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBElement_GetMass(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBElement,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBElement_GetMass. Expected _p_OpenBabel__OBElement");
            }
        }
        result = (double)(arg1)->GetMass();
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBElement_GetMaxBonds) {
    {
        OpenBabel::OBElement *arg1 = (OpenBabel::OBElement *) 0 ;
        int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBElement_GetMaxBonds(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBElement,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBElement_GetMaxBonds. Expected _p_OpenBabel__OBElement");
            }
        }
        result = (int)(arg1)->GetMaxBonds();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBElement_GetElectroNeg) {
    {
        OpenBabel::OBElement *arg1 = (OpenBabel::OBElement *) 0 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBElement_GetElectroNeg(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBElement,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBElement_GetElectroNeg. Expected _p_OpenBabel__OBElement");
            }
        }
        result = (double)(arg1)->GetElectroNeg();
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBElement_GetIonization) {
    {
        OpenBabel::OBElement *arg1 = (OpenBabel::OBElement *) 0 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBElement_GetIonization(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBElement,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBElement_GetIonization. Expected _p_OpenBabel__OBElement");
            }
        }
        result = (double)(arg1)->GetIonization();
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBElement_GetElectronAffinity) {
    {
        OpenBabel::OBElement *arg1 = (OpenBabel::OBElement *) 0 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBElement_GetElectronAffinity(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBElement,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBElement_GetElectronAffinity. Expected _p_OpenBabel__OBElement");
            }
        }
        result = (double)(arg1)->GetElectronAffinity();
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBElement_GetName) {
    {
        OpenBabel::OBElement *arg1 = (OpenBabel::OBElement *) 0 ;
        std::string result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBElement_GetName(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBElement,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBElement_GetName. Expected _p_OpenBabel__OBElement");
            }
        }
        result = (arg1)->GetName();
        
        {
            if (argvi >= items) EXTEND(sp, 1);	// bump stack ptr, if needed
            char *data = const_cast<char*>((&result)->data());
            sv_setpvn(ST(argvi) = sv_newmortal(), data, (&result)->size());
            ++argvi;
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBElement_GetRed) {
    {
        OpenBabel::OBElement *arg1 = (OpenBabel::OBElement *) 0 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBElement_GetRed(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBElement,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBElement_GetRed. Expected _p_OpenBabel__OBElement");
            }
        }
        result = (double)(arg1)->GetRed();
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBElement_GetGreen) {
    {
        OpenBabel::OBElement *arg1 = (OpenBabel::OBElement *) 0 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBElement_GetGreen(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBElement,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBElement_GetGreen. Expected _p_OpenBabel__OBElement");
            }
        }
        result = (double)(arg1)->GetGreen();
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBElement_GetBlue) {
    {
        OpenBabel::OBElement *arg1 = (OpenBabel::OBElement *) 0 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBElement_GetBlue(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBElement,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBElement_GetBlue. Expected _p_OpenBabel__OBElement");
            }
        }
        result = (double)(arg1)->GetBlue();
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_delete_OBElement) {
    {
        OpenBabel::OBElement *arg1 = (OpenBabel::OBElement *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: delete_OBElement(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBElement,0) < 0) {
                SWIG_croak("Type error in argument 1 of delete_OBElement. Expected _p_OpenBabel__OBElement");
            }
        }
        delete arg1;
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_new_OBElementTable) {
    {
        OpenBabel::OBElementTable *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 0) || (items > 0)) {
            SWIG_croak("Usage: new_OBElementTable();");
        }
        result = (OpenBabel::OBElementTable *)new OpenBabel::OBElementTable();
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBElementTable, SWIG_SHADOW|SWIG_OWNER);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_delete_OBElementTable) {
    {
        OpenBabel::OBElementTable *arg1 = (OpenBabel::OBElementTable *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: delete_OBElementTable(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBElementTable,0) < 0) {
                SWIG_croak("Type error in argument 1 of delete_OBElementTable. Expected _p_OpenBabel__OBElementTable");
            }
        }
        delete arg1;
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBElementTable_ParseLine) {
    {
        OpenBabel::OBElementTable *arg1 = (OpenBabel::OBElementTable *) 0 ;
        char *arg2 = (char *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBElementTable_ParseLine(self,char const *);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBElementTable,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBElementTable_ParseLine. Expected _p_OpenBabel__OBElementTable");
            }
        }
        if (!SvOK((SV*) ST(1))) arg2 = 0;
        else arg2 = (char *) SvPV(ST(1), PL_na);
        (arg1)->ParseLine((char const *)arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBElementTable_GetNumberOfElements) {
    {
        OpenBabel::OBElementTable *arg1 = (OpenBabel::OBElementTable *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBElementTable_GetNumberOfElements(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBElementTable,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBElementTable_GetNumberOfElements. Expected _p_OpenBabel__OBElementTable");
            }
        }
        result = (unsigned int)(arg1)->GetNumberOfElements();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBElementTable_GetSize) {
    {
        OpenBabel::OBElementTable *arg1 = (OpenBabel::OBElementTable *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBElementTable_GetSize(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBElementTable,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBElementTable_GetSize. Expected _p_OpenBabel__OBElementTable");
            }
        }
        result = (unsigned int)(arg1)->GetSize();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBElementTable_GetAtomicNum__SWIG_0) {
    {
        OpenBabel::OBElementTable *arg1 = (OpenBabel::OBElementTable *) 0 ;
        char *arg2 = (char *) 0 ;
        int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBElementTable_GetAtomicNum(self,char const *);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBElementTable,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBElementTable_GetAtomicNum. Expected _p_OpenBabel__OBElementTable");
            }
        }
        if (!SvOK((SV*) ST(1))) arg2 = 0;
        else arg2 = (char *) SvPV(ST(1), PL_na);
        result = (int)(arg1)->GetAtomicNum((char const *)arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBElementTable_GetAtomicNum__SWIG_1) {
    {
        OpenBabel::OBElementTable *arg1 = (OpenBabel::OBElementTable *) 0 ;
        char *arg2 = (char *) 0 ;
        int *arg3 = 0 ;
        int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBElementTable_GetAtomicNum(self,char const *,iso);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBElementTable,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBElementTable_GetAtomicNum. Expected _p_OpenBabel__OBElementTable");
            }
        }
        if (!SvOK((SV*) ST(1))) arg2 = 0;
        else arg2 = (char *) SvPV(ST(1), PL_na);
        {
            if (SWIG_ConvertPtr(ST(2), (void **) &arg3, SWIGTYPE_p_int,0) < 0) {
                SWIG_croak("Type error in argument 3 of OBElementTable_GetAtomicNum. Expected _p_int");
            }
        }
        result = (int)(arg1)->GetAtomicNum((char const *)arg2,*arg3);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBElementTable_GetAtomicNum) {
    dXSARGS;
    
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBElementTable, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvPOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBElementTable_GetAtomicNum__SWIG_0); return;
            }
        }
    }
    if (items == 3) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBElementTable, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvPOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                {
                    void *tmp;
                    if (SWIG_ConvertPtr(ST(2), (void **) &tmp, SWIGTYPE_p_int, 0) == -1) {
                        _v = 0;
                    } else {
                        _v = 1;
                    }
                }
                if (_v) {
                    (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBElementTable_GetAtomicNum__SWIG_1); return;
                }
            }
        }
    }
    
    croak("No matching function for overloaded 'OBElementTable_GetAtomicNum'");
    XSRETURN(0);
}


XS(_wrap_OBElementTable_GetSymbol) {
    {
        OpenBabel::OBElementTable *arg1 = (OpenBabel::OBElementTable *) 0 ;
        int arg2 ;
        char *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBElementTable_GetSymbol(self,int);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBElementTable,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBElementTable_GetSymbol. Expected _p_OpenBabel__OBElementTable");
            }
        }
        arg2 = (int) SvIV(ST(1));
        result = (char *)(arg1)->GetSymbol(arg2);
        
        ST(argvi) = sv_newmortal();
        if (result) {
            sv_setpv((SV*)ST(argvi++), (char *) result);
        } else {
            sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBElementTable_GetVdwRad) {
    {
        OpenBabel::OBElementTable *arg1 = (OpenBabel::OBElementTable *) 0 ;
        int arg2 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBElementTable_GetVdwRad(self,int);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBElementTable,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBElementTable_GetVdwRad. Expected _p_OpenBabel__OBElementTable");
            }
        }
        arg2 = (int) SvIV(ST(1));
        result = (double)(arg1)->GetVdwRad(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBElementTable_GetCovalentRad) {
    {
        OpenBabel::OBElementTable *arg1 = (OpenBabel::OBElementTable *) 0 ;
        int arg2 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBElementTable_GetCovalentRad(self,int);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBElementTable,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBElementTable_GetCovalentRad. Expected _p_OpenBabel__OBElementTable");
            }
        }
        arg2 = (int) SvIV(ST(1));
        result = (double)(arg1)->GetCovalentRad(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBElementTable_GetMass) {
    {
        OpenBabel::OBElementTable *arg1 = (OpenBabel::OBElementTable *) 0 ;
        int arg2 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBElementTable_GetMass(self,int);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBElementTable,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBElementTable_GetMass. Expected _p_OpenBabel__OBElementTable");
            }
        }
        arg2 = (int) SvIV(ST(1));
        result = (double)(arg1)->GetMass(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBElementTable_CorrectedBondRad__SWIG_0) {
    {
        OpenBabel::OBElementTable *arg1 = (OpenBabel::OBElementTable *) 0 ;
        int arg2 ;
        int arg3 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBElementTable_CorrectedBondRad(self,int,int);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBElementTable,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBElementTable_CorrectedBondRad. Expected _p_OpenBabel__OBElementTable");
            }
        }
        arg2 = (int) SvIV(ST(1));
        arg3 = (int) SvIV(ST(2));
        result = (double)(arg1)->CorrectedBondRad(arg2,arg3);
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBElementTable_CorrectedBondRad__SWIG_1) {
    {
        OpenBabel::OBElementTable *arg1 = (OpenBabel::OBElementTable *) 0 ;
        int arg2 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBElementTable_CorrectedBondRad(self,int);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBElementTable,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBElementTable_CorrectedBondRad. Expected _p_OpenBabel__OBElementTable");
            }
        }
        arg2 = (int) SvIV(ST(1));
        result = (double)(arg1)->CorrectedBondRad(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBElementTable_CorrectedBondRad) {
    dXSARGS;
    
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBElementTable, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvIOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBElementTable_CorrectedBondRad__SWIG_1); return;
            }
        }
    }
    if (items == 3) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBElementTable, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvIOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                {
                    _v = SvIOK(ST(2)) ? 1 : 0;
                }
                if (_v) {
                    (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBElementTable_CorrectedBondRad__SWIG_0); return;
                }
            }
        }
    }
    
    croak("No matching function for overloaded 'OBElementTable_CorrectedBondRad'");
    XSRETURN(0);
}


XS(_wrap_OBElementTable_CorrectedVdwRad__SWIG_0) {
    {
        OpenBabel::OBElementTable *arg1 = (OpenBabel::OBElementTable *) 0 ;
        int arg2 ;
        int arg3 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBElementTable_CorrectedVdwRad(self,int,int);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBElementTable,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBElementTable_CorrectedVdwRad. Expected _p_OpenBabel__OBElementTable");
            }
        }
        arg2 = (int) SvIV(ST(1));
        arg3 = (int) SvIV(ST(2));
        result = (double)(arg1)->CorrectedVdwRad(arg2,arg3);
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBElementTable_CorrectedVdwRad__SWIG_1) {
    {
        OpenBabel::OBElementTable *arg1 = (OpenBabel::OBElementTable *) 0 ;
        int arg2 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBElementTable_CorrectedVdwRad(self,int);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBElementTable,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBElementTable_CorrectedVdwRad. Expected _p_OpenBabel__OBElementTable");
            }
        }
        arg2 = (int) SvIV(ST(1));
        result = (double)(arg1)->CorrectedVdwRad(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBElementTable_CorrectedVdwRad) {
    dXSARGS;
    
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBElementTable, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvIOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBElementTable_CorrectedVdwRad__SWIG_1); return;
            }
        }
    }
    if (items == 3) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBElementTable, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvIOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                {
                    _v = SvIOK(ST(2)) ? 1 : 0;
                }
                if (_v) {
                    (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBElementTable_CorrectedVdwRad__SWIG_0); return;
                }
            }
        }
    }
    
    croak("No matching function for overloaded 'OBElementTable_CorrectedVdwRad'");
    XSRETURN(0);
}


XS(_wrap_OBElementTable_GetMaxBonds) {
    {
        OpenBabel::OBElementTable *arg1 = (OpenBabel::OBElementTable *) 0 ;
        int arg2 ;
        int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBElementTable_GetMaxBonds(self,int);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBElementTable,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBElementTable_GetMaxBonds. Expected _p_OpenBabel__OBElementTable");
            }
        }
        arg2 = (int) SvIV(ST(1));
        result = (int)(arg1)->GetMaxBonds(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBElementTable_GetElectroNeg) {
    {
        OpenBabel::OBElementTable *arg1 = (OpenBabel::OBElementTable *) 0 ;
        int arg2 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBElementTable_GetElectroNeg(self,int);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBElementTable,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBElementTable_GetElectroNeg. Expected _p_OpenBabel__OBElementTable");
            }
        }
        arg2 = (int) SvIV(ST(1));
        result = (double)(arg1)->GetElectroNeg(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBElementTable_GetIonization) {
    {
        OpenBabel::OBElementTable *arg1 = (OpenBabel::OBElementTable *) 0 ;
        int arg2 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBElementTable_GetIonization(self,int);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBElementTable,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBElementTable_GetIonization. Expected _p_OpenBabel__OBElementTable");
            }
        }
        arg2 = (int) SvIV(ST(1));
        result = (double)(arg1)->GetIonization(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBElementTable_GetElectronAffinity) {
    {
        OpenBabel::OBElementTable *arg1 = (OpenBabel::OBElementTable *) 0 ;
        int arg2 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBElementTable_GetElectronAffinity(self,int);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBElementTable,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBElementTable_GetElectronAffinity. Expected _p_OpenBabel__OBElementTable");
            }
        }
        arg2 = (int) SvIV(ST(1));
        result = (double)(arg1)->GetElectronAffinity(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBElementTable_GetRGB) {
    {
        OpenBabel::OBElementTable *arg1 = (OpenBabel::OBElementTable *) 0 ;
        int arg2 ;
        std::vector<double > result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBElementTable_GetRGB(self,int);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBElementTable,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBElementTable_GetRGB. Expected _p_OpenBabel__OBElementTable");
            }
        }
        arg2 = (int) SvIV(ST(1));
        result = (arg1)->GetRGB(arg2);
        
        {
            std::vector<double > * resultobj = new std::vector<double >((std::vector<double > &)result);
            ST(argvi) = sv_newmortal();
            SWIG_MakePtr(ST(argvi++), (void *) resultobj, SWIGTYPE_p_std__vectorTdouble_t, 0|SWIG_OWNER);
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBElementTable_GetName) {
    {
        OpenBabel::OBElementTable *arg1 = (OpenBabel::OBElementTable *) 0 ;
        int arg2 ;
        std::string result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBElementTable_GetName(self,int);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBElementTable,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBElementTable_GetName. Expected _p_OpenBabel__OBElementTable");
            }
        }
        arg2 = (int) SvIV(ST(1));
        result = (arg1)->GetName(arg2);
        
        {
            if (argvi >= items) EXTEND(sp, 1);	// bump stack ptr, if needed
            char *data = const_cast<char*>((&result)->data());
            sv_setpvn(ST(argvi) = sv_newmortal(), data, (&result)->size());
            ++argvi;
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_new_OBIsotopeTable) {
    {
        OpenBabel::OBIsotopeTable *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 0) || (items > 0)) {
            SWIG_croak("Usage: new_OBIsotopeTable();");
        }
        result = (OpenBabel::OBIsotopeTable *)new OpenBabel::OBIsotopeTable();
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBIsotopeTable, SWIG_SHADOW|SWIG_OWNER);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_delete_OBIsotopeTable) {
    {
        OpenBabel::OBIsotopeTable *arg1 = (OpenBabel::OBIsotopeTable *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: delete_OBIsotopeTable(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBIsotopeTable,0) < 0) {
                SWIG_croak("Type error in argument 1 of delete_OBIsotopeTable. Expected _p_OpenBabel__OBIsotopeTable");
            }
        }
        delete arg1;
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBIsotopeTable_GetSize) {
    {
        OpenBabel::OBIsotopeTable *arg1 = (OpenBabel::OBIsotopeTable *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBIsotopeTable_GetSize(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBIsotopeTable,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBIsotopeTable_GetSize. Expected _p_OpenBabel__OBIsotopeTable");
            }
        }
        result = (unsigned int)(arg1)->GetSize();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBIsotopeTable_ParseLine) {
    {
        OpenBabel::OBIsotopeTable *arg1 = (OpenBabel::OBIsotopeTable *) 0 ;
        char *arg2 = (char *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBIsotopeTable_ParseLine(self,char const *);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBIsotopeTable,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBIsotopeTable_ParseLine. Expected _p_OpenBabel__OBIsotopeTable");
            }
        }
        if (!SvOK((SV*) ST(1))) arg2 = 0;
        else arg2 = (char *) SvPV(ST(1), PL_na);
        (arg1)->ParseLine((char const *)arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBIsotopeTable_GetExactMass__SWIG_0) {
    {
        OpenBabel::OBIsotopeTable *arg1 = (OpenBabel::OBIsotopeTable *) 0 ;
        unsigned int arg2 ;
        unsigned int arg3 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBIsotopeTable_GetExactMass(self,atomicNum,isotope);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBIsotopeTable,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBIsotopeTable_GetExactMass. Expected _p_OpenBabel__OBIsotopeTable");
            }
        }
        arg2 = (unsigned int) SvUV(ST(1));
        arg3 = (unsigned int) SvUV(ST(2));
        result = (double)(arg1)->GetExactMass(arg2,arg3);
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBIsotopeTable_GetExactMass__SWIG_1) {
    {
        OpenBabel::OBIsotopeTable *arg1 = (OpenBabel::OBIsotopeTable *) 0 ;
        unsigned int arg2 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBIsotopeTable_GetExactMass(self,atomicNum);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBIsotopeTable,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBIsotopeTable_GetExactMass. Expected _p_OpenBabel__OBIsotopeTable");
            }
        }
        arg2 = (unsigned int) SvUV(ST(1));
        result = (double)(arg1)->GetExactMass(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBIsotopeTable_GetExactMass) {
    dXSARGS;
    
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBIsotopeTable, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvIOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBIsotopeTable_GetExactMass__SWIG_1); return;
            }
        }
    }
    if (items == 3) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBIsotopeTable, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvIOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                {
                    _v = SvIOK(ST(2)) ? 1 : 0;
                }
                if (_v) {
                    (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBIsotopeTable_GetExactMass__SWIG_0); return;
                }
            }
        }
    }
    
    croak("No matching function for overloaded 'OBIsotopeTable_GetExactMass'");
    XSRETURN(0);
}


XS(_wrap_new_OBTypeTable) {
    {
        OpenBabel::OBTypeTable *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 0) || (items > 0)) {
            SWIG_croak("Usage: new_OBTypeTable();");
        }
        result = (OpenBabel::OBTypeTable *)new OpenBabel::OBTypeTable();
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBTypeTable, SWIG_SHADOW|SWIG_OWNER);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_delete_OBTypeTable) {
    {
        OpenBabel::OBTypeTable *arg1 = (OpenBabel::OBTypeTable *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: delete_OBTypeTable(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBTypeTable,0) < 0) {
                SWIG_croak("Type error in argument 1 of delete_OBTypeTable. Expected _p_OpenBabel__OBTypeTable");
            }
        }
        delete arg1;
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBTypeTable_ParseLine) {
    {
        OpenBabel::OBTypeTable *arg1 = (OpenBabel::OBTypeTable *) 0 ;
        char *arg2 = (char *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBTypeTable_ParseLine(self,char const *);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBTypeTable,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBTypeTable_ParseLine. Expected _p_OpenBabel__OBTypeTable");
            }
        }
        if (!SvOK((SV*) ST(1))) arg2 = 0;
        else arg2 = (char *) SvPV(ST(1), PL_na);
        (arg1)->ParseLine((char const *)arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBTypeTable_GetSize) {
    {
        OpenBabel::OBTypeTable *arg1 = (OpenBabel::OBTypeTable *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBTypeTable_GetSize(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBTypeTable,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBTypeTable_GetSize. Expected _p_OpenBabel__OBTypeTable");
            }
        }
        result = (unsigned int)(arg1)->GetSize();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBTypeTable_SetFromType) {
    {
        OpenBabel::OBTypeTable *arg1 = (OpenBabel::OBTypeTable *) 0 ;
        char *arg2 = (char *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBTypeTable_SetFromType(self,char const *);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBTypeTable,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBTypeTable_SetFromType. Expected _p_OpenBabel__OBTypeTable");
            }
        }
        if (!SvOK((SV*) ST(1))) arg2 = 0;
        else arg2 = (char *) SvPV(ST(1), PL_na);
        result = (bool)(arg1)->SetFromType((char const *)arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBTypeTable_SetToType) {
    {
        OpenBabel::OBTypeTable *arg1 = (OpenBabel::OBTypeTable *) 0 ;
        char *arg2 = (char *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBTypeTable_SetToType(self,char const *);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBTypeTable,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBTypeTable_SetToType. Expected _p_OpenBabel__OBTypeTable");
            }
        }
        if (!SvOK((SV*) ST(1))) arg2 = 0;
        else arg2 = (char *) SvPV(ST(1), PL_na);
        result = (bool)(arg1)->SetToType((char const *)arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBTypeTable_Translate__SWIG_0) {
    {
        OpenBabel::OBTypeTable *arg1 = (OpenBabel::OBTypeTable *) 0 ;
        char *arg2 = (char *) 0 ;
        char *arg3 = (char *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBTypeTable_Translate(self,to,from);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBTypeTable,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBTypeTable_Translate. Expected _p_OpenBabel__OBTypeTable");
            }
        }
        if (!SvOK((SV*) ST(1))) arg2 = 0;
        else arg2 = (char *) SvPV(ST(1), PL_na);
        if (!SvOK((SV*) ST(2))) arg3 = 0;
        else arg3 = (char *) SvPV(ST(2), PL_na);
        result = (bool)(arg1)->Translate(arg2,(char const *)arg3);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBTypeTable_Translate__SWIG_1) {
    {
        OpenBabel::OBTypeTable *arg1 = (OpenBabel::OBTypeTable *) 0 ;
        std::string *arg2 = 0 ;
        std::string *arg3 = 0 ;
        bool result;
        std::string temp3 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBTypeTable_Translate(self,to,from);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBTypeTable,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBTypeTable_Translate. Expected _p_OpenBabel__OBTypeTable");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__string,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBTypeTable_Translate. Expected _p_std__string");
            }
        }
        {
            STRLEN len;
            const char *ptr = SvPV(ST(2), len);
            if (!ptr) {
                SWIG_croak("Undefined variable in argument 3 of OBTypeTable_Translate.");
            } else {
                temp3.assign(ptr, len);
                arg3 = &temp3;
            }
        }
        result = (bool)(arg1)->Translate(*arg2,(std::string const &)*arg3);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBTypeTable_Translate) {
    dXSARGS;
    
    if (items == 3) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBTypeTable, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_std__string, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                {
                    _v = SvPOK(ST(2)) ? 1 : 0;
                }
                if (_v) {
                    (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBTypeTable_Translate__SWIG_1); return;
                }
            }
        }
    }
    if (items == 3) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBTypeTable, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvPOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                {
                    _v = SvPOK(ST(2)) ? 1 : 0;
                }
                if (_v) {
                    (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBTypeTable_Translate__SWIG_0); return;
                }
            }
        }
    }
    
    croak("No matching function for overloaded 'OBTypeTable_Translate'");
    XSRETURN(0);
}


XS(_wrap_OBTypeTable_GetFromType) {
    {
        OpenBabel::OBTypeTable *arg1 = (OpenBabel::OBTypeTable *) 0 ;
        std::string result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBTypeTable_GetFromType(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBTypeTable,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBTypeTable_GetFromType. Expected _p_OpenBabel__OBTypeTable");
            }
        }
        result = (arg1)->GetFromType();
        
        {
            if (argvi >= items) EXTEND(sp, 1);	// bump stack ptr, if needed
            char *data = const_cast<char*>((&result)->data());
            sv_setpvn(ST(argvi) = sv_newmortal(), data, (&result)->size());
            ++argvi;
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBTypeTable_GetToType) {
    {
        OpenBabel::OBTypeTable *arg1 = (OpenBabel::OBTypeTable *) 0 ;
        std::string result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBTypeTable_GetToType(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBTypeTable,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBTypeTable_GetToType. Expected _p_OpenBabel__OBTypeTable");
            }
        }
        result = (arg1)->GetToType();
        
        {
            if (argvi >= items) EXTEND(sp, 1);	// bump stack ptr, if needed
            char *data = const_cast<char*>((&result)->data());
            sv_setpvn(ST(argvi) = sv_newmortal(), data, (&result)->size());
            ++argvi;
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_new_OBResidueData) {
    {
        OpenBabel::OBResidueData *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 0) || (items > 0)) {
            SWIG_croak("Usage: new_OBResidueData();");
        }
        result = (OpenBabel::OBResidueData *)new OpenBabel::OBResidueData();
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBResidueData, SWIG_SHADOW|SWIG_OWNER);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidueData_ParseLine) {
    {
        OpenBabel::OBResidueData *arg1 = (OpenBabel::OBResidueData *) 0 ;
        char *arg2 = (char *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBResidueData_ParseLine(self,char const *);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidueData,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidueData_ParseLine. Expected _p_OpenBabel__OBResidueData");
            }
        }
        if (!SvOK((SV*) ST(1))) arg2 = 0;
        else arg2 = (char *) SvPV(ST(1), PL_na);
        (arg1)->ParseLine((char const *)arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidueData_GetSize) {
    {
        OpenBabel::OBResidueData *arg1 = (OpenBabel::OBResidueData *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBResidueData_GetSize(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidueData,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidueData_GetSize. Expected _p_OpenBabel__OBResidueData");
            }
        }
        result = (unsigned int)(arg1)->GetSize();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidueData_SetResName) {
    {
        OpenBabel::OBResidueData *arg1 = (OpenBabel::OBResidueData *) 0 ;
        std::string *arg2 = 0 ;
        bool result;
        std::string temp2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBResidueData_SetResName(self,std::string const &);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidueData,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidueData_SetResName. Expected _p_OpenBabel__OBResidueData");
            }
        }
        {
            STRLEN len;
            const char *ptr = SvPV(ST(1), len);
            if (!ptr) {
                SWIG_croak("Undefined variable in argument 2 of OBResidueData_SetResName.");
            } else {
                temp2.assign(ptr, len);
                arg2 = &temp2;
            }
        }
        result = (bool)(arg1)->SetResName((std::string const &)*arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidueData_LookupBO__SWIG_0) {
    {
        OpenBabel::OBResidueData *arg1 = (OpenBabel::OBResidueData *) 0 ;
        std::string *arg2 = 0 ;
        int result;
        std::string temp2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBResidueData_LookupBO(self,std::string const &);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidueData,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidueData_LookupBO. Expected _p_OpenBabel__OBResidueData");
            }
        }
        {
            STRLEN len;
            const char *ptr = SvPV(ST(1), len);
            if (!ptr) {
                SWIG_croak("Undefined variable in argument 2 of OBResidueData_LookupBO.");
            } else {
                temp2.assign(ptr, len);
                arg2 = &temp2;
            }
        }
        result = (int)(arg1)->LookupBO((std::string const &)*arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidueData_LookupBO__SWIG_1) {
    {
        OpenBabel::OBResidueData *arg1 = (OpenBabel::OBResidueData *) 0 ;
        std::string *arg2 = 0 ;
        std::string *arg3 = 0 ;
        int result;
        std::string temp2 ;
        std::string temp3 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBResidueData_LookupBO(self,std::string const &,std::string const &);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidueData,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidueData_LookupBO. Expected _p_OpenBabel__OBResidueData");
            }
        }
        {
            STRLEN len;
            const char *ptr = SvPV(ST(1), len);
            if (!ptr) {
                SWIG_croak("Undefined variable in argument 2 of OBResidueData_LookupBO.");
            } else {
                temp2.assign(ptr, len);
                arg2 = &temp2;
            }
        }
        {
            STRLEN len;
            const char *ptr = SvPV(ST(2), len);
            if (!ptr) {
                SWIG_croak("Undefined variable in argument 3 of OBResidueData_LookupBO.");
            } else {
                temp3.assign(ptr, len);
                arg3 = &temp3;
            }
        }
        result = (int)(arg1)->LookupBO((std::string const &)*arg2,(std::string const &)*arg3);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidueData_LookupBO) {
    dXSARGS;
    
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBResidueData, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvPOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBResidueData_LookupBO__SWIG_0); return;
            }
        }
    }
    if (items == 3) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBResidueData, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvPOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                {
                    _v = SvPOK(ST(2)) ? 1 : 0;
                }
                if (_v) {
                    (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBResidueData_LookupBO__SWIG_1); return;
                }
            }
        }
    }
    
    croak("No matching function for overloaded 'OBResidueData_LookupBO'");
    XSRETURN(0);
}


XS(_wrap_OBResidueData_LookupType) {
    {
        OpenBabel::OBResidueData *arg1 = (OpenBabel::OBResidueData *) 0 ;
        std::string *arg2 = 0 ;
        std::string *arg3 = 0 ;
        int *arg4 = 0 ;
        bool result;
        std::string temp2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 4) || (items > 4)) {
            SWIG_croak("Usage: OBResidueData_LookupType(self,std::string const &,std::string &,int &);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidueData,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidueData_LookupType. Expected _p_OpenBabel__OBResidueData");
            }
        }
        {
            STRLEN len;
            const char *ptr = SvPV(ST(1), len);
            if (!ptr) {
                SWIG_croak("Undefined variable in argument 2 of OBResidueData_LookupType.");
            } else {
                temp2.assign(ptr, len);
                arg2 = &temp2;
            }
        }
        {
            if (SWIG_ConvertPtr(ST(2), (void **) &arg3, SWIGTYPE_p_std__string,0) < 0) {
                SWIG_croak("Type error in argument 3 of OBResidueData_LookupType. Expected _p_std__string");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(3), (void **) &arg4, SWIGTYPE_p_int,0) < 0) {
                SWIG_croak("Type error in argument 4 of OBResidueData_LookupType. Expected _p_int");
            }
        }
        result = (bool)(arg1)->LookupType((std::string const &)*arg2,*arg3,*arg4);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidueData_AssignBonds) {
    {
        OpenBabel::OBResidueData *arg1 = (OpenBabel::OBResidueData *) 0 ;
        OpenBabel::OBMol *arg2 = 0 ;
        OpenBabel::OBBitVec *arg3 = 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBResidueData_AssignBonds(self,OpenBabel::OBMol &,OpenBabel::OBBitVec &);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidueData,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidueData_AssignBonds. Expected _p_OpenBabel__OBResidueData");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBResidueData_AssignBonds. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(2), (void **) &arg3, SWIGTYPE_p_OpenBabel__OBBitVec,0) < 0) {
                SWIG_croak("Type error in argument 3 of OBResidueData_AssignBonds. Expected _p_OpenBabel__OBBitVec");
            }
        }
        result = (bool)(arg1)->AssignBonds(*arg2,*arg3);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_delete_OBResidueData) {
    {
        OpenBabel::OBResidueData *arg1 = (OpenBabel::OBResidueData *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: delete_OBResidueData(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidueData,0) < 0) {
                SWIG_croak("Type error in argument 1 of delete_OBResidueData. Expected _p_OpenBabel__OBResidueData");
            }
        }
        delete arg1;
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBFormat_ReadMolecule) {
    {
        OpenBabel::OBFormat *arg1 = (OpenBabel::OBFormat *) 0 ;
        OpenBabel::OBBase *arg2 = (OpenBabel::OBBase *) 0 ;
        OpenBabel::OBConversion *arg3 = (OpenBabel::OBConversion *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBFormat_ReadMolecule(self,pOb,pConv);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBFormat,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBFormat_ReadMolecule. Expected _p_OpenBabel__OBFormat");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBBase,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBFormat_ReadMolecule. Expected _p_OpenBabel__OBBase");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(2), (void **) &arg3, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 3 of OBFormat_ReadMolecule. Expected _p_OpenBabel__OBConversion");
            }
        }
        result = (bool)(arg1)->ReadMolecule(arg2,arg3);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBFormat_ReadChemObject) {
    {
        OpenBabel::OBFormat *arg1 = (OpenBabel::OBFormat *) 0 ;
        OpenBabel::OBConversion *arg2 = (OpenBabel::OBConversion *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBFormat_ReadChemObject(self,pConv);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBFormat,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBFormat_ReadChemObject. Expected _p_OpenBabel__OBFormat");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBFormat_ReadChemObject. Expected _p_OpenBabel__OBConversion");
            }
        }
        result = (bool)(arg1)->ReadChemObject(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBFormat_WriteMolecule) {
    {
        OpenBabel::OBFormat *arg1 = (OpenBabel::OBFormat *) 0 ;
        OpenBabel::OBBase *arg2 = (OpenBabel::OBBase *) 0 ;
        OpenBabel::OBConversion *arg3 = (OpenBabel::OBConversion *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBFormat_WriteMolecule(self,pOb,pConv);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBFormat,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBFormat_WriteMolecule. Expected _p_OpenBabel__OBFormat");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBBase,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBFormat_WriteMolecule. Expected _p_OpenBabel__OBBase");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(2), (void **) &arg3, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 3 of OBFormat_WriteMolecule. Expected _p_OpenBabel__OBConversion");
            }
        }
        result = (bool)(arg1)->WriteMolecule(arg2,arg3);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBFormat_WriteChemObject) {
    {
        OpenBabel::OBFormat *arg1 = (OpenBabel::OBFormat *) 0 ;
        OpenBabel::OBConversion *arg2 = (OpenBabel::OBConversion *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBFormat_WriteChemObject(self,pConv);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBFormat,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBFormat_WriteChemObject. Expected _p_OpenBabel__OBFormat");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBFormat_WriteChemObject. Expected _p_OpenBabel__OBConversion");
            }
        }
        result = (bool)(arg1)->WriteChemObject(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBFormat_Description) {
    {
        OpenBabel::OBFormat *arg1 = (OpenBabel::OBFormat *) 0 ;
        char *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBFormat_Description(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBFormat,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBFormat_Description. Expected _p_OpenBabel__OBFormat");
            }
        }
        result = (char *)(arg1)->Description();
        
        ST(argvi) = sv_newmortal();
        if (result) {
            sv_setpv((SV*)ST(argvi++), (char *) result);
        } else {
            sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBFormat_TargetClassDescription) {
    {
        OpenBabel::OBFormat *arg1 = (OpenBabel::OBFormat *) 0 ;
        char *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBFormat_TargetClassDescription(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBFormat,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBFormat_TargetClassDescription. Expected _p_OpenBabel__OBFormat");
            }
        }
        result = (char *)(arg1)->TargetClassDescription();
        
        ST(argvi) = sv_newmortal();
        if (result) {
            sv_setpv((SV*)ST(argvi++), (char *) result);
        } else {
            sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBFormat_GetType) {
    {
        OpenBabel::OBFormat *arg1 = (OpenBabel::OBFormat *) 0 ;
        std::type_info *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBFormat_GetType(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBFormat,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBFormat_GetType. Expected _p_OpenBabel__OBFormat");
            }
        }
        {
            std::type_info const &_result_ref = (arg1)->GetType();
            result = (std::type_info *) &_result_ref;
        }
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_std__type_info, 0|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBFormat_SpecificationURL) {
    {
        OpenBabel::OBFormat *arg1 = (OpenBabel::OBFormat *) 0 ;
        char *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBFormat_SpecificationURL(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBFormat,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBFormat_SpecificationURL. Expected _p_OpenBabel__OBFormat");
            }
        }
        result = (char *)(arg1)->SpecificationURL();
        
        ST(argvi) = sv_newmortal();
        if (result) {
            sv_setpv((SV*)ST(argvi++), (char *) result);
        } else {
            sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBFormat_GetMIMEType) {
    {
        OpenBabel::OBFormat *arg1 = (OpenBabel::OBFormat *) 0 ;
        char *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBFormat_GetMIMEType(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBFormat,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBFormat_GetMIMEType. Expected _p_OpenBabel__OBFormat");
            }
        }
        result = (char *)(arg1)->GetMIMEType();
        
        ST(argvi) = sv_newmortal();
        if (result) {
            sv_setpv((SV*)ST(argvi++), (char *) result);
        } else {
            sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBFormat_Flags) {
    {
        OpenBabel::OBFormat *arg1 = (OpenBabel::OBFormat *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBFormat_Flags(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBFormat,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBFormat_Flags. Expected _p_OpenBabel__OBFormat");
            }
        }
        result = (unsigned int)(arg1)->Flags();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBFormat_SkipObjects) {
    {
        OpenBabel::OBFormat *arg1 = (OpenBabel::OBFormat *) 0 ;
        int arg2 ;
        OpenBabel::OBConversion *arg3 = (OpenBabel::OBConversion *) 0 ;
        int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBFormat_SkipObjects(self,n,pConv);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBFormat,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBFormat_SkipObjects. Expected _p_OpenBabel__OBFormat");
            }
        }
        arg2 = (int) SvIV(ST(1));
        {
            if (SWIG_ConvertPtr(ST(2), (void **) &arg3, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 3 of OBFormat_SkipObjects. Expected _p_OpenBabel__OBConversion");
            }
        }
        result = (int)(arg1)->SkipObjects(arg2,arg3);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBFormat_MakeNewInstance) {
    {
        OpenBabel::OBFormat *arg1 = (OpenBabel::OBFormat *) 0 ;
        OpenBabel::OBFormat *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBFormat_MakeNewInstance(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBFormat,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBFormat_MakeNewInstance. Expected _p_OpenBabel__OBFormat");
            }
        }
        result = (OpenBabel::OBFormat *)(arg1)->MakeNewInstance();
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBFormat, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_delete_OBFormat) {
    {
        OpenBabel::OBFormat *arg1 = (OpenBabel::OBFormat *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: delete_OBFormat(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBFormat,0) < 0) {
                SWIG_croak("Type error in argument 1 of delete_OBFormat. Expected _p_OpenBabel__OBFormat");
            }
        }
        delete arg1;
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_new_CharPtrLess) {
    {
        OpenBabel::CharPtrLess *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 0) || (items > 0)) {
            SWIG_croak("Usage: new_CharPtrLess();");
        }
        result = (OpenBabel::CharPtrLess *)new OpenBabel::CharPtrLess();
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__CharPtrLess, SWIG_SHADOW|SWIG_OWNER);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_delete_CharPtrLess) {
    {
        OpenBabel::CharPtrLess *arg1 = (OpenBabel::CharPtrLess *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: delete_CharPtrLess(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__CharPtrLess,0) < 0) {
                SWIG_croak("Type error in argument 1 of delete_CharPtrLess. Expected _p_OpenBabel__CharPtrLess");
            }
        }
        delete arg1;
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_new_OBConversion__SWIG_0) {
    {
        std::istream *arg1 = (std::istream *) 0 ;
        std::ostream *arg2 = (std::ostream *) 0 ;
        OpenBabel::OBConversion *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: new_OBConversion(is,os);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_std__istream,0) < 0) {
                SWIG_croak("Type error in argument 1 of new_OBConversion. Expected _p_std__istream");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__ostream,0) < 0) {
                SWIG_croak("Type error in argument 2 of new_OBConversion. Expected _p_std__ostream");
            }
        }
        result = (OpenBabel::OBConversion *)new OpenBabel::OBConversion(arg1,arg2);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBConversion, SWIG_SHADOW|SWIG_OWNER);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_new_OBConversion__SWIG_1) {
    {
        std::istream *arg1 = (std::istream *) 0 ;
        OpenBabel::OBConversion *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: new_OBConversion(is);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_std__istream,0) < 0) {
                SWIG_croak("Type error in argument 1 of new_OBConversion. Expected _p_std__istream");
            }
        }
        result = (OpenBabel::OBConversion *)new OpenBabel::OBConversion(arg1);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBConversion, SWIG_SHADOW|SWIG_OWNER);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_new_OBConversion__SWIG_2) {
    {
        OpenBabel::OBConversion *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 0) || (items > 0)) {
            SWIG_croak("Usage: new_OBConversion();");
        }
        result = (OpenBabel::OBConversion *)new OpenBabel::OBConversion();
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBConversion, SWIG_SHADOW|SWIG_OWNER);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_new_OBConversion__SWIG_3) {
    {
        OpenBabel::OBConversion *arg1 = 0 ;
        OpenBabel::OBConversion *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: new_OBConversion(o);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of new_OBConversion. Expected _p_OpenBabel__OBConversion");
            }
        }
        result = (OpenBabel::OBConversion *)new OpenBabel::OBConversion((OpenBabel::OBConversion const &)*arg1);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBConversion, SWIG_SHADOW|SWIG_OWNER);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_new_OBConversion) {
    dXSARGS;
    
    if (items == 0) {
        (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_new_OBConversion__SWIG_2); return;
    }
    if (items == 1) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_std__istream, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_new_OBConversion__SWIG_1); return;
        }
    }
    if (items == 1) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBConversion, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_new_OBConversion__SWIG_3); return;
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_std__istream, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_std__ostream, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_new_OBConversion__SWIG_0); return;
            }
        }
    }
    
    croak("No matching function for overloaded 'new_OBConversion'");
    XSRETURN(0);
}


XS(_wrap_delete_OBConversion) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: delete_OBConversion(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of delete_OBConversion. Expected _p_OpenBabel__OBConversion");
            }
        }
        delete arg1;
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_RegisterFormat__SWIG_0) {
    {
        char *arg1 = (char *) 0 ;
        OpenBabel::OBFormat *arg2 = (OpenBabel::OBFormat *) 0 ;
        char *arg3 = (char *) 0 ;
        int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBConversion_RegisterFormat(ID,pFormat,MIME);");
        }
        if (!SvOK((SV*) ST(0))) arg1 = 0;
        else arg1 = (char *) SvPV(ST(0), PL_na);
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBFormat,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBConversion_RegisterFormat. Expected _p_OpenBabel__OBFormat");
            }
        }
        if (!SvOK((SV*) ST(2))) arg3 = 0;
        else arg3 = (char *) SvPV(ST(2), PL_na);
        result = (int)OpenBabel::OBConversion::RegisterFormat((char const *)arg1,arg2,(char const *)arg3);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_RegisterFormat__SWIG_1) {
    {
        char *arg1 = (char *) 0 ;
        OpenBabel::OBFormat *arg2 = (OpenBabel::OBFormat *) 0 ;
        int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBConversion_RegisterFormat(ID,pFormat);");
        }
        if (!SvOK((SV*) ST(0))) arg1 = 0;
        else arg1 = (char *) SvPV(ST(0), PL_na);
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBFormat,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBConversion_RegisterFormat. Expected _p_OpenBabel__OBFormat");
            }
        }
        result = (int)OpenBabel::OBConversion::RegisterFormat((char const *)arg1,arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_RegisterFormat) {
    dXSARGS;
    
    if (items == 2) {
        int _v;
        {
            _v = SvPOK(ST(0)) ? 1 : 0;
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBFormat, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBConversion_RegisterFormat__SWIG_1); return;
            }
        }
    }
    if (items == 3) {
        int _v;
        {
            _v = SvPOK(ST(0)) ? 1 : 0;
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBFormat, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                {
                    _v = SvPOK(ST(2)) ? 1 : 0;
                }
                if (_v) {
                    (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBConversion_RegisterFormat__SWIG_0); return;
                }
            }
        }
    }
    
    croak("No matching function for overloaded 'OBConversion_RegisterFormat'");
    XSRETURN(0);
}


XS(_wrap_OBConversion_FindFormat) {
    {
        char *arg1 = (char *) 0 ;
        OpenBabel::OBFormat *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBConversion_FindFormat(ID);");
        }
        if (!SvOK((SV*) ST(0))) arg1 = 0;
        else arg1 = (char *) SvPV(ST(0), PL_na);
        result = (OpenBabel::OBFormat *)OpenBabel::OBConversion::FindFormat((char const *)arg1);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBFormat, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_FormatFromExt) {
    {
        char *arg1 = (char *) 0 ;
        OpenBabel::OBFormat *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBConversion_FormatFromExt(filename);");
        }
        if (!SvOK((SV*) ST(0))) arg1 = 0;
        else arg1 = (char *) SvPV(ST(0), PL_na);
        result = (OpenBabel::OBFormat *)OpenBabel::OBConversion::FormatFromExt((char const *)arg1);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBFormat, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_FormatFromMIME) {
    {
        char *arg1 = (char *) 0 ;
        OpenBabel::OBFormat *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBConversion_FormatFromMIME(MIME);");
        }
        if (!SvOK((SV*) ST(0))) arg1 = 0;
        else arg1 = (char *) SvPV(ST(0), PL_na);
        result = (OpenBabel::OBFormat *)OpenBabel::OBConversion::FormatFromMIME((char const *)arg1);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBFormat, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_GetNextFormat) {
    {
        OpenBabel::Formatpos *arg1 = 0 ;
        char **arg2 = 0 ;
        OpenBabel::OBFormat **arg3 = 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBConversion_GetNextFormat(itr,str,pFormat);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__FMapType__iterator,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_GetNextFormat. Expected _p_OpenBabel__FMapType__iterator");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_p_char,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBConversion_GetNextFormat. Expected _p_p_char");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(2), (void **) &arg3, SWIGTYPE_p_p_OpenBabel__OBFormat,0) < 0) {
                SWIG_croak("Type error in argument 3 of OBConversion_GetNextFormat. Expected _p_p_OpenBabel__OBFormat");
            }
        }
        result = (bool)OpenBabel::OBConversion::GetNextFormat(*arg1,(char const *&)*arg2,*arg3);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_Description) {
    {
        char *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 0) || (items > 0)) {
            SWIG_croak("Usage: OBConversion_Description();");
        }
        result = (char *)OpenBabel::OBConversion::Description();
        
        ST(argvi) = sv_newmortal();
        if (result) {
            sv_setpv((SV*)ST(argvi++), (char *) result);
        } else {
            sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_GetInStream) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        std::istream *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBConversion_GetInStream(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_GetInStream. Expected _p_OpenBabel__OBConversion");
            }
        }
        result = (std::istream *)((OpenBabel::OBConversion const *)arg1)->GetInStream();
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_std__istream, 0|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_GetOutStream) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        std::ostream *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBConversion_GetOutStream(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_GetOutStream. Expected _p_OpenBabel__OBConversion");
            }
        }
        result = (std::ostream *)((OpenBabel::OBConversion const *)arg1)->GetOutStream();
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_std__ostream, 0|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_SetInStream) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        std::istream *arg2 = (std::istream *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBConversion_SetInStream(self,pIn);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_SetInStream. Expected _p_OpenBabel__OBConversion");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__istream,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBConversion_SetInStream. Expected _p_std__istream");
            }
        }
        (arg1)->SetInStream(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_SetOutStream) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        std::ostream *arg2 = (std::ostream *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBConversion_SetOutStream(self,pOut);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_SetOutStream. Expected _p_OpenBabel__OBConversion");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__ostream,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBConversion_SetOutStream. Expected _p_std__ostream");
            }
        }
        (arg1)->SetOutStream(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_SetInAndOutFormats__SWIG_0) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        char *arg2 = (char *) 0 ;
        char *arg3 = (char *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBConversion_SetInAndOutFormats(self,inID,outID);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_SetInAndOutFormats. Expected _p_OpenBabel__OBConversion");
            }
        }
        if (!SvOK((SV*) ST(1))) arg2 = 0;
        else arg2 = (char *) SvPV(ST(1), PL_na);
        if (!SvOK((SV*) ST(2))) arg3 = 0;
        else arg3 = (char *) SvPV(ST(2), PL_na);
        result = (bool)(arg1)->SetInAndOutFormats((char const *)arg2,(char const *)arg3);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_SetInAndOutFormats__SWIG_1) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        OpenBabel::OBFormat *arg2 = (OpenBabel::OBFormat *) 0 ;
        OpenBabel::OBFormat *arg3 = (OpenBabel::OBFormat *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBConversion_SetInAndOutFormats(self,pIn,pOut);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_SetInAndOutFormats. Expected _p_OpenBabel__OBConversion");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBFormat,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBConversion_SetInAndOutFormats. Expected _p_OpenBabel__OBFormat");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(2), (void **) &arg3, SWIGTYPE_p_OpenBabel__OBFormat,0) < 0) {
                SWIG_croak("Type error in argument 3 of OBConversion_SetInAndOutFormats. Expected _p_OpenBabel__OBFormat");
            }
        }
        result = (bool)(arg1)->SetInAndOutFormats(arg2,arg3);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_SetInAndOutFormats) {
    dXSARGS;
    
    if (items == 3) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBConversion, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBFormat, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                {
                    void *tmp;
                    if (SWIG_ConvertPtr(ST(2), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBFormat, 0) == -1) {
                        _v = 0;
                    } else {
                        _v = 1;
                    }
                }
                if (_v) {
                    (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBConversion_SetInAndOutFormats__SWIG_1); return;
                }
            }
        }
    }
    if (items == 3) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBConversion, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvPOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                {
                    _v = SvPOK(ST(2)) ? 1 : 0;
                }
                if (_v) {
                    (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBConversion_SetInAndOutFormats__SWIG_0); return;
                }
            }
        }
    }
    
    croak("No matching function for overloaded 'OBConversion_SetInAndOutFormats'");
    XSRETURN(0);
}


XS(_wrap_OBConversion_SetInFormat__SWIG_0) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        char *arg2 = (char *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBConversion_SetInFormat(self,inID);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_SetInFormat. Expected _p_OpenBabel__OBConversion");
            }
        }
        if (!SvOK((SV*) ST(1))) arg2 = 0;
        else arg2 = (char *) SvPV(ST(1), PL_na);
        result = (bool)(arg1)->SetInFormat((char const *)arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_SetInFormat__SWIG_1) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        OpenBabel::OBFormat *arg2 = (OpenBabel::OBFormat *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBConversion_SetInFormat(self,pIn);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_SetInFormat. Expected _p_OpenBabel__OBConversion");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBFormat,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBConversion_SetInFormat. Expected _p_OpenBabel__OBFormat");
            }
        }
        result = (bool)(arg1)->SetInFormat(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_SetInFormat) {
    dXSARGS;
    
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBConversion, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBFormat, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBConversion_SetInFormat__SWIG_1); return;
            }
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBConversion, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvPOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBConversion_SetInFormat__SWIG_0); return;
            }
        }
    }
    
    croak("No matching function for overloaded 'OBConversion_SetInFormat'");
    XSRETURN(0);
}


XS(_wrap_OBConversion_SetOutFormat__SWIG_0) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        char *arg2 = (char *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBConversion_SetOutFormat(self,outID);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_SetOutFormat. Expected _p_OpenBabel__OBConversion");
            }
        }
        if (!SvOK((SV*) ST(1))) arg2 = 0;
        else arg2 = (char *) SvPV(ST(1), PL_na);
        result = (bool)(arg1)->SetOutFormat((char const *)arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_SetOutFormat__SWIG_1) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        OpenBabel::OBFormat *arg2 = (OpenBabel::OBFormat *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBConversion_SetOutFormat(self,pOut);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_SetOutFormat. Expected _p_OpenBabel__OBConversion");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBFormat,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBConversion_SetOutFormat. Expected _p_OpenBabel__OBFormat");
            }
        }
        result = (bool)(arg1)->SetOutFormat(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_SetOutFormat) {
    dXSARGS;
    
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBConversion, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBFormat, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBConversion_SetOutFormat__SWIG_1); return;
            }
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBConversion, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvPOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBConversion_SetOutFormat__SWIG_0); return;
            }
        }
    }
    
    croak("No matching function for overloaded 'OBConversion_SetOutFormat'");
    XSRETURN(0);
}


XS(_wrap_OBConversion_GetInFormat) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        OpenBabel::OBFormat *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBConversion_GetInFormat(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_GetInFormat. Expected _p_OpenBabel__OBConversion");
            }
        }
        result = (OpenBabel::OBFormat *)((OpenBabel::OBConversion const *)arg1)->GetInFormat();
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBFormat, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_GetOutFormat) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        OpenBabel::OBFormat *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBConversion_GetOutFormat(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_GetOutFormat. Expected _p_OpenBabel__OBConversion");
            }
        }
        result = (OpenBabel::OBFormat *)((OpenBabel::OBConversion const *)arg1)->GetOutFormat();
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBFormat, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_GetInFilename) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        std::string result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBConversion_GetInFilename(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_GetInFilename. Expected _p_OpenBabel__OBConversion");
            }
        }
        result = ((OpenBabel::OBConversion const *)arg1)->GetInFilename();
        
        {
            if (argvi >= items) EXTEND(sp, 1);	// bump stack ptr, if needed
            char *data = const_cast<char*>((&result)->data());
            sv_setpvn(ST(argvi) = sv_newmortal(), data, (&result)->size());
            ++argvi;
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_GetInPos) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        std::streampos result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBConversion_GetInPos(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_GetInPos. Expected _p_OpenBabel__OBConversion");
            }
        }
        result = ((OpenBabel::OBConversion const *)arg1)->GetInPos();
        
        {
            std::streampos * resultobj = new std::streampos((std::streampos &)result);
            ST(argvi) = sv_newmortal();
            SWIG_MakePtr(ST(argvi++), (void *) resultobj, SWIGTYPE_p_std__streampos, 0|SWIG_OWNER);
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_GetInLen) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        size_t result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBConversion_GetInLen(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_GetInLen. Expected _p_OpenBabel__OBConversion");
            }
        }
        result = ((OpenBabel::OBConversion const *)arg1)->GetInLen();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_GetTitle) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        char *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBConversion_GetTitle(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_GetTitle. Expected _p_OpenBabel__OBConversion");
            }
        }
        result = (char *)((OpenBabel::OBConversion const *)arg1)->GetTitle();
        
        ST(argvi) = sv_newmortal();
        if (result) {
            sv_setpv((SV*)ST(argvi++), (char *) result);
        } else {
            sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_GetAuxConv) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        OpenBabel::OBConversion *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBConversion_GetAuxConv(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_GetAuxConv. Expected _p_OpenBabel__OBConversion");
            }
        }
        result = (OpenBabel::OBConversion *)((OpenBabel::OBConversion const *)arg1)->GetAuxConv();
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBConversion, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_SetAuxConv) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        OpenBabel::OBConversion *arg2 = (OpenBabel::OBConversion *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBConversion_SetAuxConv(self,pConv);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_SetAuxConv. Expected _p_OpenBabel__OBConversion");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBConversion_SetAuxConv. Expected _p_OpenBabel__OBConversion");
            }
        }
        (arg1)->SetAuxConv(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_IsOption__SWIG_0) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        char *arg2 = (char *) 0 ;
        OpenBabel::OBConversion::Option_type arg3 ;
        char *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBConversion_IsOption(self,opt,opttyp);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_IsOption. Expected _p_OpenBabel__OBConversion");
            }
        }
        if (!SvOK((SV*) ST(1))) arg2 = 0;
        else arg2 = (char *) SvPV(ST(1), PL_na);
        arg3 = (OpenBabel::OBConversion::Option_type) SvIV(ST(2));
        result = (char *)(arg1)->IsOption((char const *)arg2,arg3);
        
        ST(argvi) = sv_newmortal();
        if (result) {
            sv_setpv((SV*)ST(argvi++), (char *) result);
        } else {
            sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_IsOption__SWIG_1) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        char *arg2 = (char *) 0 ;
        char *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBConversion_IsOption(self,opt);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_IsOption. Expected _p_OpenBabel__OBConversion");
            }
        }
        if (!SvOK((SV*) ST(1))) arg2 = 0;
        else arg2 = (char *) SvPV(ST(1), PL_na);
        result = (char *)(arg1)->IsOption((char const *)arg2);
        
        ST(argvi) = sv_newmortal();
        if (result) {
            sv_setpv((SV*)ST(argvi++), (char *) result);
        } else {
            sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_IsOption) {
    dXSARGS;
    
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBConversion, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvPOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBConversion_IsOption__SWIG_1); return;
            }
        }
    }
    if (items == 3) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBConversion, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvPOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                {
                    _v = SvIOK(ST(2)) ? 1 : 0;
                }
                if (_v) {
                    (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBConversion_IsOption__SWIG_0); return;
                }
            }
        }
    }
    
    croak("No matching function for overloaded 'OBConversion_IsOption'");
    XSRETURN(0);
}


XS(_wrap_OBConversion_GetOptions) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        OpenBabel::OBConversion::Option_type arg2 ;
        std::map<std::string,std::string > *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBConversion_GetOptions(self,opttyp);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_GetOptions. Expected _p_OpenBabel__OBConversion");
            }
        }
        arg2 = (OpenBabel::OBConversion::Option_type) SvIV(ST(1));
        result = (std::map<std::string,std::string > *)(arg1)->GetOptions(arg2);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_std__mapTstd__string_std__string_t, 0|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_AddOption__SWIG_0) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        char *arg2 = (char *) 0 ;
        OpenBabel::OBConversion::Option_type arg3 ;
        char *arg4 = (char *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 4) || (items > 4)) {
            SWIG_croak("Usage: OBConversion_AddOption(self,opt,opttyp,txt);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_AddOption. Expected _p_OpenBabel__OBConversion");
            }
        }
        if (!SvOK((SV*) ST(1))) arg2 = 0;
        else arg2 = (char *) SvPV(ST(1), PL_na);
        arg3 = (OpenBabel::OBConversion::Option_type) SvIV(ST(2));
        if (!SvOK((SV*) ST(3))) arg4 = 0;
        else arg4 = (char *) SvPV(ST(3), PL_na);
        (arg1)->AddOption((char const *)arg2,arg3,(char const *)arg4);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_AddOption__SWIG_1) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        char *arg2 = (char *) 0 ;
        OpenBabel::OBConversion::Option_type arg3 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBConversion_AddOption(self,opt,opttyp);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_AddOption. Expected _p_OpenBabel__OBConversion");
            }
        }
        if (!SvOK((SV*) ST(1))) arg2 = 0;
        else arg2 = (char *) SvPV(ST(1), PL_na);
        arg3 = (OpenBabel::OBConversion::Option_type) SvIV(ST(2));
        (arg1)->AddOption((char const *)arg2,arg3);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_AddOption) {
    dXSARGS;
    
    if (items == 3) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBConversion, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvPOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                {
                    _v = SvIOK(ST(2)) ? 1 : 0;
                }
                if (_v) {
                    (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBConversion_AddOption__SWIG_1); return;
                }
            }
        }
    }
    if (items == 4) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBConversion, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvPOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                {
                    _v = SvIOK(ST(2)) ? 1 : 0;
                }
                if (_v) {
                    {
                        _v = SvPOK(ST(3)) ? 1 : 0;
                    }
                    if (_v) {
                        (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBConversion_AddOption__SWIG_0); return;
                    }
                }
            }
        }
    }
    
    croak("No matching function for overloaded 'OBConversion_AddOption'");
    XSRETURN(0);
}


XS(_wrap_OBConversion_RemoveOption) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        char *arg2 = (char *) 0 ;
        OpenBabel::OBConversion::Option_type arg3 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBConversion_RemoveOption(self,opt,optype);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_RemoveOption. Expected _p_OpenBabel__OBConversion");
            }
        }
        if (!SvOK((SV*) ST(1))) arg2 = 0;
        else arg2 = (char *) SvPV(ST(1), PL_na);
        arg3 = (OpenBabel::OBConversion::Option_type) SvIV(ST(2));
        result = (bool)(arg1)->RemoveOption((char const *)arg2,arg3);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_SetOptions) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        char *arg2 = (char *) 0 ;
        OpenBabel::OBConversion::Option_type arg3 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBConversion_SetOptions(self,options,opttyp);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_SetOptions. Expected _p_OpenBabel__OBConversion");
            }
        }
        if (!SvOK((SV*) ST(1))) arg2 = 0;
        else arg2 = (char *) SvPV(ST(1), PL_na);
        arg3 = (OpenBabel::OBConversion::Option_type) SvIV(ST(2));
        (arg1)->SetOptions((char const *)arg2,arg3);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_RegisterOptionParam__SWIG_0) {
    {
        std::string arg1 ;
        OpenBabel::OBFormat *arg2 = (OpenBabel::OBFormat *) 0 ;
        int arg3 ;
        OpenBabel::OBConversion::Option_type arg4 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 4) || (items > 4)) {
            SWIG_croak("Usage: OBConversion_RegisterOptionParam(name,pFormat,numberParams,typ);");
        }
        {
            STRLEN len;
            const char *ptr = SvPV(ST(0), len);
            if (!ptr) {
                SWIG_croak("Undefined variable in argument 1 of OBConversion_RegisterOptionParam.");
            } else {
                arg1 = std::string(ptr, len);
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBFormat,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBConversion_RegisterOptionParam. Expected _p_OpenBabel__OBFormat");
            }
        }
        arg3 = (int) SvIV(ST(2));
        arg4 = (OpenBabel::OBConversion::Option_type) SvIV(ST(3));
        OpenBabel::OBConversion::RegisterOptionParam(arg1,arg2,arg3,arg4);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_RegisterOptionParam__SWIG_1) {
    {
        std::string arg1 ;
        OpenBabel::OBFormat *arg2 = (OpenBabel::OBFormat *) 0 ;
        int arg3 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBConversion_RegisterOptionParam(name,pFormat,numberParams);");
        }
        {
            STRLEN len;
            const char *ptr = SvPV(ST(0), len);
            if (!ptr) {
                SWIG_croak("Undefined variable in argument 1 of OBConversion_RegisterOptionParam.");
            } else {
                arg1 = std::string(ptr, len);
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBFormat,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBConversion_RegisterOptionParam. Expected _p_OpenBabel__OBFormat");
            }
        }
        arg3 = (int) SvIV(ST(2));
        OpenBabel::OBConversion::RegisterOptionParam(arg1,arg2,arg3);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_RegisterOptionParam__SWIG_2) {
    {
        std::string arg1 ;
        OpenBabel::OBFormat *arg2 = (OpenBabel::OBFormat *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBConversion_RegisterOptionParam(name,pFormat);");
        }
        {
            STRLEN len;
            const char *ptr = SvPV(ST(0), len);
            if (!ptr) {
                SWIG_croak("Undefined variable in argument 1 of OBConversion_RegisterOptionParam.");
            } else {
                arg1 = std::string(ptr, len);
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBFormat,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBConversion_RegisterOptionParam. Expected _p_OpenBabel__OBFormat");
            }
        }
        OpenBabel::OBConversion::RegisterOptionParam(arg1,arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_RegisterOptionParam) {
    dXSARGS;
    
    if (items == 2) {
        int _v;
        {
            _v = SvPOK(ST(0)) ? 1 : 0;
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBFormat, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBConversion_RegisterOptionParam__SWIG_2); return;
            }
        }
    }
    if (items == 3) {
        int _v;
        {
            _v = SvPOK(ST(0)) ? 1 : 0;
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBFormat, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                {
                    _v = SvIOK(ST(2)) ? 1 : 0;
                }
                if (_v) {
                    (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBConversion_RegisterOptionParam__SWIG_1); return;
                }
            }
        }
    }
    if (items == 4) {
        int _v;
        {
            _v = SvPOK(ST(0)) ? 1 : 0;
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBFormat, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                {
                    _v = SvIOK(ST(2)) ? 1 : 0;
                }
                if (_v) {
                    {
                        _v = SvIOK(ST(3)) ? 1 : 0;
                    }
                    if (_v) {
                        (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBConversion_RegisterOptionParam__SWIG_0); return;
                    }
                }
            }
        }
    }
    
    croak("No matching function for overloaded 'OBConversion_RegisterOptionParam'");
    XSRETURN(0);
}


XS(_wrap_OBConversion_GetOptionParams) {
    {
        std::string arg1 ;
        OpenBabel::OBConversion::Option_type arg2 ;
        int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBConversion_GetOptionParams(name,typ);");
        }
        {
            STRLEN len;
            const char *ptr = SvPV(ST(0), len);
            if (!ptr) {
                SWIG_croak("Undefined variable in argument 1 of OBConversion_GetOptionParams.");
            } else {
                arg1 = std::string(ptr, len);
            }
        }
        arg2 = (OpenBabel::OBConversion::Option_type) SvIV(ST(1));
        result = (int)OpenBabel::OBConversion::GetOptionParams(arg1,arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_Convert__SWIG_0) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        std::istream *arg2 = (std::istream *) 0 ;
        std::ostream *arg3 = (std::ostream *) 0 ;
        int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBConversion_Convert(self,is,os);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_Convert. Expected _p_OpenBabel__OBConversion");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__istream,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBConversion_Convert. Expected _p_std__istream");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(2), (void **) &arg3, SWIGTYPE_p_std__ostream,0) < 0) {
                SWIG_croak("Type error in argument 3 of OBConversion_Convert. Expected _p_std__ostream");
            }
        }
        result = (int)(arg1)->Convert(arg2,arg3);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_Convert__SWIG_1) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBConversion_Convert(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_Convert. Expected _p_OpenBabel__OBConversion");
            }
        }
        result = (int)(arg1)->Convert();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_Convert) {
    dXSARGS;
    
    if (items == 1) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBConversion, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBConversion_Convert__SWIG_1); return;
        }
    }
    if (items == 3) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBConversion, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_std__istream, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                {
                    void *tmp;
                    if (SWIG_ConvertPtr(ST(2), (void **) &tmp, SWIGTYPE_p_std__ostream, 0) == -1) {
                        _v = 0;
                    } else {
                        _v = 1;
                    }
                }
                if (_v) {
                    (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBConversion_Convert__SWIG_0); return;
                }
            }
        }
    }
    
    croak("No matching function for overloaded 'OBConversion_Convert'");
    XSRETURN(0);
}


XS(_wrap_OBConversion_FullConvert) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        std::vector<std::string > *arg2 = 0 ;
        std::string *arg3 = 0 ;
        std::vector<std::string > *arg4 = 0 ;
        int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 4) || (items > 4)) {
            SWIG_croak("Usage: OBConversion_FullConvert(self,FileList,OutputFileName,OutputFileList);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_FullConvert. Expected _p_OpenBabel__OBConversion");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__vectorTstd__string_t,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBConversion_FullConvert. Expected _p_std__vectorTstd__string_t");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(2), (void **) &arg3, SWIGTYPE_p_std__string,0) < 0) {
                SWIG_croak("Type error in argument 3 of OBConversion_FullConvert. Expected _p_std__string");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(3), (void **) &arg4, SWIGTYPE_p_std__vectorTstd__string_t,0) < 0) {
                SWIG_croak("Type error in argument 4 of OBConversion_FullConvert. Expected _p_std__vectorTstd__string_t");
            }
        }
        result = (int)(arg1)->FullConvert(*arg2,*arg3,*arg4);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_AddChemObject) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        OpenBabel::OBBase *arg2 = (OpenBabel::OBBase *) 0 ;
        int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBConversion_AddChemObject(self,pOb);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_AddChemObject. Expected _p_OpenBabel__OBConversion");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBBase,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBConversion_AddChemObject. Expected _p_OpenBabel__OBBase");
            }
        }
        result = (int)(arg1)->AddChemObject(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_GetChemObject) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        OpenBabel::OBBase *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBConversion_GetChemObject(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_GetChemObject. Expected _p_OpenBabel__OBConversion");
            }
        }
        result = (OpenBabel::OBBase *)(arg1)->GetChemObject();
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBBase, 0|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_IsLast) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBConversion_IsLast(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_IsLast. Expected _p_OpenBabel__OBConversion");
            }
        }
        result = (bool)(arg1)->IsLast();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_IsFirstInput) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBConversion_IsFirstInput(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_IsFirstInput. Expected _p_OpenBabel__OBConversion");
            }
        }
        result = (bool)(arg1)->IsFirstInput();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_GetOutputIndex) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBConversion_GetOutputIndex(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_GetOutputIndex. Expected _p_OpenBabel__OBConversion");
            }
        }
        result = (int)((OpenBabel::OBConversion const *)arg1)->GetOutputIndex();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_SetOutputIndex) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        int arg2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBConversion_SetOutputIndex(self,indx);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_SetOutputIndex. Expected _p_OpenBabel__OBConversion");
            }
        }
        arg2 = (int) SvIV(ST(1));
        (arg1)->SetOutputIndex(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_SetMoreFilesToCome) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBConversion_SetMoreFilesToCome(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_SetMoreFilesToCome. Expected _p_OpenBabel__OBConversion");
            }
        }
        (arg1)->SetMoreFilesToCome();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_SetOneObjectOnly) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBConversion_SetOneObjectOnly(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_SetOneObjectOnly. Expected _p_OpenBabel__OBConversion");
            }
        }
        (arg1)->SetOneObjectOnly();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_GetDefaultFormat) {
    {
        OpenBabel::OBFormat *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 0) || (items > 0)) {
            SWIG_croak("Usage: OBConversion_GetDefaultFormat();");
        }
        result = (OpenBabel::OBFormat *)OpenBabel::OBConversion::GetDefaultFormat();
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBFormat, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_Write__SWIG_0) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        OpenBabel::OBBase *arg2 = (OpenBabel::OBBase *) 0 ;
        std::ostream *arg3 = (std::ostream *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBConversion_Write(self,pOb,pout);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_Write. Expected _p_OpenBabel__OBConversion");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBBase,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBConversion_Write. Expected _p_OpenBabel__OBBase");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(2), (void **) &arg3, SWIGTYPE_p_std__ostream,0) < 0) {
                SWIG_croak("Type error in argument 3 of OBConversion_Write. Expected _p_std__ostream");
            }
        }
        result = (bool)(arg1)->Write(arg2,arg3);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_Write__SWIG_1) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        OpenBabel::OBBase *arg2 = (OpenBabel::OBBase *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBConversion_Write(self,pOb);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_Write. Expected _p_OpenBabel__OBConversion");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBBase,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBConversion_Write. Expected _p_OpenBabel__OBBase");
            }
        }
        result = (bool)(arg1)->Write(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_Write) {
    dXSARGS;
    
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBConversion, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBBase, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBConversion_Write__SWIG_1); return;
            }
        }
    }
    if (items == 3) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBConversion, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBBase, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                {
                    void *tmp;
                    if (SWIG_ConvertPtr(ST(2), (void **) &tmp, SWIGTYPE_p_std__ostream, 0) == -1) {
                        _v = 0;
                    } else {
                        _v = 1;
                    }
                }
                if (_v) {
                    (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBConversion_Write__SWIG_0); return;
                }
            }
        }
    }
    
    croak("No matching function for overloaded 'OBConversion_Write'");
    XSRETURN(0);
}


XS(_wrap_OBConversion_WriteString) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        OpenBabel::OBBase *arg2 = (OpenBabel::OBBase *) 0 ;
        std::string result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBConversion_WriteString(self,pOb);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_WriteString. Expected _p_OpenBabel__OBConversion");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBBase,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBConversion_WriteString. Expected _p_OpenBabel__OBBase");
            }
        }
        result = (arg1)->WriteString(arg2);
        
        {
            if (argvi >= items) EXTEND(sp, 1);	// bump stack ptr, if needed
            char *data = const_cast<char*>((&result)->data());
            sv_setpvn(ST(argvi) = sv_newmortal(), data, (&result)->size());
            ++argvi;
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_WriteFile) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        OpenBabel::OBBase *arg2 = (OpenBabel::OBBase *) 0 ;
        std::string arg3 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBConversion_WriteFile(self,pOb,filePath);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_WriteFile. Expected _p_OpenBabel__OBConversion");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBBase,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBConversion_WriteFile. Expected _p_OpenBabel__OBBase");
            }
        }
        {
            STRLEN len;
            const char *ptr = SvPV(ST(2), len);
            if (!ptr) {
                SWIG_croak("Undefined variable in argument 3 of OBConversion_WriteFile.");
            } else {
                arg3 = std::string(ptr, len);
            }
        }
        result = (bool)(arg1)->WriteFile(arg2,arg3);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_Read__SWIG_0) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        OpenBabel::OBBase *arg2 = (OpenBabel::OBBase *) 0 ;
        std::istream *arg3 = (std::istream *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBConversion_Read(self,pOb,pin);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_Read. Expected _p_OpenBabel__OBConversion");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBBase,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBConversion_Read. Expected _p_OpenBabel__OBBase");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(2), (void **) &arg3, SWIGTYPE_p_std__istream,0) < 0) {
                SWIG_croak("Type error in argument 3 of OBConversion_Read. Expected _p_std__istream");
            }
        }
        result = (bool)(arg1)->Read(arg2,arg3);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_Read__SWIG_1) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        OpenBabel::OBBase *arg2 = (OpenBabel::OBBase *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBConversion_Read(self,pOb);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_Read. Expected _p_OpenBabel__OBConversion");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBBase,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBConversion_Read. Expected _p_OpenBabel__OBBase");
            }
        }
        result = (bool)(arg1)->Read(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_Read) {
    dXSARGS;
    
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBConversion, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBBase, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBConversion_Read__SWIG_1); return;
            }
        }
    }
    if (items == 3) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBConversion, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBBase, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                {
                    void *tmp;
                    if (SWIG_ConvertPtr(ST(2), (void **) &tmp, SWIGTYPE_p_std__istream, 0) == -1) {
                        _v = 0;
                    } else {
                        _v = 1;
                    }
                }
                if (_v) {
                    (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBConversion_Read__SWIG_0); return;
                }
            }
        }
    }
    
    croak("No matching function for overloaded 'OBConversion_Read'");
    XSRETURN(0);
}


XS(_wrap_OBConversion_ReadString) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        OpenBabel::OBBase *arg2 = (OpenBabel::OBBase *) 0 ;
        std::string arg3 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBConversion_ReadString(self,pOb,input);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_ReadString. Expected _p_OpenBabel__OBConversion");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBBase,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBConversion_ReadString. Expected _p_OpenBabel__OBBase");
            }
        }
        {
            STRLEN len;
            const char *ptr = SvPV(ST(2), len);
            if (!ptr) {
                SWIG_croak("Undefined variable in argument 3 of OBConversion_ReadString.");
            } else {
                arg3 = std::string(ptr, len);
            }
        }
        result = (bool)(arg1)->ReadString(arg2,arg3);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_ReadFile) {
    {
        OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
        OpenBabel::OBBase *arg2 = (OpenBabel::OBBase *) 0 ;
        std::string arg3 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBConversion_ReadFile(self,pOb,filePath);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBConversion,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_ReadFile. Expected _p_OpenBabel__OBConversion");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBBase,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBConversion_ReadFile. Expected _p_OpenBabel__OBBase");
            }
        }
        {
            STRLEN len;
            const char *ptr = SvPV(ST(2), len);
            if (!ptr) {
                SWIG_croak("Undefined variable in argument 3 of OBConversion_ReadFile.");
            } else {
                arg3 = std::string(ptr, len);
            }
        }
        result = (bool)(arg1)->ReadFile(arg2,arg3);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_BatchFileName) {
    {
        std::string *arg1 = 0 ;
        std::string *arg2 = 0 ;
        std::string result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBConversion_BatchFileName(BaseName,InFile);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_std__string,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_BatchFileName. Expected _p_std__string");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__string,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBConversion_BatchFileName. Expected _p_std__string");
            }
        }
        result = OpenBabel::OBConversion::BatchFileName(*arg1,*arg2);
        
        {
            if (argvi >= items) EXTEND(sp, 1);	// bump stack ptr, if needed
            char *data = const_cast<char*>((&result)->data());
            sv_setpvn(ST(argvi) = sv_newmortal(), data, (&result)->size());
            ++argvi;
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBConversion_IncrementedFileName) {
    {
        std::string *arg1 = 0 ;
        int arg2 ;
        std::string result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBConversion_IncrementedFileName(BaseName,Count);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_std__string,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBConversion_IncrementedFileName. Expected _p_std__string");
            }
        }
        arg2 = (int) SvIV(ST(1));
        result = OpenBabel::OBConversion::IncrementedFileName(*arg1,arg2);
        
        {
            if (argvi >= items) EXTEND(sp, 1);	// bump stack ptr, if needed
            char *data = const_cast<char*>((&result)->data());
            sv_setpvn(ST(argvi) = sv_newmortal(), data, (&result)->size());
            ++argvi;
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_new_OBResidue__SWIG_0) {
    {
        OpenBabel::OBResidue *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 0) || (items > 0)) {
            SWIG_croak("Usage: new_OBResidue();");
        }
        result = (OpenBabel::OBResidue *)new OpenBabel::OBResidue();
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBResidue, SWIG_SHADOW|SWIG_OWNER);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_new_OBResidue__SWIG_1) {
    {
        OpenBabel::OBResidue *arg1 = 0 ;
        OpenBabel::OBResidue *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: new_OBResidue(OpenBabel::OBResidue const &);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of new_OBResidue. Expected _p_OpenBabel__OBResidue");
            }
        }
        result = (OpenBabel::OBResidue *)new OpenBabel::OBResidue((OpenBabel::OBResidue const &)*arg1);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBResidue, SWIG_SHADOW|SWIG_OWNER);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_new_OBResidue) {
    dXSARGS;
    
    if (items == 0) {
        (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_new_OBResidue__SWIG_0); return;
    }
    if (items == 1) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBResidue, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_new_OBResidue__SWIG_1); return;
        }
    }
    
    croak("No matching function for overloaded 'new_OBResidue'");
    XSRETURN(0);
}


XS(_wrap_delete_OBResidue) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: delete_OBResidue(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of delete_OBResidue. Expected _p_OpenBabel__OBResidue");
            }
        }
        delete arg1;
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_AddAtom) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        OpenBabel::OBAtom *arg2 = (OpenBabel::OBAtom *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBResidue_AddAtom(self,atom);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_AddAtom. Expected _p_OpenBabel__OBResidue");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBResidue_AddAtom. Expected _p_OpenBabel__OBAtom");
            }
        }
        (arg1)->AddAtom(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_InsertAtom) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        OpenBabel::OBAtom *arg2 = (OpenBabel::OBAtom *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBResidue_InsertAtom(self,atom);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_InsertAtom. Expected _p_OpenBabel__OBResidue");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBResidue_InsertAtom. Expected _p_OpenBabel__OBAtom");
            }
        }
        (arg1)->InsertAtom(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_RemoveAtom) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        OpenBabel::OBAtom *arg2 = (OpenBabel::OBAtom *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBResidue_RemoveAtom(self,atom);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_RemoveAtom. Expected _p_OpenBabel__OBResidue");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBResidue_RemoveAtom. Expected _p_OpenBabel__OBAtom");
            }
        }
        (arg1)->RemoveAtom(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_Clear) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBResidue_Clear(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_Clear. Expected _p_OpenBabel__OBResidue");
            }
        }
        (arg1)->Clear();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_SetName) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        std::string *arg2 = 0 ;
        std::string temp2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBResidue_SetName(self,resname);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_SetName. Expected _p_OpenBabel__OBResidue");
            }
        }
        {
            STRLEN len;
            const char *ptr = SvPV(ST(1), len);
            if (!ptr) {
                SWIG_croak("Undefined variable in argument 2 of OBResidue_SetName.");
            } else {
                temp2.assign(ptr, len);
                arg2 = &temp2;
            }
        }
        (arg1)->SetName((std::string const &)*arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_SetNum) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        unsigned int arg2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBResidue_SetNum(self,resnum);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_SetNum. Expected _p_OpenBabel__OBResidue");
            }
        }
        arg2 = (unsigned int) SvUV(ST(1));
        (arg1)->SetNum(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_SetChain) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        char arg2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBResidue_SetChain(self,chain);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_SetChain. Expected _p_OpenBabel__OBResidue");
            }
        }
        arg2 = (char) *SvPV(ST(1),PL_na);
        (arg1)->SetChain(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_SetChainNum) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        unsigned int arg2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBResidue_SetChainNum(self,chainnum);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_SetChainNum. Expected _p_OpenBabel__OBResidue");
            }
        }
        arg2 = (unsigned int) SvUV(ST(1));
        (arg1)->SetChainNum(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_SetIdx) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        unsigned int arg2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBResidue_SetIdx(self,idx);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_SetIdx. Expected _p_OpenBabel__OBResidue");
            }
        }
        arg2 = (unsigned int) SvUV(ST(1));
        (arg1)->SetIdx(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_SetAtomID) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        OpenBabel::OBAtom *arg2 = (OpenBabel::OBAtom *) 0 ;
        std::string *arg3 = 0 ;
        std::string temp3 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBResidue_SetAtomID(self,atom,id);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_SetAtomID. Expected _p_OpenBabel__OBResidue");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBResidue_SetAtomID. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            STRLEN len;
            const char *ptr = SvPV(ST(2), len);
            if (!ptr) {
                SWIG_croak("Undefined variable in argument 3 of OBResidue_SetAtomID.");
            } else {
                temp3.assign(ptr, len);
                arg3 = &temp3;
            }
        }
        (arg1)->SetAtomID(arg2,(std::string const &)*arg3);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_SetHetAtom) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        OpenBabel::OBAtom *arg2 = (OpenBabel::OBAtom *) 0 ;
        bool arg3 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBResidue_SetHetAtom(self,atom,hetatm);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_SetHetAtom. Expected _p_OpenBabel__OBResidue");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBResidue_SetHetAtom. Expected _p_OpenBabel__OBAtom");
            }
        }
        arg3 = SvIV(ST(2)) ? true : false;
        (arg1)->SetHetAtom(arg2,arg3);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_SetSerialNum) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        OpenBabel::OBAtom *arg2 = (OpenBabel::OBAtom *) 0 ;
        unsigned int arg3 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBResidue_SetSerialNum(self,atom,sernum);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_SetSerialNum. Expected _p_OpenBabel__OBResidue");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBResidue_SetSerialNum. Expected _p_OpenBabel__OBAtom");
            }
        }
        arg3 = (unsigned int) SvUV(ST(2));
        (arg1)->SetSerialNum(arg2,arg3);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_GetName) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        std::string result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBResidue_GetName(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_GetName. Expected _p_OpenBabel__OBResidue");
            }
        }
        result = ((OpenBabel::OBResidue const *)arg1)->GetName();
        
        {
            if (argvi >= items) EXTEND(sp, 1);	// bump stack ptr, if needed
            char *data = const_cast<char*>((&result)->data());
            sv_setpvn(ST(argvi) = sv_newmortal(), data, (&result)->size());
            ++argvi;
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_GetNum) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBResidue_GetNum(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_GetNum. Expected _p_OpenBabel__OBResidue");
            }
        }
        result = (unsigned int)((OpenBabel::OBResidue const *)arg1)->GetNum();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_GetNumAtoms) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBResidue_GetNumAtoms(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_GetNumAtoms. Expected _p_OpenBabel__OBResidue");
            }
        }
        result = (unsigned int)((OpenBabel::OBResidue const *)arg1)->GetNumAtoms();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_GetChain) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        char result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBResidue_GetChain(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_GetChain. Expected _p_OpenBabel__OBResidue");
            }
        }
        result = (char)((OpenBabel::OBResidue const *)arg1)->GetChain();
        
        ST(argvi) = sv_newmortal();
        sv_setpvn((SV*)ST(argvi++), &result, 1);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_GetChainNum) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBResidue_GetChainNum(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_GetChainNum. Expected _p_OpenBabel__OBResidue");
            }
        }
        result = (unsigned int)((OpenBabel::OBResidue const *)arg1)->GetChainNum();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_GetIdx) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBResidue_GetIdx(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_GetIdx. Expected _p_OpenBabel__OBResidue");
            }
        }
        result = (unsigned int)((OpenBabel::OBResidue const *)arg1)->GetIdx();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_GetResKey) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBResidue_GetResKey(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_GetResKey. Expected _p_OpenBabel__OBResidue");
            }
        }
        result = (unsigned int)((OpenBabel::OBResidue const *)arg1)->GetResKey();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_GetAtoms) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        SwigValueWrapper<std::vector<OpenBabel::OBAtom * > > result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBResidue_GetAtoms(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_GetAtoms. Expected _p_OpenBabel__OBResidue");
            }
        }
        result = ((OpenBabel::OBResidue const *)arg1)->GetAtoms();
        
        {
            std::vector<OpenBabel::OBAtom * > * resultobj = new std::vector<OpenBabel::OBAtom * >((std::vector<OpenBabel::OBAtom * > &)result);
            ST(argvi) = sv_newmortal();
            SWIG_MakePtr(ST(argvi++), (void *) resultobj, SWIGTYPE_p_std__vectorTOpenBabel__OBAtom_p_t, 0|SWIG_OWNER);
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_GetBonds__SWIG_0) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        bool arg2 ;
        SwigValueWrapper<std::vector<OpenBabel::OBBond * > > result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBResidue_GetBonds(self,bool);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_GetBonds. Expected _p_OpenBabel__OBResidue");
            }
        }
        arg2 = SvIV(ST(1)) ? true : false;
        result = ((OpenBabel::OBResidue const *)arg1)->GetBonds(arg2);
        
        {
            std::vector<OpenBabel::OBBond * > * resultobj = new std::vector<OpenBabel::OBBond * >((std::vector<OpenBabel::OBBond * > &)result);
            ST(argvi) = sv_newmortal();
            SWIG_MakePtr(ST(argvi++), (void *) resultobj, SWIGTYPE_p_std__vectorTOpenBabel__OBBond_p_t, 0|SWIG_OWNER);
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_GetBonds__SWIG_1) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        SwigValueWrapper<std::vector<OpenBabel::OBBond * > > result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBResidue_GetBonds(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_GetBonds. Expected _p_OpenBabel__OBResidue");
            }
        }
        result = ((OpenBabel::OBResidue const *)arg1)->GetBonds();
        
        {
            std::vector<OpenBabel::OBBond * > * resultobj = new std::vector<OpenBabel::OBBond * >((std::vector<OpenBabel::OBBond * > &)result);
            ST(argvi) = sv_newmortal();
            SWIG_MakePtr(ST(argvi++), (void *) resultobj, SWIGTYPE_p_std__vectorTOpenBabel__OBBond_p_t, 0|SWIG_OWNER);
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_GetBonds) {
    dXSARGS;
    
    if (items == 1) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBResidue, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBResidue_GetBonds__SWIG_1); return;
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBResidue, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvIOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBResidue_GetBonds__SWIG_0); return;
            }
        }
    }
    
    croak("No matching function for overloaded 'OBResidue_GetBonds'");
    XSRETURN(0);
}


XS(_wrap_OBResidue_GetAtomID) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        OpenBabel::OBAtom *arg2 = (OpenBabel::OBAtom *) 0 ;
        std::string result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBResidue_GetAtomID(self,atom);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_GetAtomID. Expected _p_OpenBabel__OBResidue");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBResidue_GetAtomID. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = ((OpenBabel::OBResidue const *)arg1)->GetAtomID(arg2);
        
        {
            if (argvi >= items) EXTEND(sp, 1);	// bump stack ptr, if needed
            char *data = const_cast<char*>((&result)->data());
            sv_setpvn(ST(argvi) = sv_newmortal(), data, (&result)->size());
            ++argvi;
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_GetSerialNum) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        OpenBabel::OBAtom *arg2 = (OpenBabel::OBAtom *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBResidue_GetSerialNum(self,atom);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_GetSerialNum. Expected _p_OpenBabel__OBResidue");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBResidue_GetSerialNum. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (unsigned int)((OpenBabel::OBResidue const *)arg1)->GetSerialNum(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_GetAminoAcidProperty) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        int arg2 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBResidue_GetAminoAcidProperty(self,int);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_GetAminoAcidProperty. Expected _p_OpenBabel__OBResidue");
            }
        }
        arg2 = (int) SvIV(ST(1));
        result = (bool)((OpenBabel::OBResidue const *)arg1)->GetAminoAcidProperty(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_GetAtomProperty) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        OpenBabel::OBAtom *arg2 = (OpenBabel::OBAtom *) 0 ;
        int arg3 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBResidue_GetAtomProperty(self,OpenBabel::OBAtom *,int);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_GetAtomProperty. Expected _p_OpenBabel__OBResidue");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBResidue_GetAtomProperty. Expected _p_OpenBabel__OBAtom");
            }
        }
        arg3 = (int) SvIV(ST(2));
        result = (bool)((OpenBabel::OBResidue const *)arg1)->GetAtomProperty(arg2,arg3);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_GetResidueProperty) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        int arg2 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBResidue_GetResidueProperty(self,int);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_GetResidueProperty. Expected _p_OpenBabel__OBResidue");
            }
        }
        arg2 = (int) SvIV(ST(1));
        result = (bool)((OpenBabel::OBResidue const *)arg1)->GetResidueProperty(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_IsHetAtom) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        OpenBabel::OBAtom *arg2 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBResidue_IsHetAtom(self,atom);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_IsHetAtom. Expected _p_OpenBabel__OBResidue");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBResidue_IsHetAtom. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)((OpenBabel::OBResidue const *)arg1)->IsHetAtom(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_IsResidueType) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        int arg2 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBResidue_IsResidueType(self,int);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_IsResidueType. Expected _p_OpenBabel__OBResidue");
            }
        }
        arg2 = (int) SvIV(ST(1));
        result = (bool)((OpenBabel::OBResidue const *)arg1)->IsResidueType(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_BeginAtom) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        std::vector<OpenBabel::OBAtom * >::iterator *arg2 = 0 ;
        OpenBabel::OBAtom *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBResidue_BeginAtom(self,i);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_BeginAtom. Expected _p_OpenBabel__OBResidue");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__vectorTOpenBabel__OBAtom_p_t__iterator,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBResidue_BeginAtom. Expected _p_std__vectorTOpenBabel__OBAtom_p_t__iterator");
            }
        }
        result = (OpenBabel::OBAtom *)(arg1)->BeginAtom(*arg2);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBAtom, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_NextAtom) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        std::vector<OpenBabel::OBAtom * >::iterator *arg2 = 0 ;
        OpenBabel::OBAtom *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBResidue_NextAtom(self,i);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_NextAtom. Expected _p_OpenBabel__OBResidue");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__vectorTOpenBabel__OBAtom_p_t__iterator,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBResidue_NextAtom. Expected _p_std__vectorTOpenBabel__OBAtom_p_t__iterator");
            }
        }
        result = (OpenBabel::OBAtom *)(arg1)->NextAtom(*arg2);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBAtom, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_HasData__SWIG_0) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        std::string *arg2 = 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBResidue_HasData(self,std::string &);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_HasData. Expected _p_OpenBabel__OBResidue");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__string,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBResidue_HasData. Expected _p_std__string");
            }
        }
        result = (bool)(arg1)->HasData(*arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_HasData__SWIG_1) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        char *arg2 = (char *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBResidue_HasData(self,char const *);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_HasData. Expected _p_OpenBabel__OBResidue");
            }
        }
        if (!SvOK((SV*) ST(1))) arg2 = 0;
        else arg2 = (char *) SvPV(ST(1), PL_na);
        result = (bool)(arg1)->HasData((char const *)arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_HasData__SWIG_2) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        unsigned int arg2 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBResidue_HasData(self,type);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_HasData. Expected _p_OpenBabel__OBResidue");
            }
        }
        arg2 = (unsigned int) SvUV(ST(1));
        result = (bool)(arg1)->HasData(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_HasData) {
    dXSARGS;
    
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBResidue, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_std__string, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBResidue_HasData__SWIG_0); return;
            }
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBResidue, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvIOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBResidue_HasData__SWIG_2); return;
            }
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBResidue, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvPOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBResidue_HasData__SWIG_1); return;
            }
        }
    }
    
    croak("No matching function for overloaded 'OBResidue_HasData'");
    XSRETURN(0);
}


XS(_wrap_OBResidue_DeleteData__SWIG_0) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        unsigned int arg2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBResidue_DeleteData(self,type);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_DeleteData. Expected _p_OpenBabel__OBResidue");
            }
        }
        arg2 = (unsigned int) SvUV(ST(1));
        (arg1)->DeleteData(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_DeleteData__SWIG_1) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        OpenBabel::OBGenericData *arg2 = (OpenBabel::OBGenericData *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBResidue_DeleteData(self,OpenBabel::OBGenericData *);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_DeleteData. Expected _p_OpenBabel__OBResidue");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBGenericData,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBResidue_DeleteData. Expected _p_OpenBabel__OBGenericData");
            }
        }
        (arg1)->DeleteData(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_DeleteData__SWIG_2) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        std::vector<OpenBabel::OBGenericData * > *arg2 = 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBResidue_DeleteData(self,std::vector<OpenBabel::OBGenericData * > &);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_DeleteData. Expected _p_OpenBabel__OBResidue");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__vectorTOpenBabel__OBGenericData_p_t,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBResidue_DeleteData. Expected _p_std__vectorTOpenBabel__OBGenericData_p_t");
            }
        }
        (arg1)->DeleteData(*arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_DeleteData) {
    dXSARGS;
    
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBResidue, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBGenericData, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBResidue_DeleteData__SWIG_1); return;
            }
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBResidue, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_std__vectorTOpenBabel__OBGenericData_p_t, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBResidue_DeleteData__SWIG_2); return;
            }
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBResidue, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvIOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBResidue_DeleteData__SWIG_0); return;
            }
        }
    }
    
    croak("No matching function for overloaded 'OBResidue_DeleteData'");
    XSRETURN(0);
}


XS(_wrap_OBResidue_SetData) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        OpenBabel::OBGenericData *arg2 = (OpenBabel::OBGenericData *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBResidue_SetData(self,d);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_SetData. Expected _p_OpenBabel__OBResidue");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBGenericData,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBResidue_SetData. Expected _p_OpenBabel__OBGenericData");
            }
        }
        (arg1)->SetData(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_DataSize) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBResidue_DataSize(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_DataSize. Expected _p_OpenBabel__OBResidue");
            }
        }
        result = (unsigned int)(arg1)->DataSize();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_GetData__SWIG_0) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        unsigned int arg2 ;
        OpenBabel::OBGenericData *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBResidue_GetData(self,type);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_GetData. Expected _p_OpenBabel__OBResidue");
            }
        }
        arg2 = (unsigned int) SvUV(ST(1));
        result = (OpenBabel::OBGenericData *)(arg1)->GetData(arg2);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBGenericData, 0|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_GetData__SWIG_1) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        std::string *arg2 = 0 ;
        OpenBabel::OBGenericData *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBResidue_GetData(self,std::string &);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_GetData. Expected _p_OpenBabel__OBResidue");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__string,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBResidue_GetData. Expected _p_std__string");
            }
        }
        result = (OpenBabel::OBGenericData *)(arg1)->GetData(*arg2);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBGenericData, 0|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_GetData__SWIG_2) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        char *arg2 = (char *) 0 ;
        OpenBabel::OBGenericData *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBResidue_GetData(self,char const *);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_GetData. Expected _p_OpenBabel__OBResidue");
            }
        }
        if (!SvOK((SV*) ST(1))) arg2 = 0;
        else arg2 = (char *) SvPV(ST(1), PL_na);
        result = (OpenBabel::OBGenericData *)(arg1)->GetData((char const *)arg2);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBGenericData, 0|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_GetData__SWIG_3) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        std::vector<OpenBabel::OBGenericData * > *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBResidue_GetData(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_GetData. Expected _p_OpenBabel__OBResidue");
            }
        }
        {
            std::vector<OpenBabel::OBGenericData * > &_result_ref = (arg1)->GetData();
            result = (std::vector<OpenBabel::OBGenericData * > *) &_result_ref;
        }
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_std__vectorTOpenBabel__OBGenericData_p_t, 0|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_GetData) {
    dXSARGS;
    
    if (items == 1) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBResidue, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBResidue_GetData__SWIG_3); return;
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBResidue, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_std__string, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBResidue_GetData__SWIG_1); return;
            }
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBResidue, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvIOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBResidue_GetData__SWIG_0); return;
            }
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBResidue, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvPOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBResidue_GetData__SWIG_2); return;
            }
        }
    }
    
    croak("No matching function for overloaded 'OBResidue_GetData'");
    XSRETURN(0);
}


XS(_wrap_OBResidue_BeginData) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        SwigValueWrapper<std::vector<OpenBabel::OBGenericData * >::iterator > result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBResidue_BeginData(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_BeginData. Expected _p_OpenBabel__OBResidue");
            }
        }
        result = (arg1)->BeginData();
        
        {
            std::vector<OpenBabel::OBGenericData * >::iterator * resultobj = new std::vector<OpenBabel::OBGenericData * >::iterator((std::vector<OpenBabel::OBGenericData * >::iterator &)result);
            ST(argvi) = sv_newmortal();
            SWIG_MakePtr(ST(argvi++), (void *) resultobj, SWIGTYPE_p_std__vectorTOpenBabel__OBGenericData_p_t__iterator, 0|SWIG_OWNER);
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBResidue_EndData) {
    {
        OpenBabel::OBResidue *arg1 = (OpenBabel::OBResidue *) 0 ;
        SwigValueWrapper<std::vector<OpenBabel::OBGenericData * >::iterator > result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBResidue_EndData(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBResidue_EndData. Expected _p_OpenBabel__OBResidue");
            }
        }
        result = (arg1)->EndData();
        
        {
            std::vector<OpenBabel::OBGenericData * >::iterator * resultobj = new std::vector<OpenBabel::OBGenericData * >::iterator((std::vector<OpenBabel::OBGenericData * >::iterator &)result);
            ST(argvi) = sv_newmortal();
            SWIG_MakePtr(ST(argvi++), (void *) resultobj, SWIGTYPE_p_std__vectorTOpenBabel__OBGenericData_p_t__iterator, 0|SWIG_OWNER);
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_new_OBAtom) {
    {
        OpenBabel::OBAtom *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 0) || (items > 0)) {
            SWIG_croak("Usage: new_OBAtom();");
        }
        result = (OpenBabel::OBAtom *)new OpenBabel::OBAtom();
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBAtom, SWIG_SHADOW|SWIG_OWNER);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_delete_OBAtom) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: delete_OBAtom(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of delete_OBAtom. Expected _p_OpenBabel__OBAtom");
            }
        }
        delete arg1;
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_Clear) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_Clear(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_Clear. Expected _p_OpenBabel__OBAtom");
            }
        }
        (arg1)->Clear();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_SetIdx) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        int arg2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_SetIdx(self,idx);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_SetIdx. Expected _p_OpenBabel__OBAtom");
            }
        }
        arg2 = (int) SvIV(ST(1));
        (arg1)->SetIdx(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_SetHyb) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        int arg2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_SetHyb(self,hyb);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_SetHyb. Expected _p_OpenBabel__OBAtom");
            }
        }
        arg2 = (int) SvIV(ST(1));
        (arg1)->SetHyb(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_SetAtomicNum) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        int arg2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_SetAtomicNum(self,atomicnum);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_SetAtomicNum. Expected _p_OpenBabel__OBAtom");
            }
        }
        arg2 = (int) SvIV(ST(1));
        (arg1)->SetAtomicNum(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_SetIsotope) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        unsigned int arg2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_SetIsotope(self,iso);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_SetIsotope. Expected _p_OpenBabel__OBAtom");
            }
        }
        arg2 = (unsigned int) SvUV(ST(1));
        (arg1)->SetIsotope(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_SetImplicitValence) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        int arg2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_SetImplicitValence(self,val);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_SetImplicitValence. Expected _p_OpenBabel__OBAtom");
            }
        }
        arg2 = (int) SvIV(ST(1));
        (arg1)->SetImplicitValence(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_IncrementImplicitValence) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_IncrementImplicitValence(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_IncrementImplicitValence. Expected _p_OpenBabel__OBAtom");
            }
        }
        (arg1)->IncrementImplicitValence();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_DecrementImplicitValence) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_DecrementImplicitValence(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_DecrementImplicitValence. Expected _p_OpenBabel__OBAtom");
            }
        }
        (arg1)->DecrementImplicitValence();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_SetFormalCharge) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        int arg2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_SetFormalCharge(self,fcharge);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_SetFormalCharge. Expected _p_OpenBabel__OBAtom");
            }
        }
        arg2 = (int) SvIV(ST(1));
        (arg1)->SetFormalCharge(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_SetSpinMultiplicity) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        short arg2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_SetSpinMultiplicity(self,spin);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_SetSpinMultiplicity. Expected _p_OpenBabel__OBAtom");
            }
        }
        arg2 = (short) SvIV(ST(1));
        (arg1)->SetSpinMultiplicity(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_SetType__SWIG_0) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        char *arg2 = (char *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_SetType(self,type);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_SetType. Expected _p_OpenBabel__OBAtom");
            }
        }
        if (!SvOK((SV*) ST(1))) arg2 = 0;
        else arg2 = (char *) SvPV(ST(1), PL_na);
        (arg1)->SetType(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_SetType__SWIG_1) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        std::string *arg2 = 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_SetType(self,type);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_SetType. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__string,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBAtom_SetType. Expected _p_std__string");
            }
        }
        (arg1)->SetType(*arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_SetType) {
    dXSARGS;
    
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_std__string, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBAtom_SetType__SWIG_1); return;
            }
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvPOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBAtom_SetType__SWIG_0); return;
            }
        }
    }
    
    croak("No matching function for overloaded 'OBAtom_SetType'");
    XSRETURN(0);
}


XS(_wrap_OBAtom_SetPartialCharge) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        double arg2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_SetPartialCharge(self,pcharge);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_SetPartialCharge. Expected _p_OpenBabel__OBAtom");
            }
        }
        arg2 = (double) SvNV(ST(1));
        
        (arg1)->SetPartialCharge(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_SetVector__SWIG_0) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        OpenBabel::vector3 *arg2 = 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_SetVector(self,v);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_SetVector. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__vector3,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBAtom_SetVector. Expected _p_OpenBabel__vector3");
            }
        }
        (arg1)->SetVector(*arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_SetVector__SWIG_1) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        double arg2 ;
        double arg3 ;
        double arg4 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 4) || (items > 4)) {
            SWIG_croak("Usage: OBAtom_SetVector(self,x,y,z);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_SetVector. Expected _p_OpenBabel__OBAtom");
            }
        }
        arg2 = (double) SvNV(ST(1));
        
        arg3 = (double) SvNV(ST(2));
        
        arg4 = (double) SvNV(ST(3));
        
        (arg1)->SetVector(arg2,arg3,arg4);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_SetCoordPtr) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        double **arg2 = (double **) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_SetCoordPtr(self,c);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_SetCoordPtr. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_p_double,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBAtom_SetCoordPtr. Expected _p_p_double");
            }
        }
        (arg1)->SetCoordPtr(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_SetVector__SWIG_2) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_SetVector(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_SetVector. Expected _p_OpenBabel__OBAtom");
            }
        }
        (arg1)->SetVector();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_SetVector) {
    dXSARGS;
    
    if (items == 1) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBAtom_SetVector__SWIG_2); return;
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_OpenBabel__vector3, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBAtom_SetVector__SWIG_0); return;
            }
        }
    }
    if (items == 4) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvNIOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                {
                    _v = SvNIOK(ST(2)) ? 1 : 0;
                }
                if (_v) {
                    {
                        _v = SvNIOK(ST(3)) ? 1 : 0;
                    }
                    if (_v) {
                        (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBAtom_SetVector__SWIG_1); return;
                    }
                }
            }
        }
    }
    
    croak("No matching function for overloaded 'OBAtom_SetVector'");
    XSRETURN(0);
}


XS(_wrap_OBAtom_SetResidue) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        OpenBabel::OBResidue *arg2 = (OpenBabel::OBResidue *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_SetResidue(self,res);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_SetResidue. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBAtom_SetResidue. Expected _p_OpenBabel__OBResidue");
            }
        }
        (arg1)->SetResidue(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_SetAromatic) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_SetAromatic(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_SetAromatic. Expected _p_OpenBabel__OBAtom");
            }
        }
        (arg1)->SetAromatic();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_UnsetAromatic) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_UnsetAromatic(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_UnsetAromatic. Expected _p_OpenBabel__OBAtom");
            }
        }
        (arg1)->UnsetAromatic();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_SetClockwiseStereo) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_SetClockwiseStereo(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_SetClockwiseStereo. Expected _p_OpenBabel__OBAtom");
            }
        }
        (arg1)->SetClockwiseStereo();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_SetAntiClockwiseStereo) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_SetAntiClockwiseStereo(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_SetAntiClockwiseStereo. Expected _p_OpenBabel__OBAtom");
            }
        }
        (arg1)->SetAntiClockwiseStereo();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_SetPositiveStereo) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_SetPositiveStereo(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_SetPositiveStereo. Expected _p_OpenBabel__OBAtom");
            }
        }
        (arg1)->SetPositiveStereo();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_SetNegativeStereo) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_SetNegativeStereo(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_SetNegativeStereo. Expected _p_OpenBabel__OBAtom");
            }
        }
        (arg1)->SetNegativeStereo();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_UnsetStereo) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_UnsetStereo(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_UnsetStereo. Expected _p_OpenBabel__OBAtom");
            }
        }
        (arg1)->UnsetStereo();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_SetInRing) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_SetInRing(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_SetInRing. Expected _p_OpenBabel__OBAtom");
            }
        }
        (arg1)->SetInRing();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_SetChiral) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_SetChiral(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_SetChiral. Expected _p_OpenBabel__OBAtom");
            }
        }
        (arg1)->SetChiral();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_ClearCoordPtr) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_ClearCoordPtr(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_ClearCoordPtr. Expected _p_OpenBabel__OBAtom");
            }
        }
        (arg1)->ClearCoordPtr();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_GetFormalCharge) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_GetFormalCharge(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_GetFormalCharge. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (int)((OpenBabel::OBAtom const *)arg1)->GetFormalCharge();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_GetAtomicNum) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_GetAtomicNum(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_GetAtomicNum. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (unsigned int)((OpenBabel::OBAtom const *)arg1)->GetAtomicNum();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_GetIsotope) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        unsigned short result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_GetIsotope(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_GetIsotope. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (unsigned short)((OpenBabel::OBAtom const *)arg1)->GetIsotope();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_GetSpinMultiplicity) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_GetSpinMultiplicity(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_GetSpinMultiplicity. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (int)((OpenBabel::OBAtom const *)arg1)->GetSpinMultiplicity();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_GetAtomicMass) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_GetAtomicMass(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_GetAtomicMass. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (double)((OpenBabel::OBAtom const *)arg1)->GetAtomicMass();
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_GetExactMass) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_GetExactMass(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_GetExactMass. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (double)((OpenBabel::OBAtom const *)arg1)->GetExactMass();
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_GetIdx) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_GetIdx(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_GetIdx. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (unsigned int)((OpenBabel::OBAtom const *)arg1)->GetIdx();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_GetCoordinateIdx) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_GetCoordinateIdx(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_GetCoordinateIdx. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (unsigned int)((OpenBabel::OBAtom const *)arg1)->GetCoordinateIdx();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_GetCIdx) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_GetCIdx(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_GetCIdx. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (unsigned int)((OpenBabel::OBAtom const *)arg1)->GetCIdx();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_GetValence) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_GetValence(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_GetValence. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (unsigned int)((OpenBabel::OBAtom const *)arg1)->GetValence();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_GetHyb) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_GetHyb(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_GetHyb. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (unsigned int)((OpenBabel::OBAtom const *)arg1)->GetHyb();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_GetImplicitValence) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_GetImplicitValence(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_GetImplicitValence. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (unsigned int)((OpenBabel::OBAtom const *)arg1)->GetImplicitValence();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_GetHvyValence) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_GetHvyValence(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_GetHvyValence. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (unsigned int)((OpenBabel::OBAtom const *)arg1)->GetHvyValence();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_GetHeteroValence) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_GetHeteroValence(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_GetHeteroValence. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (unsigned int)((OpenBabel::OBAtom const *)arg1)->GetHeteroValence();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_GetType) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        char *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_GetType(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_GetType. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (char *)(arg1)->GetType();
        
        ST(argvi) = sv_newmortal();
        if (result) {
            sv_setpv((SV*)ST(argvi++), (char *) result);
        } else {
            sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_GetX) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_GetX(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_GetX. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (double)(arg1)->GetX();
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_GetY) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_GetY(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_GetY. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (double)(arg1)->GetY();
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_GetZ) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_GetZ(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_GetZ. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (double)(arg1)->GetZ();
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_x) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_x(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_x. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (double)(arg1)->x();
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_y) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_y(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_y. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (double)(arg1)->y();
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_z) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_z(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_z. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (double)(arg1)->z();
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_GetCoordinate) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        double *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_GetCoordinate(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_GetCoordinate. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (double *)(arg1)->GetCoordinate();
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_double, 0|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_GetVector) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        OpenBabel::vector3 *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_GetVector(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_GetVector. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            OpenBabel::vector3 &_result_ref = (arg1)->GetVector();
            result = (OpenBabel::vector3 *) &_result_ref;
        }
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__vector3, 0|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_GetPartialCharge) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_GetPartialCharge(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_GetPartialCharge. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (double)(arg1)->GetPartialCharge();
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_GetResidue) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        OpenBabel::OBResidue *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_GetResidue(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_GetResidue. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (OpenBabel::OBResidue *)(arg1)->GetResidue();
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBResidue, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_GetNewBondVector) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        OpenBabel::vector3 *arg2 = 0 ;
        double arg3 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBAtom_GetNewBondVector(self,v,length);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_GetNewBondVector. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__vector3,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBAtom_GetNewBondVector. Expected _p_OpenBabel__vector3");
            }
        }
        arg3 = (double) SvNV(ST(2));
        
        result = (bool)(arg1)->GetNewBondVector(*arg2,arg3);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_GetBond) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        OpenBabel::OBAtom *arg2 = (OpenBabel::OBAtom *) 0 ;
        OpenBabel::OBBond *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_GetBond(self,OpenBabel::OBAtom *);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_GetBond. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBAtom_GetBond. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (OpenBabel::OBBond *)(arg1)->GetBond(arg2);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBBond, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_GetNextAtom) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        OpenBabel::OBAtom *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_GetNextAtom(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_GetNextAtom. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (OpenBabel::OBAtom *)(arg1)->GetNextAtom();
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBAtom, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_BeginBonds) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        SwigValueWrapper<std::vector<OpenBabel::OBEdgeBase * >::iterator > result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_BeginBonds(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_BeginBonds. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (arg1)->BeginBonds();
        
        {
            std::vector<OpenBabel::OBEdgeBase * >::iterator * resultobj = new std::vector<OpenBabel::OBEdgeBase * >::iterator((std::vector<OpenBabel::OBEdgeBase * >::iterator &)result);
            ST(argvi) = sv_newmortal();
            SWIG_MakePtr(ST(argvi++), (void *) resultobj, SWIGTYPE_p_std__vectorTOpenBabel__OBEdgeBase_p_t__iterator, 0|SWIG_OWNER);
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_EndBonds) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        SwigValueWrapper<std::vector<OpenBabel::OBEdgeBase * >::iterator > result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_EndBonds(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_EndBonds. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (arg1)->EndBonds();
        
        {
            std::vector<OpenBabel::OBEdgeBase * >::iterator * resultobj = new std::vector<OpenBabel::OBEdgeBase * >::iterator((std::vector<OpenBabel::OBEdgeBase * >::iterator &)result);
            ST(argvi) = sv_newmortal();
            SWIG_MakePtr(ST(argvi++), (void *) resultobj, SWIGTYPE_p_std__vectorTOpenBabel__OBEdgeBase_p_t__iterator, 0|SWIG_OWNER);
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_BeginBond) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        std::vector<OpenBabel::OBEdgeBase * >::iterator *arg2 = 0 ;
        OpenBabel::OBBond *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_BeginBond(self,i);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_BeginBond. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__vectorTOpenBabel__OBEdgeBase_p_t__iterator,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBAtom_BeginBond. Expected _p_std__vectorTOpenBabel__OBEdgeBase_p_t__iterator");
            }
        }
        result = (OpenBabel::OBBond *)(arg1)->BeginBond(*arg2);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBBond, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_NextBond) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        std::vector<OpenBabel::OBEdgeBase * >::iterator *arg2 = 0 ;
        OpenBabel::OBBond *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_NextBond(self,i);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_NextBond. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__vectorTOpenBabel__OBEdgeBase_p_t__iterator,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBAtom_NextBond. Expected _p_std__vectorTOpenBabel__OBEdgeBase_p_t__iterator");
            }
        }
        result = (OpenBabel::OBBond *)(arg1)->NextBond(*arg2);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBBond, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_BeginNbrAtom) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        std::vector<OpenBabel::OBEdgeBase * >::iterator *arg2 = 0 ;
        OpenBabel::OBAtom *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_BeginNbrAtom(self,std::vector<OpenBabel::OBEdgeBase * >::iterator &);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_BeginNbrAtom. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__vectorTOpenBabel__OBEdgeBase_p_t__iterator,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBAtom_BeginNbrAtom. Expected _p_std__vectorTOpenBabel__OBEdgeBase_p_t__iterator");
            }
        }
        result = (OpenBabel::OBAtom *)(arg1)->BeginNbrAtom(*arg2);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBAtom, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_NextNbrAtom) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        std::vector<OpenBabel::OBEdgeBase * >::iterator *arg2 = 0 ;
        OpenBabel::OBAtom *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_NextNbrAtom(self,std::vector<OpenBabel::OBEdgeBase * >::iterator &);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_NextNbrAtom. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__vectorTOpenBabel__OBEdgeBase_p_t__iterator,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBAtom_NextNbrAtom. Expected _p_std__vectorTOpenBabel__OBEdgeBase_p_t__iterator");
            }
        }
        result = (OpenBabel::OBAtom *)(arg1)->NextNbrAtom(*arg2);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBAtom, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_GetDistance__SWIG_0) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        int arg2 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_GetDistance(self,index);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_GetDistance. Expected _p_OpenBabel__OBAtom");
            }
        }
        arg2 = (int) SvIV(ST(1));
        result = (double)(arg1)->GetDistance(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_GetDistance__SWIG_1) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        OpenBabel::OBAtom *arg2 = (OpenBabel::OBAtom *) 0 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_GetDistance(self,OpenBabel::OBAtom *);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_GetDistance. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBAtom_GetDistance. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (double)(arg1)->GetDistance(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_GetDistance) {
    dXSARGS;
    
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBAtom_GetDistance__SWIG_1); return;
            }
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvIOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBAtom_GetDistance__SWIG_0); return;
            }
        }
    }
    
    croak("No matching function for overloaded 'OBAtom_GetDistance'");
    XSRETURN(0);
}


XS(_wrap_OBAtom_GetAngle__SWIG_0) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        int arg2 ;
        int arg3 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBAtom_GetAngle(self,b,c);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_GetAngle. Expected _p_OpenBabel__OBAtom");
            }
        }
        arg2 = (int) SvIV(ST(1));
        arg3 = (int) SvIV(ST(2));
        result = (double)(arg1)->GetAngle(arg2,arg3);
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_GetAngle__SWIG_1) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        OpenBabel::OBAtom *arg2 = (OpenBabel::OBAtom *) 0 ;
        OpenBabel::OBAtom *arg3 = (OpenBabel::OBAtom *) 0 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBAtom_GetAngle(self,b,c);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_GetAngle. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBAtom_GetAngle. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(2), (void **) &arg3, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 3 of OBAtom_GetAngle. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (double)(arg1)->GetAngle(arg2,arg3);
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_GetAngle) {
    dXSARGS;
    
    if (items == 3) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                {
                    void *tmp;
                    if (SWIG_ConvertPtr(ST(2), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                        _v = 0;
                    } else {
                        _v = 1;
                    }
                }
                if (_v) {
                    (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBAtom_GetAngle__SWIG_1); return;
                }
            }
        }
    }
    if (items == 3) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvIOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                {
                    _v = SvIOK(ST(2)) ? 1 : 0;
                }
                if (_v) {
                    (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBAtom_GetAngle__SWIG_0); return;
                }
            }
        }
    }
    
    croak("No matching function for overloaded 'OBAtom_GetAngle'");
    XSRETURN(0);
}


XS(_wrap_OBAtom_NewResidue) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_NewResidue(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_NewResidue. Expected _p_OpenBabel__OBAtom");
            }
        }
        (arg1)->NewResidue();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_DeleteResidue) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_DeleteResidue(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_DeleteResidue. Expected _p_OpenBabel__OBAtom");
            }
        }
        (arg1)->DeleteResidue();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_AddBond) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        OpenBabel::OBBond *arg2 = (OpenBabel::OBBond *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_AddBond(self,bond);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_AddBond. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBAtom_AddBond. Expected _p_OpenBabel__OBBond");
            }
        }
        (arg1)->AddBond(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_InsertBond) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        std::vector<OpenBabel::OBEdgeBase * >::iterator *arg2 = 0 ;
        OpenBabel::OBBond *arg3 = (OpenBabel::OBBond *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBAtom_InsertBond(self,i,bond);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_InsertBond. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__vectorTOpenBabel__OBEdgeBase_p_t__iterator,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBAtom_InsertBond. Expected _p_std__vectorTOpenBabel__OBEdgeBase_p_t__iterator");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(2), (void **) &arg3, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 3 of OBAtom_InsertBond. Expected _p_OpenBabel__OBBond");
            }
        }
        (arg1)->InsertBond(*arg2,arg3);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_DeleteBond) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        OpenBabel::OBBond *arg2 = (OpenBabel::OBBond *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_DeleteBond(self,OpenBabel::OBBond *);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_DeleteBond. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBAtom_DeleteBond. Expected _p_OpenBabel__OBBond");
            }
        }
        result = (bool)(arg1)->DeleteBond(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_ClearBond) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_ClearBond(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_ClearBond. Expected _p_OpenBabel__OBAtom");
            }
        }
        (arg1)->ClearBond();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_CountFreeOxygens) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_CountFreeOxygens(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_CountFreeOxygens. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (unsigned int)((OpenBabel::OBAtom const *)arg1)->CountFreeOxygens();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_ImplicitHydrogenCount) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_ImplicitHydrogenCount(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_ImplicitHydrogenCount. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (unsigned int)((OpenBabel::OBAtom const *)arg1)->ImplicitHydrogenCount();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_ExplicitHydrogenCount) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_ExplicitHydrogenCount(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_ExplicitHydrogenCount. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (unsigned int)((OpenBabel::OBAtom const *)arg1)->ExplicitHydrogenCount();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_MemberOfRingCount) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_MemberOfRingCount(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_MemberOfRingCount. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (unsigned int)((OpenBabel::OBAtom const *)arg1)->MemberOfRingCount();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_MemberOfRingSize) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_MemberOfRingSize(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_MemberOfRingSize. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (unsigned int)((OpenBabel::OBAtom const *)arg1)->MemberOfRingSize();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_SmallestBondAngle) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_SmallestBondAngle(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_SmallestBondAngle. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (double)(arg1)->SmallestBondAngle();
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_AverageBondAngle) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_AverageBondAngle(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_AverageBondAngle. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (double)(arg1)->AverageBondAngle();
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_BOSum) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_BOSum(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_BOSum. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (unsigned int)((OpenBabel::OBAtom const *)arg1)->BOSum();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_KBOSum) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_KBOSum(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_KBOSum. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (unsigned int)((OpenBabel::OBAtom const *)arg1)->KBOSum();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_HtoMethyl) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_HtoMethyl(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_HtoMethyl. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->HtoMethyl();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_SetHybAndGeom) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        int arg2 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_SetHybAndGeom(self,int);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_SetHybAndGeom. Expected _p_OpenBabel__OBAtom");
            }
        }
        arg2 = (int) SvIV(ST(1));
        result = (bool)(arg1)->SetHybAndGeom(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_HasResidue) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_HasResidue(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_HasResidue. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->HasResidue();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_IsHydrogen) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_IsHydrogen(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_IsHydrogen. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->IsHydrogen();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_IsCarbon) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_IsCarbon(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_IsCarbon. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->IsCarbon();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_IsNitrogen) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_IsNitrogen(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_IsNitrogen. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->IsNitrogen();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_IsOxygen) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_IsOxygen(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_IsOxygen. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->IsOxygen();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_IsSulfur) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_IsSulfur(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_IsSulfur. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->IsSulfur();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_IsPhosphorus) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_IsPhosphorus(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_IsPhosphorus. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->IsPhosphorus();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_IsAromatic) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_IsAromatic(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_IsAromatic. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)((OpenBabel::OBAtom const *)arg1)->IsAromatic();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_IsInRing) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_IsInRing(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_IsInRing. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)((OpenBabel::OBAtom const *)arg1)->IsInRing();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_IsInRingSize) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        int arg2 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_IsInRingSize(self,int);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_IsInRingSize. Expected _p_OpenBabel__OBAtom");
            }
        }
        arg2 = (int) SvIV(ST(1));
        result = (bool)((OpenBabel::OBAtom const *)arg1)->IsInRingSize(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_IsHeteroatom) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_IsHeteroatom(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_IsHeteroatom. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->IsHeteroatom();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_IsNotCorH) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_IsNotCorH(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_IsNotCorH. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->IsNotCorH();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_IsConnected) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        OpenBabel::OBAtom *arg2 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_IsConnected(self,OpenBabel::OBAtom *);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_IsConnected. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBAtom_IsConnected. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->IsConnected(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_IsOneThree) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        OpenBabel::OBAtom *arg2 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_IsOneThree(self,OpenBabel::OBAtom *);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_IsOneThree. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBAtom_IsOneThree. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->IsOneThree(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_IsOneFour) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        OpenBabel::OBAtom *arg2 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_IsOneFour(self,OpenBabel::OBAtom *);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_IsOneFour. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBAtom_IsOneFour. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->IsOneFour(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_IsCarboxylOxygen) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_IsCarboxylOxygen(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_IsCarboxylOxygen. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->IsCarboxylOxygen();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_IsPhosphateOxygen) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_IsPhosphateOxygen(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_IsPhosphateOxygen. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->IsPhosphateOxygen();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_IsSulfateOxygen) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_IsSulfateOxygen(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_IsSulfateOxygen. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->IsSulfateOxygen();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_IsNitroOxygen) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_IsNitroOxygen(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_IsNitroOxygen. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->IsNitroOxygen();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_IsAmideNitrogen) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_IsAmideNitrogen(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_IsAmideNitrogen. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->IsAmideNitrogen();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_IsPolarHydrogen) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_IsPolarHydrogen(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_IsPolarHydrogen. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->IsPolarHydrogen();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_IsNonPolarHydrogen) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_IsNonPolarHydrogen(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_IsNonPolarHydrogen. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->IsNonPolarHydrogen();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_IsAromaticNOxide) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_IsAromaticNOxide(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_IsAromaticNOxide. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->IsAromaticNOxide();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_IsChiral) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_IsChiral(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_IsChiral. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->IsChiral();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_IsAxial) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_IsAxial(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_IsAxial. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->IsAxial();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_IsClockwise) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_IsClockwise(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_IsClockwise. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->IsClockwise();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_IsAntiClockwise) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_IsAntiClockwise(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_IsAntiClockwise. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->IsAntiClockwise();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_IsPositiveStereo) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_IsPositiveStereo(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_IsPositiveStereo. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->IsPositiveStereo();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_IsNegativeStereo) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_IsNegativeStereo(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_IsNegativeStereo. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->IsNegativeStereo();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_HasChiralitySpecified) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_HasChiralitySpecified(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_HasChiralitySpecified. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->HasChiralitySpecified();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_HasChiralVolume) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_HasChiralVolume(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_HasChiralVolume. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->HasChiralVolume();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_IsHbondAcceptor) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_IsHbondAcceptor(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_IsHbondAcceptor. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->IsHbondAcceptor();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_IsHbondDonor) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_IsHbondDonor(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_IsHbondDonor. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->IsHbondDonor();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_IsHbondDonorH) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_IsHbondDonorH(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_IsHbondDonorH. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->IsHbondDonorH();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_HasAlphaBetaUnsat__SWIG_0) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        bool arg2 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_HasAlphaBetaUnsat(self,includePandS);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_HasAlphaBetaUnsat. Expected _p_OpenBabel__OBAtom");
            }
        }
        arg2 = SvIV(ST(1)) ? true : false;
        result = (bool)(arg1)->HasAlphaBetaUnsat(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_HasAlphaBetaUnsat__SWIG_1) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_HasAlphaBetaUnsat(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_HasAlphaBetaUnsat. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->HasAlphaBetaUnsat();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_HasAlphaBetaUnsat) {
    dXSARGS;
    
    if (items == 1) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBAtom_HasAlphaBetaUnsat__SWIG_1); return;
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvIOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBAtom_HasAlphaBetaUnsat__SWIG_0); return;
            }
        }
    }
    
    croak("No matching function for overloaded 'OBAtom_HasAlphaBetaUnsat'");
    XSRETURN(0);
}


XS(_wrap_OBAtom_HasBondOfOrder) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        unsigned int arg2 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_HasBondOfOrder(self,unsigned int);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_HasBondOfOrder. Expected _p_OpenBabel__OBAtom");
            }
        }
        arg2 = (unsigned int) SvUV(ST(1));
        result = (bool)(arg1)->HasBondOfOrder(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_CountBondsOfOrder) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        unsigned int arg2 ;
        int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_CountBondsOfOrder(self,unsigned int);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_CountBondsOfOrder. Expected _p_OpenBabel__OBAtom");
            }
        }
        arg2 = (unsigned int) SvUV(ST(1));
        result = (int)(arg1)->CountBondsOfOrder(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_HasNonSingleBond) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_HasNonSingleBond(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_HasNonSingleBond. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->HasNonSingleBond();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_HasSingleBond) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_HasSingleBond(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_HasSingleBond. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->HasSingleBond();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_HasDoubleBond) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_HasDoubleBond(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_HasDoubleBond. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->HasDoubleBond();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_HasAromaticBond) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_HasAromaticBond(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_HasAromaticBond. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->HasAromaticBond();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_MatchesSMARTS) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        char *arg2 = (char *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_MatchesSMARTS(self,char const *);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_MatchesSMARTS. Expected _p_OpenBabel__OBAtom");
            }
        }
        if (!SvOK((SV*) ST(1))) arg2 = 0;
        else arg2 = (char *) SvPV(ST(1), PL_na);
        result = (bool)(arg1)->MatchesSMARTS((char const *)arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_HasData__SWIG_0) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        std::string *arg2 = 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_HasData(self,std::string &);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_HasData. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__string,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBAtom_HasData. Expected _p_std__string");
            }
        }
        result = (bool)(arg1)->HasData(*arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_HasData__SWIG_1) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        char *arg2 = (char *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_HasData(self,char const *);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_HasData. Expected _p_OpenBabel__OBAtom");
            }
        }
        if (!SvOK((SV*) ST(1))) arg2 = 0;
        else arg2 = (char *) SvPV(ST(1), PL_na);
        result = (bool)(arg1)->HasData((char const *)arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_HasData__SWIG_2) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        unsigned int arg2 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_HasData(self,type);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_HasData. Expected _p_OpenBabel__OBAtom");
            }
        }
        arg2 = (unsigned int) SvUV(ST(1));
        result = (bool)(arg1)->HasData(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_HasData) {
    dXSARGS;
    
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_std__string, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBAtom_HasData__SWIG_0); return;
            }
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvIOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBAtom_HasData__SWIG_2); return;
            }
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvPOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBAtom_HasData__SWIG_1); return;
            }
        }
    }
    
    croak("No matching function for overloaded 'OBAtom_HasData'");
    XSRETURN(0);
}


XS(_wrap_OBAtom_DeleteData__SWIG_0) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        unsigned int arg2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_DeleteData(self,type);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_DeleteData. Expected _p_OpenBabel__OBAtom");
            }
        }
        arg2 = (unsigned int) SvUV(ST(1));
        (arg1)->DeleteData(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_DeleteData__SWIG_1) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        OpenBabel::OBGenericData *arg2 = (OpenBabel::OBGenericData *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_DeleteData(self,OpenBabel::OBGenericData *);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_DeleteData. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBGenericData,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBAtom_DeleteData. Expected _p_OpenBabel__OBGenericData");
            }
        }
        (arg1)->DeleteData(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_DeleteData__SWIG_2) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        std::vector<OpenBabel::OBGenericData * > *arg2 = 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_DeleteData(self,std::vector<OpenBabel::OBGenericData * > &);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_DeleteData. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__vectorTOpenBabel__OBGenericData_p_t,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBAtom_DeleteData. Expected _p_std__vectorTOpenBabel__OBGenericData_p_t");
            }
        }
        (arg1)->DeleteData(*arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_DeleteData) {
    dXSARGS;
    
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBGenericData, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBAtom_DeleteData__SWIG_1); return;
            }
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_std__vectorTOpenBabel__OBGenericData_p_t, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBAtom_DeleteData__SWIG_2); return;
            }
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvIOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBAtom_DeleteData__SWIG_0); return;
            }
        }
    }
    
    croak("No matching function for overloaded 'OBAtom_DeleteData'");
    XSRETURN(0);
}


XS(_wrap_OBAtom_SetData) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        OpenBabel::OBGenericData *arg2 = (OpenBabel::OBGenericData *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_SetData(self,d);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_SetData. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBGenericData,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBAtom_SetData. Expected _p_OpenBabel__OBGenericData");
            }
        }
        (arg1)->SetData(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_DataSize) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_DataSize(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_DataSize. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (unsigned int)(arg1)->DataSize();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_GetData__SWIG_0) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        unsigned int arg2 ;
        OpenBabel::OBGenericData *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_GetData(self,type);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_GetData. Expected _p_OpenBabel__OBAtom");
            }
        }
        arg2 = (unsigned int) SvUV(ST(1));
        result = (OpenBabel::OBGenericData *)(arg1)->GetData(arg2);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBGenericData, 0|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_GetData__SWIG_1) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        std::string *arg2 = 0 ;
        OpenBabel::OBGenericData *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_GetData(self,std::string &);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_GetData. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__string,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBAtom_GetData. Expected _p_std__string");
            }
        }
        result = (OpenBabel::OBGenericData *)(arg1)->GetData(*arg2);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBGenericData, 0|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_GetData__SWIG_2) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        char *arg2 = (char *) 0 ;
        OpenBabel::OBGenericData *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBAtom_GetData(self,char const *);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_GetData. Expected _p_OpenBabel__OBAtom");
            }
        }
        if (!SvOK((SV*) ST(1))) arg2 = 0;
        else arg2 = (char *) SvPV(ST(1), PL_na);
        result = (OpenBabel::OBGenericData *)(arg1)->GetData((char const *)arg2);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBGenericData, 0|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_GetData__SWIG_3) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        std::vector<OpenBabel::OBGenericData * > *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_GetData(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_GetData. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            std::vector<OpenBabel::OBGenericData * > &_result_ref = (arg1)->GetData();
            result = (std::vector<OpenBabel::OBGenericData * > *) &_result_ref;
        }
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_std__vectorTOpenBabel__OBGenericData_p_t, 0|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_GetData) {
    dXSARGS;
    
    if (items == 1) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBAtom_GetData__SWIG_3); return;
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_std__string, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBAtom_GetData__SWIG_1); return;
            }
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvIOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBAtom_GetData__SWIG_0); return;
            }
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvPOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBAtom_GetData__SWIG_2); return;
            }
        }
    }
    
    croak("No matching function for overloaded 'OBAtom_GetData'");
    XSRETURN(0);
}


XS(_wrap_OBAtom_BeginData) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        SwigValueWrapper<std::vector<OpenBabel::OBGenericData * >::iterator > result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_BeginData(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_BeginData. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (arg1)->BeginData();
        
        {
            std::vector<OpenBabel::OBGenericData * >::iterator * resultobj = new std::vector<OpenBabel::OBGenericData * >::iterator((std::vector<OpenBabel::OBGenericData * >::iterator &)result);
            ST(argvi) = sv_newmortal();
            SWIG_MakePtr(ST(argvi++), (void *) resultobj, SWIGTYPE_p_std__vectorTOpenBabel__OBGenericData_p_t__iterator, 0|SWIG_OWNER);
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBAtom_EndData) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        SwigValueWrapper<std::vector<OpenBabel::OBGenericData * >::iterator > result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBAtom_EndData(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBAtom_EndData. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (arg1)->EndData();
        
        {
            std::vector<OpenBabel::OBGenericData * >::iterator * resultobj = new std::vector<OpenBabel::OBGenericData * >::iterator((std::vector<OpenBabel::OBGenericData * >::iterator &)result);
            ST(argvi) = sv_newmortal();
            SWIG_MakePtr(ST(argvi++), (void *) resultobj, SWIGTYPE_p_std__vectorTOpenBabel__OBGenericData_p_t__iterator, 0|SWIG_OWNER);
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_new_OBBond) {
    {
        OpenBabel::OBBond *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 0) || (items > 0)) {
            SWIG_croak("Usage: new_OBBond();");
        }
        result = (OpenBabel::OBBond *)new OpenBabel::OBBond();
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBBond, SWIG_SHADOW|SWIG_OWNER);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_delete_OBBond) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: delete_OBBond(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of delete_OBBond. Expected _p_OpenBabel__OBBond");
            }
        }
        delete arg1;
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_SetIdx) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        int arg2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBBond_SetIdx(self,idx);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_SetIdx. Expected _p_OpenBabel__OBBond");
            }
        }
        arg2 = (int) SvIV(ST(1));
        (arg1)->SetIdx(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_SetBO) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        int arg2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBBond_SetBO(self,order);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_SetBO. Expected _p_OpenBabel__OBBond");
            }
        }
        arg2 = (int) SvIV(ST(1));
        (arg1)->SetBO(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_SetBegin) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        OpenBabel::OBAtom *arg2 = (OpenBabel::OBAtom *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBBond_SetBegin(self,begin);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_SetBegin. Expected _p_OpenBabel__OBBond");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBBond_SetBegin. Expected _p_OpenBabel__OBAtom");
            }
        }
        (arg1)->SetBegin(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_SetEnd) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        OpenBabel::OBAtom *arg2 = (OpenBabel::OBAtom *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBBond_SetEnd(self,end);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_SetEnd. Expected _p_OpenBabel__OBBond");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBBond_SetEnd. Expected _p_OpenBabel__OBAtom");
            }
        }
        (arg1)->SetEnd(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_SetLength) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        OpenBabel::OBAtom *arg2 = (OpenBabel::OBAtom *) 0 ;
        double arg3 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBBond_SetLength(self,OpenBabel::OBAtom *,double);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_SetLength. Expected _p_OpenBabel__OBBond");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBBond_SetLength. Expected _p_OpenBabel__OBAtom");
            }
        }
        arg3 = (double) SvNV(ST(2));
        
        (arg1)->SetLength(arg2,arg3);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_Set) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        int arg2 ;
        OpenBabel::OBAtom *arg3 = (OpenBabel::OBAtom *) 0 ;
        OpenBabel::OBAtom *arg4 = (OpenBabel::OBAtom *) 0 ;
        int arg5 ;
        int arg6 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 6) || (items > 6)) {
            SWIG_croak("Usage: OBBond_Set(self,int,OpenBabel::OBAtom *,OpenBabel::OBAtom *,int,int);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_Set. Expected _p_OpenBabel__OBBond");
            }
        }
        arg2 = (int) SvIV(ST(1));
        {
            if (SWIG_ConvertPtr(ST(2), (void **) &arg3, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 3 of OBBond_Set. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(3), (void **) &arg4, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 4 of OBBond_Set. Expected _p_OpenBabel__OBAtom");
            }
        }
        arg5 = (int) SvIV(ST(4));
        arg6 = (int) SvIV(ST(5));
        (arg1)->Set(arg2,arg3,arg4,arg5,arg6);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_SetKSingle) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_SetKSingle(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_SetKSingle. Expected _p_OpenBabel__OBBond");
            }
        }
        (arg1)->SetKSingle();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_SetKDouble) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_SetKDouble(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_SetKDouble. Expected _p_OpenBabel__OBBond");
            }
        }
        (arg1)->SetKDouble();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_SetKTriple) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_SetKTriple(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_SetKTriple. Expected _p_OpenBabel__OBBond");
            }
        }
        (arg1)->SetKTriple();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_SetAromatic) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_SetAromatic(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_SetAromatic. Expected _p_OpenBabel__OBBond");
            }
        }
        (arg1)->SetAromatic();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_SetHash) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_SetHash(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_SetHash. Expected _p_OpenBabel__OBBond");
            }
        }
        (arg1)->SetHash();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_SetWedge) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_SetWedge(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_SetWedge. Expected _p_OpenBabel__OBBond");
            }
        }
        (arg1)->SetWedge();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_SetUp) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_SetUp(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_SetUp. Expected _p_OpenBabel__OBBond");
            }
        }
        (arg1)->SetUp();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_SetDown) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_SetDown(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_SetDown. Expected _p_OpenBabel__OBBond");
            }
        }
        (arg1)->SetDown();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_SetInRing) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_SetInRing(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_SetInRing. Expected _p_OpenBabel__OBBond");
            }
        }
        (arg1)->SetInRing();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_SetClosure) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_SetClosure(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_SetClosure. Expected _p_OpenBabel__OBBond");
            }
        }
        (arg1)->SetClosure();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_UnsetAromatic) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_UnsetAromatic(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_UnsetAromatic. Expected _p_OpenBabel__OBBond");
            }
        }
        (arg1)->UnsetAromatic();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_UnsetKekule) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_UnsetKekule(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_UnsetKekule. Expected _p_OpenBabel__OBBond");
            }
        }
        (arg1)->UnsetKekule();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_GetBO) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_GetBO(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_GetBO. Expected _p_OpenBabel__OBBond");
            }
        }
        result = (unsigned int)((OpenBabel::OBBond const *)arg1)->GetBO();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_GetBondOrder) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_GetBondOrder(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_GetBondOrder. Expected _p_OpenBabel__OBBond");
            }
        }
        result = (unsigned int)((OpenBabel::OBBond const *)arg1)->GetBondOrder();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_GetFlags) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_GetFlags(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_GetFlags. Expected _p_OpenBabel__OBBond");
            }
        }
        result = (unsigned int)((OpenBabel::OBBond const *)arg1)->GetFlags();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_GetBeginAtomIdx) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_GetBeginAtomIdx(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_GetBeginAtomIdx. Expected _p_OpenBabel__OBBond");
            }
        }
        result = (unsigned int)((OpenBabel::OBBond const *)arg1)->GetBeginAtomIdx();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_GetEndAtomIdx) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_GetEndAtomIdx(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_GetEndAtomIdx. Expected _p_OpenBabel__OBBond");
            }
        }
        result = (unsigned int)((OpenBabel::OBBond const *)arg1)->GetEndAtomIdx();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_GetBeginAtom) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        OpenBabel::OBAtom *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_GetBeginAtom(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_GetBeginAtom. Expected _p_OpenBabel__OBBond");
            }
        }
        result = (OpenBabel::OBAtom *)(arg1)->GetBeginAtom();
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBAtom, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_GetEndAtom) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        OpenBabel::OBAtom *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_GetEndAtom(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_GetEndAtom. Expected _p_OpenBabel__OBBond");
            }
        }
        result = (OpenBabel::OBAtom *)(arg1)->GetEndAtom();
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBAtom, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_GetNbrAtom) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        OpenBabel::OBAtom *arg2 = (OpenBabel::OBAtom *) 0 ;
        OpenBabel::OBAtom *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBBond_GetNbrAtom(self,ptr);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_GetNbrAtom. Expected _p_OpenBabel__OBBond");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBBond_GetNbrAtom. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (OpenBabel::OBAtom *)(arg1)->GetNbrAtom(arg2);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBAtom, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_GetEquibLength) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_GetEquibLength(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_GetEquibLength. Expected _p_OpenBabel__OBBond");
            }
        }
        result = (double)(arg1)->GetEquibLength();
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_GetLength) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_GetLength(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_GetLength. Expected _p_OpenBabel__OBBond");
            }
        }
        result = (double)(arg1)->GetLength();
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_GetNbrAtomIdx) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        OpenBabel::OBAtom *arg2 = (OpenBabel::OBAtom *) 0 ;
        int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBBond_GetNbrAtomIdx(self,ptr);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_GetNbrAtomIdx. Expected _p_OpenBabel__OBBond");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBBond_GetNbrAtomIdx. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (int)(arg1)->GetNbrAtomIdx(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_IsAromatic) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_IsAromatic(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_IsAromatic. Expected _p_OpenBabel__OBBond");
            }
        }
        result = (bool)((OpenBabel::OBBond const *)arg1)->IsAromatic();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_IsInRing) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_IsInRing(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_IsInRing. Expected _p_OpenBabel__OBBond");
            }
        }
        result = (bool)((OpenBabel::OBBond const *)arg1)->IsInRing();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_IsRotor) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_IsRotor(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_IsRotor. Expected _p_OpenBabel__OBBond");
            }
        }
        result = (bool)(arg1)->IsRotor();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_IsAmide) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_IsAmide(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_IsAmide. Expected _p_OpenBabel__OBBond");
            }
        }
        result = (bool)(arg1)->IsAmide();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_IsPrimaryAmide) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_IsPrimaryAmide(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_IsPrimaryAmide. Expected _p_OpenBabel__OBBond");
            }
        }
        result = (bool)(arg1)->IsPrimaryAmide();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_IsSecondaryAmide) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_IsSecondaryAmide(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_IsSecondaryAmide. Expected _p_OpenBabel__OBBond");
            }
        }
        result = (bool)(arg1)->IsSecondaryAmide();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_IsEster) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_IsEster(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_IsEster. Expected _p_OpenBabel__OBBond");
            }
        }
        result = (bool)(arg1)->IsEster();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_IsCarbonyl) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_IsCarbonyl(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_IsCarbonyl. Expected _p_OpenBabel__OBBond");
            }
        }
        result = (bool)(arg1)->IsCarbonyl();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_IsSingle) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_IsSingle(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_IsSingle. Expected _p_OpenBabel__OBBond");
            }
        }
        result = (bool)(arg1)->IsSingle();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_IsDouble) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_IsDouble(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_IsDouble. Expected _p_OpenBabel__OBBond");
            }
        }
        result = (bool)(arg1)->IsDouble();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_IsTriple) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_IsTriple(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_IsTriple. Expected _p_OpenBabel__OBBond");
            }
        }
        result = (bool)(arg1)->IsTriple();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_IsKSingle) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_IsKSingle(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_IsKSingle. Expected _p_OpenBabel__OBBond");
            }
        }
        result = (bool)(arg1)->IsKSingle();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_IsKDouble) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_IsKDouble(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_IsKDouble. Expected _p_OpenBabel__OBBond");
            }
        }
        result = (bool)(arg1)->IsKDouble();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_IsKTriple) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_IsKTriple(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_IsKTriple. Expected _p_OpenBabel__OBBond");
            }
        }
        result = (bool)(arg1)->IsKTriple();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_IsClosure) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_IsClosure(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_IsClosure. Expected _p_OpenBabel__OBBond");
            }
        }
        result = (bool)(arg1)->IsClosure();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_IsUp) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_IsUp(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_IsUp. Expected _p_OpenBabel__OBBond");
            }
        }
        result = (bool)(arg1)->IsUp();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_IsDown) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_IsDown(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_IsDown. Expected _p_OpenBabel__OBBond");
            }
        }
        result = (bool)(arg1)->IsDown();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_IsWedge) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_IsWedge(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_IsWedge. Expected _p_OpenBabel__OBBond");
            }
        }
        result = (bool)(arg1)->IsWedge();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_IsHash) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_IsHash(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_IsHash. Expected _p_OpenBabel__OBBond");
            }
        }
        result = (bool)(arg1)->IsHash();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_IsDoubleBondGeometry) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_IsDoubleBondGeometry(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_IsDoubleBondGeometry. Expected _p_OpenBabel__OBBond");
            }
        }
        result = (bool)(arg1)->IsDoubleBondGeometry();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_HasData__SWIG_0) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        std::string *arg2 = 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBBond_HasData(self,std::string &);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_HasData. Expected _p_OpenBabel__OBBond");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__string,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBBond_HasData. Expected _p_std__string");
            }
        }
        result = (bool)(arg1)->HasData(*arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_HasData__SWIG_1) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        char *arg2 = (char *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBBond_HasData(self,char const *);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_HasData. Expected _p_OpenBabel__OBBond");
            }
        }
        if (!SvOK((SV*) ST(1))) arg2 = 0;
        else arg2 = (char *) SvPV(ST(1), PL_na);
        result = (bool)(arg1)->HasData((char const *)arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_HasData__SWIG_2) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        unsigned int arg2 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBBond_HasData(self,type);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_HasData. Expected _p_OpenBabel__OBBond");
            }
        }
        arg2 = (unsigned int) SvUV(ST(1));
        result = (bool)(arg1)->HasData(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_HasData) {
    dXSARGS;
    
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBBond, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_std__string, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBBond_HasData__SWIG_0); return;
            }
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBBond, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvIOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBBond_HasData__SWIG_2); return;
            }
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBBond, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvPOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBBond_HasData__SWIG_1); return;
            }
        }
    }
    
    croak("No matching function for overloaded 'OBBond_HasData'");
    XSRETURN(0);
}


XS(_wrap_OBBond_DeleteData__SWIG_0) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        unsigned int arg2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBBond_DeleteData(self,type);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_DeleteData. Expected _p_OpenBabel__OBBond");
            }
        }
        arg2 = (unsigned int) SvUV(ST(1));
        (arg1)->DeleteData(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_DeleteData__SWIG_1) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        OpenBabel::OBGenericData *arg2 = (OpenBabel::OBGenericData *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBBond_DeleteData(self,OpenBabel::OBGenericData *);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_DeleteData. Expected _p_OpenBabel__OBBond");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBGenericData,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBBond_DeleteData. Expected _p_OpenBabel__OBGenericData");
            }
        }
        (arg1)->DeleteData(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_DeleteData__SWIG_2) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        std::vector<OpenBabel::OBGenericData * > *arg2 = 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBBond_DeleteData(self,std::vector<OpenBabel::OBGenericData * > &);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_DeleteData. Expected _p_OpenBabel__OBBond");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__vectorTOpenBabel__OBGenericData_p_t,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBBond_DeleteData. Expected _p_std__vectorTOpenBabel__OBGenericData_p_t");
            }
        }
        (arg1)->DeleteData(*arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_DeleteData) {
    dXSARGS;
    
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBBond, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBGenericData, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBBond_DeleteData__SWIG_1); return;
            }
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBBond, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_std__vectorTOpenBabel__OBGenericData_p_t, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBBond_DeleteData__SWIG_2); return;
            }
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBBond, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvIOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBBond_DeleteData__SWIG_0); return;
            }
        }
    }
    
    croak("No matching function for overloaded 'OBBond_DeleteData'");
    XSRETURN(0);
}


XS(_wrap_OBBond_SetData) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        OpenBabel::OBGenericData *arg2 = (OpenBabel::OBGenericData *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBBond_SetData(self,d);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_SetData. Expected _p_OpenBabel__OBBond");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBGenericData,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBBond_SetData. Expected _p_OpenBabel__OBGenericData");
            }
        }
        (arg1)->SetData(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_DataSize) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_DataSize(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_DataSize. Expected _p_OpenBabel__OBBond");
            }
        }
        result = (unsigned int)(arg1)->DataSize();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_GetData__SWIG_0) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        unsigned int arg2 ;
        OpenBabel::OBGenericData *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBBond_GetData(self,type);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_GetData. Expected _p_OpenBabel__OBBond");
            }
        }
        arg2 = (unsigned int) SvUV(ST(1));
        result = (OpenBabel::OBGenericData *)(arg1)->GetData(arg2);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBGenericData, 0|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_GetData__SWIG_1) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        std::string *arg2 = 0 ;
        OpenBabel::OBGenericData *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBBond_GetData(self,std::string &);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_GetData. Expected _p_OpenBabel__OBBond");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__string,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBBond_GetData. Expected _p_std__string");
            }
        }
        result = (OpenBabel::OBGenericData *)(arg1)->GetData(*arg2);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBGenericData, 0|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_GetData__SWIG_2) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        char *arg2 = (char *) 0 ;
        OpenBabel::OBGenericData *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBBond_GetData(self,char const *);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_GetData. Expected _p_OpenBabel__OBBond");
            }
        }
        if (!SvOK((SV*) ST(1))) arg2 = 0;
        else arg2 = (char *) SvPV(ST(1), PL_na);
        result = (OpenBabel::OBGenericData *)(arg1)->GetData((char const *)arg2);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBGenericData, 0|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_GetData__SWIG_3) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        std::vector<OpenBabel::OBGenericData * > *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_GetData(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_GetData. Expected _p_OpenBabel__OBBond");
            }
        }
        {
            std::vector<OpenBabel::OBGenericData * > &_result_ref = (arg1)->GetData();
            result = (std::vector<OpenBabel::OBGenericData * > *) &_result_ref;
        }
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_std__vectorTOpenBabel__OBGenericData_p_t, 0|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_GetData) {
    dXSARGS;
    
    if (items == 1) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBBond, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBBond_GetData__SWIG_3); return;
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBBond, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_std__string, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBBond_GetData__SWIG_1); return;
            }
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBBond, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvIOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBBond_GetData__SWIG_0); return;
            }
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBBond, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvPOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBBond_GetData__SWIG_2); return;
            }
        }
    }
    
    croak("No matching function for overloaded 'OBBond_GetData'");
    XSRETURN(0);
}


XS(_wrap_OBBond_BeginData) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        SwigValueWrapper<std::vector<OpenBabel::OBGenericData * >::iterator > result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_BeginData(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_BeginData. Expected _p_OpenBabel__OBBond");
            }
        }
        result = (arg1)->BeginData();
        
        {
            std::vector<OpenBabel::OBGenericData * >::iterator * resultobj = new std::vector<OpenBabel::OBGenericData * >::iterator((std::vector<OpenBabel::OBGenericData * >::iterator &)result);
            ST(argvi) = sv_newmortal();
            SWIG_MakePtr(ST(argvi++), (void *) resultobj, SWIGTYPE_p_std__vectorTOpenBabel__OBGenericData_p_t__iterator, 0|SWIG_OWNER);
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBBond_EndData) {
    {
        OpenBabel::OBBond *arg1 = (OpenBabel::OBBond *) 0 ;
        SwigValueWrapper<std::vector<OpenBabel::OBGenericData * >::iterator > result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBBond_EndData(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBBond_EndData. Expected _p_OpenBabel__OBBond");
            }
        }
        result = (arg1)->EndData();
        
        {
            std::vector<OpenBabel::OBGenericData * >::iterator * resultobj = new std::vector<OpenBabel::OBGenericData * >::iterator((std::vector<OpenBabel::OBGenericData * >::iterator &)result);
            ST(argvi) = sv_newmortal();
            SWIG_MakePtr(ST(argvi++), (void *) resultobj, SWIGTYPE_p_std__vectorTOpenBabel__OBGenericData_p_t__iterator, 0|SWIG_OWNER);
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_new_OBMol__SWIG_0) {
    {
        OpenBabel::OBMol *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 0) || (items > 0)) {
            SWIG_croak("Usage: new_OBMol();");
        }
        result = (OpenBabel::OBMol *)new OpenBabel::OBMol();
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBMol, SWIG_SHADOW|SWIG_OWNER);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_new_OBMol__SWIG_1) {
    {
        OpenBabel::OBMol *arg1 = 0 ;
        OpenBabel::OBMol *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: new_OBMol(OpenBabel::OBMol const &);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of new_OBMol. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (OpenBabel::OBMol *)new OpenBabel::OBMol((OpenBabel::OBMol const &)*arg1);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBMol, SWIG_SHADOW|SWIG_OWNER);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_new_OBMol) {
    dXSARGS;
    
    if (items == 0) {
        (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_new_OBMol__SWIG_0); return;
    }
    if (items == 1) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_new_OBMol__SWIG_1); return;
        }
    }
    
    croak("No matching function for overloaded 'new_OBMol'");
    XSRETURN(0);
}


XS(_wrap_delete_OBMol) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: delete_OBMol(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of delete_OBMol. Expected _p_OpenBabel__OBMol");
            }
        }
        delete arg1;
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_ReserveAtoms) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int arg2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_ReserveAtoms(self,natoms);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_ReserveAtoms. Expected _p_OpenBabel__OBMol");
            }
        }
        arg2 = (int) SvIV(ST(1));
        (arg1)->ReserveAtoms(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_CreateAtom) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        OpenBabel::OBAtom *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_CreateAtom(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_CreateAtom. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (OpenBabel::OBAtom *)(arg1)->CreateAtom();
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBAtom, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_CreateBond) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        OpenBabel::OBBond *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_CreateBond(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_CreateBond. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (OpenBabel::OBBond *)(arg1)->CreateBond();
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBBond, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_DestroyAtom) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        OpenBabel::OBNodeBase *arg2 = (OpenBabel::OBNodeBase *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_DestroyAtom(self,OpenBabel::OBNodeBase *);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_DestroyAtom. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBNodeBase,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_DestroyAtom. Expected _p_OpenBabel__OBNodeBase");
            }
        }
        (arg1)->DestroyAtom(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_DestroyBond) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        OpenBabel::OBEdgeBase *arg2 = (OpenBabel::OBEdgeBase *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_DestroyBond(self,OpenBabel::OBEdgeBase *);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_DestroyBond. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBEdgeBase,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_DestroyBond. Expected _p_OpenBabel__OBEdgeBase");
            }
        }
        (arg1)->DestroyBond(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_AddAtom) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        OpenBabel::OBAtom *arg2 = 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_AddAtom(self,OpenBabel::OBAtom &);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_AddAtom. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_AddAtom. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->AddAtom(*arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_AddBond__SWIG_0) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int arg2 ;
        int arg3 ;
        int arg4 ;
        int arg5 ;
        int arg6 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 6) || (items > 6)) {
            SWIG_croak("Usage: OBMol_AddBond(self,int,int,int,flags,insertpos);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_AddBond. Expected _p_OpenBabel__OBMol");
            }
        }
        arg2 = (int) SvIV(ST(1));
        arg3 = (int) SvIV(ST(2));
        arg4 = (int) SvIV(ST(3));
        arg5 = (int) SvIV(ST(4));
        arg6 = (int) SvIV(ST(5));
        result = (bool)(arg1)->AddBond(arg2,arg3,arg4,arg5,arg6);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_AddBond__SWIG_1) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int arg2 ;
        int arg3 ;
        int arg4 ;
        int arg5 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 5) || (items > 5)) {
            SWIG_croak("Usage: OBMol_AddBond(self,int,int,int,flags);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_AddBond. Expected _p_OpenBabel__OBMol");
            }
        }
        arg2 = (int) SvIV(ST(1));
        arg3 = (int) SvIV(ST(2));
        arg4 = (int) SvIV(ST(3));
        arg5 = (int) SvIV(ST(4));
        result = (bool)(arg1)->AddBond(arg2,arg3,arg4,arg5);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_AddBond__SWIG_2) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int arg2 ;
        int arg3 ;
        int arg4 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 4) || (items > 4)) {
            SWIG_croak("Usage: OBMol_AddBond(self,int,int,int);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_AddBond. Expected _p_OpenBabel__OBMol");
            }
        }
        arg2 = (int) SvIV(ST(1));
        arg3 = (int) SvIV(ST(2));
        arg4 = (int) SvIV(ST(3));
        result = (bool)(arg1)->AddBond(arg2,arg3,arg4);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_AddBond__SWIG_3) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        OpenBabel::OBBond *arg2 = 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_AddBond(self,OpenBabel::OBBond &);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_AddBond. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_AddBond. Expected _p_OpenBabel__OBBond");
            }
        }
        result = (bool)(arg1)->AddBond(*arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_AddBond) {
    dXSARGS;
    
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBBond, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_AddBond__SWIG_3); return;
            }
        }
    }
    if (items == 4) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvIOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                {
                    _v = SvIOK(ST(2)) ? 1 : 0;
                }
                if (_v) {
                    {
                        _v = SvIOK(ST(3)) ? 1 : 0;
                    }
                    if (_v) {
                        (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_AddBond__SWIG_2); return;
                    }
                }
            }
        }
    }
    if (items == 5) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvIOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                {
                    _v = SvIOK(ST(2)) ? 1 : 0;
                }
                if (_v) {
                    {
                        _v = SvIOK(ST(3)) ? 1 : 0;
                    }
                    if (_v) {
                        {
                            _v = SvIOK(ST(4)) ? 1 : 0;
                        }
                        if (_v) {
                            (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_AddBond__SWIG_1); return;
                        }
                    }
                }
            }
        }
    }
    if (items == 6) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvIOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                {
                    _v = SvIOK(ST(2)) ? 1 : 0;
                }
                if (_v) {
                    {
                        _v = SvIOK(ST(3)) ? 1 : 0;
                    }
                    if (_v) {
                        {
                            _v = SvIOK(ST(4)) ? 1 : 0;
                        }
                        if (_v) {
                            {
                                _v = SvIOK(ST(5)) ? 1 : 0;
                            }
                            if (_v) {
                                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_AddBond__SWIG_0); return;
                            }
                        }
                    }
                }
            }
        }
    }
    
    croak("No matching function for overloaded 'OBMol_AddBond'");
    XSRETURN(0);
}


XS(_wrap_OBMol_AddResidue) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        OpenBabel::OBResidue *arg2 = 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_AddResidue(self,OpenBabel::OBResidue &);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_AddResidue. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_AddResidue. Expected _p_OpenBabel__OBResidue");
            }
        }
        result = (bool)(arg1)->AddResidue(*arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_InsertAtom) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        OpenBabel::OBAtom *arg2 = 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_InsertAtom(self,OpenBabel::OBAtom &);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_InsertAtom. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_InsertAtom. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->InsertAtom(*arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_DeleteAtom) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        OpenBabel::OBAtom *arg2 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_DeleteAtom(self,OpenBabel::OBAtom *);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_DeleteAtom. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_DeleteAtom. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->DeleteAtom(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_DeleteBond) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        OpenBabel::OBBond *arg2 = (OpenBabel::OBBond *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_DeleteBond(self,OpenBabel::OBBond *);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_DeleteBond. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBBond,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_DeleteBond. Expected _p_OpenBabel__OBBond");
            }
        }
        result = (bool)(arg1)->DeleteBond(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_DeleteResidue) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        OpenBabel::OBResidue *arg2 = (OpenBabel::OBResidue *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_DeleteResidue(self,OpenBabel::OBResidue *);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_DeleteResidue. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBResidue,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_DeleteResidue. Expected _p_OpenBabel__OBResidue");
            }
        }
        result = (bool)(arg1)->DeleteResidue(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_NewAtom) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        OpenBabel::OBAtom *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_NewAtom(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_NewAtom. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (OpenBabel::OBAtom *)(arg1)->NewAtom();
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBAtom, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_NewResidue) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        OpenBabel::OBResidue *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_NewResidue(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_NewResidue. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (OpenBabel::OBResidue *)(arg1)->NewResidue();
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBResidue, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_BeginModify) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_BeginModify(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_BeginModify. Expected _p_OpenBabel__OBMol");
            }
        }
        (arg1)->BeginModify();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_EndModify__SWIG_0) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        bool arg2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_EndModify(self,nukePerceivedData);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_EndModify. Expected _p_OpenBabel__OBMol");
            }
        }
        arg2 = SvIV(ST(1)) ? true : false;
        (arg1)->EndModify(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_EndModify__SWIG_1) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_EndModify(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_EndModify. Expected _p_OpenBabel__OBMol");
            }
        }
        (arg1)->EndModify();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_EndModify) {
    dXSARGS;
    
    if (items == 1) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_EndModify__SWIG_1); return;
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvIOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_EndModify__SWIG_0); return;
            }
        }
    }
    
    croak("No matching function for overloaded 'OBMol_EndModify'");
    XSRETURN(0);
}


XS(_wrap_OBMol_GetMod) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_GetMod(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_GetMod. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (int)(arg1)->GetMod();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_IncrementMod) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_IncrementMod(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_IncrementMod. Expected _p_OpenBabel__OBMol");
            }
        }
        (arg1)->IncrementMod();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_DecrementMod) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_DecrementMod(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_DecrementMod. Expected _p_OpenBabel__OBMol");
            }
        }
        (arg1)->DecrementMod();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_HasData__SWIG_0) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        std::string *arg2 = 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_HasData(self,std::string &);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_HasData. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__string,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_HasData. Expected _p_std__string");
            }
        }
        result = (bool)(arg1)->HasData(*arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_HasData__SWIG_1) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        char *arg2 = (char *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_HasData(self,char const *);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_HasData. Expected _p_OpenBabel__OBMol");
            }
        }
        if (!SvOK((SV*) ST(1))) arg2 = 0;
        else arg2 = (char *) SvPV(ST(1), PL_na);
        result = (bool)(arg1)->HasData((char const *)arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_HasData__SWIG_2) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        unsigned int arg2 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_HasData(self,type);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_HasData. Expected _p_OpenBabel__OBMol");
            }
        }
        arg2 = (unsigned int) SvUV(ST(1));
        result = (bool)(arg1)->HasData(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_HasData) {
    dXSARGS;
    
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_std__string, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_HasData__SWIG_0); return;
            }
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvIOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_HasData__SWIG_2); return;
            }
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvPOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_HasData__SWIG_1); return;
            }
        }
    }
    
    croak("No matching function for overloaded 'OBMol_HasData'");
    XSRETURN(0);
}


XS(_wrap_OBMol_DeleteData__SWIG_0) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        unsigned int arg2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_DeleteData(self,type);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_DeleteData. Expected _p_OpenBabel__OBMol");
            }
        }
        arg2 = (unsigned int) SvUV(ST(1));
        (arg1)->DeleteData(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_DeleteData__SWIG_1) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        OpenBabel::OBGenericData *arg2 = (OpenBabel::OBGenericData *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_DeleteData(self,OpenBabel::OBGenericData *);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_DeleteData. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBGenericData,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_DeleteData. Expected _p_OpenBabel__OBGenericData");
            }
        }
        (arg1)->DeleteData(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_DeleteData__SWIG_2) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        std::vector<OpenBabel::OBGenericData * > *arg2 = 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_DeleteData(self,std::vector<OpenBabel::OBGenericData * > &);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_DeleteData. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__vectorTOpenBabel__OBGenericData_p_t,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_DeleteData. Expected _p_std__vectorTOpenBabel__OBGenericData_p_t");
            }
        }
        (arg1)->DeleteData(*arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_DeleteData) {
    dXSARGS;
    
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBGenericData, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_DeleteData__SWIG_1); return;
            }
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_std__vectorTOpenBabel__OBGenericData_p_t, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_DeleteData__SWIG_2); return;
            }
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvIOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_DeleteData__SWIG_0); return;
            }
        }
    }
    
    croak("No matching function for overloaded 'OBMol_DeleteData'");
    XSRETURN(0);
}


XS(_wrap_OBMol_SetData) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        OpenBabel::OBGenericData *arg2 = (OpenBabel::OBGenericData *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_SetData(self,d);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_SetData. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBGenericData,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_SetData. Expected _p_OpenBabel__OBGenericData");
            }
        }
        (arg1)->SetData(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_DataSize) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_DataSize(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_DataSize. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (unsigned int)(arg1)->DataSize();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_GetData__SWIG_0) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        unsigned int arg2 ;
        OpenBabel::OBGenericData *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_GetData(self,type);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_GetData. Expected _p_OpenBabel__OBMol");
            }
        }
        arg2 = (unsigned int) SvUV(ST(1));
        result = (OpenBabel::OBGenericData *)(arg1)->GetData(arg2);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBGenericData, 0|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_GetData__SWIG_1) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        std::string *arg2 = 0 ;
        OpenBabel::OBGenericData *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_GetData(self,std::string &);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_GetData. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__string,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_GetData. Expected _p_std__string");
            }
        }
        result = (OpenBabel::OBGenericData *)(arg1)->GetData(*arg2);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBGenericData, 0|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_GetData__SWIG_2) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        char *arg2 = (char *) 0 ;
        OpenBabel::OBGenericData *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_GetData(self,char const *);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_GetData. Expected _p_OpenBabel__OBMol");
            }
        }
        if (!SvOK((SV*) ST(1))) arg2 = 0;
        else arg2 = (char *) SvPV(ST(1), PL_na);
        result = (OpenBabel::OBGenericData *)(arg1)->GetData((char const *)arg2);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBGenericData, 0|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_GetData__SWIG_3) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        std::vector<OpenBabel::OBGenericData * > *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_GetData(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_GetData. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            std::vector<OpenBabel::OBGenericData * > &_result_ref = (arg1)->GetData();
            result = (std::vector<OpenBabel::OBGenericData * > *) &_result_ref;
        }
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_std__vectorTOpenBabel__OBGenericData_p_t, 0|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_GetData) {
    dXSARGS;
    
    if (items == 1) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_GetData__SWIG_3); return;
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_std__string, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_GetData__SWIG_1); return;
            }
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvIOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_GetData__SWIG_0); return;
            }
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvPOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_GetData__SWIG_2); return;
            }
        }
    }
    
    croak("No matching function for overloaded 'OBMol_GetData'");
    XSRETURN(0);
}


XS(_wrap_OBMol_BeginData) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        SwigValueWrapper<std::vector<OpenBabel::OBGenericData * >::iterator > result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_BeginData(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_BeginData. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (arg1)->BeginData();
        
        {
            std::vector<OpenBabel::OBGenericData * >::iterator * resultobj = new std::vector<OpenBabel::OBGenericData * >::iterator((std::vector<OpenBabel::OBGenericData * >::iterator &)result);
            ST(argvi) = sv_newmortal();
            SWIG_MakePtr(ST(argvi++), (void *) resultobj, SWIGTYPE_p_std__vectorTOpenBabel__OBGenericData_p_t__iterator, 0|SWIG_OWNER);
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_EndData) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        SwigValueWrapper<std::vector<OpenBabel::OBGenericData * >::iterator > result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_EndData(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_EndData. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (arg1)->EndData();
        
        {
            std::vector<OpenBabel::OBGenericData * >::iterator * resultobj = new std::vector<OpenBabel::OBGenericData * >::iterator((std::vector<OpenBabel::OBGenericData * >::iterator &)result);
            ST(argvi) = sv_newmortal();
            SWIG_MakePtr(ST(argvi++), (void *) resultobj, SWIGTYPE_p_std__vectorTOpenBabel__OBGenericData_p_t__iterator, 0|SWIG_OWNER);
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_GetFlags) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_GetFlags(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_GetFlags. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (int)(arg1)->GetFlags();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_GetTitle) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        char *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_GetTitle(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_GetTitle. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (char *)((OpenBabel::OBMol const *)arg1)->GetTitle();
        
        ST(argvi) = sv_newmortal();
        if (result) {
            sv_setpv((SV*)ST(argvi++), (char *) result);
        } else {
            sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_NumAtoms) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_NumAtoms(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_NumAtoms. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (unsigned int)((OpenBabel::OBMol const *)arg1)->NumAtoms();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_NumBonds) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_NumBonds(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_NumBonds. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (unsigned int)((OpenBabel::OBMol const *)arg1)->NumBonds();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_NumHvyAtoms) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_NumHvyAtoms(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_NumHvyAtoms. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (unsigned int)(arg1)->NumHvyAtoms();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_NumResidues) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_NumResidues(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_NumResidues. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (unsigned int)((OpenBabel::OBMol const *)arg1)->NumResidues();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_NumRotors) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_NumRotors(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_NumRotors. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (unsigned int)(arg1)->NumRotors();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_GetAtom) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int arg2 ;
        OpenBabel::OBAtom *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_GetAtom(self,int);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_GetAtom. Expected _p_OpenBabel__OBMol");
            }
        }
        arg2 = (int) SvIV(ST(1));
        result = (OpenBabel::OBAtom *)(arg1)->GetAtom(arg2);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBAtom, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_GetFirstAtom) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        OpenBabel::OBAtom *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_GetFirstAtom(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_GetFirstAtom. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (OpenBabel::OBAtom *)(arg1)->GetFirstAtom();
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBAtom, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_GetBond__SWIG_0) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int arg2 ;
        OpenBabel::OBBond *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_GetBond(self,int);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_GetBond. Expected _p_OpenBabel__OBMol");
            }
        }
        arg2 = (int) SvIV(ST(1));
        result = (OpenBabel::OBBond *)(arg1)->GetBond(arg2);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBBond, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_GetBond__SWIG_1) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int arg2 ;
        int arg3 ;
        OpenBabel::OBBond *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBMol_GetBond(self,int,int);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_GetBond. Expected _p_OpenBabel__OBMol");
            }
        }
        arg2 = (int) SvIV(ST(1));
        arg3 = (int) SvIV(ST(2));
        result = (OpenBabel::OBBond *)(arg1)->GetBond(arg2,arg3);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBBond, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_GetBond__SWIG_2) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        OpenBabel::OBAtom *arg2 = (OpenBabel::OBAtom *) 0 ;
        OpenBabel::OBAtom *arg3 = (OpenBabel::OBAtom *) 0 ;
        OpenBabel::OBBond *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBMol_GetBond(self,OpenBabel::OBAtom *,OpenBabel::OBAtom *);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_GetBond. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_GetBond. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(2), (void **) &arg3, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 3 of OBMol_GetBond. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (OpenBabel::OBBond *)(arg1)->GetBond(arg2,arg3);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBBond, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_GetBond) {
    dXSARGS;
    
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvIOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_GetBond__SWIG_0); return;
            }
        }
    }
    if (items == 3) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                {
                    void *tmp;
                    if (SWIG_ConvertPtr(ST(2), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                        _v = 0;
                    } else {
                        _v = 1;
                    }
                }
                if (_v) {
                    (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_GetBond__SWIG_2); return;
                }
            }
        }
    }
    if (items == 3) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvIOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                {
                    _v = SvIOK(ST(2)) ? 1 : 0;
                }
                if (_v) {
                    (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_GetBond__SWIG_1); return;
                }
            }
        }
    }
    
    croak("No matching function for overloaded 'OBMol_GetBond'");
    XSRETURN(0);
}


XS(_wrap_OBMol_GetResidue) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int arg2 ;
        OpenBabel::OBResidue *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_GetResidue(self,int);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_GetResidue. Expected _p_OpenBabel__OBMol");
            }
        }
        arg2 = (int) SvIV(ST(1));
        result = (OpenBabel::OBResidue *)(arg1)->GetResidue(arg2);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBResidue, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_GetInternalCoord) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        SwigValueWrapper<std::vector<OpenBabel::OBInternalCoord * > > result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_GetInternalCoord(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_GetInternalCoord. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (arg1)->GetInternalCoord();
        
        {
            std::vector<OpenBabel::OBInternalCoord * > * resultobj = new std::vector<OpenBabel::OBInternalCoord * >((std::vector<OpenBabel::OBInternalCoord * > &)result);
            ST(argvi) = sv_newmortal();
            SWIG_MakePtr(ST(argvi++), (void *) resultobj, SWIGTYPE_p_std__vectorTOpenBabel__OBInternalCoord_p_t, 0|SWIG_OWNER);
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_GetTorsion__SWIG_0) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int arg2 ;
        int arg3 ;
        int arg4 ;
        int arg5 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 5) || (items > 5)) {
            SWIG_croak("Usage: OBMol_GetTorsion(self,int,int,int,int);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_GetTorsion. Expected _p_OpenBabel__OBMol");
            }
        }
        arg2 = (int) SvIV(ST(1));
        arg3 = (int) SvIV(ST(2));
        arg4 = (int) SvIV(ST(3));
        arg5 = (int) SvIV(ST(4));
        result = (double)(arg1)->GetTorsion(arg2,arg3,arg4,arg5);
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_GetTorsion__SWIG_1) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        OpenBabel::OBAtom *arg2 = (OpenBabel::OBAtom *) 0 ;
        OpenBabel::OBAtom *arg3 = (OpenBabel::OBAtom *) 0 ;
        OpenBabel::OBAtom *arg4 = (OpenBabel::OBAtom *) 0 ;
        OpenBabel::OBAtom *arg5 = (OpenBabel::OBAtom *) 0 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 5) || (items > 5)) {
            SWIG_croak("Usage: OBMol_GetTorsion(self,OpenBabel::OBAtom *,OpenBabel::OBAtom *,OpenBabel::OBAtom *,OpenBabel::OBAtom *);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_GetTorsion. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_GetTorsion. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(2), (void **) &arg3, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 3 of OBMol_GetTorsion. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(3), (void **) &arg4, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 4 of OBMol_GetTorsion. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(4), (void **) &arg5, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 5 of OBMol_GetTorsion. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (double)(arg1)->GetTorsion(arg2,arg3,arg4,arg5);
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_GetTorsion) {
    dXSARGS;
    
    if (items == 5) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                {
                    void *tmp;
                    if (SWIG_ConvertPtr(ST(2), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                        _v = 0;
                    } else {
                        _v = 1;
                    }
                }
                if (_v) {
                    {
                        void *tmp;
                        if (SWIG_ConvertPtr(ST(3), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                            _v = 0;
                        } else {
                            _v = 1;
                        }
                    }
                    if (_v) {
                        {
                            void *tmp;
                            if (SWIG_ConvertPtr(ST(4), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                                _v = 0;
                            } else {
                                _v = 1;
                            }
                        }
                        if (_v) {
                            (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_GetTorsion__SWIG_1); return;
                        }
                    }
                }
            }
        }
    }
    if (items == 5) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvIOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                {
                    _v = SvIOK(ST(2)) ? 1 : 0;
                }
                if (_v) {
                    {
                        _v = SvIOK(ST(3)) ? 1 : 0;
                    }
                    if (_v) {
                        {
                            _v = SvIOK(ST(4)) ? 1 : 0;
                        }
                        if (_v) {
                            (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_GetTorsion__SWIG_0); return;
                        }
                    }
                }
            }
        }
    }
    
    croak("No matching function for overloaded 'OBMol_GetTorsion'");
    XSRETURN(0);
}


XS(_wrap_OBMol_GetFormula) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        std::string result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_GetFormula(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_GetFormula. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (arg1)->GetFormula();
        
        {
            if (argvi >= items) EXTEND(sp, 1);	// bump stack ptr, if needed
            char *data = const_cast<char*>((&result)->data());
            sv_setpvn(ST(argvi) = sv_newmortal(), data, (&result)->size());
            ++argvi;
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_GetEnergy) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_GetEnergy(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_GetEnergy. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (double)((OpenBabel::OBMol const *)arg1)->GetEnergy();
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_GetMolWt) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_GetMolWt(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_GetMolWt. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (double)(arg1)->GetMolWt();
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_GetExactMass) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_GetExactMass(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_GetExactMass. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (double)(arg1)->GetExactMass();
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_GetTotalCharge) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_GetTotalCharge(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_GetTotalCharge. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (int)(arg1)->GetTotalCharge();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_GetTotalSpinMultiplicity) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        unsigned int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_GetTotalSpinMultiplicity(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_GetTotalSpinMultiplicity. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (unsigned int)(arg1)->GetTotalSpinMultiplicity();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_GetDimension) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        unsigned short result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_GetDimension(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_GetDimension. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (unsigned short)((OpenBabel::OBMol const *)arg1)->GetDimension();
        
        ST(argvi) = sv_newmortal();
        sv_setuv(ST(argvi++), (UV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_GetCoordinates) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        double *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_GetCoordinates(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_GetCoordinates. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (double *)(arg1)->GetCoordinates();
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_double, 0|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_GetSSSR) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        std::vector<OpenBabel::OBRing * > *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_GetSSSR(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_GetSSSR. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            std::vector<OpenBabel::OBRing * > &_result_ref = (arg1)->GetSSSR();
            result = (std::vector<OpenBabel::OBRing * > *) &_result_ref;
        }
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_std__vectorTOpenBabel__OBRing_p_t, 0|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_AutomaticFormalCharge) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_AutomaticFormalCharge(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_AutomaticFormalCharge. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (bool)(arg1)->AutomaticFormalCharge();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_AutomaticPartialCharge) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_AutomaticPartialCharge(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_AutomaticPartialCharge. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (bool)(arg1)->AutomaticPartialCharge();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_SetTitle__SWIG_0) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        char *arg2 = (char *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_SetTitle(self,title);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_SetTitle. Expected _p_OpenBabel__OBMol");
            }
        }
        if (!SvOK((SV*) ST(1))) arg2 = 0;
        else arg2 = (char *) SvPV(ST(1), PL_na);
        (arg1)->SetTitle((char const *)arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_SetTitle__SWIG_1) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        std::string *arg2 = 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_SetTitle(self,title);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_SetTitle. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__string,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_SetTitle. Expected _p_std__string");
            }
        }
        (arg1)->SetTitle(*arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_SetTitle) {
    dXSARGS;
    
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_std__string, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_SetTitle__SWIG_1); return;
            }
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvPOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_SetTitle__SWIG_0); return;
            }
        }
    }
    
    croak("No matching function for overloaded 'OBMol_SetTitle'");
    XSRETURN(0);
}


XS(_wrap_OBMol_SetFormula) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        std::string arg2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_SetFormula(self,molFormula);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_SetFormula. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            STRLEN len;
            const char *ptr = SvPV(ST(1), len);
            if (!ptr) {
                SWIG_croak("Undefined variable in argument 2 of OBMol_SetFormula.");
            } else {
                arg2 = std::string(ptr, len);
            }
        }
        (arg1)->SetFormula(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_SetEnergy) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        double arg2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_SetEnergy(self,energy);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_SetEnergy. Expected _p_OpenBabel__OBMol");
            }
        }
        arg2 = (double) SvNV(ST(1));
        
        (arg1)->SetEnergy(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_SetDimension) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        unsigned short arg2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_SetDimension(self,d);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_SetDimension. Expected _p_OpenBabel__OBMol");
            }
        }
        arg2 = (unsigned short) SvUV(ST(1));
        (arg1)->SetDimension(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_SetTotalCharge) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int arg2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_SetTotalCharge(self,charge);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_SetTotalCharge. Expected _p_OpenBabel__OBMol");
            }
        }
        arg2 = (int) SvIV(ST(1));
        (arg1)->SetTotalCharge(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_SetTotalSpinMultiplicity) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        unsigned int arg2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_SetTotalSpinMultiplicity(self,spin);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_SetTotalSpinMultiplicity. Expected _p_OpenBabel__OBMol");
            }
        }
        arg2 = (unsigned int) SvUV(ST(1));
        (arg1)->SetTotalSpinMultiplicity(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_SetInternalCoord) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        SwigValueWrapper<std::vector<OpenBabel::OBInternalCoord * > > arg2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_SetInternalCoord(self,int_coord);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_SetInternalCoord. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            std::vector<OpenBabel::OBInternalCoord * > * argp;
            if (SWIG_ConvertPtr(ST(1),(void **) &argp, SWIGTYPE_p_std__vectorTOpenBabel__OBInternalCoord_p_t,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_SetInternalCoord. Expected _p_std__vectorTOpenBabel__OBInternalCoord_p_t");
            }
            arg2 = *argp;
        }
        (arg1)->SetInternalCoord(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_SetAutomaticFormalCharge) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        bool arg2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_SetAutomaticFormalCharge(self,val);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_SetAutomaticFormalCharge. Expected _p_OpenBabel__OBMol");
            }
        }
        arg2 = SvIV(ST(1)) ? true : false;
        (arg1)->SetAutomaticFormalCharge(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_SetAutomaticPartialCharge) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        bool arg2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_SetAutomaticPartialCharge(self,val);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_SetAutomaticPartialCharge. Expected _p_OpenBabel__OBMol");
            }
        }
        arg2 = SvIV(ST(1)) ? true : false;
        (arg1)->SetAutomaticPartialCharge(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_SetAromaticPerceived) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_SetAromaticPerceived(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_SetAromaticPerceived. Expected _p_OpenBabel__OBMol");
            }
        }
        (arg1)->SetAromaticPerceived();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_SetSSSRPerceived) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_SetSSSRPerceived(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_SetSSSRPerceived. Expected _p_OpenBabel__OBMol");
            }
        }
        (arg1)->SetSSSRPerceived();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_SetRingAtomsAndBondsPerceived) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_SetRingAtomsAndBondsPerceived(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_SetRingAtomsAndBondsPerceived. Expected _p_OpenBabel__OBMol");
            }
        }
        (arg1)->SetRingAtomsAndBondsPerceived();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_SetAtomTypesPerceived) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_SetAtomTypesPerceived(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_SetAtomTypesPerceived. Expected _p_OpenBabel__OBMol");
            }
        }
        (arg1)->SetAtomTypesPerceived();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_SetChainsPerceived) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_SetChainsPerceived(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_SetChainsPerceived. Expected _p_OpenBabel__OBMol");
            }
        }
        (arg1)->SetChainsPerceived();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_SetChiralityPerceived) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_SetChiralityPerceived(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_SetChiralityPerceived. Expected _p_OpenBabel__OBMol");
            }
        }
        (arg1)->SetChiralityPerceived();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_SetPartialChargesPerceived) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_SetPartialChargesPerceived(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_SetPartialChargesPerceived. Expected _p_OpenBabel__OBMol");
            }
        }
        (arg1)->SetPartialChargesPerceived();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_SetHybridizationPerceived) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_SetHybridizationPerceived(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_SetHybridizationPerceived. Expected _p_OpenBabel__OBMol");
            }
        }
        (arg1)->SetHybridizationPerceived();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_SetImplicitValencePerceived) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_SetImplicitValencePerceived(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_SetImplicitValencePerceived. Expected _p_OpenBabel__OBMol");
            }
        }
        (arg1)->SetImplicitValencePerceived();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_SetKekulePerceived) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_SetKekulePerceived(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_SetKekulePerceived. Expected _p_OpenBabel__OBMol");
            }
        }
        (arg1)->SetKekulePerceived();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_SetClosureBondsPerceived) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_SetClosureBondsPerceived(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_SetClosureBondsPerceived. Expected _p_OpenBabel__OBMol");
            }
        }
        (arg1)->SetClosureBondsPerceived();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_SetHydrogensAdded) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_SetHydrogensAdded(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_SetHydrogensAdded. Expected _p_OpenBabel__OBMol");
            }
        }
        (arg1)->SetHydrogensAdded();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_SetCorrectedForPH) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_SetCorrectedForPH(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_SetCorrectedForPH. Expected _p_OpenBabel__OBMol");
            }
        }
        (arg1)->SetCorrectedForPH();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_SetAromaticCorrected) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_SetAromaticCorrected(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_SetAromaticCorrected. Expected _p_OpenBabel__OBMol");
            }
        }
        (arg1)->SetAromaticCorrected();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_SetSpinMultiplicityAssigned) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_SetSpinMultiplicityAssigned(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_SetSpinMultiplicityAssigned. Expected _p_OpenBabel__OBMol");
            }
        }
        (arg1)->SetSpinMultiplicityAssigned();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_SetFlags) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int arg2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_SetFlags(self,flags);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_SetFlags. Expected _p_OpenBabel__OBMol");
            }
        }
        arg2 = (int) SvIV(ST(1));
        (arg1)->SetFlags(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_UnsetAromaticPerceived) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_UnsetAromaticPerceived(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_UnsetAromaticPerceived. Expected _p_OpenBabel__OBMol");
            }
        }
        (arg1)->UnsetAromaticPerceived();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_UnsetPartialChargesPerceived) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_UnsetPartialChargesPerceived(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_UnsetPartialChargesPerceived. Expected _p_OpenBabel__OBMol");
            }
        }
        (arg1)->UnsetPartialChargesPerceived();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_UnsetImplicitValencePerceived) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_UnsetImplicitValencePerceived(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_UnsetImplicitValencePerceived. Expected _p_OpenBabel__OBMol");
            }
        }
        (arg1)->UnsetImplicitValencePerceived();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_UnsetFlag) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int arg2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_UnsetFlag(self,flag);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_UnsetFlag. Expected _p_OpenBabel__OBMol");
            }
        }
        arg2 = (int) SvIV(ST(1));
        (arg1)->UnsetFlag(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_DoTransformations) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        std::map<std::string,std::string > *arg2 = (std::map<std::string,std::string > *) 0 ;
        OpenBabel::OBBase *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_DoTransformations(self,pOptions);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_DoTransformations. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__mapTstd__string_std__string_t,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_DoTransformations. Expected _p_std__mapTstd__string_std__string_t");
            }
        }
        result = (OpenBabel::OBBase *)(arg1)->DoTransformations((std::map<std::string,std::string > const *)arg2);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBBase, 0|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_ClassDescription) {
    {
        char *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 0) || (items > 0)) {
            SWIG_croak("Usage: OBMol_ClassDescription();");
        }
        result = (char *)OpenBabel::OBMol::ClassDescription();
        
        ST(argvi) = sv_newmortal();
        if (result) {
            sv_setpv((SV*)ST(argvi++), (char *) result);
        } else {
            sv_setsv((SV*)ST(argvi++), &PL_sv_undef);
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_Clear) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_Clear(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_Clear. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (bool)(arg1)->Clear();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_RenumberAtoms) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        std::vector<OpenBabel::OBNodeBase * > *arg2 = 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_RenumberAtoms(self,std::vector<OpenBabel::OBNodeBase * > &);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_RenumberAtoms. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__vectorTOpenBabel__OBNodeBase_p_t,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_RenumberAtoms. Expected _p_std__vectorTOpenBabel__OBNodeBase_p_t");
            }
        }
        (arg1)->RenumberAtoms(*arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_ToInertialFrame__SWIG_0) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int arg2 ;
        double *arg3 = (double *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBMol_ToInertialFrame(self,conf,rmat);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_ToInertialFrame. Expected _p_OpenBabel__OBMol");
            }
        }
        arg2 = (int) SvIV(ST(1));
        {
            if (SWIG_ConvertPtr(ST(2), (void **) &arg3, SWIGTYPE_p_double,0) < 0) {
                SWIG_croak("Type error in argument 3 of OBMol_ToInertialFrame. Expected _p_double");
            }
        }
        (arg1)->ToInertialFrame(arg2,arg3);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_ToInertialFrame__SWIG_1) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_ToInertialFrame(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_ToInertialFrame. Expected _p_OpenBabel__OBMol");
            }
        }
        (arg1)->ToInertialFrame();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_ToInertialFrame) {
    dXSARGS;
    
    if (items == 1) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_ToInertialFrame__SWIG_1); return;
        }
    }
    if (items == 3) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvIOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                {
                    void *tmp;
                    if (SWIG_ConvertPtr(ST(2), (void **) &tmp, SWIGTYPE_p_double, 0) == -1) {
                        _v = 0;
                    } else {
                        _v = 1;
                    }
                }
                if (_v) {
                    (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_ToInertialFrame__SWIG_0); return;
                }
            }
        }
    }
    
    croak("No matching function for overloaded 'OBMol_ToInertialFrame'");
    XSRETURN(0);
}


XS(_wrap_OBMol_Translate__SWIG_0) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        OpenBabel::vector3 *arg2 = 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_Translate(self,v);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_Translate. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__vector3,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_Translate. Expected _p_OpenBabel__vector3");
            }
        }
        (arg1)->Translate((OpenBabel::vector3 const &)*arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_Translate__SWIG_1) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        OpenBabel::vector3 *arg2 = 0 ;
        int arg3 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBMol_Translate(self,v,conf);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_Translate. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__vector3,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_Translate. Expected _p_OpenBabel__vector3");
            }
        }
        arg3 = (int) SvIV(ST(2));
        (arg1)->Translate((OpenBabel::vector3 const &)*arg2,arg3);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_Translate) {
    dXSARGS;
    
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_OpenBabel__vector3, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_Translate__SWIG_0); return;
            }
        }
    }
    if (items == 3) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_OpenBabel__vector3, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                {
                    _v = SvIOK(ST(2)) ? 1 : 0;
                }
                if (_v) {
                    (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_Translate__SWIG_1); return;
                }
            }
        }
    }
    
    croak("No matching function for overloaded 'OBMol_Translate'");
    XSRETURN(0);
}


XS(_wrap_OBMol_Rotate__SWIG_0) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        double (*arg2)[3] ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_Rotate(self,u);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_Rotate. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_a_3__double,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_Rotate. Expected _p_a_3__double");
            }
        }
        (arg1)->Rotate((double const (*)[3])arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_Rotate__SWIG_1) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        double *arg2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_Rotate(self,m);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_Rotate. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_double,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_Rotate. Expected _p_double");
            }
        }
        (arg1)->Rotate((double const (*))arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_Rotate__SWIG_2) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        double *arg2 ;
        int arg3 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBMol_Rotate(self,m,nconf);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_Rotate. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_double,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_Rotate. Expected _p_double");
            }
        }
        arg3 = (int) SvIV(ST(2));
        (arg1)->Rotate((double const (*))arg2,arg3);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_Rotate) {
    dXSARGS;
    
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_a_3__double, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_Rotate__SWIG_0); return;
            }
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_double, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_Rotate__SWIG_1); return;
            }
        }
    }
    if (items == 3) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_double, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                {
                    _v = SvIOK(ST(2)) ? 1 : 0;
                }
                if (_v) {
                    (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_Rotate__SWIG_2); return;
                }
            }
        }
    }
    
    croak("No matching function for overloaded 'OBMol_Rotate'");
    XSRETURN(0);
}


XS(_wrap_OBMol_Center__SWIG_0) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_Center(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_Center. Expected _p_OpenBabel__OBMol");
            }
        }
        (arg1)->Center();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_Kekulize) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_Kekulize(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_Kekulize. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (bool)(arg1)->Kekulize();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_PerceiveKekuleBonds) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_PerceiveKekuleBonds(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_PerceiveKekuleBonds. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (bool)(arg1)->PerceiveKekuleBonds();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_NewPerceiveKekuleBonds) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_NewPerceiveKekuleBonds(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_NewPerceiveKekuleBonds. Expected _p_OpenBabel__OBMol");
            }
        }
        (arg1)->NewPerceiveKekuleBonds();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_DeleteHydrogen) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        OpenBabel::OBAtom *arg2 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_DeleteHydrogen(self,OpenBabel::OBAtom *);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_DeleteHydrogen. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_DeleteHydrogen. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->DeleteHydrogen(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_DeleteHydrogens__SWIG_0) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_DeleteHydrogens(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_DeleteHydrogens. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (bool)(arg1)->DeleteHydrogens();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_DeleteHydrogens__SWIG_1) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        OpenBabel::OBAtom *arg2 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_DeleteHydrogens(self,OpenBabel::OBAtom *);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_DeleteHydrogens. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_DeleteHydrogens. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->DeleteHydrogens(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_DeleteHydrogens) {
    dXSARGS;
    
    if (items == 1) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_DeleteHydrogens__SWIG_0); return;
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_DeleteHydrogens__SWIG_1); return;
            }
        }
    }
    
    croak("No matching function for overloaded 'OBMol_DeleteHydrogens'");
    XSRETURN(0);
}


XS(_wrap_OBMol_DeleteNonPolarHydrogens) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_DeleteNonPolarHydrogens(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_DeleteNonPolarHydrogens. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (bool)(arg1)->DeleteNonPolarHydrogens();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_AddHydrogens__SWIG_0) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        bool arg2 ;
        bool arg3 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBMol_AddHydrogens(self,polaronly,correctForPH);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_AddHydrogens. Expected _p_OpenBabel__OBMol");
            }
        }
        arg2 = SvIV(ST(1)) ? true : false;
        arg3 = SvIV(ST(2)) ? true : false;
        result = (bool)(arg1)->AddHydrogens(arg2,arg3);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_AddHydrogens__SWIG_1) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        bool arg2 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_AddHydrogens(self,polaronly);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_AddHydrogens. Expected _p_OpenBabel__OBMol");
            }
        }
        arg2 = SvIV(ST(1)) ? true : false;
        result = (bool)(arg1)->AddHydrogens(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_AddHydrogens__SWIG_2) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_AddHydrogens(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_AddHydrogens. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (bool)(arg1)->AddHydrogens();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_AddHydrogens__SWIG_3) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        OpenBabel::OBAtom *arg2 = (OpenBabel::OBAtom *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_AddHydrogens(self,OpenBabel::OBAtom *);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_AddHydrogens. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_AddHydrogens. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (bool)(arg1)->AddHydrogens(arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_AddHydrogens) {
    dXSARGS;
    
    if (items == 1) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_AddHydrogens__SWIG_2); return;
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_AddHydrogens__SWIG_3); return;
            }
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvIOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_AddHydrogens__SWIG_1); return;
            }
        }
    }
    if (items == 3) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvIOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                {
                    _v = SvIOK(ST(2)) ? 1 : 0;
                }
                if (_v) {
                    (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_AddHydrogens__SWIG_0); return;
                }
            }
        }
    }
    
    croak("No matching function for overloaded 'OBMol_AddHydrogens'");
    XSRETURN(0);
}


XS(_wrap_OBMol_AddPolarHydrogens) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_AddPolarHydrogens(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_AddPolarHydrogens. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (bool)(arg1)->AddPolarHydrogens();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_StripSalts) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_StripSalts(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_StripSalts. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (bool)(arg1)->StripSalts();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_ConvertDativeBonds) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_ConvertDativeBonds(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_ConvertDativeBonds. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (bool)(arg1)->ConvertDativeBonds();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_CorrectForPH) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_CorrectForPH(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_CorrectForPH. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (bool)(arg1)->CorrectForPH();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_AssignSpinMultiplicity) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_AssignSpinMultiplicity(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_AssignSpinMultiplicity. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (bool)(arg1)->AssignSpinMultiplicity();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_Center__SWIG_1) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int arg2 ;
        OpenBabel::vector3 result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_Center(self,nconf);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_Center. Expected _p_OpenBabel__OBMol");
            }
        }
        arg2 = (int) SvIV(ST(1));
        result = (arg1)->Center(arg2);
        
        {
            OpenBabel::vector3 * resultobj = new OpenBabel::vector3((OpenBabel::vector3 &)result);
            ST(argvi) = sv_newmortal();
            SWIG_MakePtr(ST(argvi++), (void *) resultobj, SWIGTYPE_p_OpenBabel__vector3, 0|SWIG_OWNER);
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_Center) {
    dXSARGS;
    
    if (items == 1) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_Center__SWIG_0); return;
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvIOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_Center__SWIG_1); return;
            }
        }
    }
    
    croak("No matching function for overloaded 'OBMol_Center'");
    XSRETURN(0);
}


XS(_wrap_OBMol_SetTorsion) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        OpenBabel::OBAtom *arg2 = (OpenBabel::OBAtom *) 0 ;
        OpenBabel::OBAtom *arg3 = (OpenBabel::OBAtom *) 0 ;
        OpenBabel::OBAtom *arg4 = (OpenBabel::OBAtom *) 0 ;
        OpenBabel::OBAtom *arg5 = (OpenBabel::OBAtom *) 0 ;
        double arg6 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 6) || (items > 6)) {
            SWIG_croak("Usage: OBMol_SetTorsion(self,OpenBabel::OBAtom *,OpenBabel::OBAtom *,OpenBabel::OBAtom *,OpenBabel::OBAtom *,double);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_SetTorsion. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_SetTorsion. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(2), (void **) &arg3, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 3 of OBMol_SetTorsion. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(3), (void **) &arg4, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 4 of OBMol_SetTorsion. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(4), (void **) &arg5, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 5 of OBMol_SetTorsion. Expected _p_OpenBabel__OBAtom");
            }
        }
        arg6 = (double) SvNV(ST(5));
        
        (arg1)->SetTorsion(arg2,arg3,arg4,arg5,arg6);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_FindSSSR) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_FindSSSR(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_FindSSSR. Expected _p_OpenBabel__OBMol");
            }
        }
        (arg1)->FindSSSR();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_FindRingAtomsAndBonds) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_FindRingAtomsAndBonds(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_FindRingAtomsAndBonds. Expected _p_OpenBabel__OBMol");
            }
        }
        (arg1)->FindRingAtomsAndBonds();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_FindChiralCenters) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_FindChiralCenters(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_FindChiralCenters. Expected _p_OpenBabel__OBMol");
            }
        }
        (arg1)->FindChiralCenters();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_FindChildren__SWIG_0) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        std::vector<int > *arg2 = 0 ;
        int arg3 ;
        int arg4 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 4) || (items > 4)) {
            SWIG_croak("Usage: OBMol_FindChildren(self,std::vector<int > &,int,int);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_FindChildren. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__vectorTint_t,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_FindChildren. Expected _p_std__vectorTint_t");
            }
        }
        arg3 = (int) SvIV(ST(2));
        arg4 = (int) SvIV(ST(3));
        (arg1)->FindChildren(*arg2,arg3,arg4);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_FindChildren__SWIG_1) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        std::vector<OpenBabel::OBAtom * > *arg2 = 0 ;
        OpenBabel::OBAtom *arg3 = (OpenBabel::OBAtom *) 0 ;
        OpenBabel::OBAtom *arg4 = (OpenBabel::OBAtom *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 4) || (items > 4)) {
            SWIG_croak("Usage: OBMol_FindChildren(self,std::vector<OpenBabel::OBAtom * > &,OpenBabel::OBAtom *,OpenBabel::OBAtom *);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_FindChildren. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__vectorTOpenBabel__OBAtom_p_t,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_FindChildren. Expected _p_std__vectorTOpenBabel__OBAtom_p_t");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(2), (void **) &arg3, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 3 of OBMol_FindChildren. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(3), (void **) &arg4, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 4 of OBMol_FindChildren. Expected _p_OpenBabel__OBAtom");
            }
        }
        (arg1)->FindChildren(*arg2,arg3,arg4);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_FindChildren) {
    dXSARGS;
    
    if (items == 4) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_std__vectorTint_t, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                {
                    _v = SvIOK(ST(2)) ? 1 : 0;
                }
                if (_v) {
                    {
                        _v = SvIOK(ST(3)) ? 1 : 0;
                    }
                    if (_v) {
                        (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_FindChildren__SWIG_0); return;
                    }
                }
            }
        }
    }
    if (items == 4) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBMol, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_std__vectorTOpenBabel__OBAtom_p_t, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                {
                    void *tmp;
                    if (SWIG_ConvertPtr(ST(2), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                        _v = 0;
                    } else {
                        _v = 1;
                    }
                }
                if (_v) {
                    {
                        void *tmp;
                        if (SWIG_ConvertPtr(ST(3), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                            _v = 0;
                        } else {
                            _v = 1;
                        }
                    }
                    if (_v) {
                        (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_OBMol_FindChildren__SWIG_1); return;
                    }
                }
            }
        }
    }
    
    croak("No matching function for overloaded 'OBMol_FindChildren'");
    XSRETURN(0);
}


XS(_wrap_OBMol_FindLargestFragment) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        OpenBabel::OBBitVec *arg2 = 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_FindLargestFragment(self,OpenBabel::OBBitVec &);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_FindLargestFragment. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBBitVec,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_FindLargestFragment. Expected _p_OpenBabel__OBBitVec");
            }
        }
        (arg1)->FindLargestFragment(*arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_ContigFragList) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        std::vector<std::vector<int > > *arg2 = 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_ContigFragList(self,std::vector<std::vector<int > > &);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_ContigFragList. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__vectorTstd__vectorTint_t_t,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_ContigFragList. Expected _p_std__vectorTstd__vectorTint_t_t");
            }
        }
        (arg1)->ContigFragList(*arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_Align) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        OpenBabel::OBAtom *arg2 = (OpenBabel::OBAtom *) 0 ;
        OpenBabel::OBAtom *arg3 = (OpenBabel::OBAtom *) 0 ;
        OpenBabel::vector3 *arg4 = 0 ;
        OpenBabel::vector3 *arg5 = 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 5) || (items > 5)) {
            SWIG_croak("Usage: OBMol_Align(self,OpenBabel::OBAtom *,OpenBabel::OBAtom *,OpenBabel::vector3 &,OpenBabel::vector3 &);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_Align. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_Align. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(2), (void **) &arg3, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 3 of OBMol_Align. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(3), (void **) &arg4, SWIGTYPE_p_OpenBabel__vector3,0) < 0) {
                SWIG_croak("Type error in argument 4 of OBMol_Align. Expected _p_OpenBabel__vector3");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(4), (void **) &arg5, SWIGTYPE_p_OpenBabel__vector3,0) < 0) {
                SWIG_croak("Type error in argument 5 of OBMol_Align. Expected _p_OpenBabel__vector3");
            }
        }
        (arg1)->Align(arg2,arg3,*arg4,*arg5);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_ConnectTheDots) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_ConnectTheDots(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_ConnectTheDots. Expected _p_OpenBabel__OBMol");
            }
        }
        (arg1)->ConnectTheDots();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_PerceiveBondOrders) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_PerceiveBondOrders(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_PerceiveBondOrders. Expected _p_OpenBabel__OBMol");
            }
        }
        (arg1)->PerceiveBondOrders();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_FindTorsions) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_FindTorsions(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_FindTorsions. Expected _p_OpenBabel__OBMol");
            }
        }
        (arg1)->FindTorsions();
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_GetGTDVector) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        std::vector<int > *arg2 = 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_GetGTDVector(self,std::vector<int > &);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_GetGTDVector. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__vectorTint_t,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_GetGTDVector. Expected _p_std__vectorTint_t");
            }
        }
        result = (bool)(arg1)->GetGTDVector(*arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_GetGIVector) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        std::vector<unsigned int > *arg2 = 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_GetGIVector(self,std::vector<unsigned int > &);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_GetGIVector. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__vectorTunsigned_int_t,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_GetGIVector. Expected _p_std__vectorTunsigned_int_t");
            }
        }
        (arg1)->GetGIVector(*arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_GetGIDVector) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        std::vector<unsigned int > *arg2 = 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_GetGIDVector(self,std::vector<unsigned int > &);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_GetGIDVector. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__vectorTunsigned_int_t,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_GetGIDVector. Expected _p_std__vectorTunsigned_int_t");
            }
        }
        (arg1)->GetGIDVector(*arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_Has2D) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_Has2D(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_Has2D. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (bool)(arg1)->Has2D();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_Has3D) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_Has3D(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_Has3D. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (bool)(arg1)->Has3D();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_HasNonZeroCoords) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_HasNonZeroCoords(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_HasNonZeroCoords. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (bool)(arg1)->HasNonZeroCoords();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_HasAromaticPerceived) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_HasAromaticPerceived(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_HasAromaticPerceived. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (bool)(arg1)->HasAromaticPerceived();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_HasSSSRPerceived) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_HasSSSRPerceived(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_HasSSSRPerceived. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (bool)(arg1)->HasSSSRPerceived();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_HasRingAtomsAndBondsPerceived) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_HasRingAtomsAndBondsPerceived(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_HasRingAtomsAndBondsPerceived. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (bool)(arg1)->HasRingAtomsAndBondsPerceived();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_HasAtomTypesPerceived) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_HasAtomTypesPerceived(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_HasAtomTypesPerceived. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (bool)(arg1)->HasAtomTypesPerceived();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_HasChiralityPerceived) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_HasChiralityPerceived(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_HasChiralityPerceived. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (bool)(arg1)->HasChiralityPerceived();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_HasPartialChargesPerceived) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_HasPartialChargesPerceived(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_HasPartialChargesPerceived. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (bool)(arg1)->HasPartialChargesPerceived();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_HasHybridizationPerceived) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_HasHybridizationPerceived(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_HasHybridizationPerceived. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (bool)(arg1)->HasHybridizationPerceived();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_HasImplicitValencePerceived) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_HasImplicitValencePerceived(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_HasImplicitValencePerceived. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (bool)(arg1)->HasImplicitValencePerceived();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_HasKekulePerceived) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_HasKekulePerceived(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_HasKekulePerceived. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (bool)(arg1)->HasKekulePerceived();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_HasClosureBondsPerceived) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_HasClosureBondsPerceived(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_HasClosureBondsPerceived. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (bool)(arg1)->HasClosureBondsPerceived();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_HasChainsPerceived) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_HasChainsPerceived(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_HasChainsPerceived. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (bool)(arg1)->HasChainsPerceived();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_HasHydrogensAdded) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_HasHydrogensAdded(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_HasHydrogensAdded. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (bool)(arg1)->HasHydrogensAdded();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_HasAromaticCorrected) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_HasAromaticCorrected(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_HasAromaticCorrected. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (bool)(arg1)->HasAromaticCorrected();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_IsCorrectedForPH) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_IsCorrectedForPH(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_IsCorrectedForPH. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (bool)(arg1)->IsCorrectedForPH();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_HasSpinMultiplicityAssigned) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_HasSpinMultiplicityAssigned(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_HasSpinMultiplicityAssigned. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (bool)(arg1)->HasSpinMultiplicityAssigned();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_IsChiral) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_IsChiral(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_IsChiral. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (bool)(arg1)->IsChiral();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_Empty) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_Empty(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_Empty. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (bool)(arg1)->Empty();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_NumConformers) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_NumConformers(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_NumConformers. Expected _p_OpenBabel__OBMol");
            }
        }
        result = (int)(arg1)->NumConformers();
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_SetConformers) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        std::vector<double * > *arg2 = 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_SetConformers(self,v);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_SetConformers. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__vectorTdouble_p_t,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_SetConformers. Expected _p_std__vectorTdouble_p_t");
            }
        }
        (arg1)->SetConformers(*arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_AddConformer) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        double *arg2 = (double *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_AddConformer(self,f);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_AddConformer. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_double,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_AddConformer. Expected _p_double");
            }
        }
        (arg1)->AddConformer(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_SetConformer) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int arg2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_SetConformer(self,i);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_SetConformer. Expected _p_OpenBabel__OBMol");
            }
        }
        arg2 = (int) SvIV(ST(1));
        (arg1)->SetConformer(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_CopyConformer) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        double *arg2 = (double *) 0 ;
        int arg3 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: OBMol_CopyConformer(self,double *,int);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_CopyConformer. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_double,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_CopyConformer. Expected _p_double");
            }
        }
        arg3 = (int) SvIV(ST(2));
        (arg1)->CopyConformer(arg2,arg3);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_DeleteConformer) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int arg2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_DeleteConformer(self,int);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_DeleteConformer. Expected _p_OpenBabel__OBMol");
            }
        }
        arg2 = (int) SvIV(ST(1));
        (arg1)->DeleteConformer(arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_GetConformer) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        int arg2 ;
        double *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_GetConformer(self,i);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_GetConformer. Expected _p_OpenBabel__OBMol");
            }
        }
        arg2 = (int) SvIV(ST(1));
        result = (double *)(arg1)->GetConformer(arg2);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_double, 0|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_BeginConformer) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        std::vector<double * >::iterator *arg2 = 0 ;
        double *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_BeginConformer(self,i);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_BeginConformer. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__vectorTdouble_p_t__iterator,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_BeginConformer. Expected _p_std__vectorTdouble_p_t__iterator");
            }
        }
        result = (double *)(arg1)->BeginConformer(*arg2);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_double, 0|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_NextConformer) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        std::vector<double * >::iterator *arg2 = 0 ;
        double *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_NextConformer(self,i);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_NextConformer. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__vectorTdouble_p_t__iterator,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_NextConformer. Expected _p_std__vectorTdouble_p_t__iterator");
            }
        }
        result = (double *)(arg1)->NextConformer(*arg2);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_double, 0|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_GetConformers) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        std::vector<double * > *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBMol_GetConformers(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_GetConformers. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            std::vector<double * > &_result_ref = (arg1)->GetConformers();
            result = (std::vector<double * > *) &_result_ref;
        }
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_std__vectorTdouble_p_t, 0|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_BeginAtom) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        std::vector<OpenBabel::OBNodeBase * >::iterator *arg2 = 0 ;
        OpenBabel::OBAtom *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_BeginAtom(self,i);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_BeginAtom. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__vectorTOpenBabel__OBNodeBase_p_t__iterator,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_BeginAtom. Expected _p_std__vectorTOpenBabel__OBNodeBase_p_t__iterator");
            }
        }
        result = (OpenBabel::OBAtom *)(arg1)->BeginAtom(*arg2);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBAtom, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_NextAtom) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        std::vector<OpenBabel::OBNodeBase * >::iterator *arg2 = 0 ;
        OpenBabel::OBAtom *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_NextAtom(self,i);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_NextAtom. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__vectorTOpenBabel__OBNodeBase_p_t__iterator,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_NextAtom. Expected _p_std__vectorTOpenBabel__OBNodeBase_p_t__iterator");
            }
        }
        result = (OpenBabel::OBAtom *)(arg1)->NextAtom(*arg2);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBAtom, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_BeginBond) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        std::vector<OpenBabel::OBEdgeBase * >::iterator *arg2 = 0 ;
        OpenBabel::OBBond *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_BeginBond(self,i);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_BeginBond. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__vectorTOpenBabel__OBEdgeBase_p_t__iterator,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_BeginBond. Expected _p_std__vectorTOpenBabel__OBEdgeBase_p_t__iterator");
            }
        }
        result = (OpenBabel::OBBond *)(arg1)->BeginBond(*arg2);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBBond, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_NextBond) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        std::vector<OpenBabel::OBEdgeBase * >::iterator *arg2 = 0 ;
        OpenBabel::OBBond *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_NextBond(self,i);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_NextBond. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__vectorTOpenBabel__OBEdgeBase_p_t__iterator,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_NextBond. Expected _p_std__vectorTOpenBabel__OBEdgeBase_p_t__iterator");
            }
        }
        result = (OpenBabel::OBBond *)(arg1)->NextBond(*arg2);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBBond, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_BeginResidue) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        std::vector<OpenBabel::OBResidue * >::iterator *arg2 = 0 ;
        OpenBabel::OBResidue *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_BeginResidue(self,i);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_BeginResidue. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__vectorTOpenBabel__OBResidue_p_t__iterator,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_BeginResidue. Expected _p_std__vectorTOpenBabel__OBResidue_p_t__iterator");
            }
        }
        result = (OpenBabel::OBResidue *)(arg1)->BeginResidue(*arg2);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBResidue, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_NextResidue) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        std::vector<OpenBabel::OBResidue * >::iterator *arg2 = 0 ;
        OpenBabel::OBResidue *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_NextResidue(self,i);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_NextResidue. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__vectorTOpenBabel__OBResidue_p_t__iterator,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_NextResidue. Expected _p_std__vectorTOpenBabel__OBResidue_p_t__iterator");
            }
        }
        result = (OpenBabel::OBResidue *)(arg1)->NextResidue(*arg2);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBResidue, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_BeginInternalCoord) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        std::vector<OpenBabel::OBInternalCoord * >::iterator *arg2 = 0 ;
        OpenBabel::OBInternalCoord *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_BeginInternalCoord(self,i);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_BeginInternalCoord. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__vectorTOpenBabel__OBInternalCoord_p_t__iterator,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_BeginInternalCoord. Expected _p_std__vectorTOpenBabel__OBInternalCoord_p_t__iterator");
            }
        }
        result = (OpenBabel::OBInternalCoord *)(arg1)->BeginInternalCoord(*arg2);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBInternalCoord, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBMol_NextInternalCoord) {
    {
        OpenBabel::OBMol *arg1 = (OpenBabel::OBMol *) 0 ;
        std::vector<OpenBabel::OBInternalCoord * >::iterator *arg2 = 0 ;
        OpenBabel::OBInternalCoord *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBMol_NextInternalCoord(self,i);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBMol_NextInternalCoord. Expected _p_OpenBabel__OBMol");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__vectorTOpenBabel__OBInternalCoord_p_t__iterator,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBMol_NextInternalCoord. Expected _p_std__vectorTOpenBabel__OBInternalCoord_p_t__iterator");
            }
        }
        result = (OpenBabel::OBInternalCoord *)(arg1)->NextInternalCoord(*arg2);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBInternalCoord, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBInternalCoord__a_set) {
    {
        OpenBabel::OBInternalCoord *arg1 = (OpenBabel::OBInternalCoord *) 0 ;
        OpenBabel::OBAtom *arg2 = (OpenBabel::OBAtom *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBInternalCoord__a_set(self,_a);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBInternalCoord,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBInternalCoord__a_set. Expected _p_OpenBabel__OBInternalCoord");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBInternalCoord__a_set. Expected _p_OpenBabel__OBAtom");
            }
        }
        if (arg1) (arg1)->_a = arg2;
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBInternalCoord__a_get) {
    {
        OpenBabel::OBInternalCoord *arg1 = (OpenBabel::OBInternalCoord *) 0 ;
        OpenBabel::OBAtom *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBInternalCoord__a_get(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBInternalCoord,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBInternalCoord__a_get. Expected _p_OpenBabel__OBInternalCoord");
            }
        }
        result = (OpenBabel::OBAtom *) ((arg1)->_a);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBAtom, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBInternalCoord__b_set) {
    {
        OpenBabel::OBInternalCoord *arg1 = (OpenBabel::OBInternalCoord *) 0 ;
        OpenBabel::OBAtom *arg2 = (OpenBabel::OBAtom *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBInternalCoord__b_set(self,_b);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBInternalCoord,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBInternalCoord__b_set. Expected _p_OpenBabel__OBInternalCoord");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBInternalCoord__b_set. Expected _p_OpenBabel__OBAtom");
            }
        }
        if (arg1) (arg1)->_b = arg2;
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBInternalCoord__b_get) {
    {
        OpenBabel::OBInternalCoord *arg1 = (OpenBabel::OBInternalCoord *) 0 ;
        OpenBabel::OBAtom *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBInternalCoord__b_get(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBInternalCoord,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBInternalCoord__b_get. Expected _p_OpenBabel__OBInternalCoord");
            }
        }
        result = (OpenBabel::OBAtom *) ((arg1)->_b);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBAtom, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBInternalCoord__c_set) {
    {
        OpenBabel::OBInternalCoord *arg1 = (OpenBabel::OBInternalCoord *) 0 ;
        OpenBabel::OBAtom *arg2 = (OpenBabel::OBAtom *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBInternalCoord__c_set(self,_c);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBInternalCoord,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBInternalCoord__c_set. Expected _p_OpenBabel__OBInternalCoord");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 2 of OBInternalCoord__c_set. Expected _p_OpenBabel__OBAtom");
            }
        }
        if (arg1) (arg1)->_c = arg2;
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBInternalCoord__c_get) {
    {
        OpenBabel::OBInternalCoord *arg1 = (OpenBabel::OBInternalCoord *) 0 ;
        OpenBabel::OBAtom *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBInternalCoord__c_get(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBInternalCoord,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBInternalCoord__c_get. Expected _p_OpenBabel__OBInternalCoord");
            }
        }
        result = (OpenBabel::OBAtom *) ((arg1)->_c);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBAtom, SWIG_SHADOW|0);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBInternalCoord__dst_set) {
    {
        OpenBabel::OBInternalCoord *arg1 = (OpenBabel::OBInternalCoord *) 0 ;
        double arg2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBInternalCoord__dst_set(self,_dst);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBInternalCoord,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBInternalCoord__dst_set. Expected _p_OpenBabel__OBInternalCoord");
            }
        }
        arg2 = (double) SvNV(ST(1));
        
        if (arg1) (arg1)->_dst = arg2;
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBInternalCoord__dst_get) {
    {
        OpenBabel::OBInternalCoord *arg1 = (OpenBabel::OBInternalCoord *) 0 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBInternalCoord__dst_get(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBInternalCoord,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBInternalCoord__dst_get. Expected _p_OpenBabel__OBInternalCoord");
            }
        }
        result = (double) ((arg1)->_dst);
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBInternalCoord__ang_set) {
    {
        OpenBabel::OBInternalCoord *arg1 = (OpenBabel::OBInternalCoord *) 0 ;
        double arg2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBInternalCoord__ang_set(self,_ang);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBInternalCoord,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBInternalCoord__ang_set. Expected _p_OpenBabel__OBInternalCoord");
            }
        }
        arg2 = (double) SvNV(ST(1));
        
        if (arg1) (arg1)->_ang = arg2;
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBInternalCoord__ang_get) {
    {
        OpenBabel::OBInternalCoord *arg1 = (OpenBabel::OBInternalCoord *) 0 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBInternalCoord__ang_get(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBInternalCoord,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBInternalCoord__ang_get. Expected _p_OpenBabel__OBInternalCoord");
            }
        }
        result = (double) ((arg1)->_ang);
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBInternalCoord__tor_set) {
    {
        OpenBabel::OBInternalCoord *arg1 = (OpenBabel::OBInternalCoord *) 0 ;
        double arg2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: OBInternalCoord__tor_set(self,_tor);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBInternalCoord,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBInternalCoord__tor_set. Expected _p_OpenBabel__OBInternalCoord");
            }
        }
        arg2 = (double) SvNV(ST(1));
        
        if (arg1) (arg1)->_tor = arg2;
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_OBInternalCoord__tor_get) {
    {
        OpenBabel::OBInternalCoord *arg1 = (OpenBabel::OBInternalCoord *) 0 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: OBInternalCoord__tor_get(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBInternalCoord,0) < 0) {
                SWIG_croak("Type error in argument 1 of OBInternalCoord__tor_get. Expected _p_OpenBabel__OBInternalCoord");
            }
        }
        result = (double) ((arg1)->_tor);
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_new_OBInternalCoord__SWIG_0) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        OpenBabel::OBAtom *arg2 = (OpenBabel::OBAtom *) 0 ;
        OpenBabel::OBAtom *arg3 = (OpenBabel::OBAtom *) 0 ;
        OpenBabel::OBInternalCoord *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: new_OBInternalCoord(a,b,c);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of new_OBInternalCoord. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 2 of new_OBInternalCoord. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(2), (void **) &arg3, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 3 of new_OBInternalCoord. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (OpenBabel::OBInternalCoord *)new OpenBabel::OBInternalCoord(arg1,arg2,arg3);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBInternalCoord, SWIG_SHADOW|SWIG_OWNER);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_new_OBInternalCoord__SWIG_1) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        OpenBabel::OBAtom *arg2 = (OpenBabel::OBAtom *) 0 ;
        OpenBabel::OBInternalCoord *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: new_OBInternalCoord(a,b);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of new_OBInternalCoord. Expected _p_OpenBabel__OBAtom");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 2 of new_OBInternalCoord. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (OpenBabel::OBInternalCoord *)new OpenBabel::OBInternalCoord(arg1,arg2);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBInternalCoord, SWIG_SHADOW|SWIG_OWNER);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_new_OBInternalCoord__SWIG_2) {
    {
        OpenBabel::OBAtom *arg1 = (OpenBabel::OBAtom *) 0 ;
        OpenBabel::OBInternalCoord *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: new_OBInternalCoord(a);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBAtom,0) < 0) {
                SWIG_croak("Type error in argument 1 of new_OBInternalCoord. Expected _p_OpenBabel__OBAtom");
            }
        }
        result = (OpenBabel::OBInternalCoord *)new OpenBabel::OBInternalCoord(arg1);
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBInternalCoord, SWIG_SHADOW|SWIG_OWNER);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_new_OBInternalCoord__SWIG_3) {
    {
        OpenBabel::OBInternalCoord *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 0) || (items > 0)) {
            SWIG_croak("Usage: new_OBInternalCoord();");
        }
        result = (OpenBabel::OBInternalCoord *)new OpenBabel::OBInternalCoord();
        
        ST(argvi) = sv_newmortal();
        SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_OpenBabel__OBInternalCoord, SWIG_SHADOW|SWIG_OWNER);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_new_OBInternalCoord) {
    dXSARGS;
    
    if (items == 0) {
        (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_new_OBInternalCoord__SWIG_3); return;
    }
    if (items == 1) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_new_OBInternalCoord__SWIG_2); return;
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_new_OBInternalCoord__SWIG_1); return;
            }
        }
    }
    if (items == 3) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                {
                    void *tmp;
                    if (SWIG_ConvertPtr(ST(2), (void **) &tmp, SWIGTYPE_p_OpenBabel__OBAtom, 0) == -1) {
                        _v = 0;
                    } else {
                        _v = 1;
                    }
                }
                if (_v) {
                    (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_new_OBInternalCoord__SWIG_0); return;
                }
            }
        }
    }
    
    croak("No matching function for overloaded 'new_OBInternalCoord'");
    XSRETURN(0);
}


XS(_wrap_delete_OBInternalCoord) {
    {
        OpenBabel::OBInternalCoord *arg1 = (OpenBabel::OBInternalCoord *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: delete_OBInternalCoord(self);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_OpenBabel__OBInternalCoord,0) < 0) {
                SWIG_croak("Type error in argument 1 of delete_OBInternalCoord. Expected _p_OpenBabel__OBInternalCoord");
            }
        }
        delete arg1;
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_tokenize__SWIG_0) {
    {
        std::vector<std::string > *arg1 = 0 ;
        char *arg2 = (char *) 0 ;
        char *arg3 = (char *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: tokenize(std::vector<std::string > &,buf,delimstr);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_std__vectorTstd__string_t,0) < 0) {
                SWIG_croak("Type error in argument 1 of tokenize. Expected _p_std__vectorTstd__string_t");
            }
        }
        if (!SvOK((SV*) ST(1))) arg2 = 0;
        else arg2 = (char *) SvPV(ST(1), PL_na);
        if (!SvOK((SV*) ST(2))) arg3 = 0;
        else arg3 = (char *) SvPV(ST(2), PL_na);
        result = (bool)OpenBabel::tokenize(*arg1,(char const *)arg2,(char const *)arg3);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_tokenize__SWIG_1) {
    {
        std::vector<std::string > *arg1 = 0 ;
        char *arg2 = (char *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: tokenize(std::vector<std::string > &,buf);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_std__vectorTstd__string_t,0) < 0) {
                SWIG_croak("Type error in argument 1 of tokenize. Expected _p_std__vectorTstd__string_t");
            }
        }
        if (!SvOK((SV*) ST(1))) arg2 = 0;
        else arg2 = (char *) SvPV(ST(1), PL_na);
        result = (bool)OpenBabel::tokenize(*arg1,(char const *)arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_tokenize__SWIG_2) {
    {
        std::vector<std::string > *arg1 = 0 ;
        std::string *arg2 = 0 ;
        char *arg3 = (char *) 0 ;
        int arg4 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 4) || (items > 4)) {
            SWIG_croak("Usage: tokenize(std::vector<std::string > &,std::string &,delimstr,limit);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_std__vectorTstd__string_t,0) < 0) {
                SWIG_croak("Type error in argument 1 of tokenize. Expected _p_std__vectorTstd__string_t");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__string,0) < 0) {
                SWIG_croak("Type error in argument 2 of tokenize. Expected _p_std__string");
            }
        }
        if (!SvOK((SV*) ST(2))) arg3 = 0;
        else arg3 = (char *) SvPV(ST(2), PL_na);
        arg4 = (int) SvIV(ST(3));
        result = (bool)OpenBabel::tokenize(*arg1,*arg2,(char const *)arg3,arg4);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_tokenize__SWIG_3) {
    {
        std::vector<std::string > *arg1 = 0 ;
        std::string *arg2 = 0 ;
        char *arg3 = (char *) 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: tokenize(std::vector<std::string > &,std::string &,delimstr);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_std__vectorTstd__string_t,0) < 0) {
                SWIG_croak("Type error in argument 1 of tokenize. Expected _p_std__vectorTstd__string_t");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__string,0) < 0) {
                SWIG_croak("Type error in argument 2 of tokenize. Expected _p_std__string");
            }
        }
        if (!SvOK((SV*) ST(2))) arg3 = 0;
        else arg3 = (char *) SvPV(ST(2), PL_na);
        result = (bool)OpenBabel::tokenize(*arg1,*arg2,(char const *)arg3);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_tokenize__SWIG_4) {
    {
        std::vector<std::string > *arg1 = 0 ;
        std::string *arg2 = 0 ;
        bool result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: tokenize(std::vector<std::string > &,std::string &);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_std__vectorTstd__string_t,0) < 0) {
                SWIG_croak("Type error in argument 1 of tokenize. Expected _p_std__vectorTstd__string_t");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_std__string,0) < 0) {
                SWIG_croak("Type error in argument 2 of tokenize. Expected _p_std__string");
            }
        }
        result = (bool)OpenBabel::tokenize(*arg1,*arg2);
        
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi++), (IV) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_tokenize) {
    dXSARGS;
    
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_std__vectorTstd__string_t, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_std__string, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_tokenize__SWIG_4); return;
            }
        }
    }
    if (items == 2) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_std__vectorTstd__string_t, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvPOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_tokenize__SWIG_1); return;
            }
        }
    }
    if (items == 3) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_std__vectorTstd__string_t, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_std__string, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                {
                    _v = SvPOK(ST(2)) ? 1 : 0;
                }
                if (_v) {
                    (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_tokenize__SWIG_3); return;
                }
            }
        }
    }
    if (items == 3) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_std__vectorTstd__string_t, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                _v = SvPOK(ST(1)) ? 1 : 0;
            }
            if (_v) {
                {
                    _v = SvPOK(ST(2)) ? 1 : 0;
                }
                if (_v) {
                    (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_tokenize__SWIG_0); return;
                }
            }
        }
    }
    if (items == 4) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_std__vectorTstd__string_t, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            {
                void *tmp;
                if (SWIG_ConvertPtr(ST(1), (void **) &tmp, SWIGTYPE_p_std__string, 0) == -1) {
                    _v = 0;
                } else {
                    _v = 1;
                }
            }
            if (_v) {
                {
                    _v = SvPOK(ST(2)) ? 1 : 0;
                }
                if (_v) {
                    {
                        _v = SvIOK(ST(3)) ? 1 : 0;
                    }
                    if (_v) {
                        (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_tokenize__SWIG_2); return;
                    }
                }
            }
        }
    }
    
    croak("No matching function for overloaded 'tokenize'");
    XSRETURN(0);
}


XS(_wrap_ThrowError__SWIG_1) {
    {
        std::string *arg1 = 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: ThrowError(str);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_std__string,0) < 0) {
                SWIG_croak("Type error in argument 1 of ThrowError. Expected _p_std__string");
            }
        }
        OpenBabel::ThrowError(*arg1);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_ThrowError) {
    dXSARGS;
    
    if (items == 1) {
        int _v;
        {
            void *tmp;
            if (SWIG_ConvertPtr(ST(0), (void **) &tmp, SWIGTYPE_p_std__string, 0) == -1) {
                _v = 0;
            } else {
                _v = 1;
            }
        }
        if (_v) {
            (*PL_markstack_ptr++);SWIG_CALLXS(_wrap_ThrowError__SWIG_1); return;
        }
    }
    
    croak("No matching function for overloaded 'ThrowError'");
    XSRETURN(0);
}


XS(_wrap_CartesianToInternal) {
    {
        std::vector<OpenBabel::OBInternalCoord * > *arg1 = 0 ;
        OpenBabel::OBMol *arg2 = 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: CartesianToInternal(std::vector<OpenBabel::OBInternalCoord * > &,OpenBabel::OBMol &);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_std__vectorTOpenBabel__OBInternalCoord_p_t,0) < 0) {
                SWIG_croak("Type error in argument 1 of CartesianToInternal. Expected _p_std__vectorTOpenBabel__OBInternalCoord_p_t");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 2 of CartesianToInternal. Expected _p_OpenBabel__OBMol");
            }
        }
        OpenBabel::CartesianToInternal(*arg1,*arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_InternalToCartesian) {
    {
        std::vector<OpenBabel::OBInternalCoord * > *arg1 = 0 ;
        OpenBabel::OBMol *arg2 = 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: InternalToCartesian(std::vector<OpenBabel::OBInternalCoord * > &,OpenBabel::OBMol &);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_std__vectorTOpenBabel__OBInternalCoord_p_t,0) < 0) {
                SWIG_croak("Type error in argument 1 of InternalToCartesian. Expected _p_std__vectorTOpenBabel__OBInternalCoord_p_t");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_OpenBabel__OBMol,0) < 0) {
                SWIG_croak("Type error in argument 2 of InternalToCartesian. Expected _p_OpenBabel__OBMol");
            }
        }
        OpenBabel::InternalToCartesian(*arg1,*arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_NewExtension) {
    {
        std::string *arg1 = 0 ;
        char *arg2 = (char *) 0 ;
        std::string result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: NewExtension(std::string &,char *);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_std__string,0) < 0) {
                SWIG_croak("Type error in argument 1 of NewExtension. Expected _p_std__string");
            }
        }
        if (!SvOK((SV*) ST(1))) arg2 = 0;
        else arg2 = (char *) SvPV(ST(1), PL_na);
        result = OpenBabel::NewExtension(*arg1,arg2);
        
        {
            if (argvi >= items) EXTEND(sp, 1);	// bump stack ptr, if needed
            char *data = const_cast<char*>((&result)->data());
            sv_setpvn(ST(argvi) = sv_newmortal(), data, (&result)->size());
            ++argvi;
        }
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_get_rmat) {
    {
        double *arg1 = (double *) 0 ;
        double *arg2 = (double *) 0 ;
        double *arg3 = (double *) 0 ;
        int arg4 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 4) || (items > 4)) {
            SWIG_croak("Usage: get_rmat(double *,double *,double *,int);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_double,0) < 0) {
                SWIG_croak("Type error in argument 1 of get_rmat. Expected _p_double");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_double,0) < 0) {
                SWIG_croak("Type error in argument 2 of get_rmat. Expected _p_double");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(2), (void **) &arg3, SWIGTYPE_p_double,0) < 0) {
                SWIG_croak("Type error in argument 3 of get_rmat. Expected _p_double");
            }
        }
        arg4 = (int) SvIV(ST(3));
        OpenBabel::get_rmat(arg1,arg2,arg3,arg4);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_ob_make_rmat) {
    {
        double (*arg1)[3] ;
        double *arg2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: ob_make_rmat(mat,rmat);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_a_3__double,0) < 0) {
                SWIG_croak("Type error in argument 1 of ob_make_rmat. Expected _p_a_3__double");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_double,0) < 0) {
                SWIG_croak("Type error in argument 2 of ob_make_rmat. Expected _p_double");
            }
        }
        OpenBabel::ob_make_rmat((double (*)[3])arg1,arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_qtrfit) {
    {
        double *arg1 = (double *) 0 ;
        double *arg2 = (double *) 0 ;
        int arg3 ;
        double (*arg4)[3] ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 4) || (items > 4)) {
            SWIG_croak("Usage: qtrfit(r,f,size,u);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_double,0) < 0) {
                SWIG_croak("Type error in argument 1 of qtrfit. Expected _p_double");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_double,0) < 0) {
                SWIG_croak("Type error in argument 2 of qtrfit. Expected _p_double");
            }
        }
        arg3 = (int) SvIV(ST(2));
        {
            if (SWIG_ConvertPtr(ST(3), (void **) &arg4, SWIGTYPE_p_a_3__double,0) < 0) {
                SWIG_croak("Type error in argument 4 of qtrfit. Expected _p_a_3__double");
            }
        }
        OpenBabel::qtrfit(arg1,arg2,arg3,(double (*)[3])arg4);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_superimpose) {
    {
        double *arg1 = (double *) 0 ;
        double *arg2 = (double *) 0 ;
        int arg3 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: superimpose(double *,double *,int);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_double,0) < 0) {
                SWIG_croak("Type error in argument 1 of superimpose. Expected _p_double");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_double,0) < 0) {
                SWIG_croak("Type error in argument 2 of superimpose. Expected _p_double");
            }
        }
        arg3 = (int) SvIV(ST(2));
        result = (double)OpenBabel::superimpose(arg1,arg2,arg3);
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}



/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */

static void *_p_OpenBabel__OBAtomTo_p_OpenBabel__OBNodeBase(void *x) {
    return (void *)((OpenBabel::OBNodeBase *)  ((OpenBabel::OBAtom *) x));
}
static void *_p_OpenBabel__OBMolTo_p_OpenBabel__OBGraphBase(void *x) {
    return (void *)((OpenBabel::OBGraphBase *)  ((OpenBabel::OBMol *) x));
}
static void *_p_OpenBabel__OBMolTo_p_OpenBabel__OBBase(void *x) {
    return (void *)((OpenBabel::OBBase *) (OpenBabel::OBGraphBase *) ((OpenBabel::OBMol *) x));
}
static void *_p_OpenBabel__OBNodeBaseTo_p_OpenBabel__OBBase(void *x) {
    return (void *)((OpenBabel::OBBase *)  ((OpenBabel::OBNodeBase *) x));
}
static void *_p_OpenBabel__OBEdgeBaseTo_p_OpenBabel__OBBase(void *x) {
    return (void *)((OpenBabel::OBBase *)  ((OpenBabel::OBEdgeBase *) x));
}
static void *_p_OpenBabel__OBGraphBaseTo_p_OpenBabel__OBBase(void *x) {
    return (void *)((OpenBabel::OBBase *)  ((OpenBabel::OBGraphBase *) x));
}
static void *_p_OpenBabel__OBBondTo_p_OpenBabel__OBBase(void *x) {
    return (void *)((OpenBabel::OBBase *) (OpenBabel::OBEdgeBase *) ((OpenBabel::OBBond *) x));
}
static void *_p_OpenBabel__OBAtomTo_p_OpenBabel__OBBase(void *x) {
    return (void *)((OpenBabel::OBBase *) (OpenBabel::OBNodeBase *) ((OpenBabel::OBAtom *) x));
}
static void *_p_OpenBabel__OBSymmetryDataTo_p_OpenBabel__OBGenericData(void *x) {
    return (void *)((OpenBabel::OBGenericData *)  ((OpenBabel::OBSymmetryData *) x));
}
static void *_p_OpenBabel__OBConformerDataTo_p_OpenBabel__OBGenericData(void *x) {
    return (void *)((OpenBabel::OBGenericData *)  ((OpenBabel::OBConformerData *) x));
}
static void *_p_OpenBabel__OBPairDataTo_p_OpenBabel__OBGenericData(void *x) {
    return (void *)((OpenBabel::OBGenericData *)  ((OpenBabel::OBPairData *) x));
}
static void *_p_OpenBabel__OBVirtualBondTo_p_OpenBabel__OBGenericData(void *x) {
    return (void *)((OpenBabel::OBGenericData *)  ((OpenBabel::OBVirtualBond *) x));
}
static void *_p_OpenBabel__OBSerialNumsTo_p_OpenBabel__OBGenericData(void *x) {
    return (void *)((OpenBabel::OBGenericData *)  ((OpenBabel::OBSerialNums *) x));
}
static void *_p_OpenBabel__OBRingDataTo_p_OpenBabel__OBGenericData(void *x) {
    return (void *)((OpenBabel::OBGenericData *)  ((OpenBabel::OBRingData *) x));
}
static void *_p_OpenBabel__OBUnitCellTo_p_OpenBabel__OBGenericData(void *x) {
    return (void *)((OpenBabel::OBGenericData *)  ((OpenBabel::OBUnitCell *) x));
}
static void *_p_OpenBabel__OBExternalBondDataTo_p_OpenBabel__OBGenericData(void *x) {
    return (void *)((OpenBabel::OBGenericData *)  ((OpenBabel::OBExternalBondData *) x));
}
static void *_p_OpenBabel__OBTorsionDataTo_p_OpenBabel__OBGenericData(void *x) {
    return (void *)((OpenBabel::OBGenericData *)  ((OpenBabel::OBTorsionData *) x));
}
static void *_p_OpenBabel__OBAngleDataTo_p_OpenBabel__OBGenericData(void *x) {
    return (void *)((OpenBabel::OBGenericData *)  ((OpenBabel::OBAngleData *) x));
}
static void *_p_OpenBabel__OBChiralDataTo_p_OpenBabel__OBGenericData(void *x) {
    return (void *)((OpenBabel::OBGenericData *)  ((OpenBabel::OBChiralData *) x));
}
static void *_p_OpenBabel__OBCommentDataTo_p_OpenBabel__OBGenericData(void *x) {
    return (void *)((OpenBabel::OBGenericData *)  ((OpenBabel::OBCommentData *) x));
}
static void *_p_OpenBabel__OBBondTo_p_OpenBabel__OBEdgeBase(void *x) {
    return (void *)((OpenBabel::OBEdgeBase *)  ((OpenBabel::OBBond *) x));
}
static void *_p_OpenBabel__OBAtomTyperTo_p_OpenBabel__OBGlobalDataBase(void *x) {
    return (void *)((OpenBabel::OBGlobalDataBase *)  ((OpenBabel::OBAtomTyper *) x));
}
static void *_p_OpenBabel__OBAromaticTyperTo_p_OpenBabel__OBGlobalDataBase(void *x) {
    return (void *)((OpenBabel::OBGlobalDataBase *)  ((OpenBabel::OBAromaticTyper *) x));
}
static void *_p_OpenBabel__OBResidueDataTo_p_OpenBabel__OBGlobalDataBase(void *x) {
    return (void *)((OpenBabel::OBGlobalDataBase *)  ((OpenBabel::OBResidueData *) x));
}
static void *_p_OpenBabel__OBIsotopeTableTo_p_OpenBabel__OBGlobalDataBase(void *x) {
    return (void *)((OpenBabel::OBGlobalDataBase *)  ((OpenBabel::OBIsotopeTable *) x));
}
static void *_p_OpenBabel__OBTypeTableTo_p_OpenBabel__OBGlobalDataBase(void *x) {
    return (void *)((OpenBabel::OBGlobalDataBase *)  ((OpenBabel::OBTypeTable *) x));
}
static void *_p_OpenBabel__OBElementTableTo_p_OpenBabel__OBGlobalDataBase(void *x) {
    return (void *)((OpenBabel::OBGlobalDataBase *)  ((OpenBabel::OBElementTable *) x));
}
static swig_type_info _swigt__p_OpenBabel__CharPtrLess = {"Chemistry::OpenBabel::CharPtrLess", "OpenBabel::CharPtrLess *", 0, 0, 0};
static swig_type_info _swigt__p_OpenBabel__FMapType__iterator = {"_p_OpenBabel__FMapType__iterator", "OpenBabel::FMapType::iterator *|OpenBabel::Formatpos *", 0, 0, 0};
static swig_type_info _swigt__p_OpenBabel__OBAromaticTyper = {"_p_OpenBabel__OBAromaticTyper", "OpenBabel::OBAromaticTyper *", 0, 0, 0};
static swig_type_info _swigt__p_OpenBabel__OBAtom = {"Chemistry::OpenBabel::OBAtom", "OpenBabel::OBAtom *", 0, 0, 0};
static swig_type_info _swigt__p_OpenBabel__OBAtomTyper = {"_p_OpenBabel__OBAtomTyper", "OpenBabel::OBAtomTyper *", 0, 0, 0};
static swig_type_info _swigt__p_OpenBabel__OBBase = {"_p_OpenBabel__OBBase", "OpenBabel::OBBase *", 0, 0, 0};
static swig_type_info _swigt__p_OpenBabel__OBBitVec = {"_p_OpenBabel__OBBitVec", "OpenBabel::OBBitVec *", 0, 0, 0};
static swig_type_info _swigt__p_OpenBabel__OBBond = {"Chemistry::OpenBabel::OBBond", "OpenBabel::OBBond *", 0, 0, 0};
static swig_type_info _swigt__p_OpenBabel__OBChainsParser = {"_p_OpenBabel__OBChainsParser", "OpenBabel::OBChainsParser *", 0, 0, 0};
static swig_type_info _swigt__p_OpenBabel__OBConversion = {"Chemistry::OpenBabel::OBConversion", "OpenBabel::OBConversion *", 0, 0, 0};
static swig_type_info _swigt__p_OpenBabel__OBEdgeBase = {"_p_OpenBabel__OBEdgeBase", "OpenBabel::OBEdgeBase *", 0, 0, 0};
static swig_type_info _swigt__p_OpenBabel__OBElement = {"Chemistry::OpenBabel::OBElement", "OpenBabel::OBElement *", 0, 0, 0};
static swig_type_info _swigt__p_OpenBabel__OBElementTable = {"Chemistry::OpenBabel::OBElementTable", "OpenBabel::OBElementTable *", 0, 0, 0};
static swig_type_info _swigt__p_OpenBabel__OBFormat = {"Chemistry::OpenBabel::OBFormat", "OpenBabel::OBFormat *", 0, 0, 0};
static swig_type_info _swigt__p_OpenBabel__OBGenericData = {"_p_OpenBabel__OBGenericData", "OpenBabel::OBGenericData *", 0, 0, 0};
static swig_type_info _swigt__p_OpenBabel__OBSymmetryData = {"_p_OpenBabel__OBSymmetryData", 0, 0, 0, 0};
static swig_type_info _swigt__p_OpenBabel__OBConformerData = {"_p_OpenBabel__OBConformerData", 0, 0, 0, 0};
static swig_type_info _swigt__p_OpenBabel__OBPairData = {"_p_OpenBabel__OBPairData", 0, 0, 0, 0};
static swig_type_info _swigt__p_OpenBabel__OBVirtualBond = {"_p_OpenBabel__OBVirtualBond", 0, 0, 0, 0};
static swig_type_info _swigt__p_OpenBabel__OBSerialNums = {"_p_OpenBabel__OBSerialNums", 0, 0, 0, 0};
static swig_type_info _swigt__p_OpenBabel__OBRingData = {"_p_OpenBabel__OBRingData", 0, 0, 0, 0};
static swig_type_info _swigt__p_OpenBabel__OBUnitCell = {"_p_OpenBabel__OBUnitCell", 0, 0, 0, 0};
static swig_type_info _swigt__p_OpenBabel__OBExternalBondData = {"_p_OpenBabel__OBExternalBondData", 0, 0, 0, 0};
static swig_type_info _swigt__p_OpenBabel__OBTorsionData = {"_p_OpenBabel__OBTorsionData", 0, 0, 0, 0};
static swig_type_info _swigt__p_OpenBabel__OBAngleData = {"_p_OpenBabel__OBAngleData", 0, 0, 0, 0};
static swig_type_info _swigt__p_OpenBabel__OBChiralData = {"_p_OpenBabel__OBChiralData", 0, 0, 0, 0};
static swig_type_info _swigt__p_OpenBabel__OBCommentData = {"_p_OpenBabel__OBCommentData", 0, 0, 0, 0};
static swig_type_info _swigt__p_OpenBabel__OBGlobalDataBase = {"Chemistry::OpenBabel::OBGlobalDataBase", "OpenBabel::OBGlobalDataBase *", 0, 0, 0};
static swig_type_info _swigt__p_OpenBabel__OBGraphBase = {"_p_OpenBabel__OBGraphBase", "OpenBabel::OBGraphBase *", 0, 0, 0};
static swig_type_info _swigt__p_OpenBabel__OBInternalCoord = {"Chemistry::OpenBabel::OBInternalCoord", "OpenBabel::OBInternalCoord *", 0, 0, 0};
static swig_type_info _swigt__p_OpenBabel__OBIsotopeTable = {"Chemistry::OpenBabel::OBIsotopeTable", "OpenBabel::OBIsotopeTable *", 0, 0, 0};
static swig_type_info _swigt__p_OpenBabel__OBMol = {"Chemistry::OpenBabel::OBMol", "OpenBabel::OBMol *", 0, 0, 0};
static swig_type_info _swigt__p_OpenBabel__OBNodeBase = {"_p_OpenBabel__OBNodeBase", "OpenBabel::OBNodeBase *", 0, 0, 0};
static swig_type_info _swigt__p_OpenBabel__OBResidue = {"Chemistry::OpenBabel::OBResidue", "OpenBabel::OBResidue *", 0, 0, 0};
static swig_type_info _swigt__p_OpenBabel__OBResidueData = {"Chemistry::OpenBabel::OBResidueData", "OpenBabel::OBResidueData *", 0, 0, 0};
static swig_type_info _swigt__p_OpenBabel__OBTypeTable = {"Chemistry::OpenBabel::OBTypeTable", "OpenBabel::OBTypeTable *", 0, 0, 0};
static swig_type_info _swigt__p_OpenBabel__vector3 = {"_p_OpenBabel__vector3", "OpenBabel::vector3 *", 0, 0, 0};
static swig_type_info _swigt__p_a_3__double = {"_p_a_3__double", "double (*)[3]", 0, 0, 0};
static swig_type_info _swigt__p_double = {"_p_double", "double *", 0, 0, 0};
static swig_type_info _swigt__p_int = {"_p_int", "int *", 0, 0, 0};
static swig_type_info _swigt__p_p_OpenBabel__OBFormat = {"_p_p_OpenBabel__OBFormat", "OpenBabel::OBFormat **", 0, 0, 0};
static swig_type_info _swigt__p_p_char = {"_p_p_char", "char **", 0, 0, 0};
static swig_type_info _swigt__p_p_double = {"_p_p_double", "double **", 0, 0, 0};
static swig_type_info _swigt__p_std__istream = {"_p_std__istream", "std::istream *", 0, 0, 0};
static swig_type_info _swigt__p_std__mapTchar_const_p_OpenBabel__OBFormat_p_OpenBabel__CharPtrLess_t = {"_p_std__mapTchar_const_p_OpenBabel__OBFormat_p_OpenBabel__CharPtrLess_t", "std::map<char const *,OpenBabel::OBFormat *,OpenBabel::CharPtrLess > *|OpenBabel::FMapType *", 0, 0, 0};
static swig_type_info _swigt__p_std__mapTstd__string_std__string_t = {"_p_std__mapTstd__string_std__string_t", "std::map<std::string,std::string > *", 0, 0, 0};
static swig_type_info _swigt__p_std__ostream = {"_p_std__ostream", "std::ostream *", 0, 0, 0};
static swig_type_info _swigt__p_std__streampos = {"_p_std__streampos", "std::streampos *", 0, 0, 0};
static swig_type_info _swigt__p_std__string = {"_p_std__string", "std::string *", 0, 0, 0};
static swig_type_info _swigt__p_std__type_info = {"_p_std__type_info", "std::type_info *", 0, 0, 0};
static swig_type_info _swigt__p_std__vectorTOpenBabel__OBAtom_p_t = {"_p_std__vectorTOpenBabel__OBAtom_p_t", "std::vector<OpenBabel::OBAtom * > *", 0, 0, 0};
static swig_type_info _swigt__p_std__vectorTOpenBabel__OBAtom_p_t__iterator = {"_p_std__vectorTOpenBabel__OBAtom_p_t__iterator", "std::vector<OpenBabel::OBAtom * >::iterator *", 0, 0, 0};
static swig_type_info _swigt__p_std__vectorTOpenBabel__OBBond_p_t = {"_p_std__vectorTOpenBabel__OBBond_p_t", "std::vector<OpenBabel::OBBond * > *", 0, 0, 0};
static swig_type_info _swigt__p_std__vectorTOpenBabel__OBEdgeBase_p_t__iterator = {"_p_std__vectorTOpenBabel__OBEdgeBase_p_t__iterator", "std::vector<OpenBabel::OBEdgeBase * >::iterator *", 0, 0, 0};
static swig_type_info _swigt__p_std__vectorTOpenBabel__OBGenericData_p_t = {"_p_std__vectorTOpenBabel__OBGenericData_p_t", "std::vector<OpenBabel::OBGenericData * > *", 0, 0, 0};
static swig_type_info _swigt__p_std__vectorTOpenBabel__OBGenericData_p_t__iterator = {"_p_std__vectorTOpenBabel__OBGenericData_p_t__iterator", "std::vector<OpenBabel::OBGenericData * >::iterator *", 0, 0, 0};
static swig_type_info _swigt__p_std__vectorTOpenBabel__OBInternalCoord_p_t = {"_p_std__vectorTOpenBabel__OBInternalCoord_p_t", "std::vector<OpenBabel::OBInternalCoord * > *", 0, 0, 0};
static swig_type_info _swigt__p_std__vectorTOpenBabel__OBInternalCoord_p_t__iterator = {"_p_std__vectorTOpenBabel__OBInternalCoord_p_t__iterator", "std::vector<OpenBabel::OBInternalCoord * >::iterator *", 0, 0, 0};
static swig_type_info _swigt__p_std__vectorTOpenBabel__OBNodeBase_p_t = {"_p_std__vectorTOpenBabel__OBNodeBase_p_t", "std::vector<OpenBabel::OBNodeBase * > *", 0, 0, 0};
static swig_type_info _swigt__p_std__vectorTOpenBabel__OBNodeBase_p_t__iterator = {"_p_std__vectorTOpenBabel__OBNodeBase_p_t__iterator", "std::vector<OpenBabel::OBNodeBase * >::iterator *", 0, 0, 0};
static swig_type_info _swigt__p_std__vectorTOpenBabel__OBResidue_p_t__iterator = {"_p_std__vectorTOpenBabel__OBResidue_p_t__iterator", "std::vector<OpenBabel::OBResidue * >::iterator *", 0, 0, 0};
static swig_type_info _swigt__p_std__vectorTOpenBabel__OBRing_p_t = {"_p_std__vectorTOpenBabel__OBRing_p_t", "std::vector<OpenBabel::OBRing * > *", 0, 0, 0};
static swig_type_info _swigt__p_std__vectorTdouble_p_t = {"_p_std__vectorTdouble_p_t", "std::vector<double * > *", 0, 0, 0};
static swig_type_info _swigt__p_std__vectorTdouble_p_t__iterator = {"_p_std__vectorTdouble_p_t__iterator", "std::vector<double * >::iterator *", 0, 0, 0};
static swig_type_info _swigt__p_std__vectorTdouble_t = {"_p_std__vectorTdouble_t", "std::vector<double > *", 0, 0, 0};
static swig_type_info _swigt__p_std__vectorTint_t = {"_p_std__vectorTint_t", "std::vector<int > *", 0, 0, 0};
static swig_type_info _swigt__p_std__vectorTstd__string_t = {"_p_std__vectorTstd__string_t", "std::vector<std::string > *", 0, 0, 0};
static swig_type_info _swigt__p_std__vectorTstd__vectorTint_t_t = {"_p_std__vectorTstd__vectorTint_t_t", "std::vector<std::vector<int > > *", 0, 0, 0};
static swig_type_info _swigt__p_std__vectorTunsigned_int_t = {"_p_std__vectorTunsigned_int_t", "std::vector<unsigned int > *", 0, 0, 0};

static swig_type_info *swig_type_initial[] = {
  &_swigt__p_OpenBabel__CharPtrLess,
  &_swigt__p_OpenBabel__FMapType__iterator,
  &_swigt__p_OpenBabel__OBAngleData,
  &_swigt__p_OpenBabel__OBAromaticTyper,
  &_swigt__p_OpenBabel__OBAtom,
  &_swigt__p_OpenBabel__OBAtomTyper,
  &_swigt__p_OpenBabel__OBBase,
  &_swigt__p_OpenBabel__OBBitVec,
  &_swigt__p_OpenBabel__OBBond,
  &_swigt__p_OpenBabel__OBChainsParser,
  &_swigt__p_OpenBabel__OBChiralData,
  &_swigt__p_OpenBabel__OBCommentData,
  &_swigt__p_OpenBabel__OBConformerData,
  &_swigt__p_OpenBabel__OBConversion,
  &_swigt__p_OpenBabel__OBEdgeBase,
  &_swigt__p_OpenBabel__OBElement,
  &_swigt__p_OpenBabel__OBElementTable,
  &_swigt__p_OpenBabel__OBExternalBondData,
  &_swigt__p_OpenBabel__OBFormat,
  &_swigt__p_OpenBabel__OBGenericData,
  &_swigt__p_OpenBabel__OBGlobalDataBase,
  &_swigt__p_OpenBabel__OBGraphBase,
  &_swigt__p_OpenBabel__OBInternalCoord,
  &_swigt__p_OpenBabel__OBIsotopeTable,
  &_swigt__p_OpenBabel__OBMol,
  &_swigt__p_OpenBabel__OBNodeBase,
  &_swigt__p_OpenBabel__OBPairData,
  &_swigt__p_OpenBabel__OBResidue,
  &_swigt__p_OpenBabel__OBResidueData,
  &_swigt__p_OpenBabel__OBRingData,
  &_swigt__p_OpenBabel__OBSerialNums,
  &_swigt__p_OpenBabel__OBSymmetryData,
  &_swigt__p_OpenBabel__OBTorsionData,
  &_swigt__p_OpenBabel__OBTypeTable,
  &_swigt__p_OpenBabel__OBUnitCell,
  &_swigt__p_OpenBabel__OBVirtualBond,
  &_swigt__p_OpenBabel__vector3,
  &_swigt__p_a_3__double,
  &_swigt__p_double,
  &_swigt__p_int,
  &_swigt__p_p_OpenBabel__OBFormat,
  &_swigt__p_p_char,
  &_swigt__p_p_double,
  &_swigt__p_std__istream,
  &_swigt__p_std__mapTchar_const_p_OpenBabel__OBFormat_p_OpenBabel__CharPtrLess_t,
  &_swigt__p_std__mapTstd__string_std__string_t,
  &_swigt__p_std__ostream,
  &_swigt__p_std__streampos,
  &_swigt__p_std__string,
  &_swigt__p_std__type_info,
  &_swigt__p_std__vectorTOpenBabel__OBAtom_p_t,
  &_swigt__p_std__vectorTOpenBabel__OBAtom_p_t__iterator,
  &_swigt__p_std__vectorTOpenBabel__OBBond_p_t,
  &_swigt__p_std__vectorTOpenBabel__OBEdgeBase_p_t__iterator,
  &_swigt__p_std__vectorTOpenBabel__OBGenericData_p_t,
  &_swigt__p_std__vectorTOpenBabel__OBGenericData_p_t__iterator,
  &_swigt__p_std__vectorTOpenBabel__OBInternalCoord_p_t,
  &_swigt__p_std__vectorTOpenBabel__OBInternalCoord_p_t__iterator,
  &_swigt__p_std__vectorTOpenBabel__OBNodeBase_p_t,
  &_swigt__p_std__vectorTOpenBabel__OBNodeBase_p_t__iterator,
  &_swigt__p_std__vectorTOpenBabel__OBResidue_p_t__iterator,
  &_swigt__p_std__vectorTOpenBabel__OBRing_p_t,
  &_swigt__p_std__vectorTdouble_p_t,
  &_swigt__p_std__vectorTdouble_p_t__iterator,
  &_swigt__p_std__vectorTdouble_t,
  &_swigt__p_std__vectorTint_t,
  &_swigt__p_std__vectorTstd__string_t,
  &_swigt__p_std__vectorTstd__vectorTint_t_t,
  &_swigt__p_std__vectorTunsigned_int_t,
};

static swig_cast_info _swigc__p_OpenBabel__CharPtrLess[] = {  {&_swigt__p_OpenBabel__CharPtrLess, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_OpenBabel__FMapType__iterator[] = {  {&_swigt__p_OpenBabel__FMapType__iterator, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_OpenBabel__OBAromaticTyper[] = {  {&_swigt__p_OpenBabel__OBAromaticTyper, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_OpenBabel__OBAtom[] = {  {&_swigt__p_OpenBabel__OBAtom, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_OpenBabel__OBAtomTyper[] = {  {&_swigt__p_OpenBabel__OBAtomTyper, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_OpenBabel__OBBase[] = {  {&_swigt__p_OpenBabel__OBMol, _p_OpenBabel__OBMolTo_p_OpenBabel__OBBase, 0, 0},  {&_swigt__p_OpenBabel__OBNodeBase, _p_OpenBabel__OBNodeBaseTo_p_OpenBabel__OBBase, 0, 0},  {&_swigt__p_OpenBabel__OBEdgeBase, _p_OpenBabel__OBEdgeBaseTo_p_OpenBabel__OBBase, 0, 0},  {&_swigt__p_OpenBabel__OBGraphBase, _p_OpenBabel__OBGraphBaseTo_p_OpenBabel__OBBase, 0, 0},  {&_swigt__p_OpenBabel__OBBase, 0, 0, 0},  {&_swigt__p_OpenBabel__OBBond, _p_OpenBabel__OBBondTo_p_OpenBabel__OBBase, 0, 0},  {&_swigt__p_OpenBabel__OBAtom, _p_OpenBabel__OBAtomTo_p_OpenBabel__OBBase, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_OpenBabel__OBBitVec[] = {  {&_swigt__p_OpenBabel__OBBitVec, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_OpenBabel__OBBond[] = {  {&_swigt__p_OpenBabel__OBBond, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_OpenBabel__OBChainsParser[] = {  {&_swigt__p_OpenBabel__OBChainsParser, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_OpenBabel__OBConversion[] = {  {&_swigt__p_OpenBabel__OBConversion, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_OpenBabel__OBEdgeBase[] = {  {&_swigt__p_OpenBabel__OBEdgeBase, 0, 0, 0},  {&_swigt__p_OpenBabel__OBBond, _p_OpenBabel__OBBondTo_p_OpenBabel__OBEdgeBase, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_OpenBabel__OBElement[] = {  {&_swigt__p_OpenBabel__OBElement, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_OpenBabel__OBElementTable[] = {  {&_swigt__p_OpenBabel__OBElementTable, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_OpenBabel__OBFormat[] = {  {&_swigt__p_OpenBabel__OBFormat, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_OpenBabel__OBSymmetryData[] = {{&_swigt__p_OpenBabel__OBSymmetryData, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_OpenBabel__OBConformerData[] = {{&_swigt__p_OpenBabel__OBConformerData, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_OpenBabel__OBPairData[] = {{&_swigt__p_OpenBabel__OBPairData, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_OpenBabel__OBVirtualBond[] = {{&_swigt__p_OpenBabel__OBVirtualBond, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_OpenBabel__OBSerialNums[] = {{&_swigt__p_OpenBabel__OBSerialNums, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_OpenBabel__OBRingData[] = {{&_swigt__p_OpenBabel__OBRingData, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_OpenBabel__OBUnitCell[] = {{&_swigt__p_OpenBabel__OBUnitCell, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_OpenBabel__OBExternalBondData[] = {{&_swigt__p_OpenBabel__OBExternalBondData, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_OpenBabel__OBTorsionData[] = {{&_swigt__p_OpenBabel__OBTorsionData, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_OpenBabel__OBAngleData[] = {{&_swigt__p_OpenBabel__OBAngleData, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_OpenBabel__OBChiralData[] = {{&_swigt__p_OpenBabel__OBChiralData, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_OpenBabel__OBCommentData[] = {{&_swigt__p_OpenBabel__OBCommentData, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_OpenBabel__OBGenericData[] = {  {&_swigt__p_OpenBabel__OBSymmetryData, _p_OpenBabel__OBSymmetryDataTo_p_OpenBabel__OBGenericData, 0, 0},  {&_swigt__p_OpenBabel__OBConformerData, _p_OpenBabel__OBConformerDataTo_p_OpenBabel__OBGenericData, 0, 0},  {&_swigt__p_OpenBabel__OBPairData, _p_OpenBabel__OBPairDataTo_p_OpenBabel__OBGenericData, 0, 0},  {&_swigt__p_OpenBabel__OBVirtualBond, _p_OpenBabel__OBVirtualBondTo_p_OpenBabel__OBGenericData, 0, 0},  {&_swigt__p_OpenBabel__OBSerialNums, _p_OpenBabel__OBSerialNumsTo_p_OpenBabel__OBGenericData, 0, 0},  {&_swigt__p_OpenBabel__OBRingData, _p_OpenBabel__OBRingDataTo_p_OpenBabel__OBGenericData, 0, 0},  {&_swigt__p_OpenBabel__OBUnitCell, _p_OpenBabel__OBUnitCellTo_p_OpenBabel__OBGenericData, 0, 0},  {&_swigt__p_OpenBabel__OBExternalBondData, _p_OpenBabel__OBExternalBondDataTo_p_OpenBabel__OBGenericData, 0, 0},  {&_swigt__p_OpenBabel__OBTorsionData, _p_OpenBabel__OBTorsionDataTo_p_OpenBabel__OBGenericData, 0, 0},  {&_swigt__p_OpenBabel__OBAngleData, _p_OpenBabel__OBAngleDataTo_p_OpenBabel__OBGenericData, 0, 0},  {&_swigt__p_OpenBabel__OBChiralData, _p_OpenBabel__OBChiralDataTo_p_OpenBabel__OBGenericData, 0, 0},  {&_swigt__p_OpenBabel__OBGenericData, 0, 0, 0},  {&_swigt__p_OpenBabel__OBCommentData, _p_OpenBabel__OBCommentDataTo_p_OpenBabel__OBGenericData, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_OpenBabel__OBGlobalDataBase[] = {  {&_swigt__p_OpenBabel__OBAtomTyper, _p_OpenBabel__OBAtomTyperTo_p_OpenBabel__OBGlobalDataBase, 0, 0},  {&_swigt__p_OpenBabel__OBAromaticTyper, _p_OpenBabel__OBAromaticTyperTo_p_OpenBabel__OBGlobalDataBase, 0, 0},  {&_swigt__p_OpenBabel__OBGlobalDataBase, 0, 0, 0},  {&_swigt__p_OpenBabel__OBResidueData, _p_OpenBabel__OBResidueDataTo_p_OpenBabel__OBGlobalDataBase, 0, 0},  {&_swigt__p_OpenBabel__OBIsotopeTable, _p_OpenBabel__OBIsotopeTableTo_p_OpenBabel__OBGlobalDataBase, 0, 0},  {&_swigt__p_OpenBabel__OBTypeTable, _p_OpenBabel__OBTypeTableTo_p_OpenBabel__OBGlobalDataBase, 0, 0},  {&_swigt__p_OpenBabel__OBElementTable, _p_OpenBabel__OBElementTableTo_p_OpenBabel__OBGlobalDataBase, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_OpenBabel__OBGraphBase[] = {  {&_swigt__p_OpenBabel__OBMol, _p_OpenBabel__OBMolTo_p_OpenBabel__OBGraphBase, 0, 0},  {&_swigt__p_OpenBabel__OBGraphBase, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_OpenBabel__OBInternalCoord[] = {  {&_swigt__p_OpenBabel__OBInternalCoord, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_OpenBabel__OBIsotopeTable[] = {  {&_swigt__p_OpenBabel__OBIsotopeTable, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_OpenBabel__OBMol[] = {  {&_swigt__p_OpenBabel__OBMol, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_OpenBabel__OBNodeBase[] = {  {&_swigt__p_OpenBabel__OBNodeBase, 0, 0, 0},  {&_swigt__p_OpenBabel__OBAtom, _p_OpenBabel__OBAtomTo_p_OpenBabel__OBNodeBase, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_OpenBabel__OBResidue[] = {  {&_swigt__p_OpenBabel__OBResidue, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_OpenBabel__OBResidueData[] = {  {&_swigt__p_OpenBabel__OBResidueData, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_OpenBabel__OBTypeTable[] = {  {&_swigt__p_OpenBabel__OBTypeTable, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_OpenBabel__vector3[] = {  {&_swigt__p_OpenBabel__vector3, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_a_3__double[] = {  {&_swigt__p_a_3__double, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_double[] = {  {&_swigt__p_double, 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_p_OpenBabel__OBFormat[] = {  {&_swigt__p_p_OpenBabel__OBFormat, 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_p_double[] = {  {&_swigt__p_p_double, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__istream[] = {  {&_swigt__p_std__istream, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__mapTchar_const_p_OpenBabel__OBFormat_p_OpenBabel__CharPtrLess_t[] = {  {&_swigt__p_std__mapTchar_const_p_OpenBabel__OBFormat_p_OpenBabel__CharPtrLess_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__mapTstd__string_std__string_t[] = {  {&_swigt__p_std__mapTstd__string_std__string_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__ostream[] = {  {&_swigt__p_std__ostream, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__streampos[] = {  {&_swigt__p_std__streampos, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__string[] = {  {&_swigt__p_std__string, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__type_info[] = {  {&_swigt__p_std__type_info, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__vectorTOpenBabel__OBAtom_p_t[] = {  {&_swigt__p_std__vectorTOpenBabel__OBAtom_p_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__vectorTOpenBabel__OBAtom_p_t__iterator[] = {  {&_swigt__p_std__vectorTOpenBabel__OBAtom_p_t__iterator, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__vectorTOpenBabel__OBBond_p_t[] = {  {&_swigt__p_std__vectorTOpenBabel__OBBond_p_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__vectorTOpenBabel__OBEdgeBase_p_t__iterator[] = {  {&_swigt__p_std__vectorTOpenBabel__OBEdgeBase_p_t__iterator, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__vectorTOpenBabel__OBGenericData_p_t[] = {  {&_swigt__p_std__vectorTOpenBabel__OBGenericData_p_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__vectorTOpenBabel__OBGenericData_p_t__iterator[] = {  {&_swigt__p_std__vectorTOpenBabel__OBGenericData_p_t__iterator, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__vectorTOpenBabel__OBInternalCoord_p_t[] = {  {&_swigt__p_std__vectorTOpenBabel__OBInternalCoord_p_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__vectorTOpenBabel__OBInternalCoord_p_t__iterator[] = {  {&_swigt__p_std__vectorTOpenBabel__OBInternalCoord_p_t__iterator, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__vectorTOpenBabel__OBNodeBase_p_t[] = {  {&_swigt__p_std__vectorTOpenBabel__OBNodeBase_p_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__vectorTOpenBabel__OBNodeBase_p_t__iterator[] = {  {&_swigt__p_std__vectorTOpenBabel__OBNodeBase_p_t__iterator, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__vectorTOpenBabel__OBResidue_p_t__iterator[] = {  {&_swigt__p_std__vectorTOpenBabel__OBResidue_p_t__iterator, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__vectorTOpenBabel__OBRing_p_t[] = {  {&_swigt__p_std__vectorTOpenBabel__OBRing_p_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__vectorTdouble_p_t[] = {  {&_swigt__p_std__vectorTdouble_p_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__vectorTdouble_p_t__iterator[] = {  {&_swigt__p_std__vectorTdouble_p_t__iterator, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__vectorTdouble_t[] = {  {&_swigt__p_std__vectorTdouble_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__vectorTint_t[] = {  {&_swigt__p_std__vectorTint_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__vectorTstd__string_t[] = {  {&_swigt__p_std__vectorTstd__string_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__vectorTstd__vectorTint_t_t[] = {  {&_swigt__p_std__vectorTstd__vectorTint_t_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__vectorTunsigned_int_t[] = {  {&_swigt__p_std__vectorTunsigned_int_t, 0, 0, 0},{0, 0, 0, 0}};

static swig_cast_info *swig_cast_initial[] = {
  _swigc__p_OpenBabel__CharPtrLess,
  _swigc__p_OpenBabel__FMapType__iterator,
  _swigc__p_OpenBabel__OBAngleData,
  _swigc__p_OpenBabel__OBAromaticTyper,
  _swigc__p_OpenBabel__OBAtom,
  _swigc__p_OpenBabel__OBAtomTyper,
  _swigc__p_OpenBabel__OBBase,
  _swigc__p_OpenBabel__OBBitVec,
  _swigc__p_OpenBabel__OBBond,
  _swigc__p_OpenBabel__OBChainsParser,
  _swigc__p_OpenBabel__OBChiralData,
  _swigc__p_OpenBabel__OBCommentData,
  _swigc__p_OpenBabel__OBConformerData,
  _swigc__p_OpenBabel__OBConversion,
  _swigc__p_OpenBabel__OBEdgeBase,
  _swigc__p_OpenBabel__OBElement,
  _swigc__p_OpenBabel__OBElementTable,
  _swigc__p_OpenBabel__OBExternalBondData,
  _swigc__p_OpenBabel__OBFormat,
  _swigc__p_OpenBabel__OBGenericData,
  _swigc__p_OpenBabel__OBGlobalDataBase,
  _swigc__p_OpenBabel__OBGraphBase,
  _swigc__p_OpenBabel__OBInternalCoord,
  _swigc__p_OpenBabel__OBIsotopeTable,
  _swigc__p_OpenBabel__OBMol,
  _swigc__p_OpenBabel__OBNodeBase,
  _swigc__p_OpenBabel__OBPairData,
  _swigc__p_OpenBabel__OBResidue,
  _swigc__p_OpenBabel__OBResidueData,
  _swigc__p_OpenBabel__OBRingData,
  _swigc__p_OpenBabel__OBSerialNums,
  _swigc__p_OpenBabel__OBSymmetryData,
  _swigc__p_OpenBabel__OBTorsionData,
  _swigc__p_OpenBabel__OBTypeTable,
  _swigc__p_OpenBabel__OBUnitCell,
  _swigc__p_OpenBabel__OBVirtualBond,
  _swigc__p_OpenBabel__vector3,
  _swigc__p_a_3__double,
  _swigc__p_double,
  _swigc__p_int,
  _swigc__p_p_OpenBabel__OBFormat,
  _swigc__p_p_char,
  _swigc__p_p_double,
  _swigc__p_std__istream,
  _swigc__p_std__mapTchar_const_p_OpenBabel__OBFormat_p_OpenBabel__CharPtrLess_t,
  _swigc__p_std__mapTstd__string_std__string_t,
  _swigc__p_std__ostream,
  _swigc__p_std__streampos,
  _swigc__p_std__string,
  _swigc__p_std__type_info,
  _swigc__p_std__vectorTOpenBabel__OBAtom_p_t,
  _swigc__p_std__vectorTOpenBabel__OBAtom_p_t__iterator,
  _swigc__p_std__vectorTOpenBabel__OBBond_p_t,
  _swigc__p_std__vectorTOpenBabel__OBEdgeBase_p_t__iterator,
  _swigc__p_std__vectorTOpenBabel__OBGenericData_p_t,
  _swigc__p_std__vectorTOpenBabel__OBGenericData_p_t__iterator,
  _swigc__p_std__vectorTOpenBabel__OBInternalCoord_p_t,
  _swigc__p_std__vectorTOpenBabel__OBInternalCoord_p_t__iterator,
  _swigc__p_std__vectorTOpenBabel__OBNodeBase_p_t,
  _swigc__p_std__vectorTOpenBabel__OBNodeBase_p_t__iterator,
  _swigc__p_std__vectorTOpenBabel__OBResidue_p_t__iterator,
  _swigc__p_std__vectorTOpenBabel__OBRing_p_t,
  _swigc__p_std__vectorTdouble_p_t,
  _swigc__p_std__vectorTdouble_p_t__iterator,
  _swigc__p_std__vectorTdouble_t,
  _swigc__p_std__vectorTint_t,
  _swigc__p_std__vectorTstd__string_t,
  _swigc__p_std__vectorTstd__vectorTint_t_t,
  _swigc__p_std__vectorTunsigned_int_t,
};


/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */

static swig_constant_info swig_constants[] = {
{ SWIG_STRING,  (char *) SWIG_prefix "FILE_SEP_CHAR", 0, 0, (void *)"/", 0},
{ SWIG_INT,     (char *) SWIG_prefix "OBConversion_INOPTIONS", (long) OpenBabel::OBConversion::INOPTIONS, 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OBConversion_OUTOPTIONS", (long) OpenBabel::OBConversion::OUTOPTIONS, 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OBConversion_GENOPTIONS", (long) OpenBabel::OBConversion::GENOPTIONS, 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "NOTREADABLE", (long) 0x01, 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "READONEONLY", (long) 0x02, 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "READBINARY", (long) 0x04, 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "NOTWRITABLE", (long) 0x10, 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "WRITEONEONLY", (long) 0x20, 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "WRITEBINARY", (long) 0x40, 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "DEFAULTFORMAT", (long) 0x4000, 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OB_4RING_ATOM", (long) (1<<1), 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OB_3RING_ATOM", (long) (1<<2), 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OB_AROMATIC_ATOM", (long) (1<<3), 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OB_RING_ATOM", (long) (1<<4), 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OB_CSTEREO_ATOM", (long) (1<<5), 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OB_ACSTEREO_ATOM", (long) (1<<6), 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OB_DONOR_ATOM", (long) (1<<7), 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OB_ACCEPTOR_ATOM", (long) (1<<8), 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OB_CHIRAL_ATOM", (long) (1<<9), 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OB_POS_CHIRAL_ATOM", (long) (1<<10), 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OB_NEG_CHIRAL_ATOM", (long) (1<<11), 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OB_AROMATIC_BOND", (long) (1<<1), 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OB_WEDGE_BOND", (long) (1<<2), 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OB_HASH_BOND", (long) (1<<3), 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OB_RING_BOND", (long) (1<<4), 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OB_TORUP_BOND", (long) (1<<5), 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OB_TORDOWN_BOND", (long) (1<<6), 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OB_KSINGLE_BOND", (long) (1<<7), 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OB_KDOUBLE_BOND", (long) (1<<8), 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OB_KTRIPLE_BOND", (long) (1<<9), 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OB_CLOSURE_BOND", (long) (1<<10), 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OB_SSSR_MOL", (long) (1<<1), 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OB_RINGFLAGS_MOL", (long) (1<<2), 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OB_AROMATIC_MOL", (long) (1<<3), 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OB_ATOMTYPES_MOL", (long) (1<<4), 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OB_CHIRALITY_MOL", (long) (1<<5), 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OB_PCHARGE_MOL", (long) (1<<6), 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OB_HYBRID_MOL", (long) (1<<8), 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OB_IMPVAL_MOL", (long) (1<<9), 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OB_KEKULE_MOL", (long) (1<<10), 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OB_CLOSURE_MOL", (long) (1<<11), 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OB_H_ADDED_MOL", (long) (1<<12), 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OB_PH_CORRECTED_MOL", (long) (1<<13), 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OB_AROM_CORRECTED_MOL", (long) (1<<14), 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OB_CHAINS_MOL", (long) (1<<15), 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OB_TCHARGE_MOL", (long) (1<<16), 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OB_TSPIN_MOL", (long) (1<<17), 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "OB_CURRENT_CONFORMER", (long) -1, 0, 0, 0},
{ SWIG_INT,     (char *) SWIG_prefix "BUFF_SIZE", (long) 32768, 0, 0, 0},
{0,0,0,0,0,0}
};
#ifdef __cplusplus
}
#endif
static swig_variable_info swig_variables[] = {
    { "Chemistry::OpenBabelc::etab", MAGIC_CLASS _wrap_set_etab, MAGIC_CLASS _wrap_val_etab,&SWIGTYPE_p_OpenBabel__OBElementTable },
    { "Chemistry::OpenBabelc::ttab", MAGIC_CLASS _wrap_set_ttab, MAGIC_CLASS _wrap_val_ttab,&SWIGTYPE_p_OpenBabel__OBTypeTable },
    { "Chemistry::OpenBabelc::isotab", MAGIC_CLASS _wrap_set_isotab, MAGIC_CLASS _wrap_val_isotab,&SWIGTYPE_p_OpenBabel__OBIsotopeTable },
    { "Chemistry::OpenBabelc::aromtyper", MAGIC_CLASS _wrap_set_aromtyper, MAGIC_CLASS _wrap_val_aromtyper,&SWIGTYPE_p_OpenBabel__OBAromaticTyper },
    { "Chemistry::OpenBabelc::atomtyper", MAGIC_CLASS _wrap_set_atomtyper, MAGIC_CLASS _wrap_val_atomtyper,&SWIGTYPE_p_OpenBabel__OBAtomTyper },
    { "Chemistry::OpenBabelc::chainsparser", MAGIC_CLASS _wrap_set_chainsparser, MAGIC_CLASS _wrap_val_chainsparser,&SWIGTYPE_p_OpenBabel__OBChainsParser },
    { "Chemistry::OpenBabelc::resdat", MAGIC_CLASS _wrap_set_resdat, MAGIC_CLASS _wrap_val_resdat,&SWIGTYPE_p_OpenBabel__OBResidueData },
{0,0,0,0}
};
static swig_command_info swig_commands[] = {
{"Chemistry::OpenBabelc::new_OBGlobalDataBase", _wrap_new_OBGlobalDataBase},
{"Chemistry::OpenBabelc::delete_OBGlobalDataBase", _wrap_delete_OBGlobalDataBase},
{"Chemistry::OpenBabelc::OBGlobalDataBase_Init", _wrap_OBGlobalDataBase_Init},
{"Chemistry::OpenBabelc::OBGlobalDataBase_GetSize", _wrap_OBGlobalDataBase_GetSize},
{"Chemistry::OpenBabelc::OBGlobalDataBase_SetReadDirectory", _wrap_OBGlobalDataBase_SetReadDirectory},
{"Chemistry::OpenBabelc::OBGlobalDataBase_SetEnvironmentVariable", _wrap_OBGlobalDataBase_SetEnvironmentVariable},
{"Chemistry::OpenBabelc::OBGlobalDataBase_ParseLine", _wrap_OBGlobalDataBase_ParseLine},
{"Chemistry::OpenBabelc::new_OBElement", _wrap_new_OBElement},
{"Chemistry::OpenBabelc::OBElement_GetAtomicNum", _wrap_OBElement_GetAtomicNum},
{"Chemistry::OpenBabelc::OBElement_GetSymbol", _wrap_OBElement_GetSymbol},
{"Chemistry::OpenBabelc::OBElement_GetCovalentRad", _wrap_OBElement_GetCovalentRad},
{"Chemistry::OpenBabelc::OBElement_GetVdwRad", _wrap_OBElement_GetVdwRad},
{"Chemistry::OpenBabelc::OBElement_GetMass", _wrap_OBElement_GetMass},
{"Chemistry::OpenBabelc::OBElement_GetMaxBonds", _wrap_OBElement_GetMaxBonds},
{"Chemistry::OpenBabelc::OBElement_GetElectroNeg", _wrap_OBElement_GetElectroNeg},
{"Chemistry::OpenBabelc::OBElement_GetIonization", _wrap_OBElement_GetIonization},
{"Chemistry::OpenBabelc::OBElement_GetElectronAffinity", _wrap_OBElement_GetElectronAffinity},
{"Chemistry::OpenBabelc::OBElement_GetName", _wrap_OBElement_GetName},
{"Chemistry::OpenBabelc::OBElement_GetRed", _wrap_OBElement_GetRed},
{"Chemistry::OpenBabelc::OBElement_GetGreen", _wrap_OBElement_GetGreen},
{"Chemistry::OpenBabelc::OBElement_GetBlue", _wrap_OBElement_GetBlue},
{"Chemistry::OpenBabelc::delete_OBElement", _wrap_delete_OBElement},
{"Chemistry::OpenBabelc::new_OBElementTable", _wrap_new_OBElementTable},
{"Chemistry::OpenBabelc::delete_OBElementTable", _wrap_delete_OBElementTable},
{"Chemistry::OpenBabelc::OBElementTable_ParseLine", _wrap_OBElementTable_ParseLine},
{"Chemistry::OpenBabelc::OBElementTable_GetNumberOfElements", _wrap_OBElementTable_GetNumberOfElements},
{"Chemistry::OpenBabelc::OBElementTable_GetSize", _wrap_OBElementTable_GetSize},
{"Chemistry::OpenBabelc::OBElementTable_GetAtomicNum", _wrap_OBElementTable_GetAtomicNum},
{"Chemistry::OpenBabelc::OBElementTable_GetSymbol", _wrap_OBElementTable_GetSymbol},
{"Chemistry::OpenBabelc::OBElementTable_GetVdwRad", _wrap_OBElementTable_GetVdwRad},
{"Chemistry::OpenBabelc::OBElementTable_GetCovalentRad", _wrap_OBElementTable_GetCovalentRad},
{"Chemistry::OpenBabelc::OBElementTable_GetMass", _wrap_OBElementTable_GetMass},
{"Chemistry::OpenBabelc::OBElementTable_CorrectedBondRad", _wrap_OBElementTable_CorrectedBondRad},
{"Chemistry::OpenBabelc::OBElementTable_CorrectedVdwRad", _wrap_OBElementTable_CorrectedVdwRad},
{"Chemistry::OpenBabelc::OBElementTable_GetMaxBonds", _wrap_OBElementTable_GetMaxBonds},
{"Chemistry::OpenBabelc::OBElementTable_GetElectroNeg", _wrap_OBElementTable_GetElectroNeg},
{"Chemistry::OpenBabelc::OBElementTable_GetIonization", _wrap_OBElementTable_GetIonization},
{"Chemistry::OpenBabelc::OBElementTable_GetElectronAffinity", _wrap_OBElementTable_GetElectronAffinity},
{"Chemistry::OpenBabelc::OBElementTable_GetRGB", _wrap_OBElementTable_GetRGB},
{"Chemistry::OpenBabelc::OBElementTable_GetName", _wrap_OBElementTable_GetName},
{"Chemistry::OpenBabelc::new_OBIsotopeTable", _wrap_new_OBIsotopeTable},
{"Chemistry::OpenBabelc::delete_OBIsotopeTable", _wrap_delete_OBIsotopeTable},
{"Chemistry::OpenBabelc::OBIsotopeTable_GetSize", _wrap_OBIsotopeTable_GetSize},
{"Chemistry::OpenBabelc::OBIsotopeTable_ParseLine", _wrap_OBIsotopeTable_ParseLine},
{"Chemistry::OpenBabelc::OBIsotopeTable_GetExactMass", _wrap_OBIsotopeTable_GetExactMass},
{"Chemistry::OpenBabelc::new_OBTypeTable", _wrap_new_OBTypeTable},
{"Chemistry::OpenBabelc::delete_OBTypeTable", _wrap_delete_OBTypeTable},
{"Chemistry::OpenBabelc::OBTypeTable_ParseLine", _wrap_OBTypeTable_ParseLine},
{"Chemistry::OpenBabelc::OBTypeTable_GetSize", _wrap_OBTypeTable_GetSize},
{"Chemistry::OpenBabelc::OBTypeTable_SetFromType", _wrap_OBTypeTable_SetFromType},
{"Chemistry::OpenBabelc::OBTypeTable_SetToType", _wrap_OBTypeTable_SetToType},
{"Chemistry::OpenBabelc::OBTypeTable_Translate", _wrap_OBTypeTable_Translate},
{"Chemistry::OpenBabelc::OBTypeTable_GetFromType", _wrap_OBTypeTable_GetFromType},
{"Chemistry::OpenBabelc::OBTypeTable_GetToType", _wrap_OBTypeTable_GetToType},
{"Chemistry::OpenBabelc::new_OBResidueData", _wrap_new_OBResidueData},
{"Chemistry::OpenBabelc::OBResidueData_ParseLine", _wrap_OBResidueData_ParseLine},
{"Chemistry::OpenBabelc::OBResidueData_GetSize", _wrap_OBResidueData_GetSize},
{"Chemistry::OpenBabelc::OBResidueData_SetResName", _wrap_OBResidueData_SetResName},
{"Chemistry::OpenBabelc::OBResidueData_LookupBO", _wrap_OBResidueData_LookupBO},
{"Chemistry::OpenBabelc::OBResidueData_LookupType", _wrap_OBResidueData_LookupType},
{"Chemistry::OpenBabelc::OBResidueData_AssignBonds", _wrap_OBResidueData_AssignBonds},
{"Chemistry::OpenBabelc::delete_OBResidueData", _wrap_delete_OBResidueData},
{"Chemistry::OpenBabelc::OBFormat_ReadMolecule", _wrap_OBFormat_ReadMolecule},
{"Chemistry::OpenBabelc::OBFormat_ReadChemObject", _wrap_OBFormat_ReadChemObject},
{"Chemistry::OpenBabelc::OBFormat_WriteMolecule", _wrap_OBFormat_WriteMolecule},
{"Chemistry::OpenBabelc::OBFormat_WriteChemObject", _wrap_OBFormat_WriteChemObject},
{"Chemistry::OpenBabelc::OBFormat_Description", _wrap_OBFormat_Description},
{"Chemistry::OpenBabelc::OBFormat_TargetClassDescription", _wrap_OBFormat_TargetClassDescription},
{"Chemistry::OpenBabelc::OBFormat_GetType", _wrap_OBFormat_GetType},
{"Chemistry::OpenBabelc::OBFormat_SpecificationURL", _wrap_OBFormat_SpecificationURL},
{"Chemistry::OpenBabelc::OBFormat_GetMIMEType", _wrap_OBFormat_GetMIMEType},
{"Chemistry::OpenBabelc::OBFormat_Flags", _wrap_OBFormat_Flags},
{"Chemistry::OpenBabelc::OBFormat_SkipObjects", _wrap_OBFormat_SkipObjects},
{"Chemistry::OpenBabelc::OBFormat_MakeNewInstance", _wrap_OBFormat_MakeNewInstance},
{"Chemistry::OpenBabelc::delete_OBFormat", _wrap_delete_OBFormat},
{"Chemistry::OpenBabelc::new_CharPtrLess", _wrap_new_CharPtrLess},
{"Chemistry::OpenBabelc::delete_CharPtrLess", _wrap_delete_CharPtrLess},
{"Chemistry::OpenBabelc::new_OBConversion", _wrap_new_OBConversion},
{"Chemistry::OpenBabelc::delete_OBConversion", _wrap_delete_OBConversion},
{"Chemistry::OpenBabelc::OBConversion_RegisterFormat", _wrap_OBConversion_RegisterFormat},
{"Chemistry::OpenBabelc::OBConversion_FindFormat", _wrap_OBConversion_FindFormat},
{"Chemistry::OpenBabelc::OBConversion_FormatFromExt", _wrap_OBConversion_FormatFromExt},
{"Chemistry::OpenBabelc::OBConversion_FormatFromMIME", _wrap_OBConversion_FormatFromMIME},
{"Chemistry::OpenBabelc::OBConversion_GetNextFormat", _wrap_OBConversion_GetNextFormat},
{"Chemistry::OpenBabelc::OBConversion_Description", _wrap_OBConversion_Description},
{"Chemistry::OpenBabelc::OBConversion_GetInStream", _wrap_OBConversion_GetInStream},
{"Chemistry::OpenBabelc::OBConversion_GetOutStream", _wrap_OBConversion_GetOutStream},
{"Chemistry::OpenBabelc::OBConversion_SetInStream", _wrap_OBConversion_SetInStream},
{"Chemistry::OpenBabelc::OBConversion_SetOutStream", _wrap_OBConversion_SetOutStream},
{"Chemistry::OpenBabelc::OBConversion_SetInAndOutFormats", _wrap_OBConversion_SetInAndOutFormats},
{"Chemistry::OpenBabelc::OBConversion_SetInFormat", _wrap_OBConversion_SetInFormat},
{"Chemistry::OpenBabelc::OBConversion_SetOutFormat", _wrap_OBConversion_SetOutFormat},
{"Chemistry::OpenBabelc::OBConversion_GetInFormat", _wrap_OBConversion_GetInFormat},
{"Chemistry::OpenBabelc::OBConversion_GetOutFormat", _wrap_OBConversion_GetOutFormat},
{"Chemistry::OpenBabelc::OBConversion_GetInFilename", _wrap_OBConversion_GetInFilename},
{"Chemistry::OpenBabelc::OBConversion_GetInPos", _wrap_OBConversion_GetInPos},
{"Chemistry::OpenBabelc::OBConversion_GetInLen", _wrap_OBConversion_GetInLen},
{"Chemistry::OpenBabelc::OBConversion_GetTitle", _wrap_OBConversion_GetTitle},
{"Chemistry::OpenBabelc::OBConversion_GetAuxConv", _wrap_OBConversion_GetAuxConv},
{"Chemistry::OpenBabelc::OBConversion_SetAuxConv", _wrap_OBConversion_SetAuxConv},
{"Chemistry::OpenBabelc::OBConversion_IsOption", _wrap_OBConversion_IsOption},
{"Chemistry::OpenBabelc::OBConversion_GetOptions", _wrap_OBConversion_GetOptions},
{"Chemistry::OpenBabelc::OBConversion_AddOption", _wrap_OBConversion_AddOption},
{"Chemistry::OpenBabelc::OBConversion_RemoveOption", _wrap_OBConversion_RemoveOption},
{"Chemistry::OpenBabelc::OBConversion_SetOptions", _wrap_OBConversion_SetOptions},
{"Chemistry::OpenBabelc::OBConversion_RegisterOptionParam", _wrap_OBConversion_RegisterOptionParam},
{"Chemistry::OpenBabelc::OBConversion_GetOptionParams", _wrap_OBConversion_GetOptionParams},
{"Chemistry::OpenBabelc::OBConversion_Convert", _wrap_OBConversion_Convert},
{"Chemistry::OpenBabelc::OBConversion_FullConvert", _wrap_OBConversion_FullConvert},
{"Chemistry::OpenBabelc::OBConversion_AddChemObject", _wrap_OBConversion_AddChemObject},
{"Chemistry::OpenBabelc::OBConversion_GetChemObject", _wrap_OBConversion_GetChemObject},
{"Chemistry::OpenBabelc::OBConversion_IsLast", _wrap_OBConversion_IsLast},
{"Chemistry::OpenBabelc::OBConversion_IsFirstInput", _wrap_OBConversion_IsFirstInput},
{"Chemistry::OpenBabelc::OBConversion_GetOutputIndex", _wrap_OBConversion_GetOutputIndex},
{"Chemistry::OpenBabelc::OBConversion_SetOutputIndex", _wrap_OBConversion_SetOutputIndex},
{"Chemistry::OpenBabelc::OBConversion_SetMoreFilesToCome", _wrap_OBConversion_SetMoreFilesToCome},
{"Chemistry::OpenBabelc::OBConversion_SetOneObjectOnly", _wrap_OBConversion_SetOneObjectOnly},
{"Chemistry::OpenBabelc::OBConversion_GetDefaultFormat", _wrap_OBConversion_GetDefaultFormat},
{"Chemistry::OpenBabelc::OBConversion_Write", _wrap_OBConversion_Write},
{"Chemistry::OpenBabelc::OBConversion_WriteString", _wrap_OBConversion_WriteString},
{"Chemistry::OpenBabelc::OBConversion_WriteFile", _wrap_OBConversion_WriteFile},
{"Chemistry::OpenBabelc::OBConversion_Read", _wrap_OBConversion_Read},
{"Chemistry::OpenBabelc::OBConversion_ReadString", _wrap_OBConversion_ReadString},
{"Chemistry::OpenBabelc::OBConversion_ReadFile", _wrap_OBConversion_ReadFile},
{"Chemistry::OpenBabelc::OBConversion_BatchFileName", _wrap_OBConversion_BatchFileName},
{"Chemistry::OpenBabelc::OBConversion_IncrementedFileName", _wrap_OBConversion_IncrementedFileName},
{"Chemistry::OpenBabelc::new_OBResidue", _wrap_new_OBResidue},
{"Chemistry::OpenBabelc::delete_OBResidue", _wrap_delete_OBResidue},
{"Chemistry::OpenBabelc::OBResidue_AddAtom", _wrap_OBResidue_AddAtom},
{"Chemistry::OpenBabelc::OBResidue_InsertAtom", _wrap_OBResidue_InsertAtom},
{"Chemistry::OpenBabelc::OBResidue_RemoveAtom", _wrap_OBResidue_RemoveAtom},
{"Chemistry::OpenBabelc::OBResidue_Clear", _wrap_OBResidue_Clear},
{"Chemistry::OpenBabelc::OBResidue_SetName", _wrap_OBResidue_SetName},
{"Chemistry::OpenBabelc::OBResidue_SetNum", _wrap_OBResidue_SetNum},
{"Chemistry::OpenBabelc::OBResidue_SetChain", _wrap_OBResidue_SetChain},
{"Chemistry::OpenBabelc::OBResidue_SetChainNum", _wrap_OBResidue_SetChainNum},
{"Chemistry::OpenBabelc::OBResidue_SetIdx", _wrap_OBResidue_SetIdx},
{"Chemistry::OpenBabelc::OBResidue_SetAtomID", _wrap_OBResidue_SetAtomID},
{"Chemistry::OpenBabelc::OBResidue_SetHetAtom", _wrap_OBResidue_SetHetAtom},
{"Chemistry::OpenBabelc::OBResidue_SetSerialNum", _wrap_OBResidue_SetSerialNum},
{"Chemistry::OpenBabelc::OBResidue_GetName", _wrap_OBResidue_GetName},
{"Chemistry::OpenBabelc::OBResidue_GetNum", _wrap_OBResidue_GetNum},
{"Chemistry::OpenBabelc::OBResidue_GetNumAtoms", _wrap_OBResidue_GetNumAtoms},
{"Chemistry::OpenBabelc::OBResidue_GetChain", _wrap_OBResidue_GetChain},
{"Chemistry::OpenBabelc::OBResidue_GetChainNum", _wrap_OBResidue_GetChainNum},
{"Chemistry::OpenBabelc::OBResidue_GetIdx", _wrap_OBResidue_GetIdx},
{"Chemistry::OpenBabelc::OBResidue_GetResKey", _wrap_OBResidue_GetResKey},
{"Chemistry::OpenBabelc::OBResidue_GetAtoms", _wrap_OBResidue_GetAtoms},
{"Chemistry::OpenBabelc::OBResidue_GetBonds", _wrap_OBResidue_GetBonds},
{"Chemistry::OpenBabelc::OBResidue_GetAtomID", _wrap_OBResidue_GetAtomID},
{"Chemistry::OpenBabelc::OBResidue_GetSerialNum", _wrap_OBResidue_GetSerialNum},
{"Chemistry::OpenBabelc::OBResidue_GetAminoAcidProperty", _wrap_OBResidue_GetAminoAcidProperty},
{"Chemistry::OpenBabelc::OBResidue_GetAtomProperty", _wrap_OBResidue_GetAtomProperty},
{"Chemistry::OpenBabelc::OBResidue_GetResidueProperty", _wrap_OBResidue_GetResidueProperty},
{"Chemistry::OpenBabelc::OBResidue_IsHetAtom", _wrap_OBResidue_IsHetAtom},
{"Chemistry::OpenBabelc::OBResidue_IsResidueType", _wrap_OBResidue_IsResidueType},
{"Chemistry::OpenBabelc::OBResidue_BeginAtom", _wrap_OBResidue_BeginAtom},
{"Chemistry::OpenBabelc::OBResidue_NextAtom", _wrap_OBResidue_NextAtom},
{"Chemistry::OpenBabelc::OBResidue_HasData", _wrap_OBResidue_HasData},
{"Chemistry::OpenBabelc::OBResidue_DeleteData", _wrap_OBResidue_DeleteData},
{"Chemistry::OpenBabelc::OBResidue_SetData", _wrap_OBResidue_SetData},
{"Chemistry::OpenBabelc::OBResidue_DataSize", _wrap_OBResidue_DataSize},
{"Chemistry::OpenBabelc::OBResidue_GetData", _wrap_OBResidue_GetData},
{"Chemistry::OpenBabelc::OBResidue_BeginData", _wrap_OBResidue_BeginData},
{"Chemistry::OpenBabelc::OBResidue_EndData", _wrap_OBResidue_EndData},
{"Chemistry::OpenBabelc::new_OBAtom", _wrap_new_OBAtom},
{"Chemistry::OpenBabelc::delete_OBAtom", _wrap_delete_OBAtom},
{"Chemistry::OpenBabelc::OBAtom_Clear", _wrap_OBAtom_Clear},
{"Chemistry::OpenBabelc::OBAtom_SetIdx", _wrap_OBAtom_SetIdx},
{"Chemistry::OpenBabelc::OBAtom_SetHyb", _wrap_OBAtom_SetHyb},
{"Chemistry::OpenBabelc::OBAtom_SetAtomicNum", _wrap_OBAtom_SetAtomicNum},
{"Chemistry::OpenBabelc::OBAtom_SetIsotope", _wrap_OBAtom_SetIsotope},
{"Chemistry::OpenBabelc::OBAtom_SetImplicitValence", _wrap_OBAtom_SetImplicitValence},
{"Chemistry::OpenBabelc::OBAtom_IncrementImplicitValence", _wrap_OBAtom_IncrementImplicitValence},
{"Chemistry::OpenBabelc::OBAtom_DecrementImplicitValence", _wrap_OBAtom_DecrementImplicitValence},
{"Chemistry::OpenBabelc::OBAtom_SetFormalCharge", _wrap_OBAtom_SetFormalCharge},
{"Chemistry::OpenBabelc::OBAtom_SetSpinMultiplicity", _wrap_OBAtom_SetSpinMultiplicity},
{"Chemistry::OpenBabelc::OBAtom_SetType", _wrap_OBAtom_SetType},
{"Chemistry::OpenBabelc::OBAtom_SetPartialCharge", _wrap_OBAtom_SetPartialCharge},
{"Chemistry::OpenBabelc::OBAtom_SetCoordPtr", _wrap_OBAtom_SetCoordPtr},
{"Chemistry::OpenBabelc::OBAtom_SetVector", _wrap_OBAtom_SetVector},
{"Chemistry::OpenBabelc::OBAtom_SetResidue", _wrap_OBAtom_SetResidue},
{"Chemistry::OpenBabelc::OBAtom_SetAromatic", _wrap_OBAtom_SetAromatic},
{"Chemistry::OpenBabelc::OBAtom_UnsetAromatic", _wrap_OBAtom_UnsetAromatic},
{"Chemistry::OpenBabelc::OBAtom_SetClockwiseStereo", _wrap_OBAtom_SetClockwiseStereo},
{"Chemistry::OpenBabelc::OBAtom_SetAntiClockwiseStereo", _wrap_OBAtom_SetAntiClockwiseStereo},
{"Chemistry::OpenBabelc::OBAtom_SetPositiveStereo", _wrap_OBAtom_SetPositiveStereo},
{"Chemistry::OpenBabelc::OBAtom_SetNegativeStereo", _wrap_OBAtom_SetNegativeStereo},
{"Chemistry::OpenBabelc::OBAtom_UnsetStereo", _wrap_OBAtom_UnsetStereo},
{"Chemistry::OpenBabelc::OBAtom_SetInRing", _wrap_OBAtom_SetInRing},
{"Chemistry::OpenBabelc::OBAtom_SetChiral", _wrap_OBAtom_SetChiral},
{"Chemistry::OpenBabelc::OBAtom_ClearCoordPtr", _wrap_OBAtom_ClearCoordPtr},
{"Chemistry::OpenBabelc::OBAtom_GetFormalCharge", _wrap_OBAtom_GetFormalCharge},
{"Chemistry::OpenBabelc::OBAtom_GetAtomicNum", _wrap_OBAtom_GetAtomicNum},
{"Chemistry::OpenBabelc::OBAtom_GetIsotope", _wrap_OBAtom_GetIsotope},
{"Chemistry::OpenBabelc::OBAtom_GetSpinMultiplicity", _wrap_OBAtom_GetSpinMultiplicity},
{"Chemistry::OpenBabelc::OBAtom_GetAtomicMass", _wrap_OBAtom_GetAtomicMass},
{"Chemistry::OpenBabelc::OBAtom_GetExactMass", _wrap_OBAtom_GetExactMass},
{"Chemistry::OpenBabelc::OBAtom_GetIdx", _wrap_OBAtom_GetIdx},
{"Chemistry::OpenBabelc::OBAtom_GetCoordinateIdx", _wrap_OBAtom_GetCoordinateIdx},
{"Chemistry::OpenBabelc::OBAtom_GetCIdx", _wrap_OBAtom_GetCIdx},
{"Chemistry::OpenBabelc::OBAtom_GetValence", _wrap_OBAtom_GetValence},
{"Chemistry::OpenBabelc::OBAtom_GetHyb", _wrap_OBAtom_GetHyb},
{"Chemistry::OpenBabelc::OBAtom_GetImplicitValence", _wrap_OBAtom_GetImplicitValence},
{"Chemistry::OpenBabelc::OBAtom_GetHvyValence", _wrap_OBAtom_GetHvyValence},
{"Chemistry::OpenBabelc::OBAtom_GetHeteroValence", _wrap_OBAtom_GetHeteroValence},
{"Chemistry::OpenBabelc::OBAtom_GetType", _wrap_OBAtom_GetType},
{"Chemistry::OpenBabelc::OBAtom_GetX", _wrap_OBAtom_GetX},
{"Chemistry::OpenBabelc::OBAtom_GetY", _wrap_OBAtom_GetY},
{"Chemistry::OpenBabelc::OBAtom_GetZ", _wrap_OBAtom_GetZ},
{"Chemistry::OpenBabelc::OBAtom_x", _wrap_OBAtom_x},
{"Chemistry::OpenBabelc::OBAtom_y", _wrap_OBAtom_y},
{"Chemistry::OpenBabelc::OBAtom_z", _wrap_OBAtom_z},
{"Chemistry::OpenBabelc::OBAtom_GetCoordinate", _wrap_OBAtom_GetCoordinate},
{"Chemistry::OpenBabelc::OBAtom_GetVector", _wrap_OBAtom_GetVector},
{"Chemistry::OpenBabelc::OBAtom_GetPartialCharge", _wrap_OBAtom_GetPartialCharge},
{"Chemistry::OpenBabelc::OBAtom_GetResidue", _wrap_OBAtom_GetResidue},
{"Chemistry::OpenBabelc::OBAtom_GetNewBondVector", _wrap_OBAtom_GetNewBondVector},
{"Chemistry::OpenBabelc::OBAtom_GetBond", _wrap_OBAtom_GetBond},
{"Chemistry::OpenBabelc::OBAtom_GetNextAtom", _wrap_OBAtom_GetNextAtom},
{"Chemistry::OpenBabelc::OBAtom_BeginBonds", _wrap_OBAtom_BeginBonds},
{"Chemistry::OpenBabelc::OBAtom_EndBonds", _wrap_OBAtom_EndBonds},
{"Chemistry::OpenBabelc::OBAtom_BeginBond", _wrap_OBAtom_BeginBond},
{"Chemistry::OpenBabelc::OBAtom_NextBond", _wrap_OBAtom_NextBond},
{"Chemistry::OpenBabelc::OBAtom_BeginNbrAtom", _wrap_OBAtom_BeginNbrAtom},
{"Chemistry::OpenBabelc::OBAtom_NextNbrAtom", _wrap_OBAtom_NextNbrAtom},
{"Chemistry::OpenBabelc::OBAtom_GetDistance", _wrap_OBAtom_GetDistance},
{"Chemistry::OpenBabelc::OBAtom_GetAngle", _wrap_OBAtom_GetAngle},
{"Chemistry::OpenBabelc::OBAtom_NewResidue", _wrap_OBAtom_NewResidue},
{"Chemistry::OpenBabelc::OBAtom_DeleteResidue", _wrap_OBAtom_DeleteResidue},
{"Chemistry::OpenBabelc::OBAtom_AddBond", _wrap_OBAtom_AddBond},
{"Chemistry::OpenBabelc::OBAtom_InsertBond", _wrap_OBAtom_InsertBond},
{"Chemistry::OpenBabelc::OBAtom_DeleteBond", _wrap_OBAtom_DeleteBond},
{"Chemistry::OpenBabelc::OBAtom_ClearBond", _wrap_OBAtom_ClearBond},
{"Chemistry::OpenBabelc::OBAtom_CountFreeOxygens", _wrap_OBAtom_CountFreeOxygens},
{"Chemistry::OpenBabelc::OBAtom_ImplicitHydrogenCount", _wrap_OBAtom_ImplicitHydrogenCount},
{"Chemistry::OpenBabelc::OBAtom_ExplicitHydrogenCount", _wrap_OBAtom_ExplicitHydrogenCount},
{"Chemistry::OpenBabelc::OBAtom_MemberOfRingCount", _wrap_OBAtom_MemberOfRingCount},
{"Chemistry::OpenBabelc::OBAtom_MemberOfRingSize", _wrap_OBAtom_MemberOfRingSize},
{"Chemistry::OpenBabelc::OBAtom_SmallestBondAngle", _wrap_OBAtom_SmallestBondAngle},
{"Chemistry::OpenBabelc::OBAtom_AverageBondAngle", _wrap_OBAtom_AverageBondAngle},
{"Chemistry::OpenBabelc::OBAtom_BOSum", _wrap_OBAtom_BOSum},
{"Chemistry::OpenBabelc::OBAtom_KBOSum", _wrap_OBAtom_KBOSum},
{"Chemistry::OpenBabelc::OBAtom_HtoMethyl", _wrap_OBAtom_HtoMethyl},
{"Chemistry::OpenBabelc::OBAtom_SetHybAndGeom", _wrap_OBAtom_SetHybAndGeom},
{"Chemistry::OpenBabelc::OBAtom_HasResidue", _wrap_OBAtom_HasResidue},
{"Chemistry::OpenBabelc::OBAtom_IsHydrogen", _wrap_OBAtom_IsHydrogen},
{"Chemistry::OpenBabelc::OBAtom_IsCarbon", _wrap_OBAtom_IsCarbon},
{"Chemistry::OpenBabelc::OBAtom_IsNitrogen", _wrap_OBAtom_IsNitrogen},
{"Chemistry::OpenBabelc::OBAtom_IsOxygen", _wrap_OBAtom_IsOxygen},
{"Chemistry::OpenBabelc::OBAtom_IsSulfur", _wrap_OBAtom_IsSulfur},
{"Chemistry::OpenBabelc::OBAtom_IsPhosphorus", _wrap_OBAtom_IsPhosphorus},
{"Chemistry::OpenBabelc::OBAtom_IsAromatic", _wrap_OBAtom_IsAromatic},
{"Chemistry::OpenBabelc::OBAtom_IsInRing", _wrap_OBAtom_IsInRing},
{"Chemistry::OpenBabelc::OBAtom_IsInRingSize", _wrap_OBAtom_IsInRingSize},
{"Chemistry::OpenBabelc::OBAtom_IsHeteroatom", _wrap_OBAtom_IsHeteroatom},
{"Chemistry::OpenBabelc::OBAtom_IsNotCorH", _wrap_OBAtom_IsNotCorH},
{"Chemistry::OpenBabelc::OBAtom_IsConnected", _wrap_OBAtom_IsConnected},
{"Chemistry::OpenBabelc::OBAtom_IsOneThree", _wrap_OBAtom_IsOneThree},
{"Chemistry::OpenBabelc::OBAtom_IsOneFour", _wrap_OBAtom_IsOneFour},
{"Chemistry::OpenBabelc::OBAtom_IsCarboxylOxygen", _wrap_OBAtom_IsCarboxylOxygen},
{"Chemistry::OpenBabelc::OBAtom_IsPhosphateOxygen", _wrap_OBAtom_IsPhosphateOxygen},
{"Chemistry::OpenBabelc::OBAtom_IsSulfateOxygen", _wrap_OBAtom_IsSulfateOxygen},
{"Chemistry::OpenBabelc::OBAtom_IsNitroOxygen", _wrap_OBAtom_IsNitroOxygen},
{"Chemistry::OpenBabelc::OBAtom_IsAmideNitrogen", _wrap_OBAtom_IsAmideNitrogen},
{"Chemistry::OpenBabelc::OBAtom_IsPolarHydrogen", _wrap_OBAtom_IsPolarHydrogen},
{"Chemistry::OpenBabelc::OBAtom_IsNonPolarHydrogen", _wrap_OBAtom_IsNonPolarHydrogen},
{"Chemistry::OpenBabelc::OBAtom_IsAromaticNOxide", _wrap_OBAtom_IsAromaticNOxide},
{"Chemistry::OpenBabelc::OBAtom_IsChiral", _wrap_OBAtom_IsChiral},
{"Chemistry::OpenBabelc::OBAtom_IsAxial", _wrap_OBAtom_IsAxial},
{"Chemistry::OpenBabelc::OBAtom_IsClockwise", _wrap_OBAtom_IsClockwise},
{"Chemistry::OpenBabelc::OBAtom_IsAntiClockwise", _wrap_OBAtom_IsAntiClockwise},
{"Chemistry::OpenBabelc::OBAtom_IsPositiveStereo", _wrap_OBAtom_IsPositiveStereo},
{"Chemistry::OpenBabelc::OBAtom_IsNegativeStereo", _wrap_OBAtom_IsNegativeStereo},
{"Chemistry::OpenBabelc::OBAtom_HasChiralitySpecified", _wrap_OBAtom_HasChiralitySpecified},
{"Chemistry::OpenBabelc::OBAtom_HasChiralVolume", _wrap_OBAtom_HasChiralVolume},
{"Chemistry::OpenBabelc::OBAtom_IsHbondAcceptor", _wrap_OBAtom_IsHbondAcceptor},
{"Chemistry::OpenBabelc::OBAtom_IsHbondDonor", _wrap_OBAtom_IsHbondDonor},
{"Chemistry::OpenBabelc::OBAtom_IsHbondDonorH", _wrap_OBAtom_IsHbondDonorH},
{"Chemistry::OpenBabelc::OBAtom_HasAlphaBetaUnsat", _wrap_OBAtom_HasAlphaBetaUnsat},
{"Chemistry::OpenBabelc::OBAtom_HasBondOfOrder", _wrap_OBAtom_HasBondOfOrder},
{"Chemistry::OpenBabelc::OBAtom_CountBondsOfOrder", _wrap_OBAtom_CountBondsOfOrder},
{"Chemistry::OpenBabelc::OBAtom_HasNonSingleBond", _wrap_OBAtom_HasNonSingleBond},
{"Chemistry::OpenBabelc::OBAtom_HasSingleBond", _wrap_OBAtom_HasSingleBond},
{"Chemistry::OpenBabelc::OBAtom_HasDoubleBond", _wrap_OBAtom_HasDoubleBond},
{"Chemistry::OpenBabelc::OBAtom_HasAromaticBond", _wrap_OBAtom_HasAromaticBond},
{"Chemistry::OpenBabelc::OBAtom_MatchesSMARTS", _wrap_OBAtom_MatchesSMARTS},
{"Chemistry::OpenBabelc::OBAtom_HasData", _wrap_OBAtom_HasData},
{"Chemistry::OpenBabelc::OBAtom_DeleteData", _wrap_OBAtom_DeleteData},
{"Chemistry::OpenBabelc::OBAtom_SetData", _wrap_OBAtom_SetData},
{"Chemistry::OpenBabelc::OBAtom_DataSize", _wrap_OBAtom_DataSize},
{"Chemistry::OpenBabelc::OBAtom_GetData", _wrap_OBAtom_GetData},
{"Chemistry::OpenBabelc::OBAtom_BeginData", _wrap_OBAtom_BeginData},
{"Chemistry::OpenBabelc::OBAtom_EndData", _wrap_OBAtom_EndData},
{"Chemistry::OpenBabelc::new_OBBond", _wrap_new_OBBond},
{"Chemistry::OpenBabelc::delete_OBBond", _wrap_delete_OBBond},
{"Chemistry::OpenBabelc::OBBond_SetIdx", _wrap_OBBond_SetIdx},
{"Chemistry::OpenBabelc::OBBond_SetBO", _wrap_OBBond_SetBO},
{"Chemistry::OpenBabelc::OBBond_SetBegin", _wrap_OBBond_SetBegin},
{"Chemistry::OpenBabelc::OBBond_SetEnd", _wrap_OBBond_SetEnd},
{"Chemistry::OpenBabelc::OBBond_SetLength", _wrap_OBBond_SetLength},
{"Chemistry::OpenBabelc::OBBond_Set", _wrap_OBBond_Set},
{"Chemistry::OpenBabelc::OBBond_SetKSingle", _wrap_OBBond_SetKSingle},
{"Chemistry::OpenBabelc::OBBond_SetKDouble", _wrap_OBBond_SetKDouble},
{"Chemistry::OpenBabelc::OBBond_SetKTriple", _wrap_OBBond_SetKTriple},
{"Chemistry::OpenBabelc::OBBond_SetAromatic", _wrap_OBBond_SetAromatic},
{"Chemistry::OpenBabelc::OBBond_SetHash", _wrap_OBBond_SetHash},
{"Chemistry::OpenBabelc::OBBond_SetWedge", _wrap_OBBond_SetWedge},
{"Chemistry::OpenBabelc::OBBond_SetUp", _wrap_OBBond_SetUp},
{"Chemistry::OpenBabelc::OBBond_SetDown", _wrap_OBBond_SetDown},
{"Chemistry::OpenBabelc::OBBond_SetInRing", _wrap_OBBond_SetInRing},
{"Chemistry::OpenBabelc::OBBond_SetClosure", _wrap_OBBond_SetClosure},
{"Chemistry::OpenBabelc::OBBond_UnsetAromatic", _wrap_OBBond_UnsetAromatic},
{"Chemistry::OpenBabelc::OBBond_UnsetKekule", _wrap_OBBond_UnsetKekule},
{"Chemistry::OpenBabelc::OBBond_GetBO", _wrap_OBBond_GetBO},
{"Chemistry::OpenBabelc::OBBond_GetBondOrder", _wrap_OBBond_GetBondOrder},
{"Chemistry::OpenBabelc::OBBond_GetFlags", _wrap_OBBond_GetFlags},
{"Chemistry::OpenBabelc::OBBond_GetBeginAtomIdx", _wrap_OBBond_GetBeginAtomIdx},
{"Chemistry::OpenBabelc::OBBond_GetEndAtomIdx", _wrap_OBBond_GetEndAtomIdx},
{"Chemistry::OpenBabelc::OBBond_GetBeginAtom", _wrap_OBBond_GetBeginAtom},
{"Chemistry::OpenBabelc::OBBond_GetEndAtom", _wrap_OBBond_GetEndAtom},
{"Chemistry::OpenBabelc::OBBond_GetNbrAtom", _wrap_OBBond_GetNbrAtom},
{"Chemistry::OpenBabelc::OBBond_GetEquibLength", _wrap_OBBond_GetEquibLength},
{"Chemistry::OpenBabelc::OBBond_GetLength", _wrap_OBBond_GetLength},
{"Chemistry::OpenBabelc::OBBond_GetNbrAtomIdx", _wrap_OBBond_GetNbrAtomIdx},
{"Chemistry::OpenBabelc::OBBond_IsAromatic", _wrap_OBBond_IsAromatic},
{"Chemistry::OpenBabelc::OBBond_IsInRing", _wrap_OBBond_IsInRing},
{"Chemistry::OpenBabelc::OBBond_IsRotor", _wrap_OBBond_IsRotor},
{"Chemistry::OpenBabelc::OBBond_IsAmide", _wrap_OBBond_IsAmide},
{"Chemistry::OpenBabelc::OBBond_IsPrimaryAmide", _wrap_OBBond_IsPrimaryAmide},
{"Chemistry::OpenBabelc::OBBond_IsSecondaryAmide", _wrap_OBBond_IsSecondaryAmide},
{"Chemistry::OpenBabelc::OBBond_IsEster", _wrap_OBBond_IsEster},
{"Chemistry::OpenBabelc::OBBond_IsCarbonyl", _wrap_OBBond_IsCarbonyl},
{"Chemistry::OpenBabelc::OBBond_IsSingle", _wrap_OBBond_IsSingle},
{"Chemistry::OpenBabelc::OBBond_IsDouble", _wrap_OBBond_IsDouble},
{"Chemistry::OpenBabelc::OBBond_IsTriple", _wrap_OBBond_IsTriple},
{"Chemistry::OpenBabelc::OBBond_IsKSingle", _wrap_OBBond_IsKSingle},
{"Chemistry::OpenBabelc::OBBond_IsKDouble", _wrap_OBBond_IsKDouble},
{"Chemistry::OpenBabelc::OBBond_IsKTriple", _wrap_OBBond_IsKTriple},
{"Chemistry::OpenBabelc::OBBond_IsClosure", _wrap_OBBond_IsClosure},
{"Chemistry::OpenBabelc::OBBond_IsUp", _wrap_OBBond_IsUp},
{"Chemistry::OpenBabelc::OBBond_IsDown", _wrap_OBBond_IsDown},
{"Chemistry::OpenBabelc::OBBond_IsWedge", _wrap_OBBond_IsWedge},
{"Chemistry::OpenBabelc::OBBond_IsHash", _wrap_OBBond_IsHash},
{"Chemistry::OpenBabelc::OBBond_IsDoubleBondGeometry", _wrap_OBBond_IsDoubleBondGeometry},
{"Chemistry::OpenBabelc::OBBond_HasData", _wrap_OBBond_HasData},
{"Chemistry::OpenBabelc::OBBond_DeleteData", _wrap_OBBond_DeleteData},
{"Chemistry::OpenBabelc::OBBond_SetData", _wrap_OBBond_SetData},
{"Chemistry::OpenBabelc::OBBond_DataSize", _wrap_OBBond_DataSize},
{"Chemistry::OpenBabelc::OBBond_GetData", _wrap_OBBond_GetData},
{"Chemistry::OpenBabelc::OBBond_BeginData", _wrap_OBBond_BeginData},
{"Chemistry::OpenBabelc::OBBond_EndData", _wrap_OBBond_EndData},
{"Chemistry::OpenBabelc::new_OBMol", _wrap_new_OBMol},
{"Chemistry::OpenBabelc::delete_OBMol", _wrap_delete_OBMol},
{"Chemistry::OpenBabelc::OBMol_ReserveAtoms", _wrap_OBMol_ReserveAtoms},
{"Chemistry::OpenBabelc::OBMol_CreateAtom", _wrap_OBMol_CreateAtom},
{"Chemistry::OpenBabelc::OBMol_CreateBond", _wrap_OBMol_CreateBond},
{"Chemistry::OpenBabelc::OBMol_DestroyAtom", _wrap_OBMol_DestroyAtom},
{"Chemistry::OpenBabelc::OBMol_DestroyBond", _wrap_OBMol_DestroyBond},
{"Chemistry::OpenBabelc::OBMol_AddAtom", _wrap_OBMol_AddAtom},
{"Chemistry::OpenBabelc::OBMol_AddBond", _wrap_OBMol_AddBond},
{"Chemistry::OpenBabelc::OBMol_AddResidue", _wrap_OBMol_AddResidue},
{"Chemistry::OpenBabelc::OBMol_InsertAtom", _wrap_OBMol_InsertAtom},
{"Chemistry::OpenBabelc::OBMol_DeleteAtom", _wrap_OBMol_DeleteAtom},
{"Chemistry::OpenBabelc::OBMol_DeleteBond", _wrap_OBMol_DeleteBond},
{"Chemistry::OpenBabelc::OBMol_DeleteResidue", _wrap_OBMol_DeleteResidue},
{"Chemistry::OpenBabelc::OBMol_NewAtom", _wrap_OBMol_NewAtom},
{"Chemistry::OpenBabelc::OBMol_NewResidue", _wrap_OBMol_NewResidue},
{"Chemistry::OpenBabelc::OBMol_BeginModify", _wrap_OBMol_BeginModify},
{"Chemistry::OpenBabelc::OBMol_EndModify", _wrap_OBMol_EndModify},
{"Chemistry::OpenBabelc::OBMol_GetMod", _wrap_OBMol_GetMod},
{"Chemistry::OpenBabelc::OBMol_IncrementMod", _wrap_OBMol_IncrementMod},
{"Chemistry::OpenBabelc::OBMol_DecrementMod", _wrap_OBMol_DecrementMod},
{"Chemistry::OpenBabelc::OBMol_HasData", _wrap_OBMol_HasData},
{"Chemistry::OpenBabelc::OBMol_DeleteData", _wrap_OBMol_DeleteData},
{"Chemistry::OpenBabelc::OBMol_SetData", _wrap_OBMol_SetData},
{"Chemistry::OpenBabelc::OBMol_DataSize", _wrap_OBMol_DataSize},
{"Chemistry::OpenBabelc::OBMol_GetData", _wrap_OBMol_GetData},
{"Chemistry::OpenBabelc::OBMol_BeginData", _wrap_OBMol_BeginData},
{"Chemistry::OpenBabelc::OBMol_EndData", _wrap_OBMol_EndData},
{"Chemistry::OpenBabelc::OBMol_GetFlags", _wrap_OBMol_GetFlags},
{"Chemistry::OpenBabelc::OBMol_GetTitle", _wrap_OBMol_GetTitle},
{"Chemistry::OpenBabelc::OBMol_NumAtoms", _wrap_OBMol_NumAtoms},
{"Chemistry::OpenBabelc::OBMol_NumBonds", _wrap_OBMol_NumBonds},
{"Chemistry::OpenBabelc::OBMol_NumHvyAtoms", _wrap_OBMol_NumHvyAtoms},
{"Chemistry::OpenBabelc::OBMol_NumResidues", _wrap_OBMol_NumResidues},
{"Chemistry::OpenBabelc::OBMol_NumRotors", _wrap_OBMol_NumRotors},
{"Chemistry::OpenBabelc::OBMol_GetAtom", _wrap_OBMol_GetAtom},
{"Chemistry::OpenBabelc::OBMol_GetFirstAtom", _wrap_OBMol_GetFirstAtom},
{"Chemistry::OpenBabelc::OBMol_GetBond", _wrap_OBMol_GetBond},
{"Chemistry::OpenBabelc::OBMol_GetResidue", _wrap_OBMol_GetResidue},
{"Chemistry::OpenBabelc::OBMol_GetInternalCoord", _wrap_OBMol_GetInternalCoord},
{"Chemistry::OpenBabelc::OBMol_GetTorsion", _wrap_OBMol_GetTorsion},
{"Chemistry::OpenBabelc::OBMol_GetFormula", _wrap_OBMol_GetFormula},
{"Chemistry::OpenBabelc::OBMol_GetEnergy", _wrap_OBMol_GetEnergy},
{"Chemistry::OpenBabelc::OBMol_GetMolWt", _wrap_OBMol_GetMolWt},
{"Chemistry::OpenBabelc::OBMol_GetExactMass", _wrap_OBMol_GetExactMass},
{"Chemistry::OpenBabelc::OBMol_GetTotalCharge", _wrap_OBMol_GetTotalCharge},
{"Chemistry::OpenBabelc::OBMol_GetTotalSpinMultiplicity", _wrap_OBMol_GetTotalSpinMultiplicity},
{"Chemistry::OpenBabelc::OBMol_GetDimension", _wrap_OBMol_GetDimension},
{"Chemistry::OpenBabelc::OBMol_GetCoordinates", _wrap_OBMol_GetCoordinates},
{"Chemistry::OpenBabelc::OBMol_GetSSSR", _wrap_OBMol_GetSSSR},
{"Chemistry::OpenBabelc::OBMol_AutomaticFormalCharge", _wrap_OBMol_AutomaticFormalCharge},
{"Chemistry::OpenBabelc::OBMol_AutomaticPartialCharge", _wrap_OBMol_AutomaticPartialCharge},
{"Chemistry::OpenBabelc::OBMol_SetTitle", _wrap_OBMol_SetTitle},
{"Chemistry::OpenBabelc::OBMol_SetFormula", _wrap_OBMol_SetFormula},
{"Chemistry::OpenBabelc::OBMol_SetEnergy", _wrap_OBMol_SetEnergy},
{"Chemistry::OpenBabelc::OBMol_SetDimension", _wrap_OBMol_SetDimension},
{"Chemistry::OpenBabelc::OBMol_SetTotalCharge", _wrap_OBMol_SetTotalCharge},
{"Chemistry::OpenBabelc::OBMol_SetTotalSpinMultiplicity", _wrap_OBMol_SetTotalSpinMultiplicity},
{"Chemistry::OpenBabelc::OBMol_SetInternalCoord", _wrap_OBMol_SetInternalCoord},
{"Chemistry::OpenBabelc::OBMol_SetAutomaticFormalCharge", _wrap_OBMol_SetAutomaticFormalCharge},
{"Chemistry::OpenBabelc::OBMol_SetAutomaticPartialCharge", _wrap_OBMol_SetAutomaticPartialCharge},
{"Chemistry::OpenBabelc::OBMol_SetAromaticPerceived", _wrap_OBMol_SetAromaticPerceived},
{"Chemistry::OpenBabelc::OBMol_SetSSSRPerceived", _wrap_OBMol_SetSSSRPerceived},
{"Chemistry::OpenBabelc::OBMol_SetRingAtomsAndBondsPerceived", _wrap_OBMol_SetRingAtomsAndBondsPerceived},
{"Chemistry::OpenBabelc::OBMol_SetAtomTypesPerceived", _wrap_OBMol_SetAtomTypesPerceived},
{"Chemistry::OpenBabelc::OBMol_SetChainsPerceived", _wrap_OBMol_SetChainsPerceived},
{"Chemistry::OpenBabelc::OBMol_SetChiralityPerceived", _wrap_OBMol_SetChiralityPerceived},
{"Chemistry::OpenBabelc::OBMol_SetPartialChargesPerceived", _wrap_OBMol_SetPartialChargesPerceived},
{"Chemistry::OpenBabelc::OBMol_SetHybridizationPerceived", _wrap_OBMol_SetHybridizationPerceived},
{"Chemistry::OpenBabelc::OBMol_SetImplicitValencePerceived", _wrap_OBMol_SetImplicitValencePerceived},
{"Chemistry::OpenBabelc::OBMol_SetKekulePerceived", _wrap_OBMol_SetKekulePerceived},
{"Chemistry::OpenBabelc::OBMol_SetClosureBondsPerceived", _wrap_OBMol_SetClosureBondsPerceived},
{"Chemistry::OpenBabelc::OBMol_SetHydrogensAdded", _wrap_OBMol_SetHydrogensAdded},
{"Chemistry::OpenBabelc::OBMol_SetCorrectedForPH", _wrap_OBMol_SetCorrectedForPH},
{"Chemistry::OpenBabelc::OBMol_SetAromaticCorrected", _wrap_OBMol_SetAromaticCorrected},
{"Chemistry::OpenBabelc::OBMol_SetSpinMultiplicityAssigned", _wrap_OBMol_SetSpinMultiplicityAssigned},
{"Chemistry::OpenBabelc::OBMol_SetFlags", _wrap_OBMol_SetFlags},
{"Chemistry::OpenBabelc::OBMol_UnsetAromaticPerceived", _wrap_OBMol_UnsetAromaticPerceived},
{"Chemistry::OpenBabelc::OBMol_UnsetPartialChargesPerceived", _wrap_OBMol_UnsetPartialChargesPerceived},
{"Chemistry::OpenBabelc::OBMol_UnsetImplicitValencePerceived", _wrap_OBMol_UnsetImplicitValencePerceived},
{"Chemistry::OpenBabelc::OBMol_UnsetFlag", _wrap_OBMol_UnsetFlag},
{"Chemistry::OpenBabelc::OBMol_DoTransformations", _wrap_OBMol_DoTransformations},
{"Chemistry::OpenBabelc::OBMol_ClassDescription", _wrap_OBMol_ClassDescription},
{"Chemistry::OpenBabelc::OBMol_Clear", _wrap_OBMol_Clear},
{"Chemistry::OpenBabelc::OBMol_RenumberAtoms", _wrap_OBMol_RenumberAtoms},
{"Chemistry::OpenBabelc::OBMol_ToInertialFrame", _wrap_OBMol_ToInertialFrame},
{"Chemistry::OpenBabelc::OBMol_Translate", _wrap_OBMol_Translate},
{"Chemistry::OpenBabelc::OBMol_Rotate", _wrap_OBMol_Rotate},
{"Chemistry::OpenBabelc::OBMol_Kekulize", _wrap_OBMol_Kekulize},
{"Chemistry::OpenBabelc::OBMol_PerceiveKekuleBonds", _wrap_OBMol_PerceiveKekuleBonds},
{"Chemistry::OpenBabelc::OBMol_NewPerceiveKekuleBonds", _wrap_OBMol_NewPerceiveKekuleBonds},
{"Chemistry::OpenBabelc::OBMol_DeleteHydrogen", _wrap_OBMol_DeleteHydrogen},
{"Chemistry::OpenBabelc::OBMol_DeleteHydrogens", _wrap_OBMol_DeleteHydrogens},
{"Chemistry::OpenBabelc::OBMol_DeleteNonPolarHydrogens", _wrap_OBMol_DeleteNonPolarHydrogens},
{"Chemistry::OpenBabelc::OBMol_AddHydrogens", _wrap_OBMol_AddHydrogens},
{"Chemistry::OpenBabelc::OBMol_AddPolarHydrogens", _wrap_OBMol_AddPolarHydrogens},
{"Chemistry::OpenBabelc::OBMol_StripSalts", _wrap_OBMol_StripSalts},
{"Chemistry::OpenBabelc::OBMol_ConvertDativeBonds", _wrap_OBMol_ConvertDativeBonds},
{"Chemistry::OpenBabelc::OBMol_CorrectForPH", _wrap_OBMol_CorrectForPH},
{"Chemistry::OpenBabelc::OBMol_AssignSpinMultiplicity", _wrap_OBMol_AssignSpinMultiplicity},
{"Chemistry::OpenBabelc::OBMol_Center", _wrap_OBMol_Center},
{"Chemistry::OpenBabelc::OBMol_SetTorsion", _wrap_OBMol_SetTorsion},
{"Chemistry::OpenBabelc::OBMol_FindSSSR", _wrap_OBMol_FindSSSR},
{"Chemistry::OpenBabelc::OBMol_FindRingAtomsAndBonds", _wrap_OBMol_FindRingAtomsAndBonds},
{"Chemistry::OpenBabelc::OBMol_FindChiralCenters", _wrap_OBMol_FindChiralCenters},
{"Chemistry::OpenBabelc::OBMol_FindChildren", _wrap_OBMol_FindChildren},
{"Chemistry::OpenBabelc::OBMol_FindLargestFragment", _wrap_OBMol_FindLargestFragment},
{"Chemistry::OpenBabelc::OBMol_ContigFragList", _wrap_OBMol_ContigFragList},
{"Chemistry::OpenBabelc::OBMol_Align", _wrap_OBMol_Align},
{"Chemistry::OpenBabelc::OBMol_ConnectTheDots", _wrap_OBMol_ConnectTheDots},
{"Chemistry::OpenBabelc::OBMol_PerceiveBondOrders", _wrap_OBMol_PerceiveBondOrders},
{"Chemistry::OpenBabelc::OBMol_FindTorsions", _wrap_OBMol_FindTorsions},
{"Chemistry::OpenBabelc::OBMol_GetGTDVector", _wrap_OBMol_GetGTDVector},
{"Chemistry::OpenBabelc::OBMol_GetGIVector", _wrap_OBMol_GetGIVector},
{"Chemistry::OpenBabelc::OBMol_GetGIDVector", _wrap_OBMol_GetGIDVector},
{"Chemistry::OpenBabelc::OBMol_Has2D", _wrap_OBMol_Has2D},
{"Chemistry::OpenBabelc::OBMol_Has3D", _wrap_OBMol_Has3D},
{"Chemistry::OpenBabelc::OBMol_HasNonZeroCoords", _wrap_OBMol_HasNonZeroCoords},
{"Chemistry::OpenBabelc::OBMol_HasAromaticPerceived", _wrap_OBMol_HasAromaticPerceived},
{"Chemistry::OpenBabelc::OBMol_HasSSSRPerceived", _wrap_OBMol_HasSSSRPerceived},
{"Chemistry::OpenBabelc::OBMol_HasRingAtomsAndBondsPerceived", _wrap_OBMol_HasRingAtomsAndBondsPerceived},
{"Chemistry::OpenBabelc::OBMol_HasAtomTypesPerceived", _wrap_OBMol_HasAtomTypesPerceived},
{"Chemistry::OpenBabelc::OBMol_HasChiralityPerceived", _wrap_OBMol_HasChiralityPerceived},
{"Chemistry::OpenBabelc::OBMol_HasPartialChargesPerceived", _wrap_OBMol_HasPartialChargesPerceived},
{"Chemistry::OpenBabelc::OBMol_HasHybridizationPerceived", _wrap_OBMol_HasHybridizationPerceived},
{"Chemistry::OpenBabelc::OBMol_HasImplicitValencePerceived", _wrap_OBMol_HasImplicitValencePerceived},
{"Chemistry::OpenBabelc::OBMol_HasKekulePerceived", _wrap_OBMol_HasKekulePerceived},
{"Chemistry::OpenBabelc::OBMol_HasClosureBondsPerceived", _wrap_OBMol_HasClosureBondsPerceived},
{"Chemistry::OpenBabelc::OBMol_HasChainsPerceived", _wrap_OBMol_HasChainsPerceived},
{"Chemistry::OpenBabelc::OBMol_HasHydrogensAdded", _wrap_OBMol_HasHydrogensAdded},
{"Chemistry::OpenBabelc::OBMol_HasAromaticCorrected", _wrap_OBMol_HasAromaticCorrected},
{"Chemistry::OpenBabelc::OBMol_IsCorrectedForPH", _wrap_OBMol_IsCorrectedForPH},
{"Chemistry::OpenBabelc::OBMol_HasSpinMultiplicityAssigned", _wrap_OBMol_HasSpinMultiplicityAssigned},
{"Chemistry::OpenBabelc::OBMol_IsChiral", _wrap_OBMol_IsChiral},
{"Chemistry::OpenBabelc::OBMol_Empty", _wrap_OBMol_Empty},
{"Chemistry::OpenBabelc::OBMol_NumConformers", _wrap_OBMol_NumConformers},
{"Chemistry::OpenBabelc::OBMol_SetConformers", _wrap_OBMol_SetConformers},
{"Chemistry::OpenBabelc::OBMol_AddConformer", _wrap_OBMol_AddConformer},
{"Chemistry::OpenBabelc::OBMol_SetConformer", _wrap_OBMol_SetConformer},
{"Chemistry::OpenBabelc::OBMol_CopyConformer", _wrap_OBMol_CopyConformer},
{"Chemistry::OpenBabelc::OBMol_DeleteConformer", _wrap_OBMol_DeleteConformer},
{"Chemistry::OpenBabelc::OBMol_GetConformer", _wrap_OBMol_GetConformer},
{"Chemistry::OpenBabelc::OBMol_BeginConformer", _wrap_OBMol_BeginConformer},
{"Chemistry::OpenBabelc::OBMol_NextConformer", _wrap_OBMol_NextConformer},
{"Chemistry::OpenBabelc::OBMol_GetConformers", _wrap_OBMol_GetConformers},
{"Chemistry::OpenBabelc::OBMol_BeginAtom", _wrap_OBMol_BeginAtom},
{"Chemistry::OpenBabelc::OBMol_NextAtom", _wrap_OBMol_NextAtom},
{"Chemistry::OpenBabelc::OBMol_BeginBond", _wrap_OBMol_BeginBond},
{"Chemistry::OpenBabelc::OBMol_NextBond", _wrap_OBMol_NextBond},
{"Chemistry::OpenBabelc::OBMol_BeginResidue", _wrap_OBMol_BeginResidue},
{"Chemistry::OpenBabelc::OBMol_NextResidue", _wrap_OBMol_NextResidue},
{"Chemistry::OpenBabelc::OBMol_BeginInternalCoord", _wrap_OBMol_BeginInternalCoord},
{"Chemistry::OpenBabelc::OBMol_NextInternalCoord", _wrap_OBMol_NextInternalCoord},
{"Chemistry::OpenBabelc::OBInternalCoord__a_set", _wrap_OBInternalCoord__a_set},
{"Chemistry::OpenBabelc::OBInternalCoord__a_get", _wrap_OBInternalCoord__a_get},
{"Chemistry::OpenBabelc::OBInternalCoord__b_set", _wrap_OBInternalCoord__b_set},
{"Chemistry::OpenBabelc::OBInternalCoord__b_get", _wrap_OBInternalCoord__b_get},
{"Chemistry::OpenBabelc::OBInternalCoord__c_set", _wrap_OBInternalCoord__c_set},
{"Chemistry::OpenBabelc::OBInternalCoord__c_get", _wrap_OBInternalCoord__c_get},
{"Chemistry::OpenBabelc::OBInternalCoord__dst_set", _wrap_OBInternalCoord__dst_set},
{"Chemistry::OpenBabelc::OBInternalCoord__dst_get", _wrap_OBInternalCoord__dst_get},
{"Chemistry::OpenBabelc::OBInternalCoord__ang_set", _wrap_OBInternalCoord__ang_set},
{"Chemistry::OpenBabelc::OBInternalCoord__ang_get", _wrap_OBInternalCoord__ang_get},
{"Chemistry::OpenBabelc::OBInternalCoord__tor_set", _wrap_OBInternalCoord__tor_set},
{"Chemistry::OpenBabelc::OBInternalCoord__tor_get", _wrap_OBInternalCoord__tor_get},
{"Chemistry::OpenBabelc::new_OBInternalCoord", _wrap_new_OBInternalCoord},
{"Chemistry::OpenBabelc::delete_OBInternalCoord", _wrap_delete_OBInternalCoord},
{"Chemistry::OpenBabelc::tokenize", _wrap_tokenize},
{"Chemistry::OpenBabelc::ThrowError", _wrap_ThrowError},
{"Chemistry::OpenBabelc::CartesianToInternal", _wrap_CartesianToInternal},
{"Chemistry::OpenBabelc::InternalToCartesian", _wrap_InternalToCartesian},
{"Chemistry::OpenBabelc::NewExtension", _wrap_NewExtension},
{"Chemistry::OpenBabelc::get_rmat", _wrap_get_rmat},
{"Chemistry::OpenBabelc::ob_make_rmat", _wrap_ob_make_rmat},
{"Chemistry::OpenBabelc::qtrfit", _wrap_qtrfit},
{"Chemistry::OpenBabelc::superimpose", _wrap_superimpose},
{0,0}
};
/*************************************************************************
 * 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 though 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" {
#endif
    
    SWIGRUNTIME void
    SWIG_InitializeModule(void *clientdata) {
        swig_type_info *type, *ret;
        swig_cast_info *cast;
        size_t i;
        swig_module_info *module_head;
        static int init_run = 0;
        
        clientdata = clientdata;
        
        if (init_run) return;
        init_run = 1;
        
        /* Initialize the swig_module */
        swig_module.type_initial = swig_type_initial;
        swig_module.cast_initial = swig_cast_initial;
        
        /* Try and load any already created modules */
        module_head = SWIG_GetModule(clientdata);
        if (module_head) {
            swig_module.next = module_head->next;
            module_head->next = &swig_module;
        } else {
            /* This is the first module loaded */
            swig_module.next = &swig_module;
            SWIG_SetModule(clientdata, &swig_module);
        }
        
        /* Now work on filling in swig_module.types */
        for (i = 0; i < swig_module.size; ++i) {
            type = 0;
            
            /* 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 */
                if (swig_module.type_initial[i]->clientdata) type->clientdata = swig_module.type_initial[i]->clientdata;
            } 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;
                if (swig_module.next != &swig_module) {
                    ret = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, cast->type->name);
                }
                if (ret && type == swig_module.type_initial[i]) {
                    cast->type = ret;
                    ret = 0;
                }
                
                if (!ret) {
                    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;
    }
    
    /* 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
}
#endif



#ifdef __cplusplus
extern "C"
#endif

XS(SWIG_init) {
    dXSARGS;
    int i;
    
    SWIG_InitializeModule(0);
    
    /* Install commands */
    for (i = 0; swig_commands[i].name; i++) {
        newXS((char*) swig_commands[i].name,swig_commands[i].wrapper, (char*)__FILE__);
    }
    
    /* Install variables */
    for (i = 0; swig_variables[i].name; i++) {
        SV *sv;
        sv = perl_get_sv((char*) swig_variables[i].name, TRUE | 0x2);
        if (swig_variables[i].type) {
            SWIG_MakePtr(sv,(void *)1, *swig_variables[i].type,0);
        } else {
            sv_setiv(sv,(IV) 0);
        }
        swig_create_magic(sv, (char *) swig_variables[i].name, swig_variables[i].set, swig_variables[i].get); 
    }
    
    /* Install constant */
    for (i = 0; swig_constants[i].type; i++) {
        SV *sv;
        sv = perl_get_sv((char*)swig_constants[i].name, TRUE | 0x2);
        switch(swig_constants[i].type) {
            case SWIG_INT:
            sv_setiv(sv, (IV) swig_constants[i].lvalue);
            break;
            case SWIG_FLOAT:
            sv_setnv(sv, (double) swig_constants[i].dvalue);
            break;
            case SWIG_STRING:
            sv_setpv(sv, (char *) swig_constants[i].pvalue);
            break;
            case SWIG_POINTER:
            SWIG_MakePtr(sv, swig_constants[i].pvalue, *(swig_constants[i].ptype),0);
            break;
            case SWIG_BINARY:
            SWIG_MakePackedObj(sv, swig_constants[i].pvalue, swig_constants[i].lvalue, *(swig_constants[i].ptype));
            break;
            default:
            break;
        }
        SvREADONLY_on(sv);
    }
    
    SWIG_TypeClientData(SWIGTYPE_p_OpenBabel__OBGlobalDataBase, (void*) "Chemistry::OpenBabel::OBGlobalDataBase");
    SWIG_TypeClientData(SWIGTYPE_p_OpenBabel__OBElement, (void*) "Chemistry::OpenBabel::OBElement");
    SWIG_TypeClientData(SWIGTYPE_p_OpenBabel__OBElementTable, (void*) "Chemistry::OpenBabel::OBElementTable");
    SWIG_TypeClientData(SWIGTYPE_p_OpenBabel__OBIsotopeTable, (void*) "Chemistry::OpenBabel::OBIsotopeTable");
    SWIG_TypeClientData(SWIGTYPE_p_OpenBabel__OBTypeTable, (void*) "Chemistry::OpenBabel::OBTypeTable");
    SWIG_TypeClientData(SWIGTYPE_p_OpenBabel__OBResidueData, (void*) "Chemistry::OpenBabel::OBResidueData");
    SWIG_TypeClientData(SWIGTYPE_p_OpenBabel__OBFormat, (void*) "Chemistry::OpenBabel::OBFormat");
    SWIG_TypeClientData(SWIGTYPE_p_OpenBabel__CharPtrLess, (void*) "Chemistry::OpenBabel::CharPtrLess");
    SWIG_TypeClientData(SWIGTYPE_p_OpenBabel__OBConversion, (void*) "Chemistry::OpenBabel::OBConversion");
    SWIG_TypeClientData(SWIGTYPE_p_OpenBabel__OBResidue, (void*) "Chemistry::OpenBabel::OBResidue");
    SWIG_TypeClientData(SWIGTYPE_p_OpenBabel__OBAtom, (void*) "Chemistry::OpenBabel::OBAtom");
    SWIG_TypeClientData(SWIGTYPE_p_OpenBabel__OBBond, (void*) "Chemistry::OpenBabel::OBBond");
    SWIG_TypeClientData(SWIGTYPE_p_OpenBabel__OBMol, (void*) "Chemistry::OpenBabel::OBMol");
    SWIG_TypeClientData(SWIGTYPE_p_OpenBabel__OBInternalCoord, (void*) "Chemistry::OpenBabel::OBInternalCoord");
    ST(0) = &PL_sv_yes;
    XSRETURN(1);
}

