> > +static inline int64_t is_between(int64_t x, int64_t a, int64_t b)
> > +{
> > +    if (a < b) {
> > +        return x > a && x <= b;
> > +    }
> > +    return x < a && x >= b;
> > +}
> 
> This looks slightly odd -- should the boundary condition for whether
> a value equal to the max/min really change depending on :whether a
> or b is greater?

This is a ugly hack.  Instead of figuring out whether we have a count-up or 
count-down timer the code checks for both, and have the "in_between" function 
magically DTRT.  I haven't followed the paths through in enough detail to 
figure out whether it gets all the corner cases right.

Paul

Reply via email to