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


#ifdef __cplusplus
template<class T> class SwigValueWrapper {
    T *tt;
public:
    SwigValueWrapper() : tt(0) { }
    SwigValueWrapper(const SwigValueWrapper<T>& rhs) : tt(new T(*rhs.tt)) { }
    SwigValueWrapper(const T& t) : tt(new T(t)) { }
    ~SwigValueWrapper() { delete tt; } 
    SwigValueWrapper& operator=(const T& t) { delete tt; tt = new T(t); return *this; }
    operator T&() const { return *tt; }
    T *operator&() { return tt; }
private:
    SwigValueWrapper& operator=(const SwigValueWrapper<T>& rhs);
};
#endif

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

/* template workaround for compilers that cannot correctly implement the C++ standard */
#ifndef SWIGTEMPLATEDISAMBIGUATOR
#  if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x560)
#    define SWIGTEMPLATEDISAMBIGUATOR template
#  else
#    define SWIGTEMPLATEDISAMBIGUATOR 
#  endif
#endif

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

/* attribute recognised by some compilers to avoid 'unused' warnings */
#ifndef SWIGUNUSED
# if defined(__GNUC__) || defined(__ICC)
#   define SWIGUNUSED __attribute__ ((unused)) 
# else
#   define SWIGUNUSED 
# endif
#endif

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

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

/* exporting methods for Windows DLLs */
#ifndef SWIGEXPORT
# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
#   if defined(STATIC_LINKED)
#     define SWIGEXPORT
#   else
#     define SWIGEXPORT __declspec(dllexport)
#   endif
# else
#   define SWIGEXPORT
# endif
#endif

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



#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_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_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 SWIG_CSharpSetPendingException(SWIG_CSharpExceptionCodes code, const char *msg) {
  SWIG_CSharpExceptionCallback_t callback = SWIG_csharp_exceptions[SWIG_CSharpApplicationException].callback;
  if (code >=0 && (size_t)code < sizeof(SWIG_csharp_exceptions)/sizeof(SWIG_CSharpException_t)) {
    callback = SWIG_csharp_exceptions[code].callback;
  }
  callback(msg);
}

static void SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpExceptionArgumentCodes code, const char *msg, const char *param_name) {
  SWIG_CSharpExceptionArgumentCallback_t callback = SWIG_csharp_exceptions_argument[SWIG_CSharpArgumentException].callback;
  if (code >=0 && (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_ogr(
                                                SWIG_CSharpExceptionCallback_t applicationCallback,
                                                SWIG_CSharpExceptionCallback_t arithmeticCallback,
                                                SWIG_CSharpExceptionCallback_t divideByZeroCallback, 
                                                SWIG_CSharpExceptionCallback_t indexOutOfRangeCallback, 
                                                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_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_ogr(
                                                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_ogr(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


#define  SWIG_MemoryError    1
#define  SWIG_IOError        2
#define  SWIG_RuntimeError   3
#define  SWIG_IndexError     4
#define  SWIG_TypeError      5
#define  SWIG_DivisionByZero 6
#define  SWIG_OverflowError  7
#define  SWIG_SyntaxError    8
#define  SWIG_ValueError     9
#define  SWIG_SystemError   10
#define  SWIG_UnknownError  99


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);
  }
}
#define SWIG_exception(nullreturn, code, msg) { SWIG_CSharpException(code, msg); return nullreturn; }


#include <stdexcept>


#include <iostream>
using namespace std;

#include "ogr_api.h"
#include "ogr_core.h"
#include "cpl_port.h"
#include "cpl_string.h"

typedef void OSRSpatialReferenceShadow;
typedef void OGRDriverShadow;
typedef void OGRDataSourceShadow;
typedef void OGRLayerShadow;
typedef void OGRFeatureShadow;
typedef void OGRFeatureDefnShadow;
typedef void OGRGeometryShadow;
typedef void OSRCoordinateTransformationShadow;
typedef void OGRFieldDefnShadow;

const unsigned long wkb25bit = -2147483648;

static OGRDataSourceShadow *OGRDriverShadow_CreateDataSource(OGRDriverShadow *self,char const *name,char **options=0){
    OGRDataSourceShadow *ds = (OGRDataSourceShadow*) OGR_Dr_CreateDataSource( self, name, options);
    return ds;
  }
static OGRDataSourceShadow *OGRDriverShadow_CopyDataSource(OGRDriverShadow *self,OGRDataSourceShadow *copy_ds,char const *name,char **options=0){
    OGRDataSourceShadow *ds = (OGRDataSourceShadow*) OGR_Dr_CopyDataSource(self, copy_ds, name, options);
    return ds;
  }
static OGRDataSourceShadow *OGRDriverShadow_Open(OGRDriverShadow *self,char const *name,int update=0){
    OGRDataSourceShadow* ds = (OGRDataSourceShadow*) OGR_Dr_Open(self, name, update);
    return ds;
  }
static int OGRDriverShadow_DeleteDataSource(OGRDriverShadow *self,char const *name){
    return OGR_Dr_DeleteDataSource( self, name );
  }
static int OGRDriverShadow_TestCapability(OGRDriverShadow *self,char const *cap){
    return OGR_Dr_TestCapability(self, cap);
  }
static char const *OGRDriverShadow_GetName(OGRDriverShadow *self){
    return OGR_Dr_GetName( self );
  }
static void OGRDataSourceShadow_Destroy(OGRDataSourceShadow *self){
    OGR_DS_Destroy(self);
  }
static void OGRDataSourceShadow_Release(OGRDataSourceShadow *self){
    OGRReleaseDataSource(self);
  }
static int OGRDataSourceShadow_Reference(OGRDataSourceShadow *self){
    return OGR_DS_Reference(self);
  }
static int OGRDataSourceShadow_Dereference(OGRDataSourceShadow *self){
    return OGR_DS_Dereference(self);
  }
static int OGRDataSourceShadow_GetRefCount(OGRDataSourceShadow *self){
    return OGR_DS_GetRefCount(self);
  }
static int OGRDataSourceShadow_GetSummaryRefCount(OGRDataSourceShadow *self){
    return OGR_DS_GetSummaryRefCount(self);
  }
static int OGRDataSourceShadow_GetLayerCount(OGRDataSourceShadow *self){
    return OGR_DS_GetLayerCount(self);
  }
static char const *OGRDataSourceShadow_GetName(OGRDataSourceShadow *self){
    return OGR_DS_GetName(self);
  }
static OGRErr OGRDataSourceShadow_DeleteLayer(OGRDataSourceShadow *self,int index){
    return OGR_DS_DeleteLayer(self, index);
  }

static char const *
OGRErrMessages( int rc ) {
  switch( rc ) {
  case 0:
    return "OGR Error %d: None";
  case 1:
    return "OGR Error %d: Not enough data";
  case 2:
    return "OGR Error %d: Unsupported geometry type";
  case 3:
    return "OGR Error %d: Unsupported operation";
  case 4:
    return "OGR Error %d: Corrupt data";
  case 5:
    return "OGR Error %d: General Error";
  case 6:
    return "OGR Error %d: Unsupported SRS";
  default:
    return "OGR Error %d: Unknown";
  }
}

static OGRLayerShadow *OGRDataSourceShadow_CreateLayer(OGRDataSourceShadow *self,char const *name,OSRSpatialReferenceShadow *reference=NULL,OGRwkbGeometryType geom_type=wkbUnknown,char **options=0){
    OGRLayerShadow* layer = (OGRLayerShadow*) OGR_DS_CreateLayer( self,
                                                        name,
                                                        reference,
                                                        geom_type,
                                                        options);
    return layer;
  }
static OGRLayerShadow *OGRDataSourceShadow_CopyLayer(OGRDataSourceShadow *self,OGRLayerShadow *src_layer,char const *new_name,char **options=0){
    OGRLayerShadow* layer = (OGRLayerShadow*) OGR_DS_CopyLayer( self,
                                                      src_layer,
                                                      new_name,
                                                      options);
    return layer;
  }
static OGRLayerShadow *OGRDataSourceShadow_GetLayerByIndex(OGRDataSourceShadow *self,int index=0){
    OGRLayerShadow* layer = (OGRLayerShadow*) OGR_DS_GetLayer(self, index);
    return layer;
  }
static OGRLayerShadow *OGRDataSourceShadow_GetLayerByName(OGRDataSourceShadow *self,char const *layer_name){
    OGRLayerShadow* layer = (OGRLayerShadow*) OGR_DS_GetLayerByName(self, layer_name);
    return layer;
  }
static int OGRDataSourceShadow_TestCapability(OGRDataSourceShadow *self,char const *cap){
    return OGR_DS_TestCapability(self, cap);
  }
static OGRLayerShadow *OGRDataSourceShadow_ExecuteSQL(OGRDataSourceShadow *self,char const *statement,OGRGeometryShadow *geom=NULL,char const *dialect=""){
    OGRLayerShadow* layer = (OGRLayerShadow*) OGR_DS_ExecuteSQL((OGRDataSourceShadow*)self,
                                                      statement,
                                                      geom,
                                                      dialect);
    return layer;
  }
static void OGRDataSourceShadow_ReleaseResultSet(OGRDataSourceShadow *self,OGRLayerShadow *layer){
    OGR_DS_ReleaseResultSet(self, layer);
  }
static int OGRLayerShadow_Reference(OGRLayerShadow *self){
    return OGR_L_Reference(self);
  }
static int OGRLayerShadow_Dereference(OGRLayerShadow *self){
    return OGR_L_Dereference(self);
  }
static int OGRLayerShadow_GetRefCount(OGRLayerShadow *self){
    return OGR_L_GetRefCount(self);
  }
static void OGRLayerShadow_SetSpatialFilter(OGRLayerShadow *self,OGRGeometryShadow *filter){
    OGR_L_SetSpatialFilter (self, filter);
  }
static void OGRLayerShadow_SetSpatialFilterRect(OGRLayerShadow *self,double minx,double miny,double maxx,double maxy){
    OGR_L_SetSpatialFilterRect(self, minx, miny, maxx, maxy);                          
  }
static OGRGeometryShadow *OGRLayerShadow_GetSpatialFilter(OGRLayerShadow *self){
    return (OGRGeometryShadow *) OGR_L_GetSpatialFilter(self);
  }
static OGRErr OGRLayerShadow_SetAttributeFilter(OGRLayerShadow *self,char *filter_string){
    OGRErr err = OGR_L_SetAttributeFilter((OGRLayerShadow*)self, filter_string);
    if (err != 0) {
      throw err;
    } 
    return 0;
  }
static void OGRLayerShadow_ResetReading(OGRLayerShadow *self){
    OGR_L_ResetReading(self);
  }
static char const *OGRLayerShadow_GetName(OGRLayerShadow *self){
    return OGR_FD_GetName(OGR_L_GetLayerDefn(self));
  }
static OGRFeatureShadow *OGRLayerShadow_GetFeature(OGRLayerShadow *self,long fid){
    return (OGRFeatureShadow*) OGR_L_GetFeature(self, fid);
  }
static OGRFeatureShadow *OGRLayerShadow_GetNextFeature(OGRLayerShadow *self){
    return (OGRFeatureShadow*) OGR_L_GetNextFeature(self);
  }
static OGRErr OGRLayerShadow_SetNextByIndex(OGRLayerShadow *self,long new_index){
    OGRErr err = OGR_L_SetNextByIndex(self, new_index);
    if (err != 0) {
      throw err;
    }
    return 0;
  }
static OGRErr OGRLayerShadow_SetFeature(OGRLayerShadow *self,OGRFeatureShadow *feature){
    OGRErr err = OGR_L_SetFeature(self, feature);
    if (err != 0) {
      throw err;
    }
    return 0;
  }
static OGRErr OGRLayerShadow_CreateFeature(OGRLayerShadow *self,OGRFeatureShadow *feature){
    OGRErr err = OGR_L_CreateFeature(self, feature);
    if (err != 0) {
      throw err;
    }
    return 0;
  }
static OGRErr OGRLayerShadow_DeleteFeature(OGRLayerShadow *self,long fid){
    OGRErr err = OGR_L_DeleteFeature(self, fid);
    if (err != 0) {
      throw err;
    }
    return 0;
  }
static OGRErr OGRLayerShadow_SyncToDisk(OGRLayerShadow *self){
    OGRErr err = OGR_L_SyncToDisk(self);
    if (err != 0) {
      throw err;
    }
    return 0;
  }
static OGRFeatureDefnShadow *OGRLayerShadow_GetLayerDefn(OGRLayerShadow *self){
    return (OGRFeatureDefnShadow*) OGR_L_GetLayerDefn(self);
  }
static int OGRLayerShadow_GetFeatureCount(OGRLayerShadow *self,int force=1){
    return OGR_L_GetFeatureCount(self, force);
  }

static int
CreateTupleFromDoubleArray( double *first, unsigned int size ) {
  
  return 1;
}

static void OGRLayerShadow_GetExtent(OGRLayerShadow *self,double argout[4],int force=1){
    OGRErr err = OGR_L_GetExtent(self, (OGREnvelope*)argout, force);
    if (err != 0)
      throw err;
  }
static int OGRLayerShadow_TestCapability(OGRLayerShadow *self,char const *cap){
    return OGR_L_TestCapability(self, cap);
  }
static OGRErr OGRLayerShadow_CreateField(OGRLayerShadow *self,OGRFieldDefnShadow *field_def,int approx_ok=1){
    OGRErr err = OGR_L_CreateField(self, field_def, approx_ok);
    if (err != 0)
      throw err;
    return 0;
  }
static OGRErr OGRLayerShadow_StartTransaction(OGRLayerShadow *self){
    OGRErr err = OGR_L_StartTransaction(self);
    if (err != 0)
      throw err;
    return 0;
  }
static OGRErr OGRLayerShadow_CommitTransaction(OGRLayerShadow *self){
    OGRErr err = OGR_L_CommitTransaction(self);
    if (err != 0)
      throw err;
    return 0;
  }
static OGRErr OGRLayerShadow_RollbackTransaction(OGRLayerShadow *self){
    OGRErr err = OGR_L_RollbackTransaction(self);
    if (err != 0)
      throw err;
    return 0;
  }
static OSRSpatialReferenceShadow *OGRLayerShadow_GetSpatialRef(OGRLayerShadow *self){
    return (OSRSpatialReferenceShadow*) OGR_L_GetSpatialRef(self);
  }
static GIntBig OGRLayerShadow_GetFeatureRead(OGRLayerShadow *self){
    return OGR_L_GetFeaturesRead(self);
  }
static OGRFeatureShadow *new_OGRFeatureShadow(OGRFeatureDefnShadow *feature_def=0){
    return (OGRFeatureShadow*) OGR_F_Create( feature_def );
  }
static void OGRFeatureShadow_Destroy(OGRFeatureShadow *self){
    OGR_F_Destroy(self);
  }
static OGRFeatureDefnShadow *OGRFeatureShadow_GetDefnRef(OGRFeatureShadow *self){
    return (OGRFeatureDefnShadow*) OGR_F_GetDefnRef(self);
  }
static OGRErr OGRFeatureShadow_SetGeometry(OGRFeatureShadow *self,OGRGeometryShadow *geom){
    OGRErr err = OGR_F_SetGeometry(self, geom);
    if (err != 0)
      throw err;
    return 0;
  }
static OGRErr OGRFeatureShadow_SetGeometryDirectly(OGRFeatureShadow *self,OGRGeometryShadow *geom){
    OGRErr err = OGR_F_SetGeometryDirectly(self, geom);
    if (err != 0)
      throw err;
    return 0;
  }
static OGRGeometryShadow *OGRFeatureShadow_GetGeometryRef(OGRFeatureShadow *self){
    return (OGRGeometryShadow*) OGR_F_GetGeometryRef(self);
  }
static OGRFeatureShadow *OGRFeatureShadow_Clone(OGRFeatureShadow *self){
    return (OGRFeatureShadow*) OGR_F_Clone(self);
  }
static int OGRFeatureShadow_Equal(OGRFeatureShadow *self,OGRFeatureShadow *feature){
    return OGR_F_Equal(self, feature);
  }
static int OGRFeatureShadow_GetFieldCount(OGRFeatureShadow *self){
    return OGR_F_GetFieldCount(self);
  }
static OGRFieldDefnShadow *OGRFeatureShadow_GetFieldDefnRef__SWIG_0(OGRFeatureShadow *self,int id){
    return (OGRFieldDefnShadow *) OGR_F_GetFieldDefnRef(self, id);
  }
static OGRFieldDefnShadow *OGRFeatureShadow_GetFieldDefnRef__SWIG_1(OGRFeatureShadow *self,char const *name){
    return (OGRFieldDefnShadow *) OGR_F_GetFieldDefnRef(self, OGR_F_GetFieldIndex(self, name));
  }
static char const *OGRFeatureShadow_GetFieldAsString__SWIG_0(OGRFeatureShadow *self,int id){
    return (const char *) OGR_F_GetFieldAsString(self, id);
  }
static char const *OGRFeatureShadow_GetFieldAsString__SWIG_1(OGRFeatureShadow *self,char const *name){
    return (const char *) OGR_F_GetFieldAsString(self, OGR_F_GetFieldIndex(self, name));
  }
static int OGRFeatureShadow_GetFieldAsInteger__SWIG_0(OGRFeatureShadow *self,int id){
    return OGR_F_GetFieldAsInteger(self, id);
  }
static int OGRFeatureShadow_GetFieldAsInteger__SWIG_1(OGRFeatureShadow *self,char const *name){
    return OGR_F_GetFieldAsInteger(self, OGR_F_GetFieldIndex(self, name));
  }
static double OGRFeatureShadow_GetFieldAsDouble__SWIG_0(OGRFeatureShadow *self,int id){
    return OGR_F_GetFieldAsDouble(self, id);
  }
static double OGRFeatureShadow_GetFieldAsDouble__SWIG_1(OGRFeatureShadow *self,char const *name){
    return OGR_F_GetFieldAsDouble(self, OGR_F_GetFieldIndex(self, name));
  }
static int OGRFeatureShadow_IsFieldSet__SWIG_0(OGRFeatureShadow *self,int id){
    return OGR_F_IsFieldSet(self, id);
  }
static int OGRFeatureShadow_IsFieldSet__SWIG_1(OGRFeatureShadow *self,char const *name){
    return OGR_F_IsFieldSet(self, OGR_F_GetFieldIndex(self, name));
  }
static int OGRFeatureShadow_GetFieldIndex(OGRFeatureShadow *self,char const *name){
    return OGR_F_GetFieldIndex(self, name);
  }
static int OGRFeatureShadow_GetFID(OGRFeatureShadow *self){
    return OGR_F_GetFID(self);
  }
static OGRErr OGRFeatureShadow_SetFID(OGRFeatureShadow *self,int fid){
    OGRErr err = OGR_F_SetFID(self, fid);
    if (err != 0)
      throw err;
    return 0;
  }
static void OGRFeatureShadow_DumpReadable(OGRFeatureShadow *self){
    OGR_F_DumpReadable(self, NULL);
  }
static void OGRFeatureShadow_UnsetField__SWIG_0(OGRFeatureShadow *self,int id){
    OGR_F_UnsetField(self, id);
  }
static void OGRFeatureShadow_UnsetField__SWIG_1(OGRFeatureShadow *self,char const *name){
    OGR_F_UnsetField(self, OGR_F_GetFieldIndex(self, name));
  }
static void OGRFeatureShadow_SetField__SWIG_0(OGRFeatureShadow *self,int id,char const *value){
    OGR_F_SetFieldString(self, id, value);
  }
static void OGRFeatureShadow_SetField__SWIG_1(OGRFeatureShadow *self,char const *name,char const *value){
    OGR_F_SetFieldString(self, OGR_F_GetFieldIndex(self, name), value);
  }
static OGRErr OGRFeatureShadow_SetFrom(OGRFeatureShadow *self,OGRFeatureShadow *other,int forgiving=1){
    OGRErr err = OGR_F_SetFrom(self, other, forgiving);
    if (err != 0)
      throw err;
    return 0;
  }
static char const *OGRFeatureShadow_GetStyleString(OGRFeatureShadow *self){
    return (const char*) OGR_F_GetStyleString(self);
  }
static void OGRFeatureShadow_SetStyleString(OGRFeatureShadow *self,char const *the_string){
    OGR_F_SetStyleString(self, the_string);
  }
static OGRFieldType OGRFeatureShadow_GetFieldType__SWIG_0(OGRFeatureShadow *self,int id){
    return (OGRFieldType) OGR_Fld_GetType( OGR_F_GetFieldDefnRef( self, id));
  }
static OGRFieldType OGRFeatureShadow_GetFieldType__SWIG_1(OGRFeatureShadow *self,char const *name,char const *value){
    return (OGRFieldType) OGR_Fld_GetType( 
                            OGR_F_GetFieldDefnRef( self,  
                                                   OGR_F_GetFieldIndex(self, 
                                                                       name)
                                                  )
                                          );
    
  }
static OGRFeatureDefnShadow *new_OGRFeatureDefnShadow(char const *name=NULL){
    return (OGRFeatureDefnShadow* )OGR_FD_Create(name);
  }
static void OGRFeatureDefnShadow_Destroy(OGRFeatureDefnShadow *self){
    OGR_FD_Destroy(self);
  }
static char const *OGRFeatureDefnShadow_GetName(OGRFeatureDefnShadow *self){
    return OGR_FD_GetName(self);
  }
static int OGRFeatureDefnShadow_GetFieldCount(OGRFeatureDefnShadow *self){
    return OGR_FD_GetFieldCount(self);
  }
static OGRFieldDefnShadow *OGRFeatureDefnShadow_GetFieldDefn(OGRFeatureDefnShadow *self,int i){
    return (OGRFieldDefnShadow*) OGR_FD_GetFieldDefn(self, i);
  }
static int OGRFeatureDefnShadow_GetFieldIndex(OGRFeatureDefnShadow *self,char const *name){
    return OGR_FD_GetFieldIndex(self, name);
  }
static void OGRFeatureDefnShadow_AddFieldDefn(OGRFeatureDefnShadow *self,OGRFieldDefnShadow *defn){
    OGR_FD_AddFieldDefn(self, defn);
  }
static OGRwkbGeometryType OGRFeatureDefnShadow_GetGeomType(OGRFeatureDefnShadow *self){
    return (OGRwkbGeometryType) OGR_FD_GetGeomType(self);
  }
static void OGRFeatureDefnShadow_SetGeomType(OGRFeatureDefnShadow *self,OGRwkbGeometryType geom_type){
    OGR_FD_SetGeomType(self, geom_type);
  }
static int OGRFeatureDefnShadow_Reference(OGRFeatureDefnShadow *self){
    return OGR_FD_Reference(self);
  }
static int OGRFeatureDefnShadow_Dereference(OGRFeatureDefnShadow *self){
    return OGR_FD_Dereference(self);
  }
static int OGRFeatureDefnShadow_GetReferenceCount(OGRFeatureDefnShadow *self){
    return OGR_FD_GetReferenceCount(self);
  }
static OGRFieldDefnShadow *new_OGRFieldDefnShadow(char const *name="unnamed",OGRFieldType field_type=OFTString){
    return (OGRFieldDefnShadow*) OGR_Fld_Create(name, field_type);
  }
static void OGRFieldDefnShadow_Destroy(OGRFieldDefnShadow *self){
    OGR_Fld_Destroy(self);
  }
static char const *OGRFieldDefnShadow_GetName(OGRFieldDefnShadow *self){
    return (const char *) OGR_Fld_GetNameRef(self);
  }
static char const *OGRFieldDefnShadow_GetNameRef(OGRFieldDefnShadow *self){
    return (const char *) OGR_Fld_GetNameRef(self);
  }
static void OGRFieldDefnShadow_SetName(OGRFieldDefnShadow *self,char const *name){
    OGR_Fld_SetName(self, name);
  }
static OGRFieldType OGRFieldDefnShadow_GetType(OGRFieldDefnShadow *self){
    return OGR_Fld_GetType(self);
  }
static void OGRFieldDefnShadow_SetType(OGRFieldDefnShadow *self,OGRFieldType type){
    OGR_Fld_SetType(self, type);
  }
static OGRJustification OGRFieldDefnShadow_GetJustify(OGRFieldDefnShadow *self){
    return OGR_Fld_GetJustify(self);
  }
static void OGRFieldDefnShadow_SetJustify(OGRFieldDefnShadow *self,OGRJustification justify){
    OGR_Fld_SetJustify(self, justify);
  }
static int OGRFieldDefnShadow_GetWidth(OGRFieldDefnShadow *self){
    return OGR_Fld_GetWidth(self);
  }
static void OGRFieldDefnShadow_SetWidth(OGRFieldDefnShadow *self,int width){
    OGR_Fld_SetWidth(self, width);
  }
static int OGRFieldDefnShadow_GetPrecision(OGRFieldDefnShadow *self){
    return OGR_Fld_GetPrecision(self);
  }
static void OGRFieldDefnShadow_SetPrecision(OGRFieldDefnShadow *self,int precision){
    OGR_Fld_SetPrecision(self, precision);
  }

  OGRGeometryShadow* CreateGeometryFromWkb( int len, char *bin_string, 
                                            OSRSpatialReferenceShadow *reference=NULL ) {
    void *geom;
    OGRErr err = OGR_G_CreateFromWkb( (unsigned char *) bin_string,
                                      reference,
                                      &geom,
                                      len );
    if (err != 0 )
       throw err;
    return (OGRGeometryShadow*) geom;
  }
 


  OGRGeometryShadow* CreateGeometryFromWkt( char **val, 
                                      OSRSpatialReferenceShadow *reference=NULL ) {
    void *geom;
    OGRErr err = OGR_G_CreateFromWkt(val,
                                      reference,
                                      &geom);
    if (err != 0 )
       throw err;
    return (OGRGeometryShadow*) geom;
  }
 


  OGRGeometryShadow *CreateGeometryFromGML( const char * input_string ) {
    OGRGeometryShadow* geom = (OGRGeometryShadow*)OGR_G_CreateFromGML(input_string);
    return geom;
  }
 

static OGRGeometryShadow *new_OGRGeometryShadow(OGRwkbGeometryType type=wkbUnknown,char *wkt=0,int wkb=0,char *wkb_buf=0,char *gml=0){
    if (type != wkbUnknown ) {
      return (OGRGeometryShadow*) OGR_G_CreateGeometry( type );
    }
    else if ( wkt != 0 ) {
      return CreateGeometryFromWkt( &wkt );
    }
    else if ( wkb != 0 ) {
      return CreateGeometryFromWkb( wkb, wkb_buf );
    }
    else if ( gml != 0 ) {
      return CreateGeometryFromGML( gml );
    }
    // throw?
    else return 0;
  }
static char const *OGRGeometryShadow_ExportToWkt(OGRGeometryShadow *self){
    char * output;
    OGRErr err = OGR_G_ExportToWkt(self, &output);
    if (err != 0) 
      throw err;
    return output;
  }
static OGRErr OGRGeometryShadow_ExportToWkb(OGRGeometryShadow *self,int *nLen,char **pBuf,OGRwkbByteOrder byte_order=wkbXDR){
    *nLen = OGR_G_WkbSize( self );
    *pBuf = (char *) malloc( *nLen * sizeof(unsigned char) );
    return OGR_G_ExportToWkb(self, byte_order, (unsigned char*) *pBuf );
  }
static char const *OGRGeometryShadow_ExportToGML(OGRGeometryShadow *self){
    return (const char *) OGR_G_ExportToGML(self);
  }
static void OGRGeometryShadow_AddPoint(OGRGeometryShadow *self,double x,double y,double z=0){
    OGR_G_AddPoint( self, x, y, z );
  }
static OGRErr OGRGeometryShadow_AddGeometryDirectly(OGRGeometryShadow *self,OGRGeometryShadow *other){
    return OGR_G_AddGeometryDirectly( self, other );
  }
static OGRErr OGRGeometryShadow_AddGeometry(OGRGeometryShadow *self,OGRGeometryShadow *other){
    return OGR_G_AddGeometry( self, other );
  }
static OGRGeometryShadow *OGRGeometryShadow_Clone(OGRGeometryShadow *self){
    return (OGRGeometryShadow*) OGR_G_Clone(self);
  }
static void OGRGeometryShadow_Destroy(OGRGeometryShadow *self){
    OGR_G_DestroyGeometry( self );
  }
static OGRwkbGeometryType OGRGeometryShadow_GetGeometryType(OGRGeometryShadow *self){
    return (OGRwkbGeometryType) OGR_G_GetGeometryType(self);
  }
static char const *OGRGeometryShadow_GetGeometryName(OGRGeometryShadow *self){
    return (const char *) OGR_G_GetGeometryName(self);
  }
static double OGRGeometryShadow_GetArea(OGRGeometryShadow *self){
    return OGR_G_GetArea(self);
  }
static int OGRGeometryShadow_GetPointCount(OGRGeometryShadow *self){
    return OGR_G_GetPointCount(self);
  }
static double OGRGeometryShadow_GetX(OGRGeometryShadow *self,int point=0){
    return OGR_G_GetX(self, point);
  }
static double OGRGeometryShadow_GetY(OGRGeometryShadow *self,int point=0){
    return OGR_G_GetY(self, point);
  }
static double OGRGeometryShadow_GetZ(OGRGeometryShadow *self,int point=0){
    return OGR_G_GetZ(self, point);
  }
static int OGRGeometryShadow_GetGeometryCount(OGRGeometryShadow *self){
    return OGR_G_GetGeometryCount(self);
  }
static void OGRGeometryShadow_SetPoint(OGRGeometryShadow *self,int point,double x,double y,double z=0){
    OGR_G_SetPoint(self, point, x, y, z);
  }
static OGRGeometryShadow *OGRGeometryShadow_GetGeometryRef(OGRGeometryShadow *self,int geom){
    return (OGRGeometryShadow*) OGR_G_GetGeometryRef(self, geom);
  }
static OGRGeometryShadow *OGRGeometryShadow_GetBoundary(OGRGeometryShadow *self){
    return (OGRGeometryShadow*) OGR_G_GetBoundary(self);
  }
static OGRGeometryShadow *OGRGeometryShadow_ConvexHull(OGRGeometryShadow *self){
    return (OGRGeometryShadow*) OGR_G_ConvexHull(self);
  }
static OGRGeometryShadow *OGRGeometryShadow_Buffer(OGRGeometryShadow *self,double distance,int quadsecs=30){
    return (OGRGeometryShadow*) OGR_G_Buffer( self, distance, quadsecs );
  }
static OGRGeometryShadow *OGRGeometryShadow_Intersection(OGRGeometryShadow *self,OGRGeometryShadow *other){
    return (OGRGeometryShadow*) OGR_G_Intersection( self, other );
  }
static OGRGeometryShadow *OGRGeometryShadow_Union(OGRGeometryShadow *self,OGRGeometryShadow *other){
    return (OGRGeometryShadow*) OGR_G_Union( self, other );
  }
static OGRGeometryShadow *OGRGeometryShadow_Difference(OGRGeometryShadow *self,OGRGeometryShadow *other){
    return (OGRGeometryShadow*) OGR_G_Difference( self, other );
  }
static OGRGeometryShadow *OGRGeometryShadow_SymmetricDifference(OGRGeometryShadow *self,OGRGeometryShadow *other){
    return (OGRGeometryShadow*) OGR_G_SymmetricDifference( self, other );
  }
static double OGRGeometryShadow_Distance(OGRGeometryShadow *self,OGRGeometryShadow *other){
    return OGR_G_Distance(self, other);
  }
static void OGRGeometryShadow_Empty(OGRGeometryShadow *self){
    OGR_G_Empty(self);
  }
static int OGRGeometryShadow_Intersect(OGRGeometryShadow *self,OGRGeometryShadow *other){
    return OGR_G_Intersect(self, other);
  }
static int OGRGeometryShadow_Equal(OGRGeometryShadow *self,OGRGeometryShadow *other){
    return OGR_G_Equal(self, other);
  }
static int OGRGeometryShadow_Disjoint(OGRGeometryShadow *self,OGRGeometryShadow *other){
    return OGR_G_Disjoint(self, other);
  }
static int OGRGeometryShadow_Touches(OGRGeometryShadow *self,OGRGeometryShadow *other){
    return OGR_G_Touches(self, other);
  }
static int OGRGeometryShadow_Crosses(OGRGeometryShadow *self,OGRGeometryShadow *other){
    return OGR_G_Crosses(self, other);
  }
static int OGRGeometryShadow_Within(OGRGeometryShadow *self,OGRGeometryShadow *other){
    return OGR_G_Within(self, other);
  }
static int OGRGeometryShadow_Contains(OGRGeometryShadow *self,OGRGeometryShadow *other){
    return OGR_G_Contains(self, other);
  }
static int OGRGeometryShadow_Overlaps(OGRGeometryShadow *self,OGRGeometryShadow *other){
    return OGR_G_Overlaps(self, other);
  }
static OGRErr OGRGeometryShadow_TransformTo(OGRGeometryShadow *self,OSRSpatialReferenceShadow *reference){
    return OGR_G_TransformTo(self, reference);
  }
static OGRErr OGRGeometryShadow_Transform(OGRGeometryShadow *self,OSRCoordinateTransformationShadow *trans){
    return OGR_G_Transform(self, trans);
  }
static OSRSpatialReferenceShadow *OGRGeometryShadow_GetSpatialReference(OGRGeometryShadow *self){
    return (OSRSpatialReferenceShadow*)OGR_G_GetSpatialReference(self);
  }
static void OGRGeometryShadow_AssignSpatialReference(OGRGeometryShadow *self,OSRSpatialReferenceShadow *reference){
    OGR_G_AssignSpatialReference(self, reference);
  }
static void OGRGeometryShadow_CloseRings(OGRGeometryShadow *self){
    OGR_G_CloseRings(self);
  }
static void OGRGeometryShadow_FlattenTo2D(OGRGeometryShadow *self){
    OGR_G_FlattenTo2D(self);
  }
static void OGRGeometryShadow_GetEnvelope(OGRGeometryShadow *self,double argout[4]){
    OGR_G_GetEnvelope(self, (OGREnvelope*)argout);
  }
static OGRGeometryShadow *OGRGeometryShadow_Centroid(OGRGeometryShadow *self){
    OGRGeometryShadow *pt = new_OGRGeometryShadow( wkbPoint );
    OGRErr rcode = OGR_G_Centroid( self, pt );
    return pt;
  }
static int OGRGeometryShadow_WkbSize(OGRGeometryShadow *self){
    return OGR_G_WkbSize(self);
  }
static int OGRGeometryShadow_GetCoordinateDimension(OGRGeometryShadow *self){
    return OGR_G_GetCoordinateDimension(self);
  }
static int OGRGeometryShadow_GetDimension(OGRGeometryShadow *self){
    return OGR_G_GetDimension(self);
  }

char const *OGRDriverShadow_get_name( OGRDriverShadow *h ) {
  return OGR_Dr_GetName( h );
}

char const *OGRDataSourceShadow_get_name( OGRDataSourceShadow *h ) {
  return OGR_DS_GetName( h );
}

char const *OGRDriverShadow_name_get( OGRDriverShadow *h ) {
  return OGR_Dr_GetName( h );
}

char const *OGRDataSourceShadow_name_get( OGRDataSourceShadow *h ) {
  return OGR_DS_GetName( h );
}


OGRDriverShadow* OGR_GetDriverByName( char const *name ) {
  return (OGRDriverShadow*) OGRGetDriverByName( name );
}
  
OGRDriverShadow* OGR_GetDriver(int driver_number) {
  return (OGRDriverShadow*) OGRGetDriver(driver_number);
  

}


  OGRDataSourceShadow* GetOpenDS(int ds_number) {
    OGRDataSourceShadow* layer = (OGRDataSourceShadow*) OGRGetOpenDS(ds_number);
    return layer;
  }


  OGRDataSourceShadow *Open( const char * filename, int update=0 ) {
    OGRDataSourceShadow* ds = (OGRDataSourceShadow*)OGROpen(filename,update, NULL);
    return ds;
  }
 


  OGRDataSourceShadow *OpenShared( const char * filename, int update=0 ) {
    OGRDataSourceShadow* ds = (OGRDataSourceShadow*)OGROpenShared(filename,update, NULL);
    return ds;
  }
 


#ifdef __cplusplus
extern "C" {
#endif

SWIGEXPORT int SWIGSTDCALL CSharp_get_wkb25Bit() {
    int jresult = 0 ;
    int result;
    
    result = (int) -2147483648;
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_get_wkbUnknown() {
    int jresult = 0 ;
    int result;
    
    result = (int) 0;
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_get_wkbPoint() {
    int jresult = 0 ;
    int result;
    
    result = (int) 1;
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_get_wkbLineString() {
    int jresult = 0 ;
    int result;
    
    result = (int) 2;
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_get_wkbPolygon() {
    int jresult = 0 ;
    int result;
    
    result = (int) 3;
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_get_wkbMultiPoint() {
    int jresult = 0 ;
    int result;
    
    result = (int) 4;
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_get_wkbMultiLineString() {
    int jresult = 0 ;
    int result;
    
    result = (int) 5;
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_get_wkbMultiPolygon() {
    int jresult = 0 ;
    int result;
    
    result = (int) 6;
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_get_wkbGeometryCollection() {
    int jresult = 0 ;
    int result;
    
    result = (int) 7;
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_get_wkbNone() {
    int jresult = 0 ;
    int result;
    
    result = (int) 100;
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_get_wkbLinearRing() {
    int jresult = 0 ;
    int result;
    
    result = (int) 101;
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_get_wkbPoint25D() {
    int jresult = 0 ;
    int result;
    
    result = (int) wkbPoint+wkb25DBit;
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_get_wkbLineString25D() {
    int jresult = 0 ;
    int result;
    
    result = (int) wkbLineString+wkb25DBit;
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_get_wkbPolygon25D() {
    int jresult = 0 ;
    int result;
    
    result = (int) wkbPolygon+wkb25DBit;
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_get_wkbMultiPoint25D() {
    int jresult = 0 ;
    int result;
    
    result = (int) wkbMultiPoint+wkb25DBit;
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_get_wkbMultiLineString25D() {
    int jresult = 0 ;
    int result;
    
    result = (int) wkbMultiLineString+wkb25DBit;
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_get_wkbMultiPolygon25D() {
    int jresult = 0 ;
    int result;
    
    result = (int) wkbMultiPolygon+wkb25DBit;
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_get_wkbGeometryCollection25D() {
    int jresult = 0 ;
    int result;
    
    result = (int) wkbGeometryCollection+wkb25DBit;
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_get_OFTInteger() {
    int jresult = 0 ;
    int result;
    
    result = (int) 0;
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_get_OFTIntegerList() {
    int jresult = 0 ;
    int result;
    
    result = (int) 1;
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_get_OFTReal() {
    int jresult = 0 ;
    int result;
    
    result = (int) 2;
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_get_OFTRealList() {
    int jresult = 0 ;
    int result;
    
    result = (int) 3;
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_get_OFTString() {
    int jresult = 0 ;
    int result;
    
    result = (int) 4;
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_get_OFTStringList() {
    int jresult = 0 ;
    int result;
    
    result = (int) 5;
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_get_OFTWideString() {
    int jresult = 0 ;
    int result;
    
    result = (int) 6;
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_get_OFTWideStringList() {
    int jresult = 0 ;
    int result;
    
    result = (int) 7;
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_get_OFTBinary() {
    int jresult = 0 ;
    int result;
    
    result = (int) 8;
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_get_OJUndefined() {
    int jresult = 0 ;
    int result;
    
    result = (int) 0;
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_get_OJLeft() {
    int jresult = 0 ;
    int result;
    
    result = (int) 1;
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_get_OJRight() {
    int jresult = 0 ;
    int result;
    
    result = (int) 2;
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_get_wkbXDR() {
    int jresult = 0 ;
    int result;
    
    result = (int) 0;
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_get_wkbNDR() {
    int jresult = 0 ;
    int result;
    
    result = (int) 1;
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT char * SWIGSTDCALL CSharp_get_OLCRandomRead() {
    char * jresult = 0 ;
    char *result;
    
    result = (char *) "RandomRead";
    
    jresult = SWIG_csharp_string_callback(result); 
    return jresult;
}


SWIGEXPORT char * SWIGSTDCALL CSharp_get_OLCSequentialWrite() {
    char * jresult = 0 ;
    char *result;
    
    result = (char *) "SequentialWrite";
    
    jresult = SWIG_csharp_string_callback(result); 
    return jresult;
}


SWIGEXPORT char * SWIGSTDCALL CSharp_get_OLCRandomWrite() {
    char * jresult = 0 ;
    char *result;
    
    result = (char *) "RandomWrite";
    
    jresult = SWIG_csharp_string_callback(result); 
    return jresult;
}


SWIGEXPORT char * SWIGSTDCALL CSharp_get_OLCFastSpatialFilter() {
    char * jresult = 0 ;
    char *result;
    
    result = (char *) "FastSpatialFilter";
    
    jresult = SWIG_csharp_string_callback(result); 
    return jresult;
}


SWIGEXPORT char * SWIGSTDCALL CSharp_get_OLCFastFeatureCount() {
    char * jresult = 0 ;
    char *result;
    
    result = (char *) "FastFeatureCount";
    
    jresult = SWIG_csharp_string_callback(result); 
    return jresult;
}


SWIGEXPORT char * SWIGSTDCALL CSharp_get_OLCFastGetExtent() {
    char * jresult = 0 ;
    char *result;
    
    result = (char *) "FastGetExtent";
    
    jresult = SWIG_csharp_string_callback(result); 
    return jresult;
}


SWIGEXPORT char * SWIGSTDCALL CSharp_get_OLCCreateField() {
    char * jresult = 0 ;
    char *result;
    
    result = (char *) "CreateField";
    
    jresult = SWIG_csharp_string_callback(result); 
    return jresult;
}


SWIGEXPORT char * SWIGSTDCALL CSharp_get_OLCTransactions() {
    char * jresult = 0 ;
    char *result;
    
    result = (char *) "Transactions";
    
    jresult = SWIG_csharp_string_callback(result); 
    return jresult;
}


SWIGEXPORT char * SWIGSTDCALL CSharp_get_OLCDeleteFeature() {
    char * jresult = 0 ;
    char *result;
    
    result = (char *) "DeleteFeature";
    
    jresult = SWIG_csharp_string_callback(result); 
    return jresult;
}


SWIGEXPORT char * SWIGSTDCALL CSharp_get_OLCFastSetNextByIndex() {
    char * jresult = 0 ;
    char *result;
    
    result = (char *) "FastSetNextByIndex";
    
    jresult = SWIG_csharp_string_callback(result); 
    return jresult;
}


SWIGEXPORT char * SWIGSTDCALL CSharp_get_ODsCCreateLayer() {
    char * jresult = 0 ;
    char *result;
    
    result = (char *) "CreateLayer";
    
    jresult = SWIG_csharp_string_callback(result); 
    return jresult;
}


SWIGEXPORT char * SWIGSTDCALL CSharp_get_ODsCDeleteLayer() {
    char * jresult = 0 ;
    char *result;
    
    result = (char *) "DeleteLayer";
    
    jresult = SWIG_csharp_string_callback(result); 
    return jresult;
}


SWIGEXPORT char * SWIGSTDCALL CSharp_get_ODrCCreateDataSource() {
    char * jresult = 0 ;
    char *result;
    
    result = (char *) "CreateDataSource";
    
    jresult = SWIG_csharp_string_callback(result); 
    return jresult;
}


SWIGEXPORT char * SWIGSTDCALL CSharp_get_ODrCDeleteDataSource() {
    char * jresult = 0 ;
    char *result;
    
    result = (char *) "DeleteDataSource";
    
    jresult = SWIG_csharp_string_callback(result); 
    return jresult;
}


SWIGEXPORT char * SWIGSTDCALL CSharp_get_Driver_name(void * jarg1) {
    char * jresult = 0 ;
    OGRDriverShadow *arg1 = (OGRDriverShadow *) 0 ;
    char *result;
    
    arg1 = (OGRDriverShadow *)jarg1; 
    result = (char *)OGRDriverShadow_get_name(arg1);
    
    jresult = SWIG_csharp_string_callback(result); 
    return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Driver_CreateDataSource(void * jarg1, char * jarg2, void * jarg3) {
    void * jresult = 0 ;
    OGRDriverShadow *arg1 = (OGRDriverShadow *) 0 ;
    char *arg2 = (char *) 0 ;
    char **arg3 = (char **) 0 ;
    OGRDataSourceShadow *result;
    
    arg1 = (OGRDriverShadow *)jarg1; 
    arg2 = jarg2; 
    {
        /* %typemap(in) char **options */
        /* Check if is a list */
        
    }
    result = (OGRDataSourceShadow *)OGRDriverShadow_CreateDataSource(arg1,(char const *)arg2,arg3);
    
    jresult = (void *)result; 
    {
        /* %typemap(freearg) char **options */
        CSLDestroy( arg3 );
    }
    return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Driver_CopyDataSource(void * jarg1, void * jarg2, char * jarg3, void * jarg4) {
    void * jresult = 0 ;
    OGRDriverShadow *arg1 = (OGRDriverShadow *) 0 ;
    OGRDataSourceShadow *arg2 = (OGRDataSourceShadow *) 0 ;
    char *arg3 = (char *) 0 ;
    char **arg4 = (char **) 0 ;
    OGRDataSourceShadow *result;
    
    arg1 = (OGRDriverShadow *)jarg1; 
    arg2 = (OGRDataSourceShadow *)jarg2; 
    arg3 = jarg3; 
    {
        /* %typemap(in) char **options */
        /* Check if is a list */
        
    }
    result = (OGRDataSourceShadow *)OGRDriverShadow_CopyDataSource(arg1,arg2,(char const *)arg3,arg4);
    
    jresult = (void *)result; 
    {
        /* %typemap(freearg) char **options */
        CSLDestroy( arg4 );
    }
    return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Driver_Open(void * jarg1, char * jarg2, int jarg3) {
    void * jresult = 0 ;
    OGRDriverShadow *arg1 = (OGRDriverShadow *) 0 ;
    char *arg2 = (char *) 0 ;
    int arg3 = (int) 0 ;
    OGRDataSourceShadow *result;
    
    arg1 = (OGRDriverShadow *)jarg1; 
    arg2 = jarg2; 
    arg3 = (int)jarg3; 
    result = (OGRDataSourceShadow *)OGRDriverShadow_Open(arg1,(char const *)arg2,arg3);
    
    jresult = (void *)result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Driver_DeleteDataSource(void * jarg1, char * jarg2) {
    int jresult = 0 ;
    OGRDriverShadow *arg1 = (OGRDriverShadow *) 0 ;
    char *arg2 = (char *) 0 ;
    int result;
    
    arg1 = (OGRDriverShadow *)jarg1; 
    arg2 = jarg2; 
    result = (int)OGRDriverShadow_DeleteDataSource(arg1,(char const *)arg2);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Driver_TestCapability(void * jarg1, char * jarg2) {
    int jresult = 0 ;
    OGRDriverShadow *arg1 = (OGRDriverShadow *) 0 ;
    char *arg2 = (char *) 0 ;
    int result;
    
    arg1 = (OGRDriverShadow *)jarg1; 
    arg2 = jarg2; 
    result = (int)OGRDriverShadow_TestCapability(arg1,(char const *)arg2);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT char * SWIGSTDCALL CSharp_Driver_GetName(void * jarg1) {
    char * jresult = 0 ;
    OGRDriverShadow *arg1 = (OGRDriverShadow *) 0 ;
    char *result;
    
    arg1 = (OGRDriverShadow *)jarg1; 
    result = (char *)OGRDriverShadow_GetName(arg1);
    
    jresult = SWIG_csharp_string_callback(result); 
    return jresult;
}


SWIGEXPORT char * SWIGSTDCALL CSharp_get_DataSource_name(void * jarg1) {
    char * jresult = 0 ;
    OGRDataSourceShadow *arg1 = (OGRDataSourceShadow *) 0 ;
    char *result;
    
    arg1 = (OGRDataSourceShadow *)jarg1; 
    result = (char *)OGRDataSourceShadow_get_name(arg1);
    
    jresult = SWIG_csharp_string_callback(result); 
    return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_DataSource_Destroy(void * jarg1) {
    OGRDataSourceShadow *arg1 = (OGRDataSourceShadow *) 0 ;
    
    arg1 = (OGRDataSourceShadow *)jarg1; 
    OGRDataSourceShadow_Destroy(arg1);
    
}


SWIGEXPORT void SWIGSTDCALL CSharp_DataSource_Release(void * jarg1) {
    OGRDataSourceShadow *arg1 = (OGRDataSourceShadow *) 0 ;
    
    arg1 = (OGRDataSourceShadow *)jarg1; 
    OGRDataSourceShadow_Release(arg1);
    
}


SWIGEXPORT int SWIGSTDCALL CSharp_DataSource_Reference(void * jarg1) {
    int jresult = 0 ;
    OGRDataSourceShadow *arg1 = (OGRDataSourceShadow *) 0 ;
    int result;
    
    arg1 = (OGRDataSourceShadow *)jarg1; 
    result = (int)OGRDataSourceShadow_Reference(arg1);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_DataSource_Dereference(void * jarg1) {
    int jresult = 0 ;
    OGRDataSourceShadow *arg1 = (OGRDataSourceShadow *) 0 ;
    int result;
    
    arg1 = (OGRDataSourceShadow *)jarg1; 
    result = (int)OGRDataSourceShadow_Dereference(arg1);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_DataSource_GetRefCount(void * jarg1) {
    int jresult = 0 ;
    OGRDataSourceShadow *arg1 = (OGRDataSourceShadow *) 0 ;
    int result;
    
    arg1 = (OGRDataSourceShadow *)jarg1; 
    result = (int)OGRDataSourceShadow_GetRefCount(arg1);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_DataSource_GetSummaryRefCount(void * jarg1) {
    int jresult = 0 ;
    OGRDataSourceShadow *arg1 = (OGRDataSourceShadow *) 0 ;
    int result;
    
    arg1 = (OGRDataSourceShadow *)jarg1; 
    result = (int)OGRDataSourceShadow_GetSummaryRefCount(arg1);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_DataSource_GetLayerCount(void * jarg1) {
    int jresult = 0 ;
    OGRDataSourceShadow *arg1 = (OGRDataSourceShadow *) 0 ;
    int result;
    
    arg1 = (OGRDataSourceShadow *)jarg1; 
    result = (int)OGRDataSourceShadow_GetLayerCount(arg1);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT char * SWIGSTDCALL CSharp_DataSource_GetName(void * jarg1) {
    char * jresult = 0 ;
    OGRDataSourceShadow *arg1 = (OGRDataSourceShadow *) 0 ;
    char *result;
    
    arg1 = (OGRDataSourceShadow *)jarg1; 
    result = (char *)OGRDataSourceShadow_GetName(arg1);
    
    jresult = SWIG_csharp_string_callback(result); 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_DataSource_DeleteLayer(void * jarg1, int jarg2) {
    int jresult = 0 ;
    OGRDataSourceShadow *arg1 = (OGRDataSourceShadow *) 0 ;
    int arg2 ;
    OGRErr result;
    
    arg1 = (OGRDataSourceShadow *)jarg1; 
    arg2 = (int)jarg2; 
    result = (OGRErr)OGRDataSourceShadow_DeleteLayer(arg1,arg2);
    
    {
        /* %typemap(csharp, out) OGRErr */
        
    }
    {
        /* %typemap(csharp, ret) OGRErr */
        
    }
    return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_DataSource_CreateLayer(void * jarg1, char * jarg2, void * jarg3, int jarg4, void * jarg5) {
    void * jresult = 0 ;
    OGRDataSourceShadow *arg1 = (OGRDataSourceShadow *) 0 ;
    char *arg2 = (char *) 0 ;
    OSRSpatialReferenceShadow *arg3 = (OSRSpatialReferenceShadow *) NULL ;
    OGRwkbGeometryType arg4 = (OGRwkbGeometryType) wkbUnknown ;
    char **arg5 = (char **) 0 ;
    OGRLayerShadow *result;
    
    arg1 = (OGRDataSourceShadow *)jarg1; 
    arg2 = jarg2; 
    arg3 = (OSRSpatialReferenceShadow *)jarg3; 
    arg4 = (OGRwkbGeometryType)jarg4; 
    {
        /* %typemap(in) char **options */
        /* Check if is a list */
        
    }
    result = (OGRLayerShadow *)OGRDataSourceShadow_CreateLayer(arg1,(char const *)arg2,arg3,arg4,arg5);
    
    jresult = (void *)result; 
    {
        /* %typemap(freearg) char **options */
        CSLDestroy( arg5 );
    }
    return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_DataSource_CopyLayer(void * jarg1, void * jarg2, char * jarg3, void * jarg4) {
    void * jresult = 0 ;
    OGRDataSourceShadow *arg1 = (OGRDataSourceShadow *) 0 ;
    OGRLayerShadow *arg2 = (OGRLayerShadow *) 0 ;
    char *arg3 = (char *) 0 ;
    char **arg4 = (char **) 0 ;
    OGRLayerShadow *result;
    
    arg1 = (OGRDataSourceShadow *)jarg1; 
    arg2 = (OGRLayerShadow *)jarg2; 
    arg3 = jarg3; 
    {
        /* %typemap(in) char **options */
        /* Check if is a list */
        
    }
    result = (OGRLayerShadow *)OGRDataSourceShadow_CopyLayer(arg1,arg2,(char const *)arg3,arg4);
    
    jresult = (void *)result; 
    {
        /* %typemap(freearg) char **options */
        CSLDestroy( arg4 );
    }
    return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_DataSource_GetLayerByIndex(void * jarg1, int jarg2) {
    void * jresult = 0 ;
    OGRDataSourceShadow *arg1 = (OGRDataSourceShadow *) 0 ;
    int arg2 = (int) 0 ;
    OGRLayerShadow *result;
    
    arg1 = (OGRDataSourceShadow *)jarg1; 
    arg2 = (int)jarg2; 
    result = (OGRLayerShadow *)OGRDataSourceShadow_GetLayerByIndex(arg1,arg2);
    
    jresult = (void *)result; 
    return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_DataSource_GetLayerByName(void * jarg1, char * jarg2) {
    void * jresult = 0 ;
    OGRDataSourceShadow *arg1 = (OGRDataSourceShadow *) 0 ;
    char *arg2 = (char *) 0 ;
    OGRLayerShadow *result;
    
    arg1 = (OGRDataSourceShadow *)jarg1; 
    arg2 = jarg2; 
    result = (OGRLayerShadow *)OGRDataSourceShadow_GetLayerByName(arg1,(char const *)arg2);
    
    jresult = (void *)result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_DataSource_TestCapability(void * jarg1, char * jarg2) {
    int jresult = 0 ;
    OGRDataSourceShadow *arg1 = (OGRDataSourceShadow *) 0 ;
    char *arg2 = (char *) 0 ;
    int result;
    
    arg1 = (OGRDataSourceShadow *)jarg1; 
    arg2 = jarg2; 
    result = (int)OGRDataSourceShadow_TestCapability(arg1,(char const *)arg2);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_DataSource_ExecuteSQL(void * jarg1, char * jarg2, void * jarg3, char * jarg4) {
    void * jresult = 0 ;
    OGRDataSourceShadow *arg1 = (OGRDataSourceShadow *) 0 ;
    char *arg2 = (char *) 0 ;
    OGRGeometryShadow *arg3 = (OGRGeometryShadow *) NULL ;
    char *arg4 = (char *) "" ;
    OGRLayerShadow *result;
    
    arg1 = (OGRDataSourceShadow *)jarg1; 
    arg2 = jarg2; 
    arg3 = (OGRGeometryShadow *)jarg3; 
    arg4 = jarg4; 
    result = (OGRLayerShadow *)OGRDataSourceShadow_ExecuteSQL(arg1,(char const *)arg2,arg3,(char const *)arg4);
    
    jresult = (void *)result; 
    return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_DataSource_ReleaseResultSet(void * jarg1, void * jarg2) {
    OGRDataSourceShadow *arg1 = (OGRDataSourceShadow *) 0 ;
    OGRLayerShadow *arg2 = (OGRLayerShadow *) 0 ;
    
    arg1 = (OGRDataSourceShadow *)jarg1; 
    arg2 = (OGRLayerShadow *)jarg2; 
    OGRDataSourceShadow_ReleaseResultSet(arg1,arg2);
    
}


SWIGEXPORT int SWIGSTDCALL CSharp_Layer_Reference(void * jarg1) {
    int jresult = 0 ;
    OGRLayerShadow *arg1 = (OGRLayerShadow *) 0 ;
    int result;
    
    arg1 = (OGRLayerShadow *)jarg1; 
    result = (int)OGRLayerShadow_Reference(arg1);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Layer_Dereference(void * jarg1) {
    int jresult = 0 ;
    OGRLayerShadow *arg1 = (OGRLayerShadow *) 0 ;
    int result;
    
    arg1 = (OGRLayerShadow *)jarg1; 
    result = (int)OGRLayerShadow_Dereference(arg1);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Layer_GetRefCount(void * jarg1) {
    int jresult = 0 ;
    OGRLayerShadow *arg1 = (OGRLayerShadow *) 0 ;
    int result;
    
    arg1 = (OGRLayerShadow *)jarg1; 
    result = (int)OGRLayerShadow_GetRefCount(arg1);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_Layer_SetSpatialFilter(void * jarg1, void * jarg2) {
    OGRLayerShadow *arg1 = (OGRLayerShadow *) 0 ;
    OGRGeometryShadow *arg2 = (OGRGeometryShadow *) 0 ;
    
    arg1 = (OGRLayerShadow *)jarg1; 
    arg2 = (OGRGeometryShadow *)jarg2; 
    OGRLayerShadow_SetSpatialFilter(arg1,arg2);
    
}


SWIGEXPORT void SWIGSTDCALL CSharp_Layer_SetSpatialFilterRect(void * jarg1, double jarg2, double jarg3, double jarg4, double jarg5) {
    OGRLayerShadow *arg1 = (OGRLayerShadow *) 0 ;
    double arg2 ;
    double arg3 ;
    double arg4 ;
    double arg5 ;
    
    arg1 = (OGRLayerShadow *)jarg1; 
    arg2 = (double)jarg2; 
    arg3 = (double)jarg3; 
    arg4 = (double)jarg4; 
    arg5 = (double)jarg5; 
    OGRLayerShadow_SetSpatialFilterRect(arg1,arg2,arg3,arg4,arg5);
    
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Layer_GetSpatialFilter(void * jarg1) {
    void * jresult = 0 ;
    OGRLayerShadow *arg1 = (OGRLayerShadow *) 0 ;
    OGRGeometryShadow *result;
    
    arg1 = (OGRLayerShadow *)jarg1; 
    result = (OGRGeometryShadow *)OGRLayerShadow_GetSpatialFilter(arg1);
    
    jresult = (void *)result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Layer_SetAttributeFilter(void * jarg1, char * jarg2) {
    int jresult = 0 ;
    OGRLayerShadow *arg1 = (OGRLayerShadow *) 0 ;
    char *arg2 = (char *) 0 ;
    OGRErr result;
    
    arg1 = (OGRLayerShadow *)jarg1; 
    arg2 = jarg2; 
    result = (OGRErr)OGRLayerShadow_SetAttributeFilter(arg1,arg2);
    
    {
        /* %typemap(csharp, out) OGRErr */
        
    }
    {
        /* %typemap(csharp, ret) OGRErr */
        
    }
    return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_Layer_ResetReading(void * jarg1) {
    OGRLayerShadow *arg1 = (OGRLayerShadow *) 0 ;
    
    arg1 = (OGRLayerShadow *)jarg1; 
    OGRLayerShadow_ResetReading(arg1);
    
}


SWIGEXPORT char * SWIGSTDCALL CSharp_Layer_GetName(void * jarg1) {
    char * jresult = 0 ;
    OGRLayerShadow *arg1 = (OGRLayerShadow *) 0 ;
    char *result;
    
    arg1 = (OGRLayerShadow *)jarg1; 
    result = (char *)OGRLayerShadow_GetName(arg1);
    
    jresult = SWIG_csharp_string_callback(result); 
    return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Layer_GetFeature(void * jarg1, long jarg2) {
    void * jresult = 0 ;
    OGRLayerShadow *arg1 = (OGRLayerShadow *) 0 ;
    long arg2 ;
    OGRFeatureShadow *result;
    
    arg1 = (OGRLayerShadow *)jarg1; 
    arg2 = (long)jarg2; 
    result = (OGRFeatureShadow *)OGRLayerShadow_GetFeature(arg1,arg2);
    
    jresult = (void *)result; 
    return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Layer_GetNextFeature(void * jarg1) {
    void * jresult = 0 ;
    OGRLayerShadow *arg1 = (OGRLayerShadow *) 0 ;
    OGRFeatureShadow *result;
    
    arg1 = (OGRLayerShadow *)jarg1; 
    result = (OGRFeatureShadow *)OGRLayerShadow_GetNextFeature(arg1);
    
    jresult = (void *)result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Layer_SetNextByIndex(void * jarg1, long jarg2) {
    int jresult = 0 ;
    OGRLayerShadow *arg1 = (OGRLayerShadow *) 0 ;
    long arg2 ;
    OGRErr result;
    
    arg1 = (OGRLayerShadow *)jarg1; 
    arg2 = (long)jarg2; 
    result = (OGRErr)OGRLayerShadow_SetNextByIndex(arg1,arg2);
    
    {
        /* %typemap(csharp, out) OGRErr */
        
    }
    {
        /* %typemap(csharp, ret) OGRErr */
        
    }
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Layer_SetFeature(void * jarg1, void * jarg2) {
    int jresult = 0 ;
    OGRLayerShadow *arg1 = (OGRLayerShadow *) 0 ;
    OGRFeatureShadow *arg2 = (OGRFeatureShadow *) 0 ;
    OGRErr result;
    
    arg1 = (OGRLayerShadow *)jarg1; 
    arg2 = (OGRFeatureShadow *)jarg2; 
    result = (OGRErr)OGRLayerShadow_SetFeature(arg1,arg2);
    
    {
        /* %typemap(csharp, out) OGRErr */
        
    }
    {
        /* %typemap(csharp, ret) OGRErr */
        
    }
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Layer_CreateFeature(void * jarg1, void * jarg2) {
    int jresult = 0 ;
    OGRLayerShadow *arg1 = (OGRLayerShadow *) 0 ;
    OGRFeatureShadow *arg2 = (OGRFeatureShadow *) 0 ;
    OGRErr result;
    
    arg1 = (OGRLayerShadow *)jarg1; 
    arg2 = (OGRFeatureShadow *)jarg2; 
    result = (OGRErr)OGRLayerShadow_CreateFeature(arg1,arg2);
    
    {
        /* %typemap(csharp, out) OGRErr */
        
    }
    {
        /* %typemap(csharp, ret) OGRErr */
        
    }
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Layer_DeleteFeature(void * jarg1, long jarg2) {
    int jresult = 0 ;
    OGRLayerShadow *arg1 = (OGRLayerShadow *) 0 ;
    long arg2 ;
    OGRErr result;
    
    arg1 = (OGRLayerShadow *)jarg1; 
    arg2 = (long)jarg2; 
    result = (OGRErr)OGRLayerShadow_DeleteFeature(arg1,arg2);
    
    {
        /* %typemap(csharp, out) OGRErr */
        
    }
    {
        /* %typemap(csharp, ret) OGRErr */
        
    }
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Layer_SyncToDisk(void * jarg1) {
    int jresult = 0 ;
    OGRLayerShadow *arg1 = (OGRLayerShadow *) 0 ;
    OGRErr result;
    
    arg1 = (OGRLayerShadow *)jarg1; 
    result = (OGRErr)OGRLayerShadow_SyncToDisk(arg1);
    
    {
        /* %typemap(csharp, out) OGRErr */
        
    }
    {
        /* %typemap(csharp, ret) OGRErr */
        
    }
    return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Layer_GetLayerDefn(void * jarg1) {
    void * jresult = 0 ;
    OGRLayerShadow *arg1 = (OGRLayerShadow *) 0 ;
    OGRFeatureDefnShadow *result;
    
    arg1 = (OGRLayerShadow *)jarg1; 
    result = (OGRFeatureDefnShadow *)OGRLayerShadow_GetLayerDefn(arg1);
    
    jresult = (void *)result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Layer_GetFeatureCount(void * jarg1, int jarg2) {
    int jresult = 0 ;
    OGRLayerShadow *arg1 = (OGRLayerShadow *) 0 ;
    int arg2 = (int) 1 ;
    int result;
    
    arg1 = (OGRLayerShadow *)jarg1; 
    arg2 = (int)jarg2; 
    result = (int)OGRLayerShadow_GetFeatureCount(arg1,arg2);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_Layer_GetExtent(void * jarg1, int jarg3) {
    OGRLayerShadow *arg1 = (OGRLayerShadow *) 0 ;
    double *arg2 ;
    int arg3 = (int) 1 ;
    double argout2[4] ;
    
    {
        /* %typemap(in,numinputs=0) (double argout2[ANY]) */
        
    }
    arg1 = (OGRLayerShadow *)jarg1; 
    arg3 = (int)jarg3; 
    OGRLayerShadow_GetExtent(arg1,arg2,arg3);
    
    {
        /* %typemap(argout) (double argout[ANY]) */
        
    }
}


SWIGEXPORT int SWIGSTDCALL CSharp_Layer_TestCapability(void * jarg1, char * jarg2) {
    int jresult = 0 ;
    OGRLayerShadow *arg1 = (OGRLayerShadow *) 0 ;
    char *arg2 = (char *) 0 ;
    int result;
    
    arg1 = (OGRLayerShadow *)jarg1; 
    arg2 = jarg2; 
    result = (int)OGRLayerShadow_TestCapability(arg1,(char const *)arg2);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Layer_CreateField(void * jarg1, void * jarg2, int jarg3) {
    int jresult = 0 ;
    OGRLayerShadow *arg1 = (OGRLayerShadow *) 0 ;
    OGRFieldDefnShadow *arg2 = (OGRFieldDefnShadow *) 0 ;
    int arg3 = (int) 1 ;
    OGRErr result;
    
    arg1 = (OGRLayerShadow *)jarg1; 
    arg2 = (OGRFieldDefnShadow *)jarg2; 
    arg3 = (int)jarg3; 
    result = (OGRErr)OGRLayerShadow_CreateField(arg1,arg2,arg3);
    
    {
        /* %typemap(csharp, out) OGRErr */
        
    }
    {
        /* %typemap(csharp, ret) OGRErr */
        
    }
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Layer_StartTransaction(void * jarg1) {
    int jresult = 0 ;
    OGRLayerShadow *arg1 = (OGRLayerShadow *) 0 ;
    OGRErr result;
    
    arg1 = (OGRLayerShadow *)jarg1; 
    result = (OGRErr)OGRLayerShadow_StartTransaction(arg1);
    
    {
        /* %typemap(csharp, out) OGRErr */
        
    }
    {
        /* %typemap(csharp, ret) OGRErr */
        
    }
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Layer_CommitTransaction(void * jarg1) {
    int jresult = 0 ;
    OGRLayerShadow *arg1 = (OGRLayerShadow *) 0 ;
    OGRErr result;
    
    arg1 = (OGRLayerShadow *)jarg1; 
    result = (OGRErr)OGRLayerShadow_CommitTransaction(arg1);
    
    {
        /* %typemap(csharp, out) OGRErr */
        
    }
    {
        /* %typemap(csharp, ret) OGRErr */
        
    }
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Layer_RollbackTransaction(void * jarg1) {
    int jresult = 0 ;
    OGRLayerShadow *arg1 = (OGRLayerShadow *) 0 ;
    OGRErr result;
    
    arg1 = (OGRLayerShadow *)jarg1; 
    result = (OGRErr)OGRLayerShadow_RollbackTransaction(arg1);
    
    {
        /* %typemap(csharp, out) OGRErr */
        
    }
    {
        /* %typemap(csharp, ret) OGRErr */
        
    }
    return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Layer_GetSpatialRef(void * jarg1) {
    void * jresult = 0 ;
    OGRLayerShadow *arg1 = (OGRLayerShadow *) 0 ;
    OSRSpatialReferenceShadow *result;
    
    arg1 = (OGRLayerShadow *)jarg1; 
    result = (OSRSpatialReferenceShadow *)OGRLayerShadow_GetSpatialRef(arg1);
    
    jresult = (void *)result; 
    return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Layer_GetFeatureRead(void * jarg1) {
    void * jresult = 0 ;
    OGRLayerShadow *arg1 = (OGRLayerShadow *) 0 ;
    GIntBig result;
    
    arg1 = (OGRLayerShadow *)jarg1; 
    result = OGRLayerShadow_GetFeatureRead(arg1);
    
    jresult = new GIntBig((GIntBig &)result); 
    return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Feature(void * jarg1) {
    void * jresult = 0 ;
    OGRFeatureDefnShadow *arg1 = (OGRFeatureDefnShadow *) 0 ;
    OGRFeatureShadow *result;
    
    arg1 = (OGRFeatureDefnShadow *)jarg1; 
    result = (OGRFeatureShadow *)new_OGRFeatureShadow(arg1);
    
    jresult = (void *)result; 
    return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_Feature_Destroy(void * jarg1) {
    OGRFeatureShadow *arg1 = (OGRFeatureShadow *) 0 ;
    
    arg1 = (OGRFeatureShadow *)jarg1; 
    OGRFeatureShadow_Destroy(arg1);
    
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Feature_GetDefnRef(void * jarg1) {
    void * jresult = 0 ;
    OGRFeatureShadow *arg1 = (OGRFeatureShadow *) 0 ;
    OGRFeatureDefnShadow *result;
    
    arg1 = (OGRFeatureShadow *)jarg1; 
    result = (OGRFeatureDefnShadow *)OGRFeatureShadow_GetDefnRef(arg1);
    
    jresult = (void *)result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Feature_SetGeometry(void * jarg1, void * jarg2) {
    int jresult = 0 ;
    OGRFeatureShadow *arg1 = (OGRFeatureShadow *) 0 ;
    OGRGeometryShadow *arg2 = (OGRGeometryShadow *) 0 ;
    OGRErr result;
    
    arg1 = (OGRFeatureShadow *)jarg1; 
    arg2 = (OGRGeometryShadow *)jarg2; 
    result = (OGRErr)OGRFeatureShadow_SetGeometry(arg1,arg2);
    
    {
        /* %typemap(csharp, out) OGRErr */
        
    }
    {
        /* %typemap(csharp, ret) OGRErr */
        
    }
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Feature_SetGeometryDirectly(void * jarg1, void * jarg2) {
    int jresult = 0 ;
    OGRFeatureShadow *arg1 = (OGRFeatureShadow *) 0 ;
    OGRGeometryShadow *arg2 = (OGRGeometryShadow *) 0 ;
    OGRErr result;
    
    arg1 = (OGRFeatureShadow *)jarg1; 
    arg2 = (OGRGeometryShadow *)jarg2; 
    result = (OGRErr)OGRFeatureShadow_SetGeometryDirectly(arg1,arg2);
    
    {
        /* %typemap(csharp, out) OGRErr */
        
    }
    {
        /* %typemap(csharp, ret) OGRErr */
        
    }
    return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Feature_GetGeometryRef(void * jarg1) {
    void * jresult = 0 ;
    OGRFeatureShadow *arg1 = (OGRFeatureShadow *) 0 ;
    OGRGeometryShadow *result;
    
    arg1 = (OGRFeatureShadow *)jarg1; 
    result = (OGRGeometryShadow *)OGRFeatureShadow_GetGeometryRef(arg1);
    
    jresult = (void *)result; 
    return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Feature_Clone(void * jarg1) {
    void * jresult = 0 ;
    OGRFeatureShadow *arg1 = (OGRFeatureShadow *) 0 ;
    OGRFeatureShadow *result;
    
    arg1 = (OGRFeatureShadow *)jarg1; 
    result = (OGRFeatureShadow *)OGRFeatureShadow_Clone(arg1);
    
    jresult = (void *)result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Feature_Equal(void * jarg1, void * jarg2) {
    int jresult = 0 ;
    OGRFeatureShadow *arg1 = (OGRFeatureShadow *) 0 ;
    OGRFeatureShadow *arg2 = (OGRFeatureShadow *) 0 ;
    int result;
    
    arg1 = (OGRFeatureShadow *)jarg1; 
    arg2 = (OGRFeatureShadow *)jarg2; 
    result = (int)OGRFeatureShadow_Equal(arg1,arg2);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Feature_GetFieldCount(void * jarg1) {
    int jresult = 0 ;
    OGRFeatureShadow *arg1 = (OGRFeatureShadow *) 0 ;
    int result;
    
    arg1 = (OGRFeatureShadow *)jarg1; 
    result = (int)OGRFeatureShadow_GetFieldCount(arg1);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Feature_GetFieldDefnRef__SWIG_0(void * jarg1, int jarg2) {
    void * jresult = 0 ;
    OGRFeatureShadow *arg1 = (OGRFeatureShadow *) 0 ;
    int arg2 ;
    OGRFieldDefnShadow *result;
    
    arg1 = (OGRFeatureShadow *)jarg1; 
    arg2 = (int)jarg2; 
    result = (OGRFieldDefnShadow *)OGRFeatureShadow_GetFieldDefnRef__SWIG_0(arg1,arg2);
    
    jresult = (void *)result; 
    return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Feature_GetFieldDefnRef__SWIG_1(void * jarg1, char * jarg2) {
    void * jresult = 0 ;
    OGRFeatureShadow *arg1 = (OGRFeatureShadow *) 0 ;
    char *arg2 = (char *) 0 ;
    OGRFieldDefnShadow *result;
    
    arg1 = (OGRFeatureShadow *)jarg1; 
    arg2 = jarg2; 
    result = (OGRFieldDefnShadow *)OGRFeatureShadow_GetFieldDefnRef__SWIG_1(arg1,(char const *)arg2);
    
    jresult = (void *)result; 
    return jresult;
}


SWIGEXPORT char * SWIGSTDCALL CSharp_Feature_GetFieldAsString__SWIG_0(void * jarg1, int jarg2) {
    char * jresult = 0 ;
    OGRFeatureShadow *arg1 = (OGRFeatureShadow *) 0 ;
    int arg2 ;
    char *result;
    
    arg1 = (OGRFeatureShadow *)jarg1; 
    arg2 = (int)jarg2; 
    result = (char *)OGRFeatureShadow_GetFieldAsString__SWIG_0(arg1,arg2);
    
    jresult = SWIG_csharp_string_callback(result); 
    return jresult;
}


SWIGEXPORT char * SWIGSTDCALL CSharp_Feature_GetFieldAsString__SWIG_1(void * jarg1, char * jarg2) {
    char * jresult = 0 ;
    OGRFeatureShadow *arg1 = (OGRFeatureShadow *) 0 ;
    char *arg2 = (char *) 0 ;
    char *result;
    
    arg1 = (OGRFeatureShadow *)jarg1; 
    arg2 = jarg2; 
    result = (char *)OGRFeatureShadow_GetFieldAsString__SWIG_1(arg1,(char const *)arg2);
    
    jresult = SWIG_csharp_string_callback(result); 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Feature_GetFieldAsInteger__SWIG_0(void * jarg1, int jarg2) {
    int jresult = 0 ;
    OGRFeatureShadow *arg1 = (OGRFeatureShadow *) 0 ;
    int arg2 ;
    int result;
    
    arg1 = (OGRFeatureShadow *)jarg1; 
    arg2 = (int)jarg2; 
    result = (int)OGRFeatureShadow_GetFieldAsInteger__SWIG_0(arg1,arg2);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Feature_GetFieldAsInteger__SWIG_1(void * jarg1, char * jarg2) {
    int jresult = 0 ;
    OGRFeatureShadow *arg1 = (OGRFeatureShadow *) 0 ;
    char *arg2 = (char *) 0 ;
    int result;
    
    arg1 = (OGRFeatureShadow *)jarg1; 
    arg2 = jarg2; 
    result = (int)OGRFeatureShadow_GetFieldAsInteger__SWIG_1(arg1,(char const *)arg2);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT double SWIGSTDCALL CSharp_Feature_GetFieldAsDouble__SWIG_0(void * jarg1, int jarg2) {
    double jresult = 0 ;
    OGRFeatureShadow *arg1 = (OGRFeatureShadow *) 0 ;
    int arg2 ;
    double result;
    
    arg1 = (OGRFeatureShadow *)jarg1; 
    arg2 = (int)jarg2; 
    result = (double)OGRFeatureShadow_GetFieldAsDouble__SWIG_0(arg1,arg2);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT double SWIGSTDCALL CSharp_Feature_GetFieldAsDouble__SWIG_1(void * jarg1, char * jarg2) {
    double jresult = 0 ;
    OGRFeatureShadow *arg1 = (OGRFeatureShadow *) 0 ;
    char *arg2 = (char *) 0 ;
    double result;
    
    arg1 = (OGRFeatureShadow *)jarg1; 
    arg2 = jarg2; 
    result = (double)OGRFeatureShadow_GetFieldAsDouble__SWIG_1(arg1,(char const *)arg2);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Feature_IsFieldSet__SWIG_0(void * jarg1, int jarg2) {
    int jresult = 0 ;
    OGRFeatureShadow *arg1 = (OGRFeatureShadow *) 0 ;
    int arg2 ;
    int result;
    
    arg1 = (OGRFeatureShadow *)jarg1; 
    arg2 = (int)jarg2; 
    result = (int)OGRFeatureShadow_IsFieldSet__SWIG_0(arg1,arg2);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Feature_IsFieldSet__SWIG_1(void * jarg1, char * jarg2) {
    int jresult = 0 ;
    OGRFeatureShadow *arg1 = (OGRFeatureShadow *) 0 ;
    char *arg2 = (char *) 0 ;
    int result;
    
    arg1 = (OGRFeatureShadow *)jarg1; 
    arg2 = jarg2; 
    result = (int)OGRFeatureShadow_IsFieldSet__SWIG_1(arg1,(char const *)arg2);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Feature_GetFieldIndex(void * jarg1, char * jarg2) {
    int jresult = 0 ;
    OGRFeatureShadow *arg1 = (OGRFeatureShadow *) 0 ;
    char *arg2 = (char *) 0 ;
    int result;
    
    arg1 = (OGRFeatureShadow *)jarg1; 
    arg2 = jarg2; 
    result = (int)OGRFeatureShadow_GetFieldIndex(arg1,(char const *)arg2);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Feature_GetFID(void * jarg1) {
    int jresult = 0 ;
    OGRFeatureShadow *arg1 = (OGRFeatureShadow *) 0 ;
    int result;
    
    arg1 = (OGRFeatureShadow *)jarg1; 
    result = (int)OGRFeatureShadow_GetFID(arg1);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Feature_SetFID(void * jarg1, int jarg2) {
    int jresult = 0 ;
    OGRFeatureShadow *arg1 = (OGRFeatureShadow *) 0 ;
    int arg2 ;
    OGRErr result;
    
    arg1 = (OGRFeatureShadow *)jarg1; 
    arg2 = (int)jarg2; 
    result = (OGRErr)OGRFeatureShadow_SetFID(arg1,arg2);
    
    {
        /* %typemap(csharp, out) OGRErr */
        
    }
    {
        /* %typemap(csharp, ret) OGRErr */
        
    }
    return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_Feature_DumpReadable(void * jarg1) {
    OGRFeatureShadow *arg1 = (OGRFeatureShadow *) 0 ;
    
    arg1 = (OGRFeatureShadow *)jarg1; 
    OGRFeatureShadow_DumpReadable(arg1);
    
}


SWIGEXPORT void SWIGSTDCALL CSharp_Feature_UnsetField__SWIG_0(void * jarg1, int jarg2) {
    OGRFeatureShadow *arg1 = (OGRFeatureShadow *) 0 ;
    int arg2 ;
    
    arg1 = (OGRFeatureShadow *)jarg1; 
    arg2 = (int)jarg2; 
    OGRFeatureShadow_UnsetField__SWIG_0(arg1,arg2);
    
}


SWIGEXPORT void SWIGSTDCALL CSharp_Feature_UnsetField__SWIG_1(void * jarg1, char * jarg2) {
    OGRFeatureShadow *arg1 = (OGRFeatureShadow *) 0 ;
    char *arg2 = (char *) 0 ;
    
    arg1 = (OGRFeatureShadow *)jarg1; 
    arg2 = jarg2; 
    OGRFeatureShadow_UnsetField__SWIG_1(arg1,(char const *)arg2);
    
}


SWIGEXPORT void SWIGSTDCALL CSharp_Feature_SetField__SWIG_0(void * jarg1, int jarg2, char * jarg3) {
    OGRFeatureShadow *arg1 = (OGRFeatureShadow *) 0 ;
    int arg2 ;
    char *arg3 = (char *) 0 ;
    string str3 ;
    
    arg1 = (OGRFeatureShadow *)jarg1; 
    arg2 = (int)jarg2; 
    {
        /* %typemap(csharp,in) (tostring argin) */
        
    }
    OGRFeatureShadow_SetField__SWIG_0(arg1,arg2,(char const *)arg3);
    
}


SWIGEXPORT void SWIGSTDCALL CSharp_Feature_SetField__SWIG_1(void * jarg1, char * jarg2, char * jarg3) {
    OGRFeatureShadow *arg1 = (OGRFeatureShadow *) 0 ;
    char *arg2 = (char *) 0 ;
    char *arg3 = (char *) 0 ;
    string str3 ;
    
    arg1 = (OGRFeatureShadow *)jarg1; 
    arg2 = jarg2; 
    {
        /* %typemap(csharp,in) (tostring argin) */
        
    }
    OGRFeatureShadow_SetField__SWIG_1(arg1,(char const *)arg2,(char const *)arg3);
    
}


SWIGEXPORT int SWIGSTDCALL CSharp_Feature_SetFrom(void * jarg1, void * jarg2, int jarg3) {
    int jresult = 0 ;
    OGRFeatureShadow *arg1 = (OGRFeatureShadow *) 0 ;
    OGRFeatureShadow *arg2 = (OGRFeatureShadow *) 0 ;
    int arg3 = (int) 1 ;
    OGRErr result;
    
    arg1 = (OGRFeatureShadow *)jarg1; 
    arg2 = (OGRFeatureShadow *)jarg2; 
    arg3 = (int)jarg3; 
    result = (OGRErr)OGRFeatureShadow_SetFrom(arg1,arg2,arg3);
    
    {
        /* %typemap(csharp, out) OGRErr */
        
    }
    {
        /* %typemap(csharp, ret) OGRErr */
        
    }
    return jresult;
}


SWIGEXPORT char * SWIGSTDCALL CSharp_Feature_GetStyleString(void * jarg1) {
    char * jresult = 0 ;
    OGRFeatureShadow *arg1 = (OGRFeatureShadow *) 0 ;
    char *result;
    
    arg1 = (OGRFeatureShadow *)jarg1; 
    result = (char *)OGRFeatureShadow_GetStyleString(arg1);
    
    jresult = SWIG_csharp_string_callback(result); 
    return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_Feature_SetStyleString(void * jarg1, char * jarg2) {
    OGRFeatureShadow *arg1 = (OGRFeatureShadow *) 0 ;
    char *arg2 = (char *) 0 ;
    
    arg1 = (OGRFeatureShadow *)jarg1; 
    arg2 = jarg2; 
    OGRFeatureShadow_SetStyleString(arg1,(char const *)arg2);
    
}


SWIGEXPORT int SWIGSTDCALL CSharp_Feature_GetFieldType__SWIG_0(void * jarg1, int jarg2) {
    int jresult = 0 ;
    OGRFeatureShadow *arg1 = (OGRFeatureShadow *) 0 ;
    int arg2 ;
    OGRFieldType result;
    
    arg1 = (OGRFeatureShadow *)jarg1; 
    arg2 = (int)jarg2; 
    result = (OGRFieldType)OGRFeatureShadow_GetFieldType__SWIG_0(arg1,arg2);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Feature_GetFieldType__SWIG_1(void * jarg1, char * jarg2, char * jarg3) {
    int jresult = 0 ;
    OGRFeatureShadow *arg1 = (OGRFeatureShadow *) 0 ;
    char *arg2 = (char *) 0 ;
    char *arg3 = (char *) 0 ;
    OGRFieldType result;
    
    arg1 = (OGRFeatureShadow *)jarg1; 
    arg2 = jarg2; 
    arg3 = jarg3; 
    result = (OGRFieldType)OGRFeatureShadow_GetFieldType__SWIG_1(arg1,(char const *)arg2,(char const *)arg3);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_FeatureDefn(char * jarg1) {
    void * jresult = 0 ;
    char *arg1 = (char *) NULL ;
    OGRFeatureDefnShadow *result;
    
    arg1 = jarg1; 
    result = (OGRFeatureDefnShadow *)new_OGRFeatureDefnShadow((char const *)arg1);
    
    jresult = (void *)result; 
    return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_FeatureDefn_Destroy(void * jarg1) {
    OGRFeatureDefnShadow *arg1 = (OGRFeatureDefnShadow *) 0 ;
    
    arg1 = (OGRFeatureDefnShadow *)jarg1; 
    OGRFeatureDefnShadow_Destroy(arg1);
    
}


SWIGEXPORT char * SWIGSTDCALL CSharp_FeatureDefn_GetName(void * jarg1) {
    char * jresult = 0 ;
    OGRFeatureDefnShadow *arg1 = (OGRFeatureDefnShadow *) 0 ;
    char *result;
    
    arg1 = (OGRFeatureDefnShadow *)jarg1; 
    result = (char *)OGRFeatureDefnShadow_GetName(arg1);
    
    jresult = SWIG_csharp_string_callback(result); 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_FeatureDefn_GetFieldCount(void * jarg1) {
    int jresult = 0 ;
    OGRFeatureDefnShadow *arg1 = (OGRFeatureDefnShadow *) 0 ;
    int result;
    
    arg1 = (OGRFeatureDefnShadow *)jarg1; 
    result = (int)OGRFeatureDefnShadow_GetFieldCount(arg1);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_FeatureDefn_GetFieldDefn(void * jarg1, int jarg2) {
    void * jresult = 0 ;
    OGRFeatureDefnShadow *arg1 = (OGRFeatureDefnShadow *) 0 ;
    int arg2 ;
    OGRFieldDefnShadow *result;
    
    arg1 = (OGRFeatureDefnShadow *)jarg1; 
    arg2 = (int)jarg2; 
    result = (OGRFieldDefnShadow *)OGRFeatureDefnShadow_GetFieldDefn(arg1,arg2);
    
    jresult = (void *)result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_FeatureDefn_GetFieldIndex(void * jarg1, char * jarg2) {
    int jresult = 0 ;
    OGRFeatureDefnShadow *arg1 = (OGRFeatureDefnShadow *) 0 ;
    char *arg2 = (char *) 0 ;
    int result;
    
    arg1 = (OGRFeatureDefnShadow *)jarg1; 
    arg2 = jarg2; 
    result = (int)OGRFeatureDefnShadow_GetFieldIndex(arg1,(char const *)arg2);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_FeatureDefn_AddFieldDefn(void * jarg1, void * jarg2) {
    OGRFeatureDefnShadow *arg1 = (OGRFeatureDefnShadow *) 0 ;
    OGRFieldDefnShadow *arg2 = (OGRFieldDefnShadow *) 0 ;
    
    arg1 = (OGRFeatureDefnShadow *)jarg1; 
    arg2 = (OGRFieldDefnShadow *)jarg2; 
    OGRFeatureDefnShadow_AddFieldDefn(arg1,arg2);
    
}


SWIGEXPORT int SWIGSTDCALL CSharp_FeatureDefn_GetGeomType(void * jarg1) {
    int jresult = 0 ;
    OGRFeatureDefnShadow *arg1 = (OGRFeatureDefnShadow *) 0 ;
    OGRwkbGeometryType result;
    
    arg1 = (OGRFeatureDefnShadow *)jarg1; 
    result = (OGRwkbGeometryType)OGRFeatureDefnShadow_GetGeomType(arg1);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_FeatureDefn_SetGeomType(void * jarg1, int jarg2) {
    OGRFeatureDefnShadow *arg1 = (OGRFeatureDefnShadow *) 0 ;
    OGRwkbGeometryType arg2 ;
    
    arg1 = (OGRFeatureDefnShadow *)jarg1; 
    arg2 = (OGRwkbGeometryType)jarg2; 
    OGRFeatureDefnShadow_SetGeomType(arg1,arg2);
    
}


SWIGEXPORT int SWIGSTDCALL CSharp_FeatureDefn_Reference(void * jarg1) {
    int jresult = 0 ;
    OGRFeatureDefnShadow *arg1 = (OGRFeatureDefnShadow *) 0 ;
    int result;
    
    arg1 = (OGRFeatureDefnShadow *)jarg1; 
    result = (int)OGRFeatureDefnShadow_Reference(arg1);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_FeatureDefn_Dereference(void * jarg1) {
    int jresult = 0 ;
    OGRFeatureDefnShadow *arg1 = (OGRFeatureDefnShadow *) 0 ;
    int result;
    
    arg1 = (OGRFeatureDefnShadow *)jarg1; 
    result = (int)OGRFeatureDefnShadow_Dereference(arg1);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_FeatureDefn_GetReferenceCount(void * jarg1) {
    int jresult = 0 ;
    OGRFeatureDefnShadow *arg1 = (OGRFeatureDefnShadow *) 0 ;
    int result;
    
    arg1 = (OGRFeatureDefnShadow *)jarg1; 
    result = (int)OGRFeatureDefnShadow_GetReferenceCount(arg1);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_FieldDefn(char * jarg1, int jarg2) {
    void * jresult = 0 ;
    char *arg1 = (char *) "unnamed" ;
    OGRFieldType arg2 = (OGRFieldType) OFTString ;
    OGRFieldDefnShadow *result;
    
    arg1 = jarg1; 
    arg2 = (OGRFieldType)jarg2; 
    result = (OGRFieldDefnShadow *)new_OGRFieldDefnShadow((char const *)arg1,arg2);
    
    jresult = (void *)result; 
    return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_FieldDefn_Destroy(void * jarg1) {
    OGRFieldDefnShadow *arg1 = (OGRFieldDefnShadow *) 0 ;
    
    arg1 = (OGRFieldDefnShadow *)jarg1; 
    OGRFieldDefnShadow_Destroy(arg1);
    
}


SWIGEXPORT char * SWIGSTDCALL CSharp_FieldDefn_GetName(void * jarg1) {
    char * jresult = 0 ;
    OGRFieldDefnShadow *arg1 = (OGRFieldDefnShadow *) 0 ;
    char *result;
    
    arg1 = (OGRFieldDefnShadow *)jarg1; 
    result = (char *)OGRFieldDefnShadow_GetName(arg1);
    
    jresult = SWIG_csharp_string_callback(result); 
    return jresult;
}


SWIGEXPORT char * SWIGSTDCALL CSharp_FieldDefn_GetNameRef(void * jarg1) {
    char * jresult = 0 ;
    OGRFieldDefnShadow *arg1 = (OGRFieldDefnShadow *) 0 ;
    char *result;
    
    arg1 = (OGRFieldDefnShadow *)jarg1; 
    result = (char *)OGRFieldDefnShadow_GetNameRef(arg1);
    
    jresult = SWIG_csharp_string_callback(result); 
    return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_FieldDefn_SetName(void * jarg1, char * jarg2) {
    OGRFieldDefnShadow *arg1 = (OGRFieldDefnShadow *) 0 ;
    char *arg2 = (char *) 0 ;
    
    arg1 = (OGRFieldDefnShadow *)jarg1; 
    arg2 = jarg2; 
    OGRFieldDefnShadow_SetName(arg1,(char const *)arg2);
    
}


SWIGEXPORT int SWIGSTDCALL CSharp_FieldDefn_GetFieldType(void * jarg1) {
    int jresult = 0 ;
    OGRFieldDefnShadow *arg1 = (OGRFieldDefnShadow *) 0 ;
    OGRFieldType result;
    
    arg1 = (OGRFieldDefnShadow *)jarg1; 
    result = (OGRFieldType)OGRFieldDefnShadow_GetType(arg1);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_FieldDefn_SetType(void * jarg1, int jarg2) {
    OGRFieldDefnShadow *arg1 = (OGRFieldDefnShadow *) 0 ;
    OGRFieldType arg2 ;
    
    arg1 = (OGRFieldDefnShadow *)jarg1; 
    arg2 = (OGRFieldType)jarg2; 
    OGRFieldDefnShadow_SetType(arg1,arg2);
    
}


SWIGEXPORT int SWIGSTDCALL CSharp_FieldDefn_GetJustify(void * jarg1) {
    int jresult = 0 ;
    OGRFieldDefnShadow *arg1 = (OGRFieldDefnShadow *) 0 ;
    OGRJustification result;
    
    arg1 = (OGRFieldDefnShadow *)jarg1; 
    result = (OGRJustification)OGRFieldDefnShadow_GetJustify(arg1);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_FieldDefn_SetJustify(void * jarg1, int jarg2) {
    OGRFieldDefnShadow *arg1 = (OGRFieldDefnShadow *) 0 ;
    OGRJustification arg2 ;
    
    arg1 = (OGRFieldDefnShadow *)jarg1; 
    arg2 = (OGRJustification)jarg2; 
    OGRFieldDefnShadow_SetJustify(arg1,arg2);
    
}


SWIGEXPORT int SWIGSTDCALL CSharp_FieldDefn_GetWidth(void * jarg1) {
    int jresult = 0 ;
    OGRFieldDefnShadow *arg1 = (OGRFieldDefnShadow *) 0 ;
    int result;
    
    arg1 = (OGRFieldDefnShadow *)jarg1; 
    result = (int)OGRFieldDefnShadow_GetWidth(arg1);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_FieldDefn_SetWidth(void * jarg1, int jarg2) {
    OGRFieldDefnShadow *arg1 = (OGRFieldDefnShadow *) 0 ;
    int arg2 ;
    
    arg1 = (OGRFieldDefnShadow *)jarg1; 
    arg2 = (int)jarg2; 
    OGRFieldDefnShadow_SetWidth(arg1,arg2);
    
}


SWIGEXPORT int SWIGSTDCALL CSharp_FieldDefn_GetPrecision(void * jarg1) {
    int jresult = 0 ;
    OGRFieldDefnShadow *arg1 = (OGRFieldDefnShadow *) 0 ;
    int result;
    
    arg1 = (OGRFieldDefnShadow *)jarg1; 
    result = (int)OGRFieldDefnShadow_GetPrecision(arg1);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_FieldDefn_SetPrecision(void * jarg1, int jarg2) {
    OGRFieldDefnShadow *arg1 = (OGRFieldDefnShadow *) 0 ;
    int arg2 ;
    
    arg1 = (OGRFieldDefnShadow *)jarg1; 
    arg2 = (int)jarg2; 
    OGRFieldDefnShadow_SetPrecision(arg1,arg2);
    
}


SWIGEXPORT void * SWIGSTDCALL CSharp_CreateGeometryFromWkb(int jarg1, void * jarg3) {
    void * jresult = 0 ;
    int arg1 ;
    char *arg2 = (char *) 0 ;
    OSRSpatialReferenceShadow *arg3 = (OSRSpatialReferenceShadow *) NULL ;
    OGRGeometryShadow *result;
    
    {
        /* %typemap(csharp, in,numinputs=1) (int nLen, char *pBuf ) */
        
    }
    arg3 = (OSRSpatialReferenceShadow *)jarg3; 
    result = (OGRGeometryShadow *)CreateGeometryFromWkb(arg1,arg2,arg3);
    
    jresult = (void *)result; 
    return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_CreateGeometryFromWkt(void * jarg1, void * jarg2) {
    void * jresult = 0 ;
    char **arg1 = (char **) 0 ;
    OSRSpatialReferenceShadow *arg2 = (OSRSpatialReferenceShadow *) NULL ;
    OGRGeometryShadow *result;
    char *val1 ;
    
    {
        /* %typemap(csharp, in) (char **ignorechange) */
        
    }
    arg2 = (OSRSpatialReferenceShadow *)jarg2; 
    result = (OGRGeometryShadow *)CreateGeometryFromWkt(arg1,arg2);
    
    jresult = (void *)result; 
    return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_CreateGeometryFromGML(char * jarg1) {
    void * jresult = 0 ;
    char *arg1 = (char *) 0 ;
    OGRGeometryShadow *result;
    
    arg1 = jarg1; 
    result = (OGRGeometryShadow *)CreateGeometryFromGML((char const *)arg1);
    
    jresult = (void *)result; 
    return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_new_Geometry(int jarg1, char * jarg2, int jarg3, char * jarg4, char * jarg5) {
    void * jresult = 0 ;
    OGRwkbGeometryType arg1 = (OGRwkbGeometryType) wkbUnknown ;
    char *arg2 = (char *) 0 ;
    int arg3 = (int) 0 ;
    char *arg4 = (char *) 0 ;
    char *arg5 = (char *) 0 ;
    OGRGeometryShadow *result;
    
    arg1 = (OGRwkbGeometryType)jarg1; 
    arg2 = jarg2; 
    arg3 = (int)jarg3; 
    arg4 = jarg4; 
    arg5 = jarg5; 
    result = (OGRGeometryShadow *)new_OGRGeometryShadow(arg1,arg2,arg3,arg4,arg5);
    
    jresult = (void *)result; 
    return jresult;
}


SWIGEXPORT char * SWIGSTDCALL CSharp_Geometry_ExportToWkt(void * jarg1) {
    char * jresult = 0 ;
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    char *result;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    result = (char *)OGRGeometryShadow_ExportToWkt(arg1);
    
    jresult = SWIG_csharp_string_callback(result); 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Geometry_ExportToWkb(void * jarg1, int jarg4) {
    int jresult = 0 ;
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    int *arg2 = (int *) 0 ;
    char **arg3 = (char **) 0 ;
    OGRwkbByteOrder arg4 = (OGRwkbByteOrder) wkbXDR ;
    OGRErr result;
    int nLen2 ;
    char *pBuf2 ;
    
    {
        /* %typemap(csharp, in,numinputs=0) (int *nLen2, char **pBuf2 ) */
        arg2 = &nLen2;
        arg3 = &pBuf2;
    }
    arg1 = (OGRGeometryShadow *)jarg1; 
    arg4 = (OGRwkbByteOrder)jarg4; 
    result = (OGRErr)OGRGeometryShadow_ExportToWkb(arg1,arg2,arg3,arg4);
    
    {
        /* %typemap(csharp, out) OGRErr */
        
    }
    {
        /* %typemap(argout) (int *nLen, char **pBuf ) */
        
    }
    {
        /* %typemap(csharp,freearg) (int *nLen, char **pBuf ) */
        if( arg2 ) {
            free( *arg3 );
        }
    }
    {
        /* %typemap(csharp, ret) OGRErr */
        
    }
    return jresult;
}


SWIGEXPORT char * SWIGSTDCALL CSharp_Geometry_ExportToGML(void * jarg1) {
    char * jresult = 0 ;
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    char *result;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    result = (char *)OGRGeometryShadow_ExportToGML(arg1);
    
    jresult = SWIG_csharp_string_callback(result); 
    return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_Geometry_AddPoint(void * jarg1, double jarg2, double jarg3, double jarg4) {
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    double arg2 ;
    double arg3 ;
    double arg4 = (double) 0 ;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    arg2 = (double)jarg2; 
    arg3 = (double)jarg3; 
    arg4 = (double)jarg4; 
    OGRGeometryShadow_AddPoint(arg1,arg2,arg3,arg4);
    
}


SWIGEXPORT int SWIGSTDCALL CSharp_Geometry_AddGeometryDirectly(void * jarg1, void * jarg2) {
    int jresult = 0 ;
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    OGRGeometryShadow *arg2 = (OGRGeometryShadow *) 0 ;
    OGRErr result;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    arg2 = (OGRGeometryShadow *)jarg2; 
    result = (OGRErr)OGRGeometryShadow_AddGeometryDirectly(arg1,arg2);
    
    {
        /* %typemap(csharp, out) OGRErr */
        
    }
    {
        /* %typemap(csharp, ret) OGRErr */
        
    }
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Geometry_AddGeometry(void * jarg1, void * jarg2) {
    int jresult = 0 ;
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    OGRGeometryShadow *arg2 = (OGRGeometryShadow *) 0 ;
    OGRErr result;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    arg2 = (OGRGeometryShadow *)jarg2; 
    result = (OGRErr)OGRGeometryShadow_AddGeometry(arg1,arg2);
    
    {
        /* %typemap(csharp, out) OGRErr */
        
    }
    {
        /* %typemap(csharp, ret) OGRErr */
        
    }
    return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Geometry_Clone(void * jarg1) {
    void * jresult = 0 ;
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    OGRGeometryShadow *result;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    result = (OGRGeometryShadow *)OGRGeometryShadow_Clone(arg1);
    
    jresult = (void *)result; 
    return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_Geometry_Destroy(void * jarg1) {
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    OGRGeometryShadow_Destroy(arg1);
    
}


SWIGEXPORT int SWIGSTDCALL CSharp_Geometry_GetGeometryType(void * jarg1) {
    int jresult = 0 ;
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    OGRwkbGeometryType result;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    result = (OGRwkbGeometryType)OGRGeometryShadow_GetGeometryType(arg1);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT char * SWIGSTDCALL CSharp_Geometry_GetGeometryName(void * jarg1) {
    char * jresult = 0 ;
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    char *result;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    result = (char *)OGRGeometryShadow_GetGeometryName(arg1);
    
    jresult = SWIG_csharp_string_callback(result); 
    return jresult;
}


SWIGEXPORT double SWIGSTDCALL CSharp_Geometry_GetArea(void * jarg1) {
    double jresult = 0 ;
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    double result;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    result = (double)OGRGeometryShadow_GetArea(arg1);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Geometry_GetPointCount(void * jarg1) {
    int jresult = 0 ;
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    int result;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    result = (int)OGRGeometryShadow_GetPointCount(arg1);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT double SWIGSTDCALL CSharp_Geometry_GetX(void * jarg1, int jarg2) {
    double jresult = 0 ;
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    int arg2 = (int) 0 ;
    double result;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    arg2 = (int)jarg2; 
    result = (double)OGRGeometryShadow_GetX(arg1,arg2);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT double SWIGSTDCALL CSharp_Geometry_GetY(void * jarg1, int jarg2) {
    double jresult = 0 ;
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    int arg2 = (int) 0 ;
    double result;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    arg2 = (int)jarg2; 
    result = (double)OGRGeometryShadow_GetY(arg1,arg2);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT double SWIGSTDCALL CSharp_Geometry_GetZ(void * jarg1, int jarg2) {
    double jresult = 0 ;
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    int arg2 = (int) 0 ;
    double result;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    arg2 = (int)jarg2; 
    result = (double)OGRGeometryShadow_GetZ(arg1,arg2);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Geometry_GetGeometryCount(void * jarg1) {
    int jresult = 0 ;
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    int result;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    result = (int)OGRGeometryShadow_GetGeometryCount(arg1);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_Geometry_SetPoint(void * jarg1, int jarg2, double jarg3, double jarg4, double jarg5) {
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    int arg2 ;
    double arg3 ;
    double arg4 ;
    double arg5 = (double) 0 ;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    arg2 = (int)jarg2; 
    arg3 = (double)jarg3; 
    arg4 = (double)jarg4; 
    arg5 = (double)jarg5; 
    OGRGeometryShadow_SetPoint(arg1,arg2,arg3,arg4,arg5);
    
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Geometry_GetGeometryRef(void * jarg1, int jarg2) {
    void * jresult = 0 ;
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    int arg2 ;
    OGRGeometryShadow *result;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    arg2 = (int)jarg2; 
    result = (OGRGeometryShadow *)OGRGeometryShadow_GetGeometryRef(arg1,arg2);
    
    jresult = (void *)result; 
    return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Geometry_GetBoundary(void * jarg1) {
    void * jresult = 0 ;
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    OGRGeometryShadow *result;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    result = (OGRGeometryShadow *)OGRGeometryShadow_GetBoundary(arg1);
    
    jresult = (void *)result; 
    return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Geometry_ConvexHull(void * jarg1) {
    void * jresult = 0 ;
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    OGRGeometryShadow *result;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    result = (OGRGeometryShadow *)OGRGeometryShadow_ConvexHull(arg1);
    
    jresult = (void *)result; 
    return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Geometry_Buffer(void * jarg1, double jarg2, int jarg3) {
    void * jresult = 0 ;
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    double arg2 ;
    int arg3 = (int) 30 ;
    OGRGeometryShadow *result;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    arg2 = (double)jarg2; 
    arg3 = (int)jarg3; 
    result = (OGRGeometryShadow *)OGRGeometryShadow_Buffer(arg1,arg2,arg3);
    
    jresult = (void *)result; 
    return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Geometry_Intersection(void * jarg1, void * jarg2) {
    void * jresult = 0 ;
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    OGRGeometryShadow *arg2 = (OGRGeometryShadow *) 0 ;
    OGRGeometryShadow *result;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    arg2 = (OGRGeometryShadow *)jarg2; 
    result = (OGRGeometryShadow *)OGRGeometryShadow_Intersection(arg1,arg2);
    
    jresult = (void *)result; 
    return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Geometry_Union(void * jarg1, void * jarg2) {
    void * jresult = 0 ;
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    OGRGeometryShadow *arg2 = (OGRGeometryShadow *) 0 ;
    OGRGeometryShadow *result;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    arg2 = (OGRGeometryShadow *)jarg2; 
    result = (OGRGeometryShadow *)OGRGeometryShadow_Union(arg1,arg2);
    
    jresult = (void *)result; 
    return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Geometry_Difference(void * jarg1, void * jarg2) {
    void * jresult = 0 ;
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    OGRGeometryShadow *arg2 = (OGRGeometryShadow *) 0 ;
    OGRGeometryShadow *result;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    arg2 = (OGRGeometryShadow *)jarg2; 
    result = (OGRGeometryShadow *)OGRGeometryShadow_Difference(arg1,arg2);
    
    jresult = (void *)result; 
    return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Geometry_SymmetricDifference(void * jarg1, void * jarg2) {
    void * jresult = 0 ;
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    OGRGeometryShadow *arg2 = (OGRGeometryShadow *) 0 ;
    OGRGeometryShadow *result;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    arg2 = (OGRGeometryShadow *)jarg2; 
    result = (OGRGeometryShadow *)OGRGeometryShadow_SymmetricDifference(arg1,arg2);
    
    jresult = (void *)result; 
    return jresult;
}


SWIGEXPORT double SWIGSTDCALL CSharp_Geometry_Distance(void * jarg1, void * jarg2) {
    double jresult = 0 ;
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    OGRGeometryShadow *arg2 = (OGRGeometryShadow *) 0 ;
    double result;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    arg2 = (OGRGeometryShadow *)jarg2; 
    result = (double)OGRGeometryShadow_Distance(arg1,arg2);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_Geometry_Empty(void * jarg1) {
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    OGRGeometryShadow_Empty(arg1);
    
}


SWIGEXPORT int SWIGSTDCALL CSharp_Geometry_Intersect(void * jarg1, void * jarg2) {
    int jresult = 0 ;
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    OGRGeometryShadow *arg2 = (OGRGeometryShadow *) 0 ;
    int result;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    arg2 = (OGRGeometryShadow *)jarg2; 
    result = (int)OGRGeometryShadow_Intersect(arg1,arg2);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Geometry_Equal(void * jarg1, void * jarg2) {
    int jresult = 0 ;
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    OGRGeometryShadow *arg2 = (OGRGeometryShadow *) 0 ;
    int result;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    arg2 = (OGRGeometryShadow *)jarg2; 
    result = (int)OGRGeometryShadow_Equal(arg1,arg2);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Geometry_Disjoint(void * jarg1, void * jarg2) {
    int jresult = 0 ;
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    OGRGeometryShadow *arg2 = (OGRGeometryShadow *) 0 ;
    int result;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    arg2 = (OGRGeometryShadow *)jarg2; 
    result = (int)OGRGeometryShadow_Disjoint(arg1,arg2);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Geometry_Touches(void * jarg1, void * jarg2) {
    int jresult = 0 ;
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    OGRGeometryShadow *arg2 = (OGRGeometryShadow *) 0 ;
    int result;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    arg2 = (OGRGeometryShadow *)jarg2; 
    result = (int)OGRGeometryShadow_Touches(arg1,arg2);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Geometry_Crosses(void * jarg1, void * jarg2) {
    int jresult = 0 ;
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    OGRGeometryShadow *arg2 = (OGRGeometryShadow *) 0 ;
    int result;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    arg2 = (OGRGeometryShadow *)jarg2; 
    result = (int)OGRGeometryShadow_Crosses(arg1,arg2);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Geometry_Within(void * jarg1, void * jarg2) {
    int jresult = 0 ;
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    OGRGeometryShadow *arg2 = (OGRGeometryShadow *) 0 ;
    int result;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    arg2 = (OGRGeometryShadow *)jarg2; 
    result = (int)OGRGeometryShadow_Within(arg1,arg2);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Geometry_Contains(void * jarg1, void * jarg2) {
    int jresult = 0 ;
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    OGRGeometryShadow *arg2 = (OGRGeometryShadow *) 0 ;
    int result;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    arg2 = (OGRGeometryShadow *)jarg2; 
    result = (int)OGRGeometryShadow_Contains(arg1,arg2);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Geometry_Overlaps(void * jarg1, void * jarg2) {
    int jresult = 0 ;
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    OGRGeometryShadow *arg2 = (OGRGeometryShadow *) 0 ;
    int result;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    arg2 = (OGRGeometryShadow *)jarg2; 
    result = (int)OGRGeometryShadow_Overlaps(arg1,arg2);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Geometry_TransformTo(void * jarg1, void * jarg2) {
    int jresult = 0 ;
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    OSRSpatialReferenceShadow *arg2 = (OSRSpatialReferenceShadow *) 0 ;
    OGRErr result;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    arg2 = (OSRSpatialReferenceShadow *)jarg2; 
    result = (OGRErr)OGRGeometryShadow_TransformTo(arg1,arg2);
    
    {
        /* %typemap(csharp, out) OGRErr */
        
    }
    {
        /* %typemap(csharp, ret) OGRErr */
        
    }
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Geometry_Transform(void * jarg1, void * jarg2) {
    int jresult = 0 ;
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    OSRCoordinateTransformationShadow *arg2 = (OSRCoordinateTransformationShadow *) 0 ;
    OGRErr result;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    arg2 = (OSRCoordinateTransformationShadow *)jarg2; 
    result = (OGRErr)OGRGeometryShadow_Transform(arg1,arg2);
    
    {
        /* %typemap(csharp, out) OGRErr */
        
    }
    {
        /* %typemap(csharp, ret) OGRErr */
        
    }
    return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Geometry_GetSpatialReference(void * jarg1) {
    void * jresult = 0 ;
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    OSRSpatialReferenceShadow *result;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    result = (OSRSpatialReferenceShadow *)OGRGeometryShadow_GetSpatialReference(arg1);
    
    jresult = (void *)result; 
    return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_Geometry_AssignSpatialReference(void * jarg1, void * jarg2) {
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    OSRSpatialReferenceShadow *arg2 = (OSRSpatialReferenceShadow *) 0 ;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    arg2 = (OSRSpatialReferenceShadow *)jarg2; 
    OGRGeometryShadow_AssignSpatialReference(arg1,arg2);
    
}


SWIGEXPORT void SWIGSTDCALL CSharp_Geometry_CloseRings(void * jarg1) {
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    OGRGeometryShadow_CloseRings(arg1);
    
}


SWIGEXPORT void SWIGSTDCALL CSharp_Geometry_FlattenTo2D(void * jarg1) {
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    OGRGeometryShadow_FlattenTo2D(arg1);
    
}


SWIGEXPORT void SWIGSTDCALL CSharp_Geometry_GetEnvelope(void * jarg1) {
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    double *arg2 ;
    double argout2[4] ;
    
    {
        /* %typemap(in,numinputs=0) (double argout2[ANY]) */
        
    }
    arg1 = (OGRGeometryShadow *)jarg1; 
    OGRGeometryShadow_GetEnvelope(arg1,arg2);
    
    {
        /* %typemap(argout) (double argout[ANY]) */
        
    }
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Geometry_Centroid(void * jarg1) {
    void * jresult = 0 ;
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    OGRGeometryShadow *result;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    result = (OGRGeometryShadow *)OGRGeometryShadow_Centroid(arg1);
    
    jresult = (void *)result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Geometry_WkbSize(void * jarg1) {
    int jresult = 0 ;
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    int result;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    result = (int)OGRGeometryShadow_WkbSize(arg1);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Geometry_GetCoordinateDimension(void * jarg1) {
    int jresult = 0 ;
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    int result;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    result = (int)OGRGeometryShadow_GetCoordinateDimension(arg1);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_Geometry_GetDimension(void * jarg1) {
    int jresult = 0 ;
    OGRGeometryShadow *arg1 = (OGRGeometryShadow *) 0 ;
    int result;
    
    arg1 = (OGRGeometryShadow *)jarg1; 
    result = (int)OGRGeometryShadow_GetDimension(arg1);
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_GetDriverCount() {
    int jresult = 0 ;
    int result;
    
    result = (int)OGRGetDriverCount();
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_GetOpenDSCount() {
    int jresult = 0 ;
    int result;
    
    result = (int)OGRGetOpenDSCount();
    
    jresult = result; 
    return jresult;
}


SWIGEXPORT int SWIGSTDCALL CSharp_SetGenerate_DB2_V72_BYTE_ORDER(int jarg1) {
    int jresult = 0 ;
    int arg1 ;
    OGRErr result;
    
    arg1 = (int)jarg1; 
    result = (OGRErr)OGRSetGenerate_DB2_V72_BYTE_ORDER(arg1);
    
    {
        /* %typemap(csharp, out) OGRErr */
        
    }
    {
        /* %typemap(csharp, ret) OGRErr */
        
    }
    return jresult;
}


SWIGEXPORT void SWIGSTDCALL CSharp_RegisterAll() {
    OGRRegisterAll();
    
}


SWIGEXPORT void * SWIGSTDCALL CSharp_OGR_GetDriverByName(char * jarg1) {
    void * jresult = 0 ;
    char *arg1 = (char *) 0 ;
    OGRDriverShadow *result;
    
    arg1 = jarg1; 
    result = (OGRDriverShadow *)OGR_GetDriverByName((char const *)arg1);
    
    jresult = (void *)result; 
    return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_OGR_GetDriver(int jarg1) {
    void * jresult = 0 ;
    int arg1 ;
    OGRDriverShadow *result;
    
    arg1 = (int)jarg1; 
    result = (OGRDriverShadow *)OGR_GetDriver(arg1);
    
    jresult = (void *)result; 
    return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_GetOpenDS(int jarg1) {
    void * jresult = 0 ;
    int arg1 ;
    OGRDataSourceShadow *result;
    
    arg1 = (int)jarg1; 
    result = (OGRDataSourceShadow *)GetOpenDS(arg1);
    
    jresult = (void *)result; 
    return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Open__SWIG_0(char * jarg1, int jarg2) {
    void * jresult = 0 ;
    char *arg1 = (char *) 0 ;
    int arg2 ;
    OGRDataSourceShadow *result;
    
    arg1 = jarg1; 
    arg2 = (int)jarg2; 
    result = (OGRDataSourceShadow *)Open((char const *)arg1,arg2);
    
    jresult = (void *)result; 
    return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_Open__SWIG_1(char * jarg1) {
    void * jresult = 0 ;
    char *arg1 = (char *) 0 ;
    OGRDataSourceShadow *result;
    
    arg1 = jarg1; 
    result = (OGRDataSourceShadow *)Open((char const *)arg1);
    
    jresult = (void *)result; 
    return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_OpenShared__SWIG_0(char * jarg1, int jarg2) {
    void * jresult = 0 ;
    char *arg1 = (char *) 0 ;
    int arg2 ;
    OGRDataSourceShadow *result;
    
    arg1 = jarg1; 
    arg2 = (int)jarg2; 
    result = (OGRDataSourceShadow *)OpenShared((char const *)arg1,arg2);
    
    jresult = (void *)result; 
    return jresult;
}


SWIGEXPORT void * SWIGSTDCALL CSharp_OpenShared__SWIG_1(char * jarg1) {
    void * jresult = 0 ;
    char *arg1 = (char *) 0 ;
    OGRDataSourceShadow *result;
    
    arg1 = jarg1; 
    result = (OGRDataSourceShadow *)OpenShared((char const *)arg1);
    
    jresult = (void *)result; 
    return jresult;
}


#ifdef __cplusplus
}
#endif

