/*!\file InterpFromMeshToMesh2d.h
 * \brief: prototype for Data Interpolation mex module.
 */

#ifndef _INTERPFROMMESHTOMESH2d_H
#define _INTERPFROMMESHTOMESH2d_H

#ifdef HAVE_CONFIG_H
	#include <config.h>
#else
#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
#endif

/*Very important definition in case we are compiling a python module!: needs to come before header files inclusion*/
#ifdef _HAVE_PYTHON_
#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
#endif

/*Header files: */
#include "../../c/include/globals.h"
#include "../../c/toolkits/toolkits.h"
#include "../../c/include/include.h"
#include "../../c/modules/modules.h"
#include "../../c/Container/Container.h"
#include "../../c/shared/shared.h"
#include "../../c/issm-binding.h"
#include "../../c/io/io.h"
#include "../../c/EnumDefinitions/EnumDefinitions.h"

#ifdef _HAVE_MATLAB_MODULES_
/* serial input macros: */
#define INDEX prhs[0]
#define X prhs[1]
#define Y prhs[2]
#define DATA prhs[3]
#define XINTERP prhs[4]
#define YINTERP prhs[5]
#define DEFAULT prhs[6]
#define CONTOURNAME prhs[7]

/* serial output macros: */
#define DATAINTERP (mxArray**)&plhs[0]
#endif

#ifdef _HAVE_PYTHON_MODULES_
/* serial input macros: */
#define INDEX PyTuple_GetItem(args,0)
#define X PyTuple_GetItem(args,1)
#define Y PyTuple_GetItem(args,2)
#define DATA PyTuple_GetItem(args,3)
#define XINTERP PyTuple_GetItem(args,4)
#define YINTERP PyTuple_GetItem(args,5)
#define DEFAULT PyTuple_GetItem(args,6)
#define CONTOURNAME PyTuple_GetItem(args,7)
/* serial output macros: */
#define DATAINTERP output,0
#endif

#undef __FUNCT__ 
#define __FUNCT__  "InterpFromMeshToMesh2d"

/* serial arg counts: */
#undef NLHS
#define NLHS  1
#undef NRHS
#define NRHS  6 //can be 8 though

/* local prototypes: */
void InterpFromMeshToMesh2dUsage(void);

#endif
