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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: objcopy.inl,v $
  4.  * PRODUCTION Revision 1000.0  2003/10/29 17:24:30  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.10
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #if defined(OBJCOPY__HPP)  &&  !defined(OBJCOPY__INL)
  10. #define OBJCOPY__INL
  11. /*  $Id: objcopy.inl,v 1000.0 2003/10/29 17:24:30 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. CObjectIStream& CObjectStreamCopier::In(void) const
  43. {
  44.     return m_In;
  45. }
  46. inline
  47. CObjectOStream& CObjectStreamCopier::Out(void) const
  48. {
  49.     return m_Out;
  50. }
  51. inline
  52. void CObjectStreamCopier::CopyObject(TTypeInfo type)
  53. {
  54.     Out().CopyObject(type, *this);
  55. }
  56. inline
  57. void CObjectStreamCopier::ThrowError1(const char* file, int line,
  58.                                       TFailFlags flags,
  59.                                       const char* message)
  60. {
  61.     Out().SetFailFlagsNoError(CObjectOStream::fInvalidData);
  62.     In().ThrowError1(file, line, flags, message);
  63. }
  64. inline
  65. void CObjectStreamCopier::ThrowError1(const char* file, int line,
  66.                                       TFailFlags flags,
  67.                                       const string& message)
  68. {
  69.     Out().SetFailFlagsNoError(CObjectOStream::fInvalidData);
  70.     In().ThrowError1(file, line, flags, message);
  71. }
  72. inline
  73. void CObjectStreamCopier::ExpectedMember(const CMemberInfo* memberInfo)
  74. {
  75.     Out().SetFailFlagsNoError(CObjectOStream::fInvalidData);
  76.     In().ExpectedMember(memberInfo);
  77. }
  78. inline
  79. void CObjectStreamCopier::DuplicatedMember(const CMemberInfo* memberInfo)
  80. {
  81.     Out().SetFailFlagsNoError(CObjectOStream::fInvalidData);
  82.     In().DuplicatedMember(memberInfo);
  83. }
  84. inline
  85. void CObjectStreamCopier::CopyExternalObject(TTypeInfo type)
  86. {
  87.     In().RegisterObject(type);
  88.     Out().RegisterObject(type);
  89.     CopyObject(type);
  90. }
  91. inline
  92. void CObjectStreamCopier::CopyString(void)
  93. {
  94.     Out().CopyString(In());
  95. }
  96. inline
  97. void CObjectStreamCopier::CopyStringStore(void)
  98. {
  99.     Out().CopyStringStore(In());
  100. }
  101. inline
  102. void CObjectStreamCopier::CopyAnyContentObject(void)
  103. {
  104.     Out().CopyAnyContentObject(In());
  105. }
  106. inline
  107. void CObjectStreamCopier::CopyNamedType(TTypeInfo namedTypeInfo,
  108.                                         TTypeInfo objectType)
  109. {
  110.     Out().CopyNamedType(namedTypeInfo, objectType, *this);
  111. }
  112. inline
  113. void CObjectStreamCopier::CopyContainer(const CContainerTypeInfo* cType)
  114. {
  115.     Out().CopyContainer(cType, *this);
  116. }
  117. inline
  118. void CObjectStreamCopier::CopyClassRandom(const CClassTypeInfo* classType)
  119. {
  120.     Out().CopyClassRandom(classType, *this);
  121. }
  122. inline
  123. void CObjectStreamCopier::CopyClassSequential(const CClassTypeInfo* classType)
  124. {
  125.     Out().CopyClassSequential(classType, *this);
  126. }
  127. inline
  128. void CObjectStreamCopier::CopyChoice(const CChoiceTypeInfo* choiceType)
  129. {
  130.     Out().CopyChoice(choiceType, *this);
  131. }
  132. inline
  133. void CObjectStreamCopier::CopyAlias(const CAliasTypeInfo* aliasType)
  134. {
  135.     Out().CopyAlias(aliasType, *this);
  136. }
  137. #endif /* def OBJCOPY__HPP  &&  ndef OBJCOPY__INL */
  138. /* ---------------------------------------------------------------------------
  139. * $Log: objcopy.inl,v $
  140. * Revision 1000.0  2003/10/29 17:24:30  gouriano
  141. * PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.10
  142. *
  143. * Revision 1.10  2003/10/21 21:08:45  grichenk
  144. * Fixed aliases-related bug in XML stream
  145. *
  146. * Revision 1.9  2003/08/13 15:47:02  gouriano
  147. * implemented serialization of AnyContent objects
  148. *
  149. * Revision 1.8  2003/03/10 18:52:37  gouriano
  150. * use new structured exceptions (based on CException)
  151. *
  152. * Revision 1.7  2002/12/23 18:38:51  dicuccio
  153. * Added WIn32 export specifier: NCBI_XSERIAL_EXPORT.
  154. * Moved all CVS logs to the end.
  155. *
  156. * Revision 1.6  2002/10/25 14:49:29  vasilche
  157. * NCBI C Toolkit compatibility code extracted to libxcser library.
  158. * Serial streams flags names were renamed to fXxx.
  159. *
  160. * Names of flags
  161. *
  162. * Revision 1.5  2001/05/17 14:57:00  lavr
  163. * Typos corrected
  164. *
  165. * Revision 1.4  2000/10/20 15:51:23  vasilche
  166. * Fixed data error processing.
  167. * Added interface for constructing container objects directly into output stream.
  168. * object.hpp, object.inl and object.cpp were split to
  169. * objectinfo.*, objecttype.*, objectiter.* and objectio.*.
  170. *
  171. * Revision 1.3  2000/09/29 16:18:13  vasilche
  172. * Fixed binary format encoding/decoding on 64 bit compulers.
  173. * Implemented CWeakMap<> for automatic cleaning map entries.
  174. * Added cleaning local hooks via CWeakMap<>.
  175. * Renamed ReadTypeName -> ReadFileHeader, ENoTypeName -> ENoFileHeader.
  176. * Added some user interface methods to CObjectIStream, CObjectOStream and
  177. * CObjectStreamCopier.
  178. *
  179. * Revision 1.2  2000/09/18 20:00:04  vasilche
  180. * Separated CVariantInfo and CMemberInfo.
  181. * Implemented copy hooks.
  182. * All hooks now are stored in CTypeInfo/CMemberInfo/CVariantInfo.
  183. * Most type specific functions now are implemented via function pointers instead of virtual functions.
  184. *
  185. * Revision 1.1  2000/09/01 13:15:59  vasilche
  186. * Implemented class/container/choice iterators.
  187. * Implemented CObjectStreamCopier for copying data without loading into memory.
  188. *
  189. * ===========================================================================
  190. */