/* ----------------------------------------------------------------------------
 * This file was automatically generated by SWIG (http://www.swig.org).
 * Version 2.0.0
 * 
 * This file is not intended to be easily readable and contains a number of 
 * coding conventions designed to improve portability and efficiency. Do not make
 * changes to this file unless you know what you are doing--modify the SWIG 
 * interface file instead. 
 * ----------------------------------------------------------------------------- */

#define SWIGCSHARP


#ifdef __cplusplus
/* SwigValueWrapper is described in swig.swg */
template<typename T> class SwigValueWrapper {
  struct SwigMovePointer {
    T *ptr;
    SwigMovePointer(T *p) : ptr(p) { }
    ~SwigMovePointer() { delete ptr; }
    SwigMovePointer& operator=(SwigMovePointer& rhs) { T* oldptr = ptr; ptr = 0; delete oldptr; ptr = rhs.ptr; rhs.ptr = 0; return *this; }
  } pointer;
  SwigValueWrapper& operator=(const SwigValueWrapper<T>& rhs);
  SwigValueWrapper(const SwigValueWrapper<T>& rhs);
public:
  SwigValueWrapper() : pointer(0) { }
  SwigValueWrapper& operator=(const T& t) { SwigMovePointer tmp(new T(t)); pointer = tmp; return *this; }
  operator T&() const { return *pointer.ptr; }
  T *operator&() { return pointer.ptr; }
};

template <typename T> T SwigValueInit() {
  return T();
}
#endif

/* -----------------------------------------------------------------------------
 *  This section contains generic SWIG labels for method/variable
 *  declarations/attributes, and other compiler dependent labels.
 * ----------------------------------------------------------------------------- */

/* template workaround for compilers that cannot correctly implement the C++ standard */
#ifndef SWIGTEMPLATEDISAMBIGUATOR
# if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x560)
#  define SWIGTEMPLATEDISAMBIGUATOR template
# elif defined(__HP_aCC)
/* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */
/* If we find a maximum version that requires this, the test would be __HP_aCC <= 35500 for A.03.55 */
#  define SWIGTEMPLATEDISAMBIGUATOR template
# else
#  define SWIGTEMPLATEDISAMBIGUATOR
# endif
#endif

/* inline attribute */
#ifndef SWIGINLINE
# if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__))
#   define SWIGINLINE inline
# else
#   define SWIGINLINE
# endif
#endif

/* attribute recognised by some compilers to avoid 'unused' warnings */
#ifndef SWIGUNUSED
# if defined(__GNUC__)
#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
#     define SWIGUNUSED __attribute__ ((__unused__)) 
#   else
#     define SWIGUNUSED
#   endif
# elif defined(__ICC)
#   define SWIGUNUSED __attribute__ ((__unused__)) 
# else
#   define SWIGUNUSED 
# endif
#endif

#ifndef SWIG_MSC_UNSUPPRESS_4505
# if defined(_MSC_VER)
#   pragma warning(disable : 4505) /* unreferenced local function has been removed */
# endif 
#endif

#ifndef SWIGUNUSEDPARM
# ifdef __cplusplus
#   define SWIGUNUSEDPARM(p)
# else
#   define SWIGUNUSEDPARM(p) p SWIGUNUSED 
# endif
#endif

/* internal SWIG method */
#ifndef SWIGINTERN
# define SWIGINTERN static SWIGUNUSED
#endif

/* internal inline SWIG method */
#ifndef SWIGINTERNINLINE
# define SWIGINTERNINLINE SWIGINTERN SWIGINLINE
#endif

/* exporting methods */
#if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
#  ifndef GCC_HASCLASSVISIBILITY
#    define GCC_HASCLASSVISIBILITY
#  endif
#endif

#ifndef SWIGEXPORT
# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
#   if defined(STATIC_LINKED)
#     define SWIGEXPORT
#   else
#     define SWIGEXPORT __declspec(dllexport)
#   endif
# else
#   if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY)
#     define SWIGEXPORT __attribute__ ((visibility("default")))
#   else
#     define SWIGEXPORT
#   endif
# endif
#endif

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

/* Deal with Microsoft's attempt at deprecating C standard runtime functions */
#if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)
# define _CRT_SECURE_NO_DEPRECATE
#endif

/* Deal with Microsoft's attempt at deprecating methods in the standard C++ library */
#if !defined(SWIG_NO_SCL_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_SCL_SECURE_NO_DEPRECATE)
# define _SCL_SECURE_NO_DEPRECATE
#endif



#include <stdlib.h>
#include <string.h>
#include <stdio.h>


/* Support for throwing C# exceptions from C/C++. There are two types: 
 * Exceptions that take a message and ArgumentExceptions that take a message and a parameter name. */
typedef enum {
  SWIG_CSharpApplicationException,
  SWIG_CSharpArithmeticException,
  SWIG_CSharpDivideByZeroException,
  SWIG_CSharpIndexOutOfRangeException,
  SWIG_CSharpInvalidCastException,
  SWIG_CSharpInvalidOperationException,
  SWIG_CSharpIOException,
  SWIG_CSharpNullReferenceException,
  SWIG_CSharpOutOfMemoryException,
  SWIG_CSharpOverflowException,
  SWIG_CSharpSystemException
} SWIG_CSharpExceptionCodes;

typedef enum {
  SWIG_CSharpArgumentException,
  SWIG_CSharpArgumentNullException,
  SWIG_CSharpArgumentOutOfRangeException
} SWIG_CSharpExceptionArgumentCodes;

typedef void (SWIGSTDCALL* SWIG_CSharpExceptionCallback_t)(const char *);
typedef void (SWIGSTDCALL* SWIG_CSharpExceptionArgumentCallback_t)(const char *, const char *);

typedef struct {
  SWIG_CSharpExceptionCodes code;
  SWIG_CSharpExceptionCallback_t callback;
} SWIG_CSharpException_t;

typedef struct {
  SWIG_CSharpExceptionArgumentCodes code;
  SWIG_CSharpExceptionArgumentCallback_t callback;
} SWIG_CSharpExceptionArgument_t;

static SWIG_CSharpException_t SWIG_csharp_exceptions[] = {
  { SWIG_CSharpApplicationException, NULL },
  { SWIG_CSharpArithmeticException, NULL },
  { SWIG_CSharpDivideByZeroException, NULL },
  { SWIG_CSharpIndexOutOfRangeException, NULL },
  { SWIG_CSharpInvalidCastException, NULL },
  { SWIG_CSharpInvalidOperationException, NULL },
  { SWIG_CSharpIOException, NULL },
  { SWIG_CSharpNullReferenceException, NULL },
  { SWIG_CSharpOutOfMemoryException, NULL },
  { SWIG_CSharpOverflowException, NULL },
  { SWIG_CSharpSystemException, NULL }
};

static SWIG_CSharpExceptionArgument_t SWIG_csharp_exceptions_argument[] = {
  { SWIG_CSharpArgumentException, NULL },
  { SWIG_CSharpArgumentNullException, NULL },
  { SWIG_CSharpArgumentOutOfRangeException, NULL }
};

static void SWIGUNUSED SWIG_CSharpSetPendingException(SWIG_CSharpExceptionCodes code, const char *msg) {
  SWIG_CSharpExceptionCallback_t callback = SWIG_csharp_exceptions[SWIG_CSharpApplicationException].callback;
  if ((size_t)code < sizeof(SWIG_csharp_exceptions)/sizeof(SWIG_CSharpException_t)) {
    callback = SWIG_csharp_exceptions[code].callback;
  }
  callback(msg);
}

static void SWIGUNUSED SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpExceptionArgumentCodes code, const char *msg, const char *param_name) {
  SWIG_CSharpExceptionArgumentCallback_t callback = SWIG_csharp_exceptions_argument[SWIG_CSharpArgumentException].callback;
  if ((size_t)code < sizeof(SWIG_csharp_exceptions_argument)/sizeof(SWIG_CSharpExceptionArgument_t)) {
    callback = SWIG_csharp_exceptions_argument[code].callback;
  }
  callback(msg, param_name);
}


#ifdef __cplusplus
extern "C" 
#endif
SWIGEXPORT void SWIGSTDCALL SWIGRegisterExceptionCallbacks_libsbml(
                                                SWIG_CSharpExceptionCallback_t applicationCallback,
                                                SWIG_CSharpExceptionCallback_t arithmeticCallback,
                                                SWIG_CSharpExceptionCallback_t divideByZeroCallback, 
                                                SWIG_CSharpExceptionCallback_t indexOutOfRangeCallback, 
                                                SWIG_CSharpExceptionCallback_t invalidCastCallback,
                                                SWIG_CSharpExceptionCallback_t invalidOperationCallback,
                                                SWIG_CSharpExceptionCallback_t ioCallback,
                                                SWIG_CSharpExceptionCallback_t nullReferenceCallback,
                                                SWIG_CSharpExceptionCallback_t outOfMemoryCallback, 
                                                SWIG_CSharpExceptionCallback_t overflowCallback, 
                                                SWIG_CSharpExceptionCallback_t systemCallback) {
  SWIG_csharp_exceptions[SWIG_CSharpApplicationException].callback = applicationCallback;
  SWIG_csharp_exceptions[SWIG_CSharpArithmeticException].callback = arithmeticCallback;
  SWIG_csharp_exceptions[SWIG_CSharpDivideByZeroException].callback = divideByZeroCallback;
  SWIG_csharp_exceptions[SWIG_CSharpIndexOutOfRangeException].callback = indexOutOfRangeCallback;
  SWIG_csharp_exceptions[SWIG_CSharpInvalidCastException].callback = invalidCastCallback;
  SWIG_csharp_exceptions[SWIG_CSharpInvalidOperationException].callback = invalidOperationCallback;
  SWIG_csharp_exceptions[SWIG_CSharpIOException].callback = ioCallback;
  SWIG_csharp_exceptions[SWIG_CSharpNullReferenceException].callback = nullReferenceCallback;
  SWIG_csharp_exceptions[SWIG_CSharpOutOfMemoryException].callback = outOfMemoryCallback;
  SWIG_csharp_exceptions[SWIG_CSharpOverflowException].callback = overflowCallback;
  SWIG_csharp_exceptions[SWIG_CSharpSystemException].callback = systemCallback;
}

#ifdef __cplusplus
extern "C" 
#endif
SWIGEXPORT void SWIGSTDCALL SWIGRegisterExceptionArgumentCallbacks_libsbml(
                                                SWIG_CSharpExceptionArgumentCallback_t argumentCallback,
                                                SWIG_CSharpExceptionArgumentCallback_t argumentNullCallback,
                                                SWIG_CSharpExceptionArgumentCallback_t argumentOutOfRangeCallback) {
  SWIG_csharp_exceptions_argument[SWIG_CSharpArgumentException].callback = argumentCallback;
  SWIG_csharp_exceptions_argument[SWIG_CSharpArgumentNullException].callback = argumentNullCallback;
  SWIG_csharp_exceptions_argument[SWIG_CSharpArgumentOutOfRangeException].callback = argumentOutOfRangeCallback;
}


/* Callback for returning strings to C# without leaking memory */
typedef char * (SWIGSTDCALL* SWIG_CSharpStringHelperCallback)(const char *);
static SWIG_CSharpStringHelperCallback SWIG_csharp_string_callback = NULL;


#ifdef __cplusplus
extern "C" 
#endif
SWIGEXPORT void SWIGSTDCALL SWIGRegisterStringCallback_libsbml(SWIG_CSharpStringHelperCallback callback) {
  SWIG_csharp_string_callback = callback;
}


/* Contract support */

#define SWIG_contract_assert(nullreturn, expr, msg) if (!(expr)) {SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentOutOfRangeException, msg, ""); return nullreturn; } else

/*  Errors in SWIG */
#define  SWIG_UnknownError    	   -1 
#define  SWIG_IOError        	   -2 
#define  SWIG_RuntimeError   	   -3 
#define  SWIG_IndexError     	   -4 
#define  SWIG_TypeError      	   -5 
#define  SWIG_DivisionByZero 	   -6 
#define  SWIG_OverflowError  	   -7 
#define  SWIG_SyntaxError    	   -8 
#define  SWIG_ValueError     	   -9 
#define  SWIG_SystemError    	   -10
#define  SWIG_AttributeError 	   -11
#define  SWIG_MemoryError    	   -12 
#define  SWIG_NullReferenceError   -13




/* Callback for returning strings to C# without leaking memory */
typedef void * (SWIGSTDCALL* SWIG_CSharpWStringHelperCallback)(const wchar_t *);
static SWIG_CSharpWStringHelperCallback SWIG_csharp_wstring_callback = NULL;


#ifdef __cplusplus
extern "C"
#endif
SWIGEXPORT void SWIGSTDCALL SWIGRegisterWStringCallback_libsbml(SWIG_CSharpWStringHelperCallback callback) {
  SWIG_csharp_wstring_callback = callback;
}


  // Code to handle throwing of C# CustomApplicationException from C/C++ code.
  // The equivalent delegate to the callback, CSharpExceptionCallback_t, is CustomExceptionDelegate
  // and the equivalent customExceptionCallback instance is customDelegate
  typedef void (SWIGSTDCALL* CSharpExceptionCallback_t)(const char *, int);
  CSharpExceptionCallback_t customExceptionCallback = NULL;

  extern "C" SWIGEXPORT
  void SWIGSTDCALL CustomExceptionRegisterCallback(CSharpExceptionCallback_t customCallback) {
    customExceptionCallback = customCallback;
  }

  // Note that SWIG detects any method calls named starting with
  // SWIG_CSharpSetPendingException for warning 845
  static void SWIG_CSharpSetPendingExceptionCustom(const char *msg, int type) {
    customExceptionCallback(msg, type);
  }


#include "libsbml.h"

LIBSBML_CPP_NAMESPACE_USE

#ifdef USE_LAYOUT
#include "../swig/layout.h"
#endif /* USE_LAYOUT */
#include "local.cpp"


#include <string>


#include <string>


SWIGINTERN void SWIG_CSharpException(int code, const char *msg) {
  if (code == SWIG_ValueError) {
    SWIG_CSharpExceptionArgumentCodes exception_code = SWIG_CSharpArgumentOutOfRangeException;
    SWIG_CSharpSetPendingExceptionArgument(exception_code, msg, 0);
  } else {
    SWIG_CSharpExceptionCodes exception_code = SWIG_CSharpApplicationException;
    switch(code) {
    case SWIG_MemoryError:
      exception_code = SWIG_CSharpOutOfMemoryException;
      break;
    case SWIG_IndexError:
      exception_code = SWIG_CSharpIndexOutOfRangeException;
      break;
    case SWIG_DivisionByZero:
      exception_code = SWIG_CSharpDivideByZeroException;
      break;
    case SWIG_IOError:
      exception_code = SWIG_CSharpIOException;
      break;
    case SWIG_OverflowError:
      exception_code = SWIG_CSharpOverflowException;
      break;
    case SWIG_RuntimeError:
    case SWIG_TypeError:
    case SWIG_SyntaxError:
    case SWIG_SystemError:
    case SWIG_UnknownError:
    default:
      exception_code = SWIG_CSharpApplicationException;
      break;
    }
    SWIG_CSharpSetPendingException(exception_code, msg);
  }
}


#include <stdexcept>


#include "OStream.cpp"


  /**
  * @deprecated libSBML internal
  */
  int ASTNode_true(const ASTNode *node)
  {
    return 1;
  }

SWIGINTERN ListWrapper< ASTNode > *ASTNode_getListOfNodes(ASTNode *self){
    List *list = self->getListOfNodes(ASTNode_true);
    return new ListWrapper<ASTNode>(list);
  }
SWIGINTERN void RDFAnnotationParser_parseRDFAnnotation__SWIG_1(XMLNode const *annotation,ListWrapper< CVTerm > *CVTerms){
    if (!CVTerms) return;

    List *list = CVTerms->getList();
    RDFAnnotationParser::parseRDFAnnotation(annotation,list);
  }

#ifdef __cplusplus
extern "C" {
#endif

SWIGEXPORT void * SWIGSTDCALL CSharp_new_ModelCreatorList() {
  void * jresult ;
  ListWrapper< ModelCreator > *result = 0 ;
  
  result = (ListWrapper< ModelCreator > *)new ListWrapper< ModelCreator >();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_ModelCreatorList(void * jarg1) {
  ListWrapper< ModelCreator > *arg1 = (ListWrapper< ModelCreator > *) 0 ;
  
  arg1 = (ListWrapper< ModelCreator > *)jarg1; 
  delete arg1;
}


SWIGEXPORT void SWIGSTDCALL CSharp_ModelCreatorList_add(void * jarg1, void * jarg2) {
  ListWrapper< ModelCreator > *arg1 = (ListWrapper< ModelCreator > *) 0 ;
  ModelCreator *arg2 = (ModelCreator *) 0 ;
  
  arg1 = (ListWrapper< ModelCreator > *)jarg1; 
  arg2 = (ModelCreator *)jarg2; 
  (arg1)->add(arg2);
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ModelCreatorList_get(void * jarg1, unsigned int jarg2) {
  void * jresult ;
  ListWrapper< ModelCreator > *arg1 = (ListWrapper< ModelCreator > *) 0 ;
  unsigned int arg2 ;
  ModelCreator *result = 0 ;
  
  arg1 = (ListWrapper< ModelCreator > *)jarg1; 
  arg2 = (unsigned int)jarg2; 
  result = (ModelCreator *)((ListWrapper< ModelCreator > const *)arg1)->get(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_ModelCreatorList_prepend(void * jarg1, void * jarg2) {
  ListWrapper< ModelCreator > *arg1 = (ListWrapper< ModelCreator > *) 0 ;
  ModelCreator *arg2 = (ModelCreator *) 0 ;
  
  arg1 = (ListWrapper< ModelCreator > *)jarg1; 
  arg2 = (ModelCreator *)jarg2; 
  (arg1)->prepend(arg2);
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ModelCreatorList_remove(void * jarg1, unsigned int jarg2) {
  void * jresult ;
  ListWrapper< ModelCreator > *arg1 = (ListWrapper< ModelCreator > *) 0 ;
  unsigned int arg2 ;
  ModelCreator *result = 0 ;
  
  arg1 = (ListWrapper< ModelCreator > *)jarg1; 
  arg2 = (unsigned int)jarg2; 
  result = (ModelCreator *)(arg1)->remove(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ModelCreatorList_getSize(void * jarg1) {
  unsigned int jresult ;
  ListWrapper< ModelCreator > *arg1 = (ListWrapper< ModelCreator > *) 0 ;
  unsigned int result;
  
  arg1 = (ListWrapper< ModelCreator > *)jarg1; 
  result = (unsigned int)((ListWrapper< ModelCreator > const *)arg1)->getSize();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_DateList() {
  void * jresult ;
  ListWrapper< Date > *result = 0 ;
  
  result = (ListWrapper< Date > *)new ListWrapper< Date >();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_DateList(void * jarg1) {
  ListWrapper< Date > *arg1 = (ListWrapper< Date > *) 0 ;
  
  arg1 = (ListWrapper< Date > *)jarg1; 
  delete arg1;
}


SWIGEXPORT void SWIGSTDCALL CSharp_DateList_add(void * jarg1, void * jarg2) {
  ListWrapper< Date > *arg1 = (ListWrapper< Date > *) 0 ;
  Date *arg2 = (Date *) 0 ;
  
  arg1 = (ListWrapper< Date > *)jarg1; 
  arg2 = (Date *)jarg2; 
  (arg1)->add(arg2);
}


SWIGEXPORT void * SWIGSTDCALL CSharp_DateList_get(void * jarg1, unsigned int jarg2) {
  void * jresult ;
  ListWrapper< Date > *arg1 = (ListWrapper< Date > *) 0 ;
  unsigned int arg2 ;
  Date *result = 0 ;
  
  arg1 = (ListWrapper< Date > *)jarg1; 
  arg2 = (unsigned int)jarg2; 
  result = (Date *)((ListWrapper< Date > const *)arg1)->get(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_DateList_prepend(void * jarg1, void * jarg2) {
  ListWrapper< Date > *arg1 = (ListWrapper< Date > *) 0 ;
  Date *arg2 = (Date *) 0 ;
  
  arg1 = (ListWrapper< Date > *)jarg1; 
  arg2 = (Date *)jarg2; 
  (arg1)->prepend(arg2);
}


SWIGEXPORT void * SWIGSTDCALL CSharp_DateList_remove(void * jarg1, unsigned int jarg2) {
  void * jresult ;
  ListWrapper< Date > *arg1 = (ListWrapper< Date > *) 0 ;
  unsigned int arg2 ;
  Date *result = 0 ;
  
  arg1 = (ListWrapper< Date > *)jarg1; 
  arg2 = (unsigned int)jarg2; 
  result = (Date *)(arg1)->remove(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_DateList_getSize(void * jarg1) {
  unsigned int jresult ;
  ListWrapper< Date > *arg1 = (ListWrapper< Date > *) 0 ;
  unsigned int result;
  
  arg1 = (ListWrapper< Date > *)jarg1; 
  result = (unsigned int)((ListWrapper< Date > const *)arg1)->getSize();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_CVTermList() {
  void * jresult ;
  ListWrapper< CVTerm > *result = 0 ;
  
  result = (ListWrapper< CVTerm > *)new ListWrapper< CVTerm >();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_CVTermList(void * jarg1) {
  ListWrapper< CVTerm > *arg1 = (ListWrapper< CVTerm > *) 0 ;
  
  arg1 = (ListWrapper< CVTerm > *)jarg1; 
  delete arg1;
}


SWIGEXPORT void SWIGSTDCALL CSharp_CVTermList_add(void * jarg1, void * jarg2) {
  ListWrapper< CVTerm > *arg1 = (ListWrapper< CVTerm > *) 0 ;
  CVTerm *arg2 = (CVTerm *) 0 ;
  
  arg1 = (ListWrapper< CVTerm > *)jarg1; 
  arg2 = (CVTerm *)jarg2; 
  (arg1)->add(arg2);
}


SWIGEXPORT void * SWIGSTDCALL CSharp_CVTermList_get(void * jarg1, unsigned int jarg2) {
  void * jresult ;
  ListWrapper< CVTerm > *arg1 = (ListWrapper< CVTerm > *) 0 ;
  unsigned int arg2 ;
  CVTerm *result = 0 ;
  
  arg1 = (ListWrapper< CVTerm > *)jarg1; 
  arg2 = (unsigned int)jarg2; 
  result = (CVTerm *)((ListWrapper< CVTerm > const *)arg1)->get(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_CVTermList_prepend(void * jarg1, void * jarg2) {
  ListWrapper< CVTerm > *arg1 = (ListWrapper< CVTerm > *) 0 ;
  CVTerm *arg2 = (CVTerm *) 0 ;
  
  arg1 = (ListWrapper< CVTerm > *)jarg1; 
  arg2 = (CVTerm *)jarg2; 
  (arg1)->prepend(arg2);
}


SWIGEXPORT void * SWIGSTDCALL CSharp_CVTermList_remove(void * jarg1, unsigned int jarg2) {
  void * jresult ;
  ListWrapper< CVTerm > *arg1 = (ListWrapper< CVTerm > *) 0 ;
  unsigned int arg2 ;
  CVTerm *result = 0 ;
  
  arg1 = (ListWrapper< CVTerm > *)jarg1; 
  arg2 = (unsigned int)jarg2; 
  result = (CVTerm *)(arg1)->remove(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_CVTermList_getSize(void * jarg1) {
  unsigned int jresult ;
  ListWrapper< CVTerm > *arg1 = (ListWrapper< CVTerm > *) 0 ;
  unsigned int result;
  
  arg1 = (ListWrapper< CVTerm > *)jarg1; 
  result = (unsigned int)((ListWrapper< CVTerm > const *)arg1)->getSize();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_ASTNodeList() {
  void * jresult ;
  ListWrapper< ASTNode > *result = 0 ;
  
  result = (ListWrapper< ASTNode > *)new ListWrapper< ASTNode >();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_ASTNodeList(void * jarg1) {
  ListWrapper< ASTNode > *arg1 = (ListWrapper< ASTNode > *) 0 ;
  
  arg1 = (ListWrapper< ASTNode > *)jarg1; 
  delete arg1;
}


SWIGEXPORT void SWIGSTDCALL CSharp_ASTNodeList_add(void * jarg1, void * jarg2) {
  ListWrapper< ASTNode > *arg1 = (ListWrapper< ASTNode > *) 0 ;
  ASTNode *arg2 = (ASTNode *) 0 ;
  
  arg1 = (ListWrapper< ASTNode > *)jarg1; 
  arg2 = (ASTNode *)jarg2; 
  (arg1)->add(arg2);
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ASTNodeList_get(void * jarg1, unsigned int jarg2) {
  void * jresult ;
  ListWrapper< ASTNode > *arg1 = (ListWrapper< ASTNode > *) 0 ;
  unsigned int arg2 ;
  ASTNode *result = 0 ;
  
  arg1 = (ListWrapper< ASTNode > *)jarg1; 
  arg2 = (unsigned int)jarg2; 
  result = (ASTNode *)((ListWrapper< ASTNode > const *)arg1)->get(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_ASTNodeList_prepend(void * jarg1, void * jarg2) {
  ListWrapper< ASTNode > *arg1 = (ListWrapper< ASTNode > *) 0 ;
  ASTNode *arg2 = (ASTNode *) 0 ;
  
  arg1 = (ListWrapper< ASTNode > *)jarg1; 
  arg2 = (ASTNode *)jarg2; 
  (arg1)->prepend(arg2);
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ASTNodeList_remove(void * jarg1, unsigned int jarg2) {
  void * jresult ;
  ListWrapper< ASTNode > *arg1 = (ListWrapper< ASTNode > *) 0 ;
  unsigned int arg2 ;
  ASTNode *result = 0 ;
  
  arg1 = (ListWrapper< ASTNode > *)jarg1; 
  arg2 = (unsigned int)jarg2; 
  result = (ASTNode *)(arg1)->remove(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ASTNodeList_getSize(void * jarg1) {
  unsigned int jresult ;
  ListWrapper< ASTNode > *arg1 = (ListWrapper< ASTNode > *) 0 ;
  unsigned int result;
  
  arg1 = (ListWrapper< ASTNode > *)jarg1; 
  result = (unsigned int)((ListWrapper< ASTNode > const *)arg1)->getSize();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBMLNamespacesList() {
  void * jresult ;
  ListWrapper< SBMLNamespaces > *result = 0 ;
  
  result = (ListWrapper< SBMLNamespaces > *)new ListWrapper< SBMLNamespaces >();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBMLNamespacesList(void * jarg1) {
  ListWrapper< SBMLNamespaces > *arg1 = (ListWrapper< SBMLNamespaces > *) 0 ;
  
  arg1 = (ListWrapper< SBMLNamespaces > *)jarg1; 
  delete arg1;
}


SWIGEXPORT void SWIGSTDCALL CSharp_SBMLNamespacesList_add(void * jarg1, void * jarg2) {
  ListWrapper< SBMLNamespaces > *arg1 = (ListWrapper< SBMLNamespaces > *) 0 ;
  SBMLNamespaces *arg2 = (SBMLNamespaces *) 0 ;
  
  arg1 = (ListWrapper< SBMLNamespaces > *)jarg1; 
  arg2 = (SBMLNamespaces *)jarg2; 
  (arg1)->add(arg2);
}


SWIGEXPORT void * SWIGSTDCALL CSharp_SBMLNamespacesList_get(void * jarg1, unsigned int jarg2) {
  void * jresult ;
  ListWrapper< SBMLNamespaces > *arg1 = (ListWrapper< SBMLNamespaces > *) 0 ;
  unsigned int arg2 ;
  SBMLNamespaces *result = 0 ;
  
  arg1 = (ListWrapper< SBMLNamespaces > *)jarg1; 
  arg2 = (unsigned int)jarg2; 
  result = (SBMLNamespaces *)((ListWrapper< SBMLNamespaces > const *)arg1)->get(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_SBMLNamespacesList_prepend(void * jarg1, void * jarg2) {
  ListWrapper< SBMLNamespaces > *arg1 = (ListWrapper< SBMLNamespaces > *) 0 ;
  SBMLNamespaces *arg2 = (SBMLNamespaces *) 0 ;
  
  arg1 = (ListWrapper< SBMLNamespaces > *)jarg1; 
  arg2 = (SBMLNamespaces *)jarg2; 
  (arg1)->prepend(arg2);
}


SWIGEXPORT void * SWIGSTDCALL CSharp_SBMLNamespacesList_remove(void * jarg1, unsigned int jarg2) {
  void * jresult ;
  ListWrapper< SBMLNamespaces > *arg1 = (ListWrapper< SBMLNamespaces > *) 0 ;
  unsigned int arg2 ;
  SBMLNamespaces *result = 0 ;
  
  arg1 = (ListWrapper< SBMLNamespaces > *)jarg1; 
  arg2 = (unsigned int)jarg2; 
  result = (SBMLNamespaces *)(arg1)->remove(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBMLNamespacesList_getSize(void * jarg1) {
  unsigned int jresult ;
  ListWrapper< SBMLNamespaces > *arg1 = (ListWrapper< SBMLNamespaces > *) 0 ;
  unsigned int result;
  
  arg1 = (ListWrapper< SBMLNamespaces > *)jarg1; 
  result = (unsigned int)((ListWrapper< SBMLNamespaces > const *)arg1)->getSize();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_OStream__SWIG_0(int jarg1) {
  void * jresult ;
  OStream::StdOSType arg1 ;
  OStream *result = 0 ;
  
  arg1 = (OStream::StdOSType)jarg1; 
  result = (OStream *)new OStream(arg1);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_OStream__SWIG_1() {
  void * jresult ;
  OStream *result = 0 ;
  
  result = (OStream *)new OStream();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_OStream(void * jarg1) {
  OStream *arg1 = (OStream *) 0 ;
  
  arg1 = (OStream *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_OStream_get_ostream(void * jarg1) {
  void * jresult ;
  OStream *arg1 = (OStream *) 0 ;
  std::ostream *result = 0 ;
  
  arg1 = (OStream *)jarg1; 
  result = (std::ostream *)(arg1)->get_ostream();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_OStream_endl(void * jarg1) {
  OStream *arg1 = (OStream *) 0 ;
  
  arg1 = (OStream *)jarg1; 
  (arg1)->endl();
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_OFStream__SWIG_0(wchar_t* jarg1, unsigned int jarg2) {
  void * jresult ;
  std::string *arg1 = 0 ;
  bool arg2 ;
  std::string arg_str1 ;
  OFStream *result = 0 ;
  
  {
    char*  mbstr = convertUnicodeToACP(jarg1);
    if (!mbstr) return 0;
    
    arg_str1.assign(mbstr);
    arg1 = &arg_str1;
    delete[] mbstr;
  }
  arg2 = jarg2 ? true : false; 
  result = (OFStream *)new OFStream((std::string const &)*arg1,arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_OFStream__SWIG_1(wchar_t* jarg1) {
  void * jresult ;
  std::string *arg1 = 0 ;
  std::string arg_str1 ;
  OFStream *result = 0 ;
  
  {
    char*  mbstr = convertUnicodeToACP(jarg1);
    if (!mbstr) return 0;
    
    arg_str1.assign(mbstr);
    arg1 = &arg_str1;
    delete[] mbstr;
  }
  result = (OFStream *)new OFStream((std::string const &)*arg1);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_OFStream(void * jarg1) {
  OFStream *arg1 = (OFStream *) 0 ;
  
  arg1 = (OFStream *)jarg1; 
  delete arg1;
}


SWIGEXPORT void SWIGSTDCALL CSharp_OFStream_open__SWIG_0(void * jarg1, wchar_t* jarg2, unsigned int jarg3) {
  OFStream *arg1 = (OFStream *) 0 ;
  std::string *arg2 = 0 ;
  bool arg3 ;
  std::string arg_str2 ;
  
  arg1 = (OFStream *)jarg1; 
  {
    char*  mbstr = convertUnicodeToACP(jarg2);
    if (!mbstr) return ;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  arg3 = jarg3 ? true : false; 
  (arg1)->open((std::string const &)*arg2,arg3);
}


SWIGEXPORT void SWIGSTDCALL CSharp_OFStream_open__SWIG_1(void * jarg1, wchar_t* jarg2) {
  OFStream *arg1 = (OFStream *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  
  arg1 = (OFStream *)jarg1; 
  {
    char*  mbstr = convertUnicodeToACP(jarg2);
    if (!mbstr) return ;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  (arg1)->open((std::string const &)*arg2);
}


SWIGEXPORT void SWIGSTDCALL CSharp_OFStream_close(void * jarg1) {
  OFStream *arg1 = (OFStream *) 0 ;
  
  arg1 = (OFStream *)jarg1; 
  (arg1)->close();
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_OFStream_is_open(void * jarg1) {
  unsigned int jresult ;
  OFStream *arg1 = (OFStream *) 0 ;
  bool result;
  
  arg1 = (OFStream *)jarg1; 
  result = (bool)(arg1)->is_open();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_OStringStream() {
  void * jresult ;
  OStringStream *result = 0 ;
  
  result = (OStringStream *)new OStringStream();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_OStringStream_str__SWIG_0(void * jarg1) {
  wchar_t* jresult ;
  OStringStream *arg1 = (OStringStream *) 0 ;
  std::string result;
  
  arg1 = (OStringStream *)jarg1; 
  result = (arg1)->str();
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_OStringStream_str__SWIG_1(void * jarg1, wchar_t* jarg2) {
  OStringStream *arg1 = (OStringStream *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  
  arg1 = (OStringStream *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return ;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  (arg1)->str((std::string const &)*arg2);
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_OStringStream(void * jarg1) {
  OStringStream *arg1 = (OStringStream *) 0 ;
  
  arg1 = (OStringStream *)jarg1; 
  delete arg1;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ASTNode_true(void * jarg1) {
  int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  int result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (int)ASTNode_true((ASTNode const *)arg1);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_getLibSBMLVersion() {
  int jresult ;
  int result;
  
  result = (int)getLibSBMLVersion();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_getLibSBMLDottedVersion() {
  wchar_t* jresult ;
  char *result = 0 ;
  
  result = (char *)getLibSBMLDottedVersion();
  {
    jresult = convertUTF8ToUnicode( result );
    wchar_t* unistr = convertUTF8ToUnicode( result );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_getLibSBMLVersionString() {
  wchar_t* jresult ;
  char *result = 0 ;
  
  result = (char *)getLibSBMLVersionString();
  {
    jresult = convertUTF8ToUnicode( result );
    wchar_t* unistr = convertUTF8ToUnicode( result );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBMLReader() {
  void * jresult ;
  SBMLReader *result = 0 ;
  
  result = (SBMLReader *)new SBMLReader();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBMLReader(void * jarg1) {
  SBMLReader *arg1 = (SBMLReader *) 0 ;
  
  arg1 = (SBMLReader *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_SBMLReader_readSBML(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  SBMLReader *arg1 = (SBMLReader *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  SBMLDocument *result = 0 ;
  
  arg1 = (SBMLReader *)jarg1; 
  {
    char*  mbstr = convertUnicodeToACP(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (SBMLDocument *)(arg1)->readSBML((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_SBMLReader_readSBMLFromFile(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  SBMLReader *arg1 = (SBMLReader *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  SBMLDocument *result = 0 ;
  
  arg1 = (SBMLReader *)jarg1; 
  {
    char*  mbstr = convertUnicodeToACP(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (SBMLDocument *)(arg1)->readSBMLFromFile((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_SBMLReader_readSBMLFromString(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  SBMLReader *arg1 = (SBMLReader *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  SBMLDocument *result = 0 ;
  
  arg1 = (SBMLReader *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (SBMLDocument *)(arg1)->readSBMLFromString((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBMLReader_hasZlib() {
  unsigned int jresult ;
  bool result;
  
  result = (bool)SBMLReader::hasZlib();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBMLReader_hasBzip2() {
  unsigned int jresult ;
  bool result;
  
  result = (bool)SBMLReader::hasBzip2();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_readSBML(wchar_t* jarg1) {
  void * jresult ;
  char *arg1 = (char *) 0 ;
  SBMLDocument_t *result = 0 ;
  
  {
    if (jarg1)
    {
      arg1 = convertUnicodeToACP(jarg1);
      if (!arg1) return 0;
    }
  }
  result = (SBMLDocument_t *)readSBML((char const *)arg1);
  jresult = (void *)result; 
  {
    delete[] arg1;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_readSBMLFromFile(wchar_t* jarg1) {
  void * jresult ;
  char *arg1 = (char *) 0 ;
  SBMLDocument_t *result = 0 ;
  
  {
    if (jarg1)
    {
      arg1 = convertUnicodeToACP(jarg1);
      if (!arg1) return 0;
    }
  }
  result = (SBMLDocument_t *)readSBMLFromFile((char const *)arg1);
  jresult = (void *)result; 
  {
    delete[] arg1;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_readSBMLFromString(wchar_t* jarg1) {
  void * jresult ;
  char *arg1 = (char *) 0 ;
  SBMLDocument_t *result = 0 ;
  
  {
    if (jarg1)
    {
      arg1 = convertUnicodeToUTF8(jarg1);
      if (!arg1) return 0;
    }
  }
  result = (SBMLDocument_t *)readSBMLFromString((char const *)arg1);
  jresult = (void *)result; 
  {
    delete[] arg1;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBMLWriter() {
  void * jresult ;
  SBMLWriter *result = 0 ;
  
  result = (SBMLWriter *)new SBMLWriter();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBMLWriter(void * jarg1) {
  SBMLWriter *arg1 = (SBMLWriter *) 0 ;
  
  arg1 = (SBMLWriter *)jarg1; 
  delete arg1;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SBMLWriter_setProgramName(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  SBMLWriter *arg1 = (SBMLWriter *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (SBMLWriter *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setProgramName((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SBMLWriter_setProgramVersion(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  SBMLWriter *arg1 = (SBMLWriter *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (SBMLWriter *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setProgramVersion((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBMLWriter_writeSBML__SWIG_0(void * jarg1, void * jarg2, wchar_t* jarg3) {
  unsigned int jresult ;
  SBMLWriter *arg1 = (SBMLWriter *) 0 ;
  SBMLDocument *arg2 = (SBMLDocument *) 0 ;
  std::string *arg3 = 0 ;
  std::string arg_str3 ;
  bool result;
  
  arg1 = (SBMLWriter *)jarg1; 
  arg2 = (SBMLDocument *)jarg2; 
  {
    char*  mbstr = convertUnicodeToACP(jarg3);
    if (!mbstr) return 0;
    
    arg_str3.assign(mbstr);
    arg3 = &arg_str3;
    delete[] mbstr;
  }
  result = (bool)(arg1)->writeSBML((SBMLDocument const *)arg2,(std::string const &)*arg3);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBMLWriter_writeSBML__SWIG_1(void * jarg1, void * jarg2, void * jarg3) {
  unsigned int jresult ;
  SBMLWriter *arg1 = (SBMLWriter *) 0 ;
  SBMLDocument *arg2 = (SBMLDocument *) 0 ;
  std::ostream *arg3 = 0 ;
  bool result;
  
  arg1 = (SBMLWriter *)jarg1; 
  arg2 = (SBMLDocument *)jarg2; 
  arg3 = (std::ostream *)jarg3;
  if (!arg3) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "std::ostream & type is null", 0);
    return 0;
  } 
  result = (bool)(arg1)->writeSBML((SBMLDocument const *)arg2,*arg3);
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_SBMLWriter_writeToString(void * jarg1, void * jarg2) {
  wchar_t* jresult ;
  SBMLWriter *arg1 = (SBMLWriter *) 0 ;
  SBMLDocument *arg2 = (SBMLDocument *) 0 ;
  char *result = 0 ;
  
  arg1 = (SBMLWriter *)jarg1; 
  arg2 = (SBMLDocument *)jarg2; 
  result = (char *)(arg1)->writeToString((SBMLDocument const *)arg2);
  {
    jresult = convertUTF8ToUnicode( result );
    wchar_t* unistr = convertUTF8ToUnicode( result );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  free(result);
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBMLWriter_writeSBMLToFile(void * jarg1, void * jarg2, wchar_t* jarg3) {
  unsigned int jresult ;
  SBMLWriter *arg1 = (SBMLWriter *) 0 ;
  SBMLDocument *arg2 = (SBMLDocument *) 0 ;
  std::string *arg3 = 0 ;
  std::string arg_str3 ;
  bool result;
  
  arg1 = (SBMLWriter *)jarg1; 
  arg2 = (SBMLDocument *)jarg2; 
  {
    char*  mbstr = convertUnicodeToACP(jarg3);
    if (!mbstr) return 0;
    
    arg_str3.assign(mbstr);
    arg3 = &arg_str3;
    delete[] mbstr;
  }
  result = (bool)(arg1)->writeSBMLToFile((SBMLDocument const *)arg2,(std::string const &)*arg3);
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_SBMLWriter_writeSBMLToString(void * jarg1, void * jarg2) {
  wchar_t* jresult ;
  SBMLWriter *arg1 = (SBMLWriter *) 0 ;
  SBMLDocument *arg2 = (SBMLDocument *) 0 ;
  char *result = 0 ;
  
  arg1 = (SBMLWriter *)jarg1; 
  arg2 = (SBMLDocument *)jarg2; 
  result = (char *)(arg1)->writeSBMLToString((SBMLDocument const *)arg2);
  {
    jresult = convertUTF8ToUnicode( result );
    wchar_t* unistr = convertUTF8ToUnicode( result );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  free(result);
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBMLWriter_hasZlib() {
  unsigned int jresult ;
  bool result;
  
  result = (bool)SBMLWriter::hasZlib();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBMLWriter_hasBzip2() {
  unsigned int jresult ;
  bool result;
  
  result = (bool)SBMLWriter::hasBzip2();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_writeSBML(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  SBMLDocument_t *arg1 = (SBMLDocument_t *) 0 ;
  char *arg2 = (char *) 0 ;
  int result;
  
  arg1 = (SBMLDocument_t *)jarg1; 
  {
    if (jarg2)
    {
      arg2 = convertUnicodeToACP(jarg2);
      if (!arg2) return 0;
    }
  }
  result = (int)writeSBML((SBMLDocument const *)arg1,(char const *)arg2);
  jresult = result; 
  {
    delete[] arg2;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_writeSBMLToString(void * jarg1) {
  wchar_t* jresult ;
  SBMLDocument_t *arg1 = (SBMLDocument_t *) 0 ;
  char *result = 0 ;
  
  arg1 = (SBMLDocument_t *)jarg1; 
  result = (char *)writeSBMLToString((SBMLDocument const *)arg1);
  {
    jresult = convertUTF8ToUnicode( result );
    wchar_t* unistr = convertUTF8ToUnicode( result );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  free(result);
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_writeSBMLToFile(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  SBMLDocument_t *arg1 = (SBMLDocument_t *) 0 ;
  char *arg2 = (char *) 0 ;
  int result;
  
  arg1 = (SBMLDocument_t *)jarg1; 
  {
    if (jarg2)
    {
      arg2 = convertUnicodeToACP(jarg2);
      if (!arg2) return 0;
    }
  }
  result = (int)writeSBMLToFile((SBMLDocument const *)arg1,(char const *)arg2);
  jresult = result; 
  {
    delete[] arg2;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_SBMLTypeCode_toString(int jarg1) {
  wchar_t* jresult ;
  SBMLTypeCode_t arg1 ;
  char *result = 0 ;
  
  arg1 = (SBMLTypeCode_t)jarg1; 
  result = (char *)SBMLTypeCode_toString(arg1);
  {
    jresult = convertUTF8ToUnicode( result );
    wchar_t* unistr = convertUTF8ToUnicode( result );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBMLConstructorException() {
  void * jresult ;
  SBMLConstructorException *result = 0 ;
  
  result = (SBMLConstructorException *)new SBMLConstructorException();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBMLConstructorException(void * jarg1) {
  SBMLConstructorException *arg1 = (SBMLConstructorException *) 0 ;
  
  arg1 = (SBMLConstructorException *)jarg1; 
  delete arg1;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBase(void * jarg1) {
  SBase *arg1 = (SBase *) 0 ;
  
  arg1 = (SBase *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_SBase_clone(void * jarg1) {
  void * jresult ;
  SBase *arg1 = (SBase *) 0 ;
  SBase *result = 0 ;
  
  arg1 = (SBase *)jarg1; 
  result = (SBase *)((SBase const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_SBase_getMetaId(void * jarg1) {
  wchar_t* jresult ;
  SBase *arg1 = (SBase *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (SBase *)jarg1; 
  result = (std::string *) &((SBase const *)arg1)->getMetaId();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_SBase_getId(void * jarg1) {
  wchar_t* jresult ;
  SBase *arg1 = (SBase *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (SBase *)jarg1; 
  result = (std::string *) &((SBase const *)arg1)->getId();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_SBase_getName(void * jarg1) {
  wchar_t* jresult ;
  SBase *arg1 = (SBase *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (SBase *)jarg1; 
  result = (std::string *) &((SBase const *)arg1)->getName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_SBase_getNotes(void * jarg1) {
  void * jresult ;
  SBase *arg1 = (SBase *) 0 ;
  XMLNode *result = 0 ;
  
  arg1 = (SBase *)jarg1; 
  result = (XMLNode *)(arg1)->getNotes();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_SBase_getNotesString(void * jarg1) {
  wchar_t* jresult ;
  SBase *arg1 = (SBase *) 0 ;
  std::string result;
  
  arg1 = (SBase *)jarg1; 
  result = (arg1)->getNotesString();
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_SBase_getAnnotation(void * jarg1) {
  void * jresult ;
  SBase *arg1 = (SBase *) 0 ;
  XMLNode *result = 0 ;
  
  arg1 = (SBase *)jarg1; 
  result = (XMLNode *)(arg1)->getAnnotation();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_SBase_getAnnotationString(void * jarg1) {
  wchar_t* jresult ;
  SBase *arg1 = (SBase *) 0 ;
  std::string result;
  
  arg1 = (SBase *)jarg1; 
  result = (arg1)->getAnnotationString();
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_SBase_getNamespaces(void * jarg1) {
  void * jresult ;
  SBase *arg1 = (SBase *) 0 ;
  XMLNamespaces *result = 0 ;
  
  arg1 = (SBase *)jarg1; 
  result = (XMLNamespaces *)((SBase const *)arg1)->getNamespaces();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_SBase_getSBMLDocument__SWIG_0(void * jarg1) {
  void * jresult ;
  SBase *arg1 = (SBase *) 0 ;
  SBMLDocument *result = 0 ;
  
  arg1 = (SBase *)jarg1; 
  result = (SBMLDocument *)((SBase const *)arg1)->getSBMLDocument();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_SBase_getParentSBMLObject(void * jarg1) {
  void * jresult ;
  SBase *arg1 = (SBase *) 0 ;
  SBase *result = 0 ;
  
  arg1 = (SBase *)jarg1; 
  result = (SBase *)(arg1)->getParentSBMLObject();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_SBase_getAncestorOfType(void * jarg1, int jarg2) {
  void * jresult ;
  SBase *arg1 = (SBase *) 0 ;
  SBMLTypeCode_t arg2 ;
  SBase *result = 0 ;
  
  arg1 = (SBase *)jarg1; 
  arg2 = (SBMLTypeCode_t)jarg2; 
  result = (SBase *)(arg1)->getAncestorOfType(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SBase_getSBOTerm(void * jarg1) {
  int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  int result;
  
  arg1 = (SBase *)jarg1; 
  result = (int)((SBase const *)arg1)->getSBOTerm();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_SBase_getSBOTermID(void * jarg1) {
  wchar_t* jresult ;
  SBase *arg1 = (SBase *) 0 ;
  std::string result;
  
  arg1 = (SBase *)jarg1; 
  result = ((SBase const *)arg1)->getSBOTermID();
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBase_getLine(void * jarg1) {
  unsigned int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  unsigned int result;
  
  arg1 = (SBase *)jarg1; 
  result = (unsigned int)((SBase const *)arg1)->getLine();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBase_getColumn(void * jarg1) {
  unsigned int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  unsigned int result;
  
  arg1 = (SBase *)jarg1; 
  result = (unsigned int)((SBase const *)arg1)->getColumn();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_SBase_getModelHistory__SWIG_0(void * jarg1) {
  void * jresult ;
  SBase *arg1 = (SBase *) 0 ;
  ModelHistory *result = 0 ;
  
  arg1 = (SBase *)jarg1; 
  result = (ModelHistory *)((SBase const *)arg1)->getModelHistory();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBase_isSetMetaId(void * jarg1) {
  unsigned int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  bool result;
  
  arg1 = (SBase *)jarg1; 
  result = (bool)((SBase const *)arg1)->isSetMetaId();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBase_isSetId(void * jarg1) {
  unsigned int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  bool result;
  
  arg1 = (SBase *)jarg1; 
  result = (bool)((SBase const *)arg1)->isSetId();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBase_isSetName(void * jarg1) {
  unsigned int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  bool result;
  
  arg1 = (SBase *)jarg1; 
  result = (bool)((SBase const *)arg1)->isSetName();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBase_isSetNotes(void * jarg1) {
  unsigned int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  bool result;
  
  arg1 = (SBase *)jarg1; 
  result = (bool)((SBase const *)arg1)->isSetNotes();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBase_isSetAnnotation(void * jarg1) {
  unsigned int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  bool result;
  
  arg1 = (SBase *)jarg1; 
  result = (bool)((SBase const *)arg1)->isSetAnnotation();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBase_isSetSBOTerm(void * jarg1) {
  unsigned int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  bool result;
  
  arg1 = (SBase *)jarg1; 
  result = (bool)((SBase const *)arg1)->isSetSBOTerm();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SBase_setMetaId(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (SBase *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setMetaId((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBase_isSetModelHistory(void * jarg1) {
  unsigned int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  bool result;
  
  arg1 = (SBase *)jarg1; 
  result = (bool)(arg1)->isSetModelHistory();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SBase_setId(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (SBase *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setId((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SBase_setName(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (SBase *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setName((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SBase_setAnnotation__SWIG_0(void * jarg1, void * jarg2) {
  int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  XMLNode *arg2 = (XMLNode *) 0 ;
  int result;
  
  arg1 = (SBase *)jarg1; 
  arg2 = (XMLNode *)jarg2; 
  result = (int)(arg1)->setAnnotation((XMLNode const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SBase_setAnnotation__SWIG_1(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (SBase *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setAnnotation((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SBase_appendAnnotation__SWIG_0(void * jarg1, void * jarg2) {
  int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  XMLNode *arg2 = (XMLNode *) 0 ;
  int result;
  
  arg1 = (SBase *)jarg1; 
  arg2 = (XMLNode *)jarg2; 
  result = (int)(arg1)->appendAnnotation((XMLNode const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SBase_appendAnnotation__SWIG_1(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (SBase *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->appendAnnotation((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SBase_setNotes__SWIG_0(void * jarg1, void * jarg2) {
  int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  XMLNode *arg2 = (XMLNode *) 0 ;
  int result;
  
  arg1 = (SBase *)jarg1; 
  arg2 = (XMLNode *)jarg2; 
  result = (int)(arg1)->setNotes((XMLNode const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SBase_setNotes__SWIG_1(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (SBase *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setNotes((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SBase_appendNotes__SWIG_0(void * jarg1, void * jarg2) {
  int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  XMLNode *arg2 = (XMLNode *) 0 ;
  int result;
  
  arg1 = (SBase *)jarg1; 
  arg2 = (XMLNode *)jarg2; 
  result = (int)(arg1)->appendNotes((XMLNode const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SBase_appendNotes__SWIG_1(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (SBase *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->appendNotes((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SBase_setModelHistory(void * jarg1, void * jarg2) {
  int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  ModelHistory *arg2 = (ModelHistory *) 0 ;
  int result;
  
  arg1 = (SBase *)jarg1; 
  arg2 = (ModelHistory *)jarg2; 
  result = (int)(arg1)->setModelHistory(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SBase_setSBOTerm__SWIG_0(void * jarg1, int jarg2) {
  int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  int arg2 ;
  int result;
  
  arg1 = (SBase *)jarg1; 
  arg2 = (int)jarg2; 
  result = (int)(arg1)->setSBOTerm(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SBase_setSBOTerm__SWIG_1(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (SBase *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setSBOTerm((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SBase_setNamespaces(void * jarg1, void * jarg2) {
  int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  XMLNamespaces *arg2 = (XMLNamespaces *) 0 ;
  int result;
  
  arg1 = (SBase *)jarg1; 
  arg2 = (XMLNamespaces *)jarg2; 
  result = (int)(arg1)->setNamespaces(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SBase_unsetMetaId(void * jarg1) {
  int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  int result;
  
  arg1 = (SBase *)jarg1; 
  result = (int)(arg1)->unsetMetaId();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SBase_unsetNotes(void * jarg1) {
  int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  int result;
  
  arg1 = (SBase *)jarg1; 
  result = (int)(arg1)->unsetNotes();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SBase_unsetAnnotation(void * jarg1) {
  int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  int result;
  
  arg1 = (SBase *)jarg1; 
  result = (int)(arg1)->unsetAnnotation();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SBase_unsetSBOTerm(void * jarg1) {
  int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  int result;
  
  arg1 = (SBase *)jarg1; 
  result = (int)(arg1)->unsetSBOTerm();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SBase_addCVTerm__SWIG_0(void * jarg1, void * jarg2, unsigned int jarg3) {
  int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  CVTerm *arg2 = (CVTerm *) 0 ;
  bool arg3 ;
  int result;
  
  arg1 = (SBase *)jarg1; 
  arg2 = (CVTerm *)jarg2; 
  arg3 = jarg3 ? true : false; 
  result = (int)(arg1)->addCVTerm(arg2,arg3);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SBase_addCVTerm__SWIG_1(void * jarg1, void * jarg2) {
  int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  CVTerm *arg2 = (CVTerm *) 0 ;
  int result;
  
  arg1 = (SBase *)jarg1; 
  arg2 = (CVTerm *)jarg2; 
  result = (int)(arg1)->addCVTerm(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_SBase_getCVTerms__SWIG_0(void * jarg1) {
  void * jresult ;
  SBase *arg1 = (SBase *) 0 ;
  List *result = 0 ;
  
  arg1 = (SBase *)jarg1; 
  result = (List *)(arg1)->getCVTerms();
  {
    ListWrapper<CVTerm> *listw = (result != 0) ? new ListWrapper<CVTerm>(result) : 0;  
    jresult = (void*)listw;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBase_getNumCVTerms(void * jarg1) {
  unsigned int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  unsigned int result;
  
  arg1 = (SBase *)jarg1; 
  result = (unsigned int)(arg1)->getNumCVTerms();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_SBase_getCVTerm(void * jarg1, long long jarg2) {
  void * jresult ;
  SBase *arg1 = (SBase *) 0 ;
  unsigned int arg2 ;
  CVTerm *result = 0 ;
  
  arg1 = (SBase *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (CVTerm *)(arg1)->getCVTerm(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SBase_unsetCVTerms(void * jarg1) {
  int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  int result;
  
  arg1 = (SBase *)jarg1; 
  result = (int)(arg1)->unsetCVTerms();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SBase_unsetModelHistory(void * jarg1) {
  int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  int result;
  
  arg1 = (SBase *)jarg1; 
  result = (int)(arg1)->unsetModelHistory();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SBase_getResourceBiologicalQualifier(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  std::string arg2 ;
  BiolQualifierType_t result;
  
  arg1 = (SBase *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    (&arg2)->assign(mbstr);
    delete[] mbstr;
  }
  result = (BiolQualifierType_t)(arg1)->getResourceBiologicalQualifier(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SBase_getResourceModelQualifier(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  std::string arg2 ;
  ModelQualifierType_t result;
  
  arg1 = (SBase *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    (&arg2)->assign(mbstr);
    delete[] mbstr;
  }
  result = (ModelQualifierType_t)(arg1)->getResourceModelQualifier(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_SBase_getModel(void * jarg1) {
  void * jresult ;
  SBase *arg1 = (SBase *) 0 ;
  Model *result = 0 ;
  
  arg1 = (SBase *)jarg1; 
  result = (Model *)((SBase const *)arg1)->getModel();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBase_getLevel(void * jarg1) {
  unsigned int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  unsigned int result;
  
  arg1 = (SBase *)jarg1; 
  result = (unsigned int)((SBase const *)arg1)->getLevel();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBase_getVersion(void * jarg1) {
  unsigned int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  unsigned int result;
  
  arg1 = (SBase *)jarg1; 
  result = (unsigned int)((SBase const *)arg1)->getVersion();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SBase_getTypeCode(void * jarg1) {
  int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (SBase *)jarg1; 
  result = (SBMLTypeCode_t)((SBase const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBase_hasValidLevelVersionNamespaceCombination(void * jarg1) {
  unsigned int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  bool result;
  
  arg1 = (SBase *)jarg1; 
  result = (bool)(arg1)->hasValidLevelVersionNamespaceCombination();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_SBase_getElementName(void * jarg1) {
  wchar_t* jresult ;
  SBase *arg1 = (SBase *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (SBase *)jarg1; 
  result = (std::string *) &((SBase const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_SBase_toSBML(void * jarg1) {
  wchar_t* jresult ;
  SBase *arg1 = (SBase *) 0 ;
  char *result = 0 ;
  
  arg1 = (SBase *)jarg1; 
  result = (char *)(arg1)->toSBML();
  {
    jresult = convertUTF8ToUnicode( result );
    wchar_t* unistr = convertUTF8ToUnicode( result );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  free(result);
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBase_hasRequiredAttributes(void * jarg1) {
  unsigned int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  bool result;
  
  arg1 = (SBase *)jarg1; 
  result = (bool)((SBase const *)arg1)->hasRequiredAttributes();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBase_hasRequiredElements(void * jarg1) {
  unsigned int jresult ;
  SBase *arg1 = (SBase *) 0 ;
  bool result;
  
  arg1 = (SBase *)jarg1; 
  result = (bool)((SBase const *)arg1)->hasRequiredElements();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_SBase_checkMathMLNamespace(void * jarg1, void * jarg2) {
  wchar_t* jresult ;
  SBase *arg1 = (SBase *) 0 ;
  XMLToken arg2 ;
  XMLToken const *argp2 ;
  std::string result;
  
  arg1 = (SBase *)jarg1; 
  argp2 = (XMLToken *)jarg2; 
  if (!argp2) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null XMLToken const", 0);
    return 0;
  }
  arg2 = *argp2; 
  result = (arg1)->checkMathMLNamespace(arg2);
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_ListOf__SWIG_0() {
  void * jresult ;
  ListOf *result = 0 ;
  
  result = (ListOf *)new ListOf();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_ListOf(void * jarg1) {
  ListOf *arg1 = (ListOf *) 0 ;
  
  arg1 = (ListOf *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_ListOf__SWIG_1(void * jarg1) {
  void * jresult ;
  ListOf *arg1 = 0 ;
  ListOf *result = 0 ;
  
  arg1 = (ListOf *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "ListOf const & type is null", 0);
    return 0;
  } 
  result = (ListOf *)new ListOf((ListOf const &)*arg1);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOf_clone(void * jarg1) {
  void * jresult ;
  ListOf *arg1 = (ListOf *) 0 ;
  SBase *result = 0 ;
  
  arg1 = (ListOf *)jarg1; 
  result = (SBase *)((ListOf const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ListOf_append(void * jarg1, void * jarg2) {
  int jresult ;
  ListOf *arg1 = (ListOf *) 0 ;
  SBase *arg2 = (SBase *) 0 ;
  int result;
  
  arg1 = (ListOf *)jarg1; 
  arg2 = (SBase *)jarg2; 
  result = (int)(arg1)->append((SBase const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ListOf_appendAndOwn(void * jarg1, void * jarg2) {
  int jresult ;
  ListOf *arg1 = (ListOf *) 0 ;
  SBase *arg2 = (SBase *) 0 ;
  int result;
  
  arg1 = (ListOf *)jarg1; 
  arg2 = (SBase *)jarg2; 
  result = (int)(arg1)->appendAndOwn(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOf_get__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  ListOf *arg1 = (ListOf *) 0 ;
  unsigned int arg2 ;
  SBase *result = 0 ;
  
  arg1 = (ListOf *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (SBase *)((ListOf const *)arg1)->get(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_ListOf_clear__SWIG_0(void * jarg1, unsigned int jarg2) {
  ListOf *arg1 = (ListOf *) 0 ;
  bool arg2 ;
  
  arg1 = (ListOf *)jarg1; 
  arg2 = jarg2 ? true : false; 
  (arg1)->clear(arg2);
}


SWIGEXPORT void SWIGSTDCALL CSharp_ListOf_clear__SWIG_1(void * jarg1) {
  ListOf *arg1 = (ListOf *) 0 ;
  
  arg1 = (ListOf *)jarg1; 
  (arg1)->clear();
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOf_remove(void * jarg1, long long jarg2) {
  void * jresult ;
  ListOf *arg1 = (ListOf *) 0 ;
  unsigned int arg2 ;
  SBase *result = 0 ;
  
  arg1 = (ListOf *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (SBase *)(arg1)->remove(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ListOf_size(void * jarg1) {
  unsigned int jresult ;
  ListOf *arg1 = (ListOf *) 0 ;
  unsigned int result;
  
  arg1 = (ListOf *)jarg1; 
  result = (unsigned int)((ListOf const *)arg1)->size();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ListOf_getTypeCode(void * jarg1) {
  int jresult ;
  ListOf *arg1 = (ListOf *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (ListOf *)jarg1; 
  result = (SBMLTypeCode_t)((ListOf const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ListOf_getItemTypeCode(void * jarg1) {
  int jresult ;
  ListOf *arg1 = (ListOf *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (ListOf *)jarg1; 
  result = (SBMLTypeCode_t)((ListOf const *)arg1)->getItemTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_ListOf_getElementName(void * jarg1) {
  wchar_t* jresult ;
  ListOf *arg1 = (ListOf *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (ListOf *)jarg1; 
  result = (std::string *) &((ListOf const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Model__SWIG_0(long long jarg1, long long jarg2) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  Model *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  
  try {
    result = (Model *)new Model(arg1,arg2);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Model__SWIG_1(void * jarg1) {
  void * jresult ;
  SBMLNamespaces *arg1 = (SBMLNamespaces *) 0 ;
  Model *result = 0 ;
  
  arg1 = (SBMLNamespaces *)jarg1; 
  
  try {
    result = (Model *)new Model(arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_Model(void * jarg1) {
  Model *arg1 = (Model *) 0 ;
  
  arg1 = (Model *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Model__SWIG_2(void * jarg1) {
  void * jresult ;
  Model *arg1 = 0 ;
  Model *result = 0 ;
  
  arg1 = (Model *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Model const & type is null", 0);
    return 0;
  } 
  
  try {
    result = (Model *)new Model((Model const &)*arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_clone(void * jarg1) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  Model *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (Model *)((Model const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Model_getId(void * jarg1) {
  wchar_t* jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (std::string *) &((Model const *)arg1)->getId();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Model_getName(void * jarg1) {
  wchar_t* jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (std::string *) &((Model const *)arg1)->getName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Model_getSubstanceUnits(void * jarg1) {
  wchar_t* jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (std::string *) &((Model const *)arg1)->getSubstanceUnits();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Model_getTimeUnits(void * jarg1) {
  wchar_t* jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (std::string *) &((Model const *)arg1)->getTimeUnits();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Model_getVolumeUnits(void * jarg1) {
  wchar_t* jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (std::string *) &((Model const *)arg1)->getVolumeUnits();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Model_getAreaUnits(void * jarg1) {
  wchar_t* jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (std::string *) &((Model const *)arg1)->getAreaUnits();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Model_getLengthUnits(void * jarg1) {
  wchar_t* jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (std::string *) &((Model const *)arg1)->getLengthUnits();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Model_getExtentUnits(void * jarg1) {
  wchar_t* jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (std::string *) &((Model const *)arg1)->getExtentUnits();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Model_getConversionFactor(void * jarg1) {
  wchar_t* jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (std::string *) &((Model const *)arg1)->getConversionFactor();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Model_isSetId(void * jarg1) {
  unsigned int jresult ;
  Model *arg1 = (Model *) 0 ;
  bool result;
  
  arg1 = (Model *)jarg1; 
  result = (bool)((Model const *)arg1)->isSetId();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Model_isSetName(void * jarg1) {
  unsigned int jresult ;
  Model *arg1 = (Model *) 0 ;
  bool result;
  
  arg1 = (Model *)jarg1; 
  result = (bool)((Model const *)arg1)->isSetName();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Model_isSetSubstanceUnits(void * jarg1) {
  unsigned int jresult ;
  Model *arg1 = (Model *) 0 ;
  bool result;
  
  arg1 = (Model *)jarg1; 
  result = (bool)((Model const *)arg1)->isSetSubstanceUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Model_isSetTimeUnits(void * jarg1) {
  unsigned int jresult ;
  Model *arg1 = (Model *) 0 ;
  bool result;
  
  arg1 = (Model *)jarg1; 
  result = (bool)((Model const *)arg1)->isSetTimeUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Model_isSetVolumeUnits(void * jarg1) {
  unsigned int jresult ;
  Model *arg1 = (Model *) 0 ;
  bool result;
  
  arg1 = (Model *)jarg1; 
  result = (bool)((Model const *)arg1)->isSetVolumeUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Model_isSetAreaUnits(void * jarg1) {
  unsigned int jresult ;
  Model *arg1 = (Model *) 0 ;
  bool result;
  
  arg1 = (Model *)jarg1; 
  result = (bool)((Model const *)arg1)->isSetAreaUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Model_isSetLengthUnits(void * jarg1) {
  unsigned int jresult ;
  Model *arg1 = (Model *) 0 ;
  bool result;
  
  arg1 = (Model *)jarg1; 
  result = (bool)((Model const *)arg1)->isSetLengthUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Model_isSetExtentUnits(void * jarg1) {
  unsigned int jresult ;
  Model *arg1 = (Model *) 0 ;
  bool result;
  
  arg1 = (Model *)jarg1; 
  result = (bool)((Model const *)arg1)->isSetExtentUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Model_isSetConversionFactor(void * jarg1) {
  unsigned int jresult ;
  Model *arg1 = (Model *) 0 ;
  bool result;
  
  arg1 = (Model *)jarg1; 
  result = (bool)((Model const *)arg1)->isSetConversionFactor();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Model_setId(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (Model *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setId((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Model_setName(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (Model *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setName((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Model_setSubstanceUnits(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (Model *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setSubstanceUnits((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Model_setTimeUnits(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (Model *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setTimeUnits((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Model_setVolumeUnits(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (Model *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setVolumeUnits((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Model_setAreaUnits(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (Model *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setAreaUnits((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Model_setLengthUnits(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (Model *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setLengthUnits((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Model_setExtentUnits(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (Model *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setExtentUnits((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Model_setConversionFactor(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (Model *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setConversionFactor((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Model_unsetId(void * jarg1) {
  int jresult ;
  Model *arg1 = (Model *) 0 ;
  int result;
  
  arg1 = (Model *)jarg1; 
  result = (int)(arg1)->unsetId();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Model_unsetName(void * jarg1) {
  int jresult ;
  Model *arg1 = (Model *) 0 ;
  int result;
  
  arg1 = (Model *)jarg1; 
  result = (int)(arg1)->unsetName();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Model_unsetSubstanceUnits(void * jarg1) {
  int jresult ;
  Model *arg1 = (Model *) 0 ;
  int result;
  
  arg1 = (Model *)jarg1; 
  result = (int)(arg1)->unsetSubstanceUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Model_unsetTimeUnits(void * jarg1) {
  int jresult ;
  Model *arg1 = (Model *) 0 ;
  int result;
  
  arg1 = (Model *)jarg1; 
  result = (int)(arg1)->unsetTimeUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Model_unsetVolumeUnits(void * jarg1) {
  int jresult ;
  Model *arg1 = (Model *) 0 ;
  int result;
  
  arg1 = (Model *)jarg1; 
  result = (int)(arg1)->unsetVolumeUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Model_unsetAreaUnits(void * jarg1) {
  int jresult ;
  Model *arg1 = (Model *) 0 ;
  int result;
  
  arg1 = (Model *)jarg1; 
  result = (int)(arg1)->unsetAreaUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Model_unsetLengthUnits(void * jarg1) {
  int jresult ;
  Model *arg1 = (Model *) 0 ;
  int result;
  
  arg1 = (Model *)jarg1; 
  result = (int)(arg1)->unsetLengthUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Model_unsetExtentUnits(void * jarg1) {
  int jresult ;
  Model *arg1 = (Model *) 0 ;
  int result;
  
  arg1 = (Model *)jarg1; 
  result = (int)(arg1)->unsetExtentUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Model_unsetConversionFactor(void * jarg1) {
  int jresult ;
  Model *arg1 = (Model *) 0 ;
  int result;
  
  arg1 = (Model *)jarg1; 
  result = (int)(arg1)->unsetConversionFactor();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Model_addFunctionDefinition(void * jarg1, void * jarg2) {
  int jresult ;
  Model *arg1 = (Model *) 0 ;
  FunctionDefinition *arg2 = (FunctionDefinition *) 0 ;
  int result;
  
  arg1 = (Model *)jarg1; 
  arg2 = (FunctionDefinition *)jarg2; 
  result = (int)(arg1)->addFunctionDefinition((FunctionDefinition const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Model_addUnitDefinition(void * jarg1, void * jarg2) {
  int jresult ;
  Model *arg1 = (Model *) 0 ;
  UnitDefinition *arg2 = (UnitDefinition *) 0 ;
  int result;
  
  arg1 = (Model *)jarg1; 
  arg2 = (UnitDefinition *)jarg2; 
  result = (int)(arg1)->addUnitDefinition((UnitDefinition const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Model_addCompartmentType(void * jarg1, void * jarg2) {
  int jresult ;
  Model *arg1 = (Model *) 0 ;
  CompartmentType *arg2 = (CompartmentType *) 0 ;
  int result;
  
  arg1 = (Model *)jarg1; 
  arg2 = (CompartmentType *)jarg2; 
  result = (int)(arg1)->addCompartmentType((CompartmentType const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Model_addSpeciesType(void * jarg1, void * jarg2) {
  int jresult ;
  Model *arg1 = (Model *) 0 ;
  SpeciesType *arg2 = (SpeciesType *) 0 ;
  int result;
  
  arg1 = (Model *)jarg1; 
  arg2 = (SpeciesType *)jarg2; 
  result = (int)(arg1)->addSpeciesType((SpeciesType const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Model_addCompartment(void * jarg1, void * jarg2) {
  int jresult ;
  Model *arg1 = (Model *) 0 ;
  Compartment *arg2 = (Compartment *) 0 ;
  int result;
  
  arg1 = (Model *)jarg1; 
  arg2 = (Compartment *)jarg2; 
  result = (int)(arg1)->addCompartment((Compartment const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Model_addSpecies(void * jarg1, void * jarg2) {
  int jresult ;
  Model *arg1 = (Model *) 0 ;
  Species *arg2 = (Species *) 0 ;
  int result;
  
  arg1 = (Model *)jarg1; 
  arg2 = (Species *)jarg2; 
  result = (int)(arg1)->addSpecies((Species const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Model_addParameter(void * jarg1, void * jarg2) {
  int jresult ;
  Model *arg1 = (Model *) 0 ;
  Parameter *arg2 = (Parameter *) 0 ;
  int result;
  
  arg1 = (Model *)jarg1; 
  arg2 = (Parameter *)jarg2; 
  result = (int)(arg1)->addParameter((Parameter const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Model_addInitialAssignment(void * jarg1, void * jarg2) {
  int jresult ;
  Model *arg1 = (Model *) 0 ;
  InitialAssignment *arg2 = (InitialAssignment *) 0 ;
  int result;
  
  arg1 = (Model *)jarg1; 
  arg2 = (InitialAssignment *)jarg2; 
  result = (int)(arg1)->addInitialAssignment((InitialAssignment const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Model_addRule(void * jarg1, void * jarg2) {
  int jresult ;
  Model *arg1 = (Model *) 0 ;
  Rule *arg2 = (Rule *) 0 ;
  int result;
  
  arg1 = (Model *)jarg1; 
  arg2 = (Rule *)jarg2; 
  result = (int)(arg1)->addRule((Rule const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Model_addConstraint(void * jarg1, void * jarg2) {
  int jresult ;
  Model *arg1 = (Model *) 0 ;
  Constraint *arg2 = (Constraint *) 0 ;
  int result;
  
  arg1 = (Model *)jarg1; 
  arg2 = (Constraint *)jarg2; 
  result = (int)(arg1)->addConstraint((Constraint const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Model_addReaction(void * jarg1, void * jarg2) {
  int jresult ;
  Model *arg1 = (Model *) 0 ;
  Reaction *arg2 = (Reaction *) 0 ;
  int result;
  
  arg1 = (Model *)jarg1; 
  arg2 = (Reaction *)jarg2; 
  result = (int)(arg1)->addReaction((Reaction const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Model_addEvent(void * jarg1, void * jarg2) {
  int jresult ;
  Model *arg1 = (Model *) 0 ;
  Event *arg2 = (Event *) 0 ;
  int result;
  
  arg1 = (Model *)jarg1; 
  arg2 = (Event *)jarg2; 
  result = (int)(arg1)->addEvent((Event const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_createFunctionDefinition(void * jarg1) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  FunctionDefinition *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (FunctionDefinition *)(arg1)->createFunctionDefinition();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_createUnitDefinition(void * jarg1) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  UnitDefinition *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (UnitDefinition *)(arg1)->createUnitDefinition();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_createUnit(void * jarg1) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  Unit *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (Unit *)(arg1)->createUnit();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_createCompartmentType(void * jarg1) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  CompartmentType *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (CompartmentType *)(arg1)->createCompartmentType();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_createSpeciesType(void * jarg1) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  SpeciesType *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (SpeciesType *)(arg1)->createSpeciesType();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_createCompartment(void * jarg1) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  Compartment *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (Compartment *)(arg1)->createCompartment();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_createSpecies(void * jarg1) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  Species *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (Species *)(arg1)->createSpecies();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_createParameter(void * jarg1) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  Parameter *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (Parameter *)(arg1)->createParameter();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_createInitialAssignment(void * jarg1) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  InitialAssignment *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (InitialAssignment *)(arg1)->createInitialAssignment();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_createAlgebraicRule(void * jarg1) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  AlgebraicRule *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (AlgebraicRule *)(arg1)->createAlgebraicRule();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_createAssignmentRule(void * jarg1) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  AssignmentRule *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (AssignmentRule *)(arg1)->createAssignmentRule();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_createRateRule(void * jarg1) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  RateRule *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (RateRule *)(arg1)->createRateRule();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_createConstraint(void * jarg1) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  Constraint *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (Constraint *)(arg1)->createConstraint();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_createReaction(void * jarg1) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  Reaction *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (Reaction *)(arg1)->createReaction();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_createReactant(void * jarg1) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  SpeciesReference *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (SpeciesReference *)(arg1)->createReactant();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_createProduct(void * jarg1) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  SpeciesReference *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (SpeciesReference *)(arg1)->createProduct();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_createModifier(void * jarg1) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  ModifierSpeciesReference *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (ModifierSpeciesReference *)(arg1)->createModifier();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_createKineticLaw(void * jarg1) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  KineticLaw *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (KineticLaw *)(arg1)->createKineticLaw();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_createKineticLawParameter(void * jarg1) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  Parameter *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (Parameter *)(arg1)->createKineticLawParameter();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_createKineticLawLocalParameter(void * jarg1) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  LocalParameter *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (LocalParameter *)(arg1)->createKineticLawLocalParameter();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_createEvent(void * jarg1) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  Event *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (Event *)(arg1)->createEvent();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_createEventAssignment(void * jarg1) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  EventAssignment *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (EventAssignment *)(arg1)->createEventAssignment();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_createTrigger(void * jarg1) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  Trigger *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (Trigger *)(arg1)->createTrigger();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_createDelay(void * jarg1) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  Delay *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (Delay *)(arg1)->createDelay();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Model_setAnnotation__SWIG_0(void * jarg1, void * jarg2) {
  int jresult ;
  Model *arg1 = (Model *) 0 ;
  XMLNode *arg2 = (XMLNode *) 0 ;
  int result;
  
  arg1 = (Model *)jarg1; 
  arg2 = (XMLNode *)jarg2; 
  result = (int)(arg1)->setAnnotation((XMLNode const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Model_setAnnotation__SWIG_1(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (Model *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setAnnotation((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Model_appendAnnotation__SWIG_0(void * jarg1, void * jarg2) {
  int jresult ;
  Model *arg1 = (Model *) 0 ;
  XMLNode *arg2 = (XMLNode *) 0 ;
  int result;
  
  arg1 = (Model *)jarg1; 
  arg2 = (XMLNode *)jarg2; 
  result = (int)(arg1)->appendAnnotation((XMLNode const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Model_appendAnnotation__SWIG_1(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (Model *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->appendAnnotation((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_getListOfFunctionDefinitions__SWIG_0(void * jarg1) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  ListOfFunctionDefinitions *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (ListOfFunctionDefinitions *)((Model const *)arg1)->getListOfFunctionDefinitions();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_getListOfUnitDefinitions__SWIG_0(void * jarg1) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  ListOfUnitDefinitions *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (ListOfUnitDefinitions *)((Model const *)arg1)->getListOfUnitDefinitions();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_getListOfCompartmentTypes__SWIG_0(void * jarg1) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  ListOfCompartmentTypes *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (ListOfCompartmentTypes *)((Model const *)arg1)->getListOfCompartmentTypes();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_getListOfSpeciesTypes__SWIG_0(void * jarg1) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  ListOfSpeciesTypes *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (ListOfSpeciesTypes *)((Model const *)arg1)->getListOfSpeciesTypes();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_getListOfCompartments__SWIG_0(void * jarg1) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  ListOfCompartments *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (ListOfCompartments *)((Model const *)arg1)->getListOfCompartments();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_getListOfSpecies__SWIG_0(void * jarg1) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  ListOfSpecies *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (ListOfSpecies *)((Model const *)arg1)->getListOfSpecies();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_getListOfParameters__SWIG_0(void * jarg1) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  ListOfParameters *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (ListOfParameters *)((Model const *)arg1)->getListOfParameters();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_getListOfInitialAssignments__SWIG_0(void * jarg1) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  ListOfInitialAssignments *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (ListOfInitialAssignments *)((Model const *)arg1)->getListOfInitialAssignments();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_getListOfRules__SWIG_0(void * jarg1) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  ListOfRules *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (ListOfRules *)((Model const *)arg1)->getListOfRules();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_getListOfConstraints__SWIG_0(void * jarg1) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  ListOfConstraints *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (ListOfConstraints *)((Model const *)arg1)->getListOfConstraints();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_getListOfReactions__SWIG_0(void * jarg1) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  ListOfReactions *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (ListOfReactions *)((Model const *)arg1)->getListOfReactions();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_getListOfEvents__SWIG_0(void * jarg1) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  ListOfEvents *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (ListOfEvents *)((Model const *)arg1)->getListOfEvents();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_getFunctionDefinition__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  unsigned int arg2 ;
  FunctionDefinition *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (FunctionDefinition *)((Model const *)arg1)->getFunctionDefinition(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_getFunctionDefinition__SWIG_2(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  FunctionDefinition *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (FunctionDefinition *)((Model const *)arg1)->getFunctionDefinition((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_getUnitDefinition__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  unsigned int arg2 ;
  UnitDefinition *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (UnitDefinition *)((Model const *)arg1)->getUnitDefinition(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_getUnitDefinition__SWIG_2(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  UnitDefinition *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (UnitDefinition *)((Model const *)arg1)->getUnitDefinition((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_getCompartmentType__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  unsigned int arg2 ;
  CompartmentType *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (CompartmentType *)((Model const *)arg1)->getCompartmentType(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_getCompartmentType__SWIG_2(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  CompartmentType *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (CompartmentType *)((Model const *)arg1)->getCompartmentType((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_getSpeciesType__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  unsigned int arg2 ;
  SpeciesType *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (SpeciesType *)((Model const *)arg1)->getSpeciesType(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_getSpeciesType__SWIG_2(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  SpeciesType *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (SpeciesType *)((Model const *)arg1)->getSpeciesType((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_getCompartment__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  unsigned int arg2 ;
  Compartment *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (Compartment *)((Model const *)arg1)->getCompartment(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_getCompartment__SWIG_2(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  Compartment *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (Compartment *)((Model const *)arg1)->getCompartment((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_getSpecies__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  unsigned int arg2 ;
  Species *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (Species *)((Model const *)arg1)->getSpecies(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_getSpecies__SWIG_2(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  Species *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (Species *)((Model const *)arg1)->getSpecies((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_getParameter__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  unsigned int arg2 ;
  Parameter *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (Parameter *)((Model const *)arg1)->getParameter(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_getParameter__SWIG_2(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  Parameter *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (Parameter *)((Model const *)arg1)->getParameter((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_getInitialAssignment__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  unsigned int arg2 ;
  InitialAssignment *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (InitialAssignment *)((Model const *)arg1)->getInitialAssignment(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_getInitialAssignment__SWIG_2(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  InitialAssignment *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (InitialAssignment *)((Model const *)arg1)->getInitialAssignment((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_getRule__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  unsigned int arg2 ;
  Rule *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (Rule *)((Model const *)arg1)->getRule(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_getRule__SWIG_2(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  Rule *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (Rule *)((Model const *)arg1)->getRule((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_getConstraint__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  unsigned int arg2 ;
  Constraint *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (Constraint *)((Model const *)arg1)->getConstraint(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_getReaction__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  unsigned int arg2 ;
  Reaction *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (Reaction *)((Model const *)arg1)->getReaction(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_getReaction__SWIG_2(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  Reaction *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (Reaction *)((Model const *)arg1)->getReaction((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_getSpeciesReference__SWIG_0(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  SpeciesReference *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (SpeciesReference *)(arg1)->getSpeciesReference((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_getEvent__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  unsigned int arg2 ;
  Event *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (Event *)((Model const *)arg1)->getEvent(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_getEvent__SWIG_2(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  Event *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (Event *)((Model const *)arg1)->getEvent((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Model_getNumFunctionDefinitions(void * jarg1) {
  unsigned int jresult ;
  Model *arg1 = (Model *) 0 ;
  unsigned int result;
  
  arg1 = (Model *)jarg1; 
  result = (unsigned int)((Model const *)arg1)->getNumFunctionDefinitions();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Model_getNumUnitDefinitions(void * jarg1) {
  unsigned int jresult ;
  Model *arg1 = (Model *) 0 ;
  unsigned int result;
  
  arg1 = (Model *)jarg1; 
  result = (unsigned int)((Model const *)arg1)->getNumUnitDefinitions();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Model_getNumCompartmentTypes(void * jarg1) {
  unsigned int jresult ;
  Model *arg1 = (Model *) 0 ;
  unsigned int result;
  
  arg1 = (Model *)jarg1; 
  result = (unsigned int)((Model const *)arg1)->getNumCompartmentTypes();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Model_getNumSpeciesTypes(void * jarg1) {
  unsigned int jresult ;
  Model *arg1 = (Model *) 0 ;
  unsigned int result;
  
  arg1 = (Model *)jarg1; 
  result = (unsigned int)((Model const *)arg1)->getNumSpeciesTypes();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Model_getNumCompartments(void * jarg1) {
  unsigned int jresult ;
  Model *arg1 = (Model *) 0 ;
  unsigned int result;
  
  arg1 = (Model *)jarg1; 
  result = (unsigned int)((Model const *)arg1)->getNumCompartments();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Model_getNumSpecies(void * jarg1) {
  unsigned int jresult ;
  Model *arg1 = (Model *) 0 ;
  unsigned int result;
  
  arg1 = (Model *)jarg1; 
  result = (unsigned int)((Model const *)arg1)->getNumSpecies();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Model_getNumSpeciesWithBoundaryCondition(void * jarg1) {
  unsigned int jresult ;
  Model *arg1 = (Model *) 0 ;
  unsigned int result;
  
  arg1 = (Model *)jarg1; 
  result = (unsigned int)((Model const *)arg1)->getNumSpeciesWithBoundaryCondition();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Model_getNumParameters(void * jarg1) {
  unsigned int jresult ;
  Model *arg1 = (Model *) 0 ;
  unsigned int result;
  
  arg1 = (Model *)jarg1; 
  result = (unsigned int)((Model const *)arg1)->getNumParameters();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Model_getNumInitialAssignments(void * jarg1) {
  unsigned int jresult ;
  Model *arg1 = (Model *) 0 ;
  unsigned int result;
  
  arg1 = (Model *)jarg1; 
  result = (unsigned int)((Model const *)arg1)->getNumInitialAssignments();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Model_getNumRules(void * jarg1) {
  unsigned int jresult ;
  Model *arg1 = (Model *) 0 ;
  unsigned int result;
  
  arg1 = (Model *)jarg1; 
  result = (unsigned int)((Model const *)arg1)->getNumRules();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Model_getNumConstraints(void * jarg1) {
  unsigned int jresult ;
  Model *arg1 = (Model *) 0 ;
  unsigned int result;
  
  arg1 = (Model *)jarg1; 
  result = (unsigned int)((Model const *)arg1)->getNumConstraints();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Model_getNumReactions(void * jarg1) {
  unsigned int jresult ;
  Model *arg1 = (Model *) 0 ;
  unsigned int result;
  
  arg1 = (Model *)jarg1; 
  result = (unsigned int)((Model const *)arg1)->getNumReactions();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Model_getNumEvents(void * jarg1) {
  unsigned int jresult ;
  Model *arg1 = (Model *) 0 ;
  unsigned int result;
  
  arg1 = (Model *)jarg1; 
  result = (unsigned int)((Model const *)arg1)->getNumEvents();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_Model_convertL1ToL2(void * jarg1) {
  Model *arg1 = (Model *) 0 ;
  
  arg1 = (Model *)jarg1; 
  (arg1)->convertL1ToL2();
}


SWIGEXPORT void SWIGSTDCALL CSharp_Model_convertL1ToL3(void * jarg1) {
  Model *arg1 = (Model *) 0 ;
  
  arg1 = (Model *)jarg1; 
  (arg1)->convertL1ToL3();
}


SWIGEXPORT void SWIGSTDCALL CSharp_Model_convertL2ToL3(void * jarg1) {
  Model *arg1 = (Model *) 0 ;
  
  arg1 = (Model *)jarg1; 
  (arg1)->convertL2ToL3();
}


SWIGEXPORT void SWIGSTDCALL CSharp_Model_convertL2ToL1__SWIG_0(void * jarg1, unsigned int jarg2) {
  Model *arg1 = (Model *) 0 ;
  bool arg2 ;
  
  arg1 = (Model *)jarg1; 
  arg2 = jarg2 ? true : false; 
  (arg1)->convertL2ToL1(arg2);
}


SWIGEXPORT void SWIGSTDCALL CSharp_Model_convertL2ToL1__SWIG_1(void * jarg1) {
  Model *arg1 = (Model *) 0 ;
  
  arg1 = (Model *)jarg1; 
  (arg1)->convertL2ToL1();
}


SWIGEXPORT void SWIGSTDCALL CSharp_Model_convertL3ToL1(void * jarg1) {
  Model *arg1 = (Model *) 0 ;
  
  arg1 = (Model *)jarg1; 
  (arg1)->convertL3ToL1();
}


SWIGEXPORT void SWIGSTDCALL CSharp_Model_convertL3ToL2(void * jarg1) {
  Model *arg1 = (Model *) 0 ;
  
  arg1 = (Model *)jarg1; 
  (arg1)->convertL3ToL2();
}


SWIGEXPORT void SWIGSTDCALL CSharp_Model_addModifiers(void * jarg1) {
  Model *arg1 = (Model *) 0 ;
  
  arg1 = (Model *)jarg1; 
  (arg1)->addModifiers();
}


SWIGEXPORT void SWIGSTDCALL CSharp_Model_addConstantAttribute(void * jarg1) {
  Model *arg1 = (Model *) 0 ;
  
  arg1 = (Model *)jarg1; 
  (arg1)->addConstantAttribute();
}


SWIGEXPORT void SWIGSTDCALL CSharp_Model_setSpatialDimensions__SWIG_0(void * jarg1, double jarg2) {
  Model *arg1 = (Model *) 0 ;
  double arg2 ;
  
  arg1 = (Model *)jarg1; 
  arg2 = (double)jarg2; 
  (arg1)->setSpatialDimensions(arg2);
}


SWIGEXPORT void SWIGSTDCALL CSharp_Model_setSpatialDimensions__SWIG_1(void * jarg1) {
  Model *arg1 = (Model *) 0 ;
  
  arg1 = (Model *)jarg1; 
  (arg1)->setSpatialDimensions();
}


SWIGEXPORT void SWIGSTDCALL CSharp_Model_addDefinitionsForDefaultUnits(void * jarg1) {
  Model *arg1 = (Model *) 0 ;
  
  arg1 = (Model *)jarg1; 
  (arg1)->addDefinitionsForDefaultUnits();
}


SWIGEXPORT void SWIGSTDCALL CSharp_Model_convertParametersToLocals(void * jarg1, long long jarg2, long long jarg3) {
  Model *arg1 = (Model *) 0 ;
  unsigned int arg2 ;
  unsigned int arg3 ;
  
  arg1 = (Model *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  {
    arg3 = (unsigned int)jarg3;  
  }
  (arg1)->convertParametersToLocals(arg2,arg3);
}


SWIGEXPORT void SWIGSTDCALL CSharp_Model_setSpeciesReferenceConstantValueAndStoichiometry(void * jarg1) {
  Model *arg1 = (Model *) 0 ;
  
  arg1 = (Model *)jarg1; 
  (arg1)->setSpeciesReferenceConstantValueAndStoichiometry();
}


SWIGEXPORT void SWIGSTDCALL CSharp_Model_removeParameterRuleUnits(void * jarg1) {
  Model *arg1 = (Model *) 0 ;
  
  arg1 = (Model *)jarg1; 
  (arg1)->removeParameterRuleUnits();
}


SWIGEXPORT void SWIGSTDCALL CSharp_Model_convertStoichiometryMath(void * jarg1) {
  Model *arg1 = (Model *) 0 ;
  
  arg1 = (Model *)jarg1; 
  (arg1)->convertStoichiometryMath();
}


SWIGEXPORT void SWIGSTDCALL CSharp_Model_assignRequiredValues(void * jarg1) {
  Model *arg1 = (Model *) 0 ;
  
  arg1 = (Model *)jarg1; 
  (arg1)->assignRequiredValues();
}


SWIGEXPORT void SWIGSTDCALL CSharp_Model_dealWithModelUnits(void * jarg1) {
  Model *arg1 = (Model *) 0 ;
  
  arg1 = (Model *)jarg1; 
  (arg1)->dealWithModelUnits();
}


SWIGEXPORT void SWIGSTDCALL CSharp_Model_dealWithStoichiometry(void * jarg1) {
  Model *arg1 = (Model *) 0 ;
  
  arg1 = (Model *)jarg1; 
  (arg1)->dealWithStoichiometry();
}


SWIGEXPORT int SWIGSTDCALL CSharp_Model_getTypeCode(void * jarg1) {
  int jresult ;
  Model *arg1 = (Model *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (Model *)jarg1; 
  result = (SBMLTypeCode_t)((Model const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Model_getElementName(void * jarg1) {
  wchar_t* jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  result = (std::string *) &((Model const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_Model_populateListFormulaUnitsData(void * jarg1) {
  Model *arg1 = (Model *) 0 ;
  
  arg1 = (Model *)jarg1; 
  (arg1)->populateListFormulaUnitsData();
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Model_isPopulatedListFormulaUnitsData(void * jarg1) {
  unsigned int jresult ;
  Model *arg1 = (Model *) 0 ;
  bool result;
  
  arg1 = (Model *)jarg1; 
  result = (bool)(arg1)->isPopulatedListFormulaUnitsData();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Model_hasRequiredElements(void * jarg1) {
  unsigned int jresult ;
  Model *arg1 = (Model *) 0 ;
  bool result;
  
  arg1 = (Model *)jarg1; 
  result = (bool)((Model const *)arg1)->hasRequiredElements();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_removeFunctionDefinition__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  unsigned int arg2 ;
  FunctionDefinition *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (FunctionDefinition *)(arg1)->removeFunctionDefinition(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_removeFunctionDefinition__SWIG_1(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  FunctionDefinition *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (FunctionDefinition *)(arg1)->removeFunctionDefinition((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_removeUnitDefinition__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  unsigned int arg2 ;
  UnitDefinition *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (UnitDefinition *)(arg1)->removeUnitDefinition(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_removeUnitDefinition__SWIG_1(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  UnitDefinition *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (UnitDefinition *)(arg1)->removeUnitDefinition((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_removeCompartmentType__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  unsigned int arg2 ;
  CompartmentType *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (CompartmentType *)(arg1)->removeCompartmentType(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_removeCompartmentType__SWIG_1(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  CompartmentType *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (CompartmentType *)(arg1)->removeCompartmentType((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_removeSpeciesType__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  unsigned int arg2 ;
  SpeciesType *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (SpeciesType *)(arg1)->removeSpeciesType(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_removeSpeciesType__SWIG_1(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  SpeciesType *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (SpeciesType *)(arg1)->removeSpeciesType((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_removeCompartment__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  unsigned int arg2 ;
  Compartment *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (Compartment *)(arg1)->removeCompartment(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_removeCompartment__SWIG_1(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  Compartment *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (Compartment *)(arg1)->removeCompartment((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_removeSpecies__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  unsigned int arg2 ;
  Species *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (Species *)(arg1)->removeSpecies(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_removeSpecies__SWIG_1(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  Species *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (Species *)(arg1)->removeSpecies((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_removeParameter__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  unsigned int arg2 ;
  Parameter *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (Parameter *)(arg1)->removeParameter(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_removeParameter__SWIG_1(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  Parameter *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (Parameter *)(arg1)->removeParameter((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_removeInitialAssignment__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  unsigned int arg2 ;
  InitialAssignment *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (InitialAssignment *)(arg1)->removeInitialAssignment(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_removeInitialAssignment__SWIG_1(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  InitialAssignment *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (InitialAssignment *)(arg1)->removeInitialAssignment((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_removeRule__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  unsigned int arg2 ;
  Rule *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (Rule *)(arg1)->removeRule(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_removeRule__SWIG_1(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  Rule *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (Rule *)(arg1)->removeRule((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_removeConstraint(void * jarg1, long long jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  unsigned int arg2 ;
  Constraint *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (Constraint *)(arg1)->removeConstraint(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_removeReaction__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  unsigned int arg2 ;
  Reaction *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (Reaction *)(arg1)->removeReaction(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_removeReaction__SWIG_1(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  Reaction *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (Reaction *)(arg1)->removeReaction((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_removeEvent__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  unsigned int arg2 ;
  Event *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (Event *)(arg1)->removeEvent(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Model_removeEvent__SWIG_1(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  Model *arg1 = (Model *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  Event *result = 0 ;
  
  arg1 = (Model *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (Event *)(arg1)->removeEvent((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBMLDocument_getDefaultLevel() {
  unsigned int jresult ;
  unsigned int result;
  
  result = (unsigned int)SBMLDocument::getDefaultLevel();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBMLDocument_getDefaultVersion() {
  unsigned int jresult ;
  unsigned int result;
  
  result = (unsigned int)SBMLDocument::getDefaultVersion();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBMLDocument__SWIG_0(long long jarg1, long long jarg2) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  SBMLDocument *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  
  try {
    result = (SBMLDocument *)new SBMLDocument(arg1,arg2);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBMLDocument__SWIG_1(long long jarg1) {
  void * jresult ;
  unsigned int arg1 ;
  SBMLDocument *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  
  try {
    result = (SBMLDocument *)new SBMLDocument(arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBMLDocument__SWIG_2() {
  void * jresult ;
  SBMLDocument *result = 0 ;
  
  
  try {
    result = (SBMLDocument *)new SBMLDocument();
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBMLDocument__SWIG_3(void * jarg1) {
  void * jresult ;
  SBMLNamespaces *arg1 = (SBMLNamespaces *) 0 ;
  SBMLDocument *result = 0 ;
  
  arg1 = (SBMLNamespaces *)jarg1; 
  
  try {
    result = (SBMLDocument *)new SBMLDocument(arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBMLDocument(void * jarg1) {
  SBMLDocument *arg1 = (SBMLDocument *) 0 ;
  
  arg1 = (SBMLDocument *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBMLDocument__SWIG_4(void * jarg1) {
  void * jresult ;
  SBMLDocument *arg1 = 0 ;
  SBMLDocument *result = 0 ;
  
  arg1 = (SBMLDocument *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "SBMLDocument const & type is null", 0);
    return 0;
  } 
  
  try {
    result = (SBMLDocument *)new SBMLDocument((SBMLDocument const &)*arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_SBMLDocument_clone(void * jarg1) {
  void * jresult ;
  SBMLDocument *arg1 = (SBMLDocument *) 0 ;
  SBMLDocument *result = 0 ;
  
  arg1 = (SBMLDocument *)jarg1; 
  result = (SBMLDocument *)((SBMLDocument const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_SBMLDocument_getModel__SWIG_0(void * jarg1) {
  void * jresult ;
  SBMLDocument *arg1 = (SBMLDocument *) 0 ;
  Model *result = 0 ;
  
  arg1 = (SBMLDocument *)jarg1; 
  result = (Model *)((SBMLDocument const *)arg1)->getModel();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBMLDocument_expandFunctionDefinitions(void * jarg1) {
  unsigned int jresult ;
  SBMLDocument *arg1 = (SBMLDocument *) 0 ;
  bool result;
  
  arg1 = (SBMLDocument *)jarg1; 
  result = (bool)(arg1)->expandFunctionDefinitions();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBMLDocument_expandInitialAssignments(void * jarg1) {
  unsigned int jresult ;
  SBMLDocument *arg1 = (SBMLDocument *) 0 ;
  bool result;
  
  arg1 = (SBMLDocument *)jarg1; 
  result = (bool)(arg1)->expandInitialAssignments();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBMLDocument_setLevelAndVersion__SWIG_0(void * jarg1, long long jarg2, long long jarg3, unsigned int jarg4) {
  unsigned int jresult ;
  SBMLDocument *arg1 = (SBMLDocument *) 0 ;
  unsigned int arg2 ;
  unsigned int arg3 ;
  bool arg4 ;
  bool result;
  
  arg1 = (SBMLDocument *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  {
    arg3 = (unsigned int)jarg3;  
  }
  arg4 = jarg4 ? true : false; 
  result = (bool)(arg1)->setLevelAndVersion(arg2,arg3,arg4);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBMLDocument_setLevelAndVersion__SWIG_1(void * jarg1, long long jarg2, long long jarg3) {
  unsigned int jresult ;
  SBMLDocument *arg1 = (SBMLDocument *) 0 ;
  unsigned int arg2 ;
  unsigned int arg3 ;
  bool result;
  
  arg1 = (SBMLDocument *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  {
    arg3 = (unsigned int)jarg3;  
  }
  result = (bool)(arg1)->setLevelAndVersion(arg2,arg3);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SBMLDocument_setModel(void * jarg1, void * jarg2) {
  int jresult ;
  SBMLDocument *arg1 = (SBMLDocument *) 0 ;
  Model *arg2 = (Model *) 0 ;
  int result;
  
  arg1 = (SBMLDocument *)jarg1; 
  arg2 = (Model *)jarg2; 
  result = (int)(arg1)->setModel((Model const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_SBMLDocument_createModel__SWIG_0(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  SBMLDocument *arg1 = (SBMLDocument *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  Model *result = 0 ;
  
  arg1 = (SBMLDocument *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (Model *)(arg1)->createModel((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_SBMLDocument_createModel__SWIG_1(void * jarg1) {
  void * jresult ;
  SBMLDocument *arg1 = (SBMLDocument *) 0 ;
  Model *result = 0 ;
  
  arg1 = (SBMLDocument *)jarg1; 
  result = (Model *)(arg1)->createModel();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_SBMLDocument_setConsistencyChecks(void * jarg1, int jarg2, unsigned int jarg3) {
  SBMLDocument *arg1 = (SBMLDocument *) 0 ;
  SBMLErrorCategory_t arg2 ;
  bool arg3 ;
  
  arg1 = (SBMLDocument *)jarg1; 
  arg2 = (SBMLErrorCategory_t)jarg2; 
  arg3 = jarg3 ? true : false; 
  (arg1)->setConsistencyChecks(arg2,arg3);
}


SWIGEXPORT void SWIGSTDCALL CSharp_SBMLDocument_setConsistencyChecksForConversion(void * jarg1, int jarg2, unsigned int jarg3) {
  SBMLDocument *arg1 = (SBMLDocument *) 0 ;
  SBMLErrorCategory_t arg2 ;
  bool arg3 ;
  
  arg1 = (SBMLDocument *)jarg1; 
  arg2 = (SBMLErrorCategory_t)jarg2; 
  arg3 = jarg3 ? true : false; 
  (arg1)->setConsistencyChecksForConversion(arg2,arg3);
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBMLDocument_checkConsistency(void * jarg1) {
  unsigned int jresult ;
  SBMLDocument *arg1 = (SBMLDocument *) 0 ;
  unsigned int result;
  
  arg1 = (SBMLDocument *)jarg1; 
  result = (unsigned int)(arg1)->checkConsistency();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBMLDocument_checkInternalConsistency(void * jarg1) {
  unsigned int jresult ;
  SBMLDocument *arg1 = (SBMLDocument *) 0 ;
  unsigned int result;
  
  arg1 = (SBMLDocument *)jarg1; 
  result = (unsigned int)(arg1)->checkInternalConsistency();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBMLDocument_checkL1Compatibility(void * jarg1) {
  unsigned int jresult ;
  SBMLDocument *arg1 = (SBMLDocument *) 0 ;
  unsigned int result;
  
  arg1 = (SBMLDocument *)jarg1; 
  result = (unsigned int)(arg1)->checkL1Compatibility();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBMLDocument_checkL2v1Compatibility(void * jarg1) {
  unsigned int jresult ;
  SBMLDocument *arg1 = (SBMLDocument *) 0 ;
  unsigned int result;
  
  arg1 = (SBMLDocument *)jarg1; 
  result = (unsigned int)(arg1)->checkL2v1Compatibility();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBMLDocument_checkL2v2Compatibility(void * jarg1) {
  unsigned int jresult ;
  SBMLDocument *arg1 = (SBMLDocument *) 0 ;
  unsigned int result;
  
  arg1 = (SBMLDocument *)jarg1; 
  result = (unsigned int)(arg1)->checkL2v2Compatibility();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBMLDocument_checkL2v3Compatibility(void * jarg1) {
  unsigned int jresult ;
  SBMLDocument *arg1 = (SBMLDocument *) 0 ;
  unsigned int result;
  
  arg1 = (SBMLDocument *)jarg1; 
  result = (unsigned int)(arg1)->checkL2v3Compatibility();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBMLDocument_checkL2v4Compatibility(void * jarg1) {
  unsigned int jresult ;
  SBMLDocument *arg1 = (SBMLDocument *) 0 ;
  unsigned int result;
  
  arg1 = (SBMLDocument *)jarg1; 
  result = (unsigned int)(arg1)->checkL2v4Compatibility();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBMLDocument_checkL3v1Compatibility(void * jarg1) {
  unsigned int jresult ;
  SBMLDocument *arg1 = (SBMLDocument *) 0 ;
  unsigned int result;
  
  arg1 = (SBMLDocument *)jarg1; 
  result = (unsigned int)(arg1)->checkL3v1Compatibility();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_SBMLDocument_getError(void * jarg1, long long jarg2) {
  void * jresult ;
  SBMLDocument *arg1 = (SBMLDocument *) 0 ;
  unsigned int arg2 ;
  SBMLError *result = 0 ;
  
  arg1 = (SBMLDocument *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (SBMLError *)((SBMLDocument const *)arg1)->getError(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBMLDocument_getNumErrors(void * jarg1) {
  unsigned int jresult ;
  SBMLDocument *arg1 = (SBMLDocument *) 0 ;
  unsigned int result;
  
  arg1 = (SBMLDocument *)jarg1; 
  result = (unsigned int)((SBMLDocument const *)arg1)->getNumErrors();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_SBMLDocument_printErrors__SWIG_0(void * jarg1, void * jarg2) {
  SBMLDocument *arg1 = (SBMLDocument *) 0 ;
  std::ostream *arg2 = 0 ;
  
  arg1 = (SBMLDocument *)jarg1; 
  arg2 = (std::ostream *)jarg2;
  if (!arg2) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "std::ostream & type is null", 0);
    return ;
  } 
  ((SBMLDocument const *)arg1)->printErrors(*arg2);
}


SWIGEXPORT void SWIGSTDCALL CSharp_SBMLDocument_printErrors__SWIG_1(void * jarg1) {
  SBMLDocument *arg1 = (SBMLDocument *) 0 ;
  
  arg1 = (SBMLDocument *)jarg1; 
  ((SBMLDocument const *)arg1)->printErrors();
}


SWIGEXPORT int SWIGSTDCALL CSharp_SBMLDocument_getTypeCode(void * jarg1) {
  int jresult ;
  SBMLDocument *arg1 = (SBMLDocument *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (SBMLDocument *)jarg1; 
  result = (SBMLTypeCode_t)((SBMLDocument const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_SBMLDocument_getElementName(void * jarg1) {
  wchar_t* jresult ;
  SBMLDocument *arg1 = (SBMLDocument *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (SBMLDocument *)jarg1; 
  result = (std::string *) &((SBMLDocument const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_SBMLDocument_getErrorLog(void * jarg1) {
  void * jresult ;
  SBMLDocument *arg1 = (SBMLDocument *) 0 ;
  SBMLErrorLog *result = 0 ;
  
  arg1 = (SBMLDocument *)jarg1; 
  result = (SBMLErrorLog *)(arg1)->getErrorLog();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_SBMLDocument_getNamespaces(void * jarg1) {
  void * jresult ;
  SBMLDocument *arg1 = (SBMLDocument *) 0 ;
  XMLNamespaces *result = 0 ;
  
  arg1 = (SBMLDocument *)jarg1; 
  result = (XMLNamespaces *)((SBMLDocument const *)arg1)->getNamespaces();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_FunctionDefinition__SWIG_0(long long jarg1, long long jarg2) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  FunctionDefinition *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  
  try {
    result = (FunctionDefinition *)new FunctionDefinition(arg1,arg2);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_FunctionDefinition__SWIG_1(void * jarg1) {
  void * jresult ;
  SBMLNamespaces *arg1 = (SBMLNamespaces *) 0 ;
  FunctionDefinition *result = 0 ;
  
  arg1 = (SBMLNamespaces *)jarg1; 
  
  try {
    result = (FunctionDefinition *)new FunctionDefinition(arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_FunctionDefinition(void * jarg1) {
  FunctionDefinition *arg1 = (FunctionDefinition *) 0 ;
  
  arg1 = (FunctionDefinition *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_FunctionDefinition__SWIG_2(void * jarg1) {
  void * jresult ;
  FunctionDefinition *arg1 = 0 ;
  FunctionDefinition *result = 0 ;
  
  arg1 = (FunctionDefinition *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "FunctionDefinition const & type is null", 0);
    return 0;
  } 
  
  try {
    result = (FunctionDefinition *)new FunctionDefinition((FunctionDefinition const &)*arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_FunctionDefinition_clone(void * jarg1) {
  void * jresult ;
  FunctionDefinition *arg1 = (FunctionDefinition *) 0 ;
  FunctionDefinition *result = 0 ;
  
  arg1 = (FunctionDefinition *)jarg1; 
  result = (FunctionDefinition *)((FunctionDefinition const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_FunctionDefinition_getId(void * jarg1) {
  wchar_t* jresult ;
  FunctionDefinition *arg1 = (FunctionDefinition *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (FunctionDefinition *)jarg1; 
  result = (std::string *) &((FunctionDefinition const *)arg1)->getId();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_FunctionDefinition_getName(void * jarg1) {
  wchar_t* jresult ;
  FunctionDefinition *arg1 = (FunctionDefinition *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (FunctionDefinition *)jarg1; 
  result = (std::string *) &((FunctionDefinition const *)arg1)->getName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_FunctionDefinition_getMath(void * jarg1) {
  void * jresult ;
  FunctionDefinition *arg1 = (FunctionDefinition *) 0 ;
  ASTNode *result = 0 ;
  
  arg1 = (FunctionDefinition *)jarg1; 
  result = (ASTNode *)((FunctionDefinition const *)arg1)->getMath();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_FunctionDefinition_isSetId(void * jarg1) {
  unsigned int jresult ;
  FunctionDefinition *arg1 = (FunctionDefinition *) 0 ;
  bool result;
  
  arg1 = (FunctionDefinition *)jarg1; 
  result = (bool)((FunctionDefinition const *)arg1)->isSetId();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_FunctionDefinition_isSetName(void * jarg1) {
  unsigned int jresult ;
  FunctionDefinition *arg1 = (FunctionDefinition *) 0 ;
  bool result;
  
  arg1 = (FunctionDefinition *)jarg1; 
  result = (bool)((FunctionDefinition const *)arg1)->isSetName();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_FunctionDefinition_isSetMath(void * jarg1) {
  unsigned int jresult ;
  FunctionDefinition *arg1 = (FunctionDefinition *) 0 ;
  bool result;
  
  arg1 = (FunctionDefinition *)jarg1; 
  result = (bool)((FunctionDefinition const *)arg1)->isSetMath();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_FunctionDefinition_setId(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  FunctionDefinition *arg1 = (FunctionDefinition *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (FunctionDefinition *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setId((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_FunctionDefinition_setName(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  FunctionDefinition *arg1 = (FunctionDefinition *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (FunctionDefinition *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setName((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_FunctionDefinition_setMath(void * jarg1, void * jarg2) {
  int jresult ;
  FunctionDefinition *arg1 = (FunctionDefinition *) 0 ;
  ASTNode *arg2 = (ASTNode *) 0 ;
  int result;
  
  arg1 = (FunctionDefinition *)jarg1; 
  arg2 = (ASTNode *)jarg2; 
  result = (int)(arg1)->setMath((ASTNode const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_FunctionDefinition_unsetName(void * jarg1) {
  int jresult ;
  FunctionDefinition *arg1 = (FunctionDefinition *) 0 ;
  int result;
  
  arg1 = (FunctionDefinition *)jarg1; 
  result = (int)(arg1)->unsetName();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_FunctionDefinition_getArgument__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  FunctionDefinition *arg1 = (FunctionDefinition *) 0 ;
  unsigned int arg2 ;
  ASTNode *result = 0 ;
  
  arg1 = (FunctionDefinition *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (ASTNode *)((FunctionDefinition const *)arg1)->getArgument(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_FunctionDefinition_getArgument__SWIG_1(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  FunctionDefinition *arg1 = (FunctionDefinition *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  ASTNode *result = 0 ;
  
  arg1 = (FunctionDefinition *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (ASTNode *)((FunctionDefinition const *)arg1)->getArgument((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_FunctionDefinition_getBody__SWIG_0(void * jarg1) {
  void * jresult ;
  FunctionDefinition *arg1 = (FunctionDefinition *) 0 ;
  ASTNode *result = 0 ;
  
  arg1 = (FunctionDefinition *)jarg1; 
  result = (ASTNode *)((FunctionDefinition const *)arg1)->getBody();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_FunctionDefinition_getNumArguments(void * jarg1) {
  unsigned int jresult ;
  FunctionDefinition *arg1 = (FunctionDefinition *) 0 ;
  unsigned int result;
  
  arg1 = (FunctionDefinition *)jarg1; 
  result = (unsigned int)((FunctionDefinition const *)arg1)->getNumArguments();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_FunctionDefinition_getTypeCode(void * jarg1) {
  int jresult ;
  FunctionDefinition *arg1 = (FunctionDefinition *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (FunctionDefinition *)jarg1; 
  result = (SBMLTypeCode_t)((FunctionDefinition const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_FunctionDefinition_getElementName(void * jarg1) {
  wchar_t* jresult ;
  FunctionDefinition *arg1 = (FunctionDefinition *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (FunctionDefinition *)jarg1; 
  result = (std::string *) &((FunctionDefinition const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_FunctionDefinition_hasRequiredAttributes(void * jarg1) {
  unsigned int jresult ;
  FunctionDefinition *arg1 = (FunctionDefinition *) 0 ;
  bool result;
  
  arg1 = (FunctionDefinition *)jarg1; 
  result = (bool)((FunctionDefinition const *)arg1)->hasRequiredAttributes();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_FunctionDefinition_hasRequiredElements(void * jarg1) {
  unsigned int jresult ;
  FunctionDefinition *arg1 = (FunctionDefinition *) 0 ;
  bool result;
  
  arg1 = (FunctionDefinition *)jarg1; 
  result = (bool)((FunctionDefinition const *)arg1)->hasRequiredElements();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfFunctionDefinitions_clone(void * jarg1) {
  void * jresult ;
  ListOfFunctionDefinitions *arg1 = (ListOfFunctionDefinitions *) 0 ;
  ListOfFunctionDefinitions *result = 0 ;
  
  arg1 = (ListOfFunctionDefinitions *)jarg1; 
  result = (ListOfFunctionDefinitions *)((ListOfFunctionDefinitions const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ListOfFunctionDefinitions_getTypeCode(void * jarg1) {
  int jresult ;
  ListOfFunctionDefinitions *arg1 = (ListOfFunctionDefinitions *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (ListOfFunctionDefinitions *)jarg1; 
  result = (SBMLTypeCode_t)((ListOfFunctionDefinitions const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ListOfFunctionDefinitions_getItemTypeCode(void * jarg1) {
  int jresult ;
  ListOfFunctionDefinitions *arg1 = (ListOfFunctionDefinitions *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (ListOfFunctionDefinitions *)jarg1; 
  result = (SBMLTypeCode_t)((ListOfFunctionDefinitions const *)arg1)->getItemTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_ListOfFunctionDefinitions_getElementName(void * jarg1) {
  wchar_t* jresult ;
  ListOfFunctionDefinitions *arg1 = (ListOfFunctionDefinitions *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (ListOfFunctionDefinitions *)jarg1; 
  result = (std::string *) &((ListOfFunctionDefinitions const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfFunctionDefinitions_get__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  ListOfFunctionDefinitions *arg1 = (ListOfFunctionDefinitions *) 0 ;
  unsigned int arg2 ;
  FunctionDefinition *result = 0 ;
  
  arg1 = (ListOfFunctionDefinitions *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (FunctionDefinition *)(arg1)->get(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfFunctionDefinitions_get__SWIG_2(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  ListOfFunctionDefinitions *arg1 = (ListOfFunctionDefinitions *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  FunctionDefinition *result = 0 ;
  
  arg1 = (ListOfFunctionDefinitions *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (FunctionDefinition *)(arg1)->get((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfFunctionDefinitions_remove__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  ListOfFunctionDefinitions *arg1 = (ListOfFunctionDefinitions *) 0 ;
  unsigned int arg2 ;
  FunctionDefinition *result = 0 ;
  
  arg1 = (ListOfFunctionDefinitions *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (FunctionDefinition *)(arg1)->remove(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfFunctionDefinitions_remove__SWIG_1(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  ListOfFunctionDefinitions *arg1 = (ListOfFunctionDefinitions *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  FunctionDefinition *result = 0 ;
  
  arg1 = (ListOfFunctionDefinitions *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (FunctionDefinition *)(arg1)->remove((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_ListOfFunctionDefinitions() {
  void * jresult ;
  ListOfFunctionDefinitions *result = 0 ;
  
  result = (ListOfFunctionDefinitions *)new ListOfFunctionDefinitions();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_ListOfFunctionDefinitions(void * jarg1) {
  ListOfFunctionDefinitions *arg1 = (ListOfFunctionDefinitions *) 0 ;
  
  arg1 = (ListOfFunctionDefinitions *)jarg1; 
  delete arg1;
}


SWIGEXPORT int SWIGSTDCALL CSharp_UnitKind_equals(int jarg1, int jarg2) {
  int jresult ;
  UnitKind_t arg1 ;
  UnitKind_t arg2 ;
  int result;
  
  arg1 = (UnitKind_t)jarg1; 
  arg2 = (UnitKind_t)jarg2; 
  result = (int)UnitKind_equals(arg1,arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_UnitKind_forName(wchar_t* jarg1) {
  int jresult ;
  char *arg1 = (char *) 0 ;
  UnitKind_t result;
  
  {
    if (jarg1)
    {
      arg1 = convertUnicodeToUTF8(jarg1);
      if (!arg1) return 0;
    }
  }
  result = (UnitKind_t)UnitKind_forName((char const *)arg1);
  jresult = result; 
  {
    delete[] arg1;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_UnitKind_toString(int jarg1) {
  wchar_t* jresult ;
  UnitKind_t arg1 ;
  char *result = 0 ;
  
  arg1 = (UnitKind_t)jarg1; 
  result = (char *)UnitKind_toString(arg1);
  {
    jresult = convertUTF8ToUnicode( result );
    wchar_t* unistr = convertUTF8ToUnicode( result );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_UnitKind_isValidUnitKindString(wchar_t* jarg1, long long jarg2, long long jarg3) {
  int jresult ;
  char *arg1 = (char *) 0 ;
  unsigned int arg2 ;
  unsigned int arg3 ;
  int result;
  
  {
    if (jarg1)
    {
      arg1 = convertUnicodeToUTF8(jarg1);
      if (!arg1) return 0;
    }
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  {
    arg3 = (unsigned int)jarg3;  
  }
  result = (int)UnitKind_isValidUnitKindString((char const *)arg1,arg2,arg3);
  jresult = result; 
  {
    delete[] arg1;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Unit__SWIG_0(long long jarg1, long long jarg2) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  Unit *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  
  try {
    result = (Unit *)new Unit(arg1,arg2);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Unit__SWIG_1(void * jarg1) {
  void * jresult ;
  SBMLNamespaces *arg1 = (SBMLNamespaces *) 0 ;
  Unit *result = 0 ;
  
  arg1 = (SBMLNamespaces *)jarg1; 
  
  try {
    result = (Unit *)new Unit(arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_Unit(void * jarg1) {
  Unit *arg1 = (Unit *) 0 ;
  
  arg1 = (Unit *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Unit__SWIG_2(void * jarg1) {
  void * jresult ;
  Unit *arg1 = 0 ;
  Unit *result = 0 ;
  
  arg1 = (Unit *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Unit const & type is null", 0);
    return 0;
  } 
  
  try {
    result = (Unit *)new Unit((Unit const &)*arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Unit_clone(void * jarg1) {
  void * jresult ;
  Unit *arg1 = (Unit *) 0 ;
  Unit *result = 0 ;
  
  arg1 = (Unit *)jarg1; 
  result = (Unit *)((Unit const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_Unit_initDefaults(void * jarg1) {
  Unit *arg1 = (Unit *) 0 ;
  
  arg1 = (Unit *)jarg1; 
  (arg1)->initDefaults();
}


SWIGEXPORT int SWIGSTDCALL CSharp_Unit_getKind(void * jarg1) {
  int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  UnitKind_t result;
  
  arg1 = (Unit *)jarg1; 
  result = (UnitKind_t)((Unit const *)arg1)->getKind();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Unit_getExponent(void * jarg1) {
  int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  int result;
  
  arg1 = (Unit *)jarg1; 
  result = (int)((Unit const *)arg1)->getExponent();
  jresult = result; 
  return jresult;
}


SWIGEXPORT double SWIGSTDCALL CSharp_Unit_getExponentAsDouble(void * jarg1) {
  double jresult ;
  Unit *arg1 = (Unit *) 0 ;
  double result;
  
  arg1 = (Unit *)jarg1; 
  result = (double)((Unit const *)arg1)->getExponentAsDouble();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Unit_getScale(void * jarg1) {
  int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  int result;
  
  arg1 = (Unit *)jarg1; 
  result = (int)((Unit const *)arg1)->getScale();
  jresult = result; 
  return jresult;
}


SWIGEXPORT double SWIGSTDCALL CSharp_Unit_getMultiplier(void * jarg1) {
  double jresult ;
  Unit *arg1 = (Unit *) 0 ;
  double result;
  
  arg1 = (Unit *)jarg1; 
  result = (double)((Unit const *)arg1)->getMultiplier();
  jresult = result; 
  return jresult;
}


SWIGEXPORT double SWIGSTDCALL CSharp_Unit_getOffset(void * jarg1) {
  double jresult ;
  Unit *arg1 = (Unit *) 0 ;
  double result;
  
  arg1 = (Unit *)jarg1; 
  result = (double)((Unit const *)arg1)->getOffset();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isAmpere(void * jarg1) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  result = (bool)((Unit const *)arg1)->isAmpere();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isAvogadro(void * jarg1) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  result = (bool)((Unit const *)arg1)->isAvogadro();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isBecquerel(void * jarg1) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  result = (bool)((Unit const *)arg1)->isBecquerel();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isCandela(void * jarg1) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  result = (bool)((Unit const *)arg1)->isCandela();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isCelsius(void * jarg1) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  result = (bool)((Unit const *)arg1)->isCelsius();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isCoulomb(void * jarg1) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  result = (bool)((Unit const *)arg1)->isCoulomb();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isDimensionless(void * jarg1) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  result = (bool)((Unit const *)arg1)->isDimensionless();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isFarad(void * jarg1) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  result = (bool)((Unit const *)arg1)->isFarad();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isGram(void * jarg1) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  result = (bool)((Unit const *)arg1)->isGram();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isGray(void * jarg1) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  result = (bool)((Unit const *)arg1)->isGray();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isHenry(void * jarg1) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  result = (bool)((Unit const *)arg1)->isHenry();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isHertz(void * jarg1) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  result = (bool)((Unit const *)arg1)->isHertz();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isItem(void * jarg1) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  result = (bool)((Unit const *)arg1)->isItem();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isJoule(void * jarg1) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  result = (bool)((Unit const *)arg1)->isJoule();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isKatal(void * jarg1) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  result = (bool)((Unit const *)arg1)->isKatal();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isKelvin(void * jarg1) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  result = (bool)((Unit const *)arg1)->isKelvin();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isKilogram(void * jarg1) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  result = (bool)((Unit const *)arg1)->isKilogram();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isLitre(void * jarg1) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  result = (bool)((Unit const *)arg1)->isLitre();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isLumen(void * jarg1) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  result = (bool)((Unit const *)arg1)->isLumen();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isLux(void * jarg1) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  result = (bool)((Unit const *)arg1)->isLux();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isMetre(void * jarg1) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  result = (bool)((Unit const *)arg1)->isMetre();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isMole(void * jarg1) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  result = (bool)((Unit const *)arg1)->isMole();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isNewton(void * jarg1) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  result = (bool)((Unit const *)arg1)->isNewton();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isOhm(void * jarg1) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  result = (bool)((Unit const *)arg1)->isOhm();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isPascal(void * jarg1) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  result = (bool)((Unit const *)arg1)->isPascal();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isRadian(void * jarg1) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  result = (bool)((Unit const *)arg1)->isRadian();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isSecond(void * jarg1) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  result = (bool)((Unit const *)arg1)->isSecond();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isSiemens(void * jarg1) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  result = (bool)((Unit const *)arg1)->isSiemens();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isSievert(void * jarg1) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  result = (bool)((Unit const *)arg1)->isSievert();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isSteradian(void * jarg1) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  result = (bool)((Unit const *)arg1)->isSteradian();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isTesla(void * jarg1) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  result = (bool)((Unit const *)arg1)->isTesla();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isVolt(void * jarg1) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  result = (bool)((Unit const *)arg1)->isVolt();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isWatt(void * jarg1) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  result = (bool)((Unit const *)arg1)->isWatt();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isWeber(void * jarg1) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  result = (bool)((Unit const *)arg1)->isWeber();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isSetKind(void * jarg1) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  result = (bool)((Unit const *)arg1)->isSetKind();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isSetExponent(void * jarg1) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  result = (bool)((Unit const *)arg1)->isSetExponent();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isSetScale(void * jarg1) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  result = (bool)((Unit const *)arg1)->isSetScale();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isSetMultiplier(void * jarg1) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  result = (bool)((Unit const *)arg1)->isSetMultiplier();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Unit_setKind(void * jarg1, int jarg2) {
  int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  UnitKind_t arg2 ;
  int result;
  
  arg1 = (Unit *)jarg1; 
  arg2 = (UnitKind_t)jarg2; 
  result = (int)(arg1)->setKind(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Unit_setExponent__SWIG_0(void * jarg1, int jarg2) {
  int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  int arg2 ;
  int result;
  
  arg1 = (Unit *)jarg1; 
  arg2 = (int)jarg2; 
  result = (int)(arg1)->setExponent(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Unit_setExponent__SWIG_1(void * jarg1, double jarg2) {
  int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  double arg2 ;
  int result;
  
  arg1 = (Unit *)jarg1; 
  arg2 = (double)jarg2; 
  result = (int)(arg1)->setExponent(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Unit_setScale(void * jarg1, int jarg2) {
  int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  int arg2 ;
  int result;
  
  arg1 = (Unit *)jarg1; 
  arg2 = (int)jarg2; 
  result = (int)(arg1)->setScale(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Unit_setMultiplier(void * jarg1, double jarg2) {
  int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  double arg2 ;
  int result;
  
  arg1 = (Unit *)jarg1; 
  arg2 = (double)jarg2; 
  result = (int)(arg1)->setMultiplier(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Unit_setOffset(void * jarg1, double jarg2) {
  int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  double arg2 ;
  int result;
  
  arg1 = (Unit *)jarg1; 
  arg2 = (double)jarg2; 
  result = (int)(arg1)->setOffset(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Unit_getTypeCode(void * jarg1) {
  int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (Unit *)jarg1; 
  result = (SBMLTypeCode_t)((Unit const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Unit_getElementName(void * jarg1) {
  wchar_t* jresult ;
  Unit *arg1 = (Unit *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Unit *)jarg1; 
  result = (std::string *) &((Unit const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isBuiltIn(wchar_t* jarg1, long long jarg2) {
  unsigned int jresult ;
  std::string *arg1 = 0 ;
  unsigned int arg2 ;
  std::string arg_str1 ;
  bool result;
  
  {
    char*  mbstr = convertUnicodeToUTF8(jarg1);
    if (!mbstr) return 0;
    
    arg_str1.assign(mbstr);
    arg1 = &arg_str1;
    delete[] mbstr;
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (bool)Unit::isBuiltIn((std::string const &)*arg1,arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_isUnitKind(wchar_t* jarg1, long long jarg2, long long jarg3) {
  unsigned int jresult ;
  std::string *arg1 = 0 ;
  unsigned int arg2 ;
  unsigned int arg3 ;
  std::string arg_str1 ;
  bool result;
  
  {
    char*  mbstr = convertUnicodeToUTF8(jarg1);
    if (!mbstr) return 0;
    
    arg_str1.assign(mbstr);
    arg1 = &arg_str1;
    delete[] mbstr;
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  {
    arg3 = (unsigned int)jarg3;  
  }
  result = (bool)Unit::isUnitKind((std::string const &)*arg1,arg2,arg3);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_areIdentical(void * jarg1, void * jarg2) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  Unit *arg2 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  arg2 = (Unit *)jarg2; 
  result = (bool)Unit::areIdentical(arg1,arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_areEquivalent(void * jarg1, void * jarg2) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  Unit *arg2 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  arg2 = (Unit *)jarg2; 
  result = (bool)Unit::areEquivalent(arg1,arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Unit_removeScale(void * jarg1) {
  int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  int result;
  
  arg1 = (Unit *)jarg1; 
  result = (int)Unit::removeScale(arg1);
  jresult = result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_Unit_merge(void * jarg1, void * jarg2) {
  Unit *arg1 = (Unit *) 0 ;
  Unit *arg2 = (Unit *) 0 ;
  
  arg1 = (Unit *)jarg1; 
  arg2 = (Unit *)jarg2; 
  Unit::merge(arg1,arg2);
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Unit_convertToSI(void * jarg1) {
  void * jresult ;
  Unit *arg1 = (Unit *) 0 ;
  UnitDefinition *result = 0 ;
  
  arg1 = (Unit *)jarg1; 
  result = (UnitDefinition *)Unit::convertToSI((Unit const *)arg1);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Unit_hasRequiredAttributes(void * jarg1) {
  unsigned int jresult ;
  Unit *arg1 = (Unit *) 0 ;
  bool result;
  
  arg1 = (Unit *)jarg1; 
  result = (bool)((Unit const *)arg1)->hasRequiredAttributes();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfUnits_clone(void * jarg1) {
  void * jresult ;
  ListOfUnits *arg1 = (ListOfUnits *) 0 ;
  ListOfUnits *result = 0 ;
  
  arg1 = (ListOfUnits *)jarg1; 
  result = (ListOfUnits *)((ListOfUnits const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ListOfUnits_getTypeCode(void * jarg1) {
  int jresult ;
  ListOfUnits *arg1 = (ListOfUnits *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (ListOfUnits *)jarg1; 
  result = (SBMLTypeCode_t)((ListOfUnits const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ListOfUnits_getItemTypeCode(void * jarg1) {
  int jresult ;
  ListOfUnits *arg1 = (ListOfUnits *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (ListOfUnits *)jarg1; 
  result = (SBMLTypeCode_t)((ListOfUnits const *)arg1)->getItemTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_ListOfUnits_getElementName(void * jarg1) {
  wchar_t* jresult ;
  ListOfUnits *arg1 = (ListOfUnits *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (ListOfUnits *)jarg1; 
  result = (std::string *) &((ListOfUnits const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfUnits_get__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  ListOfUnits *arg1 = (ListOfUnits *) 0 ;
  unsigned int arg2 ;
  Unit *result = 0 ;
  
  arg1 = (ListOfUnits *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (Unit *)(arg1)->get(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfUnits_remove(void * jarg1, long long jarg2) {
  void * jresult ;
  ListOfUnits *arg1 = (ListOfUnits *) 0 ;
  unsigned int arg2 ;
  Unit *result = 0 ;
  
  arg1 = (ListOfUnits *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (Unit *)(arg1)->remove(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_ListOfUnits() {
  void * jresult ;
  ListOfUnits *result = 0 ;
  
  result = (ListOfUnits *)new ListOfUnits();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_ListOfUnits(void * jarg1) {
  ListOfUnits *arg1 = (ListOfUnits *) 0 ;
  
  arg1 = (ListOfUnits *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_UnitDefinition__SWIG_0(long long jarg1, long long jarg2) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  UnitDefinition *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  
  try {
    result = (UnitDefinition *)new UnitDefinition(arg1,arg2);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_UnitDefinition__SWIG_1(void * jarg1) {
  void * jresult ;
  SBMLNamespaces *arg1 = (SBMLNamespaces *) 0 ;
  UnitDefinition *result = 0 ;
  
  arg1 = (SBMLNamespaces *)jarg1; 
  
  try {
    result = (UnitDefinition *)new UnitDefinition(arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_UnitDefinition(void * jarg1) {
  UnitDefinition *arg1 = (UnitDefinition *) 0 ;
  
  arg1 = (UnitDefinition *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_UnitDefinition__SWIG_2(void * jarg1) {
  void * jresult ;
  UnitDefinition *arg1 = 0 ;
  UnitDefinition *result = 0 ;
  
  arg1 = (UnitDefinition *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "UnitDefinition const & type is null", 0);
    return 0;
  } 
  
  try {
    result = (UnitDefinition *)new UnitDefinition((UnitDefinition const &)*arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_UnitDefinition_clone(void * jarg1) {
  void * jresult ;
  UnitDefinition *arg1 = (UnitDefinition *) 0 ;
  UnitDefinition *result = 0 ;
  
  arg1 = (UnitDefinition *)jarg1; 
  result = (UnitDefinition *)((UnitDefinition const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_UnitDefinition_getId(void * jarg1) {
  wchar_t* jresult ;
  UnitDefinition *arg1 = (UnitDefinition *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (UnitDefinition *)jarg1; 
  result = (std::string *) &((UnitDefinition const *)arg1)->getId();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_UnitDefinition_getName(void * jarg1) {
  wchar_t* jresult ;
  UnitDefinition *arg1 = (UnitDefinition *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (UnitDefinition *)jarg1; 
  result = (std::string *) &((UnitDefinition const *)arg1)->getName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_UnitDefinition_isSetId(void * jarg1) {
  unsigned int jresult ;
  UnitDefinition *arg1 = (UnitDefinition *) 0 ;
  bool result;
  
  arg1 = (UnitDefinition *)jarg1; 
  result = (bool)((UnitDefinition const *)arg1)->isSetId();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_UnitDefinition_isSetName(void * jarg1) {
  unsigned int jresult ;
  UnitDefinition *arg1 = (UnitDefinition *) 0 ;
  bool result;
  
  arg1 = (UnitDefinition *)jarg1; 
  result = (bool)((UnitDefinition const *)arg1)->isSetName();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_UnitDefinition_setId(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  UnitDefinition *arg1 = (UnitDefinition *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (UnitDefinition *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setId((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_UnitDefinition_setName(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  UnitDefinition *arg1 = (UnitDefinition *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (UnitDefinition *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setName((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_UnitDefinition_unsetName(void * jarg1) {
  int jresult ;
  UnitDefinition *arg1 = (UnitDefinition *) 0 ;
  int result;
  
  arg1 = (UnitDefinition *)jarg1; 
  result = (int)(arg1)->unsetName();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_UnitDefinition_isVariantOfArea(void * jarg1) {
  unsigned int jresult ;
  UnitDefinition *arg1 = (UnitDefinition *) 0 ;
  bool result;
  
  arg1 = (UnitDefinition *)jarg1; 
  result = (bool)((UnitDefinition const *)arg1)->isVariantOfArea();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_UnitDefinition_isVariantOfLength(void * jarg1) {
  unsigned int jresult ;
  UnitDefinition *arg1 = (UnitDefinition *) 0 ;
  bool result;
  
  arg1 = (UnitDefinition *)jarg1; 
  result = (bool)((UnitDefinition const *)arg1)->isVariantOfLength();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_UnitDefinition_isVariantOfSubstance(void * jarg1) {
  unsigned int jresult ;
  UnitDefinition *arg1 = (UnitDefinition *) 0 ;
  bool result;
  
  arg1 = (UnitDefinition *)jarg1; 
  result = (bool)((UnitDefinition const *)arg1)->isVariantOfSubstance();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_UnitDefinition_isVariantOfTime(void * jarg1) {
  unsigned int jresult ;
  UnitDefinition *arg1 = (UnitDefinition *) 0 ;
  bool result;
  
  arg1 = (UnitDefinition *)jarg1; 
  result = (bool)((UnitDefinition const *)arg1)->isVariantOfTime();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_UnitDefinition_isVariantOfVolume(void * jarg1) {
  unsigned int jresult ;
  UnitDefinition *arg1 = (UnitDefinition *) 0 ;
  bool result;
  
  arg1 = (UnitDefinition *)jarg1; 
  result = (bool)((UnitDefinition const *)arg1)->isVariantOfVolume();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_UnitDefinition_isVariantOfDimensionless(void * jarg1) {
  unsigned int jresult ;
  UnitDefinition *arg1 = (UnitDefinition *) 0 ;
  bool result;
  
  arg1 = (UnitDefinition *)jarg1; 
  result = (bool)((UnitDefinition const *)arg1)->isVariantOfDimensionless();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_UnitDefinition_isVariantOfMass(void * jarg1) {
  unsigned int jresult ;
  UnitDefinition *arg1 = (UnitDefinition *) 0 ;
  bool result;
  
  arg1 = (UnitDefinition *)jarg1; 
  result = (bool)((UnitDefinition const *)arg1)->isVariantOfMass();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_UnitDefinition_isVariantOfSubstancePerTime(void * jarg1) {
  unsigned int jresult ;
  UnitDefinition *arg1 = (UnitDefinition *) 0 ;
  bool result;
  
  arg1 = (UnitDefinition *)jarg1; 
  result = (bool)((UnitDefinition const *)arg1)->isVariantOfSubstancePerTime();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_UnitDefinition_addUnit(void * jarg1, void * jarg2) {
  int jresult ;
  UnitDefinition *arg1 = (UnitDefinition *) 0 ;
  Unit *arg2 = (Unit *) 0 ;
  int result;
  
  arg1 = (UnitDefinition *)jarg1; 
  arg2 = (Unit *)jarg2; 
  result = (int)(arg1)->addUnit((Unit const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_UnitDefinition_createUnit(void * jarg1) {
  void * jresult ;
  UnitDefinition *arg1 = (UnitDefinition *) 0 ;
  Unit *result = 0 ;
  
  arg1 = (UnitDefinition *)jarg1; 
  result = (Unit *)(arg1)->createUnit();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_UnitDefinition_getListOfUnits__SWIG_0(void * jarg1) {
  void * jresult ;
  UnitDefinition *arg1 = (UnitDefinition *) 0 ;
  ListOfUnits *result = 0 ;
  
  arg1 = (UnitDefinition *)jarg1; 
  result = (ListOfUnits *)((UnitDefinition const *)arg1)->getListOfUnits();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_UnitDefinition_getUnit__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  UnitDefinition *arg1 = (UnitDefinition *) 0 ;
  unsigned int arg2 ;
  Unit *result = 0 ;
  
  arg1 = (UnitDefinition *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (Unit *)(arg1)->getUnit(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_UnitDefinition_getNumUnits(void * jarg1) {
  unsigned int jresult ;
  UnitDefinition *arg1 = (UnitDefinition *) 0 ;
  unsigned int result;
  
  arg1 = (UnitDefinition *)jarg1; 
  result = (unsigned int)((UnitDefinition const *)arg1)->getNumUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_UnitDefinition_removeUnit(void * jarg1, long long jarg2) {
  void * jresult ;
  UnitDefinition *arg1 = (UnitDefinition *) 0 ;
  unsigned int arg2 ;
  Unit *result = 0 ;
  
  arg1 = (UnitDefinition *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (Unit *)(arg1)->removeUnit(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_UnitDefinition_getTypeCode(void * jarg1) {
  int jresult ;
  UnitDefinition *arg1 = (UnitDefinition *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (UnitDefinition *)jarg1; 
  result = (SBMLTypeCode_t)((UnitDefinition const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_UnitDefinition_getElementName(void * jarg1) {
  wchar_t* jresult ;
  UnitDefinition *arg1 = (UnitDefinition *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (UnitDefinition *)jarg1; 
  result = (std::string *) &((UnitDefinition const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_UnitDefinition_simplify(void * jarg1) {
  UnitDefinition *arg1 = (UnitDefinition *) 0 ;
  
  arg1 = (UnitDefinition *)jarg1; 
  UnitDefinition::simplify(arg1);
}


SWIGEXPORT void SWIGSTDCALL CSharp_UnitDefinition_reorder(void * jarg1) {
  UnitDefinition *arg1 = (UnitDefinition *) 0 ;
  
  arg1 = (UnitDefinition *)jarg1; 
  UnitDefinition::reorder(arg1);
}


SWIGEXPORT void * SWIGSTDCALL CSharp_UnitDefinition_convertToSI(void * jarg1) {
  void * jresult ;
  UnitDefinition *arg1 = (UnitDefinition *) 0 ;
  UnitDefinition *result = 0 ;
  
  arg1 = (UnitDefinition *)jarg1; 
  result = (UnitDefinition *)UnitDefinition::convertToSI((UnitDefinition const *)arg1);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_UnitDefinition_areIdentical(void * jarg1, void * jarg2) {
  unsigned int jresult ;
  UnitDefinition *arg1 = (UnitDefinition *) 0 ;
  UnitDefinition *arg2 = (UnitDefinition *) 0 ;
  bool result;
  
  arg1 = (UnitDefinition *)jarg1; 
  arg2 = (UnitDefinition *)jarg2; 
  result = (bool)UnitDefinition::areIdentical((UnitDefinition const *)arg1,(UnitDefinition const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_UnitDefinition_areEquivalent(void * jarg1, void * jarg2) {
  unsigned int jresult ;
  UnitDefinition *arg1 = (UnitDefinition *) 0 ;
  UnitDefinition *arg2 = (UnitDefinition *) 0 ;
  bool result;
  
  arg1 = (UnitDefinition *)jarg1; 
  arg2 = (UnitDefinition *)jarg2; 
  result = (bool)UnitDefinition::areEquivalent((UnitDefinition const *)arg1,(UnitDefinition const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_UnitDefinition_combine(void * jarg1, void * jarg2) {
  void * jresult ;
  UnitDefinition *arg1 = (UnitDefinition *) 0 ;
  UnitDefinition *arg2 = (UnitDefinition *) 0 ;
  UnitDefinition *result = 0 ;
  
  arg1 = (UnitDefinition *)jarg1; 
  arg2 = (UnitDefinition *)jarg2; 
  result = (UnitDefinition *)UnitDefinition::combine(arg1,arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_UnitDefinition_printUnits__SWIG_0(void * jarg1, unsigned int jarg2) {
  wchar_t* jresult ;
  UnitDefinition *arg1 = (UnitDefinition *) 0 ;
  bool arg2 ;
  std::string result;
  
  arg1 = (UnitDefinition *)jarg1; 
  arg2 = jarg2 ? true : false; 
  result = UnitDefinition::printUnits((UnitDefinition const *)arg1,arg2);
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_UnitDefinition_printUnits__SWIG_1(void * jarg1) {
  wchar_t* jresult ;
  UnitDefinition *arg1 = (UnitDefinition *) 0 ;
  std::string result;
  
  arg1 = (UnitDefinition *)jarg1; 
  result = UnitDefinition::printUnits((UnitDefinition const *)arg1);
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_UnitDefinition_hasRequiredAttributes(void * jarg1) {
  unsigned int jresult ;
  UnitDefinition *arg1 = (UnitDefinition *) 0 ;
  bool result;
  
  arg1 = (UnitDefinition *)jarg1; 
  result = (bool)((UnitDefinition const *)arg1)->hasRequiredAttributes();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_UnitDefinition_hasRequiredElements(void * jarg1) {
  unsigned int jresult ;
  UnitDefinition *arg1 = (UnitDefinition *) 0 ;
  bool result;
  
  arg1 = (UnitDefinition *)jarg1; 
  result = (bool)((UnitDefinition const *)arg1)->hasRequiredElements();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfUnitDefinitions_clone(void * jarg1) {
  void * jresult ;
  ListOfUnitDefinitions *arg1 = (ListOfUnitDefinitions *) 0 ;
  ListOfUnitDefinitions *result = 0 ;
  
  arg1 = (ListOfUnitDefinitions *)jarg1; 
  result = (ListOfUnitDefinitions *)((ListOfUnitDefinitions const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ListOfUnitDefinitions_getTypeCode(void * jarg1) {
  int jresult ;
  ListOfUnitDefinitions *arg1 = (ListOfUnitDefinitions *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (ListOfUnitDefinitions *)jarg1; 
  result = (SBMLTypeCode_t)((ListOfUnitDefinitions const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ListOfUnitDefinitions_getItemTypeCode(void * jarg1) {
  int jresult ;
  ListOfUnitDefinitions *arg1 = (ListOfUnitDefinitions *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (ListOfUnitDefinitions *)jarg1; 
  result = (SBMLTypeCode_t)((ListOfUnitDefinitions const *)arg1)->getItemTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_ListOfUnitDefinitions_getElementName(void * jarg1) {
  wchar_t* jresult ;
  ListOfUnitDefinitions *arg1 = (ListOfUnitDefinitions *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (ListOfUnitDefinitions *)jarg1; 
  result = (std::string *) &((ListOfUnitDefinitions const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfUnitDefinitions_get__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  ListOfUnitDefinitions *arg1 = (ListOfUnitDefinitions *) 0 ;
  unsigned int arg2 ;
  UnitDefinition *result = 0 ;
  
  arg1 = (ListOfUnitDefinitions *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (UnitDefinition *)(arg1)->get(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfUnitDefinitions_get__SWIG_2(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  ListOfUnitDefinitions *arg1 = (ListOfUnitDefinitions *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  UnitDefinition *result = 0 ;
  
  arg1 = (ListOfUnitDefinitions *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (UnitDefinition *)(arg1)->get((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfUnitDefinitions_remove__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  ListOfUnitDefinitions *arg1 = (ListOfUnitDefinitions *) 0 ;
  unsigned int arg2 ;
  UnitDefinition *result = 0 ;
  
  arg1 = (ListOfUnitDefinitions *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (UnitDefinition *)(arg1)->remove(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfUnitDefinitions_remove__SWIG_1(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  ListOfUnitDefinitions *arg1 = (ListOfUnitDefinitions *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  UnitDefinition *result = 0 ;
  
  arg1 = (ListOfUnitDefinitions *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (UnitDefinition *)(arg1)->remove((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_ListOfUnitDefinitions() {
  void * jresult ;
  ListOfUnitDefinitions *result = 0 ;
  
  result = (ListOfUnitDefinitions *)new ListOfUnitDefinitions();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_ListOfUnitDefinitions(void * jarg1) {
  ListOfUnitDefinitions *arg1 = (ListOfUnitDefinitions *) 0 ;
  
  arg1 = (ListOfUnitDefinitions *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_CompartmentType__SWIG_0(long long jarg1, long long jarg2) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  CompartmentType *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  
  try {
    result = (CompartmentType *)new CompartmentType(arg1,arg2);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_CompartmentType__SWIG_1(void * jarg1) {
  void * jresult ;
  SBMLNamespaces *arg1 = (SBMLNamespaces *) 0 ;
  CompartmentType *result = 0 ;
  
  arg1 = (SBMLNamespaces *)jarg1; 
  
  try {
    result = (CompartmentType *)new CompartmentType(arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_CompartmentType(void * jarg1) {
  CompartmentType *arg1 = (CompartmentType *) 0 ;
  
  arg1 = (CompartmentType *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_CompartmentType__SWIG_2(void * jarg1) {
  void * jresult ;
  CompartmentType *arg1 = 0 ;
  CompartmentType *result = 0 ;
  
  arg1 = (CompartmentType *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "CompartmentType const & type is null", 0);
    return 0;
  } 
  
  try {
    result = (CompartmentType *)new CompartmentType((CompartmentType const &)*arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_CompartmentType_clone(void * jarg1) {
  void * jresult ;
  CompartmentType *arg1 = (CompartmentType *) 0 ;
  CompartmentType *result = 0 ;
  
  arg1 = (CompartmentType *)jarg1; 
  result = (CompartmentType *)((CompartmentType const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_CompartmentType_getId(void * jarg1) {
  wchar_t* jresult ;
  CompartmentType *arg1 = (CompartmentType *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (CompartmentType *)jarg1; 
  result = (std::string *) &((CompartmentType const *)arg1)->getId();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_CompartmentType_getName(void * jarg1) {
  wchar_t* jresult ;
  CompartmentType *arg1 = (CompartmentType *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (CompartmentType *)jarg1; 
  result = (std::string *) &((CompartmentType const *)arg1)->getName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_CompartmentType_isSetId(void * jarg1) {
  unsigned int jresult ;
  CompartmentType *arg1 = (CompartmentType *) 0 ;
  bool result;
  
  arg1 = (CompartmentType *)jarg1; 
  result = (bool)((CompartmentType const *)arg1)->isSetId();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_CompartmentType_isSetName(void * jarg1) {
  unsigned int jresult ;
  CompartmentType *arg1 = (CompartmentType *) 0 ;
  bool result;
  
  arg1 = (CompartmentType *)jarg1; 
  result = (bool)((CompartmentType const *)arg1)->isSetName();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_CompartmentType_setId(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  CompartmentType *arg1 = (CompartmentType *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (CompartmentType *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setId((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_CompartmentType_setName(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  CompartmentType *arg1 = (CompartmentType *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (CompartmentType *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setName((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_CompartmentType_unsetName(void * jarg1) {
  int jresult ;
  CompartmentType *arg1 = (CompartmentType *) 0 ;
  int result;
  
  arg1 = (CompartmentType *)jarg1; 
  result = (int)(arg1)->unsetName();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_CompartmentType_getTypeCode(void * jarg1) {
  int jresult ;
  CompartmentType *arg1 = (CompartmentType *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (CompartmentType *)jarg1; 
  result = (SBMLTypeCode_t)((CompartmentType const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_CompartmentType_getElementName(void * jarg1) {
  wchar_t* jresult ;
  CompartmentType *arg1 = (CompartmentType *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (CompartmentType *)jarg1; 
  result = (std::string *) &((CompartmentType const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_CompartmentType_hasRequiredAttributes(void * jarg1) {
  unsigned int jresult ;
  CompartmentType *arg1 = (CompartmentType *) 0 ;
  bool result;
  
  arg1 = (CompartmentType *)jarg1; 
  result = (bool)((CompartmentType const *)arg1)->hasRequiredAttributes();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfCompartmentTypes_clone(void * jarg1) {
  void * jresult ;
  ListOfCompartmentTypes *arg1 = (ListOfCompartmentTypes *) 0 ;
  ListOfCompartmentTypes *result = 0 ;
  
  arg1 = (ListOfCompartmentTypes *)jarg1; 
  result = (ListOfCompartmentTypes *)((ListOfCompartmentTypes const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ListOfCompartmentTypes_getTypeCode(void * jarg1) {
  int jresult ;
  ListOfCompartmentTypes *arg1 = (ListOfCompartmentTypes *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (ListOfCompartmentTypes *)jarg1; 
  result = (SBMLTypeCode_t)((ListOfCompartmentTypes const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ListOfCompartmentTypes_getItemTypeCode(void * jarg1) {
  int jresult ;
  ListOfCompartmentTypes *arg1 = (ListOfCompartmentTypes *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (ListOfCompartmentTypes *)jarg1; 
  result = (SBMLTypeCode_t)((ListOfCompartmentTypes const *)arg1)->getItemTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_ListOfCompartmentTypes_getElementName(void * jarg1) {
  wchar_t* jresult ;
  ListOfCompartmentTypes *arg1 = (ListOfCompartmentTypes *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (ListOfCompartmentTypes *)jarg1; 
  result = (std::string *) &((ListOfCompartmentTypes const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfCompartmentTypes_get__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  ListOfCompartmentTypes *arg1 = (ListOfCompartmentTypes *) 0 ;
  unsigned int arg2 ;
  CompartmentType *result = 0 ;
  
  arg1 = (ListOfCompartmentTypes *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (CompartmentType *)(arg1)->get(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfCompartmentTypes_get__SWIG_2(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  ListOfCompartmentTypes *arg1 = (ListOfCompartmentTypes *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  CompartmentType *result = 0 ;
  
  arg1 = (ListOfCompartmentTypes *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (CompartmentType *)(arg1)->get((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfCompartmentTypes_remove__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  ListOfCompartmentTypes *arg1 = (ListOfCompartmentTypes *) 0 ;
  unsigned int arg2 ;
  CompartmentType *result = 0 ;
  
  arg1 = (ListOfCompartmentTypes *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (CompartmentType *)(arg1)->remove(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfCompartmentTypes_remove__SWIG_1(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  ListOfCompartmentTypes *arg1 = (ListOfCompartmentTypes *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  CompartmentType *result = 0 ;
  
  arg1 = (ListOfCompartmentTypes *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (CompartmentType *)(arg1)->remove((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_ListOfCompartmentTypes() {
  void * jresult ;
  ListOfCompartmentTypes *result = 0 ;
  
  result = (ListOfCompartmentTypes *)new ListOfCompartmentTypes();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_ListOfCompartmentTypes(void * jarg1) {
  ListOfCompartmentTypes *arg1 = (ListOfCompartmentTypes *) 0 ;
  
  arg1 = (ListOfCompartmentTypes *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SpeciesType__SWIG_0(long long jarg1, long long jarg2) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  SpeciesType *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  
  try {
    result = (SpeciesType *)new SpeciesType(arg1,arg2);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SpeciesType__SWIG_1(void * jarg1) {
  void * jresult ;
  SBMLNamespaces *arg1 = (SBMLNamespaces *) 0 ;
  SpeciesType *result = 0 ;
  
  arg1 = (SBMLNamespaces *)jarg1; 
  
  try {
    result = (SpeciesType *)new SpeciesType(arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_SpeciesType(void * jarg1) {
  SpeciesType *arg1 = (SpeciesType *) 0 ;
  
  arg1 = (SpeciesType *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SpeciesType__SWIG_2(void * jarg1) {
  void * jresult ;
  SpeciesType *arg1 = 0 ;
  SpeciesType *result = 0 ;
  
  arg1 = (SpeciesType *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "SpeciesType const & type is null", 0);
    return 0;
  } 
  
  try {
    result = (SpeciesType *)new SpeciesType((SpeciesType const &)*arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_SpeciesType_clone(void * jarg1) {
  void * jresult ;
  SpeciesType *arg1 = (SpeciesType *) 0 ;
  SpeciesType *result = 0 ;
  
  arg1 = (SpeciesType *)jarg1; 
  result = (SpeciesType *)((SpeciesType const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_SpeciesType_getId(void * jarg1) {
  wchar_t* jresult ;
  SpeciesType *arg1 = (SpeciesType *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (SpeciesType *)jarg1; 
  result = (std::string *) &((SpeciesType const *)arg1)->getId();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_SpeciesType_getName(void * jarg1) {
  wchar_t* jresult ;
  SpeciesType *arg1 = (SpeciesType *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (SpeciesType *)jarg1; 
  result = (std::string *) &((SpeciesType const *)arg1)->getName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SpeciesType_isSetId(void * jarg1) {
  unsigned int jresult ;
  SpeciesType *arg1 = (SpeciesType *) 0 ;
  bool result;
  
  arg1 = (SpeciesType *)jarg1; 
  result = (bool)((SpeciesType const *)arg1)->isSetId();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SpeciesType_isSetName(void * jarg1) {
  unsigned int jresult ;
  SpeciesType *arg1 = (SpeciesType *) 0 ;
  bool result;
  
  arg1 = (SpeciesType *)jarg1; 
  result = (bool)((SpeciesType const *)arg1)->isSetName();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SpeciesType_setId(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  SpeciesType *arg1 = (SpeciesType *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (SpeciesType *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setId((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SpeciesType_setName(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  SpeciesType *arg1 = (SpeciesType *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (SpeciesType *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setName((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SpeciesType_unsetName(void * jarg1) {
  int jresult ;
  SpeciesType *arg1 = (SpeciesType *) 0 ;
  int result;
  
  arg1 = (SpeciesType *)jarg1; 
  result = (int)(arg1)->unsetName();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SpeciesType_getTypeCode(void * jarg1) {
  int jresult ;
  SpeciesType *arg1 = (SpeciesType *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (SpeciesType *)jarg1; 
  result = (SBMLTypeCode_t)((SpeciesType const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_SpeciesType_getElementName(void * jarg1) {
  wchar_t* jresult ;
  SpeciesType *arg1 = (SpeciesType *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (SpeciesType *)jarg1; 
  result = (std::string *) &((SpeciesType const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SpeciesType_hasRequiredAttributes(void * jarg1) {
  unsigned int jresult ;
  SpeciesType *arg1 = (SpeciesType *) 0 ;
  bool result;
  
  arg1 = (SpeciesType *)jarg1; 
  result = (bool)((SpeciesType const *)arg1)->hasRequiredAttributes();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfSpeciesTypes_clone(void * jarg1) {
  void * jresult ;
  ListOfSpeciesTypes *arg1 = (ListOfSpeciesTypes *) 0 ;
  ListOfSpeciesTypes *result = 0 ;
  
  arg1 = (ListOfSpeciesTypes *)jarg1; 
  result = (ListOfSpeciesTypes *)((ListOfSpeciesTypes const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ListOfSpeciesTypes_getTypeCode(void * jarg1) {
  int jresult ;
  ListOfSpeciesTypes *arg1 = (ListOfSpeciesTypes *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (ListOfSpeciesTypes *)jarg1; 
  result = (SBMLTypeCode_t)((ListOfSpeciesTypes const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ListOfSpeciesTypes_getItemTypeCode(void * jarg1) {
  int jresult ;
  ListOfSpeciesTypes *arg1 = (ListOfSpeciesTypes *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (ListOfSpeciesTypes *)jarg1; 
  result = (SBMLTypeCode_t)((ListOfSpeciesTypes const *)arg1)->getItemTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_ListOfSpeciesTypes_getElementName(void * jarg1) {
  wchar_t* jresult ;
  ListOfSpeciesTypes *arg1 = (ListOfSpeciesTypes *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (ListOfSpeciesTypes *)jarg1; 
  result = (std::string *) &((ListOfSpeciesTypes const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfSpeciesTypes_get__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  ListOfSpeciesTypes *arg1 = (ListOfSpeciesTypes *) 0 ;
  unsigned int arg2 ;
  SpeciesType *result = 0 ;
  
  arg1 = (ListOfSpeciesTypes *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (SpeciesType *)(arg1)->get(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfSpeciesTypes_get__SWIG_2(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  ListOfSpeciesTypes *arg1 = (ListOfSpeciesTypes *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  SpeciesType *result = 0 ;
  
  arg1 = (ListOfSpeciesTypes *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (SpeciesType *)(arg1)->get((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfSpeciesTypes_remove__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  ListOfSpeciesTypes *arg1 = (ListOfSpeciesTypes *) 0 ;
  unsigned int arg2 ;
  SpeciesType *result = 0 ;
  
  arg1 = (ListOfSpeciesTypes *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (SpeciesType *)(arg1)->remove(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfSpeciesTypes_remove__SWIG_1(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  ListOfSpeciesTypes *arg1 = (ListOfSpeciesTypes *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  SpeciesType *result = 0 ;
  
  arg1 = (ListOfSpeciesTypes *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (SpeciesType *)(arg1)->remove((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_ListOfSpeciesTypes() {
  void * jresult ;
  ListOfSpeciesTypes *result = 0 ;
  
  result = (ListOfSpeciesTypes *)new ListOfSpeciesTypes();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_ListOfSpeciesTypes(void * jarg1) {
  ListOfSpeciesTypes *arg1 = (ListOfSpeciesTypes *) 0 ;
  
  arg1 = (ListOfSpeciesTypes *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Compartment__SWIG_0(long long jarg1, long long jarg2) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  Compartment *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  
  try {
    result = (Compartment *)new Compartment(arg1,arg2);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Compartment__SWIG_1(void * jarg1) {
  void * jresult ;
  SBMLNamespaces *arg1 = (SBMLNamespaces *) 0 ;
  Compartment *result = 0 ;
  
  arg1 = (SBMLNamespaces *)jarg1; 
  
  try {
    result = (Compartment *)new Compartment(arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_Compartment(void * jarg1) {
  Compartment *arg1 = (Compartment *) 0 ;
  
  arg1 = (Compartment *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Compartment__SWIG_2(void * jarg1) {
  void * jresult ;
  Compartment *arg1 = 0 ;
  Compartment *result = 0 ;
  
  arg1 = (Compartment *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Compartment const & type is null", 0);
    return 0;
  } 
  
  try {
    result = (Compartment *)new Compartment((Compartment const &)*arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Compartment_clone(void * jarg1) {
  void * jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  Compartment *result = 0 ;
  
  arg1 = (Compartment *)jarg1; 
  result = (Compartment *)((Compartment const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_Compartment_initDefaults(void * jarg1) {
  Compartment *arg1 = (Compartment *) 0 ;
  
  arg1 = (Compartment *)jarg1; 
  (arg1)->initDefaults();
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Compartment_getId(void * jarg1) {
  wchar_t* jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Compartment *)jarg1; 
  result = (std::string *) &((Compartment const *)arg1)->getId();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Compartment_getName(void * jarg1) {
  wchar_t* jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Compartment *)jarg1; 
  result = (std::string *) &((Compartment const *)arg1)->getName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Compartment_getCompartmentType(void * jarg1) {
  wchar_t* jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Compartment *)jarg1; 
  result = (std::string *) &((Compartment const *)arg1)->getCompartmentType();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Compartment_getSpatialDimensions(void * jarg1) {
  unsigned int jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  unsigned int result;
  
  arg1 = (Compartment *)jarg1; 
  result = (unsigned int)((Compartment const *)arg1)->getSpatialDimensions();
  jresult = result; 
  return jresult;
}


SWIGEXPORT double SWIGSTDCALL CSharp_Compartment_getSpatialDimensionsAsDouble(void * jarg1) {
  double jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  double result;
  
  arg1 = (Compartment *)jarg1; 
  result = (double)((Compartment const *)arg1)->getSpatialDimensionsAsDouble();
  jresult = result; 
  return jresult;
}


SWIGEXPORT double SWIGSTDCALL CSharp_Compartment_getSize(void * jarg1) {
  double jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  double result;
  
  arg1 = (Compartment *)jarg1; 
  result = (double)((Compartment const *)arg1)->getSize();
  jresult = result; 
  return jresult;
}


SWIGEXPORT double SWIGSTDCALL CSharp_Compartment_getVolume(void * jarg1) {
  double jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  double result;
  
  arg1 = (Compartment *)jarg1; 
  result = (double)((Compartment const *)arg1)->getVolume();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Compartment_getUnits(void * jarg1) {
  wchar_t* jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Compartment *)jarg1; 
  result = (std::string *) &((Compartment const *)arg1)->getUnits();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Compartment_getOutside(void * jarg1) {
  wchar_t* jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Compartment *)jarg1; 
  result = (std::string *) &((Compartment const *)arg1)->getOutside();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Compartment_getConstant(void * jarg1) {
  unsigned int jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  bool result;
  
  arg1 = (Compartment *)jarg1; 
  result = (bool)((Compartment const *)arg1)->getConstant();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Compartment_isSetId(void * jarg1) {
  unsigned int jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  bool result;
  
  arg1 = (Compartment *)jarg1; 
  result = (bool)((Compartment const *)arg1)->isSetId();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Compartment_isSetName(void * jarg1) {
  unsigned int jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  bool result;
  
  arg1 = (Compartment *)jarg1; 
  result = (bool)((Compartment const *)arg1)->isSetName();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Compartment_isSetCompartmentType(void * jarg1) {
  unsigned int jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  bool result;
  
  arg1 = (Compartment *)jarg1; 
  result = (bool)((Compartment const *)arg1)->isSetCompartmentType();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Compartment_isSetSize(void * jarg1) {
  unsigned int jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  bool result;
  
  arg1 = (Compartment *)jarg1; 
  result = (bool)((Compartment const *)arg1)->isSetSize();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Compartment_isSetVolume(void * jarg1) {
  unsigned int jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  bool result;
  
  arg1 = (Compartment *)jarg1; 
  result = (bool)((Compartment const *)arg1)->isSetVolume();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Compartment_isSetUnits(void * jarg1) {
  unsigned int jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  bool result;
  
  arg1 = (Compartment *)jarg1; 
  result = (bool)((Compartment const *)arg1)->isSetUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Compartment_isSetOutside(void * jarg1) {
  unsigned int jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  bool result;
  
  arg1 = (Compartment *)jarg1; 
  result = (bool)((Compartment const *)arg1)->isSetOutside();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Compartment_isSetSpatialDimensions(void * jarg1) {
  unsigned int jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  bool result;
  
  arg1 = (Compartment *)jarg1; 
  result = (bool)((Compartment const *)arg1)->isSetSpatialDimensions();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Compartment_isSetConstant(void * jarg1) {
  unsigned int jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  bool result;
  
  arg1 = (Compartment *)jarg1; 
  result = (bool)((Compartment const *)arg1)->isSetConstant();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Compartment_setId(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (Compartment *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setId((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Compartment_setName(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (Compartment *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setName((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Compartment_setCompartmentType(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (Compartment *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setCompartmentType((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Compartment_setSpatialDimensions__SWIG_0(void * jarg1, long long jarg2) {
  int jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  unsigned int arg2 ;
  int result;
  
  arg1 = (Compartment *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (int)(arg1)->setSpatialDimensions(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Compartment_setSpatialDimensions__SWIG_1(void * jarg1, double jarg2) {
  int jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  double arg2 ;
  int result;
  
  arg1 = (Compartment *)jarg1; 
  arg2 = (double)jarg2; 
  result = (int)(arg1)->setSpatialDimensions(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Compartment_setSize(void * jarg1, double jarg2) {
  int jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  double arg2 ;
  int result;
  
  arg1 = (Compartment *)jarg1; 
  arg2 = (double)jarg2; 
  result = (int)(arg1)->setSize(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Compartment_setVolume(void * jarg1, double jarg2) {
  int jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  double arg2 ;
  int result;
  
  arg1 = (Compartment *)jarg1; 
  arg2 = (double)jarg2; 
  result = (int)(arg1)->setVolume(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Compartment_setUnits(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (Compartment *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setUnits((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Compartment_setOutside(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (Compartment *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setOutside((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Compartment_setConstant(void * jarg1, unsigned int jarg2) {
  int jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  bool arg2 ;
  int result;
  
  arg1 = (Compartment *)jarg1; 
  arg2 = jarg2 ? true : false; 
  result = (int)(arg1)->setConstant(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Compartment_unsetName(void * jarg1) {
  int jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  int result;
  
  arg1 = (Compartment *)jarg1; 
  result = (int)(arg1)->unsetName();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Compartment_unsetCompartmentType(void * jarg1) {
  int jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  int result;
  
  arg1 = (Compartment *)jarg1; 
  result = (int)(arg1)->unsetCompartmentType();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Compartment_unsetSize(void * jarg1) {
  int jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  int result;
  
  arg1 = (Compartment *)jarg1; 
  result = (int)(arg1)->unsetSize();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Compartment_unsetVolume(void * jarg1) {
  int jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  int result;
  
  arg1 = (Compartment *)jarg1; 
  result = (int)(arg1)->unsetVolume();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Compartment_unsetUnits(void * jarg1) {
  int jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  int result;
  
  arg1 = (Compartment *)jarg1; 
  result = (int)(arg1)->unsetUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Compartment_unsetOutside(void * jarg1) {
  int jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  int result;
  
  arg1 = (Compartment *)jarg1; 
  result = (int)(arg1)->unsetOutside();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Compartment_unsetSpatialDimensions(void * jarg1) {
  int jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  int result;
  
  arg1 = (Compartment *)jarg1; 
  result = (int)(arg1)->unsetSpatialDimensions();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Compartment_getDerivedUnitDefinition__SWIG_0(void * jarg1) {
  void * jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  UnitDefinition *result = 0 ;
  
  arg1 = (Compartment *)jarg1; 
  result = (UnitDefinition *)(arg1)->getDerivedUnitDefinition();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Compartment_getTypeCode(void * jarg1) {
  int jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (Compartment *)jarg1; 
  result = (SBMLTypeCode_t)((Compartment const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Compartment_getElementName(void * jarg1) {
  wchar_t* jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Compartment *)jarg1; 
  result = (std::string *) &((Compartment const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Compartment_hasRequiredAttributes(void * jarg1) {
  unsigned int jresult ;
  Compartment *arg1 = (Compartment *) 0 ;
  bool result;
  
  arg1 = (Compartment *)jarg1; 
  result = (bool)((Compartment const *)arg1)->hasRequiredAttributes();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfCompartments_clone(void * jarg1) {
  void * jresult ;
  ListOfCompartments *arg1 = (ListOfCompartments *) 0 ;
  ListOfCompartments *result = 0 ;
  
  arg1 = (ListOfCompartments *)jarg1; 
  result = (ListOfCompartments *)((ListOfCompartments const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ListOfCompartments_getTypeCode(void * jarg1) {
  int jresult ;
  ListOfCompartments *arg1 = (ListOfCompartments *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (ListOfCompartments *)jarg1; 
  result = (SBMLTypeCode_t)((ListOfCompartments const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ListOfCompartments_getItemTypeCode(void * jarg1) {
  int jresult ;
  ListOfCompartments *arg1 = (ListOfCompartments *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (ListOfCompartments *)jarg1; 
  result = (SBMLTypeCode_t)((ListOfCompartments const *)arg1)->getItemTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_ListOfCompartments_getElementName(void * jarg1) {
  wchar_t* jresult ;
  ListOfCompartments *arg1 = (ListOfCompartments *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (ListOfCompartments *)jarg1; 
  result = (std::string *) &((ListOfCompartments const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfCompartments_get__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  ListOfCompartments *arg1 = (ListOfCompartments *) 0 ;
  unsigned int arg2 ;
  Compartment *result = 0 ;
  
  arg1 = (ListOfCompartments *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (Compartment *)(arg1)->get(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfCompartments_get__SWIG_2(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  ListOfCompartments *arg1 = (ListOfCompartments *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  Compartment *result = 0 ;
  
  arg1 = (ListOfCompartments *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (Compartment *)(arg1)->get((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfCompartments_remove__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  ListOfCompartments *arg1 = (ListOfCompartments *) 0 ;
  unsigned int arg2 ;
  Compartment *result = 0 ;
  
  arg1 = (ListOfCompartments *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (Compartment *)(arg1)->remove(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfCompartments_remove__SWIG_1(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  ListOfCompartments *arg1 = (ListOfCompartments *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  Compartment *result = 0 ;
  
  arg1 = (ListOfCompartments *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (Compartment *)(arg1)->remove((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_ListOfCompartments() {
  void * jresult ;
  ListOfCompartments *result = 0 ;
  
  result = (ListOfCompartments *)new ListOfCompartments();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_ListOfCompartments(void * jarg1) {
  ListOfCompartments *arg1 = (ListOfCompartments *) 0 ;
  
  arg1 = (ListOfCompartments *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Species__SWIG_0(long long jarg1, long long jarg2) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  Species *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  
  try {
    result = (Species *)new Species(arg1,arg2);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Species__SWIG_1(void * jarg1) {
  void * jresult ;
  SBMLNamespaces *arg1 = (SBMLNamespaces *) 0 ;
  Species *result = 0 ;
  
  arg1 = (SBMLNamespaces *)jarg1; 
  
  try {
    result = (Species *)new Species(arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_Species(void * jarg1) {
  Species *arg1 = (Species *) 0 ;
  
  arg1 = (Species *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Species__SWIG_2(void * jarg1) {
  void * jresult ;
  Species *arg1 = 0 ;
  Species *result = 0 ;
  
  arg1 = (Species *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Species const & type is null", 0);
    return 0;
  } 
  
  try {
    result = (Species *)new Species((Species const &)*arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Species_clone(void * jarg1) {
  void * jresult ;
  Species *arg1 = (Species *) 0 ;
  Species *result = 0 ;
  
  arg1 = (Species *)jarg1; 
  result = (Species *)((Species const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_Species_initDefaults(void * jarg1) {
  Species *arg1 = (Species *) 0 ;
  
  arg1 = (Species *)jarg1; 
  (arg1)->initDefaults();
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Species_getId(void * jarg1) {
  wchar_t* jresult ;
  Species *arg1 = (Species *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Species *)jarg1; 
  result = (std::string *) &((Species const *)arg1)->getId();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Species_getName(void * jarg1) {
  wchar_t* jresult ;
  Species *arg1 = (Species *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Species *)jarg1; 
  result = (std::string *) &((Species const *)arg1)->getName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Species_getSpeciesType(void * jarg1) {
  wchar_t* jresult ;
  Species *arg1 = (Species *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Species *)jarg1; 
  result = (std::string *) &((Species const *)arg1)->getSpeciesType();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Species_getCompartment(void * jarg1) {
  wchar_t* jresult ;
  Species *arg1 = (Species *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Species *)jarg1; 
  result = (std::string *) &((Species const *)arg1)->getCompartment();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT double SWIGSTDCALL CSharp_Species_getInitialAmount(void * jarg1) {
  double jresult ;
  Species *arg1 = (Species *) 0 ;
  double result;
  
  arg1 = (Species *)jarg1; 
  result = (double)((Species const *)arg1)->getInitialAmount();
  jresult = result; 
  return jresult;
}


SWIGEXPORT double SWIGSTDCALL CSharp_Species_getInitialConcentration(void * jarg1) {
  double jresult ;
  Species *arg1 = (Species *) 0 ;
  double result;
  
  arg1 = (Species *)jarg1; 
  result = (double)((Species const *)arg1)->getInitialConcentration();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Species_getSubstanceUnits(void * jarg1) {
  wchar_t* jresult ;
  Species *arg1 = (Species *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Species *)jarg1; 
  result = (std::string *) &((Species const *)arg1)->getSubstanceUnits();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Species_getSpatialSizeUnits(void * jarg1) {
  wchar_t* jresult ;
  Species *arg1 = (Species *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Species *)jarg1; 
  result = (std::string *) &((Species const *)arg1)->getSpatialSizeUnits();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Species_getUnits(void * jarg1) {
  wchar_t* jresult ;
  Species *arg1 = (Species *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Species *)jarg1; 
  result = (std::string *) &((Species const *)arg1)->getUnits();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Species_getHasOnlySubstanceUnits(void * jarg1) {
  unsigned int jresult ;
  Species *arg1 = (Species *) 0 ;
  bool result;
  
  arg1 = (Species *)jarg1; 
  result = (bool)((Species const *)arg1)->getHasOnlySubstanceUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Species_getBoundaryCondition(void * jarg1) {
  unsigned int jresult ;
  Species *arg1 = (Species *) 0 ;
  bool result;
  
  arg1 = (Species *)jarg1; 
  result = (bool)((Species const *)arg1)->getBoundaryCondition();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Species_getCharge(void * jarg1) {
  int jresult ;
  Species *arg1 = (Species *) 0 ;
  int result;
  
  arg1 = (Species *)jarg1; 
  result = (int)((Species const *)arg1)->getCharge();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Species_getConstant(void * jarg1) {
  unsigned int jresult ;
  Species *arg1 = (Species *) 0 ;
  bool result;
  
  arg1 = (Species *)jarg1; 
  result = (bool)((Species const *)arg1)->getConstant();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Species_getConversionFactor(void * jarg1) {
  wchar_t* jresult ;
  Species *arg1 = (Species *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Species *)jarg1; 
  result = (std::string *) &((Species const *)arg1)->getConversionFactor();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Species_isSetId(void * jarg1) {
  unsigned int jresult ;
  Species *arg1 = (Species *) 0 ;
  bool result;
  
  arg1 = (Species *)jarg1; 
  result = (bool)((Species const *)arg1)->isSetId();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Species_isSetName(void * jarg1) {
  unsigned int jresult ;
  Species *arg1 = (Species *) 0 ;
  bool result;
  
  arg1 = (Species *)jarg1; 
  result = (bool)((Species const *)arg1)->isSetName();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Species_isSetSpeciesType(void * jarg1) {
  unsigned int jresult ;
  Species *arg1 = (Species *) 0 ;
  bool result;
  
  arg1 = (Species *)jarg1; 
  result = (bool)((Species const *)arg1)->isSetSpeciesType();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Species_isSetCompartment(void * jarg1) {
  unsigned int jresult ;
  Species *arg1 = (Species *) 0 ;
  bool result;
  
  arg1 = (Species *)jarg1; 
  result = (bool)((Species const *)arg1)->isSetCompartment();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Species_isSetInitialAmount(void * jarg1) {
  unsigned int jresult ;
  Species *arg1 = (Species *) 0 ;
  bool result;
  
  arg1 = (Species *)jarg1; 
  result = (bool)((Species const *)arg1)->isSetInitialAmount();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Species_isSetInitialConcentration(void * jarg1) {
  unsigned int jresult ;
  Species *arg1 = (Species *) 0 ;
  bool result;
  
  arg1 = (Species *)jarg1; 
  result = (bool)((Species const *)arg1)->isSetInitialConcentration();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Species_isSetSubstanceUnits(void * jarg1) {
  unsigned int jresult ;
  Species *arg1 = (Species *) 0 ;
  bool result;
  
  arg1 = (Species *)jarg1; 
  result = (bool)((Species const *)arg1)->isSetSubstanceUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Species_isSetSpatialSizeUnits(void * jarg1) {
  unsigned int jresult ;
  Species *arg1 = (Species *) 0 ;
  bool result;
  
  arg1 = (Species *)jarg1; 
  result = (bool)((Species const *)arg1)->isSetSpatialSizeUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Species_isSetUnits(void * jarg1) {
  unsigned int jresult ;
  Species *arg1 = (Species *) 0 ;
  bool result;
  
  arg1 = (Species *)jarg1; 
  result = (bool)((Species const *)arg1)->isSetUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Species_isSetCharge(void * jarg1) {
  unsigned int jresult ;
  Species *arg1 = (Species *) 0 ;
  bool result;
  
  arg1 = (Species *)jarg1; 
  result = (bool)((Species const *)arg1)->isSetCharge();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Species_isSetConversionFactor(void * jarg1) {
  unsigned int jresult ;
  Species *arg1 = (Species *) 0 ;
  bool result;
  
  arg1 = (Species *)jarg1; 
  result = (bool)((Species const *)arg1)->isSetConversionFactor();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Species_isSetBoundaryCondition(void * jarg1) {
  unsigned int jresult ;
  Species *arg1 = (Species *) 0 ;
  bool result;
  
  arg1 = (Species *)jarg1; 
  result = (bool)((Species const *)arg1)->isSetBoundaryCondition();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Species_isSetHasOnlySubstanceUnits(void * jarg1) {
  unsigned int jresult ;
  Species *arg1 = (Species *) 0 ;
  bool result;
  
  arg1 = (Species *)jarg1; 
  result = (bool)((Species const *)arg1)->isSetHasOnlySubstanceUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Species_isSetConstant(void * jarg1) {
  unsigned int jresult ;
  Species *arg1 = (Species *) 0 ;
  bool result;
  
  arg1 = (Species *)jarg1; 
  result = (bool)((Species const *)arg1)->isSetConstant();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Species_setId(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  Species *arg1 = (Species *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (Species *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setId((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Species_setName(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  Species *arg1 = (Species *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (Species *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setName((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Species_setSpeciesType(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  Species *arg1 = (Species *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (Species *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setSpeciesType((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Species_setCompartment(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  Species *arg1 = (Species *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (Species *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setCompartment((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Species_setInitialAmount(void * jarg1, double jarg2) {
  int jresult ;
  Species *arg1 = (Species *) 0 ;
  double arg2 ;
  int result;
  
  arg1 = (Species *)jarg1; 
  arg2 = (double)jarg2; 
  result = (int)(arg1)->setInitialAmount(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Species_setInitialConcentration(void * jarg1, double jarg2) {
  int jresult ;
  Species *arg1 = (Species *) 0 ;
  double arg2 ;
  int result;
  
  arg1 = (Species *)jarg1; 
  arg2 = (double)jarg2; 
  result = (int)(arg1)->setInitialConcentration(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Species_setSubstanceUnits(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  Species *arg1 = (Species *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (Species *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setSubstanceUnits((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Species_setSpatialSizeUnits(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  Species *arg1 = (Species *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (Species *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setSpatialSizeUnits((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Species_setUnits(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  Species *arg1 = (Species *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (Species *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setUnits((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Species_setHasOnlySubstanceUnits(void * jarg1, unsigned int jarg2) {
  int jresult ;
  Species *arg1 = (Species *) 0 ;
  bool arg2 ;
  int result;
  
  arg1 = (Species *)jarg1; 
  arg2 = jarg2 ? true : false; 
  result = (int)(arg1)->setHasOnlySubstanceUnits(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Species_setBoundaryCondition(void * jarg1, unsigned int jarg2) {
  int jresult ;
  Species *arg1 = (Species *) 0 ;
  bool arg2 ;
  int result;
  
  arg1 = (Species *)jarg1; 
  arg2 = jarg2 ? true : false; 
  result = (int)(arg1)->setBoundaryCondition(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Species_setCharge(void * jarg1, int jarg2) {
  int jresult ;
  Species *arg1 = (Species *) 0 ;
  int arg2 ;
  int result;
  
  arg1 = (Species *)jarg1; 
  arg2 = (int)jarg2; 
  result = (int)(arg1)->setCharge(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Species_setConstant(void * jarg1, unsigned int jarg2) {
  int jresult ;
  Species *arg1 = (Species *) 0 ;
  bool arg2 ;
  int result;
  
  arg1 = (Species *)jarg1; 
  arg2 = jarg2 ? true : false; 
  result = (int)(arg1)->setConstant(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Species_setConversionFactor(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  Species *arg1 = (Species *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (Species *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setConversionFactor((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Species_unsetName(void * jarg1) {
  int jresult ;
  Species *arg1 = (Species *) 0 ;
  int result;
  
  arg1 = (Species *)jarg1; 
  result = (int)(arg1)->unsetName();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Species_unsetSpeciesType(void * jarg1) {
  int jresult ;
  Species *arg1 = (Species *) 0 ;
  int result;
  
  arg1 = (Species *)jarg1; 
  result = (int)(arg1)->unsetSpeciesType();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Species_unsetInitialAmount(void * jarg1) {
  int jresult ;
  Species *arg1 = (Species *) 0 ;
  int result;
  
  arg1 = (Species *)jarg1; 
  result = (int)(arg1)->unsetInitialAmount();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Species_unsetInitialConcentration(void * jarg1) {
  int jresult ;
  Species *arg1 = (Species *) 0 ;
  int result;
  
  arg1 = (Species *)jarg1; 
  result = (int)(arg1)->unsetInitialConcentration();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Species_unsetSubstanceUnits(void * jarg1) {
  int jresult ;
  Species *arg1 = (Species *) 0 ;
  int result;
  
  arg1 = (Species *)jarg1; 
  result = (int)(arg1)->unsetSubstanceUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Species_unsetSpatialSizeUnits(void * jarg1) {
  int jresult ;
  Species *arg1 = (Species *) 0 ;
  int result;
  
  arg1 = (Species *)jarg1; 
  result = (int)(arg1)->unsetSpatialSizeUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Species_unsetUnits(void * jarg1) {
  int jresult ;
  Species *arg1 = (Species *) 0 ;
  int result;
  
  arg1 = (Species *)jarg1; 
  result = (int)(arg1)->unsetUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Species_unsetCharge(void * jarg1) {
  int jresult ;
  Species *arg1 = (Species *) 0 ;
  int result;
  
  arg1 = (Species *)jarg1; 
  result = (int)(arg1)->unsetCharge();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Species_unsetConversionFactor(void * jarg1) {
  int jresult ;
  Species *arg1 = (Species *) 0 ;
  int result;
  
  arg1 = (Species *)jarg1; 
  result = (int)(arg1)->unsetConversionFactor();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Species_getDerivedUnitDefinition__SWIG_0(void * jarg1) {
  void * jresult ;
  Species *arg1 = (Species *) 0 ;
  UnitDefinition *result = 0 ;
  
  arg1 = (Species *)jarg1; 
  result = (UnitDefinition *)(arg1)->getDerivedUnitDefinition();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Species_getTypeCode(void * jarg1) {
  int jresult ;
  Species *arg1 = (Species *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (Species *)jarg1; 
  result = (SBMLTypeCode_t)((Species const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Species_getElementName(void * jarg1) {
  wchar_t* jresult ;
  Species *arg1 = (Species *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Species *)jarg1; 
  result = (std::string *) &((Species const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Species_hasRequiredAttributes(void * jarg1) {
  unsigned int jresult ;
  Species *arg1 = (Species *) 0 ;
  bool result;
  
  arg1 = (Species *)jarg1; 
  result = (bool)((Species const *)arg1)->hasRequiredAttributes();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfSpecies_clone(void * jarg1) {
  void * jresult ;
  ListOfSpecies *arg1 = (ListOfSpecies *) 0 ;
  ListOfSpecies *result = 0 ;
  
  arg1 = (ListOfSpecies *)jarg1; 
  result = (ListOfSpecies *)((ListOfSpecies const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ListOfSpecies_getTypeCode(void * jarg1) {
  int jresult ;
  ListOfSpecies *arg1 = (ListOfSpecies *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (ListOfSpecies *)jarg1; 
  result = (SBMLTypeCode_t)((ListOfSpecies const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ListOfSpecies_getItemTypeCode(void * jarg1) {
  int jresult ;
  ListOfSpecies *arg1 = (ListOfSpecies *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (ListOfSpecies *)jarg1; 
  result = (SBMLTypeCode_t)((ListOfSpecies const *)arg1)->getItemTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_ListOfSpecies_getElementName(void * jarg1) {
  wchar_t* jresult ;
  ListOfSpecies *arg1 = (ListOfSpecies *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (ListOfSpecies *)jarg1; 
  result = (std::string *) &((ListOfSpecies const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfSpecies_get__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  ListOfSpecies *arg1 = (ListOfSpecies *) 0 ;
  unsigned int arg2 ;
  Species *result = 0 ;
  
  arg1 = (ListOfSpecies *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (Species *)(arg1)->get(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfSpecies_get__SWIG_2(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  ListOfSpecies *arg1 = (ListOfSpecies *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  Species *result = 0 ;
  
  arg1 = (ListOfSpecies *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (Species *)(arg1)->get((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfSpecies_remove__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  ListOfSpecies *arg1 = (ListOfSpecies *) 0 ;
  unsigned int arg2 ;
  Species *result = 0 ;
  
  arg1 = (ListOfSpecies *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (Species *)(arg1)->remove(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfSpecies_remove__SWIG_1(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  ListOfSpecies *arg1 = (ListOfSpecies *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  Species *result = 0 ;
  
  arg1 = (ListOfSpecies *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (Species *)(arg1)->remove((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_ListOfSpecies() {
  void * jresult ;
  ListOfSpecies *result = 0 ;
  
  result = (ListOfSpecies *)new ListOfSpecies();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_ListOfSpecies(void * jarg1) {
  ListOfSpecies *arg1 = (ListOfSpecies *) 0 ;
  
  arg1 = (ListOfSpecies *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Parameter__SWIG_0(long long jarg1, long long jarg2) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  Parameter *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  
  try {
    result = (Parameter *)new Parameter(arg1,arg2);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Parameter__SWIG_1(void * jarg1) {
  void * jresult ;
  SBMLNamespaces *arg1 = (SBMLNamespaces *) 0 ;
  Parameter *result = 0 ;
  
  arg1 = (SBMLNamespaces *)jarg1; 
  
  try {
    result = (Parameter *)new Parameter(arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_Parameter(void * jarg1) {
  Parameter *arg1 = (Parameter *) 0 ;
  
  arg1 = (Parameter *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Parameter__SWIG_2(void * jarg1) {
  void * jresult ;
  Parameter *arg1 = 0 ;
  Parameter *result = 0 ;
  
  arg1 = (Parameter *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Parameter const & type is null", 0);
    return 0;
  } 
  
  try {
    result = (Parameter *)new Parameter((Parameter const &)*arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Parameter_clone(void * jarg1) {
  void * jresult ;
  Parameter *arg1 = (Parameter *) 0 ;
  Parameter *result = 0 ;
  
  arg1 = (Parameter *)jarg1; 
  result = (Parameter *)((Parameter const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_Parameter_initDefaults(void * jarg1) {
  Parameter *arg1 = (Parameter *) 0 ;
  
  arg1 = (Parameter *)jarg1; 
  (arg1)->initDefaults();
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Parameter_getId(void * jarg1) {
  wchar_t* jresult ;
  Parameter *arg1 = (Parameter *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Parameter *)jarg1; 
  result = (std::string *) &((Parameter const *)arg1)->getId();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Parameter_getName(void * jarg1) {
  wchar_t* jresult ;
  Parameter *arg1 = (Parameter *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Parameter *)jarg1; 
  result = (std::string *) &((Parameter const *)arg1)->getName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT double SWIGSTDCALL CSharp_Parameter_getValue(void * jarg1) {
  double jresult ;
  Parameter *arg1 = (Parameter *) 0 ;
  double result;
  
  arg1 = (Parameter *)jarg1; 
  result = (double)((Parameter const *)arg1)->getValue();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Parameter_getUnits(void * jarg1) {
  wchar_t* jresult ;
  Parameter *arg1 = (Parameter *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Parameter *)jarg1; 
  result = (std::string *) &((Parameter const *)arg1)->getUnits();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Parameter_getConstant(void * jarg1) {
  unsigned int jresult ;
  Parameter *arg1 = (Parameter *) 0 ;
  bool result;
  
  arg1 = (Parameter *)jarg1; 
  result = (bool)((Parameter const *)arg1)->getConstant();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Parameter_isSetId(void * jarg1) {
  unsigned int jresult ;
  Parameter *arg1 = (Parameter *) 0 ;
  bool result;
  
  arg1 = (Parameter *)jarg1; 
  result = (bool)((Parameter const *)arg1)->isSetId();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Parameter_isSetName(void * jarg1) {
  unsigned int jresult ;
  Parameter *arg1 = (Parameter *) 0 ;
  bool result;
  
  arg1 = (Parameter *)jarg1; 
  result = (bool)((Parameter const *)arg1)->isSetName();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Parameter_isSetValue(void * jarg1) {
  unsigned int jresult ;
  Parameter *arg1 = (Parameter *) 0 ;
  bool result;
  
  arg1 = (Parameter *)jarg1; 
  result = (bool)((Parameter const *)arg1)->isSetValue();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Parameter_isSetUnits(void * jarg1) {
  unsigned int jresult ;
  Parameter *arg1 = (Parameter *) 0 ;
  bool result;
  
  arg1 = (Parameter *)jarg1; 
  result = (bool)((Parameter const *)arg1)->isSetUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Parameter_isSetConstant(void * jarg1) {
  unsigned int jresult ;
  Parameter *arg1 = (Parameter *) 0 ;
  bool result;
  
  arg1 = (Parameter *)jarg1; 
  result = (bool)((Parameter const *)arg1)->isSetConstant();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Parameter_setId(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  Parameter *arg1 = (Parameter *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (Parameter *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setId((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Parameter_setName(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  Parameter *arg1 = (Parameter *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (Parameter *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setName((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Parameter_setValue(void * jarg1, double jarg2) {
  int jresult ;
  Parameter *arg1 = (Parameter *) 0 ;
  double arg2 ;
  int result;
  
  arg1 = (Parameter *)jarg1; 
  arg2 = (double)jarg2; 
  result = (int)(arg1)->setValue(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Parameter_setUnits(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  Parameter *arg1 = (Parameter *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (Parameter *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setUnits((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Parameter_setConstant(void * jarg1, unsigned int jarg2) {
  int jresult ;
  Parameter *arg1 = (Parameter *) 0 ;
  bool arg2 ;
  int result;
  
  arg1 = (Parameter *)jarg1; 
  arg2 = jarg2 ? true : false; 
  result = (int)(arg1)->setConstant(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Parameter_unsetName(void * jarg1) {
  int jresult ;
  Parameter *arg1 = (Parameter *) 0 ;
  int result;
  
  arg1 = (Parameter *)jarg1; 
  result = (int)(arg1)->unsetName();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Parameter_unsetValue(void * jarg1) {
  int jresult ;
  Parameter *arg1 = (Parameter *) 0 ;
  int result;
  
  arg1 = (Parameter *)jarg1; 
  result = (int)(arg1)->unsetValue();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Parameter_unsetUnits(void * jarg1) {
  int jresult ;
  Parameter *arg1 = (Parameter *) 0 ;
  int result;
  
  arg1 = (Parameter *)jarg1; 
  result = (int)(arg1)->unsetUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Parameter_getDerivedUnitDefinition__SWIG_0(void * jarg1) {
  void * jresult ;
  Parameter *arg1 = (Parameter *) 0 ;
  UnitDefinition *result = 0 ;
  
  arg1 = (Parameter *)jarg1; 
  result = (UnitDefinition *)(arg1)->getDerivedUnitDefinition();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Parameter_getTypeCode(void * jarg1) {
  int jresult ;
  Parameter *arg1 = (Parameter *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (Parameter *)jarg1; 
  result = (SBMLTypeCode_t)((Parameter const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Parameter_getElementName(void * jarg1) {
  wchar_t* jresult ;
  Parameter *arg1 = (Parameter *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Parameter *)jarg1; 
  result = (std::string *) &((Parameter const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Parameter_hasRequiredAttributes(void * jarg1) {
  unsigned int jresult ;
  Parameter *arg1 = (Parameter *) 0 ;
  bool result;
  
  arg1 = (Parameter *)jarg1; 
  result = (bool)((Parameter const *)arg1)->hasRequiredAttributes();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfParameters_clone(void * jarg1) {
  void * jresult ;
  ListOfParameters *arg1 = (ListOfParameters *) 0 ;
  ListOfParameters *result = 0 ;
  
  arg1 = (ListOfParameters *)jarg1; 
  result = (ListOfParameters *)((ListOfParameters const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ListOfParameters_getTypeCode(void * jarg1) {
  int jresult ;
  ListOfParameters *arg1 = (ListOfParameters *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (ListOfParameters *)jarg1; 
  result = (SBMLTypeCode_t)((ListOfParameters const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ListOfParameters_getItemTypeCode(void * jarg1) {
  int jresult ;
  ListOfParameters *arg1 = (ListOfParameters *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (ListOfParameters *)jarg1; 
  result = (SBMLTypeCode_t)((ListOfParameters const *)arg1)->getItemTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_ListOfParameters_getElementName(void * jarg1) {
  wchar_t* jresult ;
  ListOfParameters *arg1 = (ListOfParameters *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (ListOfParameters *)jarg1; 
  result = (std::string *) &((ListOfParameters const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfParameters_get__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  ListOfParameters *arg1 = (ListOfParameters *) 0 ;
  unsigned int arg2 ;
  Parameter *result = 0 ;
  
  arg1 = (ListOfParameters *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (Parameter *)(arg1)->get(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfParameters_get__SWIG_2(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  ListOfParameters *arg1 = (ListOfParameters *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  Parameter *result = 0 ;
  
  arg1 = (ListOfParameters *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (Parameter *)(arg1)->get((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfParameters_remove__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  ListOfParameters *arg1 = (ListOfParameters *) 0 ;
  unsigned int arg2 ;
  Parameter *result = 0 ;
  
  arg1 = (ListOfParameters *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (Parameter *)(arg1)->remove(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfParameters_remove__SWIG_1(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  ListOfParameters *arg1 = (ListOfParameters *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  Parameter *result = 0 ;
  
  arg1 = (ListOfParameters *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (Parameter *)(arg1)->remove((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_ListOfParameters() {
  void * jresult ;
  ListOfParameters *result = 0 ;
  
  result = (ListOfParameters *)new ListOfParameters();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_ListOfParameters(void * jarg1) {
  ListOfParameters *arg1 = (ListOfParameters *) 0 ;
  
  arg1 = (ListOfParameters *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_LocalParameter__SWIG_0(long long jarg1, long long jarg2) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  LocalParameter *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  
  try {
    result = (LocalParameter *)new LocalParameter(arg1,arg2);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_LocalParameter__SWIG_1(void * jarg1) {
  void * jresult ;
  SBMLNamespaces *arg1 = (SBMLNamespaces *) 0 ;
  LocalParameter *result = 0 ;
  
  arg1 = (SBMLNamespaces *)jarg1; 
  
  try {
    result = (LocalParameter *)new LocalParameter(arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_LocalParameter(void * jarg1) {
  LocalParameter *arg1 = (LocalParameter *) 0 ;
  
  arg1 = (LocalParameter *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_LocalParameter__SWIG_2(void * jarg1) {
  void * jresult ;
  LocalParameter *arg1 = 0 ;
  LocalParameter *result = 0 ;
  
  arg1 = (LocalParameter *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "LocalParameter const & type is null", 0);
    return 0;
  } 
  
  try {
    result = (LocalParameter *)new LocalParameter((LocalParameter const &)*arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_LocalParameter__SWIG_3(void * jarg1) {
  void * jresult ;
  Parameter *arg1 = 0 ;
  LocalParameter *result = 0 ;
  
  arg1 = (Parameter *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Parameter const & type is null", 0);
    return 0;
  } 
  
  try {
    result = (LocalParameter *)new LocalParameter((Parameter const &)*arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_LocalParameter_clone(void * jarg1) {
  void * jresult ;
  LocalParameter *arg1 = (LocalParameter *) 0 ;
  LocalParameter *result = 0 ;
  
  arg1 = (LocalParameter *)jarg1; 
  result = (LocalParameter *)((LocalParameter const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_LocalParameter_getDerivedUnitDefinition__SWIG_0(void * jarg1) {
  void * jresult ;
  LocalParameter *arg1 = (LocalParameter *) 0 ;
  UnitDefinition *result = 0 ;
  
  arg1 = (LocalParameter *)jarg1; 
  result = (UnitDefinition *)(arg1)->getDerivedUnitDefinition();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_LocalParameter_getTypeCode(void * jarg1) {
  int jresult ;
  LocalParameter *arg1 = (LocalParameter *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (LocalParameter *)jarg1; 
  result = (SBMLTypeCode_t)((LocalParameter const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_LocalParameter_getElementName(void * jarg1) {
  wchar_t* jresult ;
  LocalParameter *arg1 = (LocalParameter *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (LocalParameter *)jarg1; 
  result = (std::string *) &((LocalParameter const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_LocalParameter_hasRequiredAttributes(void * jarg1) {
  unsigned int jresult ;
  LocalParameter *arg1 = (LocalParameter *) 0 ;
  bool result;
  
  arg1 = (LocalParameter *)jarg1; 
  result = (bool)((LocalParameter const *)arg1)->hasRequiredAttributes();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfLocalParameters_clone(void * jarg1) {
  void * jresult ;
  ListOfLocalParameters *arg1 = (ListOfLocalParameters *) 0 ;
  ListOfLocalParameters *result = 0 ;
  
  arg1 = (ListOfLocalParameters *)jarg1; 
  result = (ListOfLocalParameters *)((ListOfLocalParameters const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ListOfLocalParameters_getTypeCode(void * jarg1) {
  int jresult ;
  ListOfLocalParameters *arg1 = (ListOfLocalParameters *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (ListOfLocalParameters *)jarg1; 
  result = (SBMLTypeCode_t)((ListOfLocalParameters const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ListOfLocalParameters_getItemTypeCode(void * jarg1) {
  int jresult ;
  ListOfLocalParameters *arg1 = (ListOfLocalParameters *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (ListOfLocalParameters *)jarg1; 
  result = (SBMLTypeCode_t)((ListOfLocalParameters const *)arg1)->getItemTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_ListOfLocalParameters_getElementName(void * jarg1) {
  wchar_t* jresult ;
  ListOfLocalParameters *arg1 = (ListOfLocalParameters *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (ListOfLocalParameters *)jarg1; 
  result = (std::string *) &((ListOfLocalParameters const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfLocalParameters_get__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  ListOfLocalParameters *arg1 = (ListOfLocalParameters *) 0 ;
  unsigned int arg2 ;
  LocalParameter *result = 0 ;
  
  arg1 = (ListOfLocalParameters *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (LocalParameter *)(arg1)->get(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfLocalParameters_get__SWIG_2(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  ListOfLocalParameters *arg1 = (ListOfLocalParameters *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  LocalParameter *result = 0 ;
  
  arg1 = (ListOfLocalParameters *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (LocalParameter *)(arg1)->get((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfLocalParameters_remove__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  ListOfLocalParameters *arg1 = (ListOfLocalParameters *) 0 ;
  unsigned int arg2 ;
  LocalParameter *result = 0 ;
  
  arg1 = (ListOfLocalParameters *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (LocalParameter *)(arg1)->remove(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfLocalParameters_remove__SWIG_1(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  ListOfLocalParameters *arg1 = (ListOfLocalParameters *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  LocalParameter *result = 0 ;
  
  arg1 = (ListOfLocalParameters *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (LocalParameter *)(arg1)->remove((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_ListOfLocalParameters() {
  void * jresult ;
  ListOfLocalParameters *result = 0 ;
  
  result = (ListOfLocalParameters *)new ListOfLocalParameters();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_ListOfLocalParameters(void * jarg1) {
  ListOfLocalParameters *arg1 = (ListOfLocalParameters *) 0 ;
  
  arg1 = (ListOfLocalParameters *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_InitialAssignment__SWIG_0(long long jarg1, long long jarg2) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  InitialAssignment *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  
  try {
    result = (InitialAssignment *)new InitialAssignment(arg1,arg2);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_InitialAssignment__SWIG_1(void * jarg1) {
  void * jresult ;
  SBMLNamespaces *arg1 = (SBMLNamespaces *) 0 ;
  InitialAssignment *result = 0 ;
  
  arg1 = (SBMLNamespaces *)jarg1; 
  
  try {
    result = (InitialAssignment *)new InitialAssignment(arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_InitialAssignment(void * jarg1) {
  InitialAssignment *arg1 = (InitialAssignment *) 0 ;
  
  arg1 = (InitialAssignment *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_InitialAssignment__SWIG_2(void * jarg1) {
  void * jresult ;
  InitialAssignment *arg1 = 0 ;
  InitialAssignment *result = 0 ;
  
  arg1 = (InitialAssignment *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "InitialAssignment const & type is null", 0);
    return 0;
  } 
  
  try {
    result = (InitialAssignment *)new InitialAssignment((InitialAssignment const &)*arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_InitialAssignment_clone(void * jarg1) {
  void * jresult ;
  InitialAssignment *arg1 = (InitialAssignment *) 0 ;
  InitialAssignment *result = 0 ;
  
  arg1 = (InitialAssignment *)jarg1; 
  result = (InitialAssignment *)((InitialAssignment const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_InitialAssignment_getSymbol(void * jarg1) {
  wchar_t* jresult ;
  InitialAssignment *arg1 = (InitialAssignment *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (InitialAssignment *)jarg1; 
  result = (std::string *) &((InitialAssignment const *)arg1)->getSymbol();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_InitialAssignment_getMath(void * jarg1) {
  void * jresult ;
  InitialAssignment *arg1 = (InitialAssignment *) 0 ;
  ASTNode *result = 0 ;
  
  arg1 = (InitialAssignment *)jarg1; 
  result = (ASTNode *)((InitialAssignment const *)arg1)->getMath();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_InitialAssignment_isSetSymbol(void * jarg1) {
  unsigned int jresult ;
  InitialAssignment *arg1 = (InitialAssignment *) 0 ;
  bool result;
  
  arg1 = (InitialAssignment *)jarg1; 
  result = (bool)((InitialAssignment const *)arg1)->isSetSymbol();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_InitialAssignment_isSetMath(void * jarg1) {
  unsigned int jresult ;
  InitialAssignment *arg1 = (InitialAssignment *) 0 ;
  bool result;
  
  arg1 = (InitialAssignment *)jarg1; 
  result = (bool)((InitialAssignment const *)arg1)->isSetMath();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_InitialAssignment_setSymbol(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  InitialAssignment *arg1 = (InitialAssignment *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (InitialAssignment *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setSymbol((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_InitialAssignment_setMath(void * jarg1, void * jarg2) {
  int jresult ;
  InitialAssignment *arg1 = (InitialAssignment *) 0 ;
  ASTNode *arg2 = (ASTNode *) 0 ;
  int result;
  
  arg1 = (InitialAssignment *)jarg1; 
  arg2 = (ASTNode *)jarg2; 
  result = (int)(arg1)->setMath((ASTNode const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_InitialAssignment_getDerivedUnitDefinition__SWIG_0(void * jarg1) {
  void * jresult ;
  InitialAssignment *arg1 = (InitialAssignment *) 0 ;
  UnitDefinition *result = 0 ;
  
  arg1 = (InitialAssignment *)jarg1; 
  result = (UnitDefinition *)(arg1)->getDerivedUnitDefinition();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_InitialAssignment_containsUndeclaredUnits__SWIG_0(void * jarg1) {
  unsigned int jresult ;
  InitialAssignment *arg1 = (InitialAssignment *) 0 ;
  bool result;
  
  arg1 = (InitialAssignment *)jarg1; 
  result = (bool)(arg1)->containsUndeclaredUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_InitialAssignment_getTypeCode(void * jarg1) {
  int jresult ;
  InitialAssignment *arg1 = (InitialAssignment *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (InitialAssignment *)jarg1; 
  result = (SBMLTypeCode_t)((InitialAssignment const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_InitialAssignment_getElementName(void * jarg1) {
  wchar_t* jresult ;
  InitialAssignment *arg1 = (InitialAssignment *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (InitialAssignment *)jarg1; 
  result = (std::string *) &((InitialAssignment const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_InitialAssignment_hasRequiredAttributes(void * jarg1) {
  unsigned int jresult ;
  InitialAssignment *arg1 = (InitialAssignment *) 0 ;
  bool result;
  
  arg1 = (InitialAssignment *)jarg1; 
  result = (bool)((InitialAssignment const *)arg1)->hasRequiredAttributes();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_InitialAssignment_hasRequiredElements(void * jarg1) {
  unsigned int jresult ;
  InitialAssignment *arg1 = (InitialAssignment *) 0 ;
  bool result;
  
  arg1 = (InitialAssignment *)jarg1; 
  result = (bool)((InitialAssignment const *)arg1)->hasRequiredElements();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_InitialAssignment_getId(void * jarg1) {
  wchar_t* jresult ;
  InitialAssignment *arg1 = (InitialAssignment *) 0 ;
  std::string result;
  
  arg1 = (InitialAssignment *)jarg1; 
  result = ((InitialAssignment const *)arg1)->getId();
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfInitialAssignments_clone(void * jarg1) {
  void * jresult ;
  ListOfInitialAssignments *arg1 = (ListOfInitialAssignments *) 0 ;
  ListOfInitialAssignments *result = 0 ;
  
  arg1 = (ListOfInitialAssignments *)jarg1; 
  result = (ListOfInitialAssignments *)((ListOfInitialAssignments const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ListOfInitialAssignments_getTypeCode(void * jarg1) {
  int jresult ;
  ListOfInitialAssignments *arg1 = (ListOfInitialAssignments *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (ListOfInitialAssignments *)jarg1; 
  result = (SBMLTypeCode_t)((ListOfInitialAssignments const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ListOfInitialAssignments_getItemTypeCode(void * jarg1) {
  int jresult ;
  ListOfInitialAssignments *arg1 = (ListOfInitialAssignments *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (ListOfInitialAssignments *)jarg1; 
  result = (SBMLTypeCode_t)((ListOfInitialAssignments const *)arg1)->getItemTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_ListOfInitialAssignments_getElementName(void * jarg1) {
  wchar_t* jresult ;
  ListOfInitialAssignments *arg1 = (ListOfInitialAssignments *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (ListOfInitialAssignments *)jarg1; 
  result = (std::string *) &((ListOfInitialAssignments const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfInitialAssignments_get__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  ListOfInitialAssignments *arg1 = (ListOfInitialAssignments *) 0 ;
  unsigned int arg2 ;
  InitialAssignment *result = 0 ;
  
  arg1 = (ListOfInitialAssignments *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (InitialAssignment *)(arg1)->get(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfInitialAssignments_get__SWIG_2(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  ListOfInitialAssignments *arg1 = (ListOfInitialAssignments *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  InitialAssignment *result = 0 ;
  
  arg1 = (ListOfInitialAssignments *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (InitialAssignment *)(arg1)->get((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfInitialAssignments_remove__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  ListOfInitialAssignments *arg1 = (ListOfInitialAssignments *) 0 ;
  unsigned int arg2 ;
  InitialAssignment *result = 0 ;
  
  arg1 = (ListOfInitialAssignments *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (InitialAssignment *)(arg1)->remove(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfInitialAssignments_remove__SWIG_1(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  ListOfInitialAssignments *arg1 = (ListOfInitialAssignments *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  InitialAssignment *result = 0 ;
  
  arg1 = (ListOfInitialAssignments *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (InitialAssignment *)(arg1)->remove((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_ListOfInitialAssignments() {
  void * jresult ;
  ListOfInitialAssignments *result = 0 ;
  
  result = (ListOfInitialAssignments *)new ListOfInitialAssignments();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_ListOfInitialAssignments(void * jarg1) {
  ListOfInitialAssignments *arg1 = (ListOfInitialAssignments *) 0 ;
  
  arg1 = (ListOfInitialAssignments *)jarg1; 
  delete arg1;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_Rule(void * jarg1) {
  Rule *arg1 = (Rule *) 0 ;
  
  arg1 = (Rule *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Rule(void * jarg1) {
  void * jresult ;
  Rule *arg1 = 0 ;
  Rule *result = 0 ;
  
  arg1 = (Rule *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Rule const & type is null", 0);
    return 0;
  } 
  result = (Rule *)new Rule((Rule const &)*arg1);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Rule_clone(void * jarg1) {
  void * jresult ;
  Rule *arg1 = (Rule *) 0 ;
  Rule *result = 0 ;
  
  arg1 = (Rule *)jarg1; 
  result = (Rule *)((Rule const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Rule_getFormula(void * jarg1) {
  wchar_t* jresult ;
  Rule *arg1 = (Rule *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Rule *)jarg1; 
  result = (std::string *) &((Rule const *)arg1)->getFormula();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Rule_getMath(void * jarg1) {
  void * jresult ;
  Rule *arg1 = (Rule *) 0 ;
  ASTNode *result = 0 ;
  
  arg1 = (Rule *)jarg1; 
  result = (ASTNode *)((Rule const *)arg1)->getMath();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Rule_getVariable(void * jarg1) {
  wchar_t* jresult ;
  Rule *arg1 = (Rule *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Rule *)jarg1; 
  result = (std::string *) &((Rule const *)arg1)->getVariable();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Rule_getUnits(void * jarg1) {
  wchar_t* jresult ;
  Rule *arg1 = (Rule *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Rule *)jarg1; 
  result = (std::string *) &((Rule const *)arg1)->getUnits();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Rule_isSetFormula(void * jarg1) {
  unsigned int jresult ;
  Rule *arg1 = (Rule *) 0 ;
  bool result;
  
  arg1 = (Rule *)jarg1; 
  result = (bool)((Rule const *)arg1)->isSetFormula();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Rule_isSetMath(void * jarg1) {
  unsigned int jresult ;
  Rule *arg1 = (Rule *) 0 ;
  bool result;
  
  arg1 = (Rule *)jarg1; 
  result = (bool)((Rule const *)arg1)->isSetMath();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Rule_isSetVariable(void * jarg1) {
  unsigned int jresult ;
  Rule *arg1 = (Rule *) 0 ;
  bool result;
  
  arg1 = (Rule *)jarg1; 
  result = (bool)((Rule const *)arg1)->isSetVariable();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Rule_isSetUnits(void * jarg1) {
  unsigned int jresult ;
  Rule *arg1 = (Rule *) 0 ;
  bool result;
  
  arg1 = (Rule *)jarg1; 
  result = (bool)((Rule const *)arg1)->isSetUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Rule_setFormula(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  Rule *arg1 = (Rule *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (Rule *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setFormula((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Rule_setMath(void * jarg1, void * jarg2) {
  int jresult ;
  Rule *arg1 = (Rule *) 0 ;
  ASTNode *arg2 = (ASTNode *) 0 ;
  int result;
  
  arg1 = (Rule *)jarg1; 
  arg2 = (ASTNode *)jarg2; 
  result = (int)(arg1)->setMath((ASTNode const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Rule_setVariable(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  Rule *arg1 = (Rule *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (Rule *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setVariable((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Rule_setUnits(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  Rule *arg1 = (Rule *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (Rule *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setUnits((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Rule_unsetUnits(void * jarg1) {
  int jresult ;
  Rule *arg1 = (Rule *) 0 ;
  int result;
  
  arg1 = (Rule *)jarg1; 
  result = (int)(arg1)->unsetUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Rule_getDerivedUnitDefinition__SWIG_0(void * jarg1) {
  void * jresult ;
  Rule *arg1 = (Rule *) 0 ;
  UnitDefinition *result = 0 ;
  
  arg1 = (Rule *)jarg1; 
  result = (UnitDefinition *)(arg1)->getDerivedUnitDefinition();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Rule_containsUndeclaredUnits__SWIG_0(void * jarg1) {
  unsigned int jresult ;
  Rule *arg1 = (Rule *) 0 ;
  bool result;
  
  arg1 = (Rule *)jarg1; 
  result = (bool)(arg1)->containsUndeclaredUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Rule_getType(void * jarg1) {
  int jresult ;
  Rule *arg1 = (Rule *) 0 ;
  RuleType_t result;
  
  arg1 = (Rule *)jarg1; 
  result = (RuleType_t)((Rule const *)arg1)->getType();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Rule_isAlgebraic(void * jarg1) {
  unsigned int jresult ;
  Rule *arg1 = (Rule *) 0 ;
  bool result;
  
  arg1 = (Rule *)jarg1; 
  result = (bool)((Rule const *)arg1)->isAlgebraic();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Rule_isAssignment(void * jarg1) {
  unsigned int jresult ;
  Rule *arg1 = (Rule *) 0 ;
  bool result;
  
  arg1 = (Rule *)jarg1; 
  result = (bool)((Rule const *)arg1)->isAssignment();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Rule_isCompartmentVolume(void * jarg1) {
  unsigned int jresult ;
  Rule *arg1 = (Rule *) 0 ;
  bool result;
  
  arg1 = (Rule *)jarg1; 
  result = (bool)((Rule const *)arg1)->isCompartmentVolume();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Rule_isParameter(void * jarg1) {
  unsigned int jresult ;
  Rule *arg1 = (Rule *) 0 ;
  bool result;
  
  arg1 = (Rule *)jarg1; 
  result = (bool)((Rule const *)arg1)->isParameter();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Rule_isRate(void * jarg1) {
  unsigned int jresult ;
  Rule *arg1 = (Rule *) 0 ;
  bool result;
  
  arg1 = (Rule *)jarg1; 
  result = (bool)((Rule const *)arg1)->isRate();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Rule_isScalar(void * jarg1) {
  unsigned int jresult ;
  Rule *arg1 = (Rule *) 0 ;
  bool result;
  
  arg1 = (Rule *)jarg1; 
  result = (bool)((Rule const *)arg1)->isScalar();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Rule_isSpeciesConcentration(void * jarg1) {
  unsigned int jresult ;
  Rule *arg1 = (Rule *) 0 ;
  bool result;
  
  arg1 = (Rule *)jarg1; 
  result = (bool)((Rule const *)arg1)->isSpeciesConcentration();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Rule_getTypeCode(void * jarg1) {
  int jresult ;
  Rule *arg1 = (Rule *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (Rule *)jarg1; 
  result = (SBMLTypeCode_t)((Rule const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Rule_getL1TypeCode(void * jarg1) {
  int jresult ;
  Rule *arg1 = (Rule *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (Rule *)jarg1; 
  result = (SBMLTypeCode_t)((Rule const *)arg1)->getL1TypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Rule_getElementName(void * jarg1) {
  wchar_t* jresult ;
  Rule *arg1 = (Rule *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Rule *)jarg1; 
  result = (std::string *) &((Rule const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Rule_setL1TypeCode(void * jarg1, int jarg2) {
  int jresult ;
  Rule *arg1 = (Rule *) 0 ;
  SBMLTypeCode_t arg2 ;
  int result;
  
  arg1 = (Rule *)jarg1; 
  arg2 = (SBMLTypeCode_t)jarg2; 
  result = (int)(arg1)->setL1TypeCode(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Rule_hasRequiredElements(void * jarg1) {
  unsigned int jresult ;
  Rule *arg1 = (Rule *) 0 ;
  bool result;
  
  arg1 = (Rule *)jarg1; 
  result = (bool)((Rule const *)arg1)->hasRequiredElements();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Rule_hasRequiredAttributes(void * jarg1) {
  unsigned int jresult ;
  Rule *arg1 = (Rule *) 0 ;
  bool result;
  
  arg1 = (Rule *)jarg1; 
  result = (bool)((Rule const *)arg1)->hasRequiredAttributes();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Rule_getId(void * jarg1) {
  wchar_t* jresult ;
  Rule *arg1 = (Rule *) 0 ;
  std::string result;
  
  arg1 = (Rule *)jarg1; 
  result = ((Rule const *)arg1)->getId();
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_AlgebraicRule__SWIG_0(long long jarg1, long long jarg2) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  AlgebraicRule *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  
  try {
    result = (AlgebraicRule *)new AlgebraicRule(arg1,arg2);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_AlgebraicRule__SWIG_1(void * jarg1) {
  void * jresult ;
  SBMLNamespaces *arg1 = (SBMLNamespaces *) 0 ;
  AlgebraicRule *result = 0 ;
  
  arg1 = (SBMLNamespaces *)jarg1; 
  
  try {
    result = (AlgebraicRule *)new AlgebraicRule(arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_AlgebraicRule(void * jarg1) {
  AlgebraicRule *arg1 = (AlgebraicRule *) 0 ;
  
  arg1 = (AlgebraicRule *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_AlgebraicRule_clone(void * jarg1) {
  void * jresult ;
  AlgebraicRule *arg1 = (AlgebraicRule *) 0 ;
  AlgebraicRule *result = 0 ;
  
  arg1 = (AlgebraicRule *)jarg1; 
  result = (AlgebraicRule *)((AlgebraicRule const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_AlgebraicRule_hasRequiredAttributes(void * jarg1) {
  unsigned int jresult ;
  AlgebraicRule *arg1 = (AlgebraicRule *) 0 ;
  bool result;
  
  arg1 = (AlgebraicRule *)jarg1; 
  result = (bool)((AlgebraicRule const *)arg1)->hasRequiredAttributes();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_AssignmentRule__SWIG_0(long long jarg1, long long jarg2) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  AssignmentRule *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  
  try {
    result = (AssignmentRule *)new AssignmentRule(arg1,arg2);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_AssignmentRule__SWIG_1(void * jarg1) {
  void * jresult ;
  SBMLNamespaces *arg1 = (SBMLNamespaces *) 0 ;
  AssignmentRule *result = 0 ;
  
  arg1 = (SBMLNamespaces *)jarg1; 
  
  try {
    result = (AssignmentRule *)new AssignmentRule(arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_AssignmentRule(void * jarg1) {
  AssignmentRule *arg1 = (AssignmentRule *) 0 ;
  
  arg1 = (AssignmentRule *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_AssignmentRule_clone(void * jarg1) {
  void * jresult ;
  AssignmentRule *arg1 = (AssignmentRule *) 0 ;
  AssignmentRule *result = 0 ;
  
  arg1 = (AssignmentRule *)jarg1; 
  result = (AssignmentRule *)((AssignmentRule const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_AssignmentRule_hasRequiredAttributes(void * jarg1) {
  unsigned int jresult ;
  AssignmentRule *arg1 = (AssignmentRule *) 0 ;
  bool result;
  
  arg1 = (AssignmentRule *)jarg1; 
  result = (bool)((AssignmentRule const *)arg1)->hasRequiredAttributes();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_RateRule__SWIG_0(long long jarg1, long long jarg2) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  RateRule *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  
  try {
    result = (RateRule *)new RateRule(arg1,arg2);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_RateRule__SWIG_1(void * jarg1) {
  void * jresult ;
  SBMLNamespaces *arg1 = (SBMLNamespaces *) 0 ;
  RateRule *result = 0 ;
  
  arg1 = (SBMLNamespaces *)jarg1; 
  
  try {
    result = (RateRule *)new RateRule(arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_RateRule(void * jarg1) {
  RateRule *arg1 = (RateRule *) 0 ;
  
  arg1 = (RateRule *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_RateRule_clone(void * jarg1) {
  void * jresult ;
  RateRule *arg1 = (RateRule *) 0 ;
  RateRule *result = 0 ;
  
  arg1 = (RateRule *)jarg1; 
  result = (RateRule *)((RateRule const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_RateRule_hasRequiredAttributes(void * jarg1) {
  unsigned int jresult ;
  RateRule *arg1 = (RateRule *) 0 ;
  bool result;
  
  arg1 = (RateRule *)jarg1; 
  result = (bool)((RateRule const *)arg1)->hasRequiredAttributes();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfRules_clone(void * jarg1) {
  void * jresult ;
  ListOfRules *arg1 = (ListOfRules *) 0 ;
  ListOfRules *result = 0 ;
  
  arg1 = (ListOfRules *)jarg1; 
  result = (ListOfRules *)((ListOfRules const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ListOfRules_getTypeCode(void * jarg1) {
  int jresult ;
  ListOfRules *arg1 = (ListOfRules *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (ListOfRules *)jarg1; 
  result = (SBMLTypeCode_t)((ListOfRules const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ListOfRules_getItemTypeCode(void * jarg1) {
  int jresult ;
  ListOfRules *arg1 = (ListOfRules *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (ListOfRules *)jarg1; 
  result = (SBMLTypeCode_t)((ListOfRules const *)arg1)->getItemTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_ListOfRules_getElementName(void * jarg1) {
  wchar_t* jresult ;
  ListOfRules *arg1 = (ListOfRules *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (ListOfRules *)jarg1; 
  result = (std::string *) &((ListOfRules const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfRules_get__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  ListOfRules *arg1 = (ListOfRules *) 0 ;
  unsigned int arg2 ;
  Rule *result = 0 ;
  
  arg1 = (ListOfRules *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (Rule *)(arg1)->get(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfRules_get__SWIG_2(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  ListOfRules *arg1 = (ListOfRules *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  Rule *result = 0 ;
  
  arg1 = (ListOfRules *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (Rule *)(arg1)->get((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfRules_remove__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  ListOfRules *arg1 = (ListOfRules *) 0 ;
  unsigned int arg2 ;
  Rule *result = 0 ;
  
  arg1 = (ListOfRules *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (Rule *)(arg1)->remove(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfRules_remove__SWIG_1(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  ListOfRules *arg1 = (ListOfRules *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  Rule *result = 0 ;
  
  arg1 = (ListOfRules *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (Rule *)(arg1)->remove((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_ListOfRules() {
  void * jresult ;
  ListOfRules *result = 0 ;
  
  result = (ListOfRules *)new ListOfRules();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_ListOfRules(void * jarg1) {
  ListOfRules *arg1 = (ListOfRules *) 0 ;
  
  arg1 = (ListOfRules *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Constraint__SWIG_0(long long jarg1, long long jarg2) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  Constraint *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  
  try {
    result = (Constraint *)new Constraint(arg1,arg2);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Constraint__SWIG_1(void * jarg1) {
  void * jresult ;
  SBMLNamespaces *arg1 = (SBMLNamespaces *) 0 ;
  Constraint *result = 0 ;
  
  arg1 = (SBMLNamespaces *)jarg1; 
  
  try {
    result = (Constraint *)new Constraint(arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_Constraint(void * jarg1) {
  Constraint *arg1 = (Constraint *) 0 ;
  
  arg1 = (Constraint *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Constraint__SWIG_2(void * jarg1) {
  void * jresult ;
  Constraint *arg1 = 0 ;
  Constraint *result = 0 ;
  
  arg1 = (Constraint *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Constraint const & type is null", 0);
    return 0;
  } 
  
  try {
    result = (Constraint *)new Constraint((Constraint const &)*arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Constraint_clone(void * jarg1) {
  void * jresult ;
  Constraint *arg1 = (Constraint *) 0 ;
  Constraint *result = 0 ;
  
  arg1 = (Constraint *)jarg1; 
  result = (Constraint *)((Constraint const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Constraint_getMessage(void * jarg1) {
  void * jresult ;
  Constraint *arg1 = (Constraint *) 0 ;
  XMLNode *result = 0 ;
  
  arg1 = (Constraint *)jarg1; 
  result = (XMLNode *)((Constraint const *)arg1)->getMessage();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Constraint_getMessageString(void * jarg1) {
  wchar_t* jresult ;
  Constraint *arg1 = (Constraint *) 0 ;
  std::string result;
  
  arg1 = (Constraint *)jarg1; 
  result = ((Constraint const *)arg1)->getMessageString();
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Constraint_getMath(void * jarg1) {
  void * jresult ;
  Constraint *arg1 = (Constraint *) 0 ;
  ASTNode *result = 0 ;
  
  arg1 = (Constraint *)jarg1; 
  result = (ASTNode *)((Constraint const *)arg1)->getMath();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Constraint_isSetMessage(void * jarg1) {
  unsigned int jresult ;
  Constraint *arg1 = (Constraint *) 0 ;
  bool result;
  
  arg1 = (Constraint *)jarg1; 
  result = (bool)((Constraint const *)arg1)->isSetMessage();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Constraint_isSetMath(void * jarg1) {
  unsigned int jresult ;
  Constraint *arg1 = (Constraint *) 0 ;
  bool result;
  
  arg1 = (Constraint *)jarg1; 
  result = (bool)((Constraint const *)arg1)->isSetMath();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Constraint_setMessage(void * jarg1, void * jarg2) {
  int jresult ;
  Constraint *arg1 = (Constraint *) 0 ;
  XMLNode *arg2 = (XMLNode *) 0 ;
  int result;
  
  arg1 = (Constraint *)jarg1; 
  arg2 = (XMLNode *)jarg2; 
  result = (int)(arg1)->setMessage((XMLNode const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Constraint_setMath(void * jarg1, void * jarg2) {
  int jresult ;
  Constraint *arg1 = (Constraint *) 0 ;
  ASTNode *arg2 = (ASTNode *) 0 ;
  int result;
  
  arg1 = (Constraint *)jarg1; 
  arg2 = (ASTNode *)jarg2; 
  result = (int)(arg1)->setMath((ASTNode const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Constraint_unsetMessage(void * jarg1) {
  int jresult ;
  Constraint *arg1 = (Constraint *) 0 ;
  int result;
  
  arg1 = (Constraint *)jarg1; 
  result = (int)(arg1)->unsetMessage();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Constraint_getTypeCode(void * jarg1) {
  int jresult ;
  Constraint *arg1 = (Constraint *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (Constraint *)jarg1; 
  result = (SBMLTypeCode_t)((Constraint const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Constraint_getElementName(void * jarg1) {
  wchar_t* jresult ;
  Constraint *arg1 = (Constraint *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Constraint *)jarg1; 
  result = (std::string *) &((Constraint const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Constraint_hasRequiredElements(void * jarg1) {
  unsigned int jresult ;
  Constraint *arg1 = (Constraint *) 0 ;
  bool result;
  
  arg1 = (Constraint *)jarg1; 
  result = (bool)((Constraint const *)arg1)->hasRequiredElements();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfConstraints_clone(void * jarg1) {
  void * jresult ;
  ListOfConstraints *arg1 = (ListOfConstraints *) 0 ;
  ListOfConstraints *result = 0 ;
  
  arg1 = (ListOfConstraints *)jarg1; 
  result = (ListOfConstraints *)((ListOfConstraints const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ListOfConstraints_getTypeCode(void * jarg1) {
  int jresult ;
  ListOfConstraints *arg1 = (ListOfConstraints *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (ListOfConstraints *)jarg1; 
  result = (SBMLTypeCode_t)((ListOfConstraints const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ListOfConstraints_getItemTypeCode(void * jarg1) {
  int jresult ;
  ListOfConstraints *arg1 = (ListOfConstraints *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (ListOfConstraints *)jarg1; 
  result = (SBMLTypeCode_t)((ListOfConstraints const *)arg1)->getItemTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_ListOfConstraints_getElementName(void * jarg1) {
  wchar_t* jresult ;
  ListOfConstraints *arg1 = (ListOfConstraints *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (ListOfConstraints *)jarg1; 
  result = (std::string *) &((ListOfConstraints const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfConstraints_get__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  ListOfConstraints *arg1 = (ListOfConstraints *) 0 ;
  unsigned int arg2 ;
  Constraint *result = 0 ;
  
  arg1 = (ListOfConstraints *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (Constraint *)(arg1)->get(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfConstraints_remove(void * jarg1, long long jarg2) {
  void * jresult ;
  ListOfConstraints *arg1 = (ListOfConstraints *) 0 ;
  unsigned int arg2 ;
  Constraint *result = 0 ;
  
  arg1 = (ListOfConstraints *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (Constraint *)(arg1)->remove(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_ListOfConstraints() {
  void * jresult ;
  ListOfConstraints *result = 0 ;
  
  result = (ListOfConstraints *)new ListOfConstraints();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_ListOfConstraints(void * jarg1) {
  ListOfConstraints *arg1 = (ListOfConstraints *) 0 ;
  
  arg1 = (ListOfConstraints *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Reaction__SWIG_0(long long jarg1, long long jarg2) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  Reaction *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  
  try {
    result = (Reaction *)new Reaction(arg1,arg2);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Reaction__SWIG_1(void * jarg1) {
  void * jresult ;
  SBMLNamespaces *arg1 = (SBMLNamespaces *) 0 ;
  Reaction *result = 0 ;
  
  arg1 = (SBMLNamespaces *)jarg1; 
  
  try {
    result = (Reaction *)new Reaction(arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_Reaction(void * jarg1) {
  Reaction *arg1 = (Reaction *) 0 ;
  
  arg1 = (Reaction *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Reaction__SWIG_2(void * jarg1) {
  void * jresult ;
  Reaction *arg1 = 0 ;
  Reaction *result = 0 ;
  
  arg1 = (Reaction *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Reaction const & type is null", 0);
    return 0;
  } 
  
  try {
    result = (Reaction *)new Reaction((Reaction const &)*arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Reaction_clone(void * jarg1) {
  void * jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  Reaction *result = 0 ;
  
  arg1 = (Reaction *)jarg1; 
  result = (Reaction *)((Reaction const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_Reaction_initDefaults(void * jarg1) {
  Reaction *arg1 = (Reaction *) 0 ;
  
  arg1 = (Reaction *)jarg1; 
  (arg1)->initDefaults();
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Reaction_getId(void * jarg1) {
  wchar_t* jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Reaction *)jarg1; 
  result = (std::string *) &((Reaction const *)arg1)->getId();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Reaction_getName(void * jarg1) {
  wchar_t* jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Reaction *)jarg1; 
  result = (std::string *) &((Reaction const *)arg1)->getName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Reaction_getKineticLaw__SWIG_0(void * jarg1) {
  void * jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  KineticLaw *result = 0 ;
  
  arg1 = (Reaction *)jarg1; 
  result = (KineticLaw *)((Reaction const *)arg1)->getKineticLaw();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Reaction_getReversible(void * jarg1) {
  unsigned int jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  bool result;
  
  arg1 = (Reaction *)jarg1; 
  result = (bool)((Reaction const *)arg1)->getReversible();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Reaction_getFast(void * jarg1) {
  unsigned int jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  bool result;
  
  arg1 = (Reaction *)jarg1; 
  result = (bool)((Reaction const *)arg1)->getFast();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Reaction_getCompartment(void * jarg1) {
  wchar_t* jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Reaction *)jarg1; 
  result = (std::string *) &((Reaction const *)arg1)->getCompartment();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Reaction_isSetId(void * jarg1) {
  unsigned int jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  bool result;
  
  arg1 = (Reaction *)jarg1; 
  result = (bool)((Reaction const *)arg1)->isSetId();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Reaction_isSetName(void * jarg1) {
  unsigned int jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  bool result;
  
  arg1 = (Reaction *)jarg1; 
  result = (bool)((Reaction const *)arg1)->isSetName();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Reaction_isSetKineticLaw(void * jarg1) {
  unsigned int jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  bool result;
  
  arg1 = (Reaction *)jarg1; 
  result = (bool)((Reaction const *)arg1)->isSetKineticLaw();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Reaction_isSetFast(void * jarg1) {
  unsigned int jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  bool result;
  
  arg1 = (Reaction *)jarg1; 
  result = (bool)((Reaction const *)arg1)->isSetFast();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Reaction_isSetCompartment(void * jarg1) {
  unsigned int jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  bool result;
  
  arg1 = (Reaction *)jarg1; 
  result = (bool)((Reaction const *)arg1)->isSetCompartment();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Reaction_isSetReversible(void * jarg1) {
  unsigned int jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  bool result;
  
  arg1 = (Reaction *)jarg1; 
  result = (bool)((Reaction const *)arg1)->isSetReversible();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Reaction_setId(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (Reaction *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setId((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Reaction_setName(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (Reaction *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setName((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Reaction_setKineticLaw(void * jarg1, void * jarg2) {
  int jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  KineticLaw *arg2 = (KineticLaw *) 0 ;
  int result;
  
  arg1 = (Reaction *)jarg1; 
  arg2 = (KineticLaw *)jarg2; 
  result = (int)(arg1)->setKineticLaw((KineticLaw const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Reaction_setReversible(void * jarg1, unsigned int jarg2) {
  int jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  bool arg2 ;
  int result;
  
  arg1 = (Reaction *)jarg1; 
  arg2 = jarg2 ? true : false; 
  result = (int)(arg1)->setReversible(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Reaction_setFast(void * jarg1, unsigned int jarg2) {
  int jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  bool arg2 ;
  int result;
  
  arg1 = (Reaction *)jarg1; 
  arg2 = jarg2 ? true : false; 
  result = (int)(arg1)->setFast(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Reaction_setCompartment(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (Reaction *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setCompartment((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Reaction_unsetName(void * jarg1) {
  int jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  int result;
  
  arg1 = (Reaction *)jarg1; 
  result = (int)(arg1)->unsetName();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Reaction_unsetKineticLaw(void * jarg1) {
  int jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  int result;
  
  arg1 = (Reaction *)jarg1; 
  result = (int)(arg1)->unsetKineticLaw();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Reaction_unsetFast(void * jarg1) {
  int jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  int result;
  
  arg1 = (Reaction *)jarg1; 
  result = (int)(arg1)->unsetFast();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Reaction_unsetCompartment(void * jarg1) {
  int jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  int result;
  
  arg1 = (Reaction *)jarg1; 
  result = (int)(arg1)->unsetCompartment();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Reaction_addReactant(void * jarg1, void * jarg2) {
  int jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  SpeciesReference *arg2 = (SpeciesReference *) 0 ;
  int result;
  
  arg1 = (Reaction *)jarg1; 
  arg2 = (SpeciesReference *)jarg2; 
  result = (int)(arg1)->addReactant((SpeciesReference const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Reaction_addProduct(void * jarg1, void * jarg2) {
  int jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  SpeciesReference *arg2 = (SpeciesReference *) 0 ;
  int result;
  
  arg1 = (Reaction *)jarg1; 
  arg2 = (SpeciesReference *)jarg2; 
  result = (int)(arg1)->addProduct((SpeciesReference const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Reaction_addModifier(void * jarg1, void * jarg2) {
  int jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  ModifierSpeciesReference *arg2 = (ModifierSpeciesReference *) 0 ;
  int result;
  
  arg1 = (Reaction *)jarg1; 
  arg2 = (ModifierSpeciesReference *)jarg2; 
  result = (int)(arg1)->addModifier((ModifierSpeciesReference const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Reaction_createReactant(void * jarg1) {
  void * jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  SpeciesReference *result = 0 ;
  
  arg1 = (Reaction *)jarg1; 
  result = (SpeciesReference *)(arg1)->createReactant();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Reaction_createProduct(void * jarg1) {
  void * jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  SpeciesReference *result = 0 ;
  
  arg1 = (Reaction *)jarg1; 
  result = (SpeciesReference *)(arg1)->createProduct();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Reaction_createModifier(void * jarg1) {
  void * jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  ModifierSpeciesReference *result = 0 ;
  
  arg1 = (Reaction *)jarg1; 
  result = (ModifierSpeciesReference *)(arg1)->createModifier();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Reaction_createKineticLaw(void * jarg1) {
  void * jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  KineticLaw *result = 0 ;
  
  arg1 = (Reaction *)jarg1; 
  result = (KineticLaw *)(arg1)->createKineticLaw();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Reaction_getListOfReactants__SWIG_0(void * jarg1) {
  void * jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  ListOfSpeciesReferences *result = 0 ;
  
  arg1 = (Reaction *)jarg1; 
  result = (ListOfSpeciesReferences *)((Reaction const *)arg1)->getListOfReactants();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Reaction_getListOfProducts__SWIG_0(void * jarg1) {
  void * jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  ListOfSpeciesReferences *result = 0 ;
  
  arg1 = (Reaction *)jarg1; 
  result = (ListOfSpeciesReferences *)((Reaction const *)arg1)->getListOfProducts();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Reaction_getListOfModifiers__SWIG_0(void * jarg1) {
  void * jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  ListOfSpeciesReferences *result = 0 ;
  
  arg1 = (Reaction *)jarg1; 
  result = (ListOfSpeciesReferences *)((Reaction const *)arg1)->getListOfModifiers();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Reaction_getReactant__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  unsigned int arg2 ;
  SpeciesReference *result = 0 ;
  
  arg1 = (Reaction *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (SpeciesReference *)((Reaction const *)arg1)->getReactant(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Reaction_getReactant__SWIG_2(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  SpeciesReference *result = 0 ;
  
  arg1 = (Reaction *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (SpeciesReference *)((Reaction const *)arg1)->getReactant((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Reaction_getProduct__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  unsigned int arg2 ;
  SpeciesReference *result = 0 ;
  
  arg1 = (Reaction *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (SpeciesReference *)((Reaction const *)arg1)->getProduct(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Reaction_getProduct__SWIG_2(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  SpeciesReference *result = 0 ;
  
  arg1 = (Reaction *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (SpeciesReference *)((Reaction const *)arg1)->getProduct((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Reaction_getModifier__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  unsigned int arg2 ;
  ModifierSpeciesReference *result = 0 ;
  
  arg1 = (Reaction *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (ModifierSpeciesReference *)((Reaction const *)arg1)->getModifier(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Reaction_getModifier__SWIG_2(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  ModifierSpeciesReference *result = 0 ;
  
  arg1 = (Reaction *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (ModifierSpeciesReference *)((Reaction const *)arg1)->getModifier((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Reaction_getNumReactants(void * jarg1) {
  unsigned int jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  unsigned int result;
  
  arg1 = (Reaction *)jarg1; 
  result = (unsigned int)((Reaction const *)arg1)->getNumReactants();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Reaction_getNumProducts(void * jarg1) {
  unsigned int jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  unsigned int result;
  
  arg1 = (Reaction *)jarg1; 
  result = (unsigned int)((Reaction const *)arg1)->getNumProducts();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Reaction_getNumModifiers(void * jarg1) {
  unsigned int jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  unsigned int result;
  
  arg1 = (Reaction *)jarg1; 
  result = (unsigned int)((Reaction const *)arg1)->getNumModifiers();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Reaction_removeReactant__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  unsigned int arg2 ;
  SpeciesReference *result = 0 ;
  
  arg1 = (Reaction *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (SpeciesReference *)(arg1)->removeReactant(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Reaction_removeReactant__SWIG_1(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  SpeciesReference *result = 0 ;
  
  arg1 = (Reaction *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (SpeciesReference *)(arg1)->removeReactant((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Reaction_removeProduct__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  unsigned int arg2 ;
  SpeciesReference *result = 0 ;
  
  arg1 = (Reaction *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (SpeciesReference *)(arg1)->removeProduct(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Reaction_removeProduct__SWIG_1(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  SpeciesReference *result = 0 ;
  
  arg1 = (Reaction *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (SpeciesReference *)(arg1)->removeProduct((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Reaction_removeModifier__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  unsigned int arg2 ;
  ModifierSpeciesReference *result = 0 ;
  
  arg1 = (Reaction *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (ModifierSpeciesReference *)(arg1)->removeModifier(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Reaction_removeModifier__SWIG_1(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  ModifierSpeciesReference *result = 0 ;
  
  arg1 = (Reaction *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (ModifierSpeciesReference *)(arg1)->removeModifier((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Reaction_getTypeCode(void * jarg1) {
  int jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (Reaction *)jarg1; 
  result = (SBMLTypeCode_t)((Reaction const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Reaction_getElementName(void * jarg1) {
  wchar_t* jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Reaction *)jarg1; 
  result = (std::string *) &((Reaction const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Reaction_hasRequiredAttributes(void * jarg1) {
  unsigned int jresult ;
  Reaction *arg1 = (Reaction *) 0 ;
  bool result;
  
  arg1 = (Reaction *)jarg1; 
  result = (bool)((Reaction const *)arg1)->hasRequiredAttributes();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfReactions_clone(void * jarg1) {
  void * jresult ;
  ListOfReactions *arg1 = (ListOfReactions *) 0 ;
  ListOfReactions *result = 0 ;
  
  arg1 = (ListOfReactions *)jarg1; 
  result = (ListOfReactions *)((ListOfReactions const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ListOfReactions_getTypeCode(void * jarg1) {
  int jresult ;
  ListOfReactions *arg1 = (ListOfReactions *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (ListOfReactions *)jarg1; 
  result = (SBMLTypeCode_t)((ListOfReactions const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ListOfReactions_getItemTypeCode(void * jarg1) {
  int jresult ;
  ListOfReactions *arg1 = (ListOfReactions *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (ListOfReactions *)jarg1; 
  result = (SBMLTypeCode_t)((ListOfReactions const *)arg1)->getItemTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_ListOfReactions_getElementName(void * jarg1) {
  wchar_t* jresult ;
  ListOfReactions *arg1 = (ListOfReactions *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (ListOfReactions *)jarg1; 
  result = (std::string *) &((ListOfReactions const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfReactions_get__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  ListOfReactions *arg1 = (ListOfReactions *) 0 ;
  unsigned int arg2 ;
  Reaction *result = 0 ;
  
  arg1 = (ListOfReactions *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (Reaction *)(arg1)->get(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfReactions_get__SWIG_2(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  ListOfReactions *arg1 = (ListOfReactions *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  Reaction *result = 0 ;
  
  arg1 = (ListOfReactions *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (Reaction *)(arg1)->get((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfReactions_remove__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  ListOfReactions *arg1 = (ListOfReactions *) 0 ;
  unsigned int arg2 ;
  Reaction *result = 0 ;
  
  arg1 = (ListOfReactions *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (Reaction *)(arg1)->remove(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfReactions_remove__SWIG_1(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  ListOfReactions *arg1 = (ListOfReactions *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  Reaction *result = 0 ;
  
  arg1 = (ListOfReactions *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (Reaction *)(arg1)->remove((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_ListOfReactions() {
  void * jresult ;
  ListOfReactions *result = 0 ;
  
  result = (ListOfReactions *)new ListOfReactions();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_ListOfReactions(void * jarg1) {
  ListOfReactions *arg1 = (ListOfReactions *) 0 ;
  
  arg1 = (ListOfReactions *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_KineticLaw__SWIG_0(long long jarg1, long long jarg2) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  KineticLaw *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  
  try {
    result = (KineticLaw *)new KineticLaw(arg1,arg2);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_KineticLaw__SWIG_1(void * jarg1) {
  void * jresult ;
  SBMLNamespaces *arg1 = (SBMLNamespaces *) 0 ;
  KineticLaw *result = 0 ;
  
  arg1 = (SBMLNamespaces *)jarg1; 
  
  try {
    result = (KineticLaw *)new KineticLaw(arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_KineticLaw(void * jarg1) {
  KineticLaw *arg1 = (KineticLaw *) 0 ;
  
  arg1 = (KineticLaw *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_KineticLaw__SWIG_2(void * jarg1) {
  void * jresult ;
  KineticLaw *arg1 = 0 ;
  KineticLaw *result = 0 ;
  
  arg1 = (KineticLaw *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "KineticLaw const & type is null", 0);
    return 0;
  } 
  
  try {
    result = (KineticLaw *)new KineticLaw((KineticLaw const &)*arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_KineticLaw_clone(void * jarg1) {
  void * jresult ;
  KineticLaw *arg1 = (KineticLaw *) 0 ;
  KineticLaw *result = 0 ;
  
  arg1 = (KineticLaw *)jarg1; 
  result = (KineticLaw *)((KineticLaw const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_KineticLaw_getFormula(void * jarg1) {
  wchar_t* jresult ;
  KineticLaw *arg1 = (KineticLaw *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (KineticLaw *)jarg1; 
  result = (std::string *) &((KineticLaw const *)arg1)->getFormula();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_KineticLaw_getMath(void * jarg1) {
  void * jresult ;
  KineticLaw *arg1 = (KineticLaw *) 0 ;
  ASTNode *result = 0 ;
  
  arg1 = (KineticLaw *)jarg1; 
  result = (ASTNode *)((KineticLaw const *)arg1)->getMath();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_KineticLaw_getTimeUnits(void * jarg1) {
  wchar_t* jresult ;
  KineticLaw *arg1 = (KineticLaw *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (KineticLaw *)jarg1; 
  result = (std::string *) &((KineticLaw const *)arg1)->getTimeUnits();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_KineticLaw_getSubstanceUnits(void * jarg1) {
  wchar_t* jresult ;
  KineticLaw *arg1 = (KineticLaw *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (KineticLaw *)jarg1; 
  result = (std::string *) &((KineticLaw const *)arg1)->getSubstanceUnits();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_KineticLaw_isSetFormula(void * jarg1) {
  unsigned int jresult ;
  KineticLaw *arg1 = (KineticLaw *) 0 ;
  bool result;
  
  arg1 = (KineticLaw *)jarg1; 
  result = (bool)((KineticLaw const *)arg1)->isSetFormula();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_KineticLaw_isSetMath(void * jarg1) {
  unsigned int jresult ;
  KineticLaw *arg1 = (KineticLaw *) 0 ;
  bool result;
  
  arg1 = (KineticLaw *)jarg1; 
  result = (bool)((KineticLaw const *)arg1)->isSetMath();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_KineticLaw_isSetTimeUnits(void * jarg1) {
  unsigned int jresult ;
  KineticLaw *arg1 = (KineticLaw *) 0 ;
  bool result;
  
  arg1 = (KineticLaw *)jarg1; 
  result = (bool)((KineticLaw const *)arg1)->isSetTimeUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_KineticLaw_isSetSubstanceUnits(void * jarg1) {
  unsigned int jresult ;
  KineticLaw *arg1 = (KineticLaw *) 0 ;
  bool result;
  
  arg1 = (KineticLaw *)jarg1; 
  result = (bool)((KineticLaw const *)arg1)->isSetSubstanceUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_KineticLaw_setFormula(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  KineticLaw *arg1 = (KineticLaw *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (KineticLaw *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setFormula((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_KineticLaw_setMath(void * jarg1, void * jarg2) {
  int jresult ;
  KineticLaw *arg1 = (KineticLaw *) 0 ;
  ASTNode *arg2 = (ASTNode *) 0 ;
  int result;
  
  arg1 = (KineticLaw *)jarg1; 
  arg2 = (ASTNode *)jarg2; 
  result = (int)(arg1)->setMath((ASTNode const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_KineticLaw_setTimeUnits(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  KineticLaw *arg1 = (KineticLaw *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (KineticLaw *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setTimeUnits((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_KineticLaw_setSubstanceUnits(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  KineticLaw *arg1 = (KineticLaw *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (KineticLaw *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setSubstanceUnits((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_KineticLaw_unsetTimeUnits(void * jarg1) {
  int jresult ;
  KineticLaw *arg1 = (KineticLaw *) 0 ;
  int result;
  
  arg1 = (KineticLaw *)jarg1; 
  result = (int)(arg1)->unsetTimeUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_KineticLaw_unsetSubstanceUnits(void * jarg1) {
  int jresult ;
  KineticLaw *arg1 = (KineticLaw *) 0 ;
  int result;
  
  arg1 = (KineticLaw *)jarg1; 
  result = (int)(arg1)->unsetSubstanceUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_KineticLaw_addParameter(void * jarg1, void * jarg2) {
  int jresult ;
  KineticLaw *arg1 = (KineticLaw *) 0 ;
  Parameter *arg2 = (Parameter *) 0 ;
  int result;
  
  arg1 = (KineticLaw *)jarg1; 
  arg2 = (Parameter *)jarg2; 
  result = (int)(arg1)->addParameter((Parameter const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_KineticLaw_addLocalParameter(void * jarg1, void * jarg2) {
  int jresult ;
  KineticLaw *arg1 = (KineticLaw *) 0 ;
  LocalParameter *arg2 = (LocalParameter *) 0 ;
  int result;
  
  arg1 = (KineticLaw *)jarg1; 
  arg2 = (LocalParameter *)jarg2; 
  result = (int)(arg1)->addLocalParameter((LocalParameter const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_KineticLaw_createParameter(void * jarg1) {
  void * jresult ;
  KineticLaw *arg1 = (KineticLaw *) 0 ;
  Parameter *result = 0 ;
  
  arg1 = (KineticLaw *)jarg1; 
  result = (Parameter *)(arg1)->createParameter();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_KineticLaw_createLocalParameter(void * jarg1) {
  void * jresult ;
  KineticLaw *arg1 = (KineticLaw *) 0 ;
  LocalParameter *result = 0 ;
  
  arg1 = (KineticLaw *)jarg1; 
  result = (LocalParameter *)(arg1)->createLocalParameter();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_KineticLaw_getListOfParameters__SWIG_0(void * jarg1) {
  void * jresult ;
  KineticLaw *arg1 = (KineticLaw *) 0 ;
  ListOfParameters *result = 0 ;
  
  arg1 = (KineticLaw *)jarg1; 
  result = (ListOfParameters *)((KineticLaw const *)arg1)->getListOfParameters();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_KineticLaw_getListOfLocalParameters__SWIG_0(void * jarg1) {
  void * jresult ;
  KineticLaw *arg1 = (KineticLaw *) 0 ;
  ListOfLocalParameters *result = 0 ;
  
  arg1 = (KineticLaw *)jarg1; 
  result = (ListOfLocalParameters *)((KineticLaw const *)arg1)->getListOfLocalParameters();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_KineticLaw_getParameter__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  KineticLaw *arg1 = (KineticLaw *) 0 ;
  unsigned int arg2 ;
  Parameter *result = 0 ;
  
  arg1 = (KineticLaw *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (Parameter *)((KineticLaw const *)arg1)->getParameter(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_KineticLaw_getLocalParameter__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  KineticLaw *arg1 = (KineticLaw *) 0 ;
  unsigned int arg2 ;
  LocalParameter *result = 0 ;
  
  arg1 = (KineticLaw *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (LocalParameter *)((KineticLaw const *)arg1)->getLocalParameter(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_KineticLaw_getParameter__SWIG_2(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  KineticLaw *arg1 = (KineticLaw *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  Parameter *result = 0 ;
  
  arg1 = (KineticLaw *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (Parameter *)((KineticLaw const *)arg1)->getParameter((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_KineticLaw_getLocalParameter__SWIG_2(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  KineticLaw *arg1 = (KineticLaw *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  LocalParameter *result = 0 ;
  
  arg1 = (KineticLaw *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (LocalParameter *)((KineticLaw const *)arg1)->getLocalParameter((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_KineticLaw_getNumParameters(void * jarg1) {
  unsigned int jresult ;
  KineticLaw *arg1 = (KineticLaw *) 0 ;
  unsigned int result;
  
  arg1 = (KineticLaw *)jarg1; 
  result = (unsigned int)((KineticLaw const *)arg1)->getNumParameters();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_KineticLaw_getNumLocalParameters(void * jarg1) {
  unsigned int jresult ;
  KineticLaw *arg1 = (KineticLaw *) 0 ;
  unsigned int result;
  
  arg1 = (KineticLaw *)jarg1; 
  result = (unsigned int)((KineticLaw const *)arg1)->getNumLocalParameters();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_KineticLaw_getDerivedUnitDefinition__SWIG_0(void * jarg1) {
  void * jresult ;
  KineticLaw *arg1 = (KineticLaw *) 0 ;
  UnitDefinition *result = 0 ;
  
  arg1 = (KineticLaw *)jarg1; 
  result = (UnitDefinition *)(arg1)->getDerivedUnitDefinition();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_KineticLaw_containsUndeclaredUnits__SWIG_0(void * jarg1) {
  unsigned int jresult ;
  KineticLaw *arg1 = (KineticLaw *) 0 ;
  bool result;
  
  arg1 = (KineticLaw *)jarg1; 
  result = (bool)(arg1)->containsUndeclaredUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_KineticLaw_removeParameter__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  KineticLaw *arg1 = (KineticLaw *) 0 ;
  unsigned int arg2 ;
  Parameter *result = 0 ;
  
  arg1 = (KineticLaw *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (Parameter *)(arg1)->removeParameter(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_KineticLaw_removeLocalParameter__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  KineticLaw *arg1 = (KineticLaw *) 0 ;
  unsigned int arg2 ;
  LocalParameter *result = 0 ;
  
  arg1 = (KineticLaw *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (LocalParameter *)(arg1)->removeLocalParameter(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_KineticLaw_removeParameter__SWIG_1(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  KineticLaw *arg1 = (KineticLaw *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  Parameter *result = 0 ;
  
  arg1 = (KineticLaw *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (Parameter *)(arg1)->removeParameter((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_KineticLaw_removeLocalParameter__SWIG_1(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  KineticLaw *arg1 = (KineticLaw *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  LocalParameter *result = 0 ;
  
  arg1 = (KineticLaw *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (LocalParameter *)(arg1)->removeLocalParameter((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_KineticLaw_getTypeCode(void * jarg1) {
  int jresult ;
  KineticLaw *arg1 = (KineticLaw *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (KineticLaw *)jarg1; 
  result = (SBMLTypeCode_t)((KineticLaw const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_KineticLaw_getElementName(void * jarg1) {
  wchar_t* jresult ;
  KineticLaw *arg1 = (KineticLaw *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (KineticLaw *)jarg1; 
  result = (std::string *) &((KineticLaw const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_KineticLaw_hasRequiredAttributes(void * jarg1) {
  unsigned int jresult ;
  KineticLaw *arg1 = (KineticLaw *) 0 ;
  bool result;
  
  arg1 = (KineticLaw *)jarg1; 
  result = (bool)((KineticLaw const *)arg1)->hasRequiredAttributes();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_KineticLaw_hasRequiredElements(void * jarg1) {
  unsigned int jresult ;
  KineticLaw *arg1 = (KineticLaw *) 0 ;
  bool result;
  
  arg1 = (KineticLaw *)jarg1; 
  result = (bool)((KineticLaw const *)arg1)->hasRequiredElements();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_SimpleSpeciesReference(void * jarg1) {
  SimpleSpeciesReference *arg1 = (SimpleSpeciesReference *) 0 ;
  
  arg1 = (SimpleSpeciesReference *)jarg1; 
  delete arg1;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_SimpleSpeciesReference_getId(void * jarg1) {
  wchar_t* jresult ;
  SimpleSpeciesReference *arg1 = (SimpleSpeciesReference *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (SimpleSpeciesReference *)jarg1; 
  result = (std::string *) &((SimpleSpeciesReference const *)arg1)->getId();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_SimpleSpeciesReference_getName(void * jarg1) {
  wchar_t* jresult ;
  SimpleSpeciesReference *arg1 = (SimpleSpeciesReference *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (SimpleSpeciesReference *)jarg1; 
  result = (std::string *) &((SimpleSpeciesReference const *)arg1)->getName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_SimpleSpeciesReference_getSpecies(void * jarg1) {
  wchar_t* jresult ;
  SimpleSpeciesReference *arg1 = (SimpleSpeciesReference *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (SimpleSpeciesReference *)jarg1; 
  result = (std::string *) &((SimpleSpeciesReference const *)arg1)->getSpecies();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SimpleSpeciesReference_isSetId(void * jarg1) {
  unsigned int jresult ;
  SimpleSpeciesReference *arg1 = (SimpleSpeciesReference *) 0 ;
  bool result;
  
  arg1 = (SimpleSpeciesReference *)jarg1; 
  result = (bool)((SimpleSpeciesReference const *)arg1)->isSetId();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SimpleSpeciesReference_isSetName(void * jarg1) {
  unsigned int jresult ;
  SimpleSpeciesReference *arg1 = (SimpleSpeciesReference *) 0 ;
  bool result;
  
  arg1 = (SimpleSpeciesReference *)jarg1; 
  result = (bool)((SimpleSpeciesReference const *)arg1)->isSetName();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SimpleSpeciesReference_isSetSpecies(void * jarg1) {
  unsigned int jresult ;
  SimpleSpeciesReference *arg1 = (SimpleSpeciesReference *) 0 ;
  bool result;
  
  arg1 = (SimpleSpeciesReference *)jarg1; 
  result = (bool)((SimpleSpeciesReference const *)arg1)->isSetSpecies();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SimpleSpeciesReference_setSpecies(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  SimpleSpeciesReference *arg1 = (SimpleSpeciesReference *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (SimpleSpeciesReference *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setSpecies((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SimpleSpeciesReference_setId(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  SimpleSpeciesReference *arg1 = (SimpleSpeciesReference *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (SimpleSpeciesReference *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setId((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SimpleSpeciesReference_setName(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  SimpleSpeciesReference *arg1 = (SimpleSpeciesReference *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (SimpleSpeciesReference *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setName((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SimpleSpeciesReference_unsetId(void * jarg1) {
  int jresult ;
  SimpleSpeciesReference *arg1 = (SimpleSpeciesReference *) 0 ;
  int result;
  
  arg1 = (SimpleSpeciesReference *)jarg1; 
  result = (int)(arg1)->unsetId();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SimpleSpeciesReference_unsetName(void * jarg1) {
  int jresult ;
  SimpleSpeciesReference *arg1 = (SimpleSpeciesReference *) 0 ;
  int result;
  
  arg1 = (SimpleSpeciesReference *)jarg1; 
  result = (int)(arg1)->unsetName();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SimpleSpeciesReference_isModifier(void * jarg1) {
  unsigned int jresult ;
  SimpleSpeciesReference *arg1 = (SimpleSpeciesReference *) 0 ;
  bool result;
  
  arg1 = (SimpleSpeciesReference *)jarg1; 
  result = (bool)((SimpleSpeciesReference const *)arg1)->isModifier();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SpeciesReference__SWIG_0(long long jarg1, long long jarg2) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  SpeciesReference *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  
  try {
    result = (SpeciesReference *)new SpeciesReference(arg1,arg2);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SpeciesReference__SWIG_1(void * jarg1) {
  void * jresult ;
  SBMLNamespaces *arg1 = (SBMLNamespaces *) 0 ;
  SpeciesReference *result = 0 ;
  
  arg1 = (SBMLNamespaces *)jarg1; 
  
  try {
    result = (SpeciesReference *)new SpeciesReference(arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_SpeciesReference(void * jarg1) {
  SpeciesReference *arg1 = (SpeciesReference *) 0 ;
  
  arg1 = (SpeciesReference *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SpeciesReference__SWIG_2(void * jarg1) {
  void * jresult ;
  SpeciesReference *arg1 = 0 ;
  SpeciesReference *result = 0 ;
  
  arg1 = (SpeciesReference *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "SpeciesReference const & type is null", 0);
    return 0;
  } 
  
  try {
    result = (SpeciesReference *)new SpeciesReference((SpeciesReference const &)*arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_SpeciesReference_clone(void * jarg1) {
  void * jresult ;
  SpeciesReference *arg1 = (SpeciesReference *) 0 ;
  SpeciesReference *result = 0 ;
  
  arg1 = (SpeciesReference *)jarg1; 
  result = (SpeciesReference *)((SpeciesReference const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_SpeciesReference_initDefaults(void * jarg1) {
  SpeciesReference *arg1 = (SpeciesReference *) 0 ;
  
  arg1 = (SpeciesReference *)jarg1; 
  (arg1)->initDefaults();
}


SWIGEXPORT double SWIGSTDCALL CSharp_SpeciesReference_getStoichiometry(void * jarg1) {
  double jresult ;
  SpeciesReference *arg1 = (SpeciesReference *) 0 ;
  double result;
  
  arg1 = (SpeciesReference *)jarg1; 
  result = (double)((SpeciesReference const *)arg1)->getStoichiometry();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_SpeciesReference_getStoichiometryMath__SWIG_0(void * jarg1) {
  void * jresult ;
  SpeciesReference *arg1 = (SpeciesReference *) 0 ;
  StoichiometryMath *result = 0 ;
  
  arg1 = (SpeciesReference *)jarg1; 
  result = (StoichiometryMath *)((SpeciesReference const *)arg1)->getStoichiometryMath();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SpeciesReference_getDenominator(void * jarg1) {
  int jresult ;
  SpeciesReference *arg1 = (SpeciesReference *) 0 ;
  int result;
  
  arg1 = (SpeciesReference *)jarg1; 
  result = (int)((SpeciesReference const *)arg1)->getDenominator();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SpeciesReference_getConstant(void * jarg1) {
  unsigned int jresult ;
  SpeciesReference *arg1 = (SpeciesReference *) 0 ;
  bool result;
  
  arg1 = (SpeciesReference *)jarg1; 
  result = (bool)((SpeciesReference const *)arg1)->getConstant();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SpeciesReference_isSetStoichiometryMath(void * jarg1) {
  unsigned int jresult ;
  SpeciesReference *arg1 = (SpeciesReference *) 0 ;
  bool result;
  
  arg1 = (SpeciesReference *)jarg1; 
  result = (bool)((SpeciesReference const *)arg1)->isSetStoichiometryMath();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SpeciesReference_isSetConstant(void * jarg1) {
  unsigned int jresult ;
  SpeciesReference *arg1 = (SpeciesReference *) 0 ;
  bool result;
  
  arg1 = (SpeciesReference *)jarg1; 
  result = (bool)((SpeciesReference const *)arg1)->isSetConstant();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SpeciesReference_isSetStoichiometry(void * jarg1) {
  unsigned int jresult ;
  SpeciesReference *arg1 = (SpeciesReference *) 0 ;
  bool result;
  
  arg1 = (SpeciesReference *)jarg1; 
  result = (bool)((SpeciesReference const *)arg1)->isSetStoichiometry();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SpeciesReference_setStoichiometry(void * jarg1, double jarg2) {
  int jresult ;
  SpeciesReference *arg1 = (SpeciesReference *) 0 ;
  double arg2 ;
  int result;
  
  arg1 = (SpeciesReference *)jarg1; 
  arg2 = (double)jarg2; 
  result = (int)(arg1)->setStoichiometry(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SpeciesReference_setStoichiometryMath(void * jarg1, void * jarg2) {
  int jresult ;
  SpeciesReference *arg1 = (SpeciesReference *) 0 ;
  StoichiometryMath *arg2 = (StoichiometryMath *) 0 ;
  int result;
  
  arg1 = (SpeciesReference *)jarg1; 
  arg2 = (StoichiometryMath *)jarg2; 
  result = (int)(arg1)->setStoichiometryMath((StoichiometryMath const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SpeciesReference_setDenominator(void * jarg1, int jarg2) {
  int jresult ;
  SpeciesReference *arg1 = (SpeciesReference *) 0 ;
  int arg2 ;
  int result;
  
  arg1 = (SpeciesReference *)jarg1; 
  arg2 = (int)jarg2; 
  result = (int)(arg1)->setDenominator(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SpeciesReference_setConstant(void * jarg1, unsigned int jarg2) {
  int jresult ;
  SpeciesReference *arg1 = (SpeciesReference *) 0 ;
  bool arg2 ;
  int result;
  
  arg1 = (SpeciesReference *)jarg1; 
  arg2 = jarg2 ? true : false; 
  result = (int)(arg1)->setConstant(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SpeciesReference_unsetStoichiometryMath(void * jarg1) {
  int jresult ;
  SpeciesReference *arg1 = (SpeciesReference *) 0 ;
  int result;
  
  arg1 = (SpeciesReference *)jarg1; 
  result = (int)(arg1)->unsetStoichiometryMath();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SpeciesReference_unsetStoichiometry(void * jarg1) {
  int jresult ;
  SpeciesReference *arg1 = (SpeciesReference *) 0 ;
  int result;
  
  arg1 = (SpeciesReference *)jarg1; 
  result = (int)(arg1)->unsetStoichiometry();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_SpeciesReference_createStoichiometryMath(void * jarg1) {
  void * jresult ;
  SpeciesReference *arg1 = (SpeciesReference *) 0 ;
  StoichiometryMath *result = 0 ;
  
  arg1 = (SpeciesReference *)jarg1; 
  result = (StoichiometryMath *)(arg1)->createStoichiometryMath();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SpeciesReference_setAnnotation__SWIG_0(void * jarg1, void * jarg2) {
  int jresult ;
  SpeciesReference *arg1 = (SpeciesReference *) 0 ;
  XMLNode *arg2 = (XMLNode *) 0 ;
  int result;
  
  arg1 = (SpeciesReference *)jarg1; 
  arg2 = (XMLNode *)jarg2; 
  result = (int)(arg1)->setAnnotation((XMLNode const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SpeciesReference_setAnnotation__SWIG_1(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  SpeciesReference *arg1 = (SpeciesReference *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (SpeciesReference *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setAnnotation((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SpeciesReference_appendAnnotation__SWIG_0(void * jarg1, void * jarg2) {
  int jresult ;
  SpeciesReference *arg1 = (SpeciesReference *) 0 ;
  XMLNode *arg2 = (XMLNode *) 0 ;
  int result;
  
  arg1 = (SpeciesReference *)jarg1; 
  arg2 = (XMLNode *)jarg2; 
  result = (int)(arg1)->appendAnnotation((XMLNode const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SpeciesReference_appendAnnotation__SWIG_1(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  SpeciesReference *arg1 = (SpeciesReference *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (SpeciesReference *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->appendAnnotation((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SpeciesReference_getTypeCode(void * jarg1) {
  int jresult ;
  SpeciesReference *arg1 = (SpeciesReference *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (SpeciesReference *)jarg1; 
  result = (SBMLTypeCode_t)((SpeciesReference const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_SpeciesReference_getElementName(void * jarg1) {
  wchar_t* jresult ;
  SpeciesReference *arg1 = (SpeciesReference *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (SpeciesReference *)jarg1; 
  result = (std::string *) &((SpeciesReference const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_SpeciesReference_initL2Stoichiometry(void * jarg1) {
  SpeciesReference *arg1 = (SpeciesReference *) 0 ;
  
  arg1 = (SpeciesReference *)jarg1; 
  (arg1)->initL2Stoichiometry();
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SpeciesReference_hasRequiredAttributes(void * jarg1) {
  unsigned int jresult ;
  SpeciesReference *arg1 = (SpeciesReference *) 0 ;
  bool result;
  
  arg1 = (SpeciesReference *)jarg1; 
  result = (bool)((SpeciesReference const *)arg1)->hasRequiredAttributes();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_ModifierSpeciesReference__SWIG_0(long long jarg1, long long jarg2) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  ModifierSpeciesReference *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  
  try {
    result = (ModifierSpeciesReference *)new ModifierSpeciesReference(arg1,arg2);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_ModifierSpeciesReference__SWIG_1(void * jarg1) {
  void * jresult ;
  SBMLNamespaces *arg1 = (SBMLNamespaces *) 0 ;
  ModifierSpeciesReference *result = 0 ;
  
  arg1 = (SBMLNamespaces *)jarg1; 
  
  try {
    result = (ModifierSpeciesReference *)new ModifierSpeciesReference(arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_ModifierSpeciesReference(void * jarg1) {
  ModifierSpeciesReference *arg1 = (ModifierSpeciesReference *) 0 ;
  
  arg1 = (ModifierSpeciesReference *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ModifierSpeciesReference_clone(void * jarg1) {
  void * jresult ;
  ModifierSpeciesReference *arg1 = (ModifierSpeciesReference *) 0 ;
  ModifierSpeciesReference *result = 0 ;
  
  arg1 = (ModifierSpeciesReference *)jarg1; 
  result = (ModifierSpeciesReference *)((ModifierSpeciesReference const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ModifierSpeciesReference_getTypeCode(void * jarg1) {
  int jresult ;
  ModifierSpeciesReference *arg1 = (ModifierSpeciesReference *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (ModifierSpeciesReference *)jarg1; 
  result = (SBMLTypeCode_t)((ModifierSpeciesReference const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_ModifierSpeciesReference_getElementName(void * jarg1) {
  wchar_t* jresult ;
  ModifierSpeciesReference *arg1 = (ModifierSpeciesReference *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (ModifierSpeciesReference *)jarg1; 
  result = (std::string *) &((ModifierSpeciesReference const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ModifierSpeciesReference_hasRequiredAttributes(void * jarg1) {
  unsigned int jresult ;
  ModifierSpeciesReference *arg1 = (ModifierSpeciesReference *) 0 ;
  bool result;
  
  arg1 = (ModifierSpeciesReference *)jarg1; 
  result = (bool)((ModifierSpeciesReference const *)arg1)->hasRequiredAttributes();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_ListOfSpeciesReferences() {
  void * jresult ;
  ListOfSpeciesReferences *result = 0 ;
  
  result = (ListOfSpeciesReferences *)new ListOfSpeciesReferences();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfSpeciesReferences_clone(void * jarg1) {
  void * jresult ;
  ListOfSpeciesReferences *arg1 = (ListOfSpeciesReferences *) 0 ;
  ListOfSpeciesReferences *result = 0 ;
  
  arg1 = (ListOfSpeciesReferences *)jarg1; 
  result = (ListOfSpeciesReferences *)((ListOfSpeciesReferences const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ListOfSpeciesReferences_getTypeCode(void * jarg1) {
  int jresult ;
  ListOfSpeciesReferences *arg1 = (ListOfSpeciesReferences *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (ListOfSpeciesReferences *)jarg1; 
  result = (SBMLTypeCode_t)((ListOfSpeciesReferences const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ListOfSpeciesReferences_getItemTypeCode(void * jarg1) {
  int jresult ;
  ListOfSpeciesReferences *arg1 = (ListOfSpeciesReferences *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (ListOfSpeciesReferences *)jarg1; 
  result = (SBMLTypeCode_t)((ListOfSpeciesReferences const *)arg1)->getItemTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_ListOfSpeciesReferences_getElementName(void * jarg1) {
  wchar_t* jresult ;
  ListOfSpeciesReferences *arg1 = (ListOfSpeciesReferences *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (ListOfSpeciesReferences *)jarg1; 
  result = (std::string *) &((ListOfSpeciesReferences const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfSpeciesReferences_get__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  ListOfSpeciesReferences *arg1 = (ListOfSpeciesReferences *) 0 ;
  unsigned int arg2 ;
  SimpleSpeciesReference *result = 0 ;
  
  arg1 = (ListOfSpeciesReferences *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (SimpleSpeciesReference *)(arg1)->get(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfSpeciesReferences_get__SWIG_2(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  ListOfSpeciesReferences *arg1 = (ListOfSpeciesReferences *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  SimpleSpeciesReference *result = 0 ;
  
  arg1 = (ListOfSpeciesReferences *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (SimpleSpeciesReference *)(arg1)->get((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfSpeciesReferences_remove__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  ListOfSpeciesReferences *arg1 = (ListOfSpeciesReferences *) 0 ;
  unsigned int arg2 ;
  SimpleSpeciesReference *result = 0 ;
  
  arg1 = (ListOfSpeciesReferences *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (SimpleSpeciesReference *)(arg1)->remove(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfSpeciesReferences_remove__SWIG_1(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  ListOfSpeciesReferences *arg1 = (ListOfSpeciesReferences *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  SimpleSpeciesReference *result = 0 ;
  
  arg1 = (ListOfSpeciesReferences *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (SimpleSpeciesReference *)(arg1)->remove((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_ListOfSpeciesReferences(void * jarg1) {
  ListOfSpeciesReferences *arg1 = (ListOfSpeciesReferences *) 0 ;
  
  arg1 = (ListOfSpeciesReferences *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Event__SWIG_0(long long jarg1, long long jarg2) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  Event *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  
  try {
    result = (Event *)new Event(arg1,arg2);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Event__SWIG_1(void * jarg1) {
  void * jresult ;
  SBMLNamespaces *arg1 = (SBMLNamespaces *) 0 ;
  Event *result = 0 ;
  
  arg1 = (SBMLNamespaces *)jarg1; 
  
  try {
    result = (Event *)new Event(arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_Event(void * jarg1) {
  Event *arg1 = (Event *) 0 ;
  
  arg1 = (Event *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Event__SWIG_2(void * jarg1) {
  void * jresult ;
  Event *arg1 = 0 ;
  Event *result = 0 ;
  
  arg1 = (Event *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Event const & type is null", 0);
    return 0;
  } 
  
  try {
    result = (Event *)new Event((Event const &)*arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Event_clone(void * jarg1) {
  void * jresult ;
  Event *arg1 = (Event *) 0 ;
  Event *result = 0 ;
  
  arg1 = (Event *)jarg1; 
  result = (Event *)((Event const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Event_getId(void * jarg1) {
  wchar_t* jresult ;
  Event *arg1 = (Event *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Event *)jarg1; 
  result = (std::string *) &((Event const *)arg1)->getId();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Event_getName(void * jarg1) {
  wchar_t* jresult ;
  Event *arg1 = (Event *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Event *)jarg1; 
  result = (std::string *) &((Event const *)arg1)->getName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Event_getTrigger__SWIG_0(void * jarg1) {
  void * jresult ;
  Event *arg1 = (Event *) 0 ;
  Trigger *result = 0 ;
  
  arg1 = (Event *)jarg1; 
  result = (Trigger *)((Event const *)arg1)->getTrigger();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Event_getDelay__SWIG_0(void * jarg1) {
  void * jresult ;
  Event *arg1 = (Event *) 0 ;
  Delay *result = 0 ;
  
  arg1 = (Event *)jarg1; 
  result = (Delay *)((Event const *)arg1)->getDelay();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Event_getPriority__SWIG_0(void * jarg1) {
  void * jresult ;
  Event *arg1 = (Event *) 0 ;
  Priority *result = 0 ;
  
  arg1 = (Event *)jarg1; 
  result = (Priority *)((Event const *)arg1)->getPriority();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Event_getTimeUnits(void * jarg1) {
  wchar_t* jresult ;
  Event *arg1 = (Event *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Event *)jarg1; 
  result = (std::string *) &((Event const *)arg1)->getTimeUnits();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Event_getUseValuesFromTriggerTime(void * jarg1) {
  unsigned int jresult ;
  Event *arg1 = (Event *) 0 ;
  bool result;
  
  arg1 = (Event *)jarg1; 
  result = (bool)((Event const *)arg1)->getUseValuesFromTriggerTime();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Event_isSetId(void * jarg1) {
  unsigned int jresult ;
  Event *arg1 = (Event *) 0 ;
  bool result;
  
  arg1 = (Event *)jarg1; 
  result = (bool)((Event const *)arg1)->isSetId();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Event_isSetName(void * jarg1) {
  unsigned int jresult ;
  Event *arg1 = (Event *) 0 ;
  bool result;
  
  arg1 = (Event *)jarg1; 
  result = (bool)((Event const *)arg1)->isSetName();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Event_isSetTrigger(void * jarg1) {
  unsigned int jresult ;
  Event *arg1 = (Event *) 0 ;
  bool result;
  
  arg1 = (Event *)jarg1; 
  result = (bool)((Event const *)arg1)->isSetTrigger();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Event_isSetDelay(void * jarg1) {
  unsigned int jresult ;
  Event *arg1 = (Event *) 0 ;
  bool result;
  
  arg1 = (Event *)jarg1; 
  result = (bool)((Event const *)arg1)->isSetDelay();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Event_isSetPriority(void * jarg1) {
  unsigned int jresult ;
  Event *arg1 = (Event *) 0 ;
  bool result;
  
  arg1 = (Event *)jarg1; 
  result = (bool)((Event const *)arg1)->isSetPriority();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Event_isSetTimeUnits(void * jarg1) {
  unsigned int jresult ;
  Event *arg1 = (Event *) 0 ;
  bool result;
  
  arg1 = (Event *)jarg1; 
  result = (bool)((Event const *)arg1)->isSetTimeUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Event_isSetUseValuesFromTriggerTime(void * jarg1) {
  unsigned int jresult ;
  Event *arg1 = (Event *) 0 ;
  bool result;
  
  arg1 = (Event *)jarg1; 
  result = (bool)((Event const *)arg1)->isSetUseValuesFromTriggerTime();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Event_setId(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  Event *arg1 = (Event *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (Event *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setId((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Event_setName(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  Event *arg1 = (Event *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (Event *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setName((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Event_setTrigger(void * jarg1, void * jarg2) {
  int jresult ;
  Event *arg1 = (Event *) 0 ;
  Trigger *arg2 = (Trigger *) 0 ;
  int result;
  
  arg1 = (Event *)jarg1; 
  arg2 = (Trigger *)jarg2; 
  result = (int)(arg1)->setTrigger((Trigger const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Event_setDelay(void * jarg1, void * jarg2) {
  int jresult ;
  Event *arg1 = (Event *) 0 ;
  Delay *arg2 = (Delay *) 0 ;
  int result;
  
  arg1 = (Event *)jarg1; 
  arg2 = (Delay *)jarg2; 
  result = (int)(arg1)->setDelay((Delay const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Event_setPriority(void * jarg1, void * jarg2) {
  int jresult ;
  Event *arg1 = (Event *) 0 ;
  Priority *arg2 = (Priority *) 0 ;
  int result;
  
  arg1 = (Event *)jarg1; 
  arg2 = (Priority *)jarg2; 
  result = (int)(arg1)->setPriority((Priority const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Event_setTimeUnits(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  Event *arg1 = (Event *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (Event *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setTimeUnits((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Event_setUseValuesFromTriggerTime(void * jarg1, unsigned int jarg2) {
  int jresult ;
  Event *arg1 = (Event *) 0 ;
  bool arg2 ;
  int result;
  
  arg1 = (Event *)jarg1; 
  arg2 = jarg2 ? true : false; 
  result = (int)(arg1)->setUseValuesFromTriggerTime(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Event_unsetId(void * jarg1) {
  int jresult ;
  Event *arg1 = (Event *) 0 ;
  int result;
  
  arg1 = (Event *)jarg1; 
  result = (int)(arg1)->unsetId();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Event_unsetName(void * jarg1) {
  int jresult ;
  Event *arg1 = (Event *) 0 ;
  int result;
  
  arg1 = (Event *)jarg1; 
  result = (int)(arg1)->unsetName();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Event_unsetDelay(void * jarg1) {
  int jresult ;
  Event *arg1 = (Event *) 0 ;
  int result;
  
  arg1 = (Event *)jarg1; 
  result = (int)(arg1)->unsetDelay();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Event_unsetPriority(void * jarg1) {
  int jresult ;
  Event *arg1 = (Event *) 0 ;
  int result;
  
  arg1 = (Event *)jarg1; 
  result = (int)(arg1)->unsetPriority();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Event_unsetTimeUnits(void * jarg1) {
  int jresult ;
  Event *arg1 = (Event *) 0 ;
  int result;
  
  arg1 = (Event *)jarg1; 
  result = (int)(arg1)->unsetTimeUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Event_addEventAssignment(void * jarg1, void * jarg2) {
  int jresult ;
  Event *arg1 = (Event *) 0 ;
  EventAssignment *arg2 = (EventAssignment *) 0 ;
  int result;
  
  arg1 = (Event *)jarg1; 
  arg2 = (EventAssignment *)jarg2; 
  result = (int)(arg1)->addEventAssignment((EventAssignment const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Event_createEventAssignment(void * jarg1) {
  void * jresult ;
  Event *arg1 = (Event *) 0 ;
  EventAssignment *result = 0 ;
  
  arg1 = (Event *)jarg1; 
  result = (EventAssignment *)(arg1)->createEventAssignment();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Event_createTrigger(void * jarg1) {
  void * jresult ;
  Event *arg1 = (Event *) 0 ;
  Trigger *result = 0 ;
  
  arg1 = (Event *)jarg1; 
  result = (Trigger *)(arg1)->createTrigger();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Event_createDelay(void * jarg1) {
  void * jresult ;
  Event *arg1 = (Event *) 0 ;
  Delay *result = 0 ;
  
  arg1 = (Event *)jarg1; 
  result = (Delay *)(arg1)->createDelay();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Event_createPriority(void * jarg1) {
  void * jresult ;
  Event *arg1 = (Event *) 0 ;
  Priority *result = 0 ;
  
  arg1 = (Event *)jarg1; 
  result = (Priority *)(arg1)->createPriority();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Event_getListOfEventAssignments__SWIG_0(void * jarg1) {
  void * jresult ;
  Event *arg1 = (Event *) 0 ;
  ListOfEventAssignments *result = 0 ;
  
  arg1 = (Event *)jarg1; 
  result = (ListOfEventAssignments *)((Event const *)arg1)->getListOfEventAssignments();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Event_getEventAssignment__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  Event *arg1 = (Event *) 0 ;
  unsigned int arg2 ;
  EventAssignment *result = 0 ;
  
  arg1 = (Event *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (EventAssignment *)((Event const *)arg1)->getEventAssignment(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Event_getEventAssignment__SWIG_2(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  Event *arg1 = (Event *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  EventAssignment *result = 0 ;
  
  arg1 = (Event *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (EventAssignment *)((Event const *)arg1)->getEventAssignment((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Event_getNumEventAssignments(void * jarg1) {
  unsigned int jresult ;
  Event *arg1 = (Event *) 0 ;
  unsigned int result;
  
  arg1 = (Event *)jarg1; 
  result = (unsigned int)((Event const *)arg1)->getNumEventAssignments();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Event_removeEventAssignment__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  Event *arg1 = (Event *) 0 ;
  unsigned int arg2 ;
  EventAssignment *result = 0 ;
  
  arg1 = (Event *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (EventAssignment *)(arg1)->removeEventAssignment(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Event_removeEventAssignment__SWIG_1(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  Event *arg1 = (Event *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  EventAssignment *result = 0 ;
  
  arg1 = (Event *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (EventAssignment *)(arg1)->removeEventAssignment((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Event_getTypeCode(void * jarg1) {
  int jresult ;
  Event *arg1 = (Event *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (Event *)jarg1; 
  result = (SBMLTypeCode_t)((Event const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Event_getElementName(void * jarg1) {
  wchar_t* jresult ;
  Event *arg1 = (Event *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Event *)jarg1; 
  result = (std::string *) &((Event const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Event_hasRequiredAttributes(void * jarg1) {
  unsigned int jresult ;
  Event *arg1 = (Event *) 0 ;
  bool result;
  
  arg1 = (Event *)jarg1; 
  result = (bool)((Event const *)arg1)->hasRequiredAttributes();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Event_hasRequiredElements(void * jarg1) {
  unsigned int jresult ;
  Event *arg1 = (Event *) 0 ;
  bool result;
  
  arg1 = (Event *)jarg1; 
  result = (bool)((Event const *)arg1)->hasRequiredElements();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfEvents_clone(void * jarg1) {
  void * jresult ;
  ListOfEvents *arg1 = (ListOfEvents *) 0 ;
  ListOfEvents *result = 0 ;
  
  arg1 = (ListOfEvents *)jarg1; 
  result = (ListOfEvents *)((ListOfEvents const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ListOfEvents_getTypeCode(void * jarg1) {
  int jresult ;
  ListOfEvents *arg1 = (ListOfEvents *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (ListOfEvents *)jarg1; 
  result = (SBMLTypeCode_t)((ListOfEvents const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ListOfEvents_getItemTypeCode(void * jarg1) {
  int jresult ;
  ListOfEvents *arg1 = (ListOfEvents *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (ListOfEvents *)jarg1; 
  result = (SBMLTypeCode_t)((ListOfEvents const *)arg1)->getItemTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_ListOfEvents_getElementName(void * jarg1) {
  wchar_t* jresult ;
  ListOfEvents *arg1 = (ListOfEvents *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (ListOfEvents *)jarg1; 
  result = (std::string *) &((ListOfEvents const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfEvents_get__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  ListOfEvents *arg1 = (ListOfEvents *) 0 ;
  unsigned int arg2 ;
  Event *result = 0 ;
  
  arg1 = (ListOfEvents *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (Event *)(arg1)->get(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfEvents_get__SWIG_2(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  ListOfEvents *arg1 = (ListOfEvents *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  Event *result = 0 ;
  
  arg1 = (ListOfEvents *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (Event *)(arg1)->get((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfEvents_remove__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  ListOfEvents *arg1 = (ListOfEvents *) 0 ;
  unsigned int arg2 ;
  Event *result = 0 ;
  
  arg1 = (ListOfEvents *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (Event *)(arg1)->remove(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfEvents_remove__SWIG_1(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  ListOfEvents *arg1 = (ListOfEvents *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  Event *result = 0 ;
  
  arg1 = (ListOfEvents *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (Event *)(arg1)->remove((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_ListOfEvents() {
  void * jresult ;
  ListOfEvents *result = 0 ;
  
  result = (ListOfEvents *)new ListOfEvents();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_ListOfEvents(void * jarg1) {
  ListOfEvents *arg1 = (ListOfEvents *) 0 ;
  
  arg1 = (ListOfEvents *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_EventAssignment__SWIG_0(long long jarg1, long long jarg2) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  EventAssignment *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  
  try {
    result = (EventAssignment *)new EventAssignment(arg1,arg2);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_EventAssignment__SWIG_1(void * jarg1) {
  void * jresult ;
  SBMLNamespaces *arg1 = (SBMLNamespaces *) 0 ;
  EventAssignment *result = 0 ;
  
  arg1 = (SBMLNamespaces *)jarg1; 
  
  try {
    result = (EventAssignment *)new EventAssignment(arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_EventAssignment(void * jarg1) {
  EventAssignment *arg1 = (EventAssignment *) 0 ;
  
  arg1 = (EventAssignment *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_EventAssignment__SWIG_2(void * jarg1) {
  void * jresult ;
  EventAssignment *arg1 = 0 ;
  EventAssignment *result = 0 ;
  
  arg1 = (EventAssignment *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "EventAssignment const & type is null", 0);
    return 0;
  } 
  
  try {
    result = (EventAssignment *)new EventAssignment((EventAssignment const &)*arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_EventAssignment_clone(void * jarg1) {
  void * jresult ;
  EventAssignment *arg1 = (EventAssignment *) 0 ;
  EventAssignment *result = 0 ;
  
  arg1 = (EventAssignment *)jarg1; 
  result = (EventAssignment *)((EventAssignment const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_EventAssignment_getVariable(void * jarg1) {
  wchar_t* jresult ;
  EventAssignment *arg1 = (EventAssignment *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (EventAssignment *)jarg1; 
  result = (std::string *) &((EventAssignment const *)arg1)->getVariable();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_EventAssignment_getMath(void * jarg1) {
  void * jresult ;
  EventAssignment *arg1 = (EventAssignment *) 0 ;
  ASTNode *result = 0 ;
  
  arg1 = (EventAssignment *)jarg1; 
  result = (ASTNode *)((EventAssignment const *)arg1)->getMath();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_EventAssignment_isSetVariable(void * jarg1) {
  unsigned int jresult ;
  EventAssignment *arg1 = (EventAssignment *) 0 ;
  bool result;
  
  arg1 = (EventAssignment *)jarg1; 
  result = (bool)((EventAssignment const *)arg1)->isSetVariable();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_EventAssignment_isSetMath(void * jarg1) {
  unsigned int jresult ;
  EventAssignment *arg1 = (EventAssignment *) 0 ;
  bool result;
  
  arg1 = (EventAssignment *)jarg1; 
  result = (bool)((EventAssignment const *)arg1)->isSetMath();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_EventAssignment_setVariable(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  EventAssignment *arg1 = (EventAssignment *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (EventAssignment *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setVariable((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_EventAssignment_setMath(void * jarg1, void * jarg2) {
  int jresult ;
  EventAssignment *arg1 = (EventAssignment *) 0 ;
  ASTNode *arg2 = (ASTNode *) 0 ;
  int result;
  
  arg1 = (EventAssignment *)jarg1; 
  arg2 = (ASTNode *)jarg2; 
  result = (int)(arg1)->setMath((ASTNode const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_EventAssignment_getDerivedUnitDefinition__SWIG_0(void * jarg1) {
  void * jresult ;
  EventAssignment *arg1 = (EventAssignment *) 0 ;
  UnitDefinition *result = 0 ;
  
  arg1 = (EventAssignment *)jarg1; 
  result = (UnitDefinition *)(arg1)->getDerivedUnitDefinition();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_EventAssignment_containsUndeclaredUnits__SWIG_0(void * jarg1) {
  unsigned int jresult ;
  EventAssignment *arg1 = (EventAssignment *) 0 ;
  bool result;
  
  arg1 = (EventAssignment *)jarg1; 
  result = (bool)(arg1)->containsUndeclaredUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_EventAssignment_getTypeCode(void * jarg1) {
  int jresult ;
  EventAssignment *arg1 = (EventAssignment *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (EventAssignment *)jarg1; 
  result = (SBMLTypeCode_t)((EventAssignment const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_EventAssignment_getElementName(void * jarg1) {
  wchar_t* jresult ;
  EventAssignment *arg1 = (EventAssignment *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (EventAssignment *)jarg1; 
  result = (std::string *) &((EventAssignment const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_EventAssignment_hasRequiredAttributes(void * jarg1) {
  unsigned int jresult ;
  EventAssignment *arg1 = (EventAssignment *) 0 ;
  bool result;
  
  arg1 = (EventAssignment *)jarg1; 
  result = (bool)((EventAssignment const *)arg1)->hasRequiredAttributes();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_EventAssignment_hasRequiredElements(void * jarg1) {
  unsigned int jresult ;
  EventAssignment *arg1 = (EventAssignment *) 0 ;
  bool result;
  
  arg1 = (EventAssignment *)jarg1; 
  result = (bool)((EventAssignment const *)arg1)->hasRequiredElements();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_EventAssignment_getId(void * jarg1) {
  wchar_t* jresult ;
  EventAssignment *arg1 = (EventAssignment *) 0 ;
  std::string result;
  
  arg1 = (EventAssignment *)jarg1; 
  result = ((EventAssignment const *)arg1)->getId();
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfEventAssignments_clone(void * jarg1) {
  void * jresult ;
  ListOfEventAssignments *arg1 = (ListOfEventAssignments *) 0 ;
  ListOfEventAssignments *result = 0 ;
  
  arg1 = (ListOfEventAssignments *)jarg1; 
  result = (ListOfEventAssignments *)((ListOfEventAssignments const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ListOfEventAssignments_getTypeCode(void * jarg1) {
  int jresult ;
  ListOfEventAssignments *arg1 = (ListOfEventAssignments *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (ListOfEventAssignments *)jarg1; 
  result = (SBMLTypeCode_t)((ListOfEventAssignments const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ListOfEventAssignments_getItemTypeCode(void * jarg1) {
  int jresult ;
  ListOfEventAssignments *arg1 = (ListOfEventAssignments *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (ListOfEventAssignments *)jarg1; 
  result = (SBMLTypeCode_t)((ListOfEventAssignments const *)arg1)->getItemTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_ListOfEventAssignments_getElementName(void * jarg1) {
  wchar_t* jresult ;
  ListOfEventAssignments *arg1 = (ListOfEventAssignments *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (ListOfEventAssignments *)jarg1; 
  result = (std::string *) &((ListOfEventAssignments const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfEventAssignments_get__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  ListOfEventAssignments *arg1 = (ListOfEventAssignments *) 0 ;
  unsigned int arg2 ;
  EventAssignment *result = 0 ;
  
  arg1 = (ListOfEventAssignments *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (EventAssignment *)(arg1)->get(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfEventAssignments_get__SWIG_2(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  ListOfEventAssignments *arg1 = (ListOfEventAssignments *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  EventAssignment *result = 0 ;
  
  arg1 = (ListOfEventAssignments *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (EventAssignment *)(arg1)->get((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfEventAssignments_remove__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  ListOfEventAssignments *arg1 = (ListOfEventAssignments *) 0 ;
  unsigned int arg2 ;
  EventAssignment *result = 0 ;
  
  arg1 = (ListOfEventAssignments *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (EventAssignment *)(arg1)->remove(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ListOfEventAssignments_remove__SWIG_1(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  ListOfEventAssignments *arg1 = (ListOfEventAssignments *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  EventAssignment *result = 0 ;
  
  arg1 = (ListOfEventAssignments *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (EventAssignment *)(arg1)->remove((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_ListOfEventAssignments() {
  void * jresult ;
  ListOfEventAssignments *result = 0 ;
  
  result = (ListOfEventAssignments *)new ListOfEventAssignments();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_ListOfEventAssignments(void * jarg1) {
  ListOfEventAssignments *arg1 = (ListOfEventAssignments *) 0 ;
  
  arg1 = (ListOfEventAssignments *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Trigger__SWIG_0(long long jarg1, long long jarg2) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  Trigger *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  
  try {
    result = (Trigger *)new Trigger(arg1,arg2);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Trigger__SWIG_1(void * jarg1) {
  void * jresult ;
  SBMLNamespaces *arg1 = (SBMLNamespaces *) 0 ;
  Trigger *result = 0 ;
  
  arg1 = (SBMLNamespaces *)jarg1; 
  
  try {
    result = (Trigger *)new Trigger(arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_Trigger(void * jarg1) {
  Trigger *arg1 = (Trigger *) 0 ;
  
  arg1 = (Trigger *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Trigger__SWIG_2(void * jarg1) {
  void * jresult ;
  Trigger *arg1 = 0 ;
  Trigger *result = 0 ;
  
  arg1 = (Trigger *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Trigger const & type is null", 0);
    return 0;
  } 
  
  try {
    result = (Trigger *)new Trigger((Trigger const &)*arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Trigger_clone(void * jarg1) {
  void * jresult ;
  Trigger *arg1 = (Trigger *) 0 ;
  Trigger *result = 0 ;
  
  arg1 = (Trigger *)jarg1; 
  result = (Trigger *)((Trigger const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Trigger_getMath(void * jarg1) {
  void * jresult ;
  Trigger *arg1 = (Trigger *) 0 ;
  ASTNode *result = 0 ;
  
  arg1 = (Trigger *)jarg1; 
  result = (ASTNode *)((Trigger const *)arg1)->getMath();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Trigger_getInitialValue(void * jarg1) {
  unsigned int jresult ;
  Trigger *arg1 = (Trigger *) 0 ;
  bool result;
  
  arg1 = (Trigger *)jarg1; 
  result = (bool)((Trigger const *)arg1)->getInitialValue();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Trigger_getPersistent(void * jarg1) {
  unsigned int jresult ;
  Trigger *arg1 = (Trigger *) 0 ;
  bool result;
  
  arg1 = (Trigger *)jarg1; 
  result = (bool)((Trigger const *)arg1)->getPersistent();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Trigger_isSetMath(void * jarg1) {
  unsigned int jresult ;
  Trigger *arg1 = (Trigger *) 0 ;
  bool result;
  
  arg1 = (Trigger *)jarg1; 
  result = (bool)((Trigger const *)arg1)->isSetMath();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Trigger_isSetInitialValue(void * jarg1) {
  unsigned int jresult ;
  Trigger *arg1 = (Trigger *) 0 ;
  bool result;
  
  arg1 = (Trigger *)jarg1; 
  result = (bool)((Trigger const *)arg1)->isSetInitialValue();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Trigger_isSetPersistent(void * jarg1) {
  unsigned int jresult ;
  Trigger *arg1 = (Trigger *) 0 ;
  bool result;
  
  arg1 = (Trigger *)jarg1; 
  result = (bool)((Trigger const *)arg1)->isSetPersistent();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Trigger_setMath(void * jarg1, void * jarg2) {
  int jresult ;
  Trigger *arg1 = (Trigger *) 0 ;
  ASTNode *arg2 = (ASTNode *) 0 ;
  int result;
  
  arg1 = (Trigger *)jarg1; 
  arg2 = (ASTNode *)jarg2; 
  result = (int)(arg1)->setMath((ASTNode const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Trigger_setInitialValue(void * jarg1, unsigned int jarg2) {
  int jresult ;
  Trigger *arg1 = (Trigger *) 0 ;
  bool arg2 ;
  int result;
  
  arg1 = (Trigger *)jarg1; 
  arg2 = jarg2 ? true : false; 
  result = (int)(arg1)->setInitialValue(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Trigger_setPersistent(void * jarg1, unsigned int jarg2) {
  int jresult ;
  Trigger *arg1 = (Trigger *) 0 ;
  bool arg2 ;
  int result;
  
  arg1 = (Trigger *)jarg1; 
  arg2 = jarg2 ? true : false; 
  result = (int)(arg1)->setPersistent(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Trigger_getTypeCode(void * jarg1) {
  int jresult ;
  Trigger *arg1 = (Trigger *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (Trigger *)jarg1; 
  result = (SBMLTypeCode_t)((Trigger const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Trigger_getElementName(void * jarg1) {
  wchar_t* jresult ;
  Trigger *arg1 = (Trigger *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Trigger *)jarg1; 
  result = (std::string *) &((Trigger const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Trigger_hasRequiredElements(void * jarg1) {
  unsigned int jresult ;
  Trigger *arg1 = (Trigger *) 0 ;
  bool result;
  
  arg1 = (Trigger *)jarg1; 
  result = (bool)((Trigger const *)arg1)->hasRequiredElements();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Trigger_hasRequiredAttributes(void * jarg1) {
  unsigned int jresult ;
  Trigger *arg1 = (Trigger *) 0 ;
  bool result;
  
  arg1 = (Trigger *)jarg1; 
  result = (bool)((Trigger const *)arg1)->hasRequiredAttributes();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Delay__SWIG_0(long long jarg1, long long jarg2) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  Delay *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  
  try {
    result = (Delay *)new Delay(arg1,arg2);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Delay__SWIG_1(void * jarg1) {
  void * jresult ;
  SBMLNamespaces *arg1 = (SBMLNamespaces *) 0 ;
  Delay *result = 0 ;
  
  arg1 = (SBMLNamespaces *)jarg1; 
  
  try {
    result = (Delay *)new Delay(arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_Delay(void * jarg1) {
  Delay *arg1 = (Delay *) 0 ;
  
  arg1 = (Delay *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Delay__SWIG_2(void * jarg1) {
  void * jresult ;
  Delay *arg1 = 0 ;
  Delay *result = 0 ;
  
  arg1 = (Delay *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Delay const & type is null", 0);
    return 0;
  } 
  
  try {
    result = (Delay *)new Delay((Delay const &)*arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Delay_clone(void * jarg1) {
  void * jresult ;
  Delay *arg1 = (Delay *) 0 ;
  Delay *result = 0 ;
  
  arg1 = (Delay *)jarg1; 
  result = (Delay *)((Delay const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Delay_getMath(void * jarg1) {
  void * jresult ;
  Delay *arg1 = (Delay *) 0 ;
  ASTNode *result = 0 ;
  
  arg1 = (Delay *)jarg1; 
  result = (ASTNode *)((Delay const *)arg1)->getMath();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Delay_isSetMath(void * jarg1) {
  unsigned int jresult ;
  Delay *arg1 = (Delay *) 0 ;
  bool result;
  
  arg1 = (Delay *)jarg1; 
  result = (bool)((Delay const *)arg1)->isSetMath();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Delay_setMath(void * jarg1, void * jarg2) {
  int jresult ;
  Delay *arg1 = (Delay *) 0 ;
  ASTNode *arg2 = (ASTNode *) 0 ;
  int result;
  
  arg1 = (Delay *)jarg1; 
  arg2 = (ASTNode *)jarg2; 
  result = (int)(arg1)->setMath((ASTNode const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Delay_getDerivedUnitDefinition__SWIG_0(void * jarg1) {
  void * jresult ;
  Delay *arg1 = (Delay *) 0 ;
  UnitDefinition *result = 0 ;
  
  arg1 = (Delay *)jarg1; 
  result = (UnitDefinition *)(arg1)->getDerivedUnitDefinition();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Delay_containsUndeclaredUnits__SWIG_0(void * jarg1) {
  unsigned int jresult ;
  Delay *arg1 = (Delay *) 0 ;
  bool result;
  
  arg1 = (Delay *)jarg1; 
  result = (bool)(arg1)->containsUndeclaredUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Delay_getTypeCode(void * jarg1) {
  int jresult ;
  Delay *arg1 = (Delay *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (Delay *)jarg1; 
  result = (SBMLTypeCode_t)((Delay const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Delay_getElementName(void * jarg1) {
  wchar_t* jresult ;
  Delay *arg1 = (Delay *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Delay *)jarg1; 
  result = (std::string *) &((Delay const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Delay_hasRequiredElements(void * jarg1) {
  unsigned int jresult ;
  Delay *arg1 = (Delay *) 0 ;
  bool result;
  
  arg1 = (Delay *)jarg1; 
  result = (bool)((Delay const *)arg1)->hasRequiredElements();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Priority__SWIG_0(long long jarg1, long long jarg2) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  Priority *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  
  try {
    result = (Priority *)new Priority(arg1,arg2);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Priority__SWIG_1(void * jarg1) {
  void * jresult ;
  SBMLNamespaces *arg1 = (SBMLNamespaces *) 0 ;
  Priority *result = 0 ;
  
  arg1 = (SBMLNamespaces *)jarg1; 
  
  try {
    result = (Priority *)new Priority(arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_Priority(void * jarg1) {
  Priority *arg1 = (Priority *) 0 ;
  
  arg1 = (Priority *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Priority__SWIG_2(void * jarg1) {
  void * jresult ;
  Priority *arg1 = 0 ;
  Priority *result = 0 ;
  
  arg1 = (Priority *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Priority const & type is null", 0);
    return 0;
  } 
  
  try {
    result = (Priority *)new Priority((Priority const &)*arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Priority_clone(void * jarg1) {
  void * jresult ;
  Priority *arg1 = (Priority *) 0 ;
  Priority *result = 0 ;
  
  arg1 = (Priority *)jarg1; 
  result = (Priority *)((Priority const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Priority_getMath(void * jarg1) {
  void * jresult ;
  Priority *arg1 = (Priority *) 0 ;
  ASTNode *result = 0 ;
  
  arg1 = (Priority *)jarg1; 
  result = (ASTNode *)((Priority const *)arg1)->getMath();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Priority_isSetMath(void * jarg1) {
  unsigned int jresult ;
  Priority *arg1 = (Priority *) 0 ;
  bool result;
  
  arg1 = (Priority *)jarg1; 
  result = (bool)((Priority const *)arg1)->isSetMath();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Priority_setMath(void * jarg1, void * jarg2) {
  int jresult ;
  Priority *arg1 = (Priority *) 0 ;
  ASTNode *arg2 = (ASTNode *) 0 ;
  int result;
  
  arg1 = (Priority *)jarg1; 
  arg2 = (ASTNode *)jarg2; 
  result = (int)(arg1)->setMath((ASTNode const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Priority_getTypeCode(void * jarg1) {
  int jresult ;
  Priority *arg1 = (Priority *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (Priority *)jarg1; 
  result = (SBMLTypeCode_t)((Priority const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Priority_getElementName(void * jarg1) {
  wchar_t* jresult ;
  Priority *arg1 = (Priority *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Priority *)jarg1; 
  result = (std::string *) &((Priority const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Priority_hasRequiredElements(void * jarg1) {
  unsigned int jresult ;
  Priority *arg1 = (Priority *) 0 ;
  bool result;
  
  arg1 = (Priority *)jarg1; 
  result = (bool)((Priority const *)arg1)->hasRequiredElements();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBO_isQuantitativeParameter(long long jarg1) {
  unsigned int jresult ;
  unsigned int arg1 ;
  bool result;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  result = (bool)SBO::isQuantitativeParameter(arg1);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBO_isParticipantRole(long long jarg1) {
  unsigned int jresult ;
  unsigned int arg1 ;
  bool result;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  result = (bool)SBO::isParticipantRole(arg1);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBO_isModellingFramework(long long jarg1) {
  unsigned int jresult ;
  unsigned int arg1 ;
  bool result;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  result = (bool)SBO::isModellingFramework(arg1);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBO_isMathematicalExpression(long long jarg1) {
  unsigned int jresult ;
  unsigned int arg1 ;
  bool result;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  result = (bool)SBO::isMathematicalExpression(arg1);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBO_isKineticConstant(long long jarg1) {
  unsigned int jresult ;
  unsigned int arg1 ;
  bool result;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  result = (bool)SBO::isKineticConstant(arg1);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBO_isReactant(long long jarg1) {
  unsigned int jresult ;
  unsigned int arg1 ;
  bool result;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  result = (bool)SBO::isReactant(arg1);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBO_isProduct(long long jarg1) {
  unsigned int jresult ;
  unsigned int arg1 ;
  bool result;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  result = (bool)SBO::isProduct(arg1);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBO_isModifier(long long jarg1) {
  unsigned int jresult ;
  unsigned int arg1 ;
  bool result;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  result = (bool)SBO::isModifier(arg1);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBO_isRateLaw(long long jarg1) {
  unsigned int jresult ;
  unsigned int arg1 ;
  bool result;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  result = (bool)SBO::isRateLaw(arg1);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBO_isEvent(long long jarg1) {
  unsigned int jresult ;
  unsigned int arg1 ;
  bool result;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  result = (bool)SBO::isEvent(arg1);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBO_isPhysicalParticipant(long long jarg1) {
  unsigned int jresult ;
  unsigned int arg1 ;
  bool result;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  result = (bool)SBO::isPhysicalParticipant(arg1);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBO_isParticipant(long long jarg1) {
  unsigned int jresult ;
  unsigned int arg1 ;
  bool result;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  result = (bool)SBO::isParticipant(arg1);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBO_isInteraction(long long jarg1) {
  unsigned int jresult ;
  unsigned int arg1 ;
  bool result;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  result = (bool)SBO::isInteraction(arg1);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBO_isEntity(long long jarg1) {
  unsigned int jresult ;
  unsigned int arg1 ;
  bool result;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  result = (bool)SBO::isEntity(arg1);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBO_isFunctionalEntity(long long jarg1) {
  unsigned int jresult ;
  unsigned int arg1 ;
  bool result;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  result = (bool)SBO::isFunctionalEntity(arg1);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBO_isMaterialEntity(long long jarg1) {
  unsigned int jresult ;
  unsigned int arg1 ;
  bool result;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  result = (bool)SBO::isMaterialEntity(arg1);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBO_isConservationLaw(long long jarg1) {
  unsigned int jresult ;
  unsigned int arg1 ;
  bool result;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  result = (bool)SBO::isConservationLaw(arg1);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBO_isSteadyStateExpression(long long jarg1) {
  unsigned int jresult ;
  unsigned int arg1 ;
  bool result;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  result = (bool)SBO::isSteadyStateExpression(arg1);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBO_isFunctionalCompartment(long long jarg1) {
  unsigned int jresult ;
  unsigned int arg1 ;
  bool result;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  result = (bool)SBO::isFunctionalCompartment(arg1);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBO_isContinuousFramework(long long jarg1) {
  unsigned int jresult ;
  unsigned int arg1 ;
  bool result;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  result = (bool)SBO::isContinuousFramework(arg1);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBO_isDiscreteFramework(long long jarg1) {
  unsigned int jresult ;
  unsigned int arg1 ;
  bool result;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  result = (bool)SBO::isDiscreteFramework(arg1);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBO_isLogicalFramework(long long jarg1) {
  unsigned int jresult ;
  unsigned int arg1 ;
  bool result;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  result = (bool)SBO::isLogicalFramework(arg1);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBO_isObselete(long long jarg1) {
  unsigned int jresult ;
  unsigned int arg1 ;
  bool result;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  result = (bool)SBO::isObselete(arg1);
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_SBO_intToString(int jarg1) {
  wchar_t* jresult ;
  int arg1 ;
  std::string result;
  
  arg1 = (int)jarg1; 
  result = SBO::intToString(arg1);
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SBO_stringToInt(wchar_t* jarg1) {
  int jresult ;
  std::string *arg1 = 0 ;
  std::string arg_str1 ;
  int result;
  
  {
    char*  mbstr = convertUnicodeToUTF8(jarg1);
    if (!mbstr) return 0;
    
    arg_str1.assign(mbstr);
    arg1 = &arg_str1;
    delete[] mbstr;
  }
  result = (int)SBO::stringToInt((std::string const &)*arg1);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBO_checkTerm__SWIG_0(wchar_t* jarg1) {
  unsigned int jresult ;
  std::string *arg1 = 0 ;
  std::string arg_str1 ;
  bool result;
  
  {
    char*  mbstr = convertUnicodeToUTF8(jarg1);
    if (!mbstr) return 0;
    
    arg_str1.assign(mbstr);
    arg1 = &arg_str1;
    delete[] mbstr;
  }
  result = (bool)SBO::checkTerm((std::string const &)*arg1);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBO_checkTerm__SWIG_1(int jarg1) {
  unsigned int jresult ;
  int arg1 ;
  bool result;
  
  arg1 = (int)jarg1; 
  result = (bool)SBO::checkTerm(arg1);
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBO() {
  void * jresult ;
  SBO *result = 0 ;
  
  result = (SBO *)new SBO();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBO(void * jarg1) {
  SBO *arg1 = (SBO *) 0 ;
  
  arg1 = (SBO *)jarg1; 
  delete arg1;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SyntaxChecker_isValidSBMLSId(wchar_t* jarg1) {
  unsigned int jresult ;
  std::string arg1 ;
  bool result;
  
  {
    char*  mbstr = convertUnicodeToUTF8(jarg1);
    (&arg1)->assign(mbstr);
    delete[] mbstr;
  }
  result = (bool)SyntaxChecker::isValidSBMLSId(arg1);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SyntaxChecker_isValidXMLID(wchar_t* jarg1) {
  unsigned int jresult ;
  std::string arg1 ;
  bool result;
  
  {
    char*  mbstr = convertUnicodeToUTF8(jarg1);
    (&arg1)->assign(mbstr);
    delete[] mbstr;
  }
  result = (bool)SyntaxChecker::isValidXMLID(arg1);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SyntaxChecker_isValidUnitSId(wchar_t* jarg1) {
  unsigned int jresult ;
  std::string arg1 ;
  bool result;
  
  {
    char*  mbstr = convertUnicodeToUTF8(jarg1);
    (&arg1)->assign(mbstr);
    delete[] mbstr;
  }
  result = (bool)SyntaxChecker::isValidUnitSId(arg1);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SyntaxChecker_hasExpectedXHTMLSyntax__SWIG_0(void * jarg1, void * jarg2) {
  unsigned int jresult ;
  XMLNode *arg1 = (XMLNode *) 0 ;
  SBMLNamespaces *arg2 = (SBMLNamespaces *) 0 ;
  bool result;
  
  arg1 = (XMLNode *)jarg1; 
  arg2 = (SBMLNamespaces *)jarg2; 
  result = (bool)SyntaxChecker::hasExpectedXHTMLSyntax((XMLNode const *)arg1,arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SyntaxChecker_hasExpectedXHTMLSyntax__SWIG_1(void * jarg1) {
  unsigned int jresult ;
  XMLNode *arg1 = (XMLNode *) 0 ;
  bool result;
  
  arg1 = (XMLNode *)jarg1; 
  result = (bool)SyntaxChecker::hasExpectedXHTMLSyntax((XMLNode const *)arg1);
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SyntaxChecker() {
  void * jresult ;
  SyntaxChecker *result = 0 ;
  
  result = (SyntaxChecker *)new SyntaxChecker();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_SyntaxChecker(void * jarg1) {
  SyntaxChecker *arg1 = (SyntaxChecker *) 0 ;
  
  arg1 = (SyntaxChecker *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_StoichiometryMath__SWIG_0(long long jarg1, long long jarg2) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  StoichiometryMath *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  
  try {
    result = (StoichiometryMath *)new StoichiometryMath(arg1,arg2);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_StoichiometryMath__SWIG_1(void * jarg1) {
  void * jresult ;
  SBMLNamespaces *arg1 = (SBMLNamespaces *) 0 ;
  StoichiometryMath *result = 0 ;
  
  arg1 = (SBMLNamespaces *)jarg1; 
  
  try {
    result = (StoichiometryMath *)new StoichiometryMath(arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_StoichiometryMath(void * jarg1) {
  StoichiometryMath *arg1 = (StoichiometryMath *) 0 ;
  
  arg1 = (StoichiometryMath *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_StoichiometryMath__SWIG_2(void * jarg1) {
  void * jresult ;
  StoichiometryMath *arg1 = 0 ;
  StoichiometryMath *result = 0 ;
  
  arg1 = (StoichiometryMath *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "StoichiometryMath const & type is null", 0);
    return 0;
  } 
  
  try {
    result = (StoichiometryMath *)new StoichiometryMath((StoichiometryMath const &)*arg1);
  }
  catch (const SBMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),0);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_StoichiometryMath_clone(void * jarg1) {
  void * jresult ;
  StoichiometryMath *arg1 = (StoichiometryMath *) 0 ;
  StoichiometryMath *result = 0 ;
  
  arg1 = (StoichiometryMath *)jarg1; 
  result = (StoichiometryMath *)((StoichiometryMath const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_StoichiometryMath_getMath(void * jarg1) {
  void * jresult ;
  StoichiometryMath *arg1 = (StoichiometryMath *) 0 ;
  ASTNode *result = 0 ;
  
  arg1 = (StoichiometryMath *)jarg1; 
  result = (ASTNode *)((StoichiometryMath const *)arg1)->getMath();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_StoichiometryMath_isSetMath(void * jarg1) {
  unsigned int jresult ;
  StoichiometryMath *arg1 = (StoichiometryMath *) 0 ;
  bool result;
  
  arg1 = (StoichiometryMath *)jarg1; 
  result = (bool)((StoichiometryMath const *)arg1)->isSetMath();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_StoichiometryMath_setMath(void * jarg1, void * jarg2) {
  int jresult ;
  StoichiometryMath *arg1 = (StoichiometryMath *) 0 ;
  ASTNode *arg2 = (ASTNode *) 0 ;
  int result;
  
  arg1 = (StoichiometryMath *)jarg1; 
  arg2 = (ASTNode *)jarg2; 
  result = (int)(arg1)->setMath((ASTNode const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_StoichiometryMath_getDerivedUnitDefinition__SWIG_0(void * jarg1) {
  void * jresult ;
  StoichiometryMath *arg1 = (StoichiometryMath *) 0 ;
  UnitDefinition *result = 0 ;
  
  arg1 = (StoichiometryMath *)jarg1; 
  result = (UnitDefinition *)(arg1)->getDerivedUnitDefinition();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_StoichiometryMath_containsUndeclaredUnits__SWIG_0(void * jarg1) {
  unsigned int jresult ;
  StoichiometryMath *arg1 = (StoichiometryMath *) 0 ;
  bool result;
  
  arg1 = (StoichiometryMath *)jarg1; 
  result = (bool)(arg1)->containsUndeclaredUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_StoichiometryMath_getTypeCode(void * jarg1) {
  int jresult ;
  StoichiometryMath *arg1 = (StoichiometryMath *) 0 ;
  SBMLTypeCode_t result;
  
  arg1 = (StoichiometryMath *)jarg1; 
  result = (SBMLTypeCode_t)((StoichiometryMath const *)arg1)->getTypeCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_StoichiometryMath_getElementName(void * jarg1) {
  wchar_t* jresult ;
  StoichiometryMath *arg1 = (StoichiometryMath *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (StoichiometryMath *)jarg1; 
  result = (std::string *) &((StoichiometryMath const *)arg1)->getElementName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_StoichiometryMath_hasRequiredElements(void * jarg1) {
  unsigned int jresult ;
  StoichiometryMath *arg1 = (StoichiometryMath *) 0 ;
  bool result;
  
  arg1 = (StoichiometryMath *)jarg1; 
  result = (bool)((StoichiometryMath const *)arg1)->hasRequiredElements();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBMLNamespaces__SWIG_0(long long jarg1, long long jarg2) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  SBMLNamespaces *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (SBMLNamespaces *)new SBMLNamespaces(arg1,arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBMLNamespaces__SWIG_1(long long jarg1) {
  void * jresult ;
  unsigned int arg1 ;
  SBMLNamespaces *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  result = (SBMLNamespaces *)new SBMLNamespaces(arg1);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBMLNamespaces__SWIG_2() {
  void * jresult ;
  SBMLNamespaces *result = 0 ;
  
  result = (SBMLNamespaces *)new SBMLNamespaces();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBMLNamespaces(void * jarg1) {
  SBMLNamespaces *arg1 = (SBMLNamespaces *) 0 ;
  
  arg1 = (SBMLNamespaces *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBMLNamespaces__SWIG_3(void * jarg1) {
  void * jresult ;
  SBMLNamespaces *arg1 = 0 ;
  SBMLNamespaces *result = 0 ;
  
  arg1 = (SBMLNamespaces *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "SBMLNamespaces const & type is null", 0);
    return 0;
  } 
  result = (SBMLNamespaces *)new SBMLNamespaces((SBMLNamespaces const &)*arg1);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_SBMLNamespaces_clone(void * jarg1) {
  void * jresult ;
  SBMLNamespaces *arg1 = (SBMLNamespaces *) 0 ;
  SBMLNamespaces *result = 0 ;
  
  arg1 = (SBMLNamespaces *)jarg1; 
  result = (SBMLNamespaces *)((SBMLNamespaces const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_SBMLNamespaces_getSBMLNamespaceURI(long long jarg1, long long jarg2) {
  wchar_t* jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  std::string result;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = SBMLNamespaces::getSBMLNamespaceURI(arg1,arg2);
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_SBMLNamespaces_getSupportedNamespaces() {
  void * jresult ;
  List *result = 0 ;
  
  result = (List *)SBMLNamespaces::getSupportedNamespaces();
  {
    ListWrapper<SBMLNamespaces> *listw = (result != 0) ? new ListWrapper<SBMLNamespaces>(result) : 0;  
    jresult = (void*)listw;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBMLNamespaces_getLevel__SWIG_0(void * jarg1) {
  unsigned int jresult ;
  SBMLNamespaces *arg1 = (SBMLNamespaces *) 0 ;
  unsigned int result;
  
  arg1 = (SBMLNamespaces *)jarg1; 
  result = (unsigned int)(arg1)->getLevel();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBMLNamespaces_getVersion__SWIG_0(void * jarg1) {
  unsigned int jresult ;
  SBMLNamespaces *arg1 = (SBMLNamespaces *) 0 ;
  unsigned int result;
  
  arg1 = (SBMLNamespaces *)jarg1; 
  result = (unsigned int)(arg1)->getVersion();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_SBMLNamespaces_getNamespaces__SWIG_0(void * jarg1) {
  void * jresult ;
  SBMLNamespaces *arg1 = (SBMLNamespaces *) 0 ;
  XMLNamespaces *result = 0 ;
  
  arg1 = (SBMLNamespaces *)jarg1; 
  result = (XMLNamespaces *)(arg1)->getNamespaces();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_SBMLNamespaces_addNamespaces(void * jarg1, void * jarg2) {
  SBMLNamespaces *arg1 = (SBMLNamespaces *) 0 ;
  XMLNamespaces *arg2 = (XMLNamespaces *) 0 ;
  
  arg1 = (SBMLNamespaces *)jarg1; 
  arg2 = (XMLNamespaces *)jarg2; 
  (arg1)->addNamespaces(arg2);
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBMLTransforms() {
  void * jresult ;
  SBMLTransforms *result = 0 ;
  
  result = (SBMLTransforms *)new SBMLTransforms();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBMLTransforms(void * jarg1) {
  SBMLTransforms *arg1 = (SBMLTransforms *) 0 ;
  
  arg1 = (SBMLTransforms *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_readMathMLFromString(wchar_t* jarg1) {
  void * jresult ;
  char *arg1 = (char *) 0 ;
  ASTNode_t *result = 0 ;
  
  {
    if (jarg1)
    {
      arg1 = convertUnicodeToUTF8(jarg1);
      if (!arg1) return 0;
    }
  }
  result = (ASTNode_t *)readMathMLFromString((char const *)arg1);
  jresult = (void *)result; 
  {
    delete[] arg1;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_writeMathMLToString(void * jarg1) {
  wchar_t* jresult ;
  ASTNode_t *arg1 = (ASTNode_t *) 0 ;
  char *result = 0 ;
  
  arg1 = (ASTNode_t *)jarg1; 
  result = (char *)writeMathMLToString((ASTNode const *)arg1);
  {
    jresult = convertUTF8ToUnicode( result );
    wchar_t* unistr = convertUTF8ToUnicode( result );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  free(result);
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_ASTNode__SWIG_0(int jarg1) {
  void * jresult ;
  ASTNodeType_t arg1 ;
  ASTNode *result = 0 ;
  
  arg1 = (ASTNodeType_t)jarg1; 
  result = (ASTNode *)new ASTNode(arg1);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_ASTNode__SWIG_1() {
  void * jresult ;
  ASTNode *result = 0 ;
  
  result = (ASTNode *)new ASTNode();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_ASTNode__SWIG_2(void * jarg1) {
  void * jresult ;
  ASTNode *arg1 = 0 ;
  ASTNode *result = 0 ;
  
  arg1 = (ASTNode *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "ASTNode const & type is null", 0);
    return 0;
  } 
  result = (ASTNode *)new ASTNode((ASTNode const &)*arg1);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_ASTNode(void * jarg1) {
  ASTNode *arg1 = (ASTNode *) 0 ;
  
  arg1 = (ASTNode *)jarg1; 
  delete arg1;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ASTNode_freeName(void * jarg1) {
  int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  int result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (int)(arg1)->freeName();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ASTNode_canonicalize(void * jarg1) {
  unsigned int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  bool result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (bool)(arg1)->canonicalize();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ASTNode_addChild(void * jarg1, void * jarg2) {
  int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  ASTNode *arg2 = (ASTNode *) 0 ;
  int result;
  
  arg1 = (ASTNode *)jarg1; 
  arg2 = (ASTNode *)jarg2; 
  result = (int)(arg1)->addChild(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ASTNode_prependChild(void * jarg1, void * jarg2) {
  int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  ASTNode *arg2 = (ASTNode *) 0 ;
  int result;
  
  arg1 = (ASTNode *)jarg1; 
  arg2 = (ASTNode *)jarg2; 
  result = (int)(arg1)->prependChild(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ASTNode_removeChild(void * jarg1, long long jarg2) {
  int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  unsigned int arg2 ;
  int result;
  
  arg1 = (ASTNode *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (int)(arg1)->removeChild(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ASTNode_replaceChild(void * jarg1, long long jarg2, void * jarg3) {
  int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  unsigned int arg2 ;
  ASTNode *arg3 = (ASTNode *) 0 ;
  int result;
  
  arg1 = (ASTNode *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  arg3 = (ASTNode *)jarg3; 
  result = (int)(arg1)->replaceChild(arg2,arg3);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ASTNode_insertChild(void * jarg1, long long jarg2, void * jarg3) {
  int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  unsigned int arg2 ;
  ASTNode *arg3 = (ASTNode *) 0 ;
  int result;
  
  arg1 = (ASTNode *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  arg3 = (ASTNode *)jarg3; 
  result = (int)(arg1)->insertChild(arg2,arg3);
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ASTNode_deepCopy(void * jarg1) {
  void * jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  ASTNode *result = 0 ;
  
  arg1 = (ASTNode *)jarg1; 
  result = (ASTNode *)((ASTNode const *)arg1)->deepCopy();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ASTNode_getChild(void * jarg1, long long jarg2) {
  void * jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  unsigned int arg2 ;
  ASTNode *result = 0 ;
  
  arg1 = (ASTNode *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (ASTNode *)((ASTNode const *)arg1)->getChild(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ASTNode_getLeftChild(void * jarg1) {
  void * jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  ASTNode *result = 0 ;
  
  arg1 = (ASTNode *)jarg1; 
  result = (ASTNode *)((ASTNode const *)arg1)->getLeftChild();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ASTNode_getRightChild(void * jarg1) {
  void * jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  ASTNode *result = 0 ;
  
  arg1 = (ASTNode *)jarg1; 
  result = (ASTNode *)((ASTNode const *)arg1)->getRightChild();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ASTNode_getNumChildren(void * jarg1) {
  unsigned int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  unsigned int result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (unsigned int)((ASTNode const *)arg1)->getNumChildren();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ASTNode_addSemanticsAnnotation(void * jarg1, void * jarg2) {
  int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  XMLNode *arg2 = (XMLNode *) 0 ;
  int result;
  
  arg1 = (ASTNode *)jarg1; 
  arg2 = (XMLNode *)jarg2; 
  result = (int)(arg1)->addSemanticsAnnotation(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ASTNode_getNumSemanticsAnnotations(void * jarg1) {
  unsigned int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  unsigned int result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (unsigned int)((ASTNode const *)arg1)->getNumSemanticsAnnotations();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ASTNode_getSemanticsAnnotation(void * jarg1, long long jarg2) {
  void * jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  unsigned int arg2 ;
  XMLNode *result = 0 ;
  
  arg1 = (ASTNode *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (XMLNode *)((ASTNode const *)arg1)->getSemanticsAnnotation(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT char SWIGSTDCALL CSharp_ASTNode_getCharacter(void * jarg1) {
  char jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  char result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (char)((ASTNode const *)arg1)->getCharacter();
  jresult = result; 
  return jresult;
}


SWIGEXPORT long SWIGSTDCALL CSharp_ASTNode_getInteger(void * jarg1) {
  long jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  long result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (long)((ASTNode const *)arg1)->getInteger();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_ASTNode_getName(void * jarg1) {
  wchar_t* jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  char *result = 0 ;
  
  arg1 = (ASTNode *)jarg1; 
  result = (char *)((ASTNode const *)arg1)->getName();
  {
    jresult = convertUTF8ToUnicode( result );
    wchar_t* unistr = convertUTF8ToUnicode( result );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT long SWIGSTDCALL CSharp_ASTNode_getNumerator(void * jarg1) {
  long jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  long result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (long)((ASTNode const *)arg1)->getNumerator();
  jresult = result; 
  return jresult;
}


SWIGEXPORT long SWIGSTDCALL CSharp_ASTNode_getDenominator(void * jarg1) {
  long jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  long result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (long)((ASTNode const *)arg1)->getDenominator();
  jresult = result; 
  return jresult;
}


SWIGEXPORT double SWIGSTDCALL CSharp_ASTNode_getReal(void * jarg1) {
  double jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  double result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (double)((ASTNode const *)arg1)->getReal();
  jresult = result; 
  return jresult;
}


SWIGEXPORT double SWIGSTDCALL CSharp_ASTNode_getMantissa(void * jarg1) {
  double jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  double result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (double)((ASTNode const *)arg1)->getMantissa();
  jresult = result; 
  return jresult;
}


SWIGEXPORT long SWIGSTDCALL CSharp_ASTNode_getExponent(void * jarg1) {
  long jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  long result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (long)((ASTNode const *)arg1)->getExponent();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ASTNode_getPrecedence(void * jarg1) {
  int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  int result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (int)((ASTNode const *)arg1)->getPrecedence();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ASTNode_getType(void * jarg1) {
  int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  ASTNodeType_t result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (ASTNodeType_t)((ASTNode const *)arg1)->getType();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_ASTNode_getUnits(void * jarg1) {
  wchar_t* jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  std::string result;
  
  arg1 = (ASTNode *)jarg1; 
  result = ((ASTNode const *)arg1)->getUnits();
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ASTNode_isBoolean(void * jarg1) {
  unsigned int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  bool result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (bool)((ASTNode const *)arg1)->isBoolean();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ASTNode_isConstant(void * jarg1) {
  unsigned int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  bool result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (bool)((ASTNode const *)arg1)->isConstant();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ASTNode_isFunction(void * jarg1) {
  unsigned int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  bool result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (bool)((ASTNode const *)arg1)->isFunction();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ASTNode_isInfinity(void * jarg1) {
  unsigned int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  bool result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (bool)((ASTNode const *)arg1)->isInfinity();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ASTNode_isInteger(void * jarg1) {
  unsigned int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  bool result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (bool)((ASTNode const *)arg1)->isInteger();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ASTNode_isLambda(void * jarg1) {
  unsigned int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  bool result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (bool)((ASTNode const *)arg1)->isLambda();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ASTNode_isLog10(void * jarg1) {
  unsigned int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  bool result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (bool)((ASTNode const *)arg1)->isLog10();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ASTNode_isLogical(void * jarg1) {
  unsigned int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  bool result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (bool)((ASTNode const *)arg1)->isLogical();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ASTNode_isName(void * jarg1) {
  unsigned int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  bool result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (bool)((ASTNode const *)arg1)->isName();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ASTNode_isNaN(void * jarg1) {
  unsigned int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  bool result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (bool)((ASTNode const *)arg1)->isNaN();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ASTNode_isNegInfinity(void * jarg1) {
  unsigned int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  bool result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (bool)((ASTNode const *)arg1)->isNegInfinity();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ASTNode_isNumber(void * jarg1) {
  unsigned int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  bool result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (bool)((ASTNode const *)arg1)->isNumber();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ASTNode_isOperator(void * jarg1) {
  unsigned int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  bool result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (bool)((ASTNode const *)arg1)->isOperator();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ASTNode_isPiecewise(void * jarg1) {
  unsigned int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  bool result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (bool)((ASTNode const *)arg1)->isPiecewise();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ASTNode_isRational(void * jarg1) {
  unsigned int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  bool result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (bool)((ASTNode const *)arg1)->isRational();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ASTNode_isReal(void * jarg1) {
  unsigned int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  bool result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (bool)((ASTNode const *)arg1)->isReal();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ASTNode_isRelational(void * jarg1) {
  unsigned int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  bool result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (bool)((ASTNode const *)arg1)->isRelational();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ASTNode_isSqrt(void * jarg1) {
  unsigned int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  bool result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (bool)((ASTNode const *)arg1)->isSqrt();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ASTNode_isUMinus(void * jarg1) {
  unsigned int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  bool result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (bool)((ASTNode const *)arg1)->isUMinus();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ASTNode_isUnknown(void * jarg1) {
  unsigned int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  bool result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (bool)((ASTNode const *)arg1)->isUnknown();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ASTNode_isSetUnits(void * jarg1) {
  unsigned int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  bool result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (bool)((ASTNode const *)arg1)->isSetUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ASTNode_hasUnits(void * jarg1) {
  unsigned int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  bool result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (bool)((ASTNode const *)arg1)->hasUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ASTNode_setCharacter(void * jarg1, char jarg2) {
  int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  char arg2 ;
  int result;
  
  arg1 = (ASTNode *)jarg1; 
  arg2 = (char)jarg2; 
  result = (int)(arg1)->setCharacter(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ASTNode_setName(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  char *arg2 = (char *) 0 ;
  int result;
  
  arg1 = (ASTNode *)jarg1; 
  {
    if (jarg2)
    {
      arg2 = convertUnicodeToUTF8(jarg2);
      if (!arg2) return 0;
    }
  }
  result = (int)(arg1)->setName((char const *)arg2);
  jresult = result; 
  {
    delete[] arg2;
  }
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ASTNode_setValue__SWIG_0(void * jarg1, long jarg2) {
  int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  long arg2 ;
  int result;
  
  arg1 = (ASTNode *)jarg1; 
  arg2 = (long)jarg2; 
  result = (int)(arg1)->setValue(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ASTNode_setValue__SWIG_1(void * jarg1, long jarg2, long jarg3) {
  int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  long arg2 ;
  long arg3 ;
  int result;
  
  arg1 = (ASTNode *)jarg1; 
  arg2 = (long)jarg2; 
  arg3 = (long)jarg3; 
  result = (int)(arg1)->setValue(arg2,arg3);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ASTNode_setValue__SWIG_2(void * jarg1, double jarg2) {
  int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  double arg2 ;
  int result;
  
  arg1 = (ASTNode *)jarg1; 
  arg2 = (double)jarg2; 
  result = (int)(arg1)->setValue(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ASTNode_setValue__SWIG_3(void * jarg1, double jarg2, long jarg3) {
  int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  double arg2 ;
  long arg3 ;
  int result;
  
  arg1 = (ASTNode *)jarg1; 
  arg2 = (double)jarg2; 
  arg3 = (long)jarg3; 
  result = (int)(arg1)->setValue(arg2,arg3);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ASTNode_setType(void * jarg1, int jarg2) {
  int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  ASTNodeType_t arg2 ;
  int result;
  
  arg1 = (ASTNode *)jarg1; 
  arg2 = (ASTNodeType_t)jarg2; 
  result = (int)(arg1)->setType(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ASTNode_setUnits(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  std::string arg2 ;
  int result;
  
  arg1 = (ASTNode *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    (&arg2)->assign(mbstr);
    delete[] mbstr;
  }
  result = (int)(arg1)->setUnits(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ASTNode_swapChildren(void * jarg1, void * jarg2) {
  int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  ASTNode *arg2 = (ASTNode *) 0 ;
  int result;
  
  arg1 = (ASTNode *)jarg1; 
  arg2 = (ASTNode *)jarg2; 
  result = (int)(arg1)->swapChildren(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ASTNode_unsetUnits(void * jarg1) {
  int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  int result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (int)(arg1)->unsetUnits();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ASTNode_getDefinitionURL(void * jarg1) {
  void * jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  XMLAttributes *result = 0 ;
  
  arg1 = (ASTNode *)jarg1; 
  result = (XMLAttributes *)((ASTNode const *)arg1)->getDefinitionURL();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_ASTNode_replaceArgument(void * jarg1, wchar_t* jarg2, void * jarg3) {
  ASTNode *arg1 = (ASTNode *) 0 ;
  std::string arg2 ;
  ASTNode *arg3 = (ASTNode *) 0 ;
  
  arg1 = (ASTNode *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    (&arg2)->assign(mbstr);
    delete[] mbstr;
  }
  arg3 = (ASTNode *)jarg3; 
  (arg1)->replaceArgument(arg2,arg3);
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ASTNode_getParentSBMLObject(void * jarg1) {
  void * jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  SBase *result = 0 ;
  
  arg1 = (ASTNode *)jarg1; 
  result = (SBase *)((ASTNode const *)arg1)->getParentSBMLObject();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_ASTNode_reduceToBinary(void * jarg1) {
  ASTNode *arg1 = (ASTNode *) 0 ;
  
  arg1 = (ASTNode *)jarg1; 
  (arg1)->reduceToBinary();
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ASTNode_isWellFormedASTNode(void * jarg1) {
  unsigned int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  bool result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (bool)((ASTNode const *)arg1)->isWellFormedASTNode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ASTNode_hasCorrectNumberArguments(void * jarg1) {
  unsigned int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  bool result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (bool)((ASTNode const *)arg1)->hasCorrectNumberArguments();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ASTNode_isBvar(void * jarg1) {
  unsigned int jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  bool result;
  
  arg1 = (ASTNode *)jarg1; 
  result = (bool)((ASTNode const *)arg1)->isBvar();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_ASTNode_setBvar(void * jarg1) {
  ASTNode *arg1 = (ASTNode *) 0 ;
  
  arg1 = (ASTNode *)jarg1; 
  (arg1)->setBvar();
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ASTNode_getListOfNodes(void * jarg1) {
  void * jresult ;
  ASTNode *arg1 = (ASTNode *) 0 ;
  ListWrapper< ASTNode > *result = 0 ;
  
  arg1 = (ASTNode *)jarg1; 
  result = (ListWrapper< ASTNode > *)ASTNode_getListOfNodes(arg1);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_parseFormula(wchar_t* jarg1) {
  void * jresult ;
  char *arg1 = (char *) 0 ;
  ASTNode_t *result = 0 ;
  
  {
    if (jarg1)
    {
      arg1 = convertUnicodeToUTF8(jarg1);
      if (!arg1) return 0;
    }
  }
  result = (ASTNode_t *)SBML_parseFormula((char const *)arg1);
  jresult = (void *)result; 
  {
    delete[] arg1;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_formulaToString(void * jarg1) {
  wchar_t* jresult ;
  ASTNode_t *arg1 = (ASTNode_t *) 0 ;
  char *result = 0 ;
  
  arg1 = (ASTNode_t *)jarg1; 
  result = (char *)SBML_formulaToString((ASTNode const *)arg1);
  {
    jresult = convertUTF8ToUnicode( result );
    wchar_t* unistr = convertUTF8ToUnicode( result );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  free(result);
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLConstructorException() {
  void * jresult ;
  XMLConstructorException *result = 0 ;
  
  result = (XMLConstructorException *)new XMLConstructorException();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_XMLConstructorException(void * jarg1) {
  XMLConstructorException *arg1 = (XMLConstructorException *) 0 ;
  
  arg1 = (XMLConstructorException *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLAttributes__SWIG_0() {
  void * jresult ;
  XMLAttributes *result = 0 ;
  
  
  try {
    result = (XMLAttributes *)new XMLAttributes();
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_XMLAttributes(void * jarg1) {
  XMLAttributes *arg1 = (XMLAttributes *) 0 ;
  
  arg1 = (XMLAttributes *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLAttributes__SWIG_1(void * jarg1) {
  void * jresult ;
  XMLAttributes *arg1 = 0 ;
  XMLAttributes *result = 0 ;
  
  arg1 = (XMLAttributes *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLAttributes const & type is null", 0);
    return 0;
  } 
  
  try {
    result = (XMLAttributes *)new XMLAttributes((XMLAttributes const &)*arg1);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_XMLAttributes_clone(void * jarg1) {
  void * jresult ;
  XMLAttributes *arg1 = (XMLAttributes *) 0 ;
  XMLAttributes *result = 0 ;
  
  arg1 = (XMLAttributes *)jarg1; 
  result = (XMLAttributes *)((XMLAttributes const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLAttributes_add__SWIG_0(void * jarg1, wchar_t* jarg2, wchar_t* jarg3, wchar_t* jarg4, wchar_t* jarg5) {
  int jresult ;
  XMLAttributes *arg1 = (XMLAttributes *) 0 ;
  std::string *arg2 = 0 ;
  std::string *arg3 = 0 ;
  std::string *arg4 = 0 ;
  std::string *arg5 = 0 ;
  std::string arg_str2 ;
  std::string arg_str3 ;
  std::string arg_str4 ;
  std::string arg_str5 ;
  int result;
  
  arg1 = (XMLAttributes *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  {
    char*  mbstr = convertUnicodeToUTF8(jarg3);
    if (!mbstr) return 0;
    
    arg_str3.assign(mbstr);
    arg3 = &arg_str3;
    delete[] mbstr;
  }
  {
    char*  mbstr = convertUnicodeToUTF8(jarg4);
    if (!mbstr) return 0;
    
    arg_str4.assign(mbstr);
    arg4 = &arg_str4;
    delete[] mbstr;
  }
  {
    char*  mbstr = convertUnicodeToUTF8(jarg5);
    if (!mbstr) return 0;
    
    arg_str5.assign(mbstr);
    arg5 = &arg_str5;
    delete[] mbstr;
  }
  result = (int)(arg1)->add((std::string const &)*arg2,(std::string const &)*arg3,(std::string const &)*arg4,(std::string const &)*arg5);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLAttributes_add__SWIG_1(void * jarg1, wchar_t* jarg2, wchar_t* jarg3, wchar_t* jarg4) {
  int jresult ;
  XMLAttributes *arg1 = (XMLAttributes *) 0 ;
  std::string *arg2 = 0 ;
  std::string *arg3 = 0 ;
  std::string *arg4 = 0 ;
  std::string arg_str2 ;
  std::string arg_str3 ;
  std::string arg_str4 ;
  int result;
  
  arg1 = (XMLAttributes *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  {
    char*  mbstr = convertUnicodeToUTF8(jarg3);
    if (!mbstr) return 0;
    
    arg_str3.assign(mbstr);
    arg3 = &arg_str3;
    delete[] mbstr;
  }
  {
    char*  mbstr = convertUnicodeToUTF8(jarg4);
    if (!mbstr) return 0;
    
    arg_str4.assign(mbstr);
    arg4 = &arg_str4;
    delete[] mbstr;
  }
  result = (int)(arg1)->add((std::string const &)*arg2,(std::string const &)*arg3,(std::string const &)*arg4);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLAttributes_add__SWIG_2(void * jarg1, wchar_t* jarg2, wchar_t* jarg3) {
  int jresult ;
  XMLAttributes *arg1 = (XMLAttributes *) 0 ;
  std::string *arg2 = 0 ;
  std::string *arg3 = 0 ;
  std::string arg_str2 ;
  std::string arg_str3 ;
  int result;
  
  arg1 = (XMLAttributes *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  {
    char*  mbstr = convertUnicodeToUTF8(jarg3);
    if (!mbstr) return 0;
    
    arg_str3.assign(mbstr);
    arg3 = &arg_str3;
    delete[] mbstr;
  }
  result = (int)(arg1)->add((std::string const &)*arg2,(std::string const &)*arg3);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLAttributes_add__SWIG_3(void * jarg1, void * jarg2, wchar_t* jarg3) {
  int jresult ;
  XMLAttributes *arg1 = (XMLAttributes *) 0 ;
  XMLTriple *arg2 = 0 ;
  std::string *arg3 = 0 ;
  std::string arg_str3 ;
  int result;
  
  arg1 = (XMLAttributes *)jarg1; 
  arg2 = (XMLTriple *)jarg2;
  if (!arg2) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLTriple const & type is null", 0);
    return 0;
  } 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg3);
    if (!mbstr) return 0;
    
    arg_str3.assign(mbstr);
    arg3 = &arg_str3;
    delete[] mbstr;
  }
  result = (int)(arg1)->add((XMLTriple const &)*arg2,(std::string const &)*arg3);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLAttributes_removeResource(void * jarg1, int jarg2) {
  int jresult ;
  XMLAttributes *arg1 = (XMLAttributes *) 0 ;
  int arg2 ;
  int result;
  
  arg1 = (XMLAttributes *)jarg1; 
  arg2 = (int)jarg2; 
  result = (int)(arg1)->removeResource(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLAttributes_remove__SWIG_0(void * jarg1, int jarg2) {
  int jresult ;
  XMLAttributes *arg1 = (XMLAttributes *) 0 ;
  int arg2 ;
  int result;
  
  arg1 = (XMLAttributes *)jarg1; 
  arg2 = (int)jarg2; 
  result = (int)(arg1)->remove(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLAttributes_remove__SWIG_1(void * jarg1, wchar_t* jarg2, wchar_t* jarg3) {
  int jresult ;
  XMLAttributes *arg1 = (XMLAttributes *) 0 ;
  std::string *arg2 = 0 ;
  std::string *arg3 = 0 ;
  std::string arg_str2 ;
  std::string arg_str3 ;
  int result;
  
  arg1 = (XMLAttributes *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  {
    char*  mbstr = convertUnicodeToUTF8(jarg3);
    if (!mbstr) return 0;
    
    arg_str3.assign(mbstr);
    arg3 = &arg_str3;
    delete[] mbstr;
  }
  result = (int)(arg1)->remove((std::string const &)*arg2,(std::string const &)*arg3);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLAttributes_remove__SWIG_2(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  XMLAttributes *arg1 = (XMLAttributes *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (XMLAttributes *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->remove((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLAttributes_remove__SWIG_3(void * jarg1, void * jarg2) {
  int jresult ;
  XMLAttributes *arg1 = (XMLAttributes *) 0 ;
  XMLTriple *arg2 = 0 ;
  int result;
  
  arg1 = (XMLAttributes *)jarg1; 
  arg2 = (XMLTriple *)jarg2;
  if (!arg2) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLTriple const & type is null", 0);
    return 0;
  } 
  result = (int)(arg1)->remove((XMLTriple const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLAttributes_clear(void * jarg1) {
  int jresult ;
  XMLAttributes *arg1 = (XMLAttributes *) 0 ;
  int result;
  
  arg1 = (XMLAttributes *)jarg1; 
  result = (int)(arg1)->clear();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLAttributes_getIndex__SWIG_0(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  XMLAttributes *arg1 = (XMLAttributes *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (XMLAttributes *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)((XMLAttributes const *)arg1)->getIndex((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLAttributes_getIndex__SWIG_1(void * jarg1, wchar_t* jarg2, wchar_t* jarg3) {
  int jresult ;
  XMLAttributes *arg1 = (XMLAttributes *) 0 ;
  std::string *arg2 = 0 ;
  std::string *arg3 = 0 ;
  std::string arg_str2 ;
  std::string arg_str3 ;
  int result;
  
  arg1 = (XMLAttributes *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  {
    char*  mbstr = convertUnicodeToUTF8(jarg3);
    if (!mbstr) return 0;
    
    arg_str3.assign(mbstr);
    arg3 = &arg_str3;
    delete[] mbstr;
  }
  result = (int)((XMLAttributes const *)arg1)->getIndex((std::string const &)*arg2,(std::string const &)*arg3);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLAttributes_getIndex__SWIG_2(void * jarg1, void * jarg2) {
  int jresult ;
  XMLAttributes *arg1 = (XMLAttributes *) 0 ;
  XMLTriple *arg2 = 0 ;
  int result;
  
  arg1 = (XMLAttributes *)jarg1; 
  arg2 = (XMLTriple *)jarg2;
  if (!arg2) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLTriple const & type is null", 0);
    return 0;
  } 
  result = (int)((XMLAttributes const *)arg1)->getIndex((XMLTriple const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLAttributes_getLength(void * jarg1) {
  int jresult ;
  XMLAttributes *arg1 = (XMLAttributes *) 0 ;
  int result;
  
  arg1 = (XMLAttributes *)jarg1; 
  result = (int)((XMLAttributes const *)arg1)->getLength();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLAttributes_getName(void * jarg1, int jarg2) {
  wchar_t* jresult ;
  XMLAttributes *arg1 = (XMLAttributes *) 0 ;
  int arg2 ;
  std::string result;
  
  arg1 = (XMLAttributes *)jarg1; 
  arg2 = (int)jarg2; 
  result = ((XMLAttributes const *)arg1)->getName(arg2);
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLAttributes_getPrefix(void * jarg1, int jarg2) {
  wchar_t* jresult ;
  XMLAttributes *arg1 = (XMLAttributes *) 0 ;
  int arg2 ;
  std::string result;
  
  arg1 = (XMLAttributes *)jarg1; 
  arg2 = (int)jarg2; 
  result = ((XMLAttributes const *)arg1)->getPrefix(arg2);
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLAttributes_getPrefixedName(void * jarg1, int jarg2) {
  wchar_t* jresult ;
  XMLAttributes *arg1 = (XMLAttributes *) 0 ;
  int arg2 ;
  std::string result;
  
  arg1 = (XMLAttributes *)jarg1; 
  arg2 = (int)jarg2; 
  result = ((XMLAttributes const *)arg1)->getPrefixedName(arg2);
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLAttributes_getURI(void * jarg1, int jarg2) {
  wchar_t* jresult ;
  XMLAttributes *arg1 = (XMLAttributes *) 0 ;
  int arg2 ;
  std::string result;
  
  arg1 = (XMLAttributes *)jarg1; 
  arg2 = (int)jarg2; 
  result = ((XMLAttributes const *)arg1)->getURI(arg2);
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLAttributes_getValue__SWIG_0(void * jarg1, int jarg2) {
  wchar_t* jresult ;
  XMLAttributes *arg1 = (XMLAttributes *) 0 ;
  int arg2 ;
  std::string result;
  
  arg1 = (XMLAttributes *)jarg1; 
  arg2 = (int)jarg2; 
  result = ((XMLAttributes const *)arg1)->getValue(arg2);
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLAttributes_getValue__SWIG_1(void * jarg1, wchar_t* jarg2) {
  wchar_t* jresult ;
  XMLAttributes *arg1 = (XMLAttributes *) 0 ;
  std::string arg2 ;
  std::string result;
  
  arg1 = (XMLAttributes *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    (&arg2)->assign(mbstr);
    delete[] mbstr;
  }
  result = ((XMLAttributes const *)arg1)->getValue(arg2);
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLAttributes_getValue__SWIG_2(void * jarg1, wchar_t* jarg2, wchar_t* jarg3) {
  wchar_t* jresult ;
  XMLAttributes *arg1 = (XMLAttributes *) 0 ;
  std::string arg2 ;
  std::string arg3 ;
  std::string result;
  
  arg1 = (XMLAttributes *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    (&arg2)->assign(mbstr);
    delete[] mbstr;
  }
  {
    char*  mbstr = convertUnicodeToUTF8(jarg3);
    (&arg3)->assign(mbstr);
    delete[] mbstr;
  }
  result = ((XMLAttributes const *)arg1)->getValue(arg2,arg3);
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLAttributes_getValue__SWIG_3(void * jarg1, void * jarg2) {
  wchar_t* jresult ;
  XMLAttributes *arg1 = (XMLAttributes *) 0 ;
  XMLTriple *arg2 = 0 ;
  std::string result;
  
  arg1 = (XMLAttributes *)jarg1; 
  arg2 = (XMLTriple *)jarg2;
  if (!arg2) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLTriple const & type is null", 0);
    return 0;
  } 
  result = ((XMLAttributes const *)arg1)->getValue((XMLTriple const &)*arg2);
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLAttributes_hasAttribute__SWIG_0(void * jarg1, int jarg2) {
  unsigned int jresult ;
  XMLAttributes *arg1 = (XMLAttributes *) 0 ;
  int arg2 ;
  bool result;
  
  arg1 = (XMLAttributes *)jarg1; 
  arg2 = (int)jarg2; 
  result = (bool)((XMLAttributes const *)arg1)->hasAttribute(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLAttributes_hasAttribute__SWIG_1(void * jarg1, wchar_t* jarg2, wchar_t* jarg3) {
  unsigned int jresult ;
  XMLAttributes *arg1 = (XMLAttributes *) 0 ;
  std::string arg2 ;
  std::string arg3 ;
  bool result;
  
  arg1 = (XMLAttributes *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    (&arg2)->assign(mbstr);
    delete[] mbstr;
  }
  {
    char*  mbstr = convertUnicodeToUTF8(jarg3);
    (&arg3)->assign(mbstr);
    delete[] mbstr;
  }
  result = (bool)((XMLAttributes const *)arg1)->hasAttribute(arg2,arg3);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLAttributes_hasAttribute__SWIG_2(void * jarg1, wchar_t* jarg2) {
  unsigned int jresult ;
  XMLAttributes *arg1 = (XMLAttributes *) 0 ;
  std::string arg2 ;
  bool result;
  
  arg1 = (XMLAttributes *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    (&arg2)->assign(mbstr);
    delete[] mbstr;
  }
  result = (bool)((XMLAttributes const *)arg1)->hasAttribute(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLAttributes_hasAttribute__SWIG_3(void * jarg1, void * jarg2) {
  unsigned int jresult ;
  XMLAttributes *arg1 = (XMLAttributes *) 0 ;
  XMLTriple *arg2 = 0 ;
  bool result;
  
  arg1 = (XMLAttributes *)jarg1; 
  arg2 = (XMLTriple *)jarg2;
  if (!arg2) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLTriple const & type is null", 0);
    return 0;
  } 
  result = (bool)((XMLAttributes const *)arg1)->hasAttribute((XMLTriple const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLAttributes_isEmpty(void * jarg1) {
  unsigned int jresult ;
  XMLAttributes *arg1 = (XMLAttributes *) 0 ;
  bool result;
  
  arg1 = (XMLAttributes *)jarg1; 
  result = (bool)((XMLAttributes const *)arg1)->isEmpty();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLNamespaces__SWIG_0() {
  void * jresult ;
  XMLNamespaces *result = 0 ;
  
  
  try {
    result = (XMLNamespaces *)new XMLNamespaces();
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_XMLNamespaces(void * jarg1) {
  XMLNamespaces *arg1 = (XMLNamespaces *) 0 ;
  
  arg1 = (XMLNamespaces *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLNamespaces__SWIG_1(void * jarg1) {
  void * jresult ;
  XMLNamespaces *arg1 = 0 ;
  XMLNamespaces *result = 0 ;
  
  arg1 = (XMLNamespaces *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLNamespaces const & type is null", 0);
    return 0;
  } 
  
  try {
    result = (XMLNamespaces *)new XMLNamespaces((XMLNamespaces const &)*arg1);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_XMLNamespaces_clone(void * jarg1) {
  void * jresult ;
  XMLNamespaces *arg1 = (XMLNamespaces *) 0 ;
  XMLNamespaces *result = 0 ;
  
  arg1 = (XMLNamespaces *)jarg1; 
  result = (XMLNamespaces *)((XMLNamespaces const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLNamespaces_add__SWIG_0(void * jarg1, wchar_t* jarg2, wchar_t* jarg3) {
  int jresult ;
  XMLNamespaces *arg1 = (XMLNamespaces *) 0 ;
  std::string *arg2 = 0 ;
  std::string *arg3 = 0 ;
  std::string arg_str2 ;
  std::string arg_str3 ;
  int result;
  
  arg1 = (XMLNamespaces *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  {
    char*  mbstr = convertUnicodeToUTF8(jarg3);
    if (!mbstr) return 0;
    
    arg_str3.assign(mbstr);
    arg3 = &arg_str3;
    delete[] mbstr;
  }
  result = (int)(arg1)->add((std::string const &)*arg2,(std::string const &)*arg3);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLNamespaces_add__SWIG_1(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  XMLNamespaces *arg1 = (XMLNamespaces *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (XMLNamespaces *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->add((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLNamespaces_remove__SWIG_0(void * jarg1, int jarg2) {
  int jresult ;
  XMLNamespaces *arg1 = (XMLNamespaces *) 0 ;
  int arg2 ;
  int result;
  
  arg1 = (XMLNamespaces *)jarg1; 
  arg2 = (int)jarg2; 
  result = (int)(arg1)->remove(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLNamespaces_remove__SWIG_1(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  XMLNamespaces *arg1 = (XMLNamespaces *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (XMLNamespaces *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->remove((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLNamespaces_clear(void * jarg1) {
  int jresult ;
  XMLNamespaces *arg1 = (XMLNamespaces *) 0 ;
  int result;
  
  arg1 = (XMLNamespaces *)jarg1; 
  result = (int)(arg1)->clear();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLNamespaces_getIndex(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  XMLNamespaces *arg1 = (XMLNamespaces *) 0 ;
  std::string arg2 ;
  int result;
  
  arg1 = (XMLNamespaces *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    (&arg2)->assign(mbstr);
    delete[] mbstr;
  }
  result = (int)((XMLNamespaces const *)arg1)->getIndex(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLNamespaces_getIndexByPrefix(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  XMLNamespaces *arg1 = (XMLNamespaces *) 0 ;
  std::string arg2 ;
  int result;
  
  arg1 = (XMLNamespaces *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    (&arg2)->assign(mbstr);
    delete[] mbstr;
  }
  result = (int)((XMLNamespaces const *)arg1)->getIndexByPrefix(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLNamespaces_getLength(void * jarg1) {
  int jresult ;
  XMLNamespaces *arg1 = (XMLNamespaces *) 0 ;
  int result;
  
  arg1 = (XMLNamespaces *)jarg1; 
  result = (int)((XMLNamespaces const *)arg1)->getLength();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLNamespaces_getPrefix__SWIG_0(void * jarg1, int jarg2) {
  wchar_t* jresult ;
  XMLNamespaces *arg1 = (XMLNamespaces *) 0 ;
  int arg2 ;
  std::string result;
  
  arg1 = (XMLNamespaces *)jarg1; 
  arg2 = (int)jarg2; 
  result = ((XMLNamespaces const *)arg1)->getPrefix(arg2);
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLNamespaces_getPrefix__SWIG_1(void * jarg1, wchar_t* jarg2) {
  wchar_t* jresult ;
  XMLNamespaces *arg1 = (XMLNamespaces *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  std::string result;
  
  arg1 = (XMLNamespaces *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = ((XMLNamespaces const *)arg1)->getPrefix((std::string const &)*arg2);
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLNamespaces_getURI__SWIG_0(void * jarg1, int jarg2) {
  wchar_t* jresult ;
  XMLNamespaces *arg1 = (XMLNamespaces *) 0 ;
  int arg2 ;
  std::string result;
  
  arg1 = (XMLNamespaces *)jarg1; 
  arg2 = (int)jarg2; 
  result = ((XMLNamespaces const *)arg1)->getURI(arg2);
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLNamespaces_getURI__SWIG_1(void * jarg1, wchar_t* jarg2) {
  wchar_t* jresult ;
  XMLNamespaces *arg1 = (XMLNamespaces *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  std::string result;
  
  arg1 = (XMLNamespaces *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = ((XMLNamespaces const *)arg1)->getURI((std::string const &)*arg2);
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLNamespaces_getURI__SWIG_2(void * jarg1) {
  wchar_t* jresult ;
  XMLNamespaces *arg1 = (XMLNamespaces *) 0 ;
  std::string result;
  
  arg1 = (XMLNamespaces *)jarg1; 
  result = ((XMLNamespaces const *)arg1)->getURI();
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLNamespaces_isEmpty(void * jarg1) {
  unsigned int jresult ;
  XMLNamespaces *arg1 = (XMLNamespaces *) 0 ;
  bool result;
  
  arg1 = (XMLNamespaces *)jarg1; 
  result = (bool)((XMLNamespaces const *)arg1)->isEmpty();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLNamespaces_hasURI(void * jarg1, wchar_t* jarg2) {
  unsigned int jresult ;
  XMLNamespaces *arg1 = (XMLNamespaces *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  bool result;
  
  arg1 = (XMLNamespaces *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (bool)((XMLNamespaces const *)arg1)->hasURI((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLNamespaces_hasPrefix(void * jarg1, wchar_t* jarg2) {
  unsigned int jresult ;
  XMLNamespaces *arg1 = (XMLNamespaces *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  bool result;
  
  arg1 = (XMLNamespaces *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (bool)((XMLNamespaces const *)arg1)->hasPrefix((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLNamespaces_hasNS(void * jarg1, wchar_t* jarg2, wchar_t* jarg3) {
  unsigned int jresult ;
  XMLNamespaces *arg1 = (XMLNamespaces *) 0 ;
  std::string *arg2 = 0 ;
  std::string *arg3 = 0 ;
  std::string arg_str2 ;
  std::string arg_str3 ;
  bool result;
  
  arg1 = (XMLNamespaces *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  {
    char*  mbstr = convertUnicodeToUTF8(jarg3);
    if (!mbstr) return 0;
    
    arg_str3.assign(mbstr);
    arg3 = &arg_str3;
    delete[] mbstr;
  }
  result = (bool)((XMLNamespaces const *)arg1)->hasNS((std::string const &)*arg2,(std::string const &)*arg3);
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLToken__SWIG_0() {
  void * jresult ;
  XMLToken *result = 0 ;
  
  
  try {
    result = (XMLToken *)new XMLToken();
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLToken__SWIG_1(void * jarg1, void * jarg2, void * jarg3, long long jarg4, long long jarg5) {
  void * jresult ;
  XMLTriple *arg1 = 0 ;
  XMLAttributes *arg2 = 0 ;
  XMLNamespaces *arg3 = 0 ;
  unsigned int arg4 ;
  unsigned int arg5 ;
  XMLToken *result = 0 ;
  
  arg1 = (XMLTriple *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLTriple const & type is null", 0);
    return 0;
  } 
  arg2 = (XMLAttributes *)jarg2;
  if (!arg2) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLAttributes const & type is null", 0);
    return 0;
  } 
  arg3 = (XMLNamespaces *)jarg3;
  if (!arg3) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLNamespaces const & type is null", 0);
    return 0;
  } 
  {
    arg4 = (unsigned int)jarg4;  
  }
  {
    arg5 = (unsigned int)jarg5;  
  }
  
  try {
    result = (XMLToken *)new XMLToken((XMLTriple const &)*arg1,(XMLAttributes const &)*arg2,(XMLNamespaces const &)*arg3,arg4,arg5);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLToken__SWIG_2(void * jarg1, void * jarg2, void * jarg3, long long jarg4) {
  void * jresult ;
  XMLTriple *arg1 = 0 ;
  XMLAttributes *arg2 = 0 ;
  XMLNamespaces *arg3 = 0 ;
  unsigned int arg4 ;
  XMLToken *result = 0 ;
  
  arg1 = (XMLTriple *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLTriple const & type is null", 0);
    return 0;
  } 
  arg2 = (XMLAttributes *)jarg2;
  if (!arg2) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLAttributes const & type is null", 0);
    return 0;
  } 
  arg3 = (XMLNamespaces *)jarg3;
  if (!arg3) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLNamespaces const & type is null", 0);
    return 0;
  } 
  {
    arg4 = (unsigned int)jarg4;  
  }
  
  try {
    result = (XMLToken *)new XMLToken((XMLTriple const &)*arg1,(XMLAttributes const &)*arg2,(XMLNamespaces const &)*arg3,arg4);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLToken__SWIG_3(void * jarg1, void * jarg2, void * jarg3) {
  void * jresult ;
  XMLTriple *arg1 = 0 ;
  XMLAttributes *arg2 = 0 ;
  XMLNamespaces *arg3 = 0 ;
  XMLToken *result = 0 ;
  
  arg1 = (XMLTriple *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLTriple const & type is null", 0);
    return 0;
  } 
  arg2 = (XMLAttributes *)jarg2;
  if (!arg2) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLAttributes const & type is null", 0);
    return 0;
  } 
  arg3 = (XMLNamespaces *)jarg3;
  if (!arg3) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLNamespaces const & type is null", 0);
    return 0;
  } 
  
  try {
    result = (XMLToken *)new XMLToken((XMLTriple const &)*arg1,(XMLAttributes const &)*arg2,(XMLNamespaces const &)*arg3);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLToken__SWIG_4(void * jarg1, void * jarg2, long long jarg3, long long jarg4) {
  void * jresult ;
  XMLTriple *arg1 = 0 ;
  XMLAttributes *arg2 = 0 ;
  unsigned int arg3 ;
  unsigned int arg4 ;
  XMLToken *result = 0 ;
  
  arg1 = (XMLTriple *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLTriple const & type is null", 0);
    return 0;
  } 
  arg2 = (XMLAttributes *)jarg2;
  if (!arg2) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLAttributes const & type is null", 0);
    return 0;
  } 
  {
    arg3 = (unsigned int)jarg3;  
  }
  {
    arg4 = (unsigned int)jarg4;  
  }
  
  try {
    result = (XMLToken *)new XMLToken((XMLTriple const &)*arg1,(XMLAttributes const &)*arg2,arg3,arg4);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLToken__SWIG_5(void * jarg1, void * jarg2, long long jarg3) {
  void * jresult ;
  XMLTriple *arg1 = 0 ;
  XMLAttributes *arg2 = 0 ;
  unsigned int arg3 ;
  XMLToken *result = 0 ;
  
  arg1 = (XMLTriple *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLTriple const & type is null", 0);
    return 0;
  } 
  arg2 = (XMLAttributes *)jarg2;
  if (!arg2) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLAttributes const & type is null", 0);
    return 0;
  } 
  {
    arg3 = (unsigned int)jarg3;  
  }
  
  try {
    result = (XMLToken *)new XMLToken((XMLTriple const &)*arg1,(XMLAttributes const &)*arg2,arg3);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLToken__SWIG_6(void * jarg1, void * jarg2) {
  void * jresult ;
  XMLTriple *arg1 = 0 ;
  XMLAttributes *arg2 = 0 ;
  XMLToken *result = 0 ;
  
  arg1 = (XMLTriple *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLTriple const & type is null", 0);
    return 0;
  } 
  arg2 = (XMLAttributes *)jarg2;
  if (!arg2) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLAttributes const & type is null", 0);
    return 0;
  } 
  
  try {
    result = (XMLToken *)new XMLToken((XMLTriple const &)*arg1,(XMLAttributes const &)*arg2);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLToken__SWIG_7(void * jarg1, long long jarg2, long long jarg3) {
  void * jresult ;
  XMLTriple *arg1 = 0 ;
  unsigned int arg2 ;
  unsigned int arg3 ;
  XMLToken *result = 0 ;
  
  arg1 = (XMLTriple *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLTriple const & type is null", 0);
    return 0;
  } 
  {
    arg2 = (unsigned int)jarg2;  
  }
  {
    arg3 = (unsigned int)jarg3;  
  }
  
  try {
    result = (XMLToken *)new XMLToken((XMLTriple const &)*arg1,arg2,arg3);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLToken__SWIG_8(void * jarg1, long long jarg2) {
  void * jresult ;
  XMLTriple *arg1 = 0 ;
  unsigned int arg2 ;
  XMLToken *result = 0 ;
  
  arg1 = (XMLTriple *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLTriple const & type is null", 0);
    return 0;
  } 
  {
    arg2 = (unsigned int)jarg2;  
  }
  
  try {
    result = (XMLToken *)new XMLToken((XMLTriple const &)*arg1,arg2);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLToken__SWIG_9(void * jarg1) {
  void * jresult ;
  XMLTriple *arg1 = 0 ;
  XMLToken *result = 0 ;
  
  arg1 = (XMLTriple *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLTriple const & type is null", 0);
    return 0;
  } 
  
  try {
    result = (XMLToken *)new XMLToken((XMLTriple const &)*arg1);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLToken__SWIG_10(wchar_t* jarg1, long long jarg2, long long jarg3) {
  void * jresult ;
  std::string *arg1 = 0 ;
  unsigned int arg2 ;
  unsigned int arg3 ;
  std::string arg_str1 ;
  XMLToken *result = 0 ;
  
  {
    char*  mbstr = convertUnicodeToUTF8(jarg1);
    if (!mbstr) return 0;
    
    arg_str1.assign(mbstr);
    arg1 = &arg_str1;
    delete[] mbstr;
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  {
    arg3 = (unsigned int)jarg3;  
  }
  
  try {
    result = (XMLToken *)new XMLToken((std::string const &)*arg1,arg2,arg3);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLToken__SWIG_11(wchar_t* jarg1, long long jarg2) {
  void * jresult ;
  std::string *arg1 = 0 ;
  unsigned int arg2 ;
  std::string arg_str1 ;
  XMLToken *result = 0 ;
  
  {
    char*  mbstr = convertUnicodeToUTF8(jarg1);
    if (!mbstr) return 0;
    
    arg_str1.assign(mbstr);
    arg1 = &arg_str1;
    delete[] mbstr;
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  
  try {
    result = (XMLToken *)new XMLToken((std::string const &)*arg1,arg2);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLToken__SWIG_12(wchar_t* jarg1) {
  void * jresult ;
  std::string *arg1 = 0 ;
  std::string arg_str1 ;
  XMLToken *result = 0 ;
  
  {
    char*  mbstr = convertUnicodeToUTF8(jarg1);
    if (!mbstr) return 0;
    
    arg_str1.assign(mbstr);
    arg1 = &arg_str1;
    delete[] mbstr;
  }
  
  try {
    result = (XMLToken *)new XMLToken((std::string const &)*arg1);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_XMLToken(void * jarg1) {
  XMLToken *arg1 = (XMLToken *) 0 ;
  
  arg1 = (XMLToken *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLToken__SWIG_13(void * jarg1) {
  void * jresult ;
  XMLToken *arg1 = 0 ;
  XMLToken *result = 0 ;
  
  arg1 = (XMLToken *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLToken const & type is null", 0);
    return 0;
  } 
  
  try {
    result = (XMLToken *)new XMLToken((XMLToken const &)*arg1);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_XMLToken_clone(void * jarg1) {
  void * jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  XMLToken *result = 0 ;
  
  arg1 = (XMLToken *)jarg1; 
  result = (XMLToken *)((XMLToken const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_XMLToken_getAttributes(void * jarg1) {
  void * jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  XMLAttributes *result = 0 ;
  
  arg1 = (XMLToken *)jarg1; 
  result = (XMLAttributes *) &((XMLToken const *)arg1)->getAttributes();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLToken_setAttributes(void * jarg1, void * jarg2) {
  int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  XMLAttributes *arg2 = 0 ;
  int result;
  
  arg1 = (XMLToken *)jarg1; 
  arg2 = (XMLAttributes *)jarg2;
  if (!arg2) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLAttributes const & type is null", 0);
    return 0;
  } 
  result = (int)(arg1)->setAttributes((XMLAttributes const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLToken_addAttr__SWIG_0(void * jarg1, wchar_t* jarg2, wchar_t* jarg3, wchar_t* jarg4, wchar_t* jarg5) {
  int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  std::string *arg2 = 0 ;
  std::string *arg3 = 0 ;
  std::string *arg4 = 0 ;
  std::string *arg5 = 0 ;
  std::string arg_str2 ;
  std::string arg_str3 ;
  std::string arg_str4 ;
  std::string arg_str5 ;
  int result;
  
  arg1 = (XMLToken *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  {
    char*  mbstr = convertUnicodeToUTF8(jarg3);
    if (!mbstr) return 0;
    
    arg_str3.assign(mbstr);
    arg3 = &arg_str3;
    delete[] mbstr;
  }
  {
    char*  mbstr = convertUnicodeToUTF8(jarg4);
    if (!mbstr) return 0;
    
    arg_str4.assign(mbstr);
    arg4 = &arg_str4;
    delete[] mbstr;
  }
  {
    char*  mbstr = convertUnicodeToUTF8(jarg5);
    if (!mbstr) return 0;
    
    arg_str5.assign(mbstr);
    arg5 = &arg_str5;
    delete[] mbstr;
  }
  result = (int)(arg1)->addAttr((std::string const &)*arg2,(std::string const &)*arg3,(std::string const &)*arg4,(std::string const &)*arg5);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLToken_addAttr__SWIG_1(void * jarg1, wchar_t* jarg2, wchar_t* jarg3, wchar_t* jarg4) {
  int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  std::string *arg2 = 0 ;
  std::string *arg3 = 0 ;
  std::string *arg4 = 0 ;
  std::string arg_str2 ;
  std::string arg_str3 ;
  std::string arg_str4 ;
  int result;
  
  arg1 = (XMLToken *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  {
    char*  mbstr = convertUnicodeToUTF8(jarg3);
    if (!mbstr) return 0;
    
    arg_str3.assign(mbstr);
    arg3 = &arg_str3;
    delete[] mbstr;
  }
  {
    char*  mbstr = convertUnicodeToUTF8(jarg4);
    if (!mbstr) return 0;
    
    arg_str4.assign(mbstr);
    arg4 = &arg_str4;
    delete[] mbstr;
  }
  result = (int)(arg1)->addAttr((std::string const &)*arg2,(std::string const &)*arg3,(std::string const &)*arg4);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLToken_addAttr__SWIG_2(void * jarg1, wchar_t* jarg2, wchar_t* jarg3) {
  int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  std::string *arg2 = 0 ;
  std::string *arg3 = 0 ;
  std::string arg_str2 ;
  std::string arg_str3 ;
  int result;
  
  arg1 = (XMLToken *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  {
    char*  mbstr = convertUnicodeToUTF8(jarg3);
    if (!mbstr) return 0;
    
    arg_str3.assign(mbstr);
    arg3 = &arg_str3;
    delete[] mbstr;
  }
  result = (int)(arg1)->addAttr((std::string const &)*arg2,(std::string const &)*arg3);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLToken_addAttr__SWIG_3(void * jarg1, void * jarg2, wchar_t* jarg3) {
  int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  XMLTriple *arg2 = 0 ;
  std::string *arg3 = 0 ;
  std::string arg_str3 ;
  int result;
  
  arg1 = (XMLToken *)jarg1; 
  arg2 = (XMLTriple *)jarg2;
  if (!arg2) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLTriple const & type is null", 0);
    return 0;
  } 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg3);
    if (!mbstr) return 0;
    
    arg_str3.assign(mbstr);
    arg3 = &arg_str3;
    delete[] mbstr;
  }
  result = (int)(arg1)->addAttr((XMLTriple const &)*arg2,(std::string const &)*arg3);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLToken_removeAttr__SWIG_0(void * jarg1, int jarg2) {
  int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  int arg2 ;
  int result;
  
  arg1 = (XMLToken *)jarg1; 
  arg2 = (int)jarg2; 
  result = (int)(arg1)->removeAttr(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLToken_removeAttr__SWIG_1(void * jarg1, wchar_t* jarg2, wchar_t* jarg3) {
  int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  std::string *arg2 = 0 ;
  std::string *arg3 = 0 ;
  std::string arg_str2 ;
  std::string arg_str3 ;
  int result;
  
  arg1 = (XMLToken *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  {
    char*  mbstr = convertUnicodeToUTF8(jarg3);
    if (!mbstr) return 0;
    
    arg_str3.assign(mbstr);
    arg3 = &arg_str3;
    delete[] mbstr;
  }
  result = (int)(arg1)->removeAttr((std::string const &)*arg2,(std::string const &)*arg3);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLToken_removeAttr__SWIG_2(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (XMLToken *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->removeAttr((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLToken_removeAttr__SWIG_3(void * jarg1, void * jarg2) {
  int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  XMLTriple *arg2 = 0 ;
  int result;
  
  arg1 = (XMLToken *)jarg1; 
  arg2 = (XMLTriple *)jarg2;
  if (!arg2) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLTriple const & type is null", 0);
    return 0;
  } 
  result = (int)(arg1)->removeAttr((XMLTriple const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLToken_clearAttributes(void * jarg1) {
  int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  int result;
  
  arg1 = (XMLToken *)jarg1; 
  result = (int)(arg1)->clearAttributes();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLToken_getAttrIndex__SWIG_0(void * jarg1, wchar_t* jarg2, wchar_t* jarg3) {
  int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  std::string *arg2 = 0 ;
  std::string *arg3 = 0 ;
  std::string arg_str2 ;
  std::string arg_str3 ;
  int result;
  
  arg1 = (XMLToken *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  {
    char*  mbstr = convertUnicodeToUTF8(jarg3);
    if (!mbstr) return 0;
    
    arg_str3.assign(mbstr);
    arg3 = &arg_str3;
    delete[] mbstr;
  }
  result = (int)((XMLToken const *)arg1)->getAttrIndex((std::string const &)*arg2,(std::string const &)*arg3);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLToken_getAttrIndex__SWIG_1(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (XMLToken *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)((XMLToken const *)arg1)->getAttrIndex((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLToken_getAttrIndex__SWIG_2(void * jarg1, void * jarg2) {
  int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  XMLTriple *arg2 = 0 ;
  int result;
  
  arg1 = (XMLToken *)jarg1; 
  arg2 = (XMLTriple *)jarg2;
  if (!arg2) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLTriple const & type is null", 0);
    return 0;
  } 
  result = (int)((XMLToken const *)arg1)->getAttrIndex((XMLTriple const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLToken_getAttributesLength(void * jarg1) {
  int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  int result;
  
  arg1 = (XMLToken *)jarg1; 
  result = (int)((XMLToken const *)arg1)->getAttributesLength();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLToken_getAttrName(void * jarg1, int jarg2) {
  wchar_t* jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  int arg2 ;
  std::string result;
  
  arg1 = (XMLToken *)jarg1; 
  arg2 = (int)jarg2; 
  result = ((XMLToken const *)arg1)->getAttrName(arg2);
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLToken_getAttrPrefix(void * jarg1, int jarg2) {
  wchar_t* jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  int arg2 ;
  std::string result;
  
  arg1 = (XMLToken *)jarg1; 
  arg2 = (int)jarg2; 
  result = ((XMLToken const *)arg1)->getAttrPrefix(arg2);
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLToken_getAttrPrefixedName(void * jarg1, int jarg2) {
  wchar_t* jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  int arg2 ;
  std::string result;
  
  arg1 = (XMLToken *)jarg1; 
  arg2 = (int)jarg2; 
  result = ((XMLToken const *)arg1)->getAttrPrefixedName(arg2);
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLToken_getAttrURI(void * jarg1, int jarg2) {
  wchar_t* jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  int arg2 ;
  std::string result;
  
  arg1 = (XMLToken *)jarg1; 
  arg2 = (int)jarg2; 
  result = ((XMLToken const *)arg1)->getAttrURI(arg2);
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLToken_getAttrValue__SWIG_0(void * jarg1, int jarg2) {
  wchar_t* jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  int arg2 ;
  std::string result;
  
  arg1 = (XMLToken *)jarg1; 
  arg2 = (int)jarg2; 
  result = ((XMLToken const *)arg1)->getAttrValue(arg2);
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLToken_getAttrValue__SWIG_1(void * jarg1, wchar_t* jarg2, wchar_t* jarg3) {
  wchar_t* jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  std::string arg2 ;
  std::string arg3 ;
  std::string result;
  
  arg1 = (XMLToken *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    (&arg2)->assign(mbstr);
    delete[] mbstr;
  }
  {
    char*  mbstr = convertUnicodeToUTF8(jarg3);
    (&arg3)->assign(mbstr);
    delete[] mbstr;
  }
  result = ((XMLToken const *)arg1)->getAttrValue(arg2,arg3);
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLToken_getAttrValue__SWIG_2(void * jarg1, wchar_t* jarg2) {
  wchar_t* jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  std::string arg2 ;
  std::string result;
  
  arg1 = (XMLToken *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    (&arg2)->assign(mbstr);
    delete[] mbstr;
  }
  result = ((XMLToken const *)arg1)->getAttrValue(arg2);
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLToken_getAttrValue__SWIG_3(void * jarg1, void * jarg2) {
  wchar_t* jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  XMLTriple *arg2 = 0 ;
  std::string result;
  
  arg1 = (XMLToken *)jarg1; 
  arg2 = (XMLTriple *)jarg2;
  if (!arg2) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLTriple const & type is null", 0);
    return 0;
  } 
  result = ((XMLToken const *)arg1)->getAttrValue((XMLTriple const &)*arg2);
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLToken_hasAttr__SWIG_0(void * jarg1, int jarg2) {
  unsigned int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  int arg2 ;
  bool result;
  
  arg1 = (XMLToken *)jarg1; 
  arg2 = (int)jarg2; 
  result = (bool)((XMLToken const *)arg1)->hasAttr(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLToken_hasAttr__SWIG_1(void * jarg1, wchar_t* jarg2, wchar_t* jarg3) {
  unsigned int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  std::string arg2 ;
  std::string arg3 ;
  bool result;
  
  arg1 = (XMLToken *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    (&arg2)->assign(mbstr);
    delete[] mbstr;
  }
  {
    char*  mbstr = convertUnicodeToUTF8(jarg3);
    (&arg3)->assign(mbstr);
    delete[] mbstr;
  }
  result = (bool)((XMLToken const *)arg1)->hasAttr(arg2,arg3);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLToken_hasAttr__SWIG_2(void * jarg1, wchar_t* jarg2) {
  unsigned int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  std::string arg2 ;
  bool result;
  
  arg1 = (XMLToken *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    (&arg2)->assign(mbstr);
    delete[] mbstr;
  }
  result = (bool)((XMLToken const *)arg1)->hasAttr(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLToken_hasAttr__SWIG_3(void * jarg1, void * jarg2) {
  unsigned int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  XMLTriple *arg2 = 0 ;
  bool result;
  
  arg1 = (XMLToken *)jarg1; 
  arg2 = (XMLTriple *)jarg2;
  if (!arg2) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLTriple const & type is null", 0);
    return 0;
  } 
  result = (bool)((XMLToken const *)arg1)->hasAttr((XMLTriple const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLToken_isAttributesEmpty(void * jarg1) {
  unsigned int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  bool result;
  
  arg1 = (XMLToken *)jarg1; 
  result = (bool)((XMLToken const *)arg1)->isAttributesEmpty();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_XMLToken_getNamespaces(void * jarg1) {
  void * jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  XMLNamespaces *result = 0 ;
  
  arg1 = (XMLToken *)jarg1; 
  result = (XMLNamespaces *) &((XMLToken const *)arg1)->getNamespaces();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLToken_setNamespaces(void * jarg1, void * jarg2) {
  int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  XMLNamespaces *arg2 = 0 ;
  int result;
  
  arg1 = (XMLToken *)jarg1; 
  arg2 = (XMLNamespaces *)jarg2;
  if (!arg2) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLNamespaces const & type is null", 0);
    return 0;
  } 
  result = (int)(arg1)->setNamespaces((XMLNamespaces const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLToken_addNamespace__SWIG_0(void * jarg1, wchar_t* jarg2, wchar_t* jarg3) {
  int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  std::string *arg2 = 0 ;
  std::string *arg3 = 0 ;
  std::string arg_str2 ;
  std::string arg_str3 ;
  int result;
  
  arg1 = (XMLToken *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  {
    char*  mbstr = convertUnicodeToUTF8(jarg3);
    if (!mbstr) return 0;
    
    arg_str3.assign(mbstr);
    arg3 = &arg_str3;
    delete[] mbstr;
  }
  result = (int)(arg1)->addNamespace((std::string const &)*arg2,(std::string const &)*arg3);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLToken_addNamespace__SWIG_1(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (XMLToken *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->addNamespace((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLToken_removeNamespace__SWIG_0(void * jarg1, int jarg2) {
  int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  int arg2 ;
  int result;
  
  arg1 = (XMLToken *)jarg1; 
  arg2 = (int)jarg2; 
  result = (int)(arg1)->removeNamespace(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLToken_removeNamespace__SWIG_1(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (XMLToken *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->removeNamespace((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLToken_clearNamespaces(void * jarg1) {
  int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  int result;
  
  arg1 = (XMLToken *)jarg1; 
  result = (int)(arg1)->clearNamespaces();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLToken_getNamespaceIndex(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (XMLToken *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)((XMLToken const *)arg1)->getNamespaceIndex((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLToken_getNamespaceIndexByPrefix(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (XMLToken *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)((XMLToken const *)arg1)->getNamespaceIndexByPrefix((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLToken_getNamespacesLength(void * jarg1) {
  int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  int result;
  
  arg1 = (XMLToken *)jarg1; 
  result = (int)((XMLToken const *)arg1)->getNamespacesLength();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLToken_getNamespacePrefix__SWIG_0(void * jarg1, int jarg2) {
  wchar_t* jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  int arg2 ;
  std::string result;
  
  arg1 = (XMLToken *)jarg1; 
  arg2 = (int)jarg2; 
  result = ((XMLToken const *)arg1)->getNamespacePrefix(arg2);
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLToken_getNamespacePrefix__SWIG_1(void * jarg1, wchar_t* jarg2) {
  wchar_t* jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  std::string result;
  
  arg1 = (XMLToken *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = ((XMLToken const *)arg1)->getNamespacePrefix((std::string const &)*arg2);
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLToken_getNamespaceURI__SWIG_0(void * jarg1, int jarg2) {
  wchar_t* jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  int arg2 ;
  std::string result;
  
  arg1 = (XMLToken *)jarg1; 
  arg2 = (int)jarg2; 
  result = ((XMLToken const *)arg1)->getNamespaceURI(arg2);
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLToken_getNamespaceURI__SWIG_1(void * jarg1, wchar_t* jarg2) {
  wchar_t* jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  std::string result;
  
  arg1 = (XMLToken *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = ((XMLToken const *)arg1)->getNamespaceURI((std::string const &)*arg2);
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLToken_getNamespaceURI__SWIG_2(void * jarg1) {
  wchar_t* jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  std::string result;
  
  arg1 = (XMLToken *)jarg1; 
  result = ((XMLToken const *)arg1)->getNamespaceURI();
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLToken_isNamespacesEmpty(void * jarg1) {
  unsigned int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  bool result;
  
  arg1 = (XMLToken *)jarg1; 
  result = (bool)((XMLToken const *)arg1)->isNamespacesEmpty();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLToken_hasNamespaceURI(void * jarg1, wchar_t* jarg2) {
  unsigned int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  bool result;
  
  arg1 = (XMLToken *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (bool)((XMLToken const *)arg1)->hasNamespaceURI((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLToken_hasNamespacePrefix(void * jarg1, wchar_t* jarg2) {
  unsigned int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  bool result;
  
  arg1 = (XMLToken *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (bool)((XMLToken const *)arg1)->hasNamespacePrefix((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLToken_hasNamespaceNS(void * jarg1, wchar_t* jarg2, wchar_t* jarg3) {
  unsigned int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  std::string *arg2 = 0 ;
  std::string *arg3 = 0 ;
  std::string arg_str2 ;
  std::string arg_str3 ;
  bool result;
  
  arg1 = (XMLToken *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  {
    char*  mbstr = convertUnicodeToUTF8(jarg3);
    if (!mbstr) return 0;
    
    arg_str3.assign(mbstr);
    arg3 = &arg_str3;
    delete[] mbstr;
  }
  result = (bool)((XMLToken const *)arg1)->hasNamespaceNS((std::string const &)*arg2,(std::string const &)*arg3);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLToken_setTriple(void * jarg1, void * jarg2) {
  int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  XMLTriple *arg2 = 0 ;
  int result;
  
  arg1 = (XMLToken *)jarg1; 
  arg2 = (XMLTriple *)jarg2;
  if (!arg2) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLTriple const & type is null", 0);
    return 0;
  } 
  result = (int)(arg1)->setTriple((XMLTriple const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLToken_getName(void * jarg1) {
  wchar_t* jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (XMLToken *)jarg1; 
  result = (std::string *) &((XMLToken const *)arg1)->getName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLToken_getPrefix(void * jarg1) {
  wchar_t* jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (XMLToken *)jarg1; 
  result = (std::string *) &((XMLToken const *)arg1)->getPrefix();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLToken_getURI(void * jarg1) {
  wchar_t* jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (XMLToken *)jarg1; 
  result = (std::string *) &((XMLToken const *)arg1)->getURI();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLToken_getCharacters(void * jarg1) {
  wchar_t* jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (XMLToken *)jarg1; 
  result = (std::string *) &((XMLToken const *)arg1)->getCharacters();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLToken_append(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (XMLToken *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->append((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLToken_getColumn(void * jarg1) {
  unsigned int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  unsigned int result;
  
  arg1 = (XMLToken *)jarg1; 
  result = (unsigned int)((XMLToken const *)arg1)->getColumn();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLToken_getLine(void * jarg1) {
  unsigned int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  unsigned int result;
  
  arg1 = (XMLToken *)jarg1; 
  result = (unsigned int)((XMLToken const *)arg1)->getLine();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLToken_isElement(void * jarg1) {
  unsigned int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  bool result;
  
  arg1 = (XMLToken *)jarg1; 
  result = (bool)((XMLToken const *)arg1)->isElement();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLToken_isEnd(void * jarg1) {
  unsigned int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  bool result;
  
  arg1 = (XMLToken *)jarg1; 
  result = (bool)((XMLToken const *)arg1)->isEnd();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLToken_isEndFor(void * jarg1, void * jarg2) {
  unsigned int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  XMLToken *arg2 = 0 ;
  bool result;
  
  arg1 = (XMLToken *)jarg1; 
  arg2 = (XMLToken *)jarg2;
  if (!arg2) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLToken const & type is null", 0);
    return 0;
  } 
  result = (bool)((XMLToken const *)arg1)->isEndFor((XMLToken const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLToken_isEOF(void * jarg1) {
  unsigned int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  bool result;
  
  arg1 = (XMLToken *)jarg1; 
  result = (bool)((XMLToken const *)arg1)->isEOF();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLToken_isStart(void * jarg1) {
  unsigned int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  bool result;
  
  arg1 = (XMLToken *)jarg1; 
  result = (bool)((XMLToken const *)arg1)->isStart();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLToken_isText(void * jarg1) {
  unsigned int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  bool result;
  
  arg1 = (XMLToken *)jarg1; 
  result = (bool)((XMLToken const *)arg1)->isText();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLToken_setEnd(void * jarg1) {
  int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  int result;
  
  arg1 = (XMLToken *)jarg1; 
  result = (int)(arg1)->setEnd();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLToken_setEOF(void * jarg1) {
  int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  int result;
  
  arg1 = (XMLToken *)jarg1; 
  result = (int)(arg1)->setEOF();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLToken_unsetEnd(void * jarg1) {
  int jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  int result;
  
  arg1 = (XMLToken *)jarg1; 
  result = (int)(arg1)->unsetEnd();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLToken_toString(void * jarg1) {
  wchar_t* jresult ;
  XMLToken *arg1 = (XMLToken *) 0 ;
  std::string result;
  
  arg1 = (XMLToken *)jarg1; 
  result = (arg1)->toString();
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLNode__SWIG_0() {
  void * jresult ;
  XMLNode *result = 0 ;
  
  
  try {
    result = (XMLNode *)new XMLNode();
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLNode__SWIG_1(void * jarg1) {
  void * jresult ;
  XMLToken *arg1 = 0 ;
  XMLNode *result = 0 ;
  
  arg1 = (XMLToken *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLToken const & type is null", 0);
    return 0;
  } 
  
  try {
    result = (XMLNode *)new XMLNode((XMLToken const &)*arg1);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLNode__SWIG_2(void * jarg1, void * jarg2, void * jarg3, long long jarg4, long long jarg5) {
  void * jresult ;
  XMLTriple *arg1 = 0 ;
  XMLAttributes *arg2 = 0 ;
  XMLNamespaces *arg3 = 0 ;
  unsigned int arg4 ;
  unsigned int arg5 ;
  XMLNode *result = 0 ;
  
  arg1 = (XMLTriple *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLTriple const & type is null", 0);
    return 0;
  } 
  arg2 = (XMLAttributes *)jarg2;
  if (!arg2) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLAttributes const & type is null", 0);
    return 0;
  } 
  arg3 = (XMLNamespaces *)jarg3;
  if (!arg3) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLNamespaces const & type is null", 0);
    return 0;
  } 
  {
    arg4 = (unsigned int)jarg4;  
  }
  {
    arg5 = (unsigned int)jarg5;  
  }
  
  try {
    result = (XMLNode *)new XMLNode((XMLTriple const &)*arg1,(XMLAttributes const &)*arg2,(XMLNamespaces const &)*arg3,arg4,arg5);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLNode__SWIG_3(void * jarg1, void * jarg2, void * jarg3, long long jarg4) {
  void * jresult ;
  XMLTriple *arg1 = 0 ;
  XMLAttributes *arg2 = 0 ;
  XMLNamespaces *arg3 = 0 ;
  unsigned int arg4 ;
  XMLNode *result = 0 ;
  
  arg1 = (XMLTriple *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLTriple const & type is null", 0);
    return 0;
  } 
  arg2 = (XMLAttributes *)jarg2;
  if (!arg2) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLAttributes const & type is null", 0);
    return 0;
  } 
  arg3 = (XMLNamespaces *)jarg3;
  if (!arg3) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLNamespaces const & type is null", 0);
    return 0;
  } 
  {
    arg4 = (unsigned int)jarg4;  
  }
  
  try {
    result = (XMLNode *)new XMLNode((XMLTriple const &)*arg1,(XMLAttributes const &)*arg2,(XMLNamespaces const &)*arg3,arg4);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLNode__SWIG_4(void * jarg1, void * jarg2, void * jarg3) {
  void * jresult ;
  XMLTriple *arg1 = 0 ;
  XMLAttributes *arg2 = 0 ;
  XMLNamespaces *arg3 = 0 ;
  XMLNode *result = 0 ;
  
  arg1 = (XMLTriple *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLTriple const & type is null", 0);
    return 0;
  } 
  arg2 = (XMLAttributes *)jarg2;
  if (!arg2) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLAttributes const & type is null", 0);
    return 0;
  } 
  arg3 = (XMLNamespaces *)jarg3;
  if (!arg3) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLNamespaces const & type is null", 0);
    return 0;
  } 
  
  try {
    result = (XMLNode *)new XMLNode((XMLTriple const &)*arg1,(XMLAttributes const &)*arg2,(XMLNamespaces const &)*arg3);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLNode__SWIG_5(void * jarg1, void * jarg2, long long jarg3, long long jarg4) {
  void * jresult ;
  XMLTriple *arg1 = 0 ;
  XMLAttributes *arg2 = 0 ;
  unsigned int arg3 ;
  unsigned int arg4 ;
  XMLNode *result = 0 ;
  
  arg1 = (XMLTriple *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLTriple const & type is null", 0);
    return 0;
  } 
  arg2 = (XMLAttributes *)jarg2;
  if (!arg2) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLAttributes const & type is null", 0);
    return 0;
  } 
  {
    arg3 = (unsigned int)jarg3;  
  }
  {
    arg4 = (unsigned int)jarg4;  
  }
  
  try {
    result = (XMLNode *)new XMLNode((XMLTriple const &)*arg1,(XMLAttributes const &)*arg2,arg3,arg4);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLNode__SWIG_6(void * jarg1, void * jarg2, long long jarg3) {
  void * jresult ;
  XMLTriple *arg1 = 0 ;
  XMLAttributes *arg2 = 0 ;
  unsigned int arg3 ;
  XMLNode *result = 0 ;
  
  arg1 = (XMLTriple *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLTriple const & type is null", 0);
    return 0;
  } 
  arg2 = (XMLAttributes *)jarg2;
  if (!arg2) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLAttributes const & type is null", 0);
    return 0;
  } 
  {
    arg3 = (unsigned int)jarg3;  
  }
  
  try {
    result = (XMLNode *)new XMLNode((XMLTriple const &)*arg1,(XMLAttributes const &)*arg2,arg3);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLNode__SWIG_7(void * jarg1, void * jarg2) {
  void * jresult ;
  XMLTriple *arg1 = 0 ;
  XMLAttributes *arg2 = 0 ;
  XMLNode *result = 0 ;
  
  arg1 = (XMLTriple *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLTriple const & type is null", 0);
    return 0;
  } 
  arg2 = (XMLAttributes *)jarg2;
  if (!arg2) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLAttributes const & type is null", 0);
    return 0;
  } 
  
  try {
    result = (XMLNode *)new XMLNode((XMLTriple const &)*arg1,(XMLAttributes const &)*arg2);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLNode__SWIG_8(void * jarg1, long long jarg2, long long jarg3) {
  void * jresult ;
  XMLTriple *arg1 = 0 ;
  unsigned int arg2 ;
  unsigned int arg3 ;
  XMLNode *result = 0 ;
  
  arg1 = (XMLTriple *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLTriple const & type is null", 0);
    return 0;
  } 
  {
    arg2 = (unsigned int)jarg2;  
  }
  {
    arg3 = (unsigned int)jarg3;  
  }
  
  try {
    result = (XMLNode *)new XMLNode((XMLTriple const &)*arg1,arg2,arg3);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLNode__SWIG_9(void * jarg1, long long jarg2) {
  void * jresult ;
  XMLTriple *arg1 = 0 ;
  unsigned int arg2 ;
  XMLNode *result = 0 ;
  
  arg1 = (XMLTriple *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLTriple const & type is null", 0);
    return 0;
  } 
  {
    arg2 = (unsigned int)jarg2;  
  }
  
  try {
    result = (XMLNode *)new XMLNode((XMLTriple const &)*arg1,arg2);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLNode__SWIG_10(void * jarg1) {
  void * jresult ;
  XMLTriple *arg1 = 0 ;
  XMLNode *result = 0 ;
  
  arg1 = (XMLTriple *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLTriple const & type is null", 0);
    return 0;
  } 
  
  try {
    result = (XMLNode *)new XMLNode((XMLTriple const &)*arg1);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLNode__SWIG_11(wchar_t* jarg1, long long jarg2, long long jarg3) {
  void * jresult ;
  std::string *arg1 = 0 ;
  unsigned int arg2 ;
  unsigned int arg3 ;
  std::string arg_str1 ;
  XMLNode *result = 0 ;
  
  {
    char*  mbstr = convertUnicodeToUTF8(jarg1);
    if (!mbstr) return 0;
    
    arg_str1.assign(mbstr);
    arg1 = &arg_str1;
    delete[] mbstr;
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  {
    arg3 = (unsigned int)jarg3;  
  }
  
  try {
    result = (XMLNode *)new XMLNode((std::string const &)*arg1,arg2,arg3);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLNode__SWIG_12(wchar_t* jarg1, long long jarg2) {
  void * jresult ;
  std::string *arg1 = 0 ;
  unsigned int arg2 ;
  std::string arg_str1 ;
  XMLNode *result = 0 ;
  
  {
    char*  mbstr = convertUnicodeToUTF8(jarg1);
    if (!mbstr) return 0;
    
    arg_str1.assign(mbstr);
    arg1 = &arg_str1;
    delete[] mbstr;
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  
  try {
    result = (XMLNode *)new XMLNode((std::string const &)*arg1,arg2);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLNode__SWIG_13(wchar_t* jarg1) {
  void * jresult ;
  std::string *arg1 = 0 ;
  std::string arg_str1 ;
  XMLNode *result = 0 ;
  
  {
    char*  mbstr = convertUnicodeToUTF8(jarg1);
    if (!mbstr) return 0;
    
    arg_str1.assign(mbstr);
    arg1 = &arg_str1;
    delete[] mbstr;
  }
  
  try {
    result = (XMLNode *)new XMLNode((std::string const &)*arg1);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_XMLNode(void * jarg1) {
  XMLNode *arg1 = (XMLNode *) 0 ;
  
  arg1 = (XMLNode *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLNode__SWIG_14(void * jarg1) {
  void * jresult ;
  XMLNode *arg1 = 0 ;
  XMLNode *result = 0 ;
  
  arg1 = (XMLNode *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLNode const & type is null", 0);
    return 0;
  } 
  
  try {
    result = (XMLNode *)new XMLNode((XMLNode const &)*arg1);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_XMLNode_clone(void * jarg1) {
  void * jresult ;
  XMLNode *arg1 = (XMLNode *) 0 ;
  XMLNode *result = 0 ;
  
  arg1 = (XMLNode *)jarg1; 
  result = (XMLNode *)((XMLNode const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLNode_addChild(void * jarg1, void * jarg2) {
  int jresult ;
  XMLNode *arg1 = (XMLNode *) 0 ;
  XMLNode *arg2 = 0 ;
  int result;
  
  arg1 = (XMLNode *)jarg1; 
  arg2 = (XMLNode *)jarg2;
  if (!arg2) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLNode const & type is null", 0);
    return 0;
  } 
  result = (int)(arg1)->addChild((XMLNode const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_XMLNode_insertChild(void * jarg1, long long jarg2, void * jarg3) {
  void * jresult ;
  XMLNode *arg1 = (XMLNode *) 0 ;
  unsigned int arg2 ;
  XMLNode *arg3 = 0 ;
  XMLNode *result = 0 ;
  
  arg1 = (XMLNode *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  arg3 = (XMLNode *)jarg3;
  if (!arg3) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLNode const & type is null", 0);
    return 0;
  } 
  result = (XMLNode *) &(arg1)->insertChild(arg2,(XMLNode const &)*arg3);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_XMLNode_removeChild(void * jarg1, long long jarg2) {
  void * jresult ;
  XMLNode *arg1 = (XMLNode *) 0 ;
  unsigned int arg2 ;
  XMLNode *result = 0 ;
  
  arg1 = (XMLNode *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (XMLNode *)(arg1)->removeChild(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLNode_removeChildren(void * jarg1) {
  int jresult ;
  XMLNode *arg1 = (XMLNode *) 0 ;
  int result;
  
  arg1 = (XMLNode *)jarg1; 
  result = (int)(arg1)->removeChildren();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_XMLNode_getChild__SWIG_0(void * jarg1, long long jarg2) {
  void * jresult ;
  XMLNode *arg1 = (XMLNode *) 0 ;
  unsigned int arg2 ;
  XMLNode *result = 0 ;
  
  arg1 = (XMLNode *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (XMLNode *) &(arg1)->getChild(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_XMLNode_getChild__SWIG_2(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  XMLNode *arg1 = (XMLNode *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  XMLNode *result = 0 ;
  
  arg1 = (XMLNode *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (XMLNode *) &(arg1)->getChild((std::string const &)*arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLNode_getIndex(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  XMLNode *arg1 = (XMLNode *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (XMLNode *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)((XMLNode const *)arg1)->getIndex((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLNode_hasChild(void * jarg1, wchar_t* jarg2) {
  unsigned int jresult ;
  XMLNode *arg1 = (XMLNode *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  bool result;
  
  arg1 = (XMLNode *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (bool)((XMLNode const *)arg1)->hasChild((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLNode_equals(void * jarg1, void * jarg2) {
  unsigned int jresult ;
  XMLNode *arg1 = (XMLNode *) 0 ;
  XMLNode *arg2 = 0 ;
  bool result;
  
  arg1 = (XMLNode *)jarg1; 
  arg2 = (XMLNode *)jarg2;
  if (!arg2) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLNode const & type is null", 0);
    return 0;
  } 
  result = (bool)((XMLNode const *)arg1)->equals((XMLNode const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLNode_getNumChildren(void * jarg1) {
  unsigned int jresult ;
  XMLNode *arg1 = (XMLNode *) 0 ;
  unsigned int result;
  
  arg1 = (XMLNode *)jarg1; 
  result = (unsigned int)((XMLNode const *)arg1)->getNumChildren();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLNode_toXMLString(void * jarg1) {
  wchar_t* jresult ;
  XMLNode *arg1 = (XMLNode *) 0 ;
  std::string result;
  
  arg1 = (XMLNode *)jarg1; 
  result = ((XMLNode const *)arg1)->toXMLString();
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLNode_convertXMLNodeToString(void * jarg1) {
  wchar_t* jresult ;
  XMLNode *arg1 = (XMLNode *) 0 ;
  std::string result;
  
  arg1 = (XMLNode *)jarg1; 
  result = XMLNode::convertXMLNodeToString((XMLNode const *)arg1);
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_XMLNode_convertStringToXMLNode__SWIG_0(wchar_t* jarg1, void * jarg2) {
  void * jresult ;
  std::string *arg1 = 0 ;
  XMLNamespaces *arg2 = (XMLNamespaces *) 0 ;
  std::string arg_str1 ;
  XMLNode *result = 0 ;
  
  {
    char*  mbstr = convertUnicodeToUTF8(jarg1);
    if (!mbstr) return 0;
    
    arg_str1.assign(mbstr);
    arg1 = &arg_str1;
    delete[] mbstr;
  }
  arg2 = (XMLNamespaces *)jarg2; 
  result = (XMLNode *)XMLNode::convertStringToXMLNode((std::string const &)*arg1,(XMLNamespaces const *)arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_XMLNode_convertStringToXMLNode__SWIG_1(wchar_t* jarg1) {
  void * jresult ;
  std::string *arg1 = 0 ;
  std::string arg_str1 ;
  XMLNode *result = 0 ;
  
  {
    char*  mbstr = convertUnicodeToUTF8(jarg1);
    if (!mbstr) return 0;
    
    arg_str1.assign(mbstr);
    arg1 = &arg_str1;
    delete[] mbstr;
  }
  result = (XMLNode *)XMLNode::convertStringToXMLNode((std::string const &)*arg1);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLTriple__SWIG_0() {
  void * jresult ;
  XMLTriple *result = 0 ;
  
  result = (XMLTriple *)new XMLTriple();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLTriple__SWIG_1(wchar_t* jarg1, wchar_t* jarg2, wchar_t* jarg3) {
  void * jresult ;
  std::string *arg1 = 0 ;
  std::string *arg2 = 0 ;
  std::string *arg3 = 0 ;
  std::string arg_str1 ;
  std::string arg_str2 ;
  std::string arg_str3 ;
  XMLTriple *result = 0 ;
  
  {
    char*  mbstr = convertUnicodeToUTF8(jarg1);
    if (!mbstr) return 0;
    
    arg_str1.assign(mbstr);
    arg1 = &arg_str1;
    delete[] mbstr;
  }
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  {
    char*  mbstr = convertUnicodeToUTF8(jarg3);
    if (!mbstr) return 0;
    
    arg_str3.assign(mbstr);
    arg3 = &arg_str3;
    delete[] mbstr;
  }
  result = (XMLTriple *)new XMLTriple((std::string const &)*arg1,(std::string const &)*arg2,(std::string const &)*arg3);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLTriple__SWIG_2(wchar_t* jarg1, char jarg2) {
  void * jresult ;
  std::string *arg1 = 0 ;
  char arg2 ;
  std::string arg_str1 ;
  XMLTriple *result = 0 ;
  
  {
    char*  mbstr = convertUnicodeToUTF8(jarg1);
    if (!mbstr) return 0;
    
    arg_str1.assign(mbstr);
    arg1 = &arg_str1;
    delete[] mbstr;
  }
  arg2 = (char)jarg2; 
  result = (XMLTriple *)new XMLTriple((std::string const &)*arg1,arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLTriple__SWIG_3(wchar_t* jarg1) {
  void * jresult ;
  std::string *arg1 = 0 ;
  std::string arg_str1 ;
  XMLTriple *result = 0 ;
  
  {
    char*  mbstr = convertUnicodeToUTF8(jarg1);
    if (!mbstr) return 0;
    
    arg_str1.assign(mbstr);
    arg1 = &arg_str1;
    delete[] mbstr;
  }
  result = (XMLTriple *)new XMLTriple((std::string const &)*arg1);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLTriple__SWIG_4(void * jarg1) {
  void * jresult ;
  XMLTriple *arg1 = 0 ;
  XMLTriple *result = 0 ;
  
  arg1 = (XMLTriple *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLTriple const & type is null", 0);
    return 0;
  } 
  result = (XMLTriple *)new XMLTriple((XMLTriple const &)*arg1);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_XMLTriple_clone(void * jarg1) {
  void * jresult ;
  XMLTriple *arg1 = (XMLTriple *) 0 ;
  XMLTriple *result = 0 ;
  
  arg1 = (XMLTriple *)jarg1; 
  result = (XMLTriple *)((XMLTriple const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLTriple_getName(void * jarg1) {
  wchar_t* jresult ;
  XMLTriple *arg1 = (XMLTriple *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (XMLTriple *)jarg1; 
  result = (std::string *) &((XMLTriple const *)arg1)->getName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLTriple_getPrefix(void * jarg1) {
  wchar_t* jresult ;
  XMLTriple *arg1 = (XMLTriple *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (XMLTriple *)jarg1; 
  result = (std::string *) &((XMLTriple const *)arg1)->getPrefix();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLTriple_getURI(void * jarg1) {
  wchar_t* jresult ;
  XMLTriple *arg1 = (XMLTriple *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (XMLTriple *)jarg1; 
  result = (std::string *) &((XMLTriple const *)arg1)->getURI();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLTriple_getPrefixedName(void * jarg1) {
  wchar_t* jresult ;
  XMLTriple *arg1 = (XMLTriple *) 0 ;
  std::string result;
  
  arg1 = (XMLTriple *)jarg1; 
  result = ((XMLTriple const *)arg1)->getPrefixedName();
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLTriple_isEmpty(void * jarg1) {
  unsigned int jresult ;
  XMLTriple *arg1 = (XMLTriple *) 0 ;
  bool result;
  
  arg1 = (XMLTriple *)jarg1; 
  result = (bool)((XMLTriple const *)arg1)->isEmpty();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_XMLTriple(void * jarg1) {
  XMLTriple *arg1 = (XMLTriple *) 0 ;
  
  arg1 = (XMLTriple *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLOutputStream__SWIG_0(void * jarg1, wchar_t* jarg2, unsigned int jarg3, wchar_t* jarg4, wchar_t* jarg5) {
  void * jresult ;
  std::ostream *arg1 = 0 ;
  std::string *arg2 = 0 ;
  bool arg3 ;
  std::string *arg4 = 0 ;
  std::string *arg5 = 0 ;
  std::string arg_str2 ;
  std::string arg_str4 ;
  std::string arg_str5 ;
  XMLOutputStream *result = 0 ;
  
  arg1 = (std::ostream *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "std::ostream & type is null", 0);
    return 0;
  } 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  arg3 = jarg3 ? true : false; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg4);
    if (!mbstr) return 0;
    
    arg_str4.assign(mbstr);
    arg4 = &arg_str4;
    delete[] mbstr;
  }
  {
    char*  mbstr = convertUnicodeToUTF8(jarg5);
    if (!mbstr) return 0;
    
    arg_str5.assign(mbstr);
    arg5 = &arg_str5;
    delete[] mbstr;
  }
  
  try {
    result = (XMLOutputStream *)new XMLOutputStream(*arg1,(std::string const &)*arg2,arg3,(std::string const &)*arg4,(std::string const &)*arg5);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLOutputStream__SWIG_1(void * jarg1, wchar_t* jarg2, unsigned int jarg3, wchar_t* jarg4) {
  void * jresult ;
  std::ostream *arg1 = 0 ;
  std::string *arg2 = 0 ;
  bool arg3 ;
  std::string *arg4 = 0 ;
  std::string arg_str2 ;
  std::string arg_str4 ;
  XMLOutputStream *result = 0 ;
  
  arg1 = (std::ostream *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "std::ostream & type is null", 0);
    return 0;
  } 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  arg3 = jarg3 ? true : false; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg4);
    if (!mbstr) return 0;
    
    arg_str4.assign(mbstr);
    arg4 = &arg_str4;
    delete[] mbstr;
  }
  
  try {
    result = (XMLOutputStream *)new XMLOutputStream(*arg1,(std::string const &)*arg2,arg3,(std::string const &)*arg4);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLOutputStream__SWIG_2(void * jarg1, wchar_t* jarg2, unsigned int jarg3) {
  void * jresult ;
  std::ostream *arg1 = 0 ;
  std::string *arg2 = 0 ;
  bool arg3 ;
  std::string arg_str2 ;
  XMLOutputStream *result = 0 ;
  
  arg1 = (std::ostream *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "std::ostream & type is null", 0);
    return 0;
  } 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  arg3 = jarg3 ? true : false; 
  
  try {
    result = (XMLOutputStream *)new XMLOutputStream(*arg1,(std::string const &)*arg2,arg3);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLOutputStream__SWIG_3(void * jarg1, wchar_t* jarg2) {
  void * jresult ;
  std::ostream *arg1 = 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  XMLOutputStream *result = 0 ;
  
  arg1 = (std::ostream *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "std::ostream & type is null", 0);
    return 0;
  } 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  
  try {
    result = (XMLOutputStream *)new XMLOutputStream(*arg1,(std::string const &)*arg2);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLOutputStream__SWIG_4(void * jarg1) {
  void * jresult ;
  std::ostream *arg1 = 0 ;
  XMLOutputStream *result = 0 ;
  
  arg1 = (std::ostream *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "std::ostream & type is null", 0);
    return 0;
  } 
  
  try {
    result = (XMLOutputStream *)new XMLOutputStream(*arg1);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_XMLOutputStream_endElement__SWIG_0(void * jarg1, wchar_t* jarg2) {
  XMLOutputStream *arg1 = (XMLOutputStream *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  
  arg1 = (XMLOutputStream *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return ;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  (arg1)->endElement((std::string const &)*arg2);
}


SWIGEXPORT void SWIGSTDCALL CSharp_XMLOutputStream_endElement__SWIG_1(void * jarg1, void * jarg2) {
  XMLOutputStream *arg1 = (XMLOutputStream *) 0 ;
  XMLTriple *arg2 = 0 ;
  
  arg1 = (XMLOutputStream *)jarg1; 
  arg2 = (XMLTriple *)jarg2;
  if (!arg2) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLTriple const & type is null", 0);
    return ;
  } 
  (arg1)->endElement((XMLTriple const &)*arg2);
}


SWIGEXPORT void SWIGSTDCALL CSharp_XMLOutputStream_setAutoIndent(void * jarg1, unsigned int jarg2) {
  XMLOutputStream *arg1 = (XMLOutputStream *) 0 ;
  bool arg2 ;
  
  arg1 = (XMLOutputStream *)jarg1; 
  arg2 = jarg2 ? true : false; 
  (arg1)->setAutoIndent(arg2);
}


SWIGEXPORT void SWIGSTDCALL CSharp_XMLOutputStream_startElement__SWIG_0(void * jarg1, wchar_t* jarg2) {
  XMLOutputStream *arg1 = (XMLOutputStream *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  
  arg1 = (XMLOutputStream *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return ;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  (arg1)->startElement((std::string const &)*arg2);
}


SWIGEXPORT void SWIGSTDCALL CSharp_XMLOutputStream_startElement__SWIG_1(void * jarg1, void * jarg2) {
  XMLOutputStream *arg1 = (XMLOutputStream *) 0 ;
  XMLTriple *arg2 = 0 ;
  
  arg1 = (XMLOutputStream *)jarg1; 
  arg2 = (XMLTriple *)jarg2;
  if (!arg2) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLTriple const & type is null", 0);
    return ;
  } 
  (arg1)->startElement((XMLTriple const &)*arg2);
}


SWIGEXPORT void SWIGSTDCALL CSharp_XMLOutputStream_startEndElement__SWIG_0(void * jarg1, wchar_t* jarg2) {
  XMLOutputStream *arg1 = (XMLOutputStream *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  
  arg1 = (XMLOutputStream *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return ;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  (arg1)->startEndElement((std::string const &)*arg2);
}


SWIGEXPORT void SWIGSTDCALL CSharp_XMLOutputStream_startEndElement__SWIG_1(void * jarg1, void * jarg2) {
  XMLOutputStream *arg1 = (XMLOutputStream *) 0 ;
  XMLTriple *arg2 = 0 ;
  
  arg1 = (XMLOutputStream *)jarg1; 
  arg2 = (XMLTriple *)jarg2;
  if (!arg2) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLTriple const & type is null", 0);
    return ;
  } 
  (arg1)->startEndElement((XMLTriple const &)*arg2);
}


SWIGEXPORT void SWIGSTDCALL CSharp_XMLOutputStream_writeAttribute__SWIG_0(void * jarg1, wchar_t* jarg2, wchar_t* jarg3) {
  XMLOutputStream *arg1 = (XMLOutputStream *) 0 ;
  std::string *arg2 = 0 ;
  std::string *arg3 = 0 ;
  std::string arg_str2 ;
  std::string arg_str3 ;
  
  arg1 = (XMLOutputStream *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return ;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  {
    char*  mbstr = convertUnicodeToUTF8(jarg3);
    if (!mbstr) return ;
    
    arg_str3.assign(mbstr);
    arg3 = &arg_str3;
    delete[] mbstr;
  }
  (arg1)->writeAttribute((std::string const &)*arg2,(std::string const &)*arg3);
}


SWIGEXPORT void SWIGSTDCALL CSharp_XMLOutputStream_writeAttribute__SWIG_1(void * jarg1, void * jarg2, wchar_t* jarg3) {
  XMLOutputStream *arg1 = (XMLOutputStream *) 0 ;
  XMLTriple *arg2 = 0 ;
  std::string *arg3 = 0 ;
  std::string arg_str3 ;
  
  arg1 = (XMLOutputStream *)jarg1; 
  arg2 = (XMLTriple *)jarg2;
  if (!arg2) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLTriple const & type is null", 0);
    return ;
  } 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg3);
    if (!mbstr) return ;
    
    arg_str3.assign(mbstr);
    arg3 = &arg_str3;
    delete[] mbstr;
  }
  (arg1)->writeAttribute((XMLTriple const &)*arg2,(std::string const &)*arg3);
}


SWIGEXPORT void SWIGSTDCALL CSharp_XMLOutputStream_writeAttribute__SWIG_2(void * jarg1, wchar_t* jarg2, unsigned int jarg3) {
  XMLOutputStream *arg1 = (XMLOutputStream *) 0 ;
  std::string *arg2 = 0 ;
  bool *arg3 = 0 ;
  std::string arg_str2 ;
  bool temp3 ;
  
  arg1 = (XMLOutputStream *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return ;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  temp3 = jarg3 ? true : false; 
  arg3 = &temp3; 
  (arg1)->writeAttribute((std::string const &)*arg2,(bool const &)*arg3);
}


SWIGEXPORT void SWIGSTDCALL CSharp_XMLOutputStream_writeAttribute__SWIG_3(void * jarg1, void * jarg2, unsigned int jarg3) {
  XMLOutputStream *arg1 = (XMLOutputStream *) 0 ;
  XMLTriple *arg2 = 0 ;
  bool *arg3 = 0 ;
  bool temp3 ;
  
  arg1 = (XMLOutputStream *)jarg1; 
  arg2 = (XMLTriple *)jarg2;
  if (!arg2) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLTriple const & type is null", 0);
    return ;
  } 
  temp3 = jarg3 ? true : false; 
  arg3 = &temp3; 
  (arg1)->writeAttribute((XMLTriple const &)*arg2,(bool const &)*arg3);
}


SWIGEXPORT void SWIGSTDCALL CSharp_XMLOutputStream_writeAttribute__SWIG_4(void * jarg1, wchar_t* jarg2, double jarg3) {
  XMLOutputStream *arg1 = (XMLOutputStream *) 0 ;
  std::string *arg2 = 0 ;
  double *arg3 = 0 ;
  std::string arg_str2 ;
  double temp3 ;
  
  arg1 = (XMLOutputStream *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return ;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  temp3 = (double)jarg3; 
  arg3 = &temp3; 
  (arg1)->writeAttribute((std::string const &)*arg2,(double const &)*arg3);
}


SWIGEXPORT void SWIGSTDCALL CSharp_XMLOutputStream_writeAttribute__SWIG_5(void * jarg1, void * jarg2, double jarg3) {
  XMLOutputStream *arg1 = (XMLOutputStream *) 0 ;
  XMLTriple *arg2 = 0 ;
  double *arg3 = 0 ;
  double temp3 ;
  
  arg1 = (XMLOutputStream *)jarg1; 
  arg2 = (XMLTriple *)jarg2;
  if (!arg2) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLTriple const & type is null", 0);
    return ;
  } 
  temp3 = (double)jarg3; 
  arg3 = &temp3; 
  (arg1)->writeAttribute((XMLTriple const &)*arg2,(double const &)*arg3);
}


SWIGEXPORT void SWIGSTDCALL CSharp_XMLOutputStream_writeAttribute__SWIG_6(void * jarg1, wchar_t* jarg2, long jarg3) {
  XMLOutputStream *arg1 = (XMLOutputStream *) 0 ;
  std::string *arg2 = 0 ;
  long *arg3 = 0 ;
  std::string arg_str2 ;
  long temp3 ;
  
  arg1 = (XMLOutputStream *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return ;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  temp3 = (long)jarg3; 
  arg3 = &temp3; 
  (arg1)->writeAttribute((std::string const &)*arg2,(long const &)*arg3);
}


SWIGEXPORT void SWIGSTDCALL CSharp_XMLOutputStream_writeAttribute__SWIG_7(void * jarg1, void * jarg2, long jarg3) {
  XMLOutputStream *arg1 = (XMLOutputStream *) 0 ;
  XMLTriple *arg2 = 0 ;
  long *arg3 = 0 ;
  long temp3 ;
  
  arg1 = (XMLOutputStream *)jarg1; 
  arg2 = (XMLTriple *)jarg2;
  if (!arg2) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLTriple const & type is null", 0);
    return ;
  } 
  temp3 = (long)jarg3; 
  arg3 = &temp3; 
  (arg1)->writeAttribute((XMLTriple const &)*arg2,(long const &)*arg3);
}


SWIGEXPORT void SWIGSTDCALL CSharp_XMLOutputStream_writeXMLDecl(void * jarg1) {
  XMLOutputStream *arg1 = (XMLOutputStream *) 0 ;
  
  arg1 = (XMLOutputStream *)jarg1; 
  (arg1)->writeXMLDecl();
}


SWIGEXPORT void SWIGSTDCALL CSharp_XMLOutputStream_writeComment(void * jarg1, wchar_t* jarg2, wchar_t* jarg3) {
  XMLOutputStream *arg1 = (XMLOutputStream *) 0 ;
  std::string *arg2 = 0 ;
  std::string *arg3 = 0 ;
  std::string arg_str2 ;
  std::string arg_str3 ;
  
  arg1 = (XMLOutputStream *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return ;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  {
    char*  mbstr = convertUnicodeToUTF8(jarg3);
    if (!mbstr) return ;
    
    arg_str3.assign(mbstr);
    arg3 = &arg_str3;
    delete[] mbstr;
  }
  (arg1)->writeComment((std::string const &)*arg2,(std::string const &)*arg3);
}


SWIGEXPORT void SWIGSTDCALL CSharp_XMLOutputStream_downIndent(void * jarg1) {
  XMLOutputStream *arg1 = (XMLOutputStream *) 0 ;
  
  arg1 = (XMLOutputStream *)jarg1; 
  (arg1)->downIndent();
}


SWIGEXPORT void SWIGSTDCALL CSharp_XMLOutputStream_upIndent(void * jarg1) {
  XMLOutputStream *arg1 = (XMLOutputStream *) 0 ;
  
  arg1 = (XMLOutputStream *)jarg1; 
  (arg1)->upIndent();
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_XMLOutputStream(void * jarg1) {
  XMLOutputStream *arg1 = (XMLOutputStream *) 0 ;
  
  arg1 = (XMLOutputStream *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLError__SWIG_0(int jarg1, wchar_t* jarg2, long long jarg3, long long jarg4, long long jarg5, long long jarg6) {
  void * jresult ;
  int arg1 ;
  std::string *arg2 = 0 ;
  unsigned int arg3 ;
  unsigned int arg4 ;
  unsigned int arg5 ;
  unsigned int arg6 ;
  std::string arg_str2 ;
  XMLError *result = 0 ;
  
  arg1 = (int)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  {
    arg3 = (unsigned int)jarg3;  
  }
  {
    arg4 = (unsigned int)jarg4;  
  }
  {
    arg5 = (unsigned int)jarg5;  
  }
  {
    arg6 = (unsigned int)jarg6;  
  }
  
  try {
    result = (XMLError *)new XMLError(arg1,(std::string const &)*arg2,arg3,arg4,arg5,arg6);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLError__SWIG_1(int jarg1, wchar_t* jarg2, long long jarg3, long long jarg4, long long jarg5) {
  void * jresult ;
  int arg1 ;
  std::string *arg2 = 0 ;
  unsigned int arg3 ;
  unsigned int arg4 ;
  unsigned int arg5 ;
  std::string arg_str2 ;
  XMLError *result = 0 ;
  
  arg1 = (int)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  {
    arg3 = (unsigned int)jarg3;  
  }
  {
    arg4 = (unsigned int)jarg4;  
  }
  {
    arg5 = (unsigned int)jarg5;  
  }
  
  try {
    result = (XMLError *)new XMLError(arg1,(std::string const &)*arg2,arg3,arg4,arg5);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLError__SWIG_2(int jarg1, wchar_t* jarg2, long long jarg3, long long jarg4) {
  void * jresult ;
  int arg1 ;
  std::string *arg2 = 0 ;
  unsigned int arg3 ;
  unsigned int arg4 ;
  std::string arg_str2 ;
  XMLError *result = 0 ;
  
  arg1 = (int)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  {
    arg3 = (unsigned int)jarg3;  
  }
  {
    arg4 = (unsigned int)jarg4;  
  }
  
  try {
    result = (XMLError *)new XMLError(arg1,(std::string const &)*arg2,arg3,arg4);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLError__SWIG_3(int jarg1, wchar_t* jarg2, long long jarg3) {
  void * jresult ;
  int arg1 ;
  std::string *arg2 = 0 ;
  unsigned int arg3 ;
  std::string arg_str2 ;
  XMLError *result = 0 ;
  
  arg1 = (int)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  {
    arg3 = (unsigned int)jarg3;  
  }
  
  try {
    result = (XMLError *)new XMLError(arg1,(std::string const &)*arg2,arg3);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLError__SWIG_4(int jarg1, wchar_t* jarg2) {
  void * jresult ;
  int arg1 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  XMLError *result = 0 ;
  
  arg1 = (int)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  
  try {
    result = (XMLError *)new XMLError(arg1,(std::string const &)*arg2);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLError__SWIG_5(int jarg1) {
  void * jresult ;
  int arg1 ;
  XMLError *result = 0 ;
  
  arg1 = (int)jarg1; 
  
  try {
    result = (XMLError *)new XMLError(arg1);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLError__SWIG_6() {
  void * jresult ;
  XMLError *result = 0 ;
  
  
  try {
    result = (XMLError *)new XMLError();
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_XMLError__SWIG_7(void * jarg1) {
  void * jresult ;
  XMLError *arg1 = 0 ;
  XMLError *result = 0 ;
  
  arg1 = (XMLError *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "XMLError const & type is null", 0);
    return 0;
  } 
  
  try {
    result = (XMLError *)new XMLError((XMLError const &)*arg1);
  }
  catch (const XMLConstructorException &e) {
    SWIG_CSharpSetPendingExceptionCustom(e.what(),1);
  }
  
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_XMLError(void * jarg1) {
  XMLError *arg1 = (XMLError *) 0 ;
  
  arg1 = (XMLError *)jarg1; 
  delete arg1;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLError_getErrorId(void * jarg1) {
  unsigned int jresult ;
  XMLError *arg1 = (XMLError *) 0 ;
  unsigned int result;
  
  arg1 = (XMLError *)jarg1; 
  result = (unsigned int)((XMLError const *)arg1)->getErrorId();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLError_getMessage(void * jarg1) {
  wchar_t* jresult ;
  XMLError *arg1 = (XMLError *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (XMLError *)jarg1; 
  result = (std::string *) &((XMLError const *)arg1)->getMessage();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLError_getShortMessage(void * jarg1) {
  wchar_t* jresult ;
  XMLError *arg1 = (XMLError *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (XMLError *)jarg1; 
  result = (std::string *) &((XMLError const *)arg1)->getShortMessage();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLError_getLine(void * jarg1) {
  unsigned int jresult ;
  XMLError *arg1 = (XMLError *) 0 ;
  unsigned int result;
  
  arg1 = (XMLError *)jarg1; 
  result = (unsigned int)((XMLError const *)arg1)->getLine();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLError_getColumn(void * jarg1) {
  unsigned int jresult ;
  XMLError *arg1 = (XMLError *) 0 ;
  unsigned int result;
  
  arg1 = (XMLError *)jarg1; 
  result = (unsigned int)((XMLError const *)arg1)->getColumn();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLError_getSeverity(void * jarg1) {
  unsigned int jresult ;
  XMLError *arg1 = (XMLError *) 0 ;
  unsigned int result;
  
  arg1 = (XMLError *)jarg1; 
  result = (unsigned int)((XMLError const *)arg1)->getSeverity();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLError_getSeverityAsString(void * jarg1) {
  wchar_t* jresult ;
  XMLError *arg1 = (XMLError *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (XMLError *)jarg1; 
  result = (std::string *) &((XMLError const *)arg1)->getSeverityAsString();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLError_getCategory(void * jarg1) {
  unsigned int jresult ;
  XMLError *arg1 = (XMLError *) 0 ;
  unsigned int result;
  
  arg1 = (XMLError *)jarg1; 
  result = (unsigned int)((XMLError const *)arg1)->getCategory();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLError_getCategoryAsString(void * jarg1) {
  wchar_t* jresult ;
  XMLError *arg1 = (XMLError *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (XMLError *)jarg1; 
  result = (std::string *) &((XMLError const *)arg1)->getCategoryAsString();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLError_isInfo(void * jarg1) {
  unsigned int jresult ;
  XMLError *arg1 = (XMLError *) 0 ;
  bool result;
  
  arg1 = (XMLError *)jarg1; 
  result = (bool)((XMLError const *)arg1)->isInfo();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLError_isWarning(void * jarg1) {
  unsigned int jresult ;
  XMLError *arg1 = (XMLError *) 0 ;
  bool result;
  
  arg1 = (XMLError *)jarg1; 
  result = (bool)((XMLError const *)arg1)->isWarning();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLError_isError(void * jarg1) {
  unsigned int jresult ;
  XMLError *arg1 = (XMLError *) 0 ;
  bool result;
  
  arg1 = (XMLError *)jarg1; 
  result = (bool)((XMLError const *)arg1)->isError();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLError_isFatal(void * jarg1) {
  unsigned int jresult ;
  XMLError *arg1 = (XMLError *) 0 ;
  bool result;
  
  arg1 = (XMLError *)jarg1; 
  result = (bool)((XMLError const *)arg1)->isFatal();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLError_isInternal(void * jarg1) {
  unsigned int jresult ;
  XMLError *arg1 = (XMLError *) 0 ;
  bool result;
  
  arg1 = (XMLError *)jarg1; 
  result = (bool)((XMLError const *)arg1)->isInternal();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLError_isSystem(void * jarg1) {
  unsigned int jresult ;
  XMLError *arg1 = (XMLError *) 0 ;
  bool result;
  
  arg1 = (XMLError *)jarg1; 
  result = (bool)((XMLError const *)arg1)->isSystem();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLError_isXML(void * jarg1) {
  unsigned int jresult ;
  XMLError *arg1 = (XMLError *) 0 ;
  bool result;
  
  arg1 = (XMLError *)jarg1; 
  result = (bool)((XMLError const *)arg1)->isXML();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLError_setLine(void * jarg1, long long jarg2) {
  int jresult ;
  XMLError *arg1 = (XMLError *) 0 ;
  unsigned int arg2 ;
  int result;
  
  arg1 = (XMLError *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (int)(arg1)->setLine(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_XMLError_setColumn(void * jarg1, long long jarg2) {
  int jresult ;
  XMLError *arg1 = (XMLError *) 0 ;
  unsigned int arg2 ;
  int result;
  
  arg1 = (XMLError *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (int)(arg1)->setColumn(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_XMLError_getStandardMessage(int jarg1) {
  wchar_t* jresult ;
  int arg1 ;
  std::string result;
  
  arg1 = (int)jarg1; 
  result = XMLError::getStandardMessage(arg1);
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XMLErrorLog_getNumErrors(void * jarg1) {
  unsigned int jresult ;
  XMLErrorLog *arg1 = (XMLErrorLog *) 0 ;
  unsigned int result;
  
  arg1 = (XMLErrorLog *)jarg1; 
  result = (unsigned int)((XMLErrorLog const *)arg1)->getNumErrors();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_XMLErrorLog_getError(void * jarg1, long long jarg2) {
  void * jresult ;
  XMLErrorLog *arg1 = (XMLErrorLog *) 0 ;
  unsigned int arg2 ;
  XMLError *result = 0 ;
  
  arg1 = (XMLErrorLog *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (XMLError *)((XMLErrorLog const *)arg1)->getError(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_XMLErrorLog_clearLog(void * jarg1) {
  XMLErrorLog *arg1 = (XMLErrorLog *) 0 ;
  
  arg1 = (XMLErrorLog *)jarg1; 
  (arg1)->clearLog();
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_XMLErrorLog(void * jarg1) {
  XMLErrorLog *arg1 = (XMLErrorLog *) 0 ;
  
  arg1 = (XMLErrorLog *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_SBMLErrorLog_getError(void * jarg1, long long jarg2) {
  void * jresult ;
  SBMLErrorLog *arg1 = (SBMLErrorLog *) 0 ;
  unsigned int arg2 ;
  SBMLError *result = 0 ;
  
  arg1 = (SBMLErrorLog *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (SBMLError *)((SBMLErrorLog const *)arg1)->getError(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBMLErrorLog_getNumFailsWithSeverity(void * jarg1, long long jarg2) {
  unsigned int jresult ;
  SBMLErrorLog *arg1 = (SBMLErrorLog *) 0 ;
  unsigned int arg2 ;
  unsigned int result;
  
  arg1 = (SBMLErrorLog *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (unsigned int)(arg1)->getNumFailsWithSeverity(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBMLErrorLog(void * jarg1) {
  SBMLErrorLog *arg1 = (SBMLErrorLog *) 0 ;
  
  arg1 = (SBMLErrorLog *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBMLError__SWIG_0(long long jarg1, long long jarg2, long long jarg3, wchar_t* jarg4, long long jarg5, long long jarg6, long long jarg7, long long jarg8) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  unsigned int arg3 ;
  std::string *arg4 = 0 ;
  unsigned int arg5 ;
  unsigned int arg6 ;
  unsigned int arg7 ;
  unsigned int arg8 ;
  std::string arg_str4 ;
  SBMLError *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  {
    arg3 = (unsigned int)jarg3;  
  }
  {
    char*  mbstr = convertUnicodeToUTF8(jarg4);
    if (!mbstr) return 0;
    
    arg_str4.assign(mbstr);
    arg4 = &arg_str4;
    delete[] mbstr;
  }
  {
    arg5 = (unsigned int)jarg5;  
  }
  {
    arg6 = (unsigned int)jarg6;  
  }
  {
    arg7 = (unsigned int)jarg7;  
  }
  {
    arg8 = (unsigned int)jarg8;  
  }
  result = (SBMLError *)new SBMLError(arg1,arg2,arg3,(std::string const &)*arg4,arg5,arg6,arg7,arg8);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBMLError__SWIG_1(long long jarg1, long long jarg2, long long jarg3, wchar_t* jarg4, long long jarg5, long long jarg6, long long jarg7) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  unsigned int arg3 ;
  std::string *arg4 = 0 ;
  unsigned int arg5 ;
  unsigned int arg6 ;
  unsigned int arg7 ;
  std::string arg_str4 ;
  SBMLError *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  {
    arg3 = (unsigned int)jarg3;  
  }
  {
    char*  mbstr = convertUnicodeToUTF8(jarg4);
    if (!mbstr) return 0;
    
    arg_str4.assign(mbstr);
    arg4 = &arg_str4;
    delete[] mbstr;
  }
  {
    arg5 = (unsigned int)jarg5;  
  }
  {
    arg6 = (unsigned int)jarg6;  
  }
  {
    arg7 = (unsigned int)jarg7;  
  }
  result = (SBMLError *)new SBMLError(arg1,arg2,arg3,(std::string const &)*arg4,arg5,arg6,arg7);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBMLError__SWIG_2(long long jarg1, long long jarg2, long long jarg3, wchar_t* jarg4, long long jarg5, long long jarg6) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  unsigned int arg3 ;
  std::string *arg4 = 0 ;
  unsigned int arg5 ;
  unsigned int arg6 ;
  std::string arg_str4 ;
  SBMLError *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  {
    arg3 = (unsigned int)jarg3;  
  }
  {
    char*  mbstr = convertUnicodeToUTF8(jarg4);
    if (!mbstr) return 0;
    
    arg_str4.assign(mbstr);
    arg4 = &arg_str4;
    delete[] mbstr;
  }
  {
    arg5 = (unsigned int)jarg5;  
  }
  {
    arg6 = (unsigned int)jarg6;  
  }
  result = (SBMLError *)new SBMLError(arg1,arg2,arg3,(std::string const &)*arg4,arg5,arg6);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBMLError__SWIG_3(long long jarg1, long long jarg2, long long jarg3, wchar_t* jarg4, long long jarg5) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  unsigned int arg3 ;
  std::string *arg4 = 0 ;
  unsigned int arg5 ;
  std::string arg_str4 ;
  SBMLError *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  {
    arg3 = (unsigned int)jarg3;  
  }
  {
    char*  mbstr = convertUnicodeToUTF8(jarg4);
    if (!mbstr) return 0;
    
    arg_str4.assign(mbstr);
    arg4 = &arg_str4;
    delete[] mbstr;
  }
  {
    arg5 = (unsigned int)jarg5;  
  }
  result = (SBMLError *)new SBMLError(arg1,arg2,arg3,(std::string const &)*arg4,arg5);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBMLError__SWIG_4(long long jarg1, long long jarg2, long long jarg3, wchar_t* jarg4) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  unsigned int arg3 ;
  std::string *arg4 = 0 ;
  std::string arg_str4 ;
  SBMLError *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  {
    arg3 = (unsigned int)jarg3;  
  }
  {
    char*  mbstr = convertUnicodeToUTF8(jarg4);
    if (!mbstr) return 0;
    
    arg_str4.assign(mbstr);
    arg4 = &arg_str4;
    delete[] mbstr;
  }
  result = (SBMLError *)new SBMLError(arg1,arg2,arg3,(std::string const &)*arg4);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBMLError__SWIG_5(long long jarg1, long long jarg2, long long jarg3) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  unsigned int arg3 ;
  SBMLError *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  {
    arg3 = (unsigned int)jarg3;  
  }
  result = (SBMLError *)new SBMLError(arg1,arg2,arg3);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBMLError__SWIG_6(long long jarg1, long long jarg2) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  SBMLError *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (SBMLError *)new SBMLError(arg1,arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBMLError__SWIG_7(long long jarg1) {
  void * jresult ;
  unsigned int arg1 ;
  SBMLError *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  result = (SBMLError *)new SBMLError(arg1);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBMLError__SWIG_8() {
  void * jresult ;
  SBMLError *result = 0 ;
  
  result = (SBMLError *)new SBMLError();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBMLError__SWIG_9(void * jarg1) {
  void * jresult ;
  SBMLError *arg1 = 0 ;
  SBMLError *result = 0 ;
  
  arg1 = (SBMLError *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "SBMLError const & type is null", 0);
    return 0;
  } 
  result = (SBMLError *)new SBMLError((SBMLError const &)*arg1);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBMLError(void * jarg1) {
  SBMLError *arg1 = (SBMLError *) 0 ;
  
  arg1 = (SBMLError *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_CVTerm__SWIG_0(int jarg1) {
  void * jresult ;
  QualifierType_t arg1 ;
  CVTerm *result = 0 ;
  
  arg1 = (QualifierType_t)jarg1; 
  result = (CVTerm *)new CVTerm(arg1);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_CVTerm__SWIG_1() {
  void * jresult ;
  CVTerm *result = 0 ;
  
  result = (CVTerm *)new CVTerm();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_CVTerm__SWIG_2(void * jarg1) {
  void * jresult ;
  XMLNode arg1 ;
  XMLNode const *argp1 ;
  CVTerm *result = 0 ;
  
  argp1 = (XMLNode *)jarg1; 
  if (!argp1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null XMLNode const", 0);
    return 0;
  }
  arg1 = *argp1; 
  result = (CVTerm *)new CVTerm(arg1);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_CVTerm(void * jarg1) {
  CVTerm *arg1 = (CVTerm *) 0 ;
  
  arg1 = (CVTerm *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_CVTerm__SWIG_3(void * jarg1) {
  void * jresult ;
  CVTerm *arg1 = 0 ;
  CVTerm *result = 0 ;
  
  arg1 = (CVTerm *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "CVTerm const & type is null", 0);
    return 0;
  } 
  result = (CVTerm *)new CVTerm((CVTerm const &)*arg1);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_CVTerm_clone(void * jarg1) {
  void * jresult ;
  CVTerm *arg1 = (CVTerm *) 0 ;
  CVTerm *result = 0 ;
  
  arg1 = (CVTerm *)jarg1; 
  result = (CVTerm *)((CVTerm const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_CVTerm_getQualifierType(void * jarg1) {
  int jresult ;
  CVTerm *arg1 = (CVTerm *) 0 ;
  QualifierType_t result;
  
  arg1 = (CVTerm *)jarg1; 
  result = (QualifierType_t)(arg1)->getQualifierType();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_CVTerm_getModelQualifierType(void * jarg1) {
  int jresult ;
  CVTerm *arg1 = (CVTerm *) 0 ;
  ModelQualifierType_t result;
  
  arg1 = (CVTerm *)jarg1; 
  result = (ModelQualifierType_t)(arg1)->getModelQualifierType();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_CVTerm_getBiologicalQualifierType(void * jarg1) {
  int jresult ;
  CVTerm *arg1 = (CVTerm *) 0 ;
  BiolQualifierType_t result;
  
  arg1 = (CVTerm *)jarg1; 
  result = (BiolQualifierType_t)(arg1)->getBiologicalQualifierType();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_CVTerm_getResources__SWIG_0(void * jarg1) {
  void * jresult ;
  CVTerm *arg1 = (CVTerm *) 0 ;
  XMLAttributes *result = 0 ;
  
  arg1 = (CVTerm *)jarg1; 
  result = (XMLAttributes *)(arg1)->getResources();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_CVTerm_getNumResources(void * jarg1) {
  unsigned int jresult ;
  CVTerm *arg1 = (CVTerm *) 0 ;
  unsigned int result;
  
  arg1 = (CVTerm *)jarg1; 
  result = (unsigned int)(arg1)->getNumResources();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_CVTerm_getResourceURI(void * jarg1, long long jarg2) {
  wchar_t* jresult ;
  CVTerm *arg1 = (CVTerm *) 0 ;
  unsigned int arg2 ;
  std::string result;
  
  arg1 = (CVTerm *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (arg1)->getResourceURI(arg2);
  {
    jresult = convertUTF8ToUnicode( (&result)->c_str() );
    wchar_t* unistr = convertUTF8ToUnicode( (&result)->c_str() );
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_CVTerm_setQualifierType(void * jarg1, int jarg2) {
  int jresult ;
  CVTerm *arg1 = (CVTerm *) 0 ;
  QualifierType_t arg2 ;
  int result;
  
  arg1 = (CVTerm *)jarg1; 
  arg2 = (QualifierType_t)jarg2; 
  result = (int)(arg1)->setQualifierType(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_CVTerm_setModelQualifierType(void * jarg1, int jarg2) {
  int jresult ;
  CVTerm *arg1 = (CVTerm *) 0 ;
  ModelQualifierType_t arg2 ;
  int result;
  
  arg1 = (CVTerm *)jarg1; 
  arg2 = (ModelQualifierType_t)jarg2; 
  result = (int)(arg1)->setModelQualifierType(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_CVTerm_setBiologicalQualifierType(void * jarg1, int jarg2) {
  int jresult ;
  CVTerm *arg1 = (CVTerm *) 0 ;
  BiolQualifierType_t arg2 ;
  int result;
  
  arg1 = (CVTerm *)jarg1; 
  arg2 = (BiolQualifierType_t)jarg2; 
  result = (int)(arg1)->setBiologicalQualifierType(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_CVTerm_addResource(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  CVTerm *arg1 = (CVTerm *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (CVTerm *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->addResource((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_CVTerm_removeResource(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  CVTerm *arg1 = (CVTerm *) 0 ;
  std::string arg2 ;
  int result;
  
  arg1 = (CVTerm *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    (&arg2)->assign(mbstr);
    delete[] mbstr;
  }
  result = (int)(arg1)->removeResource(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_CVTerm_hasRequiredAttributes(void * jarg1) {
  unsigned int jresult ;
  CVTerm *arg1 = (CVTerm *) 0 ;
  bool result;
  
  arg1 = (CVTerm *)jarg1; 
  result = (bool)(arg1)->hasRequiredAttributes();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Date__SWIG_0(long long jarg1, long long jarg2, long long jarg3, long long jarg4, long long jarg5, long long jarg6, long long jarg7, long long jarg8, long long jarg9) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  unsigned int arg3 ;
  unsigned int arg4 ;
  unsigned int arg5 ;
  unsigned int arg6 ;
  unsigned int arg7 ;
  unsigned int arg8 ;
  unsigned int arg9 ;
  Date *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  {
    arg3 = (unsigned int)jarg3;  
  }
  {
    arg4 = (unsigned int)jarg4;  
  }
  {
    arg5 = (unsigned int)jarg5;  
  }
  {
    arg6 = (unsigned int)jarg6;  
  }
  {
    arg7 = (unsigned int)jarg7;  
  }
  {
    arg8 = (unsigned int)jarg8;  
  }
  {
    arg9 = (unsigned int)jarg9;  
  }
  result = (Date *)new Date(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Date__SWIG_1(long long jarg1, long long jarg2, long long jarg3, long long jarg4, long long jarg5, long long jarg6, long long jarg7, long long jarg8) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  unsigned int arg3 ;
  unsigned int arg4 ;
  unsigned int arg5 ;
  unsigned int arg6 ;
  unsigned int arg7 ;
  unsigned int arg8 ;
  Date *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  {
    arg3 = (unsigned int)jarg3;  
  }
  {
    arg4 = (unsigned int)jarg4;  
  }
  {
    arg5 = (unsigned int)jarg5;  
  }
  {
    arg6 = (unsigned int)jarg6;  
  }
  {
    arg7 = (unsigned int)jarg7;  
  }
  {
    arg8 = (unsigned int)jarg8;  
  }
  result = (Date *)new Date(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Date__SWIG_2(long long jarg1, long long jarg2, long long jarg3, long long jarg4, long long jarg5, long long jarg6, long long jarg7) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  unsigned int arg3 ;
  unsigned int arg4 ;
  unsigned int arg5 ;
  unsigned int arg6 ;
  unsigned int arg7 ;
  Date *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  {
    arg3 = (unsigned int)jarg3;  
  }
  {
    arg4 = (unsigned int)jarg4;  
  }
  {
    arg5 = (unsigned int)jarg5;  
  }
  {
    arg6 = (unsigned int)jarg6;  
  }
  {
    arg7 = (unsigned int)jarg7;  
  }
  result = (Date *)new Date(arg1,arg2,arg3,arg4,arg5,arg6,arg7);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Date__SWIG_3(long long jarg1, long long jarg2, long long jarg3, long long jarg4, long long jarg5, long long jarg6) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  unsigned int arg3 ;
  unsigned int arg4 ;
  unsigned int arg5 ;
  unsigned int arg6 ;
  Date *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  {
    arg3 = (unsigned int)jarg3;  
  }
  {
    arg4 = (unsigned int)jarg4;  
  }
  {
    arg5 = (unsigned int)jarg5;  
  }
  {
    arg6 = (unsigned int)jarg6;  
  }
  result = (Date *)new Date(arg1,arg2,arg3,arg4,arg5,arg6);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Date__SWIG_4(long long jarg1, long long jarg2, long long jarg3, long long jarg4, long long jarg5) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  unsigned int arg3 ;
  unsigned int arg4 ;
  unsigned int arg5 ;
  Date *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  {
    arg3 = (unsigned int)jarg3;  
  }
  {
    arg4 = (unsigned int)jarg4;  
  }
  {
    arg5 = (unsigned int)jarg5;  
  }
  result = (Date *)new Date(arg1,arg2,arg3,arg4,arg5);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Date__SWIG_5(long long jarg1, long long jarg2, long long jarg3, long long jarg4) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  unsigned int arg3 ;
  unsigned int arg4 ;
  Date *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  {
    arg3 = (unsigned int)jarg3;  
  }
  {
    arg4 = (unsigned int)jarg4;  
  }
  result = (Date *)new Date(arg1,arg2,arg3,arg4);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Date__SWIG_6(long long jarg1, long long jarg2, long long jarg3) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  unsigned int arg3 ;
  Date *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  {
    arg3 = (unsigned int)jarg3;  
  }
  result = (Date *)new Date(arg1,arg2,arg3);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Date__SWIG_7(long long jarg1, long long jarg2) {
  void * jresult ;
  unsigned int arg1 ;
  unsigned int arg2 ;
  Date *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (Date *)new Date(arg1,arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Date__SWIG_8(long long jarg1) {
  void * jresult ;
  unsigned int arg1 ;
  Date *result = 0 ;
  
  {
    arg1 = (unsigned int)jarg1;  
  }
  result = (Date *)new Date(arg1);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Date__SWIG_9() {
  void * jresult ;
  Date *result = 0 ;
  
  result = (Date *)new Date();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Date__SWIG_10(wchar_t* jarg1) {
  void * jresult ;
  std::string *arg1 = 0 ;
  std::string arg_str1 ;
  Date *result = 0 ;
  
  {
    char*  mbstr = convertUnicodeToUTF8(jarg1);
    if (!mbstr) return 0;
    
    arg_str1.assign(mbstr);
    arg1 = &arg_str1;
    delete[] mbstr;
  }
  result = (Date *)new Date((std::string const &)*arg1);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_Date(void * jarg1) {
  Date *arg1 = (Date *) 0 ;
  
  arg1 = (Date *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Date__SWIG_11(void * jarg1) {
  void * jresult ;
  Date *arg1 = 0 ;
  Date *result = 0 ;
  
  arg1 = (Date *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Date const & type is null", 0);
    return 0;
  } 
  result = (Date *)new Date((Date const &)*arg1);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Date_clone(void * jarg1) {
  void * jresult ;
  Date *arg1 = (Date *) 0 ;
  Date *result = 0 ;
  
  arg1 = (Date *)jarg1; 
  result = (Date *)((Date const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Date_getYear(void * jarg1) {
  unsigned int jresult ;
  Date *arg1 = (Date *) 0 ;
  unsigned int result;
  
  arg1 = (Date *)jarg1; 
  result = (unsigned int)(arg1)->getYear();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Date_getMonth(void * jarg1) {
  unsigned int jresult ;
  Date *arg1 = (Date *) 0 ;
  unsigned int result;
  
  arg1 = (Date *)jarg1; 
  result = (unsigned int)(arg1)->getMonth();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Date_getDay(void * jarg1) {
  unsigned int jresult ;
  Date *arg1 = (Date *) 0 ;
  unsigned int result;
  
  arg1 = (Date *)jarg1; 
  result = (unsigned int)(arg1)->getDay();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Date_getHour(void * jarg1) {
  unsigned int jresult ;
  Date *arg1 = (Date *) 0 ;
  unsigned int result;
  
  arg1 = (Date *)jarg1; 
  result = (unsigned int)(arg1)->getHour();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Date_getMinute(void * jarg1) {
  unsigned int jresult ;
  Date *arg1 = (Date *) 0 ;
  unsigned int result;
  
  arg1 = (Date *)jarg1; 
  result = (unsigned int)(arg1)->getMinute();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Date_getSecond(void * jarg1) {
  unsigned int jresult ;
  Date *arg1 = (Date *) 0 ;
  unsigned int result;
  
  arg1 = (Date *)jarg1; 
  result = (unsigned int)(arg1)->getSecond();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Date_getSignOffset(void * jarg1) {
  unsigned int jresult ;
  Date *arg1 = (Date *) 0 ;
  unsigned int result;
  
  arg1 = (Date *)jarg1; 
  result = (unsigned int)(arg1)->getSignOffset();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Date_getHoursOffset(void * jarg1) {
  unsigned int jresult ;
  Date *arg1 = (Date *) 0 ;
  unsigned int result;
  
  arg1 = (Date *)jarg1; 
  result = (unsigned int)(arg1)->getHoursOffset();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Date_getMinutesOffset(void * jarg1) {
  unsigned int jresult ;
  Date *arg1 = (Date *) 0 ;
  unsigned int result;
  
  arg1 = (Date *)jarg1; 
  result = (unsigned int)(arg1)->getMinutesOffset();
  jresult = result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_Date_getDateAsString(void * jarg1) {
  wchar_t* jresult ;
  Date *arg1 = (Date *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (Date *)jarg1; 
  result = (std::string *) &(arg1)->getDateAsString();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Date_setYear(void * jarg1, long long jarg2) {
  int jresult ;
  Date *arg1 = (Date *) 0 ;
  unsigned int arg2 ;
  int result;
  
  arg1 = (Date *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (int)(arg1)->setYear(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Date_setMonth(void * jarg1, long long jarg2) {
  int jresult ;
  Date *arg1 = (Date *) 0 ;
  unsigned int arg2 ;
  int result;
  
  arg1 = (Date *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (int)(arg1)->setMonth(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Date_setDay(void * jarg1, long long jarg2) {
  int jresult ;
  Date *arg1 = (Date *) 0 ;
  unsigned int arg2 ;
  int result;
  
  arg1 = (Date *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (int)(arg1)->setDay(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Date_setHour(void * jarg1, long long jarg2) {
  int jresult ;
  Date *arg1 = (Date *) 0 ;
  unsigned int arg2 ;
  int result;
  
  arg1 = (Date *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (int)(arg1)->setHour(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Date_setMinute(void * jarg1, long long jarg2) {
  int jresult ;
  Date *arg1 = (Date *) 0 ;
  unsigned int arg2 ;
  int result;
  
  arg1 = (Date *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (int)(arg1)->setMinute(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Date_setSecond(void * jarg1, long long jarg2) {
  int jresult ;
  Date *arg1 = (Date *) 0 ;
  unsigned int arg2 ;
  int result;
  
  arg1 = (Date *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (int)(arg1)->setSecond(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Date_setSignOffset(void * jarg1, long long jarg2) {
  int jresult ;
  Date *arg1 = (Date *) 0 ;
  unsigned int arg2 ;
  int result;
  
  arg1 = (Date *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (int)(arg1)->setSignOffset(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Date_setHoursOffset(void * jarg1, long long jarg2) {
  int jresult ;
  Date *arg1 = (Date *) 0 ;
  unsigned int arg2 ;
  int result;
  
  arg1 = (Date *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (int)(arg1)->setHoursOffset(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Date_setMinutesOffset(void * jarg1, long long jarg2) {
  int jresult ;
  Date *arg1 = (Date *) 0 ;
  unsigned int arg2 ;
  int result;
  
  arg1 = (Date *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (int)(arg1)->setMinutesOffset(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Date_setDateAsString(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  Date *arg1 = (Date *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (Date *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setDateAsString((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Date_representsValidDate(void * jarg1) {
  unsigned int jresult ;
  Date *arg1 = (Date *) 0 ;
  bool result;
  
  arg1 = (Date *)jarg1; 
  result = (bool)(arg1)->representsValidDate();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_ModelCreator__SWIG_0() {
  void * jresult ;
  ModelCreator *result = 0 ;
  
  result = (ModelCreator *)new ModelCreator();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_ModelCreator__SWIG_1(void * jarg1) {
  void * jresult ;
  XMLNode arg1 ;
  XMLNode const *argp1 ;
  ModelCreator *result = 0 ;
  
  argp1 = (XMLNode *)jarg1; 
  if (!argp1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null XMLNode const", 0);
    return 0;
  }
  arg1 = *argp1; 
  result = (ModelCreator *)new ModelCreator(arg1);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_ModelCreator(void * jarg1) {
  ModelCreator *arg1 = (ModelCreator *) 0 ;
  
  arg1 = (ModelCreator *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_ModelCreator__SWIG_2(void * jarg1) {
  void * jresult ;
  ModelCreator *arg1 = 0 ;
  ModelCreator *result = 0 ;
  
  arg1 = (ModelCreator *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "ModelCreator const & type is null", 0);
    return 0;
  } 
  result = (ModelCreator *)new ModelCreator((ModelCreator const &)*arg1);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ModelCreator_clone(void * jarg1) {
  void * jresult ;
  ModelCreator *arg1 = (ModelCreator *) 0 ;
  ModelCreator *result = 0 ;
  
  arg1 = (ModelCreator *)jarg1; 
  result = (ModelCreator *)((ModelCreator const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_ModelCreator_getFamilyName(void * jarg1) {
  wchar_t* jresult ;
  ModelCreator *arg1 = (ModelCreator *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (ModelCreator *)jarg1; 
  result = (std::string *) &((ModelCreator const *)arg1)->getFamilyName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_ModelCreator_getGivenName(void * jarg1) {
  wchar_t* jresult ;
  ModelCreator *arg1 = (ModelCreator *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (ModelCreator *)jarg1; 
  result = (std::string *) &((ModelCreator const *)arg1)->getGivenName();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_ModelCreator_getEmail(void * jarg1) {
  wchar_t* jresult ;
  ModelCreator *arg1 = (ModelCreator *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (ModelCreator *)jarg1; 
  result = (std::string *) &((ModelCreator const *)arg1)->getEmail();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_ModelCreator_getOrganization(void * jarg1) {
  wchar_t* jresult ;
  ModelCreator *arg1 = (ModelCreator *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (ModelCreator *)jarg1; 
  result = (std::string *) &((ModelCreator const *)arg1)->getOrganization();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT wchar_t* SWIGSTDCALL CSharp_ModelCreator_getOrganisation(void * jarg1) {
  wchar_t* jresult ;
  ModelCreator *arg1 = (ModelCreator *) 0 ;
  std::string *result = 0 ;
  
  arg1 = (ModelCreator *)jarg1; 
  result = (std::string *) &((ModelCreator const *)arg1)->getOrganisation();
  {
    jresult = convertUTF8ToUnicode((result)->c_str());
    wchar_t* unistr = convertUTF8ToUnicode((result)->c_str());
    jresult = (wchar_t*) SWIG_csharp_wstring_callback((const wchar_t*)unistr);
    delete[] unistr;
  }
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ModelCreator_isSetFamilyName(void * jarg1) {
  unsigned int jresult ;
  ModelCreator *arg1 = (ModelCreator *) 0 ;
  bool result;
  
  arg1 = (ModelCreator *)jarg1; 
  result = (bool)(arg1)->isSetFamilyName();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ModelCreator_isSetGivenName(void * jarg1) {
  unsigned int jresult ;
  ModelCreator *arg1 = (ModelCreator *) 0 ;
  bool result;
  
  arg1 = (ModelCreator *)jarg1; 
  result = (bool)(arg1)->isSetGivenName();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ModelCreator_isSetEmail(void * jarg1) {
  unsigned int jresult ;
  ModelCreator *arg1 = (ModelCreator *) 0 ;
  bool result;
  
  arg1 = (ModelCreator *)jarg1; 
  result = (bool)(arg1)->isSetEmail();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ModelCreator_isSetOrganization(void * jarg1) {
  unsigned int jresult ;
  ModelCreator *arg1 = (ModelCreator *) 0 ;
  bool result;
  
  arg1 = (ModelCreator *)jarg1; 
  result = (bool)(arg1)->isSetOrganization();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ModelCreator_isSetOrganisation(void * jarg1) {
  unsigned int jresult ;
  ModelCreator *arg1 = (ModelCreator *) 0 ;
  bool result;
  
  arg1 = (ModelCreator *)jarg1; 
  result = (bool)(arg1)->isSetOrganisation();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ModelCreator_setFamilyName(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  ModelCreator *arg1 = (ModelCreator *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (ModelCreator *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setFamilyName((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ModelCreator_setGivenName(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  ModelCreator *arg1 = (ModelCreator *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (ModelCreator *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setGivenName((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ModelCreator_setEmail(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  ModelCreator *arg1 = (ModelCreator *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (ModelCreator *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setEmail((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ModelCreator_setOrganization(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  ModelCreator *arg1 = (ModelCreator *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (ModelCreator *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setOrganization((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ModelCreator_setOrganisation(void * jarg1, wchar_t* jarg2) {
  int jresult ;
  ModelCreator *arg1 = (ModelCreator *) 0 ;
  std::string *arg2 = 0 ;
  std::string arg_str2 ;
  int result;
  
  arg1 = (ModelCreator *)jarg1; 
  {
    char*  mbstr = convertUnicodeToUTF8(jarg2);
    if (!mbstr) return 0;
    
    arg_str2.assign(mbstr);
    arg2 = &arg_str2;
    delete[] mbstr;
  }
  result = (int)(arg1)->setOrganisation((std::string const &)*arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ModelCreator_unsetFamilyName(void * jarg1) {
  int jresult ;
  ModelCreator *arg1 = (ModelCreator *) 0 ;
  int result;
  
  arg1 = (ModelCreator *)jarg1; 
  result = (int)(arg1)->unsetFamilyName();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ModelCreator_unsetGivenName(void * jarg1) {
  int jresult ;
  ModelCreator *arg1 = (ModelCreator *) 0 ;
  int result;
  
  arg1 = (ModelCreator *)jarg1; 
  result = (int)(arg1)->unsetGivenName();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ModelCreator_unsetEmail(void * jarg1) {
  int jresult ;
  ModelCreator *arg1 = (ModelCreator *) 0 ;
  int result;
  
  arg1 = (ModelCreator *)jarg1; 
  result = (int)(arg1)->unsetEmail();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ModelCreator_unsetOrganization(void * jarg1) {
  int jresult ;
  ModelCreator *arg1 = (ModelCreator *) 0 ;
  int result;
  
  arg1 = (ModelCreator *)jarg1; 
  result = (int)(arg1)->unsetOrganization();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ModelCreator_unsetOrganisation(void * jarg1) {
  int jresult ;
  ModelCreator *arg1 = (ModelCreator *) 0 ;
  int result;
  
  arg1 = (ModelCreator *)jarg1; 
  result = (int)(arg1)->unsetOrganisation();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ModelCreator_hasRequiredAttributes(void * jarg1) {
  unsigned int jresult ;
  ModelCreator *arg1 = (ModelCreator *) 0 ;
  bool result;
  
  arg1 = (ModelCreator *)jarg1; 
  result = (bool)(arg1)->hasRequiredAttributes();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_ModelHistory__SWIG_0() {
  void * jresult ;
  ModelHistory *result = 0 ;
  
  result = (ModelHistory *)new ModelHistory();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_ModelHistory(void * jarg1) {
  ModelHistory *arg1 = (ModelHistory *) 0 ;
  
  arg1 = (ModelHistory *)jarg1; 
  delete arg1;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_ModelHistory__SWIG_1(void * jarg1) {
  void * jresult ;
  ModelHistory *arg1 = 0 ;
  ModelHistory *result = 0 ;
  
  arg1 = (ModelHistory *)jarg1;
  if (!arg1) {
    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "ModelHistory const & type is null", 0);
    return 0;
  } 
  result = (ModelHistory *)new ModelHistory((ModelHistory const &)*arg1);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ModelHistory_clone(void * jarg1) {
  void * jresult ;
  ModelHistory *arg1 = (ModelHistory *) 0 ;
  ModelHistory *result = 0 ;
  
  arg1 = (ModelHistory *)jarg1; 
  result = (ModelHistory *)((ModelHistory const *)arg1)->clone();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ModelHistory_getCreatedDate(void * jarg1) {
  void * jresult ;
  ModelHistory *arg1 = (ModelHistory *) 0 ;
  Date *result = 0 ;
  
  arg1 = (ModelHistory *)jarg1; 
  result = (Date *)(arg1)->getCreatedDate();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ModelHistory_getModifiedDate__SWIG_0(void * jarg1) {
  void * jresult ;
  ModelHistory *arg1 = (ModelHistory *) 0 ;
  Date *result = 0 ;
  
  arg1 = (ModelHistory *)jarg1; 
  result = (Date *)(arg1)->getModifiedDate();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ModelHistory_isSetCreatedDate(void * jarg1) {
  unsigned int jresult ;
  ModelHistory *arg1 = (ModelHistory *) 0 ;
  bool result;
  
  arg1 = (ModelHistory *)jarg1; 
  result = (bool)(arg1)->isSetCreatedDate();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ModelHistory_isSetModifiedDate(void * jarg1) {
  unsigned int jresult ;
  ModelHistory *arg1 = (ModelHistory *) 0 ;
  bool result;
  
  arg1 = (ModelHistory *)jarg1; 
  result = (bool)(arg1)->isSetModifiedDate();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ModelHistory_setCreatedDate(void * jarg1, void * jarg2) {
  int jresult ;
  ModelHistory *arg1 = (ModelHistory *) 0 ;
  Date *arg2 = (Date *) 0 ;
  int result;
  
  arg1 = (ModelHistory *)jarg1; 
  arg2 = (Date *)jarg2; 
  result = (int)(arg1)->setCreatedDate(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ModelHistory_setModifiedDate(void * jarg1, void * jarg2) {
  int jresult ;
  ModelHistory *arg1 = (ModelHistory *) 0 ;
  Date *arg2 = (Date *) 0 ;
  int result;
  
  arg1 = (ModelHistory *)jarg1; 
  arg2 = (Date *)jarg2; 
  result = (int)(arg1)->setModifiedDate(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ModelHistory_addModifiedDate(void * jarg1, void * jarg2) {
  int jresult ;
  ModelHistory *arg1 = (ModelHistory *) 0 ;
  Date *arg2 = (Date *) 0 ;
  int result;
  
  arg1 = (ModelHistory *)jarg1; 
  arg2 = (Date *)jarg2; 
  result = (int)(arg1)->addModifiedDate(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ModelHistory_getListModifiedDates(void * jarg1) {
  void * jresult ;
  ModelHistory *arg1 = (ModelHistory *) 0 ;
  List *result = 0 ;
  
  arg1 = (ModelHistory *)jarg1; 
  result = (List *)(arg1)->getListModifiedDates();
  {
    ListWrapper<Date> *listw = (result != 0) ? new ListWrapper<Date>(result) : 0;  
    jresult = (void*)listw;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ModelHistory_getModifiedDate__SWIG_1(void * jarg1, long long jarg2) {
  void * jresult ;
  ModelHistory *arg1 = (ModelHistory *) 0 ;
  unsigned int arg2 ;
  Date *result = 0 ;
  
  arg1 = (ModelHistory *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (Date *)(arg1)->getModifiedDate(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ModelHistory_getNumModifiedDates(void * jarg1) {
  unsigned int jresult ;
  ModelHistory *arg1 = (ModelHistory *) 0 ;
  unsigned int result;
  
  arg1 = (ModelHistory *)jarg1; 
  result = (unsigned int)(arg1)->getNumModifiedDates();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_ModelHistory_addCreator(void * jarg1, void * jarg2) {
  int jresult ;
  ModelHistory *arg1 = (ModelHistory *) 0 ;
  ModelCreator *arg2 = (ModelCreator *) 0 ;
  int result;
  
  arg1 = (ModelHistory *)jarg1; 
  arg2 = (ModelCreator *)jarg2; 
  result = (int)(arg1)->addCreator(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ModelHistory_getListCreators(void * jarg1) {
  void * jresult ;
  ModelHistory *arg1 = (ModelHistory *) 0 ;
  List *result = 0 ;
  
  arg1 = (ModelHistory *)jarg1; 
  result = (List *)(arg1)->getListCreators();
  {
    ListWrapper<ModelCreator> *listw = (result != 0) ? new ListWrapper<ModelCreator>(result) : 0;  
    jresult = (void*)listw;
  }
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_ModelHistory_getCreator(void * jarg1, long long jarg2) {
  void * jresult ;
  ModelHistory *arg1 = (ModelHistory *) 0 ;
  unsigned int arg2 ;
  ModelCreator *result = 0 ;
  
  arg1 = (ModelHistory *)jarg1; 
  {
    arg2 = (unsigned int)jarg2;  
  }
  result = (ModelCreator *)(arg1)->getCreator(arg2);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ModelHistory_getNumCreators(void * jarg1) {
  unsigned int jresult ;
  ModelHistory *arg1 = (ModelHistory *) 0 ;
  unsigned int result;
  
  arg1 = (ModelHistory *)jarg1; 
  result = (unsigned int)(arg1)->getNumCreators();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_ModelHistory_hasRequiredAttributes(void * jarg1) {
  unsigned int jresult ;
  ModelHistory *arg1 = (ModelHistory *) 0 ;
  bool result;
  
  arg1 = (ModelHistory *)jarg1; 
  result = (bool)(arg1)->hasRequiredAttributes();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_RDFAnnotationParser_parseRDFAnnotation__SWIG_0(void * jarg1) {
  void * jresult ;
  XMLNode *arg1 = (XMLNode *) 0 ;
  ModelHistory *result = 0 ;
  
  arg1 = (XMLNode *)jarg1; 
  result = (ModelHistory *)RDFAnnotationParser::parseRDFAnnotation((XMLNode const *)arg1);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_RDFAnnotationParser_createAnnotation() {
  void * jresult ;
  XMLNode *result = 0 ;
  
  result = (XMLNode *)RDFAnnotationParser::createAnnotation();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_RDFAnnotationParser_createRDFAnnotation() {
  void * jresult ;
  XMLNode *result = 0 ;
  
  result = (XMLNode *)RDFAnnotationParser::createRDFAnnotation();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_RDFAnnotationParser_deleteRDFAnnotation(void * jarg1) {
  void * jresult ;
  XMLNode *arg1 = (XMLNode *) 0 ;
  XMLNode *result = 0 ;
  
  arg1 = (XMLNode *)jarg1; 
  result = (XMLNode *)RDFAnnotationParser::deleteRDFAnnotation((XMLNode const *)arg1);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_RDFAnnotationParser_createRDFDescription(void * jarg1) {
  void * jresult ;
  SBase *arg1 = (SBase *) 0 ;
  XMLNode *result = 0 ;
  
  arg1 = (SBase *)jarg1; 
  result = (XMLNode *)RDFAnnotationParser::createRDFDescription((SBase const *)arg1);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_RDFAnnotationParser_createCVTerms(void * jarg1) {
  void * jresult ;
  SBase *arg1 = (SBase *) 0 ;
  XMLNode *result = 0 ;
  
  arg1 = (SBase *)jarg1; 
  result = (XMLNode *)RDFAnnotationParser::createCVTerms((SBase const *)arg1);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_RDFAnnotationParser_parseCVTerms(void * jarg1) {
  void * jresult ;
  SBase *arg1 = (SBase *) 0 ;
  XMLNode *result = 0 ;
  
  arg1 = (SBase *)jarg1; 
  result = (XMLNode *)RDFAnnotationParser::parseCVTerms((SBase const *)arg1);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_RDFAnnotationParser_parseModelHistory(void * jarg1) {
  void * jresult ;
  SBase *arg1 = (SBase *) 0 ;
  XMLNode *result = 0 ;
  
  arg1 = (SBase *)jarg1; 
  result = (XMLNode *)RDFAnnotationParser::parseModelHistory((SBase const *)arg1);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_RDFAnnotationParser_parseRDFAnnotation__SWIG_1(void * jarg1, void * jarg2) {
  XMLNode *arg1 = (XMLNode *) 0 ;
  ListWrapper< CVTerm > *arg2 = (ListWrapper< CVTerm > *) 0 ;
  
  arg1 = (XMLNode *)jarg1; 
  arg2 = (ListWrapper< CVTerm > *)jarg2; 
  RDFAnnotationParser_parseRDFAnnotation__SWIG_1((XMLNode const *)arg1,arg2);
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_RDFAnnotationParser() {
  void * jresult ;
  RDFAnnotationParser *result = 0 ;
  
  result = (RDFAnnotationParser *)new RDFAnnotationParser();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_RDFAnnotationParser(void * jarg1) {
  RDFAnnotationParser *arg1 = (RDFAnnotationParser *) 0 ;
  
  arg1 = (RDFAnnotationParser *)jarg1; 
  delete arg1;
}


SWIGEXPORT OStream * SWIGSTDCALL CSharp_OFStream_SWIGUpcast(OFStream *jarg1) {
    return (OStream *)jarg1;
}

SWIGEXPORT OStream * SWIGSTDCALL CSharp_OStringStream_SWIGUpcast(OStringStream *jarg1) {
    return (OStream *)jarg1;
}

SWIGEXPORT SBase * SWIGSTDCALL CSharp_ListOf_SWIGUpcast(ListOf *jarg1) {
    return (SBase *)jarg1;
}

SWIGEXPORT SBase * SWIGSTDCALL CSharp_Model_SWIGUpcast(Model *jarg1) {
    return (SBase *)jarg1;
}

SWIGEXPORT SBase * SWIGSTDCALL CSharp_SBMLDocument_SWIGUpcast(SBMLDocument *jarg1) {
    return (SBase *)jarg1;
}

SWIGEXPORT SBase * SWIGSTDCALL CSharp_FunctionDefinition_SWIGUpcast(FunctionDefinition *jarg1) {
    return (SBase *)jarg1;
}

SWIGEXPORT ListOf * SWIGSTDCALL CSharp_ListOfFunctionDefinitions_SWIGUpcast(ListOfFunctionDefinitions *jarg1) {
    return (ListOf *)jarg1;
}

SWIGEXPORT SBase * SWIGSTDCALL CSharp_Unit_SWIGUpcast(Unit *jarg1) {
    return (SBase *)jarg1;
}

SWIGEXPORT ListOf * SWIGSTDCALL CSharp_ListOfUnits_SWIGUpcast(ListOfUnits *jarg1) {
    return (ListOf *)jarg1;
}

SWIGEXPORT SBase * SWIGSTDCALL CSharp_UnitDefinition_SWIGUpcast(UnitDefinition *jarg1) {
    return (SBase *)jarg1;
}

SWIGEXPORT ListOf * SWIGSTDCALL CSharp_ListOfUnitDefinitions_SWIGUpcast(ListOfUnitDefinitions *jarg1) {
    return (ListOf *)jarg1;
}

SWIGEXPORT SBase * SWIGSTDCALL CSharp_CompartmentType_SWIGUpcast(CompartmentType *jarg1) {
    return (SBase *)jarg1;
}

SWIGEXPORT ListOf * SWIGSTDCALL CSharp_ListOfCompartmentTypes_SWIGUpcast(ListOfCompartmentTypes *jarg1) {
    return (ListOf *)jarg1;
}

SWIGEXPORT SBase * SWIGSTDCALL CSharp_SpeciesType_SWIGUpcast(SpeciesType *jarg1) {
    return (SBase *)jarg1;
}

SWIGEXPORT ListOf * SWIGSTDCALL CSharp_ListOfSpeciesTypes_SWIGUpcast(ListOfSpeciesTypes *jarg1) {
    return (ListOf *)jarg1;
}

SWIGEXPORT SBase * SWIGSTDCALL CSharp_Compartment_SWIGUpcast(Compartment *jarg1) {
    return (SBase *)jarg1;
}

SWIGEXPORT ListOf * SWIGSTDCALL CSharp_ListOfCompartments_SWIGUpcast(ListOfCompartments *jarg1) {
    return (ListOf *)jarg1;
}

SWIGEXPORT SBase * SWIGSTDCALL CSharp_Species_SWIGUpcast(Species *jarg1) {
    return (SBase *)jarg1;
}

SWIGEXPORT ListOf * SWIGSTDCALL CSharp_ListOfSpecies_SWIGUpcast(ListOfSpecies *jarg1) {
    return (ListOf *)jarg1;
}

SWIGEXPORT SBase * SWIGSTDCALL CSharp_Parameter_SWIGUpcast(Parameter *jarg1) {
    return (SBase *)jarg1;
}

SWIGEXPORT ListOf * SWIGSTDCALL CSharp_ListOfParameters_SWIGUpcast(ListOfParameters *jarg1) {
    return (ListOf *)jarg1;
}

SWIGEXPORT Parameter * SWIGSTDCALL CSharp_LocalParameter_SWIGUpcast(LocalParameter *jarg1) {
    return (Parameter *)jarg1;
}

SWIGEXPORT ListOfParameters * SWIGSTDCALL CSharp_ListOfLocalParameters_SWIGUpcast(ListOfLocalParameters *jarg1) {
    return (ListOfParameters *)jarg1;
}

SWIGEXPORT SBase * SWIGSTDCALL CSharp_InitialAssignment_SWIGUpcast(InitialAssignment *jarg1) {
    return (SBase *)jarg1;
}

SWIGEXPORT ListOf * SWIGSTDCALL CSharp_ListOfInitialAssignments_SWIGUpcast(ListOfInitialAssignments *jarg1) {
    return (ListOf *)jarg1;
}

SWIGEXPORT SBase * SWIGSTDCALL CSharp_Rule_SWIGUpcast(Rule *jarg1) {
    return (SBase *)jarg1;
}

SWIGEXPORT Rule * SWIGSTDCALL CSharp_AlgebraicRule_SWIGUpcast(AlgebraicRule *jarg1) {
    return (Rule *)jarg1;
}

SWIGEXPORT Rule * SWIGSTDCALL CSharp_AssignmentRule_SWIGUpcast(AssignmentRule *jarg1) {
    return (Rule *)jarg1;
}

SWIGEXPORT Rule * SWIGSTDCALL CSharp_RateRule_SWIGUpcast(RateRule *jarg1) {
    return (Rule *)jarg1;
}

SWIGEXPORT ListOf * SWIGSTDCALL CSharp_ListOfRules_SWIGUpcast(ListOfRules *jarg1) {
    return (ListOf *)jarg1;
}

SWIGEXPORT SBase * SWIGSTDCALL CSharp_Constraint_SWIGUpcast(Constraint *jarg1) {
    return (SBase *)jarg1;
}

SWIGEXPORT ListOf * SWIGSTDCALL CSharp_ListOfConstraints_SWIGUpcast(ListOfConstraints *jarg1) {
    return (ListOf *)jarg1;
}

SWIGEXPORT SBase * SWIGSTDCALL CSharp_Reaction_SWIGUpcast(Reaction *jarg1) {
    return (SBase *)jarg1;
}

SWIGEXPORT ListOf * SWIGSTDCALL CSharp_ListOfReactions_SWIGUpcast(ListOfReactions *jarg1) {
    return (ListOf *)jarg1;
}

SWIGEXPORT SBase * SWIGSTDCALL CSharp_KineticLaw_SWIGUpcast(KineticLaw *jarg1) {
    return (SBase *)jarg1;
}

SWIGEXPORT SBase * SWIGSTDCALL CSharp_SimpleSpeciesReference_SWIGUpcast(SimpleSpeciesReference *jarg1) {
    return (SBase *)jarg1;
}

SWIGEXPORT SimpleSpeciesReference * SWIGSTDCALL CSharp_SpeciesReference_SWIGUpcast(SpeciesReference *jarg1) {
    return (SimpleSpeciesReference *)jarg1;
}

SWIGEXPORT SimpleSpeciesReference * SWIGSTDCALL CSharp_ModifierSpeciesReference_SWIGUpcast(ModifierSpeciesReference *jarg1) {
    return (SimpleSpeciesReference *)jarg1;
}

SWIGEXPORT ListOf * SWIGSTDCALL CSharp_ListOfSpeciesReferences_SWIGUpcast(ListOfSpeciesReferences *jarg1) {
    return (ListOf *)jarg1;
}

SWIGEXPORT SBase * SWIGSTDCALL CSharp_Event_SWIGUpcast(Event *jarg1) {
    return (SBase *)jarg1;
}

SWIGEXPORT ListOf * SWIGSTDCALL CSharp_ListOfEvents_SWIGUpcast(ListOfEvents *jarg1) {
    return (ListOf *)jarg1;
}

SWIGEXPORT SBase * SWIGSTDCALL CSharp_EventAssignment_SWIGUpcast(EventAssignment *jarg1) {
    return (SBase *)jarg1;
}

SWIGEXPORT ListOf * SWIGSTDCALL CSharp_ListOfEventAssignments_SWIGUpcast(ListOfEventAssignments *jarg1) {
    return (ListOf *)jarg1;
}

SWIGEXPORT SBase * SWIGSTDCALL CSharp_Trigger_SWIGUpcast(Trigger *jarg1) {
    return (SBase *)jarg1;
}

SWIGEXPORT SBase * SWIGSTDCALL CSharp_Delay_SWIGUpcast(Delay *jarg1) {
    return (SBase *)jarg1;
}

SWIGEXPORT SBase * SWIGSTDCALL CSharp_Priority_SWIGUpcast(Priority *jarg1) {
    return (SBase *)jarg1;
}

SWIGEXPORT SBase * SWIGSTDCALL CSharp_StoichiometryMath_SWIGUpcast(StoichiometryMath *jarg1) {
    return (SBase *)jarg1;
}

SWIGEXPORT XMLToken * SWIGSTDCALL CSharp_XMLNode_SWIGUpcast(XMLNode *jarg1) {
    return (XMLToken *)jarg1;
}

SWIGEXPORT XMLErrorLog * SWIGSTDCALL CSharp_SBMLErrorLog_SWIGUpcast(SBMLErrorLog *jarg1) {
    return (XMLErrorLog *)jarg1;
}

SWIGEXPORT XMLError * SWIGSTDCALL CSharp_SBMLError_SWIGUpcast(SBMLError *jarg1) {
    return (XMLError *)jarg1;
}

#ifdef __cplusplus
}
#endif

