[BACK]Return to strobj.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / builtin

Annotation of OpenXM_contrib2/asir2000/builtin/strobj.c, Revision 1.2

1.2     ! noro        1: /* $OpenXM: OpenXM_contrib2/asir2000/builtin/strobj.c,v 1.1.1.1 1999/12/03 07:39:07 noro Exp $ */
1.1       noro        2: #include "ca.h"
                      3: #include "parse.h"
                      4: #include "ctype.h"
                      5: #if PARI
                      6: #include "genpari.h"
                      7: extern jmp_buf environnement;
                      8: #endif
                      9: extern char *parse_strp;
                     10:
                     11: void Prtostr(), Pstrtov(), Peval_str();
                     12:
                     13: struct ftab str_tab[] = {
                     14:        {"rtostr",Prtostr,1},
                     15:        {"strtov",Pstrtov,1},
                     16:        {"eval_str",Peval_str,1},
                     17:        {0,0,0},
                     18: };
                     19:
                     20: void Peval_str(arg,rp)
                     21: NODE arg;
                     22: Obj *rp;
                     23: {
                     24:        FNODE fnode;
                     25:        char *cmd;
                     26: #if PARI
                     27:        recover(0);
                     28:        if ( setjmp(environnement) ) {
                     29:                avma = top; recover(1);
                     30:                resetenv("");
                     31:        }
                     32: #endif
                     33:        cmd = BDY((STRING)ARG0(arg));
                     34:        exprparse(0,cmd,&fnode);
                     35:        *rp = eval(fnode);
                     36: }
                     37:
                     38: void Prtostr(arg,rp)
                     39: NODE arg;
                     40: STRING *rp;
                     41: {
                     42:        char *b;
                     43:        int len;
                     44:
1.2     ! noro       45:        len = estimate_length(CO,ARG0(arg));
1.1       noro       46:        b = (char *)MALLOC(len+1);
                     47:        soutput_init(b);
                     48:        sprintexpr(CO,ARG0(arg));
                     49:        MKSTR(*rp,b);
                     50: }
                     51:
                     52: void Pstrtov(arg,rp)
                     53: NODE arg;
                     54: P *rp;
                     55: {
                     56:        char *p,*t;
                     57:
                     58:        p = BDY((STRING)ARG0(arg));
                     59: #if 0
                     60:        if ( !islower(*p) )
                     61:                *rp = 0;
                     62:        else {
                     63:                for ( t = p+1; t && (isalnum(*t) || *t == '_'); t++ );
                     64:                if ( *t )
                     65:                        *rp = 0;
                     66:                else
                     67:                        makevar(p,rp);
                     68:        }
                     69: #else
                     70:        makevar(p,rp);
                     71: #endif
                     72: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>