X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=src%2Fparse.h;h=6224ab8d07368e735cfcb7d504ea67da05994b6e;hb=a7a328a691ab370ed7fd61c9c04af9def02395d5;hp=d2e2612bea3261dbbf6d3db2537e71e4eecd6f8e;hpb=1fd93f3d6e283e5b69a187b9ece80e6ea554390a;p=fastq-tools.git diff --git a/src/parse.h b/src/parse.h index d2e2612..6224ab8 100644 --- a/src/parse.h +++ b/src/parse.h @@ -11,10 +11,10 @@ #ifndef FASTQ_TOOLS_PARSE_H #define FASTQ_TOOLS_PARSE_H -#include -#include - +#include +#include +/* A string structure to keep-track of a reserved space. */ typedef struct { char* s; /* null-terminated string */ @@ -23,7 +23,7 @@ typedef struct } str_t; - +/* A single fastq entry. */ typedef struct { str_t id1; @@ -33,24 +33,51 @@ typedef struct } seq_t; -seq_t* fastq_alloc_seq(); -void fastq_free_seq(seq_t*); +/* Allocate a new empty seq_t. */ +seq_t* seq_create(); -typedef struct -{ - gzFile file; - int state; - char* buf; - char* c; -} fastq_t; +/* Free a seq allocated with seq_create. */ +void seq_free(seq_t* seq); + + +/* Internal data for the fastq parser. */ +typedef struct fastq_t_ fastq_t; + + +/* Create a new fastq parser object. + * + * Args: + * file: A file that has been opened for reading. + */ +fastq_t* fastq_create(FILE* file); -fastq_t* fastq_open(FILE*); -void fastq_close(fastq_t*); -int fastq_next(fastq_t*, seq_t*); +/* Free memory associated with a fastq_t object. */ +void fastq_free(fastq_t*); + + +/* Read one fastq entry. + * + * Args: + * f: A fastq_t parser object. + * seq: A seq_t object that has been allocated with seq_create. + * + * Returns: + * True if an entry was read, false if end-of-file was reached. + */ +bool fastq_read(fastq_t* f, seq_t* seq); + + +/* Rewind the fastq file. + * + * The FILE passed to fastq_create must be seekable for this to work. + */ +void fastq_rewind(fastq_t* f); + -void fastq_print(FILE* fout, seq_t* seq); +/* Print a fastq entry. */ +void fastq_print(FILE* fout, const seq_t* seq); #endif