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


#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_tinyWRAP(
                                                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_tinyWRAP(
                                                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_tinyWRAP(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

/* -----------------------------------------------------------------------------
 * See the LICENSE file for information on copyright, usage and redistribution
 * of SWIG, and the README file for authors - http://www.swig.org/release.html.
 *
 * director.swg
 *
 * This file contains support for director classes so that C# proxy 
 * methods can be called from C++.
 * ----------------------------------------------------------------------------- */

#ifdef __cplusplus

#if defined(DEBUG_DIRECTOR_OWNED)
#include <iostream>
#endif
#include <string>

namespace Swig {
  /* Director base class - not currently used in C# directors */
  class Director {
  };

  /* Base class for director exceptions */
  class DirectorException {
  protected:
    std::string swig_msg;

  public:
    DirectorException(const char* msg) : swig_msg(msg) {
    }
    DirectorException(const std::string &msg) : swig_msg(msg) {
    }
    const std::string& what() const {
      return swig_msg;
    }
    virtual ~DirectorException() {
    }
  };

  /* Pure virtual method exception */
  class DirectorPureVirtualException : public Swig::DirectorException {
  public:
    DirectorPureVirtualException(const char* msg) : DirectorException(std::string("Attempt to invoke pure virtual method ") + msg) {
    }
  };
}

#endif /* __cplusplus */



#include "SipUri.h"
#include "SipMessage.h"
#include "SipEvent.h"
#include "SipSession.h"
#include "PublicationEvent.h"
#include "PublicationSession.h"
#include "RegistrationEvent.h"
#include "RegistrationSession.h"
#include "SubscriptionEvent.h"
#include "SubscriptionSession.h"
#include "SipCallback.h"
#include "SipDebug.h"
#include "SafeObject.h"
#include "SipStack.h"



/* ---------------------------------------------------
 * C++ director class methods
 * --------------------------------------------------- */

#include "tinyWRAP_wrap.h"

SwigDirector_SipCallback::SwigDirector_SipCallback() : SipCallback(), Swig::Director() {
  swig_init_callbacks();
}

SwigDirector_SipCallback::~SwigDirector_SipCallback() {
  
}


int SwigDirector_SipCallback::OnRegistrationChanged(RegistrationEvent const *e) {
  int c_result = SwigValueInit< int >() ;
  int jresult = 0 ;
  void * je = 0 ;
  
  if (!swig_callbackOnRegistrationChanged) {
    return SipCallback::OnRegistrationChanged(e);
  } else {
    je = (void *) e; 
    jresult = (int) swig_callbackOnRegistrationChanged(je);
    c_result = (int)jresult; 
  }
  return c_result;
}

int SwigDirector_SipCallback::OnSubscriptionChanged(SubscriptionEvent const *e) {
  int c_result = SwigValueInit< int >() ;
  int jresult = 0 ;
  void * je = 0 ;
  
  if (!swig_callbackOnSubscriptionChanged) {
    return SipCallback::OnSubscriptionChanged(e);
  } else {
    je = (void *) e; 
    jresult = (int) swig_callbackOnSubscriptionChanged(je);
    c_result = (int)jresult; 
  }
  return c_result;
}

int SwigDirector_SipCallback::OnPublicationChanged(PublicationEvent const *e) {
  int c_result = SwigValueInit< int >() ;
  int jresult = 0 ;
  void * je = 0 ;
  
  if (!swig_callbackOnPublicationChanged) {
    return SipCallback::OnPublicationChanged(e);
  } else {
    je = (void *) e; 
    jresult = (int) swig_callbackOnPublicationChanged(je);
    c_result = (int)jresult; 
  }
  return c_result;
}

void SwigDirector_SipCallback::swig_connect_director(SWIG_Callback0_t callbackOnRegistrationChanged, SWIG_Callback1_t callbackOnSubscriptionChanged, SWIG_Callback2_t callbackOnPublicationChanged) {
  swig_callbackOnRegistrationChanged = callbackOnRegistrationChanged;
  swig_callbackOnSubscriptionChanged = callbackOnSubscriptionChanged;
  swig_callbackOnPublicationChanged = callbackOnPublicationChanged;
}

void SwigDirector_SipCallback::swig_init_callbacks() {
  swig_callbackOnRegistrationChanged = 0;
  swig_callbackOnSubscriptionChanged = 0;
  swig_callbackOnPublicationChanged = 0;
}

SwigDirector_SipDebugCallback::SwigDirector_SipDebugCallback() : SipDebugCallback(), Swig::Director() {
  swig_init_callbacks();
}

SwigDirector_SipDebugCallback::~SwigDirector_SipDebugCallback() {
  
}


int SwigDirector_SipDebugCallback::OnDebugInfo(char const *message) {
  int c_result = SwigValueInit< int >() ;
  int jresult = 0 ;
  char * jmessage = 0 ;
  
  if (!swig_callbackOnDebugInfo) {
    return SipDebugCallback::OnDebugInfo(message);
  } else {
    jmessage = SWIG_csharp_string_callback((const char *)message); 
    jresult = (int) swig_callbackOnDebugInfo(jmessage);
    c_result = (int)jresult; 
  }
  return c_result;
}

int SwigDirector_SipDebugCallback::OnDebugWarn(char const *message) {
  int c_result = SwigValueInit< int >() ;
  int jresult = 0 ;
  char * jmessage = 0 ;
  
  if (!swig_callbackOnDebugWarn) {
    return SipDebugCallback::OnDebugWarn(message);
  } else {
    jmessage = SWIG_csharp_string_callback((const char *)message); 
    jresult = (int) swig_callbackOnDebugWarn(jmessage);
    c_result = (int)jresult; 
  }
  return c_result;
}

int SwigDirector_SipDebugCallback::OnDebugError(char const *message) {
  int c_result = SwigValueInit< int >() ;
  int jresult = 0 ;
  char * jmessage = 0 ;
  
  if (!swig_callbackOnDebugError) {
    return SipDebugCallback::OnDebugError(message);
  } else {
    jmessage = SWIG_csharp_string_callback((const char *)message); 
    jresult = (int) swig_callbackOnDebugError(jmessage);
    c_result = (int)jresult; 
  }
  return c_result;
}

int SwigDirector_SipDebugCallback::OnDebugFatal(char const *message) {
  int c_result = SwigValueInit< int >() ;
  int jresult = 0 ;
  char * jmessage = 0 ;
  
  if (!swig_callbackOnDebugFatal) {
    return SipDebugCallback::OnDebugFatal(message);
  } else {
    jmessage = SWIG_csharp_string_callback((const char *)message); 
    jresult = (int) swig_callbackOnDebugFatal(jmessage);
    c_result = (int)jresult; 
  }
  return c_result;
}

void SwigDirector_SipDebugCallback::swig_connect_director(SWIG_Callback0_t callbackOnDebugInfo, SWIG_Callback1_t callbackOnDebugWarn, SWIG_Callback2_t callbackOnDebugError, SWIG_Callback3_t callbackOnDebugFatal) {
  swig_callbackOnDebugInfo = callbackOnDebugInfo;
  swig_callbackOnDebugWarn = callbackOnDebugWarn;
  swig_callbackOnDebugError = callbackOnDebugError;
  swig_callbackOnDebugFatal = callbackOnDebugFatal;
}

void SwigDirector_SipDebugCallback::swig_init_callbacks() {
  swig_callbackOnDebugInfo = 0;
  swig_callbackOnDebugWarn = 0;
  swig_callbackOnDebugError = 0;
  swig_callbackOnDebugFatal = 0;
}


#ifdef __cplusplus
extern "C" {
#endif

SWIGEXPORT void * SWIGSTDCALL CSharp_new_SipUri(char * jarg1) {
  void * jresult ;
  char *arg1 = (char *) 0 ;
  SipUri *result = 0 ;
  
  arg1 = (char *)jarg1; 
  result = (SipUri *)new SipUri((char const *)arg1);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_SipUri(void * jarg1) {
  SipUri *arg1 = (SipUri *) 0 ;
  
  arg1 = (SipUri *)jarg1; 
  delete arg1;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipUri_isValid__SWIG_0(char * jarg1) {
  unsigned int jresult ;
  char *arg1 = (char *) 0 ;
  bool result;
  
  arg1 = (char *)jarg1; 
  result = (bool)SipUri::isValid((char const *)arg1);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipUri_isValid__SWIG_1(void * jarg1) {
  unsigned int jresult ;
  SipUri *arg1 = (SipUri *) 0 ;
  bool result;
  
  arg1 = (SipUri *)jarg1; 
  result = (bool)(arg1)->isValid();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SipMessage() {
  void * jresult ;
  SipMessage *result = 0 ;
  
  result = (SipMessage *)new SipMessage();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_SipMessage(void * jarg1) {
  SipMessage *arg1 = (SipMessage *) 0 ;
  
  arg1 = (SipMessage *)jarg1; 
  delete arg1;
}


SWIGEXPORT char * SWIGSTDCALL CSharp_SipMessage_getSipHeaderValue__SWIG_0(void * jarg1, char * jarg2, unsigned int jarg3) {
  char * jresult ;
  SipMessage *arg1 = (SipMessage *) 0 ;
  char *arg2 = (char *) 0 ;
  unsigned int arg3 ;
  char *result = 0 ;
  
  arg1 = (SipMessage *)jarg1; 
  arg2 = (char *)jarg2; 
  arg3 = (unsigned int)jarg3; 
  result = (char *)(arg1)->getSipHeaderValue((char const *)arg2,arg3);
  jresult = SWIG_csharp_string_callback((const char *)result); 
  delete [] result;
  return jresult;
}


SWIGEXPORT char * SWIGSTDCALL CSharp_SipMessage_getSipHeaderValue__SWIG_1(void * jarg1, char * jarg2) {
  char * jresult ;
  SipMessage *arg1 = (SipMessage *) 0 ;
  char *arg2 = (char *) 0 ;
  char *result = 0 ;
  
  arg1 = (SipMessage *)jarg1; 
  arg2 = (char *)jarg2; 
  result = (char *)(arg1)->getSipHeaderValue((char const *)arg2);
  jresult = SWIG_csharp_string_callback((const char *)result); 
  delete [] result;
  return jresult;
}


SWIGEXPORT char * SWIGSTDCALL CSharp_SipMessage_getSipHeaderParamValue__SWIG_0(void * jarg1, char * jarg2, char * jarg3, unsigned int jarg4) {
  char * jresult ;
  SipMessage *arg1 = (SipMessage *) 0 ;
  char *arg2 = (char *) 0 ;
  char *arg3 = (char *) 0 ;
  unsigned int arg4 ;
  char *result = 0 ;
  
  arg1 = (SipMessage *)jarg1; 
  arg2 = (char *)jarg2; 
  arg3 = (char *)jarg3; 
  arg4 = (unsigned int)jarg4; 
  result = (char *)(arg1)->getSipHeaderParamValue((char const *)arg2,(char const *)arg3,arg4);
  jresult = SWIG_csharp_string_callback((const char *)result); 
  return jresult;
}


SWIGEXPORT char * SWIGSTDCALL CSharp_SipMessage_getSipHeaderParamValue__SWIG_1(void * jarg1, char * jarg2, char * jarg3) {
  char * jresult ;
  SipMessage *arg1 = (SipMessage *) 0 ;
  char *arg2 = (char *) 0 ;
  char *arg3 = (char *) 0 ;
  char *result = 0 ;
  
  arg1 = (SipMessage *)jarg1; 
  arg2 = (char *)jarg2; 
  arg3 = (char *)jarg3; 
  result = (char *)(arg1)->getSipHeaderParamValue((char const *)arg2,(char const *)arg3);
  jresult = SWIG_csharp_string_callback((const char *)result); 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipMessage_getSipContentLength(void * jarg1) {
  unsigned int jresult ;
  SipMessage *arg1 = (SipMessage *) 0 ;
  unsigned int result;
  
  arg1 = (SipMessage *)jarg1; 
  result = (unsigned int)(arg1)->getSipContentLength();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipMessage_getSipContent(void * jarg1, void * jarg2, unsigned int jarg3) {
  unsigned int jresult ;
  SipMessage *arg1 = (SipMessage *) 0 ;
  void *arg2 = (void *) 0 ;
  unsigned int arg3 ;
  unsigned int result;
  
  arg1 = (SipMessage *)jarg1; 
  arg2 = jarg2; 
  arg3 = (unsigned int)jarg3; 
  result = (unsigned int)(arg1)->getSipContent(arg2,arg3);
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SipEvent() {
  void * jresult ;
  SipEvent *result = 0 ;
  
  result = (SipEvent *)new SipEvent();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_SipEvent(void * jarg1) {
  SipEvent *arg1 = (SipEvent *) 0 ;
  
  arg1 = (SipEvent *)jarg1; 
  delete arg1;
}


SWIGEXPORT short SWIGSTDCALL CSharp_SipEvent_getCode(void * jarg1) {
  short jresult ;
  SipEvent *arg1 = (SipEvent *) 0 ;
  short result;
  
  arg1 = (SipEvent *)jarg1; 
  result = (short)((SipEvent const *)arg1)->getCode();
  jresult = result; 
  return jresult;
}


SWIGEXPORT char * SWIGSTDCALL CSharp_SipEvent_getPhrase(void * jarg1) {
  char * jresult ;
  SipEvent *arg1 = (SipEvent *) 0 ;
  char *result = 0 ;
  
  arg1 = (SipEvent *)jarg1; 
  result = (char *)((SipEvent const *)arg1)->getPhrase();
  jresult = SWIG_csharp_string_callback((const char *)result); 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_SipEvent_getBaseSession(void * jarg1) {
  void * jresult ;
  SipEvent *arg1 = (SipEvent *) 0 ;
  SipSession *result = 0 ;
  
  arg1 = (SipEvent *)jarg1; 
  result = (SipSession *)((SipEvent const *)arg1)->getBaseSession();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_SipEvent_getSipMessage(void * jarg1) {
  void * jresult ;
  SipEvent *arg1 = (SipEvent *) 0 ;
  SipMessage *result = 0 ;
  
  arg1 = (SipEvent *)jarg1; 
  result = (SipMessage *)((SipEvent const *)arg1)->getSipMessage();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SipSession(void * jarg1) {
  void * jresult ;
  SipStack *arg1 = (SipStack *) 0 ;
  SipSession *result = 0 ;
  
  arg1 = (SipStack *)jarg1; 
  result = (SipSession *)new SipSession(arg1);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_SipSession(void * jarg1) {
  SipSession *arg1 = (SipSession *) 0 ;
  
  arg1 = (SipSession *)jarg1; 
  delete arg1;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipSession_addHeader(void * jarg1, char * jarg2, char * jarg3) {
  unsigned int jresult ;
  SipSession *arg1 = (SipSession *) 0 ;
  char *arg2 = (char *) 0 ;
  char *arg3 = (char *) 0 ;
  bool result;
  
  arg1 = (SipSession *)jarg1; 
  arg2 = (char *)jarg2; 
  arg3 = (char *)jarg3; 
  result = (bool)(arg1)->addHeader((char const *)arg2,(char const *)arg3);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipSession_removeHeader(void * jarg1, char * jarg2) {
  unsigned int jresult ;
  SipSession *arg1 = (SipSession *) 0 ;
  char *arg2 = (char *) 0 ;
  bool result;
  
  arg1 = (SipSession *)jarg1; 
  arg2 = (char *)jarg2; 
  result = (bool)(arg1)->removeHeader((char const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipSession_addCaps__SWIG_0(void * jarg1, char * jarg2, char * jarg3) {
  unsigned int jresult ;
  SipSession *arg1 = (SipSession *) 0 ;
  char *arg2 = (char *) 0 ;
  char *arg3 = (char *) 0 ;
  bool result;
  
  arg1 = (SipSession *)jarg1; 
  arg2 = (char *)jarg2; 
  arg3 = (char *)jarg3; 
  result = (bool)(arg1)->addCaps((char const *)arg2,(char const *)arg3);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipSession_addCaps__SWIG_1(void * jarg1, char * jarg2) {
  unsigned int jresult ;
  SipSession *arg1 = (SipSession *) 0 ;
  char *arg2 = (char *) 0 ;
  bool result;
  
  arg1 = (SipSession *)jarg1; 
  arg2 = (char *)jarg2; 
  result = (bool)(arg1)->addCaps((char const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipSession_removeCaps(void * jarg1, char * jarg2) {
  unsigned int jresult ;
  SipSession *arg1 = (SipSession *) 0 ;
  char *arg2 = (char *) 0 ;
  bool result;
  
  arg1 = (SipSession *)jarg1; 
  arg2 = (char *)jarg2; 
  result = (bool)(arg1)->removeCaps((char const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipSession_setExpires(void * jarg1, unsigned int jarg2) {
  unsigned int jresult ;
  SipSession *arg1 = (SipSession *) 0 ;
  unsigned int arg2 ;
  bool result;
  
  arg1 = (SipSession *)jarg1; 
  arg2 = (unsigned int)jarg2; 
  result = (bool)(arg1)->setExpires(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipSession_setFromUri(void * jarg1, char * jarg2) {
  unsigned int jresult ;
  SipSession *arg1 = (SipSession *) 0 ;
  char *arg2 = (char *) 0 ;
  bool result;
  
  arg1 = (SipSession *)jarg1; 
  arg2 = (char *)jarg2; 
  result = (bool)(arg1)->setFromUri((char const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipSession_setToUri(void * jarg1, char * jarg2) {
  unsigned int jresult ;
  SipSession *arg1 = (SipSession *) 0 ;
  char *arg2 = (char *) 0 ;
  bool result;
  
  arg1 = (SipSession *)jarg1; 
  arg2 = (char *)jarg2; 
  result = (bool)(arg1)->setToUri((char const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_PublicationEvent() {
  void * jresult ;
  PublicationEvent *result = 0 ;
  
  result = (PublicationEvent *)new PublicationEvent();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_PublicationEvent(void * jarg1) {
  PublicationEvent *arg1 = (PublicationEvent *) 0 ;
  
  arg1 = (PublicationEvent *)jarg1; 
  delete arg1;
}


SWIGEXPORT int SWIGSTDCALL CSharp_PublicationEvent_getType(void * jarg1) {
  int jresult ;
  PublicationEvent *arg1 = (PublicationEvent *) 0 ;
  tsip_publish_event_type_t result;
  
  arg1 = (PublicationEvent *)jarg1; 
  result = (tsip_publish_event_type_t)((PublicationEvent const *)arg1)->getType();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_PublicationEvent_getSession(void * jarg1) {
  void * jresult ;
  PublicationEvent *arg1 = (PublicationEvent *) 0 ;
  PublicationSession *result = 0 ;
  
  arg1 = (PublicationEvent *)jarg1; 
  result = (PublicationSession *)((PublicationEvent const *)arg1)->getSession();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_PublicationSession(void * jarg1) {
  void * jresult ;
  SipStack *arg1 = (SipStack *) 0 ;
  PublicationSession *result = 0 ;
  
  arg1 = (SipStack *)jarg1; 
  result = (PublicationSession *)new PublicationSession(arg1);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_PublicationSession(void * jarg1) {
  PublicationSession *arg1 = (PublicationSession *) 0 ;
  
  arg1 = (PublicationSession *)jarg1; 
  delete arg1;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_PublicationSession_Publish(void * jarg1, void * jarg2, unsigned int jarg3) {
  unsigned int jresult ;
  PublicationSession *arg1 = (PublicationSession *) 0 ;
  void *arg2 = (void *) 0 ;
  unsigned int arg3 ;
  bool result;
  
  arg1 = (PublicationSession *)jarg1; 
  arg2 = jarg2; 
  arg3 = (unsigned int)jarg3; 
  result = (bool)(arg1)->Publish((void const *)arg2,arg3);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_PublicationSession_UnPublish(void * jarg1) {
  unsigned int jresult ;
  PublicationSession *arg1 = (PublicationSession *) 0 ;
  bool result;
  
  arg1 = (PublicationSession *)jarg1; 
  result = (bool)(arg1)->UnPublish();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_RegistrationEvent() {
  void * jresult ;
  RegistrationEvent *result = 0 ;
  
  result = (RegistrationEvent *)new RegistrationEvent();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_RegistrationEvent(void * jarg1) {
  RegistrationEvent *arg1 = (RegistrationEvent *) 0 ;
  
  arg1 = (RegistrationEvent *)jarg1; 
  delete arg1;
}


SWIGEXPORT int SWIGSTDCALL CSharp_RegistrationEvent_getType(void * jarg1) {
  int jresult ;
  RegistrationEvent *arg1 = (RegistrationEvent *) 0 ;
  tsip_register_event_type_t result;
  
  arg1 = (RegistrationEvent *)jarg1; 
  result = (tsip_register_event_type_t)((RegistrationEvent const *)arg1)->getType();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_RegistrationEvent_getSession(void * jarg1) {
  void * jresult ;
  RegistrationEvent *arg1 = (RegistrationEvent *) 0 ;
  RegistrationSession *result = 0 ;
  
  arg1 = (RegistrationEvent *)jarg1; 
  result = (RegistrationSession *)((RegistrationEvent const *)arg1)->getSession();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_RegistrationSession(void * jarg1) {
  void * jresult ;
  SipStack *arg1 = (SipStack *) 0 ;
  RegistrationSession *result = 0 ;
  
  arg1 = (SipStack *)jarg1; 
  result = (RegistrationSession *)new RegistrationSession(arg1);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_RegistrationSession(void * jarg1) {
  RegistrationSession *arg1 = (RegistrationSession *) 0 ;
  
  arg1 = (RegistrationSession *)jarg1; 
  delete arg1;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_RegistrationSession_Register(void * jarg1) {
  unsigned int jresult ;
  RegistrationSession *arg1 = (RegistrationSession *) 0 ;
  bool result;
  
  arg1 = (RegistrationSession *)jarg1; 
  result = (bool)(arg1)->Register();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_RegistrationSession_UnRegister(void * jarg1) {
  unsigned int jresult ;
  RegistrationSession *arg1 = (RegistrationSession *) 0 ;
  bool result;
  
  arg1 = (RegistrationSession *)jarg1; 
  result = (bool)(arg1)->UnRegister();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SubscriptionEvent() {
  void * jresult ;
  SubscriptionEvent *result = 0 ;
  
  result = (SubscriptionEvent *)new SubscriptionEvent();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_SubscriptionEvent(void * jarg1) {
  SubscriptionEvent *arg1 = (SubscriptionEvent *) 0 ;
  
  arg1 = (SubscriptionEvent *)jarg1; 
  delete arg1;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SubscriptionEvent_getType(void * jarg1) {
  int jresult ;
  SubscriptionEvent *arg1 = (SubscriptionEvent *) 0 ;
  tsip_subscribe_event_type_t result;
  
  arg1 = (SubscriptionEvent *)jarg1; 
  result = (tsip_subscribe_event_type_t)((SubscriptionEvent const *)arg1)->getType();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_SubscriptionEvent_getSession(void * jarg1) {
  void * jresult ;
  SubscriptionEvent *arg1 = (SubscriptionEvent *) 0 ;
  SubscriptionSession *result = 0 ;
  
  arg1 = (SubscriptionEvent *)jarg1; 
  result = (SubscriptionSession *)((SubscriptionEvent const *)arg1)->getSession();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SubscriptionSession(void * jarg1) {
  void * jresult ;
  SipStack *arg1 = (SipStack *) 0 ;
  SubscriptionSession *result = 0 ;
  
  arg1 = (SipStack *)jarg1; 
  result = (SubscriptionSession *)new SubscriptionSession(arg1);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_SubscriptionSession(void * jarg1) {
  SubscriptionSession *arg1 = (SubscriptionSession *) 0 ;
  
  arg1 = (SubscriptionSession *)jarg1; 
  delete arg1;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SubscriptionSession_Subscribe(void * jarg1) {
  unsigned int jresult ;
  SubscriptionSession *arg1 = (SubscriptionSession *) 0 ;
  bool result;
  
  arg1 = (SubscriptionSession *)jarg1; 
  result = (bool)(arg1)->Subscribe();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SubscriptionSession_UnSubscribe(void * jarg1) {
  unsigned int jresult ;
  SubscriptionSession *arg1 = (SubscriptionSession *) 0 ;
  bool result;
  
  arg1 = (SubscriptionSession *)jarg1; 
  result = (bool)(arg1)->UnSubscribe();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SipCallback() {
  void * jresult ;
  SipCallback *result = 0 ;
  
  result = (SipCallback *)new SwigDirector_SipCallback();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_SipCallback(void * jarg1) {
  SipCallback *arg1 = (SipCallback *) 0 ;
  
  arg1 = (SipCallback *)jarg1; 
  delete arg1;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SipCallback_OnRegistrationChanged(void * jarg1, void * jarg2) {
  int jresult ;
  SipCallback *arg1 = (SipCallback *) 0 ;
  RegistrationEvent *arg2 = (RegistrationEvent *) 0 ;
  int result;
  
  arg1 = (SipCallback *)jarg1; 
  arg2 = (RegistrationEvent *)jarg2; 
  result = (int)(arg1)->OnRegistrationChanged((RegistrationEvent const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SipCallback_OnRegistrationChangedSwigExplicitSipCallback(void * jarg1, void * jarg2) {
  int jresult ;
  SipCallback *arg1 = (SipCallback *) 0 ;
  RegistrationEvent *arg2 = (RegistrationEvent *) 0 ;
  int result;
  
  arg1 = (SipCallback *)jarg1; 
  arg2 = (RegistrationEvent *)jarg2; 
  result = (int)(arg1)->SipCallback::OnRegistrationChanged((RegistrationEvent const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SipCallback_OnSubscriptionChanged(void * jarg1, void * jarg2) {
  int jresult ;
  SipCallback *arg1 = (SipCallback *) 0 ;
  SubscriptionEvent *arg2 = (SubscriptionEvent *) 0 ;
  int result;
  
  arg1 = (SipCallback *)jarg1; 
  arg2 = (SubscriptionEvent *)jarg2; 
  result = (int)(arg1)->OnSubscriptionChanged((SubscriptionEvent const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SipCallback_OnSubscriptionChangedSwigExplicitSipCallback(void * jarg1, void * jarg2) {
  int jresult ;
  SipCallback *arg1 = (SipCallback *) 0 ;
  SubscriptionEvent *arg2 = (SubscriptionEvent *) 0 ;
  int result;
  
  arg1 = (SipCallback *)jarg1; 
  arg2 = (SubscriptionEvent *)jarg2; 
  result = (int)(arg1)->SipCallback::OnSubscriptionChanged((SubscriptionEvent const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SipCallback_OnPublicationChanged(void * jarg1, void * jarg2) {
  int jresult ;
  SipCallback *arg1 = (SipCallback *) 0 ;
  PublicationEvent *arg2 = (PublicationEvent *) 0 ;
  int result;
  
  arg1 = (SipCallback *)jarg1; 
  arg2 = (PublicationEvent *)jarg2; 
  result = (int)(arg1)->OnPublicationChanged((PublicationEvent const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SipCallback_OnPublicationChangedSwigExplicitSipCallback(void * jarg1, void * jarg2) {
  int jresult ;
  SipCallback *arg1 = (SipCallback *) 0 ;
  PublicationEvent *arg2 = (PublicationEvent *) 0 ;
  int result;
  
  arg1 = (SipCallback *)jarg1; 
  arg2 = (PublicationEvent *)jarg2; 
  result = (int)(arg1)->SipCallback::OnPublicationChanged((PublicationEvent const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_SipCallback_director_connect(void *objarg, SwigDirector_SipCallback::SWIG_Callback0_t callback0, SwigDirector_SipCallback::SWIG_Callback1_t callback1, SwigDirector_SipCallback::SWIG_Callback2_t callback2) {
  SipCallback *obj = (SipCallback *)objarg;
  SwigDirector_SipCallback *director = dynamic_cast<SwigDirector_SipCallback *>(obj);
  if (director) {
    director->swig_connect_director(callback0, callback1, callback2);
  }
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SipDebugCallback() {
  void * jresult ;
  SipDebugCallback *result = 0 ;
  
  result = (SipDebugCallback *)new SwigDirector_SipDebugCallback();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_SipDebugCallback(void * jarg1) {
  SipDebugCallback *arg1 = (SipDebugCallback *) 0 ;
  
  arg1 = (SipDebugCallback *)jarg1; 
  delete arg1;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SipDebugCallback_OnDebugInfo(void * jarg1, char * jarg2) {
  int jresult ;
  SipDebugCallback *arg1 = (SipDebugCallback *) 0 ;
  char *arg2 = (char *) 0 ;
  int result;
  
  arg1 = (SipDebugCallback *)jarg1; 
  arg2 = (char *)jarg2; 
  result = (int)(arg1)->OnDebugInfo((char const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SipDebugCallback_OnDebugInfoSwigExplicitSipDebugCallback(void * jarg1, char * jarg2) {
  int jresult ;
  SipDebugCallback *arg1 = (SipDebugCallback *) 0 ;
  char *arg2 = (char *) 0 ;
  int result;
  
  arg1 = (SipDebugCallback *)jarg1; 
  arg2 = (char *)jarg2; 
  result = (int)(arg1)->SipDebugCallback::OnDebugInfo((char const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SipDebugCallback_OnDebugWarn(void * jarg1, char * jarg2) {
  int jresult ;
  SipDebugCallback *arg1 = (SipDebugCallback *) 0 ;
  char *arg2 = (char *) 0 ;
  int result;
  
  arg1 = (SipDebugCallback *)jarg1; 
  arg2 = (char *)jarg2; 
  result = (int)(arg1)->OnDebugWarn((char const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SipDebugCallback_OnDebugWarnSwigExplicitSipDebugCallback(void * jarg1, char * jarg2) {
  int jresult ;
  SipDebugCallback *arg1 = (SipDebugCallback *) 0 ;
  char *arg2 = (char *) 0 ;
  int result;
  
  arg1 = (SipDebugCallback *)jarg1; 
  arg2 = (char *)jarg2; 
  result = (int)(arg1)->SipDebugCallback::OnDebugWarn((char const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SipDebugCallback_OnDebugError(void * jarg1, char * jarg2) {
  int jresult ;
  SipDebugCallback *arg1 = (SipDebugCallback *) 0 ;
  char *arg2 = (char *) 0 ;
  int result;
  
  arg1 = (SipDebugCallback *)jarg1; 
  arg2 = (char *)jarg2; 
  result = (int)(arg1)->OnDebugError((char const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SipDebugCallback_OnDebugErrorSwigExplicitSipDebugCallback(void * jarg1, char * jarg2) {
  int jresult ;
  SipDebugCallback *arg1 = (SipDebugCallback *) 0 ;
  char *arg2 = (char *) 0 ;
  int result;
  
  arg1 = (SipDebugCallback *)jarg1; 
  arg2 = (char *)jarg2; 
  result = (int)(arg1)->SipDebugCallback::OnDebugError((char const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SipDebugCallback_OnDebugFatal(void * jarg1, char * jarg2) {
  int jresult ;
  SipDebugCallback *arg1 = (SipDebugCallback *) 0 ;
  char *arg2 = (char *) 0 ;
  int result;
  
  arg1 = (SipDebugCallback *)jarg1; 
  arg2 = (char *)jarg2; 
  result = (int)(arg1)->OnDebugFatal((char const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SipDebugCallback_OnDebugFatalSwigExplicitSipDebugCallback(void * jarg1, char * jarg2) {
  int jresult ;
  SipDebugCallback *arg1 = (SipDebugCallback *) 0 ;
  char *arg2 = (char *) 0 ;
  int result;
  
  arg1 = (SipDebugCallback *)jarg1; 
  arg2 = (char *)jarg2; 
  result = (int)(arg1)->SipDebugCallback::OnDebugFatal((char const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_SipDebugCallback_director_connect(void *objarg, SwigDirector_SipDebugCallback::SWIG_Callback0_t callback0, SwigDirector_SipDebugCallback::SWIG_Callback1_t callback1, SwigDirector_SipDebugCallback::SWIG_Callback2_t callback2, SwigDirector_SipDebugCallback::SWIG_Callback3_t callback3) {
  SipDebugCallback *obj = (SipDebugCallback *)objarg;
  SwigDirector_SipDebugCallback *director = dynamic_cast<SwigDirector_SipDebugCallback *>(obj);
  if (director) {
    director->swig_connect_director(callback0, callback1, callback2, callback3);
  }
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SafeObject() {
  void * jresult ;
  SafeObject *result = 0 ;
  
  result = (SafeObject *)new SafeObject();
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_SafeObject(void * jarg1) {
  SafeObject *arg1 = (SafeObject *) 0 ;
  
  arg1 = (SafeObject *)jarg1; 
  delete arg1;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SafeObject_Lock(void * jarg1) {
  int jresult ;
  SafeObject *arg1 = (SafeObject *) 0 ;
  int result;
  
  arg1 = (SafeObject *)jarg1; 
  result = (int)((SafeObject const *)arg1)->Lock();
  jresult = result; 
  return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SafeObject_UnLock(void * jarg1) {
  int jresult ;
  SafeObject *arg1 = (SafeObject *) 0 ;
  int result;
  
  arg1 = (SafeObject *)jarg1; 
  result = (int)((SafeObject const *)arg1)->UnLock();
  jresult = result; 
  return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_SipStack(void * jarg1, char * jarg2, char * jarg3, char * jarg4) {
  void * jresult ;
  SipCallback *arg1 = (SipCallback *) 0 ;
  char *arg2 = (char *) 0 ;
  char *arg3 = (char *) 0 ;
  char *arg4 = (char *) 0 ;
  SipStack *result = 0 ;
  
  arg1 = (SipCallback *)jarg1; 
  arg2 = (char *)jarg2; 
  arg3 = (char *)jarg3; 
  arg4 = (char *)jarg4; 
  result = (SipStack *)new SipStack(arg1,(char const *)arg2,(char const *)arg3,(char const *)arg4);
  jresult = (void *)result; 
  return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_delete_SipStack(void * jarg1) {
  SipStack *arg1 = (SipStack *) 0 ;
  
  arg1 = (SipStack *)jarg1; 
  delete arg1;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipStack_start(void * jarg1) {
  unsigned int jresult ;
  SipStack *arg1 = (SipStack *) 0 ;
  bool result;
  
  arg1 = (SipStack *)jarg1; 
  result = (bool)(arg1)->start();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipStack_setDebugCallback(void * jarg1, void * jarg2) {
  unsigned int jresult ;
  SipStack *arg1 = (SipStack *) 0 ;
  SipDebugCallback *arg2 = (SipDebugCallback *) 0 ;
  bool result;
  
  arg1 = (SipStack *)jarg1; 
  arg2 = (SipDebugCallback *)jarg2; 
  result = (bool)(arg1)->setDebugCallback(arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipStack_setRealm(void * jarg1, char * jarg2) {
  unsigned int jresult ;
  SipStack *arg1 = (SipStack *) 0 ;
  char *arg2 = (char *) 0 ;
  bool result;
  
  arg1 = (SipStack *)jarg1; 
  arg2 = (char *)jarg2; 
  result = (bool)(arg1)->setRealm((char const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipStack_setIMPI(void * jarg1, char * jarg2) {
  unsigned int jresult ;
  SipStack *arg1 = (SipStack *) 0 ;
  char *arg2 = (char *) 0 ;
  bool result;
  
  arg1 = (SipStack *)jarg1; 
  arg2 = (char *)jarg2; 
  result = (bool)(arg1)->setIMPI((char const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipStack_setIMPU(void * jarg1, char * jarg2) {
  unsigned int jresult ;
  SipStack *arg1 = (SipStack *) 0 ;
  char *arg2 = (char *) 0 ;
  bool result;
  
  arg1 = (SipStack *)jarg1; 
  arg2 = (char *)jarg2; 
  result = (bool)(arg1)->setIMPU((char const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipStack_setPassword(void * jarg1, char * jarg2) {
  unsigned int jresult ;
  SipStack *arg1 = (SipStack *) 0 ;
  char *arg2 = (char *) 0 ;
  bool result;
  
  arg1 = (SipStack *)jarg1; 
  arg2 = (char *)jarg2; 
  result = (bool)(arg1)->setPassword((char const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipStack_setProxyCSCF(void * jarg1, char * jarg2, unsigned int jarg3, char * jarg4, char * jarg5) {
  unsigned int jresult ;
  SipStack *arg1 = (SipStack *) 0 ;
  char *arg2 = (char *) 0 ;
  unsigned int arg3 ;
  char *arg4 = (char *) 0 ;
  char *arg5 = (char *) 0 ;
  bool result;
  
  arg1 = (SipStack *)jarg1; 
  arg2 = (char *)jarg2; 
  arg3 = (unsigned int)jarg3; 
  arg4 = (char *)jarg4; 
  arg5 = (char *)jarg5; 
  result = (bool)(arg1)->setProxyCSCF((char const *)arg2,arg3,(char const *)arg4,(char const *)arg5);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipStack_setLocalIP(void * jarg1, char * jarg2) {
  unsigned int jresult ;
  SipStack *arg1 = (SipStack *) 0 ;
  char *arg2 = (char *) 0 ;
  bool result;
  
  arg1 = (SipStack *)jarg1; 
  arg2 = (char *)jarg2; 
  result = (bool)(arg1)->setLocalIP((char const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipStack_setLocalPort(void * jarg1, unsigned int jarg2) {
  unsigned int jresult ;
  SipStack *arg1 = (SipStack *) 0 ;
  unsigned int arg2 ;
  bool result;
  
  arg1 = (SipStack *)jarg1; 
  arg2 = (unsigned int)jarg2; 
  result = (bool)(arg1)->setLocalPort(arg2);
  jresult = result; 
  return jresult;
}


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


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipStack_addHeader(void * jarg1, char * jarg2, char * jarg3) {
  unsigned int jresult ;
  SipStack *arg1 = (SipStack *) 0 ;
  char *arg2 = (char *) 0 ;
  char *arg3 = (char *) 0 ;
  bool result;
  
  arg1 = (SipStack *)jarg1; 
  arg2 = (char *)jarg2; 
  arg3 = (char *)jarg3; 
  result = (bool)(arg1)->addHeader((char const *)arg2,(char const *)arg3);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipStack_removeHeader(void * jarg1, char * jarg2) {
  unsigned int jresult ;
  SipStack *arg1 = (SipStack *) 0 ;
  char *arg2 = (char *) 0 ;
  bool result;
  
  arg1 = (SipStack *)jarg1; 
  arg2 = (char *)jarg2; 
  result = (bool)(arg1)->removeHeader((char const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipStack_addDnsServer(void * jarg1, char * jarg2) {
  unsigned int jresult ;
  SipStack *arg1 = (SipStack *) 0 ;
  char *arg2 = (char *) 0 ;
  bool result;
  
  arg1 = (SipStack *)jarg1; 
  arg2 = (char *)jarg2; 
  result = (bool)(arg1)->addDnsServer((char const *)arg2);
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipStack_isValid(void * jarg1) {
  unsigned int jresult ;
  SipStack *arg1 = (SipStack *) 0 ;
  bool result;
  
  arg1 = (SipStack *)jarg1; 
  result = (bool)(arg1)->isValid();
  jresult = result; 
  return jresult;
}


SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipStack_stop(void * jarg1) {
  unsigned int jresult ;
  SipStack *arg1 = (SipStack *) 0 ;
  bool result;
  
  arg1 = (SipStack *)jarg1; 
  result = (bool)(arg1)->stop();
  jresult = result; 
  return jresult;
}


SWIGEXPORT SipEvent * SWIGSTDCALL CSharp_PublicationEventUpcast(PublicationEvent *objectRef) {
    return (SipEvent *)objectRef;
}

SWIGEXPORT SipSession * SWIGSTDCALL CSharp_PublicationSessionUpcast(PublicationSession *objectRef) {
    return (SipSession *)objectRef;
}

SWIGEXPORT SipEvent * SWIGSTDCALL CSharp_RegistrationEventUpcast(RegistrationEvent *objectRef) {
    return (SipEvent *)objectRef;
}

SWIGEXPORT SipSession * SWIGSTDCALL CSharp_RegistrationSessionUpcast(RegistrationSession *objectRef) {
    return (SipSession *)objectRef;
}

SWIGEXPORT SipEvent * SWIGSTDCALL CSharp_SubscriptionEventUpcast(SubscriptionEvent *objectRef) {
    return (SipEvent *)objectRef;
}

SWIGEXPORT SipSession * SWIGSTDCALL CSharp_SubscriptionSessionUpcast(SubscriptionSession *objectRef) {
    return (SipSession *)objectRef;
}

SWIGEXPORT SafeObject * SWIGSTDCALL CSharp_SipStackUpcast(SipStack *objectRef) {
    return (SafeObject *)objectRef;
}

#ifdef __cplusplus
}
#endif

