3 * SOFTWARE COPYRIGHT NOTICE AGREEMENT
4 * This software and its documentation are copyright 2008 by the
5 * Broad Institute/Massachusetts Institute of Technology. All rights are reserved.
7 * This software is supplied without any warranty or guaranteed support whatsoever.
8 * Neither the Broad Institute nor MIT can be responsible for its use, misuse,
23 //typedef int8_t bool;
27 char open_mode; // 'r' or 'w'
28 bool owned_file, is_uncompressed;
37 int uncompressed_block_size;
38 int compressed_block_size;
39 void* uncompressed_block;
40 void* compressed_block;
41 int64_t block_address;
46 void *cache; // a pointer to a hash table
54 * Open an existing file descriptor for reading or writing.
55 * Mode must be either "r" or "w".
56 * A subsequent bgzf_close will not close the file descriptor.
57 * Returns null on error.
59 BGZF* bgzf_fdopen(int fd, const char* __restrict mode);
62 * Open the specified file for reading or writing.
63 * Mode must be either "r" or "w".
64 * Returns null on error.
66 BGZF* bgzf_open(const char* path, const char* __restrict mode);
69 * Close the BGZ file and free all associated resources.
70 * Does not close the underlying file descriptor if created with bgzf_fdopen.
71 * Returns zero on success, -1 on error.
73 int bgzf_close(BGZF* fp);
76 * Read up to length bytes from the file storing into data.
77 * Returns the number of bytes actually read.
78 * Returns zero on end of file.
79 * Returns -1 on error.
81 int bgzf_read(BGZF* fp, void* data, int length);
84 * Write length bytes from data to the file.
85 * Returns the number of bytes written.
86 * Returns -1 on error.
88 int bgzf_write(BGZF* fp, const void* data, int length);
91 * Return a virtual file pointer to the current location in the file.
92 * No interpetation of the value should be made, other than a subsequent
93 * call to bgzf_seek can be used to position the file at the same point.
94 * Return value is non-negative on success.
95 * Returns -1 on error.
97 int64_t bgzf_tell(BGZF* fp);
100 * Set the file to read from the location specified by pos, which must
101 * be a value previously returned by bgzf_tell for this file (but not
102 * necessarily one returned by this file handle).
103 * The where argument must be SEEK_SET.
104 * Seeking on a file opened for write is not supported.
105 * Returns zero on success, -1 on error.
107 int64_t bgzf_seek(BGZF* fp, int64_t pos, int where);
110 * Set the cache size. Zero to disable. By default, caching is
111 * disabled. The recommended cache size for frequent random access is
114 void bgzf_set_cache_size(BGZF *fp, int cache_size);