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

生物技术

开发平台:

C/C++

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