/* * filterstack.c */ #include #include #include "../floatimg.h" #include "filterstack.h" #undef DEBUG_LEVEL #define DEBUG_LEVEL 1 /* -------------------------------------------------------------- */ static FilterSlot *stack_slots; static int nbre_filters, idx_slot; /* -------------------------------------------------------------- */ int filterstack_init(int nbre) { FilterSlot *fsptr; #if DEBUG_LEVEL fprintf(stderr, ">>> %s ( %d )\n", __func__, nbre); #endif if (NULL != stack_slots) { fprintf(stderr, "ERR stack_slots = %p\n",stack_slots); return -1; } fsptr = calloc(nbre, sizeof(FilterSlot)); if (NULL == fsptr) { fprintf(stderr, "%s : no memory\n", __func__); exit(1); } stack_slots = fsptr; nbre_filters = nbre; idx_slot = 0; fprintf(stderr, "%s: stack at %p\n", __func__, stack_slots); return 0; } /* -------------------------------------------------------------- */ int filterstack_add(int code, int ival, float fval) { #if DEBUG_LEVEL fprintf(stderr, ">>> %s ( %d %d %f )\n", __func__, code, ival, fval); #endif if (NULL==stack_slots) { fprintf(stderr, "%s: NULL statck !\n", __func__); exit(1); } if (idx_slot == nbre_filters) { fprintf(stderr, "%s: stack is full\n", __func__); return -1; } stack_slots[idx_slot].numero = code; stack_slots[idx_slot].ival = ival; stack_slots[idx_slot].fval = fval; idx_slot++; return 0; } /* -------------------------------------------------------------- */ int filterstack_list(void) { int idx; fprintf(stderr, "stack at %p, size %d, current %d\n", stack_slots, nbre_filters, idx_slot); for (idx=0; idx>> %s ( %p %d)\n", __func__, target, notused); #endif for (idx=0; idx