/*------------------------------------------------------------------------------*
 *	File Name: 	MOCANAGShare.h  												*
 *	Purpose:	base class for OCNag so we can use OCNag from both ok and moca	*
 *																				*
 *																				*
 *  TCZ 08/08/02 QA70-2624 v7.0365 MATRIX_GET_INTERPOLATED_VALUE				*
 *------------------------------------------------------------------------------*/

/// AW 06/26/02 v7.0328 QA70-2116 MOCABASETYPE_NAG_DLL_SUPPORT
#ifndef __MOCANAGSHARE
#define __MOCANAGSHARE

//#include "LTType.h"
struct tagOneOCcomplex;
//TCZ 08/08/02 QA70-2624 v7.0365 MATRIX_GET_INTERPOLATED_VALUE
//add the spline structure here
//////////////Spline_bSpline_derivative////////////////////////////////////
typedef struct{
  LONG nx;
  double *lamda;
  LONG ny;
  double *mu; 
  double *c;
  LONG init1;
  LONG init2;
} Nag_2dSpline;
///END-------------------MATRIX_GET_INTERPOLATED_VALUE	


//------------  CPY v7.0331 QA70-2116 6/26/02 NAG_SHARE_CLEAN_UP_NO_BASE_CLASS_NEEDED

//#include "mocamain.h" 

//class  OKCNagBase;
/*
/// later we can just add virtual function for nag, so mocabasetype dll can call Nag dll later.
/// search MOCABASETYPE_NAG_DLL_SUPPORT for detail.
class OKCNagBase : public COKLTObj
{
	DECLARE_DYNAMIC(OKCNagBase);

public:
	OKCNagBase() {};
	~OKCNagBase() {};
public:
	virtual	BOOL OkTest() { return FALSE; }	 // JUST FOR TESTING, after tony know how to use it, please remove it , need to remove from OKCNAG.h as well

};

typedef  OKCNagBase* (*NagPtrAccessType)();
*/

//-------- CPY v7.0331 QA70-2116 6/26/02 NAG_SHARE_CLEAN_UP_NO_BASE_CLASS_NEEDED
typedef FARPROC (CALLBACK* OK_GET_PROC_ADDDRESS)(LPCTSTR lpcszFuncName, LPCTSTR lpcszDLLName);
//--------


// we should prototype all NAG functions here
#define NAG_CALL   //WINAPI is not working, so use empty

typedef	int (NAG_CALL* NAG_FFT_REAL)(int n, double *x);
typedef	int (NAG_CALL* NAG_FFT_COMPLEX)(int n, double *x, double *y);
typedef	int (NAG_CALL* NAG_FFT_INIT_TRIG)(int n, double *trig);
typedef	int (NAG_CALL* NAG_FFT_MULTIPLE_REAL)(int m, int n, double *x, double *trig);
typedef	int (NAG_CALL* NAG_MULTIPLE_HERMITIAN_TO_COMPLEX)(int m, int n, double *x, double *u, double * v);
typedef int (NAG_CALL* NAG_REAL_LU)(int m, double * x, int n, int * pivot, double * detf, int * dete);
typedef int	(NAG_CALL* NAG_REAL_LU_SOLVE_MULT_RHS)(int m,int n, double *x, int tda,int * pivot, double * y, int tdb);
typedef tagOneOCcomplex  (NAG_CALL* NAG_CPOW)(tagOneOCcomplex x, tagOneOCcomplex y);
typedef void(NAG_CALL* NAG_FREE)(void *);
typedef int (NAG_CALL* NAG_2D_SPLINE_INTERPOLANT)(int nX, int nY, double* pdX, double* pdY, double* pdZ, Nag_2dSpline * ps2dSpline);
typedef int (NAG_CALL* NAG_2D_SPLINE_EVAL)(int n, double* pdX, double* pdY, double* pdZ, Nag_2dSpline * ps2dSpline);

#endif  // __MOCANAGSHARE

/// end MOCABASETYPE_NAG_DLL_SUPPORT