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

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


extern struct dbg_info* dbg_info_lower_case;
#undef MY_TRACE_FLAG
#define MY_TRACE_FLAG lower_case_TRACE
int lower_case_TRACE;
extern struct OPS *int_ops;
static Vlist1 owns_lower_case = {0, 1,{ {0, 2, "_init", &int_ops}
}
};
extern errcode _case();

/**** BEGIN PROCEDURE lower_case ****/

errcode lower_case(s, ret_1)
CLUREF s;
CLUREF *ret_1;
    {
    struct {
        struct dbg_info *DBG_INFO;
        int DBG_LINE;
        errcode err;
        errcode ecode2;
        CLUREF s;
        } locals;
    locals.s.num = UNINIT;
    locals.DBG_INFO = dbg_info_lower_case;
    locals.s = s;
    enter_proc(4);

  LINE(5);
    {
    {
    CLUREF T_1_1;
    locals.err = _case(locals.s, CLU_0, CLU_0, &T_1_1);
    if (locals.err != ERR_ok) goto ex_0;
    ret_1->num = T_1_1.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 lower_case ****/

extern struct OPS *string_ops;
typedef struct {
    int hdr;
    int count;
    char *name;
    char *fname;
    bool is_iter;
    int is_parmd;
    int addr;
    int nargs;
    Vlist1 *vals;
    siglist0 *sigs;
    Vlist3 *locals;
    Vlist1 *owns;
    Vlist0 *ptowns;
    Vlist0 *popowns;
    Slist0 *type_formals;
    Slist0 *op_formals;
    } dbg_info_lower_case_actual;
static Vlist1 vals_lower_case = {0, 1, { {0, 2, "", &string_ops}}
};
static siglist0 sigs_lower_case = {0, 0};
static Vlist3 locals_lower_case = {0, 3,{ {0, 2, "err", &int_ops},  {0, 2, "ecode2", &int_ops},  {0, 2, "s", &string_ops}}
};
static Vlist0 popowns_lower_case = {0, 0};
Slist0 tformals_lower_case = {0, 0};
Slist0 opformals_lower_case = {0, 0};
dbg_info_lower_case_actual dbg_info_lower_case_data = {0, 12, 
    "lower_case", "/common/pub/dcurtis-temp/pclu/lib/clu/scase.clu", 0, 0, (int)lower_case, 1, 
    &vals_lower_case, &sigs_lower_case, &locals_lower_case, &owns_lower_case, &NO_VALS, &NO_VALS, &NO_PARMS, &NO_PARMS};
    struct dbg_info *dbg_info_lower_case = (struct dbg_info*)&dbg_info_lower_case_data;

extern struct dbg_info* dbg_info_upper_case;
#undef MY_TRACE_FLAG
#define MY_TRACE_FLAG upper_case_TRACE
int upper_case_TRACE;
static Vlist1 owns_upper_case = {0, 1,{ {0, 2, "_init", &int_ops}
}
};

/**** BEGIN PROCEDURE upper_case ****/

errcode upper_case(s, ret_1)
CLUREF s;
CLUREF *ret_1;
    {
    struct {
        struct dbg_info *DBG_INFO;
        int DBG_LINE;
        errcode err;
        errcode ecode2;
        CLUREF s;
        } locals;
    locals.s.num = UNINIT;
    locals.DBG_INFO = dbg_info_upper_case;
    locals.s = s;
    enter_proc(8);

  LINE(9);
    {
    {
    CLUREF T_1_1;
    locals.err = _case(locals.s, CLU_1, CLU_1, &T_1_1);
    if (locals.err != ERR_ok) goto ex_0;
    ret_1->num = T_1_1.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 upper_case ****/

typedef struct {
    int hdr;
    int count;
    char *name;
    char *fname;
    bool is_iter;
    int is_parmd;
    int addr;
    int nargs;
    Vlist1 *vals;
    siglist0 *sigs;
    Vlist3 *locals;
    Vlist1 *owns;
    Vlist0 *ptowns;
    Vlist0 *popowns;
    Slist0 *type_formals;
    Slist0 *op_formals;
    } dbg_info_upper_case_actual;
static Vlist1 vals_upper_case = {0, 1, { {0, 2, "", &string_ops}}
};
static siglist0 sigs_upper_case = {0, 0};
static Vlist3 locals_upper_case = {0, 3,{ {0, 2, "err", &int_ops},  {0, 2, "ecode2", &int_ops},  {0, 2, "s", &string_ops}}
};
static Vlist0 popowns_upper_case = {0, 0};
Slist0 tformals_upper_case = {0, 0};
Slist0 opformals_upper_case = {0, 0};
dbg_info_upper_case_actual dbg_info_upper_case_data = {0, 12, 
    "upper_case", "/common/pub/dcurtis-temp/pclu/lib/clu/scase.clu", 0, 0, (int)upper_case, 1, 
    &vals_upper_case, &sigs_upper_case, &locals_upper_case, &owns_upper_case, &NO_VALS, &NO_VALS, &NO_PARMS, &NO_PARMS};
    struct dbg_info *dbg_info_upper_case = (struct dbg_info*)&dbg_info_upper_case_data;

extern struct dbg_info* dbg_info_capitalize;
#undef MY_TRACE_FLAG
#define MY_TRACE_FLAG capitalize_TRACE
int capitalize_TRACE;
static Vlist1 owns_capitalize = {0, 1,{ {0, 2, "_init", &int_ops}
}
};

/**** BEGIN PROCEDURE capitalize ****/

errcode capitalize(s, ret_1)
CLUREF s;
CLUREF *ret_1;
    {
    struct {
        struct dbg_info *DBG_INFO;
        int DBG_LINE;
        errcode err;
        errcode ecode2;
        CLUREF s;
        } locals;
    locals.s.num = UNINIT;
    locals.DBG_INFO = dbg_info_capitalize;
    locals.s = s;
    enter_proc(12);

  LINE(13);
    {
    {
    CLUREF T_1_1;
    locals.err = _case(locals.s, CLU_1, CLU_0, &T_1_1);
    if (locals.err != ERR_ok) goto ex_0;
    ret_1->num = T_1_1.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 capitalize ****/

typedef struct {
    int hdr;
    int count;
    char *name;
    char *fname;
    bool is_iter;
    int is_parmd;
    int addr;
    int nargs;
    Vlist1 *vals;
    siglist0 *sigs;
    Vlist3 *locals;
    Vlist1 *owns;
    Vlist0 *ptowns;
    Vlist0 *popowns;
    Slist0 *type_formals;
    Slist0 *op_formals;
    } dbg_info_capitalize_actual;
static Vlist1 vals_capitalize = {0, 1, { {0, 2, "", &string_ops}}
};
static siglist0 sigs_capitalize = {0, 0};
static Vlist3 locals_capitalize = {0, 3,{ {0, 2, "err", &int_ops},  {0, 2, "ecode2", &int_ops},  {0, 2, "s", &string_ops}}
};
static Vlist0 popowns_capitalize = {0, 0};
Slist0 tformals_capitalize = {0, 0};
Slist0 opformals_capitalize = {0, 0};
dbg_info_capitalize_actual dbg_info_capitalize_data = {0, 12, 
    "capitalize", "/common/pub/dcurtis-temp/pclu/lib/clu/scase.clu", 0, 0, (int)capitalize, 1, 
    &vals_capitalize, &sigs_capitalize, &locals_capitalize, &owns_capitalize, &NO_VALS, &NO_VALS, &NO_PARMS, &NO_PARMS};
    struct dbg_info *dbg_info_capitalize = (struct dbg_info*)&dbg_info_capitalize_data;

extern struct dbg_info* dbg_info__case;
#undef MY_TRACE_FLAG
#define MY_TRACE_FLAG _case_TRACE
int _case_TRACE;
extern struct OPS *array_of_char_ops;
static Vlist2 owns__case = {0, 2,{ {0, 2, "_init", &int_ops}
,  {0, 2, "buf", &array_of_char_ops}}
};
extern errcode _case_IB_1();
extern errcode _case_IB_2();
extern errcode arrayOPnew();
extern errcode stringOPchars();
extern errcode charOPge();
extern errcode charOPle();
extern errcode boolOPnot();
extern errcode intOPadd();
extern errcode intOPge();
extern errcode charOPi2c();
extern errcode intOPsub();
extern errcode charOPc2i();
extern errcode arrayOPaddh();
extern errcode stringOPac2s();
extern errcode arrayOPtrim();
extern OWN_req char_ownreqs;
extern struct OPS *char_ops;
extern struct REQS *array_of_t_reqs;
extern OWN_req array_ownreqs;
extern struct OPS *array_ops;
struct OPS *array_of_char_table;
struct OPS *array_of_char_ops;
struct OPS *array_of_char_ops;
OWNPTR array_of_char_owns;
static int _case_own_init = 0;
CLUREF _caseOPbuf;

/**** BEGIN PROCEDURE _case ****/

errcode _case(s, first, rest, ret_1)
CLUREF s;
CLUREF first;
CLUREF rest;
CLUREF *ret_1;
    {
    struct {
        struct dbg_info *DBG_INFO;
        int DBG_LINE;
        errcode err;
        errcode ecode2;
        CLUREF pos;
        CLUREF upper;
        CLUREF c;
        CLUREF npos;
        CLUREF s;
        CLUREF first;
        CLUREF rest;
        } locals;
    locals.pos.num = UNINIT;
    locals.upper.num = UNINIT;
    locals.c.num = UNINIT;
    locals.npos.num = UNINIT;
    locals.s.num = UNINIT;
    locals.first.num = UNINIT;
    locals.rest.num = UNINIT;
    locals.DBG_INFO = dbg_info__case;
    locals.s = s;
    locals.first = first;
    locals.rest = rest;
        if (_case_own_init == 0) {
        add_parm_info_type(0, char_ops, array_of_t_reqs);
        find_type_instance(array_ops, 1, &array_ownreqs, &(array_of_char_ops));
        _case_own_init = 1;
        {
            {CLUREF T_0_1;
            locals.err = arrayOPnew(&T_0_1);
            if (locals.err != ERR_ok) goto ex_0;
            _caseOPbuf.num = T_0_1.num;
            }
            }
    }
    enter_proc(16);

  LINE(19);
    {
        {locals.pos.num = 1;
        }
        }

  LINE(20);
    {
        {locals.upper.num = locals.first.num;
        }
        }

  LINE(21);
    {
        locals.err = stringOPchars(locals.s, _case_IB_1, &locals, &locals.ecode2);
        if (locals.err == ERR_iterbodyreturn) {
        ret_1->num = elist[0].num;
        signal(ERR_ok);}
        if (locals.err == ERR_iterbodysignal) {signal(locals.ecode2);}
        if (locals.err == ERR_break) locals.err = ERR_ok;
        if (locals.err == ERR_iterbodyexit) locals.err = locals.ecode2;
        if (locals.err != ERR_ok) goto ex_1;
        }
        goto end_1;
        ex_1:
            if ((locals.err == ERR_change)) {

  LINE(30);
                {
                    {locals.npos.num = 1;
                    }
                    }

  LINE(31);
                {
                locals.upper.num = locals.first.num;
                }

  LINE(32);
                {
                    locals.err = stringOPchars(locals.s, _case_IB_2, &locals, &locals.ecode2);
                    if (locals.err == ERR_iterbodyreturn) {
                    ret_1->num = elist[0].num;
                    signal(ERR_ok);}
                    if (locals.err == ERR_iterbodysignal) {signal(locals.ecode2);}
                    if (locals.err == ERR_break) locals.err = ERR_ok;
                    if (locals.err == ERR_iterbodyexit) locals.err = locals.ecode2;
                    if (locals.err != ERR_ok) goto ex_0;
                    }

  LINE(44);
                {
                CLUREF T_2_1;
                locals.err = stringOPac2s(_caseOPbuf, &T_2_1);
                if (locals.err != ERR_ok) goto ex_0;
                locals.s.num = T_2_1.num;
                }

  LINE(45);
                {
                locals.err = arrayOPtrim(_caseOPbuf, CLU_1, CLU_0);
                if (locals.err != ERR_ok) goto ex_0;
                }
            }
            else {
                goto ex_0;
            }
        end_1:;

  LINE(47);
    {
    {
    ret_1->num = locals.s.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 _case ****/

extern struct OPS *bool_ops;
typedef struct {
    int hdr;
    int count;
    char *name;
    char *fname;
    bool is_iter;
    int is_parmd;
    int addr;
    int nargs;
    Vlist1 *vals;
    siglist0 *sigs;
    Vlist9 *locals;
    Vlist2 *owns;
    Vlist0 *ptowns;
    Vlist0 *popowns;
    Slist0 *type_formals;
    Slist0 *op_formals;
    } dbg_info__case_actual;
static Vlist1 vals__case = {0, 1, { {0, 2, "", &string_ops}}
};
static siglist0 sigs__case = {0, 0};
static Vlist9 locals__case = {0, 9,{ {0, 2, "err", &int_ops},  {0, 2, "ecode2", &int_ops},  {0, 2, "pos", &int_ops},  {0, 2, "upper", &bool_ops},  {0, 2, "c", &char_ops},  {0, 2, "npos", &int_ops},  {0, 2, "s", &string_ops},  {0, 2, "first", &bool_ops},  {0, 2, "rest", &bool_ops}}
};
static Vlist0 popowns__case = {0, 0};
Slist0 tformals__case = {0, 0};
Slist0 opformals__case = {0, 0};
dbg_info__case_actual dbg_info__case_data = {0, 12, 
    "_case", "/common/pub/dcurtis-temp/pclu/lib/clu/scase.clu", 0, 0, (int)_case, 3, 
    &vals__case, &sigs__case, &locals__case, &owns__case, &NO_VALS, &NO_VALS, &NO_PARMS, &NO_PARMS};
    struct dbg_info *dbg_info__case = (struct dbg_info*)&dbg_info__case_data;

/**** BEGIN ITERATOR BODIES for _case ****/

errcode _case_IB_1(iv_1, locals, iecode)
errcode *iecode;
CLUREF iv_1;
struct {
    struct dbg_info *DBG_INFO;
    int DBG_LINE;
    errcode err;
    errcode ecode2;
    CLUREF pos;
    CLUREF upper;
    CLUREF c;
    CLUREF npos;
    CLUREF s;
    CLUREF first;
    CLUREF rest;
    } *locals;
{
    locals->c.num = iv_1.num;
    enter_iter_body_proc(22);

  FB_LINE(22);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    CLUREF T_1_4;
    CLUREF T_1_5;
    CLUREF T_1_6;
    CLUREF T_1_7;
    CLUREF T_1_8;
    CLUREF T_1_9;
    CLUREF T_1_10;
    CLUREF T_1_11;
    CLUREF T_1_12;
    CLUREF T_1_13;
    CLUREF T_1_14;
    T_1_3.num = locals->upper.num;
    if (locals->upper.num) {
        T_1_4.ch = 'a';
        locals->err = charOPge(locals->c, T_1_4, &T_1_5);
        if (locals->err != ERR_ok) goto ex_0;
        T_1_3.num = T_1_5.num;
    }
    T_1_2.num = T_1_3.num;
    if (T_1_3.num) {
        T_1_6.ch = 'z';
        locals->err = charOPle(locals->c, T_1_6, &T_1_7);
        if (locals->err != ERR_ok) goto ex_0;
        T_1_2.num = T_1_7.num;
    }
    T_1_1.num = T_1_2.num;
    if (!T_1_2.num) {
        T_1_10.num = locals->upper.num ^ 1;
        T_1_9.num = T_1_10.num;
        if (T_1_10.num) {
            T_1_11.ch = 'A';
            locals->err = charOPge(locals->c, T_1_11, &T_1_12);
            if (locals->err != ERR_ok) goto ex_0;
            T_1_9.num = T_1_12.num;
        }
        T_1_8.num = T_1_9.num;
        if (T_1_9.num) {
            T_1_13.ch = 'Z';
            locals->err = charOPle(locals->c, T_1_13, &T_1_14);
            if (locals->err != ERR_ok) goto ex_0;
            T_1_8.num = T_1_14.num;
        }
        T_1_1.num = T_1_8.num;
    }
    if (T_1_1.num == true) {

  FB_LINE(24);
        {
            locals->err = ERR_change;
            goto ex_0;
            }
        }
        }/* end if */

  FB_LINE(26);
    {
    CLUREF T_1_1;
    locals->err = intOPadd(locals->pos, CLU_1, &T_1_1);
    if (locals->err != ERR_ok) goto ex_0;
    locals->pos.num = T_1_1.num;
    }

  FB_LINE(27);
    {
    locals->upper.num = locals->rest.num;
    }
    {signal(ERR_ok);}
    ex_0:
        {
            *iecode = locals->err;
            {signal(ERR_iterbodyexit);}}
    end_0: {signal(ERR_ok);}
    }/* end _case_IB_1 */
errcode _case_IB_2(iv_1, locals, iecode)
errcode *iecode;
CLUREF iv_1;
struct {
    struct dbg_info *DBG_INFO;
    int DBG_LINE;
    errcode err;
    errcode ecode2;
    CLUREF pos;
    CLUREF upper;
    CLUREF c;
    CLUREF npos;
    CLUREF s;
    CLUREF first;
    CLUREF rest;
    } *locals;
{
    locals->c.num = iv_1.num;
    enter_iter_body_proc(33);

  FB_LINE(33);
    {
    CLUREF T_1_1;
    T_1_1.num = (locals->npos.num >= locals->pos.num)? true : false;
    if (T_1_1.num == true) {

  FB_LINE(34);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        CLUREF T_2_3;
        CLUREF T_2_4;
        CLUREF T_2_5;
        CLUREF T_2_6;
        T_2_2.num = locals->upper.num;
        if (locals->upper.num) {
            T_2_3.ch = 'a';
            locals->err = charOPge(locals->c, T_2_3, &T_2_4);
            if (locals->err != ERR_ok) goto ex_0;
            T_2_2.num = T_2_4.num;
        }
        T_2_1.num = T_2_2.num;
        if (T_2_2.num) {
            T_2_5.ch = 'z';
            locals->err = charOPle(locals->c, T_2_5, &T_2_6);
            if (locals->err != ERR_ok) goto ex_0;
            T_2_1.num = T_2_6.num;
        }
        if (T_2_1.num == true) {

  FB_LINE(35);
            {
            CLUREF T_3_1;
            CLUREF T_3_2;
            CLUREF T_3_3;
            T_3_1.num = (int)(locals->c.ch & 0xff);
            locals->err = intOPsub(T_3_1, CLU_32, &T_3_2);
            if (locals->err != ERR_ok) goto ex_0;
            locals->err = charOPi2c(T_3_2, &T_3_3);
            if (locals->err != ERR_ok) goto ex_0;
            locals->c.num = T_3_3.num;
            }
            }
        else {
        CLUREF T_2_7;
        CLUREF T_2_8;
        CLUREF T_2_9;
        CLUREF T_2_10;
        CLUREF T_2_11;
        CLUREF T_2_12;
        CLUREF T_2_13;
        T_2_9.num = locals->upper.num ^ 1;
        T_2_8.num = T_2_9.num;
        if (T_2_9.num) {
            T_2_10.ch = 'A';
            locals->err = charOPge(locals->c, T_2_10, &T_2_11);
            if (locals->err != ERR_ok) goto ex_0;
            T_2_8.num = T_2_11.num;
        }
        T_2_7.num = T_2_8.num;
        if (T_2_8.num) {
            T_2_12.ch = 'Z';
            locals->err = charOPle(locals->c, T_2_12, &T_2_13);
            if (locals->err != ERR_ok) goto ex_0;
            T_2_7.num = T_2_13.num;
        }
        if (T_2_7.num == true) {

  FB_LINE(37);
            {
            CLUREF T_3_1;
            CLUREF T_3_2;
            CLUREF T_3_3;
            T_3_1.num = (int)(locals->c.ch & 0xff);
            locals->err = intOPadd(T_3_1, CLU_32, &T_3_2);
            if (locals->err != ERR_ok) goto ex_0;
            locals->err = charOPi2c(T_3_2, &T_3_3);
            if (locals->err != ERR_ok) goto ex_0;
            locals->c.num = T_3_3.num;
            }
            }
            }}/* end if */
        }
        }/* end if */

  FB_LINE(40);
    {
    locals->err = arrayOPaddh(_caseOPbuf, locals->c);
    if (locals->err != ERR_ok) goto ex_0;
    }

  FB_LINE(41);
    {
    CLUREF T_1_1;
    locals->err = intOPadd(locals->npos, CLU_1, &T_1_1);
    if (locals->err != ERR_ok) goto ex_0;
    locals->npos.num = T_1_1.num;
    }

  FB_LINE(42);
    {
    locals->upper.num = locals->rest.num;
    }
    {signal(ERR_ok);}
    ex_0:
        {
            *iecode = locals->err;
            {signal(ERR_iterbodyexit);}}
    end_0: {signal(ERR_ok);}
    }/* end _case_IB_2 */

/**** END ITERATOR BODIES for _case ****/

