
Catalog of typemaps used

Note:  Use CSL routines for memory management.

Note: If a typemap is listed as Required, it is explicitly used in an
%apply statement.  This means that it must appear defined in the typemaps
even if it does nothing.

---------------------------------------

argout (double *argout[ANY]) - Required:
  This is used to return a fixed length array from function calls.  The array is allocated
  by the GDAL function and must be CPLFree'd by the caller.

argout (double argout[ANY])-
  Used to return fixed length array from function calls.  The memory is allocated by the caller.
  In a typical typemap implementation, the array is defined on the stack of fixed size.

argout (int *nGCPs, GDAL_GCP const **pGCPs ) -

argout (int *nLen, char **pBuf) -
  Return a character buffer.  Suggested use is to convert to native string
  type.  Typemap needs to deallocate memory.
  FrankW:  Should this be done with free?

argout (char **argout ) - Required - 

argout (long *OUTPUT) - Required - 

-------------------

in (char **dict) - Required 
  Convert a native dictionary/hash type into name value pairs.

in (char **ignorechange) - Required
  Used as in/out argument.  The argument may be modified by the gdal routine.
  In python, the mutated string is not returned to the caller.

in (char **options) -
  Convert a native tuple/list of strings into a char ** using the CSLAddString
  routines.  The converted char ** must be released with CSLDestroy.

in (double argin[ANY]) - Required
  Used to pass a fixed length array of doubles into a gdal function.

in GDALColorEntry* -
  Pass a GDALColorEntry into a function.

in (int *optional_int) - Required -
  Pass an optional integer argument into a function.  If the value is not
  specified by user of binding, pass in the null pointer.

in (int nGCPs, GDAL_GCP const *pGCPs) -
  Pass a fixed length array of GCP pointers into a function.

in (int nList, int *pList) - Required - Pass a fixed length integer array into a function.

in (int nLen, char *pBuf) - Required - Pass a fixed length character buffer into a function.

in (tostring argin ) - Required - Converts any argument in the script types to a string representation.
In python this functionality directly calls AsString (ie str()) on the object.  This functionality
could be reduced in other languages as long as it's documented.

in (const char *utf8_path) - Optional - 
  Any inputs marked this way should be treated as utf-8, and if the language supports it
  a conversion should be applied.  For many languages the default (the fallback const char *
  handler) will be sufficient. 

-------------------

out (char **dict) - Required - The return value is a collection of name/value pairs.  This can be
converted into a native dictionary or hash structure.  Use CPLParseNameValue() to
access the char ** type.

out (CPLErr) - CPLErr is an enum defined in port/cpl_error.h.  This code is returned
by many functions in GDAL core.  Suggested useage is to test the return code an convert
to an exception.

out GDALColorEntry* - Return a GDALColorEntry from a function.

out (IF_FALSE_RETURN_NONE) - Required - This is a typedef'd int.  Must support use in conjunction with
argout typemaps.

out OGRErr - 

out (char **CSL) - Required - The return value is a list that is copied
into a list in the target language and then CSLDestroyed

out (retStringAndCPLFree*) - Required - The returned string should be
copied to target language and then CPLFree'd

-------------------

Optional checks against nullness. Some language bindings (e.g. Perl's)
map undefined variables into NULLs, which cause core dumps if allowed to
go the C API.

%typemap(check) (const char *pszNewDesc)
%typemap(check) (const char *cap)
%typemap(check) (const char* statement)
%typemap(check) (OGRFeatureShadow *feature)
%typemap(check) (OGRFieldDefnShadow* field_def)
%typemap(check) (OGRFieldDefnShadow* defn)
%typemap(check) OGRGeometryShadow* geom
%typemap(check) OGRGeometryShadow* other
%typemap(check) OGRGeometryShadow* other_disown
%typemap(check) OSRCoordinateTransformationShadow*
%typemap(check) (const char *name)
%typemap(check) (const char *request)
%typemap(check) (char *method)
