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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: Pub_set.cpp,v $
  4.  * PRODUCTION Revision 1000.1  2004/06/01 19:33:04  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R6.4
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /* $Id: Pub_set.cpp,v 1000.1 2004/06/01 19:33:04 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.  *   'pub.asn'.
  43.  */
  44. // standard includes
  45. // generated includes
  46. #include <ncbi_pch.hpp>
  47. #include <objects/pub/Pub_set.hpp>
  48. // generated classes
  49. BEGIN_NCBI_SCOPE
  50. BEGIN_objects_SCOPE // namespace ncbi::objects::
  51. // destructor
  52. CPub_set::~CPub_set(void)
  53. {
  54. }
  55. // Handles looping thru list of pub, medline, article, journal, book, 
  56. // proceeding, or patent, creating a label by concatenting labels
  57. // for objects in the list
  58. template <class T>
  59. static void s_GetLabel(string* label, const list<CRef<T> >& the_list)
  60. {
  61.     bool first = true;
  62.     ITERATE(typename list<CRef<T> >, it, the_list) {
  63.         if (!first) {
  64.             *label += ",";
  65.         } else {
  66.             first = false;
  67.         }
  68.         (*it)->GetLabel(label);
  69.     }        
  70. }
  71. // Determines the type of set and calls the appropriately instantiated
  72. // s_GetLabel
  73. void CPub_set::GetLabel(string* label) const
  74. {
  75.     // Ensure label exists
  76.     if (!label) {
  77.         return;
  78.     }
  79.     
  80.     switch (Which()) {
  81.     case e_Pub:
  82.         s_GetLabel<CPub>(label, GetPub());
  83.         break;
  84.     case e_Medline:
  85.         s_GetLabel<CMedline_entry>(label, GetMedline());
  86.         break;
  87.     case e_Article:
  88.         s_GetLabel<CCit_art>(label, GetArticle());
  89.         break;
  90.     case e_Journal:
  91.         s_GetLabel<CCit_jour>(label, GetJournal());
  92.         break;
  93.     case e_Book:
  94.         s_GetLabel<CCit_book>(label, GetBook());
  95.         break;
  96.     case e_Proc:
  97.         s_GetLabel<CCit_proc>(label, GetProc());
  98.         break;
  99.     case e_Patent:
  100.         s_GetLabel<CCit_pat>(label, GetPatent());
  101.         break;
  102.     default:
  103.         break;
  104.     }
  105. }
  106. END_objects_SCOPE // namespace ncbi::objects::
  107. END_NCBI_SCOPE
  108. /*
  109.  * ===========================================================================
  110.  *
  111.  * $Log: Pub_set.cpp,v $
  112.  * Revision 1000.1  2004/06/01 19:33:04  gouriano
  113.  * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R6.4
  114.  *
  115.  * Revision 6.4  2004/05/19 17:24:52  gorelenk
  116.  * Added include of PCH - ncbi_pch.hpp
  117.  *
  118.  * Revision 6.3  2004/04/26 16:48:38  ucko
  119.  * Add an explicit "typename" annotation required by GCC 3.4.
  120.  * Move CVS log to end per current practice.
  121.  *
  122.  * Revision 6.2  2003/03/11 15:51:42  kuznets
  123.  * iterate -> ITERATE
  124.  *
  125.  * Revision 6.1  2002/01/10 19:40:10  clausen
  126.  * Added GetLabel
  127.  *
  128.  * ===========================================================================
  129.  */
  130. /* Original file checksum: lines: 61, chars: 1874, CRC32: 8b72a069 */