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 written 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 27 #ifndef _h_ngs_itf_reference_sequence_itf_ 28 #define _h_ngs_itf_reference_sequence_itf_ 29 30 #ifndef _h_ngs_itf_vtable_ 31 #include "VTable.h" 32 #endif 33 34 #ifdef __cplusplus 35 extern "C" { 36 #endif 37 38 /*-------------------------------------------------------------------------- 39 * forwards 40 */ 41 42 43 /*-------------------------------------------------------------------------- 44 * NGS_ReferenceSequence_v1 45 */ 46 typedef struct NGS_ReferenceSequence_v1 NGS_ReferenceSequence_v1; 47 struct NGS_ReferenceSequence_v1 48 { 49 const NGS_VTable * vt; 50 }; 51 52 typedef struct NGS_ReferenceSequence_v1_vt NGS_ReferenceSequence_v1_vt; 53 struct NGS_ReferenceSequence_v1_vt 54 { 55 NGS_VTable dad; 56 57 /* v1.0 interface */ 58 NGS_String_v1 * ( CC * get_canon_name ) ( const NGS_ReferenceSequence_v1 * self, NGS_ErrBlock_v1 * err ); 59 bool ( CC * is_circular ) ( const NGS_ReferenceSequence_v1 * self, NGS_ErrBlock_v1 * err ); 60 uint64_t ( CC * get_length ) ( const NGS_ReferenceSequence_v1 * self, NGS_ErrBlock_v1 * err ); 61 NGS_String_v1 * ( CC * get_ref_bases ) ( const NGS_ReferenceSequence_v1 * self, NGS_ErrBlock_v1 * err, uint64_t offset, uint64_t length ); 62 NGS_String_v1 * ( CC * get_ref_chunk ) ( const NGS_ReferenceSequence_v1 * self, NGS_ErrBlock_v1 * err, uint64_t offset, uint64_t length ); 63 }; 64 65 66 #ifdef __cplusplus 67 } 68 #endif 69 70 #endif /* _h_ngs_itf_reference_sequence_itf_ */ 71