6 #define MODMINUS(a,b,m) ((a) - (b) + (((a) >= (b)) ? 0 : ((b) <= (m)) ? (m) : ((m) * (1 + (int)(b) / (int)(m)))))
7 #define MODPLUS(a,b,m) ((a) + (b) - ((((m) - (b)) > (a)) ? 0 : ((b) <= (m)) ? (m) : ((m) * (1 + (int)(b) / (int)(m)))))
17 typedef struct fbuff_stc *fbuff;
19 #define FBUFF_SIZE (sizeof(struct fbuff_stc))
21 #define F_HEAD(fb) ((fb)->vals[(fb)->head])
22 #define F_SIZE(fb) ((fb)->size)
23 #define F_FIRST(fb) MODPLUS(((fb)->head),1,(fb)->size)
24 #define F_LAST(fb) ((fb)->head)
25 #define F_VAL(fb,i) ((fb)->vals[(i)])
26 #define F_COUNT(fb) (MODMINUS((fb)->tail,(fb)->head,(fb)->size) - 1)
27 #define F_TAIL(fb) ((fb)->tail)
29 #define IS_EMPTY(fb) ((F_COUNT(fb) == 0) ? 1 : 0)
31 extern fbuff InitFBuff(int size);
32 extern void FreeFBuff(fbuff fb);
33 extern void UpdateFBuff(fbuff fb, double val);