Index: /issm/trunk-jpl/src/c/io/Matlab/FetchMatlabData.cpp
===================================================================
--- /issm/trunk-jpl/src/c/io/Matlab/FetchMatlabData.cpp	(revision 11933)
+++ /issm/trunk-jpl/src/c/io/Matlab/FetchMatlabData.cpp	(revision 11934)
@@ -1,3 +1,3 @@
-/*\file FetchMatlabData.cpp:
+/*\file FetchData.cpp:
  * \brief: general I/O interface to fetch data in matlab
  */
@@ -14,6 +14,6 @@
 #if defined(_HAVE_MATLAB_) && defined(_SERIAL_)
 #include <mex.h>
-/*FUNCTION FetchMatlabData(DataSet** pdataset,const mxArray* dataref){{{1*/
-void FetchMatlabData(DataSet** pdataset,const mxArray* dataref){
+/*FUNCTION FetchData(DataSet** pdataset,const mxArray* dataref){{{1*/
+void FetchData(DataSet** pdataset,const mxArray* dataref){
 
 	/*output*/
@@ -48,6 +48,6 @@
 }
 /*}}}*/
-/*FUNCTION FetchMatlabData(double** pmatrix,int* pM,int *pN,const mxArray* dataref){{{1*/
-void FetchMatlabData(double** pmatrix,int* pM,int *pN,const mxArray* dataref){
+/*FUNCTION FetchData(double** pmatrix,int* pM,int *pN,const mxArray* dataref){{{1*/
+void FetchData(double** pmatrix,int* pM,int *pN,const mxArray* dataref){
 
 	double*  outmatrix=NULL;
@@ -84,6 +84,6 @@
 }
 /*}}}*/
-/*FUNCTION FetchMatlabData(double** pmatrix,int* pnumel,int* pndims,int** psize,const mxArray* dataref){{{1*/
-void FetchMatlabData(double** pmatrix,int* pnumel,int* pndims,int** psize,const mxArray* dataref){
+/*FUNCTION FetchData(double** pmatrix,int* pnumel,int* pndims,int** psize,const mxArray* dataref){{{1*/
+void FetchData(double** pmatrix,int* pnumel,int* pndims,int** psize,const mxArray* dataref){
 
 	double*  outmatrix=NULL;
@@ -127,6 +127,6 @@
 }
 /*}}}*/
-/*FUNCTION FetchMatlabData(int** pmatrix,int* pM,int *pN,const mxArray* dataref){{{1*/
-void FetchMatlabData(int** pmatrix,int* pM,int *pN,const mxArray* dataref){
+/*FUNCTION FetchData(int** pmatrix,int* pM,int *pN,const mxArray* dataref){{{1*/
+void FetchData(int** pmatrix,int* pM,int *pN,const mxArray* dataref){
 
 	int     i,outmatrix_rows,outmatrix_cols;
@@ -169,6 +169,6 @@
 }
 /*}}}*/
-/*FUNCTION FetchMatlabData(bool** pmatrix,int* pM,int *pN,const mxArray* dataref){{{1*/
-void FetchMatlabData(bool** pmatrix,int* pM,int *pN,const mxArray* dataref){
+/*FUNCTION FetchData(bool** pmatrix,int* pM,int *pN,const mxArray* dataref){{{1*/
+void FetchData(bool** pmatrix,int* pM,int *pN,const mxArray* dataref){
 
 	int     i,outmatrix_rows,outmatrix_cols;
@@ -211,6 +211,6 @@
 }
 /*}}}*/
-/*FUNCTION FetchMatlabData(bool** pmatrix,int* pnumel,int* pndims,int** psize,const mxArray* dataref){{{1*/
-void FetchMatlabData(bool** pmatrix,int* pnumel,int* pndims,int** psize,const mxArray* dataref){
+/*FUNCTION FetchData(bool** pmatrix,int* pnumel,int* pndims,int** psize,const mxArray* dataref){{{1*/
+void FetchData(bool** pmatrix,int* pnumel,int* pndims,int** psize,const mxArray* dataref){
 
 	int      i;
@@ -276,6 +276,6 @@
 }
 /*}}}*/
-/*FUNCTION FetchMatlabData(Matrix** pmatrix,const mxArray* dataref){{{1*/
-void FetchMatlabData(Matrix** pmatrix,const mxArray* dataref){
+/*FUNCTION FetchData(Matrix** pmatrix,const mxArray* dataref){{{1*/
+void FetchData(Matrix** pmatrix,const mxArray* dataref){
 	
 	Matrix* outmatrix=NULL;
@@ -297,6 +297,6 @@
 }
 /*}}}*/
-/*FUNCTION FetchMatlabData(double** pvector,int* pM,const mxArray* dataref){{{1*/
-void FetchMatlabData(double** pvector,int* pM,const mxArray* dataref){
+/*FUNCTION FetchData(double** pvector,int* pM,const mxArray* dataref){{{1*/
+void FetchData(double** pvector,int* pM,const mxArray* dataref){
 
 	double* outvector=NULL;
@@ -324,6 +324,6 @@
 }
 /*}}}*/
-/*FUNCTION FetchMatlabData(int** pvector,int* pM,const mxArray* dataref){{{1*/
-void FetchMatlabData(int** pvector,int* pM,const mxArray* dataref){
+/*FUNCTION FetchData(int** pvector,int* pM,const mxArray* dataref){{{1*/
+void FetchData(int** pvector,int* pM,const mxArray* dataref){
 
 	int    i;
@@ -356,6 +356,6 @@
 }
 /*}}}*/
-/*FUNCTION FetchMatlabData(bool** pvector,int* pM,const mxArray* dataref){{{1*/
-void FetchMatlabData(bool** pvector,int* pM,const mxArray* dataref){
+/*FUNCTION FetchData(bool** pvector,int* pM,const mxArray* dataref){{{1*/
+void FetchData(bool** pvector,int* pM,const mxArray* dataref){
 
 	int    i;
@@ -388,6 +388,6 @@
 }
 /*}}}*/
-/*FUNCTION FetchMatlabData(float** pvector,int* pM,const mxArray* dataref){{{1*/
-void FetchMatlabData(float** pvector,int* pM,const mxArray* dataref){
+/*FUNCTION FetchData(float** pvector,int* pM,const mxArray* dataref){{{1*/
+void FetchData(float** pvector,int* pM,const mxArray* dataref){
 
 	int    i;
@@ -420,6 +420,6 @@
 }
 /*}}}*/
-/*FUNCTION FetchMatlabData(Vector** pvector,const mxArray* dataref){{{1*/
-void FetchMatlabData(Vector** pvector,const mxArray* dataref){
+/*FUNCTION FetchData(Vector** pvector,const mxArray* dataref){{{1*/
+void FetchData(Vector** pvector,const mxArray* dataref){
 	
 	Vector* vector=NULL;
@@ -444,6 +444,6 @@
 }
 /*}}}*/
-/*FUNCTION FetchMatlabData(char** pstring,const mxArray* dataref){{{1*/
-void FetchMatlabData(char** pstring,const mxArray* dataref){
+/*FUNCTION FetchData(char** pstring,const mxArray* dataref){{{1*/
+void FetchData(char** pstring,const mxArray* dataref){
 
 	char* outstring=NULL;
@@ -466,6 +466,6 @@
 	*pstring=outstring;
 }
-/*FUNCTION FetchMatlabData(char** pmatrix,int* pnumel,int* pndims,int** psize,const mxArray* dataref){{{1*/
-void FetchMatlabData(char** pmatrix,int* pnumel,int* pndims,int** psize,const mxArray* dataref){
+/*FUNCTION FetchData(char** pmatrix,int* pnumel,int* pndims,int** psize,const mxArray* dataref){{{1*/
+void FetchData(char** pmatrix,int* pnumel,int* pndims,int** psize,const mxArray* dataref){
 
 	int      outmatrix_numel,outmatrix_ndims;
@@ -509,6 +509,6 @@
 }
 /*}}}*/
-/*FUNCTION FetchMatlabData(double* pscalar,const mxArray* dataref){{{1*/
-void FetchMatlabData(double* pscalar,const mxArray* dataref){
+/*FUNCTION FetchData(double* pscalar,const mxArray* dataref){{{1*/
+void FetchData(double* pscalar,const mxArray* dataref){
 
 	double scalar;
@@ -526,6 +526,6 @@
 }
 /*}}}*/
-/*FUNCTION FetchMatlabData(int* pinteger,const mxArray* dataref){{{1*/
-void FetchMatlabData(int* pinteger,const mxArray* dataref){
+/*FUNCTION FetchData(int* pinteger,const mxArray* dataref){{{1*/
+void FetchData(int* pinteger,const mxArray* dataref){
 
 	int integer;
@@ -543,6 +543,6 @@
 }
 /*}}}*/
-/*FUNCTION FetchMatlabData(bool* pboolean,const mxArray* dataref){{{1*/
-void FetchMatlabData(bool* pboolean,const mxArray* dataref){
+/*FUNCTION FetchData(bool* pboolean,const mxArray* dataref){{{1*/
+void FetchData(bool* pboolean,const mxArray* dataref){
 
 	bool* mxbool_ptr=NULL;
@@ -560,6 +560,6 @@
 }
 /*}}}*/
-/*FUNCTION FetchMatlabData(Parameters** pparameters, DataHandle dataref){{{1*/
-void FetchMatlabData(Parameters** pparameters, DataHandle dataref){
+/*FUNCTION FetchData(Parameters** pparameters, DataHandle dataref){{{1*/
+void FetchData(Parameters** pparameters, DataHandle dataref){
 
 	int i,j;
@@ -689,5 +689,5 @@
 					char* descriptor=NULL;
 					pfield2=mxGetCell(pfield,i);
-					FetchMatlabData(&descriptor,pfield2);
+					FetchData(&descriptor,pfield2);
 					stringarray[i]=descriptor;
 				}
@@ -716,5 +716,5 @@
 					int     m,n;
 					pfield2=mxGetCell(pfield,i);
-					FetchMatlabData(&matrix,&m,&n,pfield2);
+					FetchData(&matrix,&m,&n,pfield2);
 					array[i]=matrix;
 					mdims_array[i]=m;
Index: /issm/trunk-jpl/src/c/io/Matlab/OptionParse.cpp
===================================================================
--- /issm/trunk-jpl/src/c/io/Matlab/OptionParse.cpp	(revision 11933)
+++ /issm/trunk-jpl/src/c/io/Matlab/OptionParse.cpp	(revision 11934)
@@ -31,5 +31,5 @@
 	}
 
-	FetchMatlabData(&odouble->values,&odouble->numel,&odouble->ndims,&odouble->size,prhs[0]);
+	FetchData(&odouble->values,&odouble->numel,&odouble->ndims,&odouble->size,prhs[0]);
 
 	return(odouble);
@@ -50,5 +50,5 @@
 	}
 
-	FetchMatlabData(&ological->values,&ological->numel,&ological->ndims,&ological->size,prhs[0]);
+	FetchData(&ological->values,&ological->numel,&ological->ndims,&ological->size,prhs[0]);
 
 	return(ological);
@@ -69,5 +69,5 @@
 	}
 
-	FetchMatlabData(&ochar->values,&ochar->numel,&ochar->ndims,&ochar->size,prhs[0]);
+	FetchData(&ochar->values,&ochar->numel,&ochar->ndims,&ochar->size,prhs[0]);
 
 	return(ochar);
Index: /issm/trunk-jpl/src/c/io/Matlab/WriteMatlabData.cpp
===================================================================
--- /issm/trunk-jpl/src/c/io/Matlab/WriteMatlabData.cpp	(revision 11933)
+++ /issm/trunk-jpl/src/c/io/Matlab/WriteMatlabData.cpp	(revision 11934)
@@ -1,3 +1,3 @@
-/* \file WriteMatlabData.c:
+/* \file WriteData.c:
  * \brief: general interface for writing data
  */
@@ -15,6 +15,6 @@
 #include <mex.h>
 
-/*FUNCTION WriteMatlabData(mxArray** pdataref,DataSet* dataset){{{1*/
-void WriteMatlabData(mxArray** pdataref,DataSet* dataset){
+/*FUNCTION WriteData(mxArray** pdataref,DataSet* dataset){{{1*/
+void WriteData(mxArray** pdataref,DataSet* dataset){
 
 	mxArray* dataref=NULL;
@@ -41,6 +41,6 @@
 }
 /*}}}*/
-/*FUNCTION WriteMatlabData(mxArray** pdataref,Matrix* matrix){{{1*/
-void WriteMatlabData(mxArray** pdataref,Matrix* matrix){
+/*FUNCTION WriteData(mxArray** pdataref,Matrix* matrix){{{1*/
+void WriteData(mxArray** pdataref,Matrix* matrix){
 		
 	mxArray* dataref=NULL;
@@ -58,6 +58,6 @@
 }
 /*}}}*/
-/*FUNCTION WriteMatlabData(mxArray** pdataref,double* matrix, int M,int N){{{1*/
-void WriteMatlabData(mxArray** pdataref,double* matrix, int M,int N){
+/*FUNCTION WriteData(mxArray** pdataref,double* matrix, int M,int N){{{1*/
+void WriteData(mxArray** pdataref,double* matrix, int M,int N){
 	
 	mxArray* dataref=NULL;
@@ -81,6 +81,6 @@
 }
 /*}}}*/
-/*FUNCTION WriteMatlabData(mxArray** pdataref,int* matrix, int M,int N){{{1*/
-void WriteMatlabData(mxArray** pdataref,int* matrix, int M,int N){
+/*FUNCTION WriteData(mxArray** pdataref,int* matrix, int M,int N){{{1*/
+void WriteData(mxArray** pdataref,int* matrix, int M,int N){
 
 	mxArray* dataref=NULL;
@@ -108,6 +108,6 @@
 }
 /*}}}*/
-/*FUNCTION WriteMatlabData(mxArray** pdataref,Vector* vector){{{1*/
-void WriteMatlabData(mxArray** pdataref,Vector* vector){
+/*FUNCTION WriteData(mxArray** pdataref,Vector* vector){{{1*/
+void WriteData(mxArray** pdataref,Vector* vector){
 	
 	mxArray* dataref=NULL;
@@ -124,6 +124,6 @@
 }
 /*}}}*/
-/*FUNCTION WriteMatlabData(mxArray** pdataref,double* vector, int M){{{1*/
-void WriteMatlabData(mxArray** pdataref,double* vector, int M){
+/*FUNCTION WriteData(mxArray** pdataref,double* vector, int M){{{1*/
+void WriteData(mxArray** pdataref,double* vector, int M){
 	
 	mxArray* dataref=NULL;
@@ -144,12 +144,12 @@
 }
 /*}}}*/
-/*FUNCTION WriteMatlabData(mxArray** pdataref,double scalar){{{1*/
-void WriteMatlabData(mxArray** pdataref,double scalar){
+/*FUNCTION WriteData(mxArray** pdataref,double scalar){{{1*/
+void WriteData(mxArray** pdataref,double scalar){
 
 	*pdataref=mxCreateDoubleScalar(scalar);
 }
 /*}}}*/
-/*FUNCTION WriteMatlabData(mxArray** pdataref,int integer){{{1*/
-void WriteMatlabData(mxArray** pdataref,int integer){
+/*FUNCTION WriteData(mxArray** pdataref,int integer){{{1*/
+void WriteData(mxArray** pdataref,int integer){
 
 		*pdataref=mxCreateDoubleScalar((double)integer);
@@ -157,6 +157,6 @@
 }
 /*}}}*/
-/*FUNCTION WriteMatlabData(mxArray** pdataref,int boolean){{{1*/
-void WriteMatlabData(mxArray** pdataref,bool boolean){
+/*FUNCTION WriteData(mxArray** pdataref,int boolean){{{1*/
+void WriteData(mxArray** pdataref,bool boolean){
 
 	*pdataref=mxCreateDoubleScalar((double)boolean);
@@ -164,12 +164,12 @@
 }
 /*}}}*/
-/*FUNCTION WriteMatlabData(mxArray** pdataref,char* string){{{1*/
-void WriteMatlabData(mxArray** pdataref,char* string){
+/*FUNCTION WriteData(mxArray** pdataref,char* string){{{1*/
+void WriteData(mxArray** pdataref,char* string){
 
 		*pdataref=mxCreateString(string);
 }
 /*}}}*/
-/*FUNCTION WriteMatlabData(mxArray** pdataref,Parameters* parameters){{{1*/
-void WriteMatlabData(mxArray** pdataref,Parameters* parameters){
+/*FUNCTION WriteData(mxArray** pdataref,Parameters* parameters){{{1*/
+void WriteData(mxArray** pdataref,Parameters* parameters){
 
 	int i;
Index: /issm/trunk-jpl/src/c/io/Matlab/matlabio.h
===================================================================
--- /issm/trunk-jpl/src/c/io/Matlab/matlabio.h	(revision 11933)
+++ /issm/trunk-jpl/src/c/io/Matlab/matlabio.h	(revision 11934)
@@ -5,4 +5,10 @@
 #ifndef _MATLAB_IO_H_
 #define _MATLAB_IO_H_
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif 
 
 #include "../../objects/objects.h"
@@ -15,34 +21,34 @@
 #if defined(_HAVE_MATLAB_) && defined(_SERIAL_)
 #include <mex.h>
-void WriteMatlabData(mxArray** pdataref,DataSet* dataset);
-void WriteMatlabData(mxArray** pdataref,Matrix* matrix);
-void WriteMatlabData(mxArray** pdataref,double* matrix, int M,int N);
-void WriteMatlabData(mxArray** pdataref,int*    matrix, int M,int N);
-void WriteMatlabData(mxArray** pdataref,Vector* vector);
-void WriteMatlabData(mxArray** pdataref,double* vector, int M);
-void WriteMatlabData(mxArray** pdataref,int integer);
-void WriteMatlabData(mxArray** pdataref,bool boolean);
-void WriteMatlabData(mxArray** pdataref,double scalar);
-void WriteMatlabData(mxArray** pdataref,char* string);
-void WriteMatlabData(DataHandle* pdataref,Parameters* parameters);
+void WriteData(mxArray** pdataref,DataSet* dataset);
+void WriteData(mxArray** pdataref,Matrix* matrix);
+void WriteData(mxArray** pdataref,double* matrix, int M,int N);
+void WriteData(mxArray** pdataref,int*    matrix, int M,int N);
+void WriteData(mxArray** pdataref,Vector* vector);
+void WriteData(mxArray** pdataref,double* vector, int M);
+void WriteData(mxArray** pdataref,int integer);
+void WriteData(mxArray** pdataref,bool boolean);
+void WriteData(mxArray** pdataref,double scalar);
+void WriteData(mxArray** pdataref,char* string);
+void WriteData(DataHandle* pdataref,Parameters* parameters);
 
-void FetchMatlabData(DataSet** pdataset,const mxArray* dataref);
-void FetchMatlabData(double** pmatrix,int* pM,int *pN,const mxArray* dataref);
-void FetchMatlabData(double** pmatrix,int* pnumel,int* pndims,int** psize,const mxArray* dataref);
-void FetchMatlabData(int** pmatrix,int* pM,int *pN,const mxArray* dataref);
-void FetchMatlabData(bool** pmatrix,int* pM,int *pN,const mxArray* dataref);
-void FetchMatlabData(bool** pmatrix,int* pnumel,int* pndims,int** psize,const mxArray* dataref);
-void FetchMatlabData(Matrix** pmatrix,const mxArray* dataref);
-void FetchMatlabData(int** pvector,int* pM,const mxArray* dataref);
-void FetchMatlabData(float** pvector,int* pM,const mxArray* dataref);
-void FetchMatlabData(double** pvector,int* pM,const mxArray* dataref);
-void FetchMatlabData(bool** pvector,int* pM,const mxArray* dataref);
-void FetchMatlabData(Vector** pvector,const mxArray* dataref);
-void FetchMatlabData(char** pstring,const mxArray* dataref);
-void FetchMatlabData(char** pmatrix,int* pnumel,int* pndims,int** psize,const mxArray* dataref);
-void FetchMatlabData(double* pscalar,const mxArray* dataref);
-void FetchMatlabData(int* pinteger,const mxArray* dataref);
-void FetchMatlabData(bool* pbool,const mxArray* dataref);
-void FetchMatlabData(Parameters** pparameters, DataHandle dataref);
+void FetchData(DataSet** pdataset,const mxArray* dataref);
+void FetchData(double** pmatrix,int* pM,int *pN,const mxArray* dataref);
+void FetchData(double** pmatrix,int* pnumel,int* pndims,int** psize,const mxArray* dataref);
+void FetchData(int** pmatrix,int* pM,int *pN,const mxArray* dataref);
+void FetchData(bool** pmatrix,int* pM,int *pN,const mxArray* dataref);
+void FetchData(bool** pmatrix,int* pnumel,int* pndims,int** psize,const mxArray* dataref);
+void FetchData(Matrix** pmatrix,const mxArray* dataref);
+void FetchData(int** pvector,int* pM,const mxArray* dataref);
+void FetchData(float** pvector,int* pM,const mxArray* dataref);
+void FetchData(double** pvector,int* pM,const mxArray* dataref);
+void FetchData(bool** pvector,int* pM,const mxArray* dataref);
+void FetchData(Vector** pvector,const mxArray* dataref);
+void FetchData(char** pstring,const mxArray* dataref);
+void FetchData(char** pmatrix,int* pnumel,int* pndims,int** psize,const mxArray* dataref);
+void FetchData(double* pscalar,const mxArray* dataref);
+void FetchData(int* pinteger,const mxArray* dataref);
+void FetchData(bool* pbool,const mxArray* dataref);
+void FetchData(Parameters** pparameters, DataHandle dataref);
 
 Option* OptionParse(char* name, const mxArray* prhs[]);
Index: /issm/trunk-jpl/src/c/io/PrintfFunction.cpp
===================================================================
--- /issm/trunk-jpl/src/c/io/PrintfFunction.cpp	(revision 11933)
+++ /issm/trunk-jpl/src/c/io/PrintfFunction.cpp	(revision 11934)
@@ -9,5 +9,5 @@
 #include "../include/include.h"
 
-#ifdef _SERIAL_
+#if defined(_HAVE_MATLAB_) && defined(_SERIAL_)
 #include "mex.h"
 #endif
@@ -53,5 +53,5 @@
 
 	/*Ok, if we are running in parallel, get node 0 to print*/
-#ifdef _SERIAL_
+#if defined(_HAVE_MATLAB_) && defined(_SERIAL_)
 	mexPrintf(buffer);
 #else
Index: /issm/trunk-jpl/src/c/io/Python/FetchPythonData.cpp
===================================================================
--- /issm/trunk-jpl/src/c/io/Python/FetchPythonData.cpp	(revision 11934)
+++ /issm/trunk-jpl/src/c/io/Python/FetchPythonData.cpp	(revision 11934)
@@ -0,0 +1,48 @@
+/*\file FetchData.cpp:
+ * \brief: general I/O interface to fetch data in python
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../shared/shared.h"
+#include "../../include/include.h"
+
+#if defined(_HAVE_PYTHON_) && defined(_SERIAL_)
+/*FUNCTION FetchData(char** pstring,char* string){{{1*/
+void FetchData(char** pstring,char* string){
+
+	/*Copy string into string: */
+	char* outstring=NULL;
+
+	outstring=(char*)xmalloc((strlen(string)+1)*sizeof(char));
+	strcpy(outstring,string);
+
+	*pstring=outstring;
+}
+/*FUNCTION FetchData(double* pscalar,double scale){{{1*/
+void FetchData(double* pscalar,double scalar){
+
+	/*simple copy: */
+	*pscalar=scalar;
+}
+/*}}}*/
+/*FUNCTION FetchData(int* pinteger,int integer){{{1*/
+void FetchData(int* pinteger, int integer){
+
+	/*simple copy: */
+	*pinteger=integer;
+}
+/*}}}*/
+/*FUNCTION FetchData(bool* pboolean,bool boolean){{{1*/
+void FetchData(bool* pboolean,bool boolean){
+
+	/*simple copy: */
+	*pboolean=boolean;
+	
+}
+/*}}}*/
+#endif
Index: /issm/trunk-jpl/src/c/io/Python/WritePythonData.cpp
===================================================================
--- /issm/trunk-jpl/src/c/io/Python/WritePythonData.cpp	(revision 11934)
+++ /issm/trunk-jpl/src/c/io/Python/WritePythonData.cpp	(revision 11934)
@@ -0,0 +1,17 @@
+/* \file WriteData.c:
+ * \brief: general interface for writing data
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../include/include.h"
+#include "../../shared/shared.h"
+
+#if defined(_HAVE_MATLAB_) && defined(_SERIAL_)
+#include <mex.h>
+
+#endif
Index: /issm/trunk-jpl/src/c/io/Python/pythonio.h
===================================================================
--- /issm/trunk-jpl/src/c/io/Python/pythonio.h	(revision 11934)
+++ /issm/trunk-jpl/src/c/io/Python/pythonio.h	(revision 11934)
@@ -0,0 +1,56 @@
+/*\file pythonio.h
+ *\brief: I/O for ISSM in python mode
+ */
+
+#ifndef _PYTHON_IO_H_
+#define _PYTHON_IO_H_
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif 
+
+
+#include "../../objects/objects.h"
+#include "../../Container/Container.h"
+#include "../../include/include.h"
+
+class DataSet;
+class Parameters;
+
+#if defined(_HAVE_PYTHON_) && defined(_SERIAL_)
+
+//void WriteData(mxArray** pdataref,DataSet* dataset);
+//void WriteData(mxArray** pdataref,Matrix* matrix);
+//void WriteData(mxArray** pdataref,double* matrix, int M,int N);
+//void WriteData(mxArray** pdataref,int*    matrix, int M,int N);
+//void WriteData(mxArray** pdataref,Vector* vector);
+//void WriteData(mxArray** pdataref,double* vector, int M);
+//void WriteData(mxArray** pdataref,int integer);
+//void WriteData(mxArray** pdataref,bool boolean);
+//void WriteData(mxArray** pdataref,double scalar);
+//void WriteData(mxArray** pdataref,char* string);
+//void WriteData(DataHandle* pdataref,Parameters* parameters);
+
+//void FetchData(DataSet** pdataset,const mxArray* dataref);
+//void FetchData(double** pmatrix,int* pM,int *pN,const mxArray* dataref);
+//void FetchData(double** pmatrix,int* pnumel,int* pndims,int** psize,const mxArray* dataref);
+//void FetchData(int** pmatrix,int* pM,int *pN,const mxArray* dataref);
+//void FetchData(bool** pmatrix,int* pM,int *pN,const mxArray* dataref);
+//void FetchData(bool** pmatrix,int* pnumel,int* pndims,int** psize,const mxArray* dataref);
+//void FetchData(Matrix** pmatrix,const mxArray* dataref);
+//void FetchData(int** pvector,int* pM,const mxArray* dataref);
+//void FetchData(float** pvector,int* pM,const mxArray* dataref);
+//void FetchData(double** pvector,int* pM,const mxArray* dataref);
+//void FetchData(bool** pvector,int* pM,const mxArray* dataref);
+//void FetchData(Vector** pvector,const mxArray* dataref);
+//void FetchData(char** pmatrix,int* pnumel,int* pndims,int** psize,const mxArray* dataref);
+//void FetchData(Parameters** pparameters, DataHandle dataref);
+void FetchData(char** pstring,char* string);
+void FetchData(double* pscalar,double scalar);
+void FetchData(int* pinteger,int integer);
+void FetchData(bool* pbool,bool boolean);
+#endif
+
+#endif	/* _IO_H_ */
Index: /issm/trunk-jpl/src/c/io/io.h
===================================================================
--- /issm/trunk-jpl/src/c/io/io.h	(revision 11933)
+++ /issm/trunk-jpl/src/c/io/io.h	(revision 11934)
@@ -3,6 +3,6 @@
  */
 
-#ifndef _IO_H_
-#define _IO_H_
+#ifndef _ISSM_IO_H_
+#define _ISSM_IO_H_
 
 #ifdef HAVE_CONFIG_H //config.h {{{1
@@ -19,4 +19,8 @@
 #endif
 
+#if defined(_HAVE_PYTHON_) && defined(_SERIAL_)
+#include "./Python/pythonio.h"
+#endif
+
 /*printf: */
 int PrintfFunction(const char* format,...);
