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

Annotation of OpenXM_contrib2/asir2000/io/biovar.c, Revision 1.1.1.1

1.1       noro        1: /* $OpenXM: OpenXM/src/asir99/io/biovar.c,v 1.1.1.1 1999/11/10 08:12:30 noro Exp $ */
                      2: #include "ca.h"
                      3: #include "parse.h"
                      4: #include "ox.h"
                      5:
                      6: static V *vtab;
                      7: VL file_vl;
                      8:
                      9: void savevl(s,vl)
                     10: FILE *s;
                     11: VL vl;
                     12: {
                     13:        int n,i;
                     14:        VL tvl;
                     15:
                     16:        for ( tvl = vl, n = 0; tvl; tvl = NEXT(tvl))
                     17:                if ( tvl->v->attr != (pointer)V_UC && tvl->v->attr != (pointer)V_PF )
                     18:                        n++;
                     19:        write_int(s,&n);
                     20:        vtab = (V *)CALLOC(n,sizeof(V));
                     21:        for ( tvl = vl, i = 0; i < n; tvl = NEXT(tvl) )
                     22:                if ( tvl->v->attr != (pointer)V_UC && tvl->v->attr != (pointer)V_PF ) {
                     23:                        vtab[i] = tvl->v; savev(s,vtab[i]); i++;
                     24:                }
                     25: }
                     26:
                     27: void loadvl(s)
                     28: FILE *s;
                     29: {
                     30:        int n,i,need_reorder;
                     31:        V v1,v2;
                     32:        VL t,t1;
                     33:
                     34:        read_int(s,&n);
                     35:        vtab = (V *)CALLOC(n,sizeof(V));
                     36:        for ( i = 0; i < n; i++ )
                     37:                loadv(s,&vtab[i]);
                     38:        need_reorder = 0;
                     39:        for ( i = 0; i < n-1; i++ ) {
                     40:                v1 = vtab[i]; v2 = vtab[i+1];
                     41:                for ( t = CO; t->v != v1 && t->v != v2; t = NEXT(t) );
                     42:                if ( t->v == v2 ) {
                     43:                        need_reorder = 1; break;
                     44:                }
                     45:        }
                     46:        if ( need_reorder ) {
                     47:                for ( i = n-1, t = 0; i >= 0; i-- ) {
                     48:                        NEWVL(t1); t1->v = vtab[i]; NEXT(t1) = t; t = t1;
                     49:                }
                     50:                file_vl = t;
                     51:        } else
                     52:                file_vl = 0;
                     53: }
                     54:
                     55: void skipvl(s)
                     56: FILE *s;
                     57: {
                     58:        int n,i,size,len;
                     59:
                     60:        read_int(s,&n);
                     61:        for ( i = 0, size = 0; i < n; i++ ) {
                     62:                read_int(s,&len); size += len;
                     63:        }
                     64:        fseek(s,size,1L);
                     65: }
                     66:
                     67: void savev(s,v)
                     68: FILE *s;
                     69: V v;
                     70: {
                     71:        savestr(s,NAME(v));
                     72: }
                     73:
                     74: void loadv(s,vp)
                     75: FILE *s;
                     76: V *vp;
                     77: {
                     78:        P p;
                     79:        char *name;
                     80:
                     81:        loadstr(s,&name);
                     82:        if ( name ) {
                     83:                makevar(name,&p);
                     84:                *vp = VR(p);
                     85:        } else
                     86:                *vp = 0;
                     87: }
                     88:
                     89: int save_convv(v)
                     90: V v;
                     91: {
                     92:        int i;
                     93:
                     94:        if ( ox_do_count )
                     95:                return 0;
                     96:        if ( v->attr == (pointer)V_PF )
                     97:                return -1;
                     98:        for ( i = 0; vtab[i]; i++ )
                     99:                if ( vtab[i] == v )
                    100:                        return i;
                    101: }
                    102:
                    103: V load_convv(vindex)
                    104: int vindex;
                    105: {
                    106:        return vtab[vindex];
                    107: }
                    108:
                    109: void swap_bytes(ptr,unit,size)
                    110: char *ptr;
                    111: int unit,size;
                    112: {
                    113:        char *p;
                    114:        int i,j,hunit;
                    115:        char t;
                    116:
                    117:        for ( i = 0, p = ptr, hunit = unit/2; i < size; i++, p += unit )
                    118:                for ( j = 0; j < hunit; j++ ) {
                    119:                        t = p[j]; p[j] = p[unit-j-1]; p[unit-j-1] = t;
                    120:                }
                    121: }

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