From 8c5d0621d0d305bb62997b4ad12af874ec253432 Mon Sep 17 00:00:00 2001 From: musil Date: Fri, 10 Mar 2006 03:05:55 +0000 Subject: initial check in svn path=/trunk/externals/iem/iem_tab/; revision=4683 --- src/iem_tab.c | 134 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 src/iem_tab.c (limited to 'src/iem_tab.c') diff --git a/src/iem_tab.c b/src/iem_tab.c new file mode 100644 index 0000000..37ece70 --- /dev/null +++ b/src/iem_tab.c @@ -0,0 +1,134 @@ +/* For information on usage and redistribution, and for a DISCLAIMER OF ALL +* WARRANTIES, see the file, "LICENSE.txt," in this distribution. + +iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2005 */ + +#ifdef NT +#pragma warning( disable : 4244 ) +#pragma warning( disable : 4305 ) +#endif + + +#include "m_pd.h" +#include "iemlib.h" + +static t_class *iem_tab_class; + +int iem_tab_check_arrays(t_symbol *obj_name, t_symbol *array_name, t_float **beg_mem, int *array_size, int max_index) +{ + int ok=1; + t_garray *a; + + if(!(a = (t_garray *)pd_findbyclass(array_name, garray_class))) + { + error("%s: no such array", array_name->s_name); + ok = 0; + } + else if(!garray_getfloatarray(a, array_size, beg_mem)) + { + error("%s: bad template for %s", array_name->s_name, obj_name->s_name); + ok = 0; + } + else if(*array_size < max_index) + { + error("%s: bad array-size: %d", array_name->s_name, *array_size); + ok = 0; + } + return(ok); +} + +static void *iem_tab_new(void) +{ + t_object *x = (t_object *)pd_new(iem_tab_class); + + return (x); +} + +void tab_copy_setup(void); +void tab_reverse_setup(void); +void tab_min_max_setup(void); +void tab_min_index_setup(void); +void tab_max_index_setup(void); +void tab_find_peaks_setup(void); +void tab_abs_setup(void); +void tab_sqrt_setup(void); +void tab_sum_setup(void); +void tab_add_setup(void); +void tab_sub_setup(void); +void tab_mul_setup(void); +void tab_div_setup(void); +void tab_complex_mul_setup(void); +void tab_complex_inv_setup(void); +void tab_mul_scalar_setup(void); +void tab_add_scalar_setup(void); +void tab_const_setup(void); +void tab_fft_setup(void); +void tab_ifft_setup(void); +void tab_rfft_setup(void); +void tab_rifft_setup(void); +void tab_cross_corr_setup(void); +void tab_conv_setup(void); +void tab_gt_scalar_setup(void); +void tab_ge_scalar_setup(void); +void tab_lt_scalar_setup(void); +void tab_le_scalar_setup(void); +void tab_ne_scalar_setup(void); +void tab_eq_scalar_setup(void); +void tab_gt_setup(void); +void tab_ge_setup(void); +void tab_lt_setup(void); +void tab_le_setup(void); +void tab_ne_setup(void); +void tab_eq_setup(void); +void tab_counter_setup(void); +//void tab_mls_setup(void); + +/* ------------------------ setup routine ------------------------- */ + +void iem_tab_setup(void) +{ + iem_tab_class = class_new(gensym("iem_tab"), iem_tab_new, 0, + sizeof(t_object), CLASS_NOINLET, 0); + + tab_copy_setup(); + tab_reverse_setup(); + tab_min_max_setup(); + tab_min_index_setup(); + tab_max_index_setup(); + tab_find_peaks_setup(); + tab_abs_setup(); + tab_sqrt_setup(); + tab_sum_setup(); + tab_add_setup(); + tab_sub_setup(); + tab_mul_setup(); + tab_div_setup(); + tab_complex_mul_setup(); + tab_complex_inv_setup(); + tab_mul_scalar_setup(); + tab_add_scalar_setup(); + tab_const_setup(); + tab_fft_setup(); + tab_ifft_setup(); + tab_rfft_setup(); + tab_rifft_setup(); + tab_cross_corr_setup(); + tab_conv_setup(); + tab_gt_scalar_setup(); + tab_ge_scalar_setup(); + tab_lt_scalar_setup(); + tab_le_scalar_setup(); + tab_ne_scalar_setup(); + tab_eq_scalar_setup(); + tab_gt_setup(); + tab_ge_setup(); + tab_lt_setup(); + tab_le_setup(); + tab_ne_setup(); + tab_eq_setup(); + tab_counter_setup(); +// tab_mls_setup(); + + post("iem_tab (R-1.16) library loaded! (c) Thomas Musil 05.2005"); + post(" musil%ciem.at iem KUG Graz Austria", '@'); +} -- cgit v1.2.1