#ifdef _MY_MAKE_DLL_
	#define __PORT  __declspec(dllexport)
#else
	#define __PORT  __declspec(dllimport)

#endif

#ifdef __cplusplus
extern "C"
{
#endif /* __cplusplus */

//__PORT void ddct(int, int, double *, int *, double *);

//void cdft(int, int, double *, int *, double *);

__PORT	void cdft(int number_of_spectrum, int n, double *a, int *ip, double *w);

__PORT	void rdft(int n, int isgn, double *a, int *ip, double *w);

__PORT	void WindowFunc(int func_no,int number_of_spectrum,double* source,double* result);

__PORT	void inv_WindowFunc(int func_no,int number_of_spectrum,double* source,double* result);

#ifdef __cplusplus
}
#endif /* __cplusplus */

	class CFir
	{
		bool is_first_time;
		double fc ;     //cut off frequency
        int fe ;     //edge frequency
        int filter_size;

        double delta_frequency_current;
	
		int* ip;
		double*	w;
		double* return_array;
		double* return_array2;
		float* returned_data ;

		double*	coef_fft;
		double* capture_fft;

	public:
		__PORT	CFir();
		__PORT	~CFir();
		__PORT	double*	get_LPFir_coeff( int selected_window, int sample_per_sec, int size, int edge_f );
		__PORT	double*	get_windowed_LPFir_coef_FFT_result( double* coef, int coef_length,int CaptureData_length,
																	           int func_no, int numberOfspectrum );

		__PORT  double*	get_windowed_CaptureData_FFT_result(float* CaptureData,int CaptureData_length, int func_no,
												                           int coef_length, int numberOfspectrum );
		__PORT	double*	multi_FFT_results( double* src, double* dest, int numberOfspectrum ); 
		__PORT	float*	get_data_from_mulit_FFT_results( double* src, int numberOfspectrum, int CaptureData_length, 
																	   	                             int func_no );
	};