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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: flat_quals.hpp,v $
  4.  * PRODUCTION Revision 1000.1  2004/04/12 17:34:57  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [CATCHUP_003] Dev-tree R1.4
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef OBJECTS_FLAT___FLAT_QUALS__HPP
  10. #define OBJECTS_FLAT___FLAT_QUALS__HPP
  11. /*  $Id: flat_quals.hpp,v 1000.1 2004/04/12 17:34:57 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 -- qualifier types
  40. *   (mainly of interest to implementors)
  41. *
  42. */
  43. #include <objtools/flat/flat_feature.hpp>
  44. #include <objects/general/Dbtag.hpp>
  45. #include <objects/pub/Pub_set.hpp>
  46. #include <objects/seqfeat/BioSource.hpp>
  47. #include <objects/seqfeat/Cdregion.hpp>
  48. #include <objects/seqfeat/Code_break.hpp>
  49. #include <objects/seqfeat/Gb_qual.hpp>
  50. #include <objects/seqfeat/Gene_ref.hpp>
  51. #include <objects/seqfeat/OrgMod.hpp>
  52. #include <objects/seqfeat/Seq_feat.hpp>
  53. #include <objects/seqfeat/SubSource.hpp>
  54. BEGIN_NCBI_SCOPE
  55. BEGIN_SCOPE(objects)
  56. class CFlatBoolQV : public IFlatQV
  57. {
  58. public:
  59.     CFlatBoolQV(bool value) : m_Value(value) { }
  60.     void Format(TFlatQuals& q, const string& n, CFlatContext&, TFlags) const
  61.         { if (m_Value) { x_AddFQ(q, n, kEmptyStr, CFlatQual::eEmpty); } }
  62. private:
  63.     bool m_Value;
  64. };
  65. class CFlatIntQV : public IFlatQV
  66. {
  67. public:
  68.     CFlatIntQV(int value) : m_Value(value) { }
  69.     void Format(TFlatQuals& q, const string& n, CFlatContext&, TFlags) const
  70.         { x_AddFQ(q, n, NStr::IntToString(m_Value), CFlatQual::eUnquoted); }
  71. private:
  72.     int m_Value;
  73. };
  74. // potential flags:
  75. //  tilde mode?
  76. //  expand SGML entities?
  77. // (handle via subclasses?)
  78. class CFlatStringQV : public IFlatQV
  79. {
  80. public:
  81.     CFlatStringQV(const string& value,
  82.                   CFlatQual::EStyle style = CFlatQual::eQuoted)
  83.         : m_Value(value), m_Style(style) { }
  84.     void Format(TFlatQuals& quals, const string& name, CFlatContext& ctx,
  85.                 TFlags flags) const;
  86. private:
  87.     string            m_Value;
  88.     CFlatQual::EStyle m_Style;
  89. };
  90. class CFlatCodeBreakQV : public IFlatQV
  91. {
  92. public:
  93.     CFlatCodeBreakQV(const CCdregion::TCode_break value) : m_Value(value) { }
  94.     void Format(TFlatQuals& quals, const string& name, CFlatContext& ctx,
  95.                 TFlags flags) const;
  96. private:
  97.     CCdregion::TCode_break m_Value;
  98. };
  99. class CFlatCodonQV : public IFlatQV
  100. {
  101. public:
  102.     CFlatCodonQV(unsigned int codon, unsigned char aa, bool is_ascii = true);
  103.     CFlatCodonQV(const string& value); // for imports
  104.     void Format(TFlatQuals& quals, const string& name, CFlatContext& ctx,
  105.                 TFlags flags) const;
  106. private:
  107.     string m_Codon, m_AA;
  108.     bool   m_Checked;
  109. };
  110. class CFlatExpEvQV : public IFlatQV
  111. {
  112. public:
  113.     CFlatExpEvQV(CSeq_feat::TExp_ev value) : m_Value(value) { }
  114.     void Format(TFlatQuals& quals, const string& name, CFlatContext& ctx,
  115.                 TFlags flags) const;
  116. private:
  117.     CSeq_feat::TExp_ev m_Value;
  118. };
  119. class CFlatIllegalQV : public IFlatQV
  120. {
  121. public:
  122.     CFlatIllegalQV(const CGb_qual& value) : m_Value(&value) { }
  123.     void Format(TFlatQuals& quals, const string& name, CFlatContext& ctx,
  124.                 TFlags flags) const;
  125. private:
  126.     CConstRef<CGb_qual> m_Value;
  127. };
  128. class CFlatLabelQV : public CFlatStringQV
  129. {
  130. public:
  131.     CFlatLabelQV(const string& value)
  132.         : CFlatStringQV(value, CFlatQual::eUnquoted) { }
  133.     // XXX - should override Format to check syntax
  134. };
  135. class CFlatMolTypeQV : public IFlatQV
  136. {
  137. public:
  138.     typedef CMolInfo::TBiomol TBiomol;
  139.     typedef CSeq_inst::TMol   TMol;
  140.     CFlatMolTypeQV(TBiomol biomol, TMol mol) : m_Biomol(biomol), m_Mol(mol) { }
  141.     void Format(TFlatQuals& quals, const string& name, CFlatContext& ctx,
  142.                 TFlags flags) const;
  143. private:
  144.     TBiomol m_Biomol;
  145.     TMol    m_Mol;
  146. };
  147. class CFlatOrgModQV : public IFlatQV
  148. {
  149. public:
  150.     CFlatOrgModQV(const COrgMod& value) : m_Value(&value) { }
  151.     void Format(TFlatQuals& quals, const string& name, CFlatContext& ctx,
  152.                 TFlags flags) const;
  153. private:
  154.     CConstRef<COrgMod> m_Value;
  155. };
  156. class CFlatOrganelleQV : public IFlatQV
  157. {
  158. public:
  159.     CFlatOrganelleQV(CBioSource::TGenome value) : m_Value(value) { }
  160.     void Format(TFlatQuals& quals, const string& name, CFlatContext& ctx,
  161.                 TFlags flags) const;
  162. private:
  163.     CBioSource::TGenome m_Value;
  164. };
  165. class CFlatPubSetQV : public IFlatQV
  166. {
  167. public:
  168.     CFlatPubSetQV(const CPub_set& value) : m_Value(&value) { }
  169.     void Format(TFlatQuals& quals, const string& name, CFlatContext& ctx,
  170.                 TFlags flags) const;
  171. private:
  172.     CConstRef<CPub_set> m_Value;
  173. };
  174. class CFlatSeqDataQV : public IFlatQV
  175. {
  176. public:
  177.     CFlatSeqDataQV(const CSeq_loc& value) : m_Value(&value) { }
  178.     void Format(TFlatQuals& quals, const string& name, CFlatContext& ctx,
  179.                 TFlags flags) const;
  180. private:
  181.     CConstRef<CSeq_loc> m_Value;
  182. };
  183. class CFlatSeqIdQV : public IFlatQV
  184. {
  185. public:
  186.     CFlatSeqIdQV(const CSeq_id& value) : m_Value(&value) { }
  187.     void Format(TFlatQuals& quals, const string& name, CFlatContext& ctx,
  188.                 TFlags flags) const;
  189. private:
  190.     CConstRef<CSeq_id> m_Value;
  191. };
  192. class CFlatSeqLocQV : public IFlatQV
  193. {
  194. public:
  195.     CFlatSeqLocQV(const CSeq_loc& value) : m_Value(&value) { }
  196.     void Format(TFlatQuals& q, const string& n, CFlatContext& ctx,
  197.                 TFlags) const
  198.         { x_AddFQ(q, n, CFlatLoc(*m_Value, ctx).GetString()); }
  199. private:
  200.     CConstRef<CSeq_loc> m_Value;
  201. };
  202. class CFlatSubSourceQV : public IFlatQV
  203. {
  204. public:
  205.     CFlatSubSourceQV(const CSubSource& value) : m_Value(&value) { }
  206.     void Format(TFlatQuals& quals, const string& name, CFlatContext& ctx,
  207.                 TFlags flags) const;
  208. private:
  209.     CConstRef<CSubSource> m_Value;
  210. };
  211. class CFlatXrefQV : public IFlatQV
  212. {
  213. public:
  214.     typedef CSeq_feat::TDbxref TXref;
  215.     CFlatXrefQV(const TXref& value) : m_Value(value) { }
  216.     void Format(TFlatQuals& quals, const string& name, CFlatContext& ctx,
  217.                 TFlags flags) const;
  218. private:
  219.     TXref m_Value;
  220. };
  221. // ...
  222. END_SCOPE(objects)
  223. END_NCBI_SCOPE
  224. /*
  225. * ===========================================================================
  226. *
  227. * $Log: flat_quals.hpp,v $
  228. * Revision 1000.1  2004/04/12 17:34:57  gouriano
  229. * PRODUCTION: UPGRADED [CATCHUP_003] Dev-tree R1.4
  230. *
  231. * Revision 1.4  2004/01/27 17:12:06  ucko
  232. * Add missing #include directive for Code_break.hpp.
  233. *
  234. * Revision 1.3  2003/06/02 16:01:39  dicuccio
  235. * Rearranged include/objects/ subtree.  This includes the following shifts:
  236. *     - include/objects/alnmgr --> include/objtools/alnmgr
  237. *     - include/objects/cddalignview --> include/objtools/cddalignview
  238. *     - include/objects/flat --> include/objtools/flat
  239. *     - include/objects/objmgr/ --> include/objmgr/
  240. *     - include/objects/util/ --> include/objmgr/util/
  241. *     - include/objects/validator --> include/objtools/validator
  242. *
  243. * Revision 1.2  2003/03/21 18:47:47  ucko
  244. * Turn most structs into (accessor-requiring) classes; replace some
  245. * formerly copied fields with pointers to the original data.
  246. *
  247. * Revision 1.1  2003/03/10 16:39:08  ucko
  248. * Initial check-in of new flat-file generator
  249. *
  250. *
  251. * ===========================================================================
  252. */
  253. #endif  /* OBJECTS_FLAT___FLAT_QUALS__HPP */