Index: /issm/trunk-jpl/src/modules/BamgMesher/BamgMesher.h
===================================================================
--- /issm/trunk-jpl/src/modules/BamgMesher/BamgMesher.h	(revision 13585)
+++ /issm/trunk-jpl/src/modules/BamgMesher/BamgMesher.h	(revision 13586)
@@ -1,4 +1,4 @@
 /*
-	BamgMesherUsage.h
+	BamgMesher.h
 */
 
Index: /issm/trunk-jpl/src/modules/TriMeshProcessRifts/TriMeshProcessRifts.cpp
===================================================================
--- /issm/trunk-jpl/src/modules/TriMeshProcessRifts/TriMeshProcessRifts.cpp	(revision 13585)
+++ /issm/trunk-jpl/src/modules/TriMeshProcessRifts/TriMeshProcessRifts.cpp	(revision 13586)
@@ -35,18 +35,12 @@
 	mwSize		dimensions[2] = {1,1};
 	double* pair=NULL;
-
 	
 	/* input: */
-	double *tindex_in = NULL;
 	double *index_in  = NULL;
 	int     nel;
-	double *x_inm = NULL; //matlab vector
 	double *x_in  = NULL; //copy of matlab vector
 	int     nods;
-	double *y_inm              = NULL; //matlab vector
 	double *y_in               = NULL; //copy of matlab vector
-	double *tsegments_in       = NULL;
 	double *segments_in        = NULL;
-	double *tsegmentmarkers_in = NULL;
 	double *segmentmarkers_in  = NULL;
 
@@ -59,83 +53,16 @@
 	int     numrifts;
 
-	/* verify correct usage: */
-	if (nlhs==0 && nrhs==0){
-		/* special case: */
-		TriMeshProcessRiftsUsage();
-		return;
-	}
-	
-	if (!(  (nlhs==6) || (nrhs==5))){
-		mexPrintf("   %s format error.\n", __FUNCT__);
-		TriMeshProcessRiftsUsage();
-		_error_("bad usage");
-	}
+	/*Boot module*/
+	MODULEBOOT();
 
-	/*Fetch index_in: */
-	if(mxIsDouble(prhs[0])){
-		nel=mxGetM(prhs[0]);
-		tindex_in=mxGetPr(prhs[0]);
-		index_in=xNew<double>(nel*3);
-		for (i=0;i<nel;i++){
-			for (j=0;j<3;j++){
-				*(index_in+3*i+j)=*(tindex_in+nel*j+i);
-			}
-		}
-	}
-	else{
-		_error_("first argument should be the element list");
-	}
+	/*checks on arguments on the matlab side: */
+	CHECKARGUMENTS(NLHS,NRHS,&TriMeshProcessRiftsUsage);
 
-	/*Fetch x_in: */
-	if(mxIsDouble(prhs[1])){
-		nods=mxGetM(prhs[1]);
-		x_inm=mxGetPr(prhs[1]);
-		x_in=xNew<double>(nods);
-		for (i=0;i<nods;i++){
-			x_in[i]=x_inm[i];
-		}
-	}
-	else{
-		_error_("second argument should be the x corrdinate list");
-	}
-
-	/*Fetch y_in: */
-	if(mxIsDouble(prhs[2])){
-		y_inm=mxGetPr(prhs[2]);
-		y_in=xNew<double>(nods);
-		for (i=0;i<nods;i++){
-			y_in[i]=y_inm[i];
-		}
-	}
-	else{
-		_error_("third argument should be the y corrdinate list");
-	}	
-
-	/*Fetch segments_in: */
-	if(mxIsDouble(prhs[3])){
-		num_seg=mxGetM(prhs[3]);
-		tsegments_in=mxGetPr(prhs[3]);
-		segments_in=xNew<double>(num_seg*3);
-		for (i=0;i<num_seg;i++){
-			for (j=0;j<3;j++){
-				*(segments_in+3*i+j)=*(tsegments_in+num_seg*j+i);
-			}
-		}
-	}
-	else{
-		_error_("fourth argument should be the segments list");
-	}
-
-	/*Fetch segment markers: */
-	if(mxIsDouble(prhs[4])){
-		tsegmentmarkers_in=mxGetPr(prhs[4]);
-		segmentmarkers_in=xNew<double>(num_seg);
-		for (i=0;i<num_seg;i++){
-			segmentmarkers_in[i]=tsegmentmarkers_in[i];
-		}
-	}
-	else{
-		_error_("fourth argument should be the segmentmarkers list");
-	}
+	/*Fetch data */
+	FetchData(&index_in,&nel,NULL,INDEXIN);
+	FetchData(&x_in,&nods,XIN);
+	FetchData(&y_in,NULL,YIN);
+	FetchData(&segments_in,&num_seg,NULL,SEGMENTSIN);
+	FetchData(&segmentmarkers_in,NULL,SEGMENTMARKERSIN);
 
 	/*First, do some fixing on the existing mesh: we do not want any element belonging entirely to the segment list (ie: 
@@ -171,9 +98,9 @@
 
 	/*Output : */
-	WriteData(&plhs[0],index_in,nel,3);
-	WriteData(&plhs[1],x_in,nods,1);
-	WriteData(&plhs[2],y_in,nods,1);
-	WriteData(&plhs[3],segments_in,num_seg,3);
-	WriteData(&plhs[4],segmentmarkers_in,num_seg,1);
+	WriteData(INDEXOUT,index_in,nel,3);
+	WriteData(XOUT,x_in,nods,1);
+	WriteData(YOUT,y_in,nods,1);
+	WriteData(SEGMENTSOUT,segments_in,num_seg,3);
+	WriteData(SEGMENTMARKERSOUT,segmentmarkers_in,num_seg,1);
 
 	if(riftflag){
@@ -191,5 +118,4 @@
 
 		dimensions[0]=out_numrifts;
-
 		pmxa_array=mxCreateStructArray( ndim,dimensions,10,fnames);
 		
@@ -249,4 +175,5 @@
 	plhs[5]=pmxa_array;
 
-	return;
+	/*end module: */
+	MODULEEND();
 }
Index: /issm/trunk-jpl/src/modules/TriMeshProcessRifts/TriMeshProcessRifts.h
===================================================================
--- /issm/trunk-jpl/src/modules/TriMeshProcessRifts/TriMeshProcessRifts.h	(revision 13585)
+++ /issm/trunk-jpl/src/modules/TriMeshProcessRifts/TriMeshProcessRifts.h	(revision 13586)
@@ -1,4 +1,4 @@
-/*!\file:  TriMeshProcessRifts.h
- * \brief header prototype
+/*
+ * TriMeshProcessRifts.h
  */ 
 
@@ -6,7 +6,15 @@
 #define _TRIMESH_PROCESSRIFTS_H_
 
-#include "mex.h"
-#include "triangle.h"
-#include "string.h"
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
 #include "../../c/include/globals.h"
 #include "../../c/modules/modules.h"
@@ -14,8 +22,45 @@
 #include "../../c/shared/shared.h"
 #include "../../c/issm-binding.h"
-#include "../../c/EnumDefinitions/EnumDefinitions.h"
 
 #undef __FUNCT__ 
-#define __FUNCT__ "TriMeshProcessRifts"
+#define __FUNCT__  "TriMeshProcessRifts"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define INDEXIN          prhs[0]
+#define XIN              prhs[1]
+#define YIN              prhs[2]
+#define SEGMENTSIN       prhs[3]
+#define SEGMENTMARKERSIN prhs[4]
+/* serial output macros: */
+#define INDEXOUT          (mxArray**)&plhs[0]
+#define XOUT              (mxArray**)&plhs[1]
+#define YOUT              (mxArray**)&plhs[2]
+#define SEGMENTSOUT       (mxArray**)&plhs[3]
+#define SEGMENTMARKERSOUT (mxArray**)&plhs[4]
+#define RIFTSTRUCTOUT     (mxArray**)&plhs[5]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define INDEXIN          PyTuple_GetItem(args,0)
+#define XIN              PyTuple_GetItem(args,1)
+#define YIN              PyTuple_GetItem(args,2)
+#define SEGMENTSIN       PyTuple_GetItem(args,3)
+#define SEGMENTSMARKERSIN PyTuple_GetItem(args,4)
+/* serial output macros: */
+#define INDEXOUT          output,0
+#define XOUT              output,1
+#define YOUT              output,2
+#define SEGMENTSOUT       output,3
+#define SEGMENTMARKERSOUT output,4
+#define RIFTSTRUCTOUT     output,5
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  6
+#undef NRHS
+#define NRHS  5
 
 #endif
