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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: Query_Command_.cpp,v $
  4.  * PRODUCTION Revision 1000.1  2004/06/01 19:46:05  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.2
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /* $Id: Query_Command_.cpp,v 1000.1 2004/06/01 19:46:05 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.  * File Description:
  35.  *   This code is generated by application DATATOOL
  36.  *   using specifications from the data definition file
  37.  *   'twebenv.asn'.
  38.  *
  39.  * ATTENTION:
  40.  *   Don't edit or check-in this file to the CVS as this file will
  41.  *   be overridden (by DATATOOL) without warning!
  42.  * ===========================================================================
  43.  */
  44. // standard includes
  45. #include <ncbi_pch.hpp>
  46. #include <serial/serialimpl.hpp>
  47. // generated includes
  48. #include "Query_Command.hpp"
  49. #include "Query_Related.hpp"
  50. #include "Query_Search.hpp"
  51. #include "Query_Select.hpp"
  52. // generated classes
  53. void CQuery_Command_Base::Reset(void)
  54. {
  55.     switch ( m_choice ) {
  56.     case e_Search:
  57.     case e_Select:
  58.     case e_Related:
  59.         m_object->RemoveReference();
  60.         break;
  61.     default:
  62.         break;
  63.     }
  64.     m_choice = e_not_set;
  65. }
  66. void CQuery_Command_Base::DoSelect(E_Choice index)
  67. {
  68.     switch ( index ) {
  69.     case e_Search:
  70.         (m_object = new CQuery_Search())->AddReference();
  71.         break;
  72.     case e_Select:
  73.         (m_object = new CQuery_Select())->AddReference();
  74.         break;
  75.     case e_Related:
  76.         (m_object = new CQuery_Related())->AddReference();
  77.         break;
  78.     default:
  79.         break;
  80.     }
  81.     m_choice = index;
  82. }
  83. const char* const CQuery_Command_Base::sm_SelectionNames[] = {
  84.     "not set",
  85.     "search",
  86.     "select",
  87.     "related"
  88. };
  89. NCBI_NS_STD::string CQuery_Command_Base::SelectionName(E_Choice index)
  90. {
  91.     return NCBI_NS_NCBI::CInvalidChoiceSelection::GetName(index, sm_SelectionNames, sizeof(sm_SelectionNames)/sizeof(sm_SelectionNames[0]));
  92. }
  93. void CQuery_Command_Base::ThrowInvalidSelection(E_Choice index) const
  94. {
  95.     throw NCBI_NS_NCBI::CInvalidChoiceSelection(__FILE__,__LINE__,m_choice, index, sm_SelectionNames, sizeof(sm_SelectionNames)/sizeof(sm_SelectionNames[0]));
  96. }
  97. const CQuery_Search& CQuery_Command_Base::GetSearch(void) const
  98. {
  99.     CheckSelected(e_Search);
  100.     return *static_cast<const TSearch*>(m_object);
  101. }
  102. CQuery_Search& CQuery_Command_Base::SetSearch(void)
  103. {
  104.     Select(e_Search, NCBI_NS_NCBI::eDoNotResetVariant);
  105.     return *static_cast<TSearch*>(m_object);
  106. }
  107. void CQuery_Command_Base::SetSearch(CQuery_Search& value)
  108. {
  109.     TSearch* ptr = &value;
  110.     if ( m_choice != e_Search || m_object != ptr ) {
  111.         Reset();
  112.         (m_object = ptr)->AddReference();
  113.         m_choice = e_Search;
  114.     }
  115. }
  116. const CQuery_Select& CQuery_Command_Base::GetSelect(void) const
  117. {
  118.     CheckSelected(e_Select);
  119.     return *static_cast<const TSelect*>(m_object);
  120. }
  121. CQuery_Select& CQuery_Command_Base::SetSelect(void)
  122. {
  123.     Select(e_Select, NCBI_NS_NCBI::eDoNotResetVariant);
  124.     return *static_cast<TSelect*>(m_object);
  125. }
  126. void CQuery_Command_Base::SetSelect(CQuery_Select& value)
  127. {
  128.     TSelect* ptr = &value;
  129.     if ( m_choice != e_Select || m_object != ptr ) {
  130.         Reset();
  131.         (m_object = ptr)->AddReference();
  132.         m_choice = e_Select;
  133.     }
  134. }
  135. const CQuery_Related& CQuery_Command_Base::GetRelated(void) const
  136. {
  137.     CheckSelected(e_Related);
  138.     return *static_cast<const TRelated*>(m_object);
  139. }
  140. CQuery_Related& CQuery_Command_Base::SetRelated(void)
  141. {
  142.     Select(e_Related, NCBI_NS_NCBI::eDoNotResetVariant);
  143.     return *static_cast<TRelated*>(m_object);
  144. }
  145. void CQuery_Command_Base::SetRelated(CQuery_Related& value)
  146. {
  147.     TRelated* ptr = &value;
  148.     if ( m_choice != e_Related || m_object != ptr ) {
  149.         Reset();
  150.         (m_object = ptr)->AddReference();
  151.         m_choice = e_Related;
  152.     }
  153. }
  154. // helper methods
  155. // type info
  156. BEGIN_NAMED_BASE_CHOICE_INFO("Query-Command", CQuery_Command)
  157. {
  158.     SET_CHOICE_MODULE("NCBI-Env");
  159.     ADD_NAMED_REF_CHOICE_VARIANT("search", m_object, CQuery_Search);
  160.     ADD_NAMED_REF_CHOICE_VARIANT("select", m_object, CQuery_Select);
  161.     ADD_NAMED_REF_CHOICE_VARIANT("related", m_object, CQuery_Related);
  162. }
  163. END_CHOICE_INFO
  164. // constructor
  165. CQuery_Command_Base::CQuery_Command_Base(void)
  166.     : m_choice(e_not_set)
  167. {
  168. }
  169. // destructor
  170. CQuery_Command_Base::~CQuery_Command_Base(void)
  171. {
  172.     if ( m_choice != e_not_set )
  173.         Reset();
  174. }