Annotation of 43BSD/contrib/icon/operators/toby.c, revision 1.1

1.1     ! root        1: #include "../h/rt.h"
        !             2: 
        !             3: /*
        !             4:  * e1 to e2 by e3 - generate successive values.
        !             5:  */
        !             6: 
        !             7: toby(nargs, arg3, arg2, arg1, arg0)
        !             8: int nargs;
        !             9: struct descrip arg3, arg2, arg1, arg0;
        !            10:    {
        !            11:    DclSave
        !            12:    long from, to, by;
        !            13: 
        !            14:    SetBound;
        !            15:    /*
        !            16:     * e1 (from), e2 (to), and e3 (by) must be integers.  Also, e3 must
        !            17:     *  not be zero.
        !            18:     */
        !            19:    if (cvint(&arg1, &from) == NULL)
        !            20:       runerr(101, &arg1);
        !            21:    if (cvint(&arg2, &to) == NULL)
        !            22:       runerr(101, &arg2);
        !            23:    if (cvint(&arg3, &by) == NULL)
        !            24:       runerr(101, &arg3);
        !            25:    if (by == 0)
        !            26:       runerr(211, &arg3);
        !            27: 
        !            28:    /*
        !            29:     * Count up or down (depending on relationship of from and to) and
        !            30:     *  suspend each value in sequence, failing when the limit has been
        !            31:     *  exceeded.
        !            32:     */
        !            33:    while ((from <= to && by > 0) || (from >= to && by < 0)) {
        !            34:       mkint(from, &arg0);
        !            35:       suspend();
        !            36:       from += by;
        !            37:       }
        !            38:    fail();
        !            39:    }
        !            40: 
        !            41: Opblock(toby,3,"toby")

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.