
/* This file was automatically generated by pclu.*/

#include "pclu_err.h"
#include "pclu_sys.h"


extern struct dbg_info* dbg_info__skip_fill;
#undef MY_TRACE_FLAG
#define MY_TRACE_FLAG _skip_fill_TRACE
int _skip_fill_TRACE;
extern struct OPS *int_ops;
static Vlist1 owns__skip_fill = {0, 1,{ {0, 2, "_init", &int_ops}
}
};
extern errcode _bytevecOPindexc();
extern errcode intOPadd();
extern errcode intOPequal();
extern errcode intOPgt();
extern errcode _bytevecOPfetch();
extern errcode _chanOPgetb();
extern errcode boolOPnot();
extern errcode charOPequal();
extern errcode intOPsub();
extern errcode _bytevecOPmove_lr();
extern errcode _chanOPgetbv();
extern errcode _bytevecOPsize();
extern OWN_req _bytevec_ownreqs;
extern struct OPS *_bytevec_ops;
static int _skip_fill_own_init = 0;

/**** BEGIN PROCEDURE _skip_fill ****/

errcode _skip_fill(b, max, c, term, ret_1)
CLUREF b;
CLUREF max;
CLUREF c;
CLUREF term;
CLUREF *ret_1;
    {
    struct {
        struct dbg_info *DBG_INFO;
        int DBG_LINE;
        errcode err;
        errcode ecode2;
        CLUREF i;
        CLUREF last;
        CLUREF b;
        CLUREF max;
        CLUREF c;
        CLUREF term;
        } locals;
    locals.i.num = UNINIT;
    locals.last.num = UNINIT;
    locals.b.num = UNINIT;
    locals.max.num = UNINIT;
    locals.c.num = UNINIT;
    locals.term.num = UNINIT;
    locals.DBG_INFO = dbg_info__skip_fill;
    locals.b = b;
    locals.max = max;
    locals.c = c;
    locals.term = term;
        if (_skip_fill_own_init == 0) {
        _skip_fill_own_init = 1;
    }
    enter_proc(3);

  LINE(5);
    {
        {locals.i.num = 0;
        }
        }

  LINE(6);
    {
        {CLUREF T_1_1;
        T_1_1.ch = ' ';
        locals.last.num = T_1_1.num;
        }
        }

  LINE(7);
    for (;;) {
        if (true != true) { break; }

  LINE(8);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        locals.err = intOPadd(locals.i, CLU_1, &T_2_1);
        if (locals.err != ERR_ok) goto ex_0;
        locals.err = _bytevecOPindexc(locals.term, locals.b, T_2_1, &T_2_2);
        if (locals.err != ERR_ok) goto ex_0;
        locals.i.num = T_2_2.num;
        }

  LINE(9);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        CLUREF T_2_3;
        T_2_2.num = (locals.i.num == 0)? true : false;
        T_2_1.num = T_2_2.num;
        if (!T_2_2.num) {
            T_2_3.num = (locals.i.num > locals.max.num)? true : false;
            T_2_1.num = T_2_3.num;
        }
        if (T_2_1.num == true) {

  LINE(10);
            {
            CLUREF T_3_1;
            locals.err = _bytevecOPfetch(locals.b, locals.max, &T_3_1);
            if (locals.err != ERR_ok) goto ex_0;
            locals.last.num = T_3_1.num;
            }

  LINE(11);
            {
            CLUREF T_4_1;
            locals.err = _chanOPgetb(locals.c, locals.b, &T_4_1);
            if (locals.err != ERR_ok) goto ex_1;
            locals.max.num = T_4_1.num;
            }
            goto end_1;
            ex_1:
                if (locals.err == ERR_end_of_file) {signal(ERR_end_of_file);}
                else {
                    goto ex_0;}
            end_1:;
            }
        else {
        CLUREF T_2_4;
        T_2_4.num = (locals.i.num == 1)? true : false;
        if (T_2_4.num == true) {

  LINE(14);
            {
            CLUREF T_3_1;
            CLUREF T_3_2;
            CLUREF T_3_3;
            T_3_1.ch = '\\';
            T_3_2.num = (locals.last.ch == T_3_1.ch)? true : false;
            T_3_3.num = T_3_2.num ^ 1;
            if (T_3_3.num == true) {

  LINE(15);
                goto end_while_1;
                }
                }/* end if */
            }
        else {
        CLUREF T_2_5;
        CLUREF T_2_6;
        CLUREF T_2_7;
        CLUREF T_2_8;
        CLUREF T_2_9;
        locals.err = intOPsub(locals.i, CLU_1, &T_2_5);
        if (locals.err != ERR_ok) goto ex_0;
        locals.err = _bytevecOPfetch(locals.b, T_2_5, &T_2_6);
        if (locals.err != ERR_ok) goto ex_0;
        T_2_7.ch = '\\';
        T_2_8.num = (T_2_6.ch == T_2_7.ch)? true : false;
        T_2_9.num = T_2_8.num ^ 1;
        if (T_2_9.num == true) {

  LINE(17);
            goto end_while_1;
            }
            }}}/* end if */
        }
        end_while_1:;

  LINE(19);
    {
    CLUREF T_1_1;
    locals.err = intOPsub(locals.max, locals.i, &T_1_1);
    if (locals.err != ERR_ok) goto ex_0;
    locals.max.num = T_1_1.num;
    }

  LINE(20);
    {
    CLUREF T_1_1;
    locals.err = intOPadd(locals.i, CLU_1, &T_1_1);
    if (locals.err != ERR_ok) goto ex_0;
    locals.err = _bytevecOPmove_lr(locals.b, T_1_1, locals.b, CLU_1, locals.max);
    if (locals.err != ERR_ok) goto ex_0;
    }

  LINE(21);
    {
    CLUREF T_2_1;
    CLUREF T_2_2;
    CLUREF T_2_3;
    CLUREF T_2_4;
    locals.err = intOPadd(locals.max, CLU_1, &T_2_1);
    if (locals.err != ERR_ok) goto ex_2;
    locals.err = _bytevecOPsize(locals.b, &T_2_2);
    if (locals.err != ERR_ok) goto ex_2;
    locals.err = _chanOPgetbv(locals.c, locals.b, T_2_1, T_2_2, &T_2_3);
    if (locals.err != ERR_ok) goto ex_2;
    locals.err = intOPadd(locals.max, T_2_3, &T_2_4);
    if (locals.err != ERR_ok) goto ex_2;
    locals.max.num = T_2_4.num;
    }
        goto end_2;
        ex_2:
            if ((locals.err == ERR_end_of_file)) {

  LINE(23);
                {
                CLUREF T_2_1;
                T_2_1.num = (locals.max.num == 0)? true : false;
                if (T_2_1.num == true) {

  LINE(24);
                    {
                    {signal (ERR_end_of_file);}}
                    }
                    }/* end if */
            }
            else {
                goto ex_0;
            }
        end_2:;

  LINE(26);
    {
    {
    ret_1->num = locals.max.num;
    }
    {signal (ERR_ok);}}
    goto end_0;
    ex_0:
        {
            if (locals.err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(locals.err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE _skip_fill ****/

extern struct OPS *char_ops;
extern struct OPS *_chan_ops;
typedef struct {
    int hdr;
    int count;
    char *name;
    char *fname;
    bool is_iter;
    int is_parmd;
    int addr;
    int nargs;
    Vlist1 *vals;
    siglist1 *sigs;
    Vlist8 *locals;
    Vlist1 *owns;
    Vlist0 *ptowns;
    Vlist0 *popowns;
    Slist0 *type_formals;
    Slist0 *op_formals;
    } dbg_info__skip_fill_actual;
static Vlist1 vals__skip_fill = {0, 1, { {0, 2, "", &int_ops}}
};
static sig_desc0 sig__skip_fill_1 = {0, 3, "end_of_file", {0, 0
}};
static siglist1 sigs__skip_fill = {0, 1, (sig_desc*)&sig__skip_fill_1};
static Vlist8 locals__skip_fill = {0, 8,{ {0, 2, "err", &int_ops},  {0, 2, "ecode2", &int_ops},  {0, 2, "i", &int_ops},  {0, 2, "last", &char_ops},  {0, 2, "b", &_bytevec_ops},  {0, 2, "max", &int_ops},  {0, 2, "c", &_chan_ops},  {0, 2, "term", &char_ops}}
};
static Vlist0 popowns__skip_fill = {0, 0};
Slist0 tformals__skip_fill = {0, 0};
Slist0 opformals__skip_fill = {0, 0};
dbg_info__skip_fill_actual dbg_info__skip_fill_data = {0, 12, 
    "_skip_fill", "/common/pub/dcurtis-temp/pclu/sys/clu/_skip_fill", 0, 0, (int)_skip_fill, 4, 
    &vals__skip_fill, &sigs__skip_fill, &locals__skip_fill, &owns__skip_fill, &NO_VALS, &NO_VALS, &NO_PARMS, &NO_PARMS};
    struct dbg_info *dbg_info__skip_fill = (struct dbg_info*)&dbg_info__skip_fill_data;
