readfeat.hpp
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:4k
源码类别:

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: readfeat.hpp,v $
  4.  * PRODUCTION Revision 1000.3  2003/11/18 15:47:04  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [ORIGINAL] Dev-tree R1.8
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*
  10.  * ===========================================================================
  11.  *
  12.  *                            PUBLIC DOMAIN NOTICE
  13.  *               National Center for Biotechnology Information
  14.  *
  15.  *  This software/database is a "United States Government Work" under the
  16.  *  terms of the United States Copyright Act.  It was written as part of
  17.  *  the author's official duties as a United States Government employee and
  18.  *  thus cannot be copyrighted.  This software/database is freely available
  19.  *  to the public for use. The National Library of Medicine and the U.S.
  20.  *  Government have not placed any restriction on its use or reproduction.
  21.  *
  22.  *  Although all reasonable efforts have been taken to ensure the accuracy
  23.  *  and reliability of the software and data, the NLM and the U.S.
  24.  *  Government do not and cannot warrant the performance or results that
  25.  *  may be obtained by using this software or data. The NLM and the U.S.
  26.  *  Government disclaim all warranties, express or implied, including
  27.  *  warranties of performance, merchantability or fitness for any particular
  28.  *  purpose.
  29.  *
  30.  *  Please cite the author in any work or product based on this material.
  31.  *
  32.  * ===========================================================================
  33.  *
  34.  * Author:  Jonathan Kans
  35.  *
  36.  * File Description:
  37.  *   Feature table reader
  38.  *
  39.  */
  40. #ifndef OBJTOOLS_READERS___READFEAT__HPP
  41. #define OBJTOOLS_READERS___READFEAT__HPP
  42. #include <corelib/ncbistd.hpp>
  43. // Objects includes
  44. #include <objects/seq/Seq_annot.hpp>
  45. #include <memory> // for auto_ptr<>
  46. BEGIN_NCBI_SCOPE
  47. BEGIN_objects_SCOPE // namespace ncbi::objects::
  48. class CFeature_table_reader_imp;
  49. // public interface for (single instance) feature table reader
  50. class NCBI_XOBJREAD_EXPORT CFeature_table_reader
  51. {
  52. public:
  53.     enum EFlags {
  54.         fReportBadKey = 0x1,
  55.         fKeepBadKey = 0x2
  56.     };
  57.     typedef int TFlags;
  58.     // read 5-column feature table and return Seq-annot
  59.     static CRef<CSeq_annot> ReadSequinFeatureTable (CNcbiIstream& ifs,
  60.                                                     const TFlags flags = 0);
  61.     static CRef<CSeq_annot> ReadSequinFeatureTable (CNcbiIstream& ifs,
  62.                                                     const string& seqid,
  63.                                                     const string& annotname,
  64.                                                     const TFlags flags = 0);
  65.     // create single feature from key
  66.     static CRef<CSeq_feat> CreateSeqFeat (const string& feat,
  67.                                           CSeq_loc& location,
  68.                                           const TFlags flags = 0);
  69.     // add single qualifier to feature
  70.     static void AddFeatQual (CRef<CSeq_feat> sfp,
  71.                              const string& qual,
  72.                              const string& val,
  73.                              const TFlags flags = 0);
  74. private:
  75.     // this class uses a singleton internally to manage the specifics
  76.     // of the feature table reader implementation
  77.     // these are the variables / functions that control the singleton
  78.     static auto_ptr<CFeature_table_reader_imp> sm_Implementation;
  79.     static void                       x_InitImplementation(void);
  80.     static CFeature_table_reader_imp& x_GetImplementation (void);
  81. };
  82. inline
  83. CFeature_table_reader_imp& CFeature_table_reader::x_GetImplementation(void)
  84. {
  85.     if ( !sm_Implementation.get() ) {
  86.         x_InitImplementation();
  87.     }
  88.     return *sm_Implementation;
  89. }
  90. END_objects_SCOPE
  91. END_NCBI_SCOPE
  92. #endif // OBJTOOLS_READERS___READFEAT__HPP