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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: enumvalues.hpp,v $
  4.  * PRODUCTION Revision 1000.1  2004/06/01 19:38:32  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.10
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef ENUMVALUES__HPP
  10. #define ENUMVALUES__HPP
  11. /*  $Id: enumvalues.hpp,v 1000.1 2004/06/01 19:38:32 gouriano Exp $
  12. * ===========================================================================
  13. *
  14. *                            PUBLIC DOMAIN NOTICE
  15. *               National Center for Biotechnology Information
  16. *
  17. *  This software/database is a "United States Government Work" under the
  18. *  terms of the United States Copyright Act.  It was written as part of
  19. *  the author's official duties as a United States Government employee and
  20. *  thus cannot be copyrighted.  This software/database is freely available
  21. *  to the public for use. The National Library of Medicine and the U.S.
  22. *  Government have not placed any restriction on its use or reproduction.
  23. *
  24. *  Although all reasonable efforts have been taken to ensure the accuracy
  25. *  and reliability of the software and data, the NLM and the U.S.
  26. *  Government do not and cannot warrant the performance or results that
  27. *  may be obtained by using this software or data. The NLM and the U.S.
  28. *  Government disclaim all warranties, express or implied, including
  29. *  warranties of performance, merchantability or fitness for any particular
  30. *  purpose.
  31. *
  32. *  Please cite the author in any work or product based on this material.
  33. *
  34. * ===========================================================================
  35. *
  36. * Author: Eugene Vasilchenko
  37. *
  38. * File Description:
  39. *   !!! PUT YOUR DESCRIPTION HERE !!!
  40. */
  41. #include <corelib/ncbistd.hpp>
  42. #include <serial/serialdef.hpp>
  43. #include <util/lightstr.hpp>
  44. #include <list>
  45. #include <map>
  46. #include <memory>
  47. /** @addtogroup TypeInfoCPP
  48.  *
  49.  * @{
  50.  */
  51. BEGIN_NCBI_SCOPE
  52. class NCBI_XSERIAL_EXPORT CEnumeratedTypeValues
  53. {
  54. public:
  55.     typedef list< pair<string, TEnumValueType> > TValues;
  56.     typedef map<CLightString, TEnumValueType> TNameToValue;
  57.     typedef map<TEnumValueType, const string*> TValueToName;
  58.     CEnumeratedTypeValues(const char* name, bool isInteger);
  59.     CEnumeratedTypeValues(const string& name, bool isInteger);
  60.     ~CEnumeratedTypeValues(void);
  61.     const string& GetName(void) const
  62.         {
  63.             return m_Name;
  64.         }
  65.     const string& GetModuleName(void) const
  66.         {
  67.             return m_ModuleName;
  68.         }
  69.     void SetModuleName(const string& name);
  70.     bool IsInteger(void) const
  71.         {
  72.             return m_Integer;
  73.         }
  74.     const TValues& GetValues(void) const
  75.         {
  76.             return m_Values;
  77.         }
  78.     void AddValue(const string& name, TEnumValueType value);
  79.     void AddValue(const char* name, TEnumValueType value);
  80.     // returns value of enum element, if found
  81.     // otherwise, throws exception
  82.     TEnumValueType FindValue(const CLightString& name) const;
  83.     // returns name of enum element, if found
  84.     // otherwise, if (allowBadValue == true) returns empty string,
  85.     // otherwise, throws exception
  86.     const string& FindName(TEnumValueType value, bool allowBadValue) const;
  87.     const TNameToValue& NameToValue(void) const;
  88.     const TValueToName& ValueToName(void) const;
  89. private:
  90.     string m_Name;
  91.     string m_ModuleName;
  92.     bool m_Integer;
  93.     TValues m_Values;
  94.     mutable auto_ptr<TNameToValue> m_NameToValue;
  95.     mutable auto_ptr<TValueToName> m_ValueToName;
  96. };
  97. /* @} */
  98. //#include <serial/enumvalues.inl>
  99. END_NCBI_SCOPE
  100. #endif  /* ENUMVALUES__HPP */
  101. /* ---------------------------------------------------------------------------
  102. * $Log: enumvalues.hpp,v $
  103. * Revision 1000.1  2004/06/01 19:38:32  gouriano
  104. * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.10
  105. *
  106. * Revision 1.10  2004/05/24 15:12:10  gouriano
  107. * added method to acces list of values in CEnumeratedTypeValues
  108. *
  109. * Revision 1.9  2004/04/30 13:28:39  gouriano
  110. * Remove obsolete function declarations
  111. *
  112. * Revision 1.8  2003/04/15 14:15:10  siyan
  113. * Added doxygen support
  114. *
  115. * Revision 1.7  2002/12/23 18:38:51  dicuccio
  116. * Added WIn32 export specifier: NCBI_XSERIAL_EXPORT.
  117. * Moved all CVS logs to the end.
  118. *
  119. * Revision 1.6  2001/01/05 20:10:34  vasilche
  120. * CByteSource, CIStrBuffer, COStrBuffer, CLightString, CChecksum, CWeakMap
  121. * were moved to util.
  122. *
  123. * Revision 1.5  2000/12/15 15:37:59  vasilche
  124. * Added support of Int8 and long double.
  125. * Enum values now have type Int4 instead of long.
  126. *
  127. * Revision 1.4  2000/11/07 17:25:11  vasilche
  128. * Fixed encoding of XML:
  129. *     removed unnecessary apostrophes in OCTET STRING
  130. *     removed unnecessary content in NULL
  131. * Added module names to CTypeInfo and CEnumeratedTypeValues
  132. *
  133. * Revision 1.3  2000/09/18 20:00:01  vasilche
  134. * Separated CVariantInfo and CMemberInfo.
  135. * Implemented copy hooks.
  136. * All hooks now are stored in CTypeInfo/CMemberInfo/CVariantInfo.
  137. * Most type specific functions now are implemented via function pointers instead of virtual functions.
  138. *
  139. * Revision 1.2  2000/06/01 19:06:55  vasilche
  140. * Added parsing of XML data.
  141. *
  142. * Revision 1.1  2000/05/24 20:08:12  vasilche
  143. * Implemented XML dump.
  144. *
  145. * ===========================================================================
  146. */