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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: Org_ref.cpp,v $
  4.  * PRODUCTION Revision 1000.1  2004/06/01 19:34:00  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R6.4
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /* $Id: Org_ref.cpp,v 1000.1 2004/06/01 19:34:00 gouriano Exp $
  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:  .......
  35.  *
  36.  * File Description:
  37.  *   .......
  38.  *
  39.  * Remark:
  40.  *   This code was originally generated by application DATATOOL
  41.  *   using specifications from the ASN data definition file
  42.  *   'seqfeat.asn'.
  43.  *
  44.  * ---------------------------------------------------------------------------
  45.  * $Log: Org_ref.cpp,v $
  46.  * Revision 1000.1  2004/06/01 19:34:00  gouriano
  47.  * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R6.4
  48.  *
  49.  * Revision 6.4  2004/05/19 17:26:04  gorelenk
  50.  * Added include of PCH - ncbi_pch.hpp
  51.  *
  52.  * Revision 6.3  2002/01/28 22:20:14  grichenk
  53.  * Fixed & assignments
  54.  *
  55.  * Revision 6.2  2002/01/28 19:49:49  domrach
  56.  * Get/Set tax id methods added
  57.  *
  58.  * Revision 6.1  2002/01/10 19:58:39  clausen
  59.  * Added GetLabel
  60.  *
  61.  *
  62.  * ===========================================================================
  63.  */
  64. // standard includes
  65. // generated includes
  66. #include <ncbi_pch.hpp>
  67. #include <objects/seqfeat/Org_ref.hpp>
  68. #include <objects/general/Object_id.hpp>
  69. #include <objects/general/Dbtag.hpp>
  70. // generated classes
  71. BEGIN_NCBI_SCOPE
  72. BEGIN_objects_SCOPE // namespace ncbi::objects::
  73. // destructor
  74. COrg_ref::~COrg_ref(void)
  75. {
  76. }
  77. // Appends a label to "label" based on content
  78. void COrg_ref::GetLabel(string* label) const
  79. {
  80.     if (IsSetTaxname()) {
  81.         *label += GetTaxname();
  82.     } else if (IsSetCommon()) {
  83.         *label += GetCommon();
  84.     } else if (IsSetDb()) {
  85.         GetDb().front()->GetLabel(label);
  86.     }
  87. }
  88.     
  89. static const string s_taxonName( "taxon" );
  90. int
  91. COrg_ref::GetTaxId() const
  92. {
  93.     const TDb& lDbTags = GetDb();
  94.  
  95.     for(TDb::const_iterator i = lDbTags.begin();
  96. i != lDbTags.end();
  97. ++i) {
  98. if( i->GetPointer()
  99.     && i->GetObject().GetDb().compare(s_taxonName) == 0 ) {
  100.     const CObject_id& id = i->GetObject().GetTag();
  101.     if( id.IsId() )
  102. return id.GetId();
  103. }
  104.     }
  105.     return 0;
  106. }
  107. int
  108. COrg_ref::SetTaxId( int tax_id )
  109. {
  110.     int old_id(0);
  111.     TDb& lDbTags = SetDb();
  112.     // Try to update existing tax id first
  113.     for(TDb::iterator i = lDbTags.begin();
  114. i != lDbTags.end();
  115. ++i) {
  116. if( i->GetPointer()
  117.     && i->GetObject().GetDb().compare(s_taxonName) == 0 ) {
  118.     CObject_id& id = i->GetObject().SetTag();
  119.     if( id.IsId() )
  120. old_id = id.GetId();
  121.     id.SetId() = tax_id;
  122.     return old_id;
  123. }
  124.     }
  125.     // Add new tag
  126.     CRef< CDbtag > ref( new CDbtag() );
  127.     ref->SetDb( s_taxonName );
  128.     ref->SetTag().SetId( tax_id );
  129.     SetDb().push_back( ref );
  130.     return old_id;
  131. }
  132. END_objects_SCOPE // namespace ncbi::objects::
  133. END_NCBI_SCOPE
  134. /* Original file checksum: lines: 61, chars: 1882, CRC32: c3300cc2 */