diff -urN gdal-1.4.1-orig/dist_docs/burnpath.c gdal-1.4.1/dist_docs/burnpath.c
--- gdal-1.4.1-orig/dist_docs/burnpath.c	2002-05-10 16:31:51.000000000 +0200
+++ gdal-1.4.1/dist_docs/burnpath.c	1970-01-01 01:00:00.000000000 +0100
@@ -1,113 +0,0 @@
-#include <stdio.h>
-#include <string.h>
-
-const static int block_size = 10000;
-
-/************************************************************************/
-/*                                main()                                */
-/************************************************************************/
-int main( int argc, char ** argv )
-
-{
-    FILE	*fp;
-    int		offset, size, overlap;
-    const char *marker;
-    const char *path;
-    const char *targetfile;
-    char        blockbuf[block_size+1];
-
-/* -------------------------------------------------------------------- */
-/*      Usage message.                                                  */
-/* -------------------------------------------------------------------- */
-    if( argc < 4 )
-    {
-        printf( "\n" );
-        printf( "Usage: burnpath <targetfile> <marker_string> <path>\n" );
-        printf( "\n" );
-        printf( "eg. \n" );
-        printf( "   %% burnpath /opt/lib/libgdal.1.1.so __INST_DATA_TARGET: /opt/share/gdal\n" );
-        exit( 1 );
-    }
-
-    targetfile = argv[1];
-    marker = argv[2];
-    path = argv[3];
-
-    overlap = strlen(marker) + strlen(path) + 1;
-
-/* -------------------------------------------------------------------- */
-/*      Open the target file.                                           */
-/* -------------------------------------------------------------------- */
-    fp = fopen( targetfile, "r+" );
-    if( fp == NULL )
-    {
-        perror( "fopen" );
-        exit( 1 );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Establish the file length.                                      */
-/* -------------------------------------------------------------------- */
-    fseek( fp, 0, SEEK_END );
-    size = ftell( fp );
-    fseek( fp, 0, SEEK_SET );
-
-/* -------------------------------------------------------------------- */
-/*      Read in the file in overlapping chunks.  We assume the          */
-/*      "space" after the marker could be up to 200 bytes.              */
-/* -------------------------------------------------------------------- */
-    for( offset = 0; offset < size; offset += block_size - overlap )
-    {
-        int    block_bytes, block_modified = 0, i;
-
-        if( offset + block_size < size )
-            block_bytes = block_size;
-        else
-            block_bytes = size - offset;
-
-        if( fseek( fp, offset, SEEK_SET ) != 0 )
-        {
-            perror( "fseek" );
-            exit( 1 );
-        }
-
-        if( fread( blockbuf, block_bytes, 1, fp ) != 1 )
-        {
-            perror( "fread" );
-            exit( 1 );
-        }
-        blockbuf[block_bytes] = '\0';
-
-        for( i = 0; i < block_bytes - overlap; i++ )
-        {
-            if( blockbuf[i] == marker[0]
-                && strncmp( blockbuf + i, marker, strlen(marker) ) == 0 )
-            {
-                strcpy( blockbuf+i+strlen(marker), path );
-                block_modified = 1;
-            }
-        }
-
-        if( block_modified )
-        {
-            if( fseek( fp, offset, SEEK_SET ) != 0 )
-            {
-                perror( "fseek" );
-                exit( 1 );
-            }
-
-            if( fwrite( blockbuf, block_bytes, 1, fp ) != 1 )
-            {
-                perror( "fwrite" );
-                exit( 1 );
-            }
-        }
-    }
-
-/* -------------------------------------------------------------------- */
-/*      We are done.                                                    */
-/* -------------------------------------------------------------------- */
-    fclose( fp );
-
-    exit( 0 );
-}
diff -urN gdal-1.4.1-orig/dist_docs/install_unx.sh gdal-1.4.1/dist_docs/install_unx.sh
--- gdal-1.4.1-orig/dist_docs/install_unx.sh	2003-07-02 08:38:54.000000000 +0200
+++ gdal-1.4.1/dist_docs/install_unx.sh	1970-01-01 01:00:00.000000000 +0100
@@ -1,70 +0,0 @@
-#!/bin/sh
-
-if test $# -eq 0; then
-    echo "Usage: install_unx.sh install-path"
-    echo
-    echo "This script will attempt to install GDAL binaries, and shared"
-    echo "library in the named location."
-    exit 1
-fi
-
-PREFIX=$1
-
-if test ! -d $PREFIX ; then
-  echo "Directory $PREFIX does not exist.  Please create or correct."
-  exit 1
-fi
-
-if test ! -f bin/gdalinfo ; then
-  echo "This script must be run from within the unpacked binary distribution"
-  echo "directory."
-  exit 1
-fi
-
-###############################################################################
-# Ensure required subdirectories exist.
-#
-
-if test ! -d $PREFIX/lib ; then
-  mkdir $PREFIX/lib
-fi
-if test ! -d $PREFIX/bin ; then
-  mkdir $PREFIX/bin
-fi
-if test ! -d $PREFIX/share ; then
-  mkdir $PREFIX/share
-fi
-if test ! -d $PREFIX/share/gdal ; then
-  mkdir $PREFIX/share/gdal
-fi
-
-###############################################################################
-# The following is intended to "burn" an updated INST_DATA location
-# into the given file over the preformatted message embedded in the so.
-# Look at gcore/gdaldrivermanager.cpp for a clue as to what is going on there.
-#
-
-SHARED_LIB=libgdal.1.1.so
-
-for SHARED_LIB in lib/* ; do
-  cp $SHARED_LIB $PREFIX/lib
-  bin/burnpath $PREFIX/$SHARED_LIB __INST_DATA_TARGET: $PREFIX/share/gdal
-done
-
-###############################################################################
-# Copy the rest of the files.
-#
-
-cp share/gdal/* $PREFIX/share/gdal
-
-for EXECUTABLE in bin/* ; do
-  if test "$EXECUTABLE" == "bin/gdal-config" -o "$EXECUTABLE" == "bin/burnpath" ; then
-    /bin/true
-  else
-    cp $EXECUTABLE $PREFIX/bin
-    bin/burnpath $PREFIX/$EXECUTABLE __INST_DATA_TARGET: $PREFIX/share/gdal
-  fi
-done
-
-echo "Installation of GDAL to $PREFIX complete."
-
diff -urN gdal-1.4.1-orig/dist_docs/README_UNX_BIN.TXT gdal-1.4.1/dist_docs/README_UNX_BIN.TXT
--- gdal-1.4.1-orig/dist_docs/README_UNX_BIN.TXT	2002-05-10 16:39:11.000000000 +0200
+++ gdal-1.4.1/dist_docs/README_UNX_BIN.TXT	1970-01-01 01:00:00.000000000 +0100
@@ -1,71 +0,0 @@
-
-		GDAL/OGR Binary Release
-		=======================
-
-This is a release of GDAL/OGR libraries and related utilities.  Full
-information on GDAL and OGR can be found at:
-
-  http://www.remotesensing.org/gdal                (GDAL)
-  http://gdal.velocet.ca/projects/opengis          (OGR)
-
-Details on the utility programs in this package can be found specifically at:
-
-  http://www.remotesensing.org/gdal/gdal_utilities.html
-  http://gdal.velocet.ca/projets/opengis/ogrhtml/ogr_utilities.html
-
-
-Installing GDAL/OGR
--------------------
-
-The install_unx.sh script can be used to install GDAL into an existing
-file system tree such as /usr/local or /usr.  It assumes that the 
-$PREFIX/bin directory will already be in the user path, and that 
-$PREFIX/lib is already in the LD_LIBRARY_PATH or configured for ldconfig.
-If ldconfig is used it may be necessary to rerun ldconfig as root. 
-
-To install:
-
- ./install_unx.sh /usr/local
-
-Note that html documentation and python files are not installed.  Only the
-shared library, binaries and shared data files are installed into
-$PREFIX/lib, $PREFIX/bin and $PREFIX/share/gdal respectively.
-
-After installation the "gdalinfo --version" command can be used to determine
-if the installation was successful.  Then use "gdal_translate --version"
-to verify that the shared libraries are being found properly.  If not
-add $PREFIX/lib to the LD_LIBRARY_PATH or rerun ldconfig as appropriate
-to local usage and the platform in question. 
-
-
-Using GDAL/OGR Without Installing
----------------------------------
-
-To utilize GDAL/OGR the following steps need to be followed:
-
- 1) Define GDAL_HOME to point to this directory.
- 2) Ensure that $GDAL_HOME/lib is in the LD_LIBRARY_PATH.
- 3) Ensure $GDAL_HOME/bin is in the PATH. 
-
-The following commands in a .cshrc file (for csh or tcsh) should suffice:
-
-  setenv GDAL_HOME ...insert path to this distribution directory...
-  set path = ($path $GDAL_HOME/bin)
-  if ( $?LD_LIBRARY_PATH == 0 ) then
-    setenv LD_LIBRARY_PATH $GDAL_HOME/lib
-  else
-    setenv LD_LIBRARY_PATH $LD_LIBRARY_PATH:$GDAL_HOME/lib
-  endif
-
-The following commands should work for bash, sh, ksh and zsh:
-
-  GDAL_HOME=...insert path to this distribution directory...
-  export GDAL_HOME
-  PATH=$PATH:$GDAL_HOME/bin
-  if test "${LD_LIBRARY_PATH:-EMPTY}" == "EMPTY" ; then
-    LD_LIBRARY_PATH=$GDAL_HOME/lib
-    export LD_LIBRARY_PATH
-  else
-    LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$GDAL_HOME/lib
-  fi
-
diff -urN gdal-1.4.1-orig/dist_docs/README_WIN_BIN.TXT gdal-1.4.1/dist_docs/README_WIN_BIN.TXT
--- gdal-1.4.1-orig/dist_docs/README_WIN_BIN.TXT	2003-02-13 18:21:34.000000000 +0100
+++ gdal-1.4.1/dist_docs/README_WIN_BIN.TXT	1970-01-01 01:00:00.000000000 +0100
@@ -1,86 +0,0 @@
-	GDAL Binary Distribution for Windows
-	====================================
-
-This distribution contains files necessary to use GDAL utility applications,
-as well as library and include files necessary to compile and link other
-programs against GDAL.  It also include support for using GDAL from Python 2.0.
-
-Local information about GDAL can be found in html\index.html.
-
-eg. 
-  start html\index.html
-
-Central information can be found at:
-
-  http://www.remotesensing.org/gdal
-
-
-Installation
-------------
-
-It is sufficient to unzip this distribution somewhere on your harddrive, and
-add the GDALxxx\BIN directory to your path (where xxx is the version). 
-Alternatively, just copy the contents of the BIN directory to somewhere in
-your path.
-
-For those wanting to develop with GDAL using VC++ commandline tools, a small
-setup script has been written to update the environment appropriately. To 
-use it, edit SETUP_GDAL.BAT, and modify the GDAL_DIR environment to point to
-where GDAL has been put.  Then run SETUP_GDAL.BAT in a DOS window before
-trying to compile against GDAL. 
-
-Utility Programs
-----------------
-
-The following GDAL and OGR utility programs should be available in the bin
-directory.  Visit the GDAL web page for more information on the utility
-programs. 
-
-  gdalinfo.exe: Report summary information about a GDAL supported raster file.
-  gdal_translate.exe: Translate GDAL supported raster files into other formats.
-  gdaladdo: Add overviews to selected GDAL supported formats. 
-  ogrinfo: Dump information about OGR supported vector formats.
-  ogr2ogr: Translate OGR supported vector formats to OGR supported formats.
-
-
-More Detailed Manifest
-----------------------
-
-BIN		All distributed executables, and the DLLs required for them.
-		The GDAL11.DLL is the main GDAL/OGR DLL.  PROJ.DLL is the
-		PROJ.4 DLL used by GDAL for reprojection.
-
-HTML		Web pages, a snapshot of the www.remotesensing.org/gdal web
-		pages at the time the distribution was prepared.
-
-INCLUDE		GDAL and OGR include files.  
-
-LIB		GDAL/OGR libraries.  GDAL.LIB is the omnibus GDAL/OGR static
-		library.  GDAL_I.LIB is the stub (interface) library for the
-		GDAL11.DLL.  Link against GDAL_I.LIB to use the DLL. 
-
-DATA		Data files required by OGRSpatialReference and the GDAL 
-		GeoTIFF driver for looking up EPSG coordinate systems.  Define
-		GEOTIFF_CSV to point to the directory where these files are 
-		found. 
-
-PYMOD		Python extensions for GDAL.  Add this directory to your 
-		PYTHONPATH to use from python.
-
-Supported Formats
------------------
-
-The html\formats_list.html document contains a generic list of supported 
-formats for GDAL, but the following issues should be kept in mind for standard
-builds on Windows:
-
-GDAL:
- o OGDI is omitted.
- o FITS is omitted.
- o GRASS omitted.
- o JPEG, PNG, GeoTIFF are all using internal library code. 
-
-OGR:
- o OGDI omitted.
- o PostgreSQL omitted.
-
diff -urN gdal-1.4.1-orig/dist_docs/SETUP_GDAL.BAT gdal-1.4.1/dist_docs/SETUP_GDAL.BAT
--- gdal-1.4.1-orig/dist_docs/SETUP_GDAL.BAT	2002-01-14 19:34:33.000000000 +0100
+++ gdal-1.4.1/dist_docs/SETUP_GDAL.BAT	1970-01-01 01:00:00.000000000 +0100
@@ -1,24 +0,0 @@
-@echo off
-
-set GDAL_DIR=c:\gdal114
-
-if exist %GDAL_DIR%\SETUP_GDAL.BAT goto DIROK
-
-echo -----------------------------------------------------------------------
-echo It appears that the GDAL_DIR environment variable is not set properly
-echo in SETUP_GDAL.BAT.  Please edit GDAL_SETUP.BAT, and modify the GDAL_DIR
-echo variable to contain the directory containing the SETUP_GDAL.BAT ... the
-echo base directory of the unzipped GDAL tree.
-echo -----------------------------------------------------------------------
-
-goto Done
-
-:DIROK
-
-set PATH=%GDAL_DIR%\bin;%PATH%
-set INCLUDE=%GDAL_DIR%\include;%INCLUDE%
-set LIB=%GDAL_DIR%\include;%LIB%
-set PYTHONPATH=%GDAL_DIR%\pymod;%PYTHONPATH%
-set GEOTIFF_CSV=%GDAL_DIR%\data
-
-:Done
\ No newline at end of file
diff -urN gdal-1.4.1-orig/frmts/gtiff/gt_wkt_srs.cpp gdal-1.4.1/frmts/gtiff/gt_wkt_srs.cpp
--- gdal-1.4.1-orig/frmts/gtiff/gt_wkt_srs.cpp	2007-02-26 19:35:59.000000000 +0100
+++ gdal-1.4.1/frmts/gtiff/gt_wkt_srs.cpp	2007-04-10 17:15:40.000000000 +0200
@@ -164,11 +164,11 @@
 /************************************************************************/
 
 /* For example:
-   GTCitationGeoKey (Ascii,215): "IMAGINE GeoTIFF Support\nCopyright 1991 - 2001 by ERDAS, Inc. All Rights Reserved\n@(#)$RCSfile$ $Revision: 10850 $ $Date: 2007-02-26 19:35:59 +0100 (lun, 26 feb 2007) $\nProjection Name = UTM\nUnits = meters\nGeoTIFF Units = meters"
+   GTCitationGeoKey (Ascii,215): "IMAGINE GeoTIFF Support\nCopyright 1991 - 2001 by ERDAS, Inc. All Rights Reserved\n@(#)$RCSfile$ $Revision: 10850 $ $Date: 2007-02-26 10:35:59 -0800 (Mon, 26 Feb 2007) $\nProjection Name = UTM\nUnits = meters\nGeoTIFF Units = meters"
 
-   GeogCitationGeoKey (Ascii,267): "IMAGINE GeoTIFF Support\nCopyright 1991 - 2001 by ERDAS, Inc. All Rights Reserved\n@(#)$RCSfile$ $Revision: 10850 $ $Date: 2007-02-26 19:35:59 +0100 (lun, 26 feb 2007) $\nUnable to match Ellipsoid (Datum) to a GeographicTypeGeoKey value\nEllipsoid = Clarke 1866\nDatum = NAD27 (CONUS)"
+   GeogCitationGeoKey (Ascii,267): "IMAGINE GeoTIFF Support\nCopyright 1991 - 2001 by ERDAS, Inc. All Rights Reserved\n@(#)$RCSfile$ $Revision: 10850 $ $Date: 2007-02-26 10:35:59 -0800 (Mon, 26 Feb 2007) $\nUnable to match Ellipsoid (Datum) to a GeographicTypeGeoKey value\nEllipsoid = Clarke 1866\nDatum = NAD27 (CONUS)"
 
-   PCSCitationGeoKey (Ascii,214): "IMAGINE GeoTIFF Support\nCopyright 1991 - 2001 by ERDAS, Inc. All Rights Reserved\n@(#)$RCSfile$ $Revision: 10850 $ $Date: 2007-02-26 19:35:59 +0100 (lun, 26 feb 2007) $\nUTM Zone 10N\nEllipsoid = Clarke 1866\nDatum = NAD27 (CONUS)"
+   PCSCitationGeoKey (Ascii,214): "IMAGINE GeoTIFF Support\nCopyright 1991 - 2001 by ERDAS, Inc. All Rights Reserved\n@(#)$RCSfile$ $Revision: 10850 $ $Date: 2007-02-26 10:35:59 -0800 (Mon, 26 Feb 2007) $\nUTM Zone 10N\nEllipsoid = Clarke 1866\nDatum = NAD27 (CONUS)"
  
 */
 
diff -urN gdal-1.4.1-orig/m4/ax_oracle_oci.m4 gdal-1.4.1/m4/ax_oracle_oci.m4
--- gdal-1.4.1-orig/m4/ax_oracle_oci.m4	2007-01-18 00:09:44.000000000 +0100
+++ gdal-1.4.1/m4/ax_oracle_oci.m4	2007-04-10 17:13:54.000000000 +0200
@@ -32,7 +32,7 @@
 dnl @category InstalledPackages
 dnl @category Cxx
 dnl @author Mateusz Loskot <mateusz@loskot.net>
-dnl @version $Date: 2007-01-18 00:09:44 +0100 (gio, 18 gen 2007) $
+dnl @version $Date: 2007-01-17 15:09:44 -0800 (Wed, 17 Jan 2007) $
 dnl @license AllPermissive
 dnl
 AC_DEFUN([AX_LIB_ORACLE_OCI],
diff -urN gdal-1.4.1-orig/swig/csharp/const/gdalconst.cs gdal-1.4.1/swig/csharp/const/gdalconst.cs
--- gdal-1.4.1-orig/swig/csharp/const/gdalconst.cs	1970-01-01 01:00:00.000000000 +0100
+++ gdal-1.4.1/swig/csharp/const/gdalconst.cs	2007-04-10 17:17:12.000000000 +0200
@@ -0,0 +1,89 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.31
+ *
+ * Do not make changes to this file unless you know what you are doing--modify
+ * the SWIG interface file instead.
+ * ----------------------------------------------------------------------------- */
+
+namespace OSGeo.GDAL {
+
+using System;
+using System.Runtime.InteropServices;
+
+public class gdalconst {
+  public static readonly int GDT_Unknown = gdalconstPINVOKE.GDT_Unknown_get();
+  public static readonly int GDT_Byte = gdalconstPINVOKE.GDT_Byte_get();
+  public static readonly int GDT_UInt16 = gdalconstPINVOKE.GDT_UInt16_get();
+  public static readonly int GDT_Int16 = gdalconstPINVOKE.GDT_Int16_get();
+  public static readonly int GDT_UInt32 = gdalconstPINVOKE.GDT_UInt32_get();
+  public static readonly int GDT_Int32 = gdalconstPINVOKE.GDT_Int32_get();
+  public static readonly int GDT_Float32 = gdalconstPINVOKE.GDT_Float32_get();
+  public static readonly int GDT_Float64 = gdalconstPINVOKE.GDT_Float64_get();
+  public static readonly int GDT_CInt16 = gdalconstPINVOKE.GDT_CInt16_get();
+  public static readonly int GDT_CInt32 = gdalconstPINVOKE.GDT_CInt32_get();
+  public static readonly int GDT_CFloat32 = gdalconstPINVOKE.GDT_CFloat32_get();
+  public static readonly int GDT_CFloat64 = gdalconstPINVOKE.GDT_CFloat64_get();
+  public static readonly int GDT_TypeCount = gdalconstPINVOKE.GDT_TypeCount_get();
+  public static readonly int GA_ReadOnly = gdalconstPINVOKE.GA_ReadOnly_get();
+  public static readonly int GA_Update = gdalconstPINVOKE.GA_Update_get();
+  public static readonly int GF_Read = gdalconstPINVOKE.GF_Read_get();
+  public static readonly int GF_Write = gdalconstPINVOKE.GF_Write_get();
+  public static readonly int GCI_Undefined = gdalconstPINVOKE.GCI_Undefined_get();
+  public static readonly int GCI_GrayIndex = gdalconstPINVOKE.GCI_GrayIndex_get();
+  public static readonly int GCI_PaletteIndex = gdalconstPINVOKE.GCI_PaletteIndex_get();
+  public static readonly int GCI_RedBand = gdalconstPINVOKE.GCI_RedBand_get();
+  public static readonly int GCI_GreenBand = gdalconstPINVOKE.GCI_GreenBand_get();
+  public static readonly int GCI_BlueBand = gdalconstPINVOKE.GCI_BlueBand_get();
+  public static readonly int GCI_AlphaBand = gdalconstPINVOKE.GCI_AlphaBand_get();
+  public static readonly int GCI_HueBand = gdalconstPINVOKE.GCI_HueBand_get();
+  public static readonly int GCI_SaturationBand = gdalconstPINVOKE.GCI_SaturationBand_get();
+  public static readonly int GCI_LightnessBand = gdalconstPINVOKE.GCI_LightnessBand_get();
+  public static readonly int GCI_CyanBand = gdalconstPINVOKE.GCI_CyanBand_get();
+  public static readonly int GCI_MagentaBand = gdalconstPINVOKE.GCI_MagentaBand_get();
+  public static readonly int GCI_YellowBand = gdalconstPINVOKE.GCI_YellowBand_get();
+  public static readonly int GCI_BlackBand = gdalconstPINVOKE.GCI_BlackBand_get();
+  public static readonly int GRA_NearestNeighbour = gdalconstPINVOKE.GRA_NearestNeighbour_get();
+  public static readonly int GRA_Bilinear = gdalconstPINVOKE.GRA_Bilinear_get();
+  public static readonly int GRA_Cubic = gdalconstPINVOKE.GRA_Cubic_get();
+  public static readonly int GRA_CubicSpline = gdalconstPINVOKE.GRA_CubicSpline_get();
+  public static readonly int GPI_Gray = gdalconstPINVOKE.GPI_Gray_get();
+  public static readonly int GPI_RGB = gdalconstPINVOKE.GPI_RGB_get();
+  public static readonly int GPI_CMYK = gdalconstPINVOKE.GPI_CMYK_get();
+  public static readonly int GPI_HLS = gdalconstPINVOKE.GPI_HLS_get();
+  public static readonly int CXT_Element = gdalconstPINVOKE.CXT_Element_get();
+  public static readonly int CXT_Text = gdalconstPINVOKE.CXT_Text_get();
+  public static readonly int CXT_Attribute = gdalconstPINVOKE.CXT_Attribute_get();
+  public static readonly int CXT_Comment = gdalconstPINVOKE.CXT_Comment_get();
+  public static readonly int CXT_Literal = gdalconstPINVOKE.CXT_Literal_get();
+  public static readonly int CE_None = gdalconstPINVOKE.CE_None_get();
+  public static readonly int CE_Debug = gdalconstPINVOKE.CE_Debug_get();
+  public static readonly int CE_Warning = gdalconstPINVOKE.CE_Warning_get();
+  public static readonly int CE_Failure = gdalconstPINVOKE.CE_Failure_get();
+  public static readonly int CE_Fatal = gdalconstPINVOKE.CE_Fatal_get();
+  public static readonly int CPLE_None = gdalconstPINVOKE.CPLE_None_get();
+  public static readonly int CPLE_AppDefined = gdalconstPINVOKE.CPLE_AppDefined_get();
+  public static readonly int CPLE_OutOfMemory = gdalconstPINVOKE.CPLE_OutOfMemory_get();
+  public static readonly int CPLE_FileIO = gdalconstPINVOKE.CPLE_FileIO_get();
+  public static readonly int CPLE_OpenFailed = gdalconstPINVOKE.CPLE_OpenFailed_get();
+  public static readonly int CPLE_IllegalArg = gdalconstPINVOKE.CPLE_IllegalArg_get();
+  public static readonly int CPLE_NotSupported = gdalconstPINVOKE.CPLE_NotSupported_get();
+  public static readonly int CPLE_AssertionFailed = gdalconstPINVOKE.CPLE_AssertionFailed_get();
+  public static readonly int CPLE_NoWriteAccess = gdalconstPINVOKE.CPLE_NoWriteAccess_get();
+  public static readonly int CPLE_UserInterrupt = gdalconstPINVOKE.CPLE_UserInterrupt_get();
+  public static readonly string DMD_LONGNAME = gdalconstPINVOKE.DMD_LONGNAME_get();
+  public static readonly string DMD_HELPTOPIC = gdalconstPINVOKE.DMD_HELPTOPIC_get();
+  public static readonly string DMD_MIMETYPE = gdalconstPINVOKE.DMD_MIMETYPE_get();
+  public static readonly string DMD_EXTENSION = gdalconstPINVOKE.DMD_EXTENSION_get();
+  public static readonly string DMD_CREATIONOPTIONLIST = gdalconstPINVOKE.DMD_CREATIONOPTIONLIST_get();
+  public static readonly string DMD_CREATIONDATATYPES = gdalconstPINVOKE.DMD_CREATIONDATATYPES_get();
+  public static readonly string DCAP_CREATE = gdalconstPINVOKE.DCAP_CREATE_get();
+  public static readonly string DCAP_CREATECOPY = gdalconstPINVOKE.DCAP_CREATECOPY_get();
+  public static readonly int CPLES_BackslashQuotable = gdalconstPINVOKE.CPLES_BackslashQuotable_get();
+  public static readonly int CPLES_XML = gdalconstPINVOKE.CPLES_XML_get();
+  public static readonly int CPLES_URL = gdalconstPINVOKE.CPLES_URL_get();
+  public static readonly int CPLES_SQL = gdalconstPINVOKE.CPLES_SQL_get();
+  public static readonly int CPLES_CSV = gdalconstPINVOKE.CPLES_CSV_get();
+}
+
+}
diff -urN gdal-1.4.1-orig/swig/csharp/const/gdalconstPINVOKE.cs gdal-1.4.1/swig/csharp/const/gdalconstPINVOKE.cs
--- gdal-1.4.1-orig/swig/csharp/const/gdalconstPINVOKE.cs	1970-01-01 01:00:00.000000000 +0100
+++ gdal-1.4.1/swig/csharp/const/gdalconstPINVOKE.cs	2007-04-10 17:17:12.000000000 +0200
@@ -0,0 +1,405 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.31
+ *
+ * Do not make changes to this file unless you know what you are doing--modify
+ * the SWIG interface file instead.
+ * ----------------------------------------------------------------------------- */
+
+namespace OSGeo.GDAL {
+
+using System;
+using System.Runtime.InteropServices;
+
+class gdalconstPINVOKE {
+
+  protected class SWIGExceptionHelper {
+
+    public delegate void ExceptionDelegate(string message);
+    public delegate void ExceptionArgumentDelegate(string message, string paramName);
+
+    static ExceptionDelegate applicationDelegate = new ExceptionDelegate(SetPendingApplicationException);
+    static ExceptionDelegate arithmeticDelegate = new ExceptionDelegate(SetPendingArithmeticException);
+    static ExceptionDelegate divideByZeroDelegate = new ExceptionDelegate(SetPendingDivideByZeroException);
+    static ExceptionDelegate indexOutOfRangeDelegate = new ExceptionDelegate(SetPendingIndexOutOfRangeException);
+    static ExceptionDelegate invalidCastDelegate = new ExceptionDelegate(SetPendingInvalidCastException);
+    static ExceptionDelegate invalidOperationDelegate = new ExceptionDelegate(SetPendingInvalidOperationException);
+    static ExceptionDelegate ioDelegate = new ExceptionDelegate(SetPendingIOException);
+    static ExceptionDelegate nullReferenceDelegate = new ExceptionDelegate(SetPendingNullReferenceException);
+    static ExceptionDelegate outOfMemoryDelegate = new ExceptionDelegate(SetPendingOutOfMemoryException);
+    static ExceptionDelegate overflowDelegate = new ExceptionDelegate(SetPendingOverflowException);
+    static ExceptionDelegate systemDelegate = new ExceptionDelegate(SetPendingSystemException);
+
+    static ExceptionArgumentDelegate argumentDelegate = new ExceptionArgumentDelegate(SetPendingArgumentException);
+    static ExceptionArgumentDelegate argumentNullDelegate = new ExceptionArgumentDelegate(SetPendingArgumentNullException);
+    static ExceptionArgumentDelegate argumentOutOfRangeDelegate = new ExceptionArgumentDelegate(SetPendingArgumentOutOfRangeException);
+
+    [DllImport("gdalconst_wrap", EntryPoint="SWIGRegisterExceptionCallbacks_gdalconst")]
+    public static extern void SWIGRegisterExceptionCallbacks_gdalconst(
+                                ExceptionDelegate applicationDelegate,
+                                ExceptionDelegate arithmeticDelegate,
+                                ExceptionDelegate divideByZeroDelegate, 
+                                ExceptionDelegate indexOutOfRangeDelegate, 
+                                ExceptionDelegate invalidCastDelegate,
+                                ExceptionDelegate invalidOperationDelegate,
+                                ExceptionDelegate ioDelegate,
+                                ExceptionDelegate nullReferenceDelegate,
+                                ExceptionDelegate outOfMemoryDelegate, 
+                                ExceptionDelegate overflowDelegate, 
+                                ExceptionDelegate systemExceptionDelegate);
+
+    [DllImport("gdalconst_wrap", EntryPoint="SWIGRegisterExceptionArgumentCallbacks_gdalconst")]
+    public static extern void SWIGRegisterExceptionCallbacksArgument_gdalconst(
+                                ExceptionArgumentDelegate argumentDelegate,
+                                ExceptionArgumentDelegate argumentNullDelegate,
+                                ExceptionArgumentDelegate argumentOutOfRangeDelegate);
+
+    static void SetPendingApplicationException(string message) {
+      SWIGPendingException.Set(new System.ApplicationException(message, SWIGPendingException.Retrieve()));
+    }
+    static void SetPendingArithmeticException(string message) {
+      SWIGPendingException.Set(new System.ArithmeticException(message, SWIGPendingException.Retrieve()));
+    }
+    static void SetPendingDivideByZeroException(string message) {
+      SWIGPendingException.Set(new System.DivideByZeroException(message, SWIGPendingException.Retrieve()));
+    }
+    static void SetPendingIndexOutOfRangeException(string message) {
+      SWIGPendingException.Set(new System.IndexOutOfRangeException(message, SWIGPendingException.Retrieve()));
+    }
+    static void SetPendingInvalidCastException(string message) {
+      SWIGPendingException.Set(new System.InvalidCastException(message, SWIGPendingException.Retrieve()));
+    }
+    static void SetPendingInvalidOperationException(string message) {
+      SWIGPendingException.Set(new System.InvalidOperationException(message, SWIGPendingException.Retrieve()));
+    }
+    static void SetPendingIOException(string message) {
+      SWIGPendingException.Set(new System.IO.IOException(message, SWIGPendingException.Retrieve()));
+    }
+    static void SetPendingNullReferenceException(string message) {
+      SWIGPendingException.Set(new System.NullReferenceException(message, SWIGPendingException.Retrieve()));
+    }
+    static void SetPendingOutOfMemoryException(string message) {
+      SWIGPendingException.Set(new System.OutOfMemoryException(message, SWIGPendingException.Retrieve()));
+    }
+    static void SetPendingOverflowException(string message) {
+      SWIGPendingException.Set(new System.OverflowException(message, SWIGPendingException.Retrieve()));
+    }
+    static void SetPendingSystemException(string message) {
+      SWIGPendingException.Set(new System.SystemException(message, SWIGPendingException.Retrieve()));
+    }
+
+    static void SetPendingArgumentException(string message, string paramName) {
+      SWIGPendingException.Set(new System.ArgumentException(message, paramName, SWIGPendingException.Retrieve()));
+    }
+    static void SetPendingArgumentNullException(string message, string paramName) {
+      Exception e = SWIGPendingException.Retrieve();
+      if (e != null) message = message + " Inner Exception: " + e.Message;
+      SWIGPendingException.Set(new System.ArgumentNullException(paramName, message));
+    }
+    static void SetPendingArgumentOutOfRangeException(string message, string paramName) {
+      Exception e = SWIGPendingException.Retrieve();
+      if (e != null) message = message + " Inner Exception: " + e.Message;
+      SWIGPendingException.Set(new System.ArgumentOutOfRangeException(paramName, message));
+    }
+
+    static SWIGExceptionHelper() {
+      SWIGRegisterExceptionCallbacks_gdalconst(
+                                applicationDelegate,
+                                arithmeticDelegate,
+                                divideByZeroDelegate,
+                                indexOutOfRangeDelegate,
+                                invalidCastDelegate,
+                                invalidOperationDelegate,
+                                ioDelegate,
+                                nullReferenceDelegate,
+                                outOfMemoryDelegate,
+                                overflowDelegate,
+                                systemDelegate);
+
+      SWIGRegisterExceptionCallbacksArgument_gdalconst(
+                                argumentDelegate,
+                                argumentNullDelegate,
+                                argumentOutOfRangeDelegate);
+    }
+  }
+
+  protected static SWIGExceptionHelper swigExceptionHelper = new SWIGExceptionHelper();
+
+  public class SWIGPendingException {
+    [ThreadStatic]
+    private static Exception pendingException = null;
+    private static int numExceptionsPending = 0;
+
+    public static bool Pending {
+      get {
+        bool pending = false;
+        if (numExceptionsPending > 0)
+          if (pendingException != null)
+            pending = true;
+        return pending;
+      } 
+    }
+
+    public static void Set(Exception e) {
+      if (pendingException != null)
+        throw new ApplicationException("FATAL: An earlier pending exception from unmanaged code was missed and thus not thrown (" + pendingException.ToString() + ")", e);
+      pendingException = e;
+      lock(typeof(gdalconstPINVOKE)) {
+        numExceptionsPending++;
+      }
+    }
+
+    public static Exception Retrieve() {
+      Exception e = null;
+      if (numExceptionsPending > 0) {
+        if (pendingException != null) {
+          e = pendingException;
+          pendingException = null;
+          lock(typeof(gdalconstPINVOKE)) {
+            numExceptionsPending--;
+          }
+        }
+      }
+      return e;
+    }
+  }
+
+
+  protected class SWIGStringHelper {
+
+    public delegate string SWIGStringDelegate(string message);
+    static SWIGStringDelegate stringDelegate = new SWIGStringDelegate(CreateString);
+
+    [DllImport("gdalconst_wrap", EntryPoint="SWIGRegisterStringCallback_gdalconst")]
+    public static extern void SWIGRegisterStringCallback_gdalconst(SWIGStringDelegate stringDelegate);
+
+    static string CreateString(string cString) {
+      return cString;
+    }
+
+    static SWIGStringHelper() {
+      SWIGRegisterStringCallback_gdalconst(stringDelegate);
+    }
+  }
+
+  static protected SWIGStringHelper swigStringHelper = new SWIGStringHelper();
+
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_GDT_Unknown_get")]
+  public static extern int GDT_Unknown_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_GDT_Byte_get")]
+  public static extern int GDT_Byte_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_GDT_UInt16_get")]
+  public static extern int GDT_UInt16_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_GDT_Int16_get")]
+  public static extern int GDT_Int16_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_GDT_UInt32_get")]
+  public static extern int GDT_UInt32_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_GDT_Int32_get")]
+  public static extern int GDT_Int32_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_GDT_Float32_get")]
+  public static extern int GDT_Float32_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_GDT_Float64_get")]
+  public static extern int GDT_Float64_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_GDT_CInt16_get")]
+  public static extern int GDT_CInt16_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_GDT_CInt32_get")]
+  public static extern int GDT_CInt32_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_GDT_CFloat32_get")]
+  public static extern int GDT_CFloat32_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_GDT_CFloat64_get")]
+  public static extern int GDT_CFloat64_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_GDT_TypeCount_get")]
+  public static extern int GDT_TypeCount_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_GA_ReadOnly_get")]
+  public static extern int GA_ReadOnly_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_GA_Update_get")]
+  public static extern int GA_Update_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_GF_Read_get")]
+  public static extern int GF_Read_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_GF_Write_get")]
+  public static extern int GF_Write_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_GCI_Undefined_get")]
+  public static extern int GCI_Undefined_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_GCI_GrayIndex_get")]
+  public static extern int GCI_GrayIndex_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_GCI_PaletteIndex_get")]
+  public static extern int GCI_PaletteIndex_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_GCI_RedBand_get")]
+  public static extern int GCI_RedBand_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_GCI_GreenBand_get")]
+  public static extern int GCI_GreenBand_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_GCI_BlueBand_get")]
+  public static extern int GCI_BlueBand_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_GCI_AlphaBand_get")]
+  public static extern int GCI_AlphaBand_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_GCI_HueBand_get")]
+  public static extern int GCI_HueBand_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_GCI_SaturationBand_get")]
+  public static extern int GCI_SaturationBand_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_GCI_LightnessBand_get")]
+  public static extern int GCI_LightnessBand_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_GCI_CyanBand_get")]
+  public static extern int GCI_CyanBand_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_GCI_MagentaBand_get")]
+  public static extern int GCI_MagentaBand_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_GCI_YellowBand_get")]
+  public static extern int GCI_YellowBand_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_GCI_BlackBand_get")]
+  public static extern int GCI_BlackBand_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_GRA_NearestNeighbour_get")]
+  public static extern int GRA_NearestNeighbour_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_GRA_Bilinear_get")]
+  public static extern int GRA_Bilinear_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_GRA_Cubic_get")]
+  public static extern int GRA_Cubic_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_GRA_CubicSpline_get")]
+  public static extern int GRA_CubicSpline_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_GPI_Gray_get")]
+  public static extern int GPI_Gray_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_GPI_RGB_get")]
+  public static extern int GPI_RGB_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_GPI_CMYK_get")]
+  public static extern int GPI_CMYK_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_GPI_HLS_get")]
+  public static extern int GPI_HLS_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_CXT_Element_get")]
+  public static extern int CXT_Element_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_CXT_Text_get")]
+  public static extern int CXT_Text_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_CXT_Attribute_get")]
+  public static extern int CXT_Attribute_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_CXT_Comment_get")]
+  public static extern int CXT_Comment_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_CXT_Literal_get")]
+  public static extern int CXT_Literal_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_CE_None_get")]
+  public static extern int CE_None_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_CE_Debug_get")]
+  public static extern int CE_Debug_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_CE_Warning_get")]
+  public static extern int CE_Warning_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_CE_Failure_get")]
+  public static extern int CE_Failure_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_CE_Fatal_get")]
+  public static extern int CE_Fatal_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_CPLE_None_get")]
+  public static extern int CPLE_None_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_CPLE_AppDefined_get")]
+  public static extern int CPLE_AppDefined_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_CPLE_OutOfMemory_get")]
+  public static extern int CPLE_OutOfMemory_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_CPLE_FileIO_get")]
+  public static extern int CPLE_FileIO_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_CPLE_OpenFailed_get")]
+  public static extern int CPLE_OpenFailed_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_CPLE_IllegalArg_get")]
+  public static extern int CPLE_IllegalArg_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_CPLE_NotSupported_get")]
+  public static extern int CPLE_NotSupported_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_CPLE_AssertionFailed_get")]
+  public static extern int CPLE_AssertionFailed_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_CPLE_NoWriteAccess_get")]
+  public static extern int CPLE_NoWriteAccess_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_CPLE_UserInterrupt_get")]
+  public static extern int CPLE_UserInterrupt_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_DMD_LONGNAME_get")]
+  public static extern string DMD_LONGNAME_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_DMD_HELPTOPIC_get")]
+  public static extern string DMD_HELPTOPIC_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_DMD_MIMETYPE_get")]
+  public static extern string DMD_MIMETYPE_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_DMD_EXTENSION_get")]
+  public static extern string DMD_EXTENSION_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_DMD_CREATIONOPTIONLIST_get")]
+  public static extern string DMD_CREATIONOPTIONLIST_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_DMD_CREATIONDATATYPES_get")]
+  public static extern string DMD_CREATIONDATATYPES_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_DCAP_CREATE_get")]
+  public static extern string DCAP_CREATE_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_DCAP_CREATECOPY_get")]
+  public static extern string DCAP_CREATECOPY_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_CPLES_BackslashQuotable_get")]
+  public static extern int CPLES_BackslashQuotable_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_CPLES_XML_get")]
+  public static extern int CPLES_XML_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_CPLES_URL_get")]
+  public static extern int CPLES_URL_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_CPLES_SQL_get")]
+  public static extern int CPLES_SQL_get();
+
+  [DllImport("gdalconst_wrap", EntryPoint="CSharp_CPLES_CSV_get")]
+  public static extern int CPLES_CSV_get();
+}
+
+}
diff -urN gdal-1.4.1-orig/swig/csharp/const/gdalconst_wrap.c gdal-1.4.1/swig/csharp/const/gdalconst_wrap.c
--- gdal-1.4.1-orig/swig/csharp/const/gdalconst_wrap.c	1970-01-01 01:00:00.000000000 +0100
+++ gdal-1.4.1/swig/csharp/const/gdalconst_wrap.c	2007-04-10 17:17:12.000000000 +0200
@@ -0,0 +1,1050 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.31
+ * 
+ * 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. 
+ * ----------------------------------------------------------------------------- */
+
+/* -----------------------------------------------------------------------------
+ *  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)
+#   if (__SUNPRO_CC <= 0x560)
+#     define SWIGTEMPLATEDISAMBIGUATOR template
+#   else
+#     define SWIGTEMPLATEDISAMBIGUATOR 
+#   endif
+# else
+#   define SWIGTEMPLATEDISAMBIGUATOR 
+# endif
+#endif
+
+/* inline attribute */
+#ifndef SWIGINLINE
+# if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__))
+#   define SWIGINLINE inline
+# else
+#   define SWIGINLINE
+# endif
+#endif
+
+/* attribute recognised by some compilers to avoid 'unused' warnings */
+#ifndef SWIGUNUSED
+# if defined(__GNUC__)
+#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+#     define SWIGUNUSED __attribute__ ((__unused__)) 
+#   else
+#     define SWIGUNUSED
+#   endif
+# elif defined(__ICC)
+#   define SWIGUNUSED __attribute__ ((__unused__)) 
+# else
+#   define SWIGUNUSED 
+# endif
+#endif
+
+#ifndef SWIGUNUSEDPARM
+# ifdef __cplusplus
+#   define SWIGUNUSEDPARM(p)
+# else
+#   define SWIGUNUSEDPARM(p) p SWIGUNUSED 
+# endif
+#endif
+
+/* internal SWIG method */
+#ifndef SWIGINTERN
+# define SWIGINTERN static SWIGUNUSED
+#endif
+
+/* internal inline SWIG method */
+#ifndef SWIGINTERNINLINE
+# define SWIGINTERNINLINE SWIGINTERN SWIGINLINE
+#endif
+
+/* exporting methods */
+#if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
+#  ifndef GCC_HASCLASSVISIBILITY
+#    define GCC_HASCLASSVISIBILITY
+#  endif
+#endif
+
+#ifndef SWIGEXPORT
+# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
+#   if defined(STATIC_LINKED)
+#     define SWIGEXPORT
+#   else
+#     define SWIGEXPORT __declspec(dllexport)
+#   endif
+# else
+#   if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY)
+#     define SWIGEXPORT __attribute__ ((visibility("default")))
+#   else
+#     define SWIGEXPORT
+#   endif
+# endif
+#endif
+
+/* calling conventions for Windows */
+#ifndef SWIGSTDCALL
+# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
+#   define SWIGSTDCALL __stdcall
+# else
+#   define SWIGSTDCALL
+# endif 
+#endif
+
+/* Deal with Microsoft's attempt at deprecating C standard runtime functions */
+#if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)
+# define _CRT_SECURE_NO_DEPRECATE
+#endif
+
+
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+
+
+/* Support for throwing C# exceptions from C/C++. There are two types: 
+ * Exceptions that take a message and ArgumentExceptions that take a message and a parameter name. */
+typedef enum {
+  SWIG_CSharpApplicationException,
+  SWIG_CSharpArithmeticException,
+  SWIG_CSharpDivideByZeroException,
+  SWIG_CSharpIndexOutOfRangeException,
+  SWIG_CSharpInvalidCastException,
+  SWIG_CSharpInvalidOperationException,
+  SWIG_CSharpIOException,
+  SWIG_CSharpNullReferenceException,
+  SWIG_CSharpOutOfMemoryException,
+  SWIG_CSharpOverflowException,
+  SWIG_CSharpSystemException
+} SWIG_CSharpExceptionCodes;
+
+typedef enum {
+  SWIG_CSharpArgumentException,
+  SWIG_CSharpArgumentNullException,
+  SWIG_CSharpArgumentOutOfRangeException
+} SWIG_CSharpExceptionArgumentCodes;
+
+typedef void (SWIGSTDCALL* SWIG_CSharpExceptionCallback_t)(const char *);
+typedef void (SWIGSTDCALL* SWIG_CSharpExceptionArgumentCallback_t)(const char *, const char *);
+
+typedef struct {
+  SWIG_CSharpExceptionCodes code;
+  SWIG_CSharpExceptionCallback_t callback;
+} SWIG_CSharpException_t;
+
+typedef struct {
+  SWIG_CSharpExceptionArgumentCodes code;
+  SWIG_CSharpExceptionArgumentCallback_t callback;
+} SWIG_CSharpExceptionArgument_t;
+
+static SWIG_CSharpException_t SWIG_csharp_exceptions[] = {
+  { SWIG_CSharpApplicationException, NULL },
+  { SWIG_CSharpArithmeticException, NULL },
+  { SWIG_CSharpDivideByZeroException, NULL },
+  { SWIG_CSharpIndexOutOfRangeException, NULL },
+  { SWIG_CSharpInvalidCastException, NULL },
+  { SWIG_CSharpInvalidOperationException, NULL },
+  { SWIG_CSharpIOException, NULL },
+  { SWIG_CSharpNullReferenceException, NULL },
+  { SWIG_CSharpOutOfMemoryException, NULL },
+  { SWIG_CSharpOverflowException, NULL },
+  { SWIG_CSharpSystemException, NULL }
+};
+
+static SWIG_CSharpExceptionArgument_t SWIG_csharp_exceptions_argument[] = {
+  { SWIG_CSharpArgumentException, NULL },
+  { SWIG_CSharpArgumentNullException, NULL },
+  { SWIG_CSharpArgumentOutOfRangeException, NULL },
+};
+
+static void SWIGUNUSED SWIG_CSharpSetPendingException(SWIG_CSharpExceptionCodes code, const char *msg) {
+  SWIG_CSharpExceptionCallback_t callback = SWIG_csharp_exceptions[SWIG_CSharpApplicationException].callback;
+  if (code >=0 && (size_t)code < sizeof(SWIG_csharp_exceptions)/sizeof(SWIG_CSharpException_t)) {
+    callback = SWIG_csharp_exceptions[code].callback;
+  }
+  callback(msg);
+}
+
+static void SWIGUNUSED SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpExceptionArgumentCodes code, const char *msg, const char *param_name) {
+  SWIG_CSharpExceptionArgumentCallback_t callback = SWIG_csharp_exceptions_argument[SWIG_CSharpArgumentException].callback;
+  if (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_gdalconst(
+                                                SWIG_CSharpExceptionCallback_t applicationCallback,
+                                                SWIG_CSharpExceptionCallback_t arithmeticCallback,
+                                                SWIG_CSharpExceptionCallback_t divideByZeroCallback, 
+                                                SWIG_CSharpExceptionCallback_t indexOutOfRangeCallback, 
+                                                SWIG_CSharpExceptionCallback_t invalidCastCallback,
+                                                SWIG_CSharpExceptionCallback_t invalidOperationCallback,
+                                                SWIG_CSharpExceptionCallback_t ioCallback,
+                                                SWIG_CSharpExceptionCallback_t nullReferenceCallback,
+                                                SWIG_CSharpExceptionCallback_t outOfMemoryCallback, 
+                                                SWIG_CSharpExceptionCallback_t overflowCallback, 
+                                                SWIG_CSharpExceptionCallback_t systemCallback) {
+  SWIG_csharp_exceptions[SWIG_CSharpApplicationException].callback = applicationCallback;
+  SWIG_csharp_exceptions[SWIG_CSharpArithmeticException].callback = arithmeticCallback;
+  SWIG_csharp_exceptions[SWIG_CSharpDivideByZeroException].callback = divideByZeroCallback;
+  SWIG_csharp_exceptions[SWIG_CSharpIndexOutOfRangeException].callback = indexOutOfRangeCallback;
+  SWIG_csharp_exceptions[SWIG_CSharpInvalidCastException].callback = invalidCastCallback;
+  SWIG_csharp_exceptions[SWIG_CSharpInvalidOperationException].callback = invalidOperationCallback;
+  SWIG_csharp_exceptions[SWIG_CSharpIOException].callback = ioCallback;
+  SWIG_csharp_exceptions[SWIG_CSharpNullReferenceException].callback = nullReferenceCallback;
+  SWIG_csharp_exceptions[SWIG_CSharpOutOfMemoryException].callback = outOfMemoryCallback;
+  SWIG_csharp_exceptions[SWIG_CSharpOverflowException].callback = overflowCallback;
+  SWIG_csharp_exceptions[SWIG_CSharpSystemException].callback = systemCallback;
+}
+
+#ifdef __cplusplus
+extern "C" 
+#endif
+SWIGEXPORT void SWIGSTDCALL SWIGRegisterExceptionArgumentCallbacks_gdalconst(
+                                                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_gdalconst(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
+
+
+#include "gdal.h"
+#include "gdalwarper.h"
+#include "cpl_string.h"
+#include "cpl_minixml.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+SWIGEXPORT int SWIGSTDCALL CSharp_GDT_Unknown_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) GDT_Unknown;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_GDT_Byte_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) GDT_Byte;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_GDT_UInt16_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) GDT_UInt16;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_GDT_Int16_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) GDT_Int16;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_GDT_UInt32_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) GDT_UInt32;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_GDT_Int32_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) GDT_Int32;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_GDT_Float32_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) GDT_Float32;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_GDT_Float64_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) GDT_Float64;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_GDT_CInt16_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) GDT_CInt16;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_GDT_CInt32_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) GDT_CInt32;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_GDT_CFloat32_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) GDT_CFloat32;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_GDT_CFloat64_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) GDT_CFloat64;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_GDT_TypeCount_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) GDT_TypeCount;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_GA_ReadOnly_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) GA_ReadOnly;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_GA_Update_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) GA_Update;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_GF_Read_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) GF_Read;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_GF_Write_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) GF_Write;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_GCI_Undefined_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) GCI_Undefined;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_GCI_GrayIndex_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) GCI_GrayIndex;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_GCI_PaletteIndex_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) GCI_PaletteIndex;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_GCI_RedBand_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) GCI_RedBand;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_GCI_GreenBand_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) GCI_GreenBand;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_GCI_BlueBand_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) GCI_BlueBand;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_GCI_AlphaBand_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) GCI_AlphaBand;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_GCI_HueBand_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) GCI_HueBand;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_GCI_SaturationBand_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) GCI_SaturationBand;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_GCI_LightnessBand_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) GCI_LightnessBand;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_GCI_CyanBand_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) GCI_CyanBand;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_GCI_MagentaBand_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) GCI_MagentaBand;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_GCI_YellowBand_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) GCI_YellowBand;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_GCI_BlackBand_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) GCI_BlackBand;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_GRA_NearestNeighbour_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) GRA_NearestNeighbour;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_GRA_Bilinear_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) GRA_Bilinear;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_GRA_Cubic_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) GRA_Cubic;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_GRA_CubicSpline_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) GRA_CubicSpline;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_GPI_Gray_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) GPI_Gray;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_GPI_RGB_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) GPI_RGB;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_GPI_CMYK_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) GPI_CMYK;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_GPI_HLS_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) GPI_HLS;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_CXT_Element_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) CXT_Element;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_CXT_Text_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) CXT_Text;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_CXT_Attribute_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) CXT_Attribute;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_CXT_Comment_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) CXT_Comment;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_CXT_Literal_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) CXT_Literal;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_CE_None_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) CE_None;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_CE_Debug_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) CE_Debug;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_CE_Warning_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) CE_Warning;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_CE_Failure_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) CE_Failure;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_CE_Fatal_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) CE_Fatal;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_CPLE_None_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) CPLE_None;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_CPLE_AppDefined_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) CPLE_AppDefined;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_CPLE_OutOfMemory_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) CPLE_OutOfMemory;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_CPLE_FileIO_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) CPLE_FileIO;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_CPLE_OpenFailed_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) CPLE_OpenFailed;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_CPLE_IllegalArg_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) CPLE_IllegalArg;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_CPLE_NotSupported_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) CPLE_NotSupported;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_CPLE_AssertionFailed_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) CPLE_AssertionFailed;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_CPLE_NoWriteAccess_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) CPLE_NoWriteAccess;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_CPLE_UserInterrupt_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) CPLE_UserInterrupt;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_DMD_LONGNAME_get() {
+  char * jresult ;
+  char *result = 0 ;
+  
+  result = (char *) "GDAL_DMD_LONGNAME";
+  
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_DMD_HELPTOPIC_get() {
+  char * jresult ;
+  char *result = 0 ;
+  
+  result = (char *) "GDAL_DMD_HELPTOPIC";
+  
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_DMD_MIMETYPE_get() {
+  char * jresult ;
+  char *result = 0 ;
+  
+  result = (char *) "GDAL_DMD_MIMETYPE";
+  
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_DMD_EXTENSION_get() {
+  char * jresult ;
+  char *result = 0 ;
+  
+  result = (char *) "GDAL_DMD_EXTENSION";
+  
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_DMD_CREATIONOPTIONLIST_get() {
+  char * jresult ;
+  char *result = 0 ;
+  
+  result = (char *) "GDAL_DMD_CREATIONOPTIONLIST";
+  
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_DMD_CREATIONDATATYPES_get() {
+  char * jresult ;
+  char *result = 0 ;
+  
+  result = (char *) "GDAL_DMD_CREATIONDATATYPES";
+  
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_DCAP_CREATE_get() {
+  char * jresult ;
+  char *result = 0 ;
+  
+  result = (char *) "GDAL_DCAP_CREATE";
+  
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_DCAP_CREATECOPY_get() {
+  char * jresult ;
+  char *result = 0 ;
+  
+  result = (char *) "GDAL_DCAP_CREATECOPY";
+  
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_CPLES_BackslashQuotable_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) CPLES_BackslashQuotable;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_CPLES_XML_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) CPLES_XML;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_CPLES_URL_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) CPLES_URL;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_CPLES_SQL_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) CPLES_SQL;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_CPLES_CSV_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) CPLES_CSV;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
+#ifdef __cplusplus
+}
+#endif
+
diff -urN gdal-1.4.1-orig/swig/csharp/gdal/Band.cs gdal-1.4.1/swig/csharp/gdal/Band.cs
--- gdal-1.4.1-orig/swig/csharp/gdal/Band.cs	1970-01-01 01:00:00.000000000 +0100
+++ gdal-1.4.1/swig/csharp/gdal/Band.cs	2007-04-10 17:17:13.000000000 +0200
@@ -0,0 +1,326 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.31
+ *
+ * Do not make changes to this file unless you know what you are doing--modify
+ * the SWIG interface file instead.
+ * ----------------------------------------------------------------------------- */
+
+namespace OSGeo.GDAL {
+
+using System;
+using System.Runtime.InteropServices;
+
+public class Band : MajorObject {
+  private HandleRef swigCPtr;
+
+  internal Band(IntPtr cPtr, object cMemoryOwner) : base(gdalPINVOKE.BandUpcast(cPtr), cMemoryOwner) {
+    swigCPtr = new HandleRef(this, cPtr);
+  }
+
+  internal static HandleRef getCPtr(Band obj) {
+    return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr;
+  }
+  internal static HandleRef getCPtrAndDisown(Band obj, object cMemoryOwner) {
+    obj.swigCMemOwner = cMemoryOwner;
+    return getCPtr(obj);
+  }
+
+  public override void Dispose() {
+  lock(this) {
+      if(swigCPtr.Handle != IntPtr.Zero && swigCMemOwner == null) {
+        swigCMemOwner = new object();
+        throw new MethodAccessException("C++ destructor does not have public access");
+      }
+      swigCPtr = new HandleRef(null, IntPtr.Zero);
+      GC.SuppressFinalize(this);
+      base.Dispose();
+    }
+  }
+/*! Eight bit unsigned integer */ /*@SWIG:%rasterio_functions@*/
+ public int ReadRaster(int xOff, int yOff, int xSize, int ySize, byte[] buffer, int buf_xSize, int buf_ySize, int pixelSpace, int lineSpace) {
+      int retval;
+      IntPtr ptr = Marshal.AllocHGlobal(buf_xSize * buf_ySize * Marshal.SizeOf(buffer[0]));
+      try {
+          retval = ReadRaster(xOff, yOff, xSize, ySize, ptr, buf_xSize, buf_ySize, 1, pixelSpace, lineSpace);
+          Marshal.Copy(ptr, buffer, 0, buf_xSize * buf_ySize);
+      } finally {
+          Marshal.FreeHGlobal(ptr);
+      }
+      GC.KeepAlive(this);
+      return retval;
+  }
+  public int WriteRaster(int xOff, int yOff, int xSize, int ySize, byte[] buffer, int buf_xSize, int buf_ySize, int pixelSpace, int lineSpace) {
+      int retval;
+      IntPtr ptr = Marshal.AllocHGlobal(buf_xSize * buf_ySize * Marshal.SizeOf(buffer[0]));
+      try {
+          Marshal.Copy(buffer, 0, ptr, buf_xSize * buf_ySize);
+          retval = WriteRaster(xOff, yOff, xSize, ySize, ptr, buf_xSize, buf_ySize, 1, pixelSpace, lineSpace);
+      } finally {
+          Marshal.FreeHGlobal(ptr);
+      }
+      GC.KeepAlive(this);
+      return retval;
+  }
+  
+/*@SWIG@*/
+/*! Sixteen bit signed integer */ /*@SWIG:%rasterio_functions@*/
+ public int ReadRaster(int xOff, int yOff, int xSize, int ySize, short[] buffer, int buf_xSize, int buf_ySize, int pixelSpace, int lineSpace) {
+      int retval;
+      IntPtr ptr = Marshal.AllocHGlobal(buf_xSize * buf_ySize * Marshal.SizeOf(buffer[0]));
+      try {
+          retval = ReadRaster(xOff, yOff, xSize, ySize, ptr, buf_xSize, buf_ySize, 3, pixelSpace, lineSpace);
+          Marshal.Copy(ptr, buffer, 0, buf_xSize * buf_ySize);
+      } finally {
+          Marshal.FreeHGlobal(ptr);
+      }
+      GC.KeepAlive(this);
+      return retval;
+  }
+  public int WriteRaster(int xOff, int yOff, int xSize, int ySize, short[] buffer, int buf_xSize, int buf_ySize, int pixelSpace, int lineSpace) {
+      int retval;
+      IntPtr ptr = Marshal.AllocHGlobal(buf_xSize * buf_ySize * Marshal.SizeOf(buffer[0]));
+      try {
+          Marshal.Copy(buffer, 0, ptr, buf_xSize * buf_ySize);
+          retval = WriteRaster(xOff, yOff, xSize, ySize, ptr, buf_xSize, buf_ySize, 3, pixelSpace, lineSpace);
+      } finally {
+          Marshal.FreeHGlobal(ptr);
+      }
+      GC.KeepAlive(this);
+      return retval;
+  }
+  
+/*@SWIG@*/
+/*! Thirty two bit signed integer */ /*@SWIG:%rasterio_functions@*/
+ public int ReadRaster(int xOff, int yOff, int xSize, int ySize, int[] buffer, int buf_xSize, int buf_ySize, int pixelSpace, int lineSpace) {
+      int retval;
+      IntPtr ptr = Marshal.AllocHGlobal(buf_xSize * buf_ySize * Marshal.SizeOf(buffer[0]));
+      try {
+          retval = ReadRaster(xOff, yOff, xSize, ySize, ptr, buf_xSize, buf_ySize, 5, pixelSpace, lineSpace);
+          Marshal.Copy(ptr, buffer, 0, buf_xSize * buf_ySize);
+      } finally {
+          Marshal.FreeHGlobal(ptr);
+      }
+      GC.KeepAlive(this);
+      return retval;
+  }
+  public int WriteRaster(int xOff, int yOff, int xSize, int ySize, int[] buffer, int buf_xSize, int buf_ySize, int pixelSpace, int lineSpace) {
+      int retval;
+      IntPtr ptr = Marshal.AllocHGlobal(buf_xSize * buf_ySize * Marshal.SizeOf(buffer[0]));
+      try {
+          Marshal.Copy(buffer, 0, ptr, buf_xSize * buf_ySize);
+          retval = WriteRaster(xOff, yOff, xSize, ySize, ptr, buf_xSize, buf_ySize, 5, pixelSpace, lineSpace);
+      } finally {
+          Marshal.FreeHGlobal(ptr);
+      }
+      GC.KeepAlive(this);
+      return retval;
+  }
+  
+/*@SWIG@*/
+/*! Thirty two bit floating point */ /*@SWIG:%rasterio_functions@*/
+ public int ReadRaster(int xOff, int yOff, int xSize, int ySize, float[] buffer, int buf_xSize, int buf_ySize, int pixelSpace, int lineSpace) {
+      int retval;
+      IntPtr ptr = Marshal.AllocHGlobal(buf_xSize * buf_ySize * Marshal.SizeOf(buffer[0]));
+      try {
+          retval = ReadRaster(xOff, yOff, xSize, ySize, ptr, buf_xSize, buf_ySize, 6, pixelSpace, lineSpace);
+          Marshal.Copy(ptr, buffer, 0, buf_xSize * buf_ySize);
+      } finally {
+          Marshal.FreeHGlobal(ptr);
+      }
+      GC.KeepAlive(this);
+      return retval;
+  }
+  public int WriteRaster(int xOff, int yOff, int xSize, int ySize, float[] buffer, int buf_xSize, int buf_ySize, int pixelSpace, int lineSpace) {
+      int retval;
+      IntPtr ptr = Marshal.AllocHGlobal(buf_xSize * buf_ySize * Marshal.SizeOf(buffer[0]));
+      try {
+          Marshal.Copy(buffer, 0, ptr, buf_xSize * buf_ySize);
+          retval = WriteRaster(xOff, yOff, xSize, ySize, ptr, buf_xSize, buf_ySize, 6, pixelSpace, lineSpace);
+      } finally {
+          Marshal.FreeHGlobal(ptr);
+      }
+      GC.KeepAlive(this);
+      return retval;
+  }
+  
+/*@SWIG@*/
+/*! Sixty four bit floating point */ /*@SWIG:%rasterio_functions@*/
+ public int ReadRaster(int xOff, int yOff, int xSize, int ySize, double[] buffer, int buf_xSize, int buf_ySize, int pixelSpace, int lineSpace) {
+      int retval;
+      IntPtr ptr = Marshal.AllocHGlobal(buf_xSize * buf_ySize * Marshal.SizeOf(buffer[0]));
+      try {
+          retval = ReadRaster(xOff, yOff, xSize, ySize, ptr, buf_xSize, buf_ySize, 7, pixelSpace, lineSpace);
+          Marshal.Copy(ptr, buffer, 0, buf_xSize * buf_ySize);
+      } finally {
+          Marshal.FreeHGlobal(ptr);
+      }
+      GC.KeepAlive(this);
+      return retval;
+  }
+  public int WriteRaster(int xOff, int yOff, int xSize, int ySize, double[] buffer, int buf_xSize, int buf_ySize, int pixelSpace, int lineSpace) {
+      int retval;
+      IntPtr ptr = Marshal.AllocHGlobal(buf_xSize * buf_ySize * Marshal.SizeOf(buffer[0]));
+      try {
+          Marshal.Copy(buffer, 0, ptr, buf_xSize * buf_ySize);
+          retval = WriteRaster(xOff, yOff, xSize, ySize, ptr, buf_xSize, buf_ySize, 7, pixelSpace, lineSpace);
+      } finally {
+          Marshal.FreeHGlobal(ptr);
+      }
+      GC.KeepAlive(this);
+      return retval;
+  }
+  
+/*@SWIG@*/
+  public int XSize {
+    get {
+      int ret = gdalPINVOKE.Band_XSize_get(swigCPtr);
+      if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+      return ret;
+    } 
+  }
+
+  public int YSize {
+    get {
+      int ret = gdalPINVOKE.Band_YSize_get(swigCPtr);
+      if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+      return ret;
+    } 
+  }
+
+  public int DataType {
+    get {
+      int ret = gdalPINVOKE.Band_DataType_get(swigCPtr);
+      if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+      return ret;
+    } 
+  }
+
+  public void GetBlockSize(out int pnBlockXSize, out int pnBlockYSize) {
+    gdalPINVOKE.Band_GetBlockSize(swigCPtr, out pnBlockXSize, out pnBlockYSize);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+  public int GetRasterColorInterpretation() {
+    int ret = gdalPINVOKE.Band_GetRasterColorInterpretation(swigCPtr);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public int SetRasterColorInterpretation(int val) {
+    int ret = gdalPINVOKE.Band_SetRasterColorInterpretation(swigCPtr, val);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public void GetNoDataValue(out double val, out int hasval) {
+    gdalPINVOKE.Band_GetNoDataValue(swigCPtr, out val, out hasval);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+  public int SetNoDataValue(double d) {
+    int ret = gdalPINVOKE.Band_SetNoDataValue(swigCPtr, d);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public void GetMinimum(out double val, out int hasval) {
+    gdalPINVOKE.Band_GetMinimum(swigCPtr, out val, out hasval);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+  public void GetMaximum(out double val, out int hasval) {
+    gdalPINVOKE.Band_GetMaximum(swigCPtr, out val, out hasval);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+  public void GetOffset(out double val, out int hasval) {
+    gdalPINVOKE.Band_GetOffset(swigCPtr, out val, out hasval);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+  public void GetScale(out double val, out int hasval) {
+    gdalPINVOKE.Band_GetScale(swigCPtr, out val, out hasval);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+  public int GetStatistics(int approx_ok, int force, out double min, out double max, out double mean, out double stddev) {
+    int ret = gdalPINVOKE.Band_GetStatistics(swigCPtr, approx_ok, force, out min, out max, out mean, out stddev);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public int SetStatistics(double min, double max, double mean, double stddev) {
+    int ret = gdalPINVOKE.Band_SetStatistics(swigCPtr, min, max, mean, stddev);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public int GetOverviewCount() {
+    int ret = gdalPINVOKE.Band_GetOverviewCount(swigCPtr);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public Band GetOverview(int i) {
+    IntPtr cPtr = gdalPINVOKE.Band_GetOverview(swigCPtr, i);
+    Band ret = (cPtr == IntPtr.Zero) ? null : new Band(cPtr, false? null : this);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public int Checksum(int xoff, int yoff, SWIGTYPE_p_int xsize, SWIGTYPE_p_int ysize) {
+    int ret = gdalPINVOKE.Band_Checksum(swigCPtr, xoff, yoff, SWIGTYPE_p_int.getCPtr(xsize), SWIGTYPE_p_int.getCPtr(ysize));
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public void ComputeRasterMinMax(double[] argout, int approx_ok) {
+    gdalPINVOKE.Band_ComputeRasterMinMax(swigCPtr, argout, approx_ok);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+  public void ComputeBandStats(double[] argout, int samplestep) {
+    gdalPINVOKE.Band_ComputeBandStats(swigCPtr, argout, samplestep);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+  public int Fill(double real_fill, double imag_fill) {
+    int ret = gdalPINVOKE.Band_Fill(swigCPtr, real_fill, imag_fill);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public void FlushCache() {
+    gdalPINVOKE.Band_FlushCache(swigCPtr);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+  public ColorTable GetRasterColorTable() {
+    IntPtr cPtr = gdalPINVOKE.Band_GetRasterColorTable(swigCPtr);
+    ColorTable ret = (cPtr == IntPtr.Zero) ? null : new ColorTable(cPtr, false? null : this);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public int SetRasterColorTable(ColorTable arg) {
+    int ret = gdalPINVOKE.Band_SetRasterColorTable(swigCPtr, ColorTable.getCPtr(arg));
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public int ReadRaster(int xOff, int yOff, int xSize, int ySize, IntPtr buffer, int buf_xSize, int buf_ySize, int buf_type, int pixelSpace, int lineSpace) {
+    int ret = gdalPINVOKE.Band_ReadRaster(swigCPtr, xOff, yOff, xSize, ySize, buffer, buf_xSize, buf_ySize, buf_type, pixelSpace, lineSpace);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public int WriteRaster(int xOff, int yOff, int xSize, int ySize, IntPtr buffer, int buf_xSize, int buf_ySize, int buf_type, int pixelSpace, int lineSpace) {
+    int ret = gdalPINVOKE.Band_WriteRaster(swigCPtr, xOff, yOff, xSize, ySize, buffer, buf_xSize, buf_ySize, buf_type, pixelSpace, lineSpace);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+}
+
+}
diff -urN gdal-1.4.1-orig/swig/csharp/gdal/ColorEntry.cs gdal-1.4.1/swig/csharp/gdal/ColorEntry.cs
--- gdal-1.4.1-orig/swig/csharp/gdal/ColorEntry.cs	1970-01-01 01:00:00.000000000 +0100
+++ gdal-1.4.1/swig/csharp/gdal/ColorEntry.cs	2007-04-10 17:17:12.000000000 +0200
@@ -0,0 +1,100 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.31
+ *
+ * Do not make changes to this file unless you know what you are doing--modify
+ * the SWIG interface file instead.
+ * ----------------------------------------------------------------------------- */
+
+namespace OSGeo.GDAL {
+
+using System;
+using System.Runtime.InteropServices;
+
+public class ColorEntry : IDisposable {
+  private HandleRef swigCPtr;
+  protected object swigCMemOwner;
+
+  internal ColorEntry(IntPtr cPtr, object cMemoryOwner) {
+    swigCMemOwner = cMemoryOwner;
+    swigCPtr = new HandleRef(this, cPtr);
+  }
+
+  internal static HandleRef getCPtr(ColorEntry obj) {
+    return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr;
+  }
+  internal static HandleRef getCPtrAndDisown(ColorEntry obj, object cMemoryOwner) {
+    obj.swigCMemOwner = cMemoryOwner;
+    return getCPtr(obj);
+  }
+
+  ~ColorEntry() {
+    Dispose();
+  }
+
+  public virtual void Dispose() {
+  lock(this) {
+      if(swigCPtr.Handle != IntPtr.Zero && swigCMemOwner == null) {
+        swigCMemOwner = new object();
+        gdalPINVOKE.delete_ColorEntry(swigCPtr);
+      }
+      swigCPtr = new HandleRef(null, IntPtr.Zero);
+      GC.SuppressFinalize(this);
+    }
+  }
+
+  public short c1 {
+    set {
+      gdalPINVOKE.ColorEntry_c1_set(swigCPtr, value);
+      if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    } 
+    get {
+      short ret = gdalPINVOKE.ColorEntry_c1_get(swigCPtr);
+      if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+      return ret;
+    } 
+  }
+
+  public short c2 {
+    set {
+      gdalPINVOKE.ColorEntry_c2_set(swigCPtr, value);
+      if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    } 
+    get {
+      short ret = gdalPINVOKE.ColorEntry_c2_get(swigCPtr);
+      if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+      return ret;
+    } 
+  }
+
+  public short c3 {
+    set {
+      gdalPINVOKE.ColorEntry_c3_set(swigCPtr, value);
+      if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    } 
+    get {
+      short ret = gdalPINVOKE.ColorEntry_c3_get(swigCPtr);
+      if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+      return ret;
+    } 
+  }
+
+  public short c4 {
+    set {
+      gdalPINVOKE.ColorEntry_c4_set(swigCPtr, value);
+      if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    } 
+    get {
+      short ret = gdalPINVOKE.ColorEntry_c4_get(swigCPtr);
+      if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+      return ret;
+    } 
+  }
+
+  public ColorEntry() : this(gdalPINVOKE.new_ColorEntry(), null) {
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+}
+
+}
diff -urN gdal-1.4.1-orig/swig/csharp/gdal/ColorTable.cs gdal-1.4.1/swig/csharp/gdal/ColorTable.cs
--- gdal-1.4.1-orig/swig/csharp/gdal/ColorTable.cs	1970-01-01 01:00:00.000000000 +0100
+++ gdal-1.4.1/swig/csharp/gdal/ColorTable.cs	2007-04-10 17:17:13.000000000 +0200
@@ -0,0 +1,89 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.31
+ *
+ * Do not make changes to this file unless you know what you are doing--modify
+ * the SWIG interface file instead.
+ * ----------------------------------------------------------------------------- */
+
+namespace OSGeo.GDAL {
+
+using System;
+using System.Runtime.InteropServices;
+
+public class ColorTable : IDisposable {
+  private HandleRef swigCPtr;
+  protected object swigCMemOwner;
+
+  internal ColorTable(IntPtr cPtr, object cMemoryOwner) {
+    swigCMemOwner = cMemoryOwner;
+    swigCPtr = new HandleRef(this, cPtr);
+  }
+
+  internal static HandleRef getCPtr(ColorTable obj) {
+    return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr;
+  }
+  internal static HandleRef getCPtrAndDisown(ColorTable obj, object cMemoryOwner) {
+    obj.swigCMemOwner = cMemoryOwner;
+    return getCPtr(obj);
+  }
+
+  ~ColorTable() {
+    Dispose();
+  }
+
+  public virtual void Dispose() {
+  lock(this) {
+      if(swigCPtr.Handle != IntPtr.Zero && swigCMemOwner == null) {
+        swigCMemOwner = new object();
+        gdalPINVOKE.delete_ColorTable(swigCPtr);
+      }
+      swigCPtr = new HandleRef(null, IntPtr.Zero);
+      GC.SuppressFinalize(this);
+    }
+  }
+
+  public ColorTable(int arg0) : this(gdalPINVOKE.new_ColorTable(arg0), null) {
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+  public ColorTable Clone() {
+    IntPtr cPtr = gdalPINVOKE.ColorTable_Clone(swigCPtr);
+    ColorTable ret = (cPtr == IntPtr.Zero) ? null : new ColorTable(cPtr, false? null : this);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public int GetPaletteInterpretation() {
+    int ret = gdalPINVOKE.ColorTable_GetPaletteInterpretation(swigCPtr);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public int GetCount() {
+    int ret = gdalPINVOKE.ColorTable_GetCount(swigCPtr);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public ColorEntry GetColorEntry(int arg0) {
+    IntPtr cPtr = gdalPINVOKE.ColorTable_GetColorEntry(swigCPtr, arg0);
+    ColorEntry ret = (cPtr == IntPtr.Zero) ? null : new ColorEntry(cPtr, false? null : this);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public int GetColorEntryAsRGB(int arg0, ColorEntry arg1) {
+    int ret = gdalPINVOKE.ColorTable_GetColorEntryAsRGB(swigCPtr, arg0, ColorEntry.getCPtr(arg1));
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public void SetColorEntry(int arg0, ColorEntry arg1) {
+    gdalPINVOKE.ColorTable_SetColorEntry(swigCPtr, arg0, ColorEntry.getCPtr(arg1));
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+}
+
+}
diff -urN gdal-1.4.1-orig/swig/csharp/gdal/Dataset.cs gdal-1.4.1/swig/csharp/gdal/Dataset.cs
--- gdal-1.4.1-orig/swig/csharp/gdal/Dataset.cs	1970-01-01 01:00:00.000000000 +0100
+++ gdal-1.4.1/swig/csharp/gdal/Dataset.cs	2007-04-10 17:17:12.000000000 +0200
@@ -0,0 +1,166 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.31
+ *
+ * Do not make changes to this file unless you know what you are doing--modify
+ * the SWIG interface file instead.
+ * ----------------------------------------------------------------------------- */
+
+namespace OSGeo.GDAL {
+
+using System;
+using System.Runtime.InteropServices;
+
+public class Dataset : MajorObject {
+  private HandleRef swigCPtr;
+
+  internal Dataset(IntPtr cPtr, object cMemoryOwner) : base(gdalPINVOKE.DatasetUpcast(cPtr), cMemoryOwner) {
+    swigCPtr = new HandleRef(this, cPtr);
+  }
+
+  internal static HandleRef getCPtr(Dataset obj) {
+    return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr;
+  }
+  internal static HandleRef getCPtrAndDisown(Dataset obj, object cMemoryOwner) {
+    obj.swigCMemOwner = cMemoryOwner;
+    return getCPtr(obj);
+  }
+
+  ~Dataset() {
+    Dispose();
+  }
+
+  public override void Dispose() {
+  lock(this) {
+      if(swigCPtr.Handle != IntPtr.Zero && swigCMemOwner == null) {
+        swigCMemOwner = new object();
+        gdalPINVOKE.delete_Dataset(swigCPtr);
+      }
+      swigCPtr = new HandleRef(null, IntPtr.Zero);
+      GC.SuppressFinalize(this);
+      base.Dispose();
+    }
+  }
+
+  public int RasterXSize {
+    get {
+      int ret = gdalPINVOKE.Dataset_RasterXSize_get(swigCPtr);
+      if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+      return ret;
+    } 
+  }
+
+  public int RasterYSize {
+    get {
+      int ret = gdalPINVOKE.Dataset_RasterYSize_get(swigCPtr);
+      if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+      return ret;
+    } 
+  }
+
+  public int RasterCount {
+    get {
+      int ret = gdalPINVOKE.Dataset_RasterCount_get(swigCPtr);
+      if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+      return ret;
+    } 
+  }
+
+  public Driver GetDriver() {
+    IntPtr cPtr = gdalPINVOKE.Dataset_GetDriver(swigCPtr);
+    Driver ret = (cPtr == IntPtr.Zero) ? null : new Driver(cPtr, false? null : this);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public Band GetRasterBand(int nBand) {
+    IntPtr cPtr = gdalPINVOKE.Dataset_GetRasterBand(swigCPtr, nBand);
+    Band ret = (cPtr == IntPtr.Zero) ? null : new Band(cPtr, false? null : this);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public string GetProjection() {
+    string ret = gdalPINVOKE.Dataset_GetProjection(swigCPtr);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public string GetProjectionRef() {
+    string ret = gdalPINVOKE.Dataset_GetProjectionRef(swigCPtr);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public int SetProjection(string prj) {
+    int ret = gdalPINVOKE.Dataset_SetProjection(swigCPtr, prj);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public void GetGeoTransform(double[] argout) {
+    gdalPINVOKE.Dataset_GetGeoTransform(swigCPtr, argout);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+  public int SetGeoTransform(double[] argin) {
+    int ret = gdalPINVOKE.Dataset_SetGeoTransform(swigCPtr, argin);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public int BuildOverviews(string resampling, int overviewlist) {
+    int ret = gdalPINVOKE.Dataset_BuildOverviews(swigCPtr, resampling, overviewlist);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public int GetGCPCount() {
+    int ret = gdalPINVOKE.Dataset_GetGCPCount(swigCPtr);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public string GetGCPProjection() {
+    string ret = gdalPINVOKE.Dataset_GetGCPProjection(swigCPtr);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public void GetGCPs(SWIGTYPE_p_int nGCPs, SWIGTYPE_p_p_GDAL_GCP pGCPs) {
+    gdalPINVOKE.Dataset_GetGCPs(swigCPtr, SWIGTYPE_p_int.getCPtr(nGCPs), SWIGTYPE_p_p_GDAL_GCP.getCPtr(pGCPs));
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+  public int SetGCPs(int nGCPs, GCP pGCPs, string pszGCPProjection) {
+    int ret = gdalPINVOKE.Dataset_SetGCPs(swigCPtr, nGCPs, GCP.getCPtr(pGCPs), pszGCPProjection);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public void FlushCache() {
+    gdalPINVOKE.Dataset_FlushCache(swigCPtr);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+  public int AddBand(int datatype, string[] options) {
+    int ret = gdalPINVOKE.Dataset_AddBand(swigCPtr, datatype, new gdalPINVOKE.StringListMarshal(options)._ar);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public int WriteRaster(int xoff, int yoff, int xsize, int ysize, int buf_len, SWIGTYPE_p_int buf_xsize, SWIGTYPE_p_int buf_ysize, SWIGTYPE_p_int buf_type, int band_list) {
+    int ret = gdalPINVOKE.Dataset_WriteRaster(swigCPtr, xoff, yoff, xsize, ysize, buf_len, SWIGTYPE_p_int.getCPtr(buf_xsize), SWIGTYPE_p_int.getCPtr(buf_ysize), SWIGTYPE_p_int.getCPtr(buf_type), band_list);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public int ReadRaster(int xoff, int yoff, int xsize, int ysize, SWIGTYPE_p_int buf_xsize, SWIGTYPE_p_int buf_ysize, SWIGTYPE_p_int buf_type, int band_list) {
+    int ret = gdalPINVOKE.Dataset_ReadRaster(swigCPtr, xoff, yoff, xsize, ysize, SWIGTYPE_p_int.getCPtr(buf_xsize), SWIGTYPE_p_int.getCPtr(buf_ysize), SWIGTYPE_p_int.getCPtr(buf_type), band_list);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+}
+
+}
diff -urN gdal-1.4.1-orig/swig/csharp/gdal/Driver.cs gdal-1.4.1/swig/csharp/gdal/Driver.cs
--- gdal-1.4.1-orig/swig/csharp/gdal/Driver.cs	1970-01-01 01:00:00.000000000 +0100
+++ gdal-1.4.1/swig/csharp/gdal/Driver.cs	2007-04-10 17:17:12.000000000 +0200
@@ -0,0 +1,98 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.31
+ *
+ * Do not make changes to this file unless you know what you are doing--modify
+ * the SWIG interface file instead.
+ * ----------------------------------------------------------------------------- */
+
+namespace OSGeo.GDAL {
+
+using System;
+using System.Runtime.InteropServices;
+
+public class Driver : MajorObject {
+  private HandleRef swigCPtr;
+
+  internal Driver(IntPtr cPtr, object cMemoryOwner) : base(gdalPINVOKE.DriverUpcast(cPtr), cMemoryOwner) {
+    swigCPtr = new HandleRef(this, cPtr);
+  }
+
+  internal static HandleRef getCPtr(Driver obj) {
+    return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr;
+  }
+  internal static HandleRef getCPtrAndDisown(Driver obj, object cMemoryOwner) {
+    obj.swigCMemOwner = cMemoryOwner;
+    return getCPtr(obj);
+  }
+
+  public override void Dispose() {
+  lock(this) {
+      if(swigCPtr.Handle != IntPtr.Zero && swigCMemOwner == null) {
+        swigCMemOwner = new object();
+        throw new MethodAccessException("C++ destructor does not have public access");
+      }
+      swigCPtr = new HandleRef(null, IntPtr.Zero);
+      GC.SuppressFinalize(this);
+      base.Dispose();
+    }
+  }
+
+  public string ShortName {
+    get {
+      string ret = gdalPINVOKE.Driver_ShortName_get(swigCPtr);
+      if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+      return ret;
+    } 
+  }
+
+  public string LongName {
+    get {
+      string ret = gdalPINVOKE.Driver_LongName_get(swigCPtr);
+      if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+      return ret;
+    } 
+  }
+
+  public string HelpTopic {
+    get {
+      string ret = gdalPINVOKE.Driver_HelpTopic_get(swigCPtr);
+      if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+      return ret;
+    } 
+  }
+
+  public Dataset Create(string name, int xsize, int ysize, int bands, int eType, string[] options) {
+    IntPtr cPtr = gdalPINVOKE.Driver_Create(swigCPtr, name, xsize, ysize, bands, eType, new gdalPINVOKE.StringListMarshal(options)._ar);
+    Dataset ret = (cPtr == IntPtr.Zero) ? null : new Dataset(cPtr, true? null : this);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public Dataset CreateCopy(string name, Dataset src, int strict, string[] options) {
+    IntPtr cPtr = gdalPINVOKE.Driver_CreateCopy(swigCPtr, name, Dataset.getCPtr(src), strict, new gdalPINVOKE.StringListMarshal(options)._ar);
+    Dataset ret = (cPtr == IntPtr.Zero) ? null : new Dataset(cPtr, true? null : this);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public int Delete(string name) {
+    int ret = gdalPINVOKE.Driver_Delete(swigCPtr, name);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public int Register() {
+    int ret = gdalPINVOKE.Driver_Register(swigCPtr);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public void Deregister() {
+    gdalPINVOKE.Driver_Deregister(swigCPtr);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+}
+
+}
diff -urN gdal-1.4.1-orig/swig/csharp/gdal/GCP.cs gdal-1.4.1/swig/csharp/gdal/GCP.cs
--- gdal-1.4.1-orig/swig/csharp/gdal/GCP.cs	1970-01-01 01:00:00.000000000 +0100
+++ gdal-1.4.1/swig/csharp/gdal/GCP.cs	2007-04-10 17:17:12.000000000 +0200
@@ -0,0 +1,136 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.31
+ *
+ * Do not make changes to this file unless you know what you are doing--modify
+ * the SWIG interface file instead.
+ * ----------------------------------------------------------------------------- */
+
+namespace OSGeo.GDAL {
+
+using System;
+using System.Runtime.InteropServices;
+
+public class GCP : IDisposable {
+  private HandleRef swigCPtr;
+  protected object swigCMemOwner;
+
+  internal GCP(IntPtr cPtr, object cMemoryOwner) {
+    swigCMemOwner = cMemoryOwner;
+    swigCPtr = new HandleRef(this, cPtr);
+  }
+
+  internal static HandleRef getCPtr(GCP obj) {
+    return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr;
+  }
+  internal static HandleRef getCPtrAndDisown(GCP obj, object cMemoryOwner) {
+    obj.swigCMemOwner = cMemoryOwner;
+    return getCPtr(obj);
+  }
+
+  ~GCP() {
+    Dispose();
+  }
+
+  public virtual void Dispose() {
+  lock(this) {
+      if(swigCPtr.Handle != IntPtr.Zero && swigCMemOwner == null) {
+        swigCMemOwner = new object();
+        gdalPINVOKE.delete_GCP(swigCPtr);
+      }
+      swigCPtr = new HandleRef(null, IntPtr.Zero);
+      GC.SuppressFinalize(this);
+    }
+  }
+
+  public double GCPX {
+    set {
+      gdalPINVOKE.GCP_GCPX_set(swigCPtr, value);
+      if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    } 
+    get {
+      double ret = gdalPINVOKE.GCP_GCPX_get(swigCPtr);
+      if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+      return ret;
+    } 
+  }
+
+  public double GCPY {
+    set {
+      gdalPINVOKE.GCP_GCPY_set(swigCPtr, value);
+      if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    } 
+    get {
+      double ret = gdalPINVOKE.GCP_GCPY_get(swigCPtr);
+      if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+      return ret;
+    } 
+  }
+
+  public double GCPZ {
+    set {
+      gdalPINVOKE.GCP_GCPZ_set(swigCPtr, value);
+      if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    } 
+    get {
+      double ret = gdalPINVOKE.GCP_GCPZ_get(swigCPtr);
+      if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+      return ret;
+    } 
+  }
+
+  public double GCPPixel {
+    set {
+      gdalPINVOKE.GCP_GCPPixel_set(swigCPtr, value);
+      if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    } 
+    get {
+      double ret = gdalPINVOKE.GCP_GCPPixel_get(swigCPtr);
+      if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+      return ret;
+    } 
+  }
+
+  public double GCPLine {
+    set {
+      gdalPINVOKE.GCP_GCPLine_set(swigCPtr, value);
+      if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    } 
+    get {
+      double ret = gdalPINVOKE.GCP_GCPLine_get(swigCPtr);
+      if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+      return ret;
+    } 
+  }
+
+  public string Info {
+    set {
+      gdalPINVOKE.GCP_Info_set(swigCPtr, value);
+      if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    } 
+    get {
+      string ret = gdalPINVOKE.GCP_Info_get(swigCPtr);
+      if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+      return ret;
+    } 
+  }
+
+  public string Id {
+    set {
+      gdalPINVOKE.GCP_Id_set(swigCPtr, value);
+      if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    } 
+    get {
+      string ret = gdalPINVOKE.GCP_Id_get(swigCPtr);
+      if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+      return ret;
+    } 
+  }
+
+  public GCP(double x, double y, double z, double pixel, double line, string info, string id) : this(gdalPINVOKE.new_GCP(x, y, z, pixel, line, info, id), null) {
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+}
+
+}
diff -urN gdal-1.4.1-orig/swig/csharp/gdal/gdal.cs gdal-1.4.1/swig/csharp/gdal/gdal.cs
--- gdal-1.4.1-orig/swig/csharp/gdal/gdal.cs	1970-01-01 01:00:00.000000000 +0100
+++ gdal-1.4.1/swig/csharp/gdal/gdal.cs	2007-04-10 17:17:13.000000000 +0200
@@ -0,0 +1,415 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.31
+ *
+ * Do not make changes to this file unless you know what you are doing--modify
+ * the SWIG interface file instead.
+ * ----------------------------------------------------------------------------- */
+
+namespace OSGeo.GDAL {
+
+using System;
+using System.Runtime.InteropServices;
+
+public class gdal {
+  public static void UseExceptions() {
+    gdalPINVOKE.UseExceptions();
+  }
+
+  public static void DontUseExceptions() {
+    gdalPINVOKE.DontUseExceptions();
+  }
+
+  public static void Debug(string msg_class, string message) {
+    gdalPINVOKE.Debug(msg_class, message);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+  public static void Error(int msg_class, int err_code, string msg) {
+    gdalPINVOKE.Error(msg_class, err_code, msg);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+  public static int PushErrorHandler(string pszCallbackName) {
+    int ret = gdalPINVOKE.PushErrorHandler__SWIG_0(pszCallbackName);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static void PushErrorHandler(SWIGTYPE_p_CPLErrorHandler arg0) {
+    gdalPINVOKE.PushErrorHandler__SWIG_1(SWIGTYPE_p_CPLErrorHandler.getCPtr(arg0));
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+  public static void PopErrorHandler() {
+    gdalPINVOKE.PopErrorHandler();
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+  public static void ErrorReset() {
+    gdalPINVOKE.ErrorReset();
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+  public static int GetLastErrorNo() {
+    int ret = gdalPINVOKE.GetLastErrorNo();
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static int GetLastErrorType() {
+    int ret = gdalPINVOKE.GetLastErrorType();
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static string GetLastErrorMsg() {
+    string ret = gdalPINVOKE.GetLastErrorMsg();
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static void PushFinderLocation(string arg0) {
+    gdalPINVOKE.PushFinderLocation(arg0);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+  public static void PopFinderLocation() {
+    gdalPINVOKE.PopFinderLocation();
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+  public static void FinderClean() {
+    gdalPINVOKE.FinderClean();
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+  public static string FindFile(string arg0, string arg1) {
+    string ret = gdalPINVOKE.FindFile(arg0, arg1);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static void SetConfigOption(string arg0, string arg1) {
+    gdalPINVOKE.SetConfigOption(arg0, arg1);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+  public static string GetConfigOption(string arg0, string arg1) {
+    string ret = gdalPINVOKE.GetConfigOption(arg0, arg1);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static string CPLBinaryToHex(int nBytes, SWIGTYPE_p_GByte pabyData) {
+    string ret = gdalPINVOKE.CPLBinaryToHex(nBytes, SWIGTYPE_p_GByte.getCPtr(pabyData));
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static SWIGTYPE_p_GByte CPLHexToBinary(string pszHex, SWIGTYPE_p_int pnBytes) {
+    IntPtr cPtr = gdalPINVOKE.CPLHexToBinary(pszHex, SWIGTYPE_p_int.getCPtr(pnBytes));
+    SWIGTYPE_p_GByte ret = (cPtr == IntPtr.Zero) ? null : new SWIGTYPE_p_GByte(cPtr, false? null : new object());
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static double GDAL_GCP_GCPX_get(GCP h) {
+    double ret = gdalPINVOKE.GDAL_GCP_GCPX_get(GCP.getCPtr(h));
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static void GDAL_GCP_GCPX_set(GCP h, double val) {
+    gdalPINVOKE.GDAL_GCP_GCPX_set(GCP.getCPtr(h), val);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+  public static double GDAL_GCP_GCPY_get(GCP h) {
+    double ret = gdalPINVOKE.GDAL_GCP_GCPY_get(GCP.getCPtr(h));
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static void GDAL_GCP_GCPY_set(GCP h, double val) {
+    gdalPINVOKE.GDAL_GCP_GCPY_set(GCP.getCPtr(h), val);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+  public static double GDAL_GCP_GCPZ_get(GCP h) {
+    double ret = gdalPINVOKE.GDAL_GCP_GCPZ_get(GCP.getCPtr(h));
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static void GDAL_GCP_GCPZ_set(GCP h, double val) {
+    gdalPINVOKE.GDAL_GCP_GCPZ_set(GCP.getCPtr(h), val);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+  public static double GDAL_GCP_GCPPixel_get(GCP h) {
+    double ret = gdalPINVOKE.GDAL_GCP_GCPPixel_get(GCP.getCPtr(h));
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static void GDAL_GCP_GCPPixel_set(GCP h, double val) {
+    gdalPINVOKE.GDAL_GCP_GCPPixel_set(GCP.getCPtr(h), val);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+  public static double GDAL_GCP_GCPLine_get(GCP h) {
+    double ret = gdalPINVOKE.GDAL_GCP_GCPLine_get(GCP.getCPtr(h));
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static void GDAL_GCP_GCPLine_set(GCP h, double val) {
+    gdalPINVOKE.GDAL_GCP_GCPLine_set(GCP.getCPtr(h), val);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+  public static string GDAL_GCP_Info_get(GCP h) {
+    string ret = gdalPINVOKE.GDAL_GCP_Info_get(GCP.getCPtr(h));
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static void GDAL_GCP_Info_set(GCP h, string val) {
+    gdalPINVOKE.GDAL_GCP_Info_set(GCP.getCPtr(h), val);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+  public static string GDAL_GCP_Id_get(GCP h) {
+    string ret = gdalPINVOKE.GDAL_GCP_Id_get(GCP.getCPtr(h));
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static void GDAL_GCP_Id_set(GCP h, string val) {
+    gdalPINVOKE.GDAL_GCP_Id_set(GCP.getCPtr(h), val);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+  public static double GDAL_GCP_get_GCPX(GCP h) {
+    double ret = gdalPINVOKE.GDAL_GCP_get_GCPX(GCP.getCPtr(h));
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static void GDAL_GCP_set_GCPX(GCP h, double val) {
+    gdalPINVOKE.GDAL_GCP_set_GCPX(GCP.getCPtr(h), val);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+  public static double GDAL_GCP_get_GCPY(GCP h) {
+    double ret = gdalPINVOKE.GDAL_GCP_get_GCPY(GCP.getCPtr(h));
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static void GDAL_GCP_set_GCPY(GCP h, double val) {
+    gdalPINVOKE.GDAL_GCP_set_GCPY(GCP.getCPtr(h), val);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+  public static double GDAL_GCP_get_GCPZ(GCP h) {
+    double ret = gdalPINVOKE.GDAL_GCP_get_GCPZ(GCP.getCPtr(h));
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static void GDAL_GCP_set_GCPZ(GCP h, double val) {
+    gdalPINVOKE.GDAL_GCP_set_GCPZ(GCP.getCPtr(h), val);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+  public static double GDAL_GCP_get_GCPPixel(GCP h) {
+    double ret = gdalPINVOKE.GDAL_GCP_get_GCPPixel(GCP.getCPtr(h));
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static void GDAL_GCP_set_GCPPixel(GCP h, double val) {
+    gdalPINVOKE.GDAL_GCP_set_GCPPixel(GCP.getCPtr(h), val);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+  public static double GDAL_GCP_get_GCPLine(GCP h) {
+    double ret = gdalPINVOKE.GDAL_GCP_get_GCPLine(GCP.getCPtr(h));
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static void GDAL_GCP_set_GCPLine(GCP h, double val) {
+    gdalPINVOKE.GDAL_GCP_set_GCPLine(GCP.getCPtr(h), val);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+  public static string GDAL_GCP_get_Info(GCP h) {
+    string ret = gdalPINVOKE.GDAL_GCP_get_Info(GCP.getCPtr(h));
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static void GDAL_GCP_set_Info(GCP h, string val) {
+    gdalPINVOKE.GDAL_GCP_set_Info(GCP.getCPtr(h), val);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+  public static string GDAL_GCP_get_Id(GCP h) {
+    string ret = gdalPINVOKE.GDAL_GCP_get_Id(GCP.getCPtr(h));
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static void GDAL_GCP_set_Id(GCP h, string val) {
+    gdalPINVOKE.GDAL_GCP_set_Id(GCP.getCPtr(h), val);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+  public static SWIGTYPE_p_FALSE_IS_ERR GCPsToGeoTransform(int nGCPs, GCP pGCPs, double[] argout, int bApproxOK) {
+    SWIGTYPE_p_FALSE_IS_ERR ret = new SWIGTYPE_p_FALSE_IS_ERR(gdalPINVOKE.GCPsToGeoTransform(nGCPs, GCP.getCPtr(pGCPs), argout, bApproxOK), null);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static void AllRegister() {
+    gdalPINVOKE.AllRegister();
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+  public static int GetCacheMax() {
+    int ret = gdalPINVOKE.GetCacheMax();
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static void SetCacheMax(int nBytes) {
+    gdalPINVOKE.SetCacheMax(nBytes);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+  }
+
+  public static int GetCacheUsed() {
+    int ret = gdalPINVOKE.GetCacheUsed();
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static int GetDataTypeSize(int arg0) {
+    int ret = gdalPINVOKE.GetDataTypeSize(arg0);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static int DataTypeIsComplex(int arg0) {
+    int ret = gdalPINVOKE.DataTypeIsComplex(arg0);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static string GetDataTypeName(int arg0) {
+    string ret = gdalPINVOKE.GetDataTypeName(arg0);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static int GetDataTypeByName(string arg0) {
+    int ret = gdalPINVOKE.GetDataTypeByName(arg0);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static string GetColorInterpretationName(int arg0) {
+    string ret = gdalPINVOKE.GetColorInterpretationName(arg0);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static string GetPaletteInterpretationName(int arg0) {
+    string ret = gdalPINVOKE.GetPaletteInterpretationName(arg0);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static string DecToDMS(double arg0, string arg1, int arg2) {
+    string ret = gdalPINVOKE.DecToDMS(arg0, arg1, arg2);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static double PackedDMSToDec(double arg0) {
+    double ret = gdalPINVOKE.PackedDMSToDec(arg0);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static double DecToPackedDMS(double arg0) {
+    double ret = gdalPINVOKE.DecToPackedDMS(arg0);
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static XMLNode ParseXMLString(string arg0) {
+    IntPtr cPtr = gdalPINVOKE.ParseXMLString(arg0);
+    XMLNode ret = (cPtr == IntPtr.Zero) ? null : new XMLNode(cPtr, true? null : new object());
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static string SerializeXMLTree(XMLNode xmlnode) {
+    string ret = gdalPINVOKE.SerializeXMLTree(XMLNode.getCPtr(xmlnode));
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static int GetDriverCount() {
+    int ret = gdalPINVOKE.GetDriverCount();
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static Driver GetDriverByName(string name) {
+    IntPtr cPtr = gdalPINVOKE.GetDriverByName(name);
+    Driver ret = (cPtr == IntPtr.Zero) ? null : new Driver(cPtr, false? null : new object());
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static Driver GetDriver(int i) {
+    IntPtr cPtr = gdalPINVOKE.GetDriver(i);
+    Driver ret = (cPtr == IntPtr.Zero) ? null : new Driver(cPtr, false? null : new object());
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static Dataset Open(string name, int eAccess) {
+    IntPtr cPtr = gdalPINVOKE.Open(name, eAccess);
+    Dataset ret = (cPtr == IntPtr.Zero) ? null : new Dataset(cPtr, true? null : new object());
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static Dataset OpenShared(string name, int eAccess) {
+    IntPtr cPtr = gdalPINVOKE.OpenShared(name, eAccess);
+    Dataset ret = (cPtr == IntPtr.Zero) ? null : new Dataset(cPtr, true? null : new object());
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static Dataset AutoCreateWarpedVRT(Dataset src_ds, string src_wkt, string dst_wkt, int eResampleAlg, double maxerror) {
+    IntPtr cPtr = gdalPINVOKE.AutoCreateWarpedVRT(Dataset.getCPtr(src_ds), src_wkt, dst_wkt, eResampleAlg, maxerror);
+    Dataset ret = (cPtr == IntPtr.Zero) ? null : new Dataset(cPtr, true? null : new object());
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    return ret;
+  }
+
+  public static string[] GeneralCmdLineProcessor(string[] papszArgv, int nOptions) {
+    
+    if (gdalPINVOKE.SWIGPendingException.Pending) throw gdalPINVOKE.SWIGPendingException.Retrieve();
+    throw new System.NotSupportedException("Returning string arrays is not implemented yet.");
+}
+
+}
+
+}
diff -urN gdal-1.4.1-orig/swig/csharp/gdal/gdalPINVOKE.cs gdal-1.4.1/swig/csharp/gdal/gdalPINVOKE.cs
--- gdal-1.4.1-orig/swig/csharp/gdal/gdalPINVOKE.cs	1970-01-01 01:00:00.000000000 +0100
+++ gdal-1.4.1/swig/csharp/gdal/gdalPINVOKE.cs	2007-04-10 17:17:13.000000000 +0200
@@ -0,0 +1,756 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.31
+ *
+ * Do not make changes to this file unless you know what you are doing--modify
+ * the SWIG interface file instead.
+ * ----------------------------------------------------------------------------- */
+
+namespace OSGeo.GDAL {
+
+using System;
+using System.Runtime.InteropServices;
+
+class gdalPINVOKE {
+
+  protected class SWIGExceptionHelper {
+
+    public delegate void ExceptionDelegate(string message);
+    public delegate void ExceptionArgumentDelegate(string message, string paramName);
+
+    static ExceptionDelegate applicationDelegate = new ExceptionDelegate(SetPendingApplicationException);
+    static ExceptionDelegate arithmeticDelegate = new ExceptionDelegate(SetPendingArithmeticException);
+    static ExceptionDelegate divideByZeroDelegate = new ExceptionDelegate(SetPendingDivideByZeroException);
+    static ExceptionDelegate indexOutOfRangeDelegate = new ExceptionDelegate(SetPendingIndexOutOfRangeException);
+    static ExceptionDelegate invalidCastDelegate = new ExceptionDelegate(SetPendingInvalidCastException);
+    static ExceptionDelegate invalidOperationDelegate = new ExceptionDelegate(SetPendingInvalidOperationException);
+    static ExceptionDelegate ioDelegate = new ExceptionDelegate(SetPendingIOException);
+    static ExceptionDelegate nullReferenceDelegate = new ExceptionDelegate(SetPendingNullReferenceException);
+    static ExceptionDelegate outOfMemoryDelegate = new ExceptionDelegate(SetPendingOutOfMemoryException);
+    static ExceptionDelegate overflowDelegate = new ExceptionDelegate(SetPendingOverflowException);
+    static ExceptionDelegate systemDelegate = new ExceptionDelegate(SetPendingSystemException);
+
+    static ExceptionArgumentDelegate argumentDelegate = new ExceptionArgumentDelegate(SetPendingArgumentException);
+    static ExceptionArgumentDelegate argumentNullDelegate = new ExceptionArgumentDelegate(SetPendingArgumentNullException);
+    static ExceptionArgumentDelegate argumentOutOfRangeDelegate = new ExceptionArgumentDelegate(SetPendingArgumentOutOfRangeException);
+
+    [DllImport("gdal_wrap", EntryPoint="SWIGRegisterExceptionCallbacks_gdal")]
+    public static extern void SWIGRegisterExceptionCallbacks_gdal(
+                                ExceptionDelegate applicationDelegate,
+                                ExceptionDelegate arithmeticDelegate,
+                                ExceptionDelegate divideByZeroDelegate, 
+                                ExceptionDelegate indexOutOfRangeDelegate, 
+                                ExceptionDelegate invalidCastDelegate,
+                                ExceptionDelegate invalidOperationDelegate,
+                                ExceptionDelegate ioDelegate,
+                                ExceptionDelegate nullReferenceDelegate,
+                                ExceptionDelegate outOfMemoryDelegate, 
+                                ExceptionDelegate overflowDelegate, 
+                                ExceptionDelegate systemExceptionDelegate);
+
+    [DllImport("gdal_wrap", EntryPoint="SWIGRegisterExceptionArgumentCallbacks_gdal")]
+    public static extern void SWIGRegisterExceptionCallbacksArgument_gdal(
+                                ExceptionArgumentDelegate argumentDelegate,
+                                ExceptionArgumentDelegate argumentNullDelegate,
+                                ExceptionArgumentDelegate argumentOutOfRangeDelegate);
+
+    static void SetPendingApplicationException(string message) {
+      SWIGPendingException.Set(new System.ApplicationException(message, SWIGPendingException.Retrieve()));
+    }
+    static void SetPendingArithmeticException(string message) {
+      SWIGPendingException.Set(new System.ArithmeticException(message, SWIGPendingException.Retrieve()));
+    }
+    static void SetPendingDivideByZeroException(string message) {
+      SWIGPendingException.Set(new System.DivideByZeroException(message, SWIGPendingException.Retrieve()));
+    }
+    static void SetPendingIndexOutOfRangeException(string message) {
+      SWIGPendingException.Set(new System.IndexOutOfRangeException(message, SWIGPendingException.Retrieve()));
+    }
+    static void SetPendingInvalidCastException(string message) {
+      SWIGPendingException.Set(new System.InvalidCastException(message, SWIGPendingException.Retrieve()));
+    }
+    static void SetPendingInvalidOperationException(string message) {
+      SWIGPendingException.Set(new System.InvalidOperationException(message, SWIGPendingException.Retrieve()));
+    }
+    static void SetPendingIOException(string message) {
+      SWIGPendingException.Set(new System.IO.IOException(message, SWIGPendingException.Retrieve()));
+    }
+    static void SetPendingNullReferenceException(string message) {
+      SWIGPendingException.Set(new System.NullReferenceException(message, SWIGPendingException.Retrieve()));
+    }
+    static void SetPendingOutOfMemoryException(string message) {
+      SWIGPendingException.Set(new System.OutOfMemoryException(message, SWIGPendingException.Retrieve()));
+    }
+    static void SetPendingOverflowException(string message) {
+      SWIGPendingException.Set(new System.OverflowException(message, SWIGPendingException.Retrieve()));
+    }
+    static void SetPendingSystemException(string message) {
+      SWIGPendingException.Set(new System.SystemException(message, SWIGPendingException.Retrieve()));
+    }
+
+    static void SetPendingArgumentException(string message, string paramName) {
+      SWIGPendingException.Set(new System.ArgumentException(message, paramName, SWIGPendingException.Retrieve()));
+    }
+    static void SetPendingArgumentNullException(string message, string paramName) {
+      Exception e = SWIGPendingException.Retrieve();
+      if (e != null) message = message + " Inner Exception: " + e.Message;
+      SWIGPendingException.Set(new System.ArgumentNullException(paramName, message));
+    }
+    static void SetPendingArgumentOutOfRangeException(string message, string paramName) {
+      Exception e = SWIGPendingException.Retrieve();
+      if (e != null) message = message + " Inner Exception: " + e.Message;
+      SWIGPendingException.Set(new System.ArgumentOutOfRangeException(paramName, message));
+    }
+
+    static SWIGExceptionHelper() {
+      SWIGRegisterExceptionCallbacks_gdal(
+                                applicationDelegate,
+                                arithmeticDelegate,
+                                divideByZeroDelegate,
+                                indexOutOfRangeDelegate,
+                                invalidCastDelegate,
+                                invalidOperationDelegate,
+                                ioDelegate,
+                                nullReferenceDelegate,
+                                outOfMemoryDelegate,
+                                overflowDelegate,
+                                systemDelegate);
+
+      SWIGRegisterExceptionCallbacksArgument_gdal(
+                                argumentDelegate,
+                                argumentNullDelegate,
+                                argumentOutOfRangeDelegate);
+    }
+  }
+
+  protected static SWIGExceptionHelper swigExceptionHelper = new SWIGExceptionHelper();
+
+  public class SWIGPendingException {
+    [ThreadStatic]
+    private static Exception pendingException = null;
+    private static int numExceptionsPending = 0;
+
+    public static bool Pending {
+      get {
+        bool pending = false;
+        if (numExceptionsPending > 0)
+          if (pendingException != null)
+            pending = true;
+        return pending;
+      } 
+    }
+
+    public static void Set(Exception e) {
+      if (pendingException != null)
+        throw new ApplicationException("FATAL: An earlier pending exception from unmanaged code was missed and thus not thrown (" + pendingException.ToString() + ")", e);
+      pendingException = e;
+      lock(typeof(gdalPINVOKE)) {
+        numExceptionsPending++;
+      }
+    }
+
+    public static Exception Retrieve() {
+      Exception e = null;
+      if (numExceptionsPending > 0) {
+        if (pendingException != null) {
+          e = pendingException;
+          pendingException = null;
+          lock(typeof(gdalPINVOKE)) {
+            numExceptionsPending--;
+          }
+        }
+      }
+      return e;
+    }
+  }
+
+
+  protected class SWIGStringHelper {
+
+    public delegate string SWIGStringDelegate(string message);
+    static SWIGStringDelegate stringDelegate = new SWIGStringDelegate(CreateString);
+
+    [DllImport("gdal_wrap", EntryPoint="SWIGRegisterStringCallback_gdal")]
+    public static extern void SWIGRegisterStringCallback_gdal(SWIGStringDelegate stringDelegate);
+
+    static string CreateString(string cString) {
+      return cString;
+    }
+
+    static SWIGStringHelper() {
+      SWIGRegisterStringCallback_gdal(stringDelegate);
+    }
+  }
+
+  static protected SWIGStringHelper swigStringHelper = new SWIGStringHelper();
+
+
+  [DllImport("gdal_wrap", EntryPoint="CSharp_UseExceptions")]
+  public static extern void UseExceptions();
+
+  [DllImport("gdal_wrap", EntryPoint="CSharp_DontUseExceptions")]
+  public static extern void DontUseExceptions();
+
+  public class StringListMarshal : IDisposable {
+    public readonly IntPtr[] _ar;
+    public StringListMarshal(string[] ar) {
+      _ar = new IntPtr[ar.Length+1];
+      for (int cx = 0; cx < ar.Length; cx++) {
+	      _ar[cx] = System.Runtime.InteropServices.Marshal.StringToHGlobalAnsi(ar[cx]);
+      }
+      _ar[ar.Length] = IntPtr.Zero;
+    }
+    public virtual void Dispose() {
+	  for (int cx = 0; cx < _ar.Length-1; cx++) {
+          System.Runtime.InteropServices.Marshal.FreeHGlobal(_ar[cx]);
+      }
+      GC.SuppressFinalize(this);
+    }
+  }
+
+
+  [DllImport("gdal_wrap", EntryPoint="CSharp_Debug")]
+  public static extern void Debug(string jarg1, string jarg2);
+
+  [DllImport("gdal_wrap", EntryPoint="CSharp_Error")]
+  public static extern void Error(int jarg1, int jarg2, string jarg3);
+
+  [DllImport("gdal_wrap", EntryPoint="CSharp_PushErrorHandler__SWIG_0")]
+  public static extern int PushErrorHandler__SWIG_0(string jarg1);
+
+  [DllImport("gdal_wrap", EntryPoint="CSharp_PushErrorHandler__SWIG_1")]
+  public static extern void PushErrorHandler__SWIG_1(HandleRef jarg1);
+
+  [DllImport("gdal_wrap", EntryPoint="CSharp_PopErrorHandler")]
+  public static extern void PopErrorHandler();
+
+  [DllImport("gdal_wrap", EntryPoint="CSharp_ErrorReset")]
+  public static extern void ErrorReset();
+
+  [DllImport("gdal_wrap", EntryPoint="CSharp_GetLastErrorNo")]
+  public static extern int GetLastErrorNo();
+
+  [DllImport("gdal_wrap", EntryPoint="CSharp_GetLastErrorType")]
+  public static extern int GetLastErrorType();
+
+  [DllImport("gdal_wrap", EntryPoint="CSharp_GetLastErrorMsg")]
+  public static extern string GetLastErrorMsg();
+
+  [DllImport("gdal_wrap", EntryPoint="CSharp_PushFinderLocation")]
+  public static extern void PushFinderLocation(string jarg1);
+
+  [DllImport("gdal_wrap", EntryPoint="CSharp_PopFinderLocation")]
+  public static extern void PopFinderLocation();
+
+  [DllImport("gdal_wrap", EntryPoint="CSharp_FinderClean")]
+  public static extern void FinderClean();
+
+  [DllImport("gdal_wrap", EntryPoint="CSharp_FindFile")]
+  public static ex