#ifndef WENERATOR_T_H
#define WENERATOR_T_H

//Funktionen fuer PD-Externals

#include "wabor_t_definitions.h"
#define WENERATOR_T_MAX_AST_COEFF (100)

static t_class *pcWenerator_t;

struct _sWenerator_t {
    t_object x_obj; //t_object has to be the first entry in the structure!!
    t_float fConstSignal;
    
    //Inlet fuer Gabor Structs Frames ist das Standardinlet
    t_inlet *x_inC; //Intlet fuer Kontrolldaten
    t_inlet *x_in; //Inlet fuer Messages
    
    t_outlet *x_outG; //Outlet fuer Datenweitergabe an invwabor_t
    t_outlet *x_outC; //Outlet fuer Datenweitergabe an invwabor_t
    t_outlet *x_outM; //Outlet fuer Nachrichten
    
    
    struct _sWabor_Coeff* pawc[1]; //Array of sWabor_Coeff
	
    struct _sWabor_Coeff *pawc_intern;
    t_int num_coeff;
    //struct _sWabor_Coeff *ast_coeff_Extern;
    
};
typedef struct _sWenerator_t sWenerator_t;

void   wenerator_t_setup(void);
void  *wenerator_t_new(t_floatarg fArg);
void   wenerator_t_delete(struct _sWenerator_t *psW);
void   wenerator_t_dsp(struct _sWenerator_t *psW, t_signal **sp);
t_int *wenerator_t_perform(t_int *aw);
void   wenerator_t_bang(struct _sWenerator_t *psW);
void   wenerator_t_wenerate(struct _sWenerator_t *psW, t_floatarg fTime, t_floatarg Val_real, t_floatarg Val_imag, t_floatarg band);

#endif //WENERATOR_T_H


