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