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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: memberid.hpp,v $
  4.  * PRODUCTION Revision 1000.0  2003/10/29 17:23:50  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.18
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef MEMBERID__HPP
  10. #define MEMBERID__HPP
  11. /*  $Id: memberid.hpp,v 1000.0 2003/10/29 17:23:50 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. /** @addtogroup FieldsComplex
  43.  *
  44.  * @{
  45.  */
  46. BEGIN_NCBI_SCOPE
  47. // CMemberId class holds information about logical object member access:
  48. //     name and/or tag (ASN.1)
  49. // default value of name is empty string
  50. // default value of tag is eNoExplicitTag
  51. class NCBI_XSERIAL_EXPORT CMemberId {
  52. public:
  53.     typedef int TTag;
  54.     enum {
  55.         eNoExplicitTag = -1,
  56.         eParentTag = 30,
  57.         eFirstTag = 0
  58.     };
  59.     CMemberId(void);
  60.     CMemberId(TTag tag, bool explicitTag = true);
  61.     CMemberId(const string& name);
  62.     CMemberId(const string& name, TTag tag, bool explicitTag = true);
  63.     CMemberId(const char* name);
  64.     CMemberId(const char* name, TTag tag, bool explicitTag = true);
  65.     ~CMemberId(void);
  66.     const string& GetName(void) const;     // ASN.1 tag name
  67.     TTag GetTag(void) const;               // ASN.1 effective binary tag value
  68.     bool HaveExplicitTag(void) const;      // ASN.1 explicit binary tag value
  69.     void SetName(const string& name);
  70.     void SetTag(TTag tag, bool explicitTag = true);
  71.     bool HaveParentTag(void) const;
  72.     void SetParentTag(void);
  73.     // return visible representation of CMemberId (as in ASN.1)
  74.     string ToString(void) const;
  75.     void SetNoPrefix(void);
  76.     bool HaveNoPrefix(void) const;
  77.     void SetAttlist(void);
  78.     bool IsAttlist(void) const;
  79.     void SetNotag(void);
  80.     bool HasNotag(void) const;
  81.     void SetAnyContent(void);
  82.     bool HasAnyContent(void) const;
  83. private:
  84.     // identification
  85.     string m_Name;
  86.     TTag m_Tag;
  87.     bool m_ExplicitTag;
  88.     bool m_NoPrefix;
  89.     bool m_Attlist;
  90.     bool m_Notag;
  91.     bool m_AnyContent;
  92. };
  93. /* @} */
  94. #include <serial/memberid.inl>
  95. END_NCBI_SCOPE
  96. #endif  /* MEMBERID__HPP */
  97. /* ---------------------------------------------------------------------------
  98. * $Log: memberid.hpp,v $
  99. * Revision 1000.0  2003/10/29 17:23:50  gouriano
  100. * PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.18
  101. *
  102. * Revision 1.18  2003/09/16 14:49:15  gouriano
  103. * Enhanced AnyContent objects to support XML namespaces and attribute info items.
  104. *
  105. * Revision 1.17  2003/04/15 14:15:24  siyan
  106. * Added doxygen support
  107. *
  108. * Revision 1.16  2002/12/23 18:38:51  dicuccio
  109. * Added WIn32 export specifier: NCBI_XSERIAL_EXPORT.
  110. * Moved all CVS logs to the end.
  111. *
  112. * Revision 1.15  2002/11/14 20:49:01  gouriano
  113. * added Attlist and Notag flags
  114. *
  115. * Revision 1.14  2002/09/25 19:38:25  gouriano
  116. * added the possibility of having no tag prefix in XML I/O streams
  117. *
  118. * Revision 1.13  2000/10/03 17:22:32  vasilche
  119. * Reduced header dependency.
  120. * Reduced size of debug libraries on WorkShop by 3 times.
  121. * Fixed tag allocation for parent classes.
  122. * Fixed CObject allocation/deallocation in streams.
  123. * Moved instantiation of several templates in separate source file.
  124. *
  125. * Revision 1.12  2000/09/01 13:15:59  vasilche
  126. * Implemented class/container/choice iterators.
  127. * Implemented CObjectStreamCopier for copying data without loading into memory.
  128. *
  129. * Revision 1.11  2000/08/15 19:44:39  vasilche
  130. * Added Read/Write hooks:
  131. * CReadObjectHook/CWriteObjectHook for objects of specified type.
  132. * CReadClassMemberHook/CWriteClassMemberHook for specified members.
  133. * CReadChoiceVariantHook/CWriteChoiceVariant for specified choice variants.
  134. * CReadContainerElementHook/CWriteContainerElementsHook for containers.
  135. *
  136. * Revision 1.10  2000/07/03 18:42:34  vasilche
  137. * Added interface to typeinfo via CObjectInfo and CConstObjectInfo.
  138. * Reduced header dependency.
  139. *
  140. * Revision 1.9  2000/06/16 16:31:05  vasilche
  141. * Changed implementation of choices and classes info to allow use of the same classes in generated and user written classes.
  142. *
  143. * Revision 1.8  2000/05/24 20:08:12  vasilche
  144. * Implemented XML dump.
  145. *
  146. * Revision 1.7  2000/05/09 16:38:32  vasilche
  147. * CObject::GetTypeInfo now moved to CObjectGetTypeInfo::GetTypeInfo to reduce possible errors.
  148. * Added write context to CObjectOStream.
  149. * Inlined most of methods of helping class Member, Block, ByteBlock etc.
  150. *
  151. * Revision 1.6  2000/01/05 19:43:43  vasilche
  152. * Fixed error messages when reading from ASN.1 binary file.
  153. * Fixed storing of integers with enumerated values in ASN.1 binary file.
  154. * Added TAG support to key/value of map.
  155. * Added support of NULL variant in CHOICE.
  156. *
  157. * Revision 1.5  1999/12/17 19:04:52  vasilche
  158. * Simplified generation of GetTypeInfo methods.
  159. *
  160. * Revision 1.4  1999/09/22 20:11:48  vasilche
  161. * Modified for compilation on IRIX native c++ compiler.
  162. *
  163. * Revision 1.3  1999/07/13 20:18:05  vasilche
  164. * Changed types naming.
  165. *
  166. * Revision 1.2  1999/07/02 21:31:43  vasilche
  167. * Implemented reading from ASN.1 binary format.
  168. *
  169. * Revision 1.1  1999/06/30 16:04:23  vasilche
  170. * Added support for old ASN.1 structures.
  171. *
  172. * ===========================================================================
  173. */