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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: objostrxml.inl,v $
  4.  * PRODUCTION Revision 1000.0  2003/10/29 17:28:14  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.11
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #if defined(OBJOSTRXML__HPP)  &&  !defined(OBJOSTRXML__INL)
  10. #define OBJOSTRXML__INL
  11. /*  $Id: objostrxml.inl,v 1000.0 2003/10/29 17:28:14 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. inline
  42. void CObjectOStreamXml::OpenStackTag(size_t level)
  43. {
  44.     OpenTagStart();
  45.     PrintTagName(level);
  46.     OpenTagEnd();
  47. }
  48. inline
  49. void CObjectOStreamXml::CloseStackTag(size_t level)
  50. {
  51.     if ( m_LastTagAction == eTagSelfClosed ) {
  52.         m_LastTagAction = eTagClose;
  53.     } else if ( m_LastTagAction == eAttlistTag ) { 
  54.         m_Output.PutChar('"');
  55.         m_LastTagAction = eTagOpen;
  56.     } else {
  57.         CloseTagStart();
  58.         PrintTagName(level);
  59.         CloseTagEnd();
  60.     }
  61. }
  62. inline
  63. void CObjectOStreamXml::OpenTag(const string& name)
  64. {
  65.     OpenTagStart();
  66.     WriteTag(name);
  67. #if defined(NCBI_SERIAL_IO_TRACE)
  68.     TraceTag(name);
  69. #endif
  70.     OpenTagEnd();
  71. }
  72. inline
  73. void CObjectOStreamXml::CloseTag(const string& name)
  74. {
  75.     if ( m_LastTagAction == eTagSelfClosed ) {
  76.         m_LastTagAction = eTagClose;
  77.     } else {
  78.         CloseTagStart();
  79.         WriteTag(name);
  80. #if defined(NCBI_SERIAL_IO_TRACE)
  81.     TraceTag(name);
  82. #endif
  83.         CloseTagEnd();
  84.     }
  85. }
  86. inline
  87. void CObjectOStreamXml::OpenTag(TTypeInfo type)
  88. {
  89.     _ASSERT(!type->GetName().empty());
  90.     OpenTag(type->GetName());
  91. }
  92. inline
  93. void CObjectOStreamXml::CloseTag(TTypeInfo type)
  94. {
  95.     _ASSERT(!type->GetName().empty());
  96.     CloseTag(type->GetName());
  97. }
  98. inline
  99. void CObjectOStreamXml::OpenTagIfNamed(TTypeInfo type)
  100. {
  101.     if ( !type->GetName().empty() )
  102.         OpenTag(type->GetName());
  103. }
  104. inline
  105. void CObjectOStreamXml::CloseTagIfNamed(TTypeInfo type)
  106. {
  107.     if ( !type->GetName().empty() )
  108.         CloseTag(type->GetName());
  109. }
  110. inline
  111. void CObjectOStreamXml::SetDTDFilePrefix(const string& prefix)
  112. {
  113.     m_DTDFilePrefix = prefix;
  114.     m_UseDefaultDTDFilePrefix = false;
  115. }
  116. inline
  117. void CObjectOStreamXml::SetDTDFileName(const string& filename)
  118. {
  119.     m_DTDFileName = filename;
  120. }
  121. inline
  122. string CObjectOStreamXml::GetDTDFilePrefix(void) const
  123. {
  124.     if ( !m_UseDefaultDTDFilePrefix ) {
  125.         return m_DTDFilePrefix;
  126.     }
  127.     else {
  128.         return sm_DefaultDTDFilePrefix;
  129.     }
  130. }
  131. inline
  132. string CObjectOStreamXml::GetDTDFileName(void) const
  133. {
  134.     return m_DTDFileName;
  135. }
  136. inline
  137. void CObjectOStreamXml::SetDefaultDTDFilePrefix(const string& def_prefix)
  138. {
  139.     sm_DefaultDTDFilePrefix = def_prefix;
  140. }
  141. inline
  142. string CObjectOStreamXml::GetDefaultDTDFilePrefix(void)
  143. {
  144.     return sm_DefaultDTDFilePrefix;
  145. }
  146. inline
  147. void CObjectOStreamXml::EnableDTDPublicId(void)
  148. {
  149.     m_UsePublicId = true;
  150. }
  151. inline
  152. void CObjectOStreamXml::DisableDTDPublicId(void)
  153. {
  154.     m_UsePublicId = false;
  155. }
  156. inline
  157. void CObjectOStreamXml::SetDTDPublicId(const string& publicId)
  158. {
  159.     m_PublicId = publicId;
  160. }
  161. inline
  162. string CObjectOStreamXml::GetDTDPublicId(void) const
  163. {
  164.     return m_PublicId;
  165. }
  166. inline
  167. void  CObjectOStreamXml::SetDefaultSchemaNamespace(const string& schema_ns)
  168. {
  169.     sm_DefaultSchemaNamespace = schema_ns;
  170. }
  171. inline
  172. string CObjectOStreamXml::GetDefaultSchemaNamespace(void)
  173. {
  174.     return sm_DefaultSchemaNamespace;
  175. }
  176. #endif /* def OBJOSTRXML__HPP  &&  ndef OBJOSTRXML__INL */
  177. /* ---------------------------------------------------------------------------
  178. * $Log: objostrxml.inl,v $
  179. * Revision 1000.0  2003/10/29 17:28:14  gouriano
  180. * PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.11
  181. *
  182. * Revision 1.11  2003/08/25 15:58:32  gouriano
  183. * added possibility to use namespaces in XML i/o streams
  184. *
  185. * Revision 1.10  2003/07/02 13:01:00  gouriano
  186. * added ability to read/write XML files with reference to schema
  187. *
  188. * Revision 1.9  2003/01/10 16:53:36  gouriano
  189. * fixed a bug with optional class members
  190. *
  191. * Revision 1.8  2002/12/23 18:38:51  dicuccio
  192. * Added WIn32 export specifier: NCBI_XSERIAL_EXPORT.
  193. * Moved all CVS logs to the end.
  194. *
  195. * Revision 1.7  2002/12/12 21:10:26  gouriano
  196. * implemented handling of complex XML containers
  197. *
  198. * Revision 1.6  2002/11/14 20:52:55  gouriano
  199. * added support of attribute lists
  200. *
  201. * Revision 1.5  2002/10/18 14:25:51  gouriano
  202. * added possibility to enable/disable/set public identifier
  203. *
  204. * Revision 1.4  2001/11/09 19:07:22  grichenk
  205. * Fixed DTDFilePrefix functions
  206. *
  207. * Revision 1.3  2001/10/17 18:18:28  grichenk
  208. * Added CObjectOStreamXml::xxxFilePrefix() and
  209. * CObjectOStreamXml::xxxFileName()
  210. *
  211. * Revision 1.2  2000/11/07 17:25:12  vasilche
  212. * Fixed encoding of XML:
  213. *     removed unnecessary apostrophes in OCTET STRING
  214. *     removed unnecessary content in NULL
  215. * Added module names to CTypeInfo and CEnumeratedTypeValues
  216. *
  217. * Revision 1.1  2000/09/18 20:00:07  vasilche
  218. * Separated CVariantInfo and CMemberInfo.
  219. * Implemented copy hooks.
  220. * All hooks now are stored in CTypeInfo/CMemberInfo/CVariantInfo.
  221. * Most type specific functions now are implemented via function pointers instead of virtual functions.
  222. *
  223. * ===========================================================================
  224. */