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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: Query_Command_.hpp,v $
  4.  * PRODUCTION Revision 1000.1  2004/04/12 17:20:08  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [CATCHUP_003] Dev-tree R1.3
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /* $Id: Query_Command_.hpp,v 1000.1 2004/04/12 17:20:08 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. #ifndef QUERY_COMMAND_BASE_HPP
  45. #define QUERY_COMMAND_BASE_HPP
  46. // standard includes
  47. #include <serial/serialbase.hpp>
  48. // forward declarations
  49. class CQuery_Related;
  50. class CQuery_Search;
  51. class CQuery_Select;
  52. // generated classes
  53. class CQuery_Command_Base : public ncbi::CSerialObject
  54. {
  55.     typedef ncbi::CSerialObject Tparent;
  56. public:
  57.     // constructor
  58.     CQuery_Command_Base(void);
  59.     // destructor
  60.     virtual ~CQuery_Command_Base(void);
  61.     // type info
  62.     DECLARE_INTERNAL_TYPE_INFO();
  63.     // choice state enum
  64.     enum E_Choice {
  65.         e_not_set = 0,
  66.         e_Search,
  67.         e_Select,
  68.         e_Related
  69.     };
  70.     enum E_ChoiceStopper {
  71.         e_MaxChoice = 4 // == Related+1
  72.     };
  73.     // reset selection to none
  74.     virtual void Reset(void);
  75.     // choice state
  76.     E_Choice Which(void) const;
  77.     // throw exception if current selection is not as requested
  78.     void CheckSelected(E_Choice index) const;
  79.     // throw exception about wrong selection
  80.     void ThrowInvalidSelection(E_Choice index) const;
  81.     // return selection name (for diagnostic purposes)
  82.     static std::string SelectionName(E_Choice index);
  83.     // select requested variant if needed
  84.     void Select(E_Choice index, ncbi::EResetVariant reset = ncbi::eDoResetVariant);
  85.     // types
  86.     typedef CQuery_Search TSearch;
  87.     typedef CQuery_Select TSelect;
  88.     typedef CQuery_Related TRelated;
  89.     // getters
  90.     // setters
  91.     // typedef CQuery_Search TSearch
  92.     bool IsSearch(void) const;
  93.     const TSearch& GetSearch(void) const;
  94.     TSearch& SetSearch(void);
  95.     void SetSearch(TSearch& value);
  96.     // typedef CQuery_Select TSelect
  97.     bool IsSelect(void) const;
  98.     const TSelect& GetSelect(void) const;
  99.     TSelect& SetSelect(void);
  100.     void SetSelect(TSelect& value);
  101.     // typedef CQuery_Related TRelated
  102.     bool IsRelated(void) const;
  103.     const TRelated& GetRelated(void) const;
  104.     TRelated& SetRelated(void);
  105.     void SetRelated(TRelated& value);
  106. private:
  107.     // copy constructor and assignment operator
  108.     CQuery_Command_Base(const CQuery_Command_Base& );
  109.     CQuery_Command_Base& operator=(const CQuery_Command_Base& );
  110.     // choice state
  111.     E_Choice m_choice;
  112.     // helper methods
  113.     void DoSelect(E_Choice index);
  114.     static const char* const sm_SelectionNames[];
  115.     // data
  116.     NCBI_NS_NCBI::CSerialObject *m_object;
  117. };
  118. ///////////////////////////////////////////////////////////
  119. ///////////////////// inline methods //////////////////////
  120. ///////////////////////////////////////////////////////////
  121. inline
  122. CQuery_Command_Base::E_Choice CQuery_Command_Base::Which(void) const
  123. {
  124.     return m_choice;
  125. }
  126. inline
  127. void CQuery_Command_Base::CheckSelected(E_Choice index) const
  128. {
  129.     if ( m_choice != index )
  130.         ThrowInvalidSelection(index);
  131. }
  132. inline
  133. void CQuery_Command_Base::Select(E_Choice index, NCBI_NS_NCBI::EResetVariant reset)
  134. {
  135.     if ( reset == NCBI_NS_NCBI::eDoResetVariant || m_choice != index ) {
  136.         if ( m_choice != e_not_set )
  137.             Reset();
  138.         DoSelect(index);
  139.     }
  140. }
  141. inline
  142. bool CQuery_Command_Base::IsSearch(void) const
  143. {
  144.     return m_choice == e_Search;
  145. }
  146. inline
  147. bool CQuery_Command_Base::IsSelect(void) const
  148. {
  149.     return m_choice == e_Select;
  150. }
  151. inline
  152. bool CQuery_Command_Base::IsRelated(void) const
  153. {
  154.     return m_choice == e_Related;
  155. }
  156. ///////////////////////////////////////////////////////////
  157. ////////////////// end of inline methods //////////////////
  158. ///////////////////////////////////////////////////////////
  159. #endif // QUERY_COMMAND_BASE_HPP