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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: flat_context.hpp,v $
  4.  * PRODUCTION Revision 1000.0  2003/10/29 20:58:25  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.4
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef OBJECTS_FLAT___FLAT_CONTEXT__HPP
  10. #define OBJECTS_FLAT___FLAT_CONTEXT__HPP
  11. /*  $Id: flat_context.hpp,v 1000.0 2003/10/29 20:58:25 gouriano Exp $
  12. * ===========================================================================
  13. *
  14. *                            PUBLIC DOMAIN NOTICE
  15. *               National Center for Biotechnology Information
  16. *
  17. *  This software/database is a "United States Government Work" under the
  18. *  terms of the United States Copyright Act.  It was written as part of
  19. *  the author's official duties as a United States Government employee and
  20. *  thus cannot be copyrighted.  This software/database is freely available
  21. *  to the public for use. The National Library of Medicine and the U.S.
  22. *  Government have not placed any restriction on its use or reproduction.
  23. *
  24. *  Although all reasonable efforts have been taken to ensure the accuracy
  25. *  and reliability of the software and data, the NLM and the U.S.
  26. *  Government do not and cannot warrant the performance or results that
  27. *  may be obtained by using this software or data. The NLM and the U.S.
  28. *  Government disclaim all warranties, express or implied, including
  29. *  warranties of performance, merchantability or fitness for any particular
  30. *  purpose.
  31. *
  32. *  Please cite the author in any work or product based on this material.
  33. *
  34. * ===========================================================================
  35. *
  36. * Author:  Aaron Ucko, NCBI
  37. *
  38. * File Description:
  39. *   new (early 2003) flat-file generator -- context needed when (pre)formatting
  40. *
  41. */
  42. #include <objtools/flat/flat_loc.hpp>
  43. #include <objtools/flat/flat_reference.hpp>
  44. #include <objects/seq/Bioseq.hpp>
  45. #include <objects/seq/MolInfo.hpp>
  46. #include <objects/seq/Seq_inst.hpp>
  47. #include <objmgr/bioseq_handle.hpp>
  48. BEGIN_NCBI_SCOPE
  49. BEGIN_SCOPE(objects)
  50. class CSeq_entry;
  51. // NB: If you create one of these yourself (not recommended), you
  52. // should allocate it on the heap rather than on the stack, as some
  53. // other types store long-lived CRefs.
  54. class CFlatContext : public CObject
  55. {
  56. public:
  57.     CFlatContext(void)
  58.         : m_Formatter(0), m_AdjustCoords(false),
  59.           m_SegmentNum(0), m_SegmentCount(0), m_GI(0), m_Length(0),
  60.           m_Mol(CSeq_inst::eMol_not_set), m_Biomol(CMolInfo::eBiomol_unknown),
  61.           m_IsProt(false), m_IsTPA(false), m_IsWGSMaster(false),
  62.           m_IsRefSeq(false), m_IsRefSeqGenome(false)
  63.         { }
  64.     void SetFlags(const CSeq_entry& entry, bool do_parents);
  65.     // GI -> accession, if possible
  66.     const CSeq_id& GetPreferredSynonym(const CSeq_id& id) const;
  67.     const char* GetUnits(bool abbrev = true) const;
  68.     typedef CMolInfo::TBiomol             TBiomol;
  69.     typedef CSeq_inst::TMol               TMol;
  70.     typedef vector<CRef<CFlatReference> > TReferences;
  71.     // accessors; real data is now private
  72.     IFlatFormatter&    GetFormatter   (void) const { return *m_Formatter;     }
  73.     const CSeq_loc&    GetLocation    (void) const { return *m_Location;      }
  74.     bool               AdjustCoords   (void) const { return m_AdjustCoords;   }
  75.     const CBioseq_Handle& GetHandle   (void) const { return m_Handle;         }
  76.     bool               InSegSet       (void) const { return m_SegMaster;      }
  77.     const CBioseq*     GetSegMaster   (void) const { return m_SegMaster;      }
  78.     unsigned int       GetSegmentNum  (void) const { return m_SegmentNum;     }
  79.     unsigned int       GetSegmentCount(void) const { return m_SegmentCount;   }
  80.     const TReferences& GetReferences  (void) const { return m_References;     }
  81.     int                GetGI          (void) const { return m_GI;             }
  82.     const string&      GetAccession   (void) const { return m_Accession;      }
  83.     const CSeq_id&     GetPrimaryID   (void) const { return *m_PrimaryID;     }
  84.     TSeqPos            GetLength      (void) const { return m_Length;         }
  85.     TMol               GetMol         (void) const { return m_Mol;            }
  86.     TBiomol            GetBiomol      (void) const { return m_Biomol;         }
  87.     bool               IsProt         (void) const { return m_IsProt;         }
  88.     bool               IsTPA          (void) const { return m_IsTPA;          }
  89.     bool               IsWGSMaster    (void) const { return m_IsWGSMaster;    }
  90.     bool               IsRefSeq       (void) const { return m_IsRefSeq;       }
  91.     bool               IsRefSeqGenome (void) const { return m_IsRefSeqGenome; }
  92. private:
  93.     IFlatFormatter*     m_Formatter;
  94.     CConstRef<CSeq_loc> m_Location;
  95.     bool                m_AdjustCoords;
  96.     CBioseq_Handle      m_Handle;
  97.     // everything below is technically redundant but useful to keep around
  98.     CConstRef<CBioseq>  m_SegMaster;
  99.     unsigned int        m_SegmentNum, m_SegmentCount;
  100.     TReferences         m_References;
  101.     int                 m_GI;
  102.     string              m_Accession; // with version
  103.     CConstRef<CSeq_id>  m_PrimaryID; // corresponds to above accn
  104.     TSeqPos             m_Length;
  105.     TMol                m_Mol;
  106.     TBiomol             m_Biomol;
  107.     bool                m_IsProt;
  108.     bool                m_IsTPA;
  109.     bool                m_IsWGSMaster;
  110.     bool                m_IsRefSeq;
  111.     bool                m_IsRefSeqGenome;
  112.     CConstRef<CSeq_loc> m_CachedLoc;
  113.     CConstRef<CFlatLoc> m_CachedFlatLoc;
  114.     friend class IFlatFormatter; // for m_Cached*
  115.     // these help with initialization
  116.     friend class CFlatHead;
  117.     friend class CFlatLoc;
  118. };
  119. END_SCOPE(objects)
  120. END_NCBI_SCOPE
  121. /*
  122. * ===========================================================================
  123. *
  124. * $Log: flat_context.hpp,v $
  125. * Revision 1000.0  2003/10/29 20:58:25  gouriano
  126. * PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.4
  127. *
  128. * Revision 1.4  2003/10/08 21:09:58  ucko
  129. * For segmented sequences, find and note the "master" sequence rather
  130. * than just setting a flag.
  131. *
  132. * Revision 1.3  2003/06/02 16:01:39  dicuccio
  133. * Rearranged include/objects/ subtree.  This includes the following shifts:
  134. *     - include/objects/alnmgr --> include/objtools/alnmgr
  135. *     - include/objects/cddalignview --> include/objtools/cddalignview
  136. *     - include/objects/flat --> include/objtools/flat
  137. *     - include/objects/objmgr/ --> include/objmgr/
  138. *     - include/objects/util/ --> include/objmgr/util/
  139. *     - include/objects/validator --> include/objtools/validator
  140. *
  141. * Revision 1.2  2003/03/21 18:47:47  ucko
  142. * Turn most structs into (accessor-requiring) classes; replace some
  143. * formerly copied fields with pointers to the original data.
  144. *
  145. * Revision 1.1  2003/03/10 16:39:08  ucko
  146. * Initial check-in of new flat-file generator
  147. *
  148. *
  149. * ===========================================================================
  150. */
  151. #endif  /* OBJECTS_FLAT___FLAT_CONTEXT__HPP */