// file: window/window.h
//	

// make sure definitions are made only once
//
#ifndef __ISIP_WINDOW
#define __ISIP_WINDOW

// isip include files
//
#ifndef __ISIP_INTEGRAL
#include <integral.h>
#endif

#ifndef __ISIP_FILTER
#include <filter.h>
#endif

// Window : a class meant to apply a window function to signal data
//
class Window : public Filter {

  //---------------------------------------------------------------------------
  //
  // protected members
  //
  //---------------------------------------------------------------------------
protected:

  // information about the window function
  //
  int_4 type_d;
  
  //---------------------------------------------------------------------------
  //
  // public methods
  //
  //---------------------------------------------------------------------------
public:

  // required methods
  //
  char_1* name_cc();
  volatile void error_handler_cc(char_1* method_name, char_1* message);
  logical_1 debug_cc(FILE* fp, char_1* message);

  // destructor/constructor
  //
  Window();
  Window(int_4 type, int_4 width);
  Window(char_1* type, int_4 width);

  // change window properties
  //
  logical_1 set_cc(int_4 type, int_4 width);
  logical_1 set_cc(char_1* type, int_4 width);
  
  //---------------------------------------------------------------------------
  //
  // private methods
  //
  //---------------------------------------------------------------------------
private:

  logical_1 create_cc();

  int_4 type_cc(char_1* type);
};

// end of file
//
#endif
