1 /*=========================================================================== 2 * 3 * PUBLIC DOMAIN NOTICE 4 * National Center for Biotechnology Information 5 * 6 * This software/database is a "United States Government Work" under the 7 * terms of the United States Copyright Act. It was readten as part of 8 * the author's official duties as a United States Government employee and 9 * thus cannot be copyrighted. This software/database is freely available 10 * to the public for use. The National Library of Medicine and the U.S. 11 * Government have not placed any restriction on its use or reproduction. 12 * 13 * Although all reasonable efforts have been taken to ensure the accuracy 14 * and reliability of the software and data, the NLM and the U.S. 15 * Government do not and cannot warrant the performance or results that 16 * may be obtained by using this software or data. The NLM and the U.S. 17 * Government disclaim all warranties, express or implied, including 18 * warranties of performance, merchantability or fitness for any particular 19 * purpose. 20 * 21 * Please cite the author in any work or product based on this material. 22 * 23 * =========================================================================== 24 * 25 */ 26 #ifndef _h_align_reader_refseq_ 27 #define _h_align_reader_refseq_ 28 29 #ifndef _h_align_extern_ 30 #include <align/extern.h> 31 #endif 32 33 #ifdef __cplusplus 34 extern "C" { 35 #endif 36 37 struct VDBManager; 38 struct VTable; 39 40 enum ETableReaderRefSeq_Options { 41 errefseq_4NA = 0x01 /* read in INSDC:4na:bin, INSDC:dna:text is default */ 42 }; 43 44 typedef struct TableReaderRefSeq TableReaderRefSeq; 45 46 ALIGN_EXTERN rc_t CC TableReaderRefSeq_MakeTable(const TableReaderRefSeq** cself, const struct VDBManager* vmgr, 47 const struct VTable* table, uint32_t options, size_t cache); 48 49 ALIGN_EXTERN rc_t CC TableReaderRefSeq_MakePath(const TableReaderRefSeq** cself, const VDBManager* vmgr, 50 const char* path, uint32_t options, size_t cache); 51 52 ALIGN_EXTERN void CC TableReaderRefSeq_Whack(const TableReaderRefSeq* cself); 53 54 ALIGN_EXTERN rc_t CC TableReaderRefSeq_SeqId(const TableReaderRefSeq* cself, const char** id, uint32_t* id_sz); 55 56 ALIGN_EXTERN rc_t CC TableReaderRefSeq_SeqLength(const TableReaderRefSeq* cself, INSDC_coord_len* len); 57 58 ALIGN_EXTERN rc_t CC TableReaderRefSeq_Circular(const TableReaderRefSeq* cself, bool* circular); 59 60 /* *md5 is NULL if not present */ 61 ALIGN_EXTERN rc_t CC TableReaderRefSeq_MD5(const TableReaderRefSeq* cself, const uint8_t** md5); 62 63 /* read a chunk of refseq into buffer from offset up to offset + len 64 if offset is beyond non-circular refseq size error is returned 65 */ 66 ALIGN_EXTERN rc_t CC TableReaderRefSeq_Read(const TableReaderRefSeq* cself, INSDC_coord_zero offset, INSDC_coord_len len, 67 uint8_t* buffer, INSDC_coord_len* written); 68 #ifdef __cplusplus 69 } 70 #endif 71 72 #endif /* _h_align_reader_refseq_ */ 73