void freeSEQUENCE(SEQUENCE seq){ freeSTRING(seq.name); freeSTRING(seq.sequence); freeSTRING(seq.orf); seq.from = 0; seq.to = 0; }
static void parseDBESTline(FILE *fp, ANYTYPE *a){ register int ch; register STRING *s; a->type = 's'; while(isspace(ch = getc(fp))) /* SKIP LEADING WHITE SPACE */ if(ch == EOF){ a->u.s = NULL; return; } s = newSTRING(); do { switch(ch){ case '\t': /* REPLACE TABS WITH SPACES */ addSTRING(s, ' '); break; case '\n': a->u.s = s->str; free(s); /* FREE STRING SHELL ONLY */ return; default: addSTRING(s, ch); break; } } while((ch = getc(fp)) != EOF); a->u.s = NULL; freeSTRING(s); return; }
static void parseDBESTblock(FILE *fp, ANYTYPE *a){ register STRING *s = newSTRING(); register int ch, prev = ' '; a->type = 's'; while( (ch = getc(fp)) != EOF){ switch(ch){ case '\n': if(prev == '\n'){ a->u.s = s->str; free(s); /* FREE SHELL ONLY */ return; } break; case ' ': case '\t': break; default: addSTRING(s, ch); break; } prev = ch; } freeSTRING(s); a->u.s = NULL; return; }
static void parseDBESTpara(FILE *fp, ANYTYPE *a){ register STRING *s = newSTRING(); register int ch, prev = ' '; a->type = 's'; while(isspace(ch = getc(fp))); do { switch(ch){ case '\n': if(prev == '\n'){ /* SECTION END */ a->u.s = s->str; free(s); /* FREE SHELL ONLY */ return; } break; case ' ': /*FALLTHROUGH*/ case '\t': if(prev == '\n'){ /* SKIP SPACE AT START OF LINE */ while(isspace(ch = getc(fp))){ if((ch == '\n') && (prev == '\n')){ a->u.s = s->str; free(s); /* FREE SHELL ONLY */ return; } prev = ch; } addSTRING(s, ' '); } addSTRING(s, ch); break; default: if(prev == '\n'){ /* TAG END */ ungetc(ch, fp); a->u.s = s->str; free(s); /* FREE SHELL ONLY */ return; } addSTRING(s, ch); break; } prev = ch; } while( (ch = getc(fp)) != EOF); freeSTRING(s); a->u.s = NULL; return; }