[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     ! 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>