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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: objistrasnb.inl,v $
  4.  * PRODUCTION Revision 1000.0  2003/10/29 17:26:31  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.4
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #if defined(OBJISTRASNB__HPP)  &&  !defined(OBJISTRASNB__INL)
  10. #define OBJISTRASNB__INL
  11. /*  $Id: objistrasnb.inl,v 1000.0 2003/10/29 17:26:31 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. #if !CHECK_STREAM_INTEGRITY
  42. inline
  43. Uint1
  44. CObjectIStreamAsnBinary::PeekTagByte(size_t index)
  45. {
  46.     return static_cast<Uint1>(m_Input.PeekChar(index));
  47. }
  48. inline
  49. Uint1
  50. CObjectIStreamAsnBinary::StartTag(void)
  51. {
  52.     return PeekTagByte();
  53. }
  54. inline
  55. Uint1 CObjectIStreamAsnBinary::FlushTag(void)
  56. {
  57.     m_Input.SkipChars(m_CurrentTagLength);
  58.     return static_cast<Uint1>(m_Input.GetChar());
  59. }
  60. inline
  61. bool CObjectIStreamAsnBinary::PeekIndefiniteLength(void)
  62. {
  63.     return Uint1(m_Input.PeekChar(m_CurrentTagLength)) == 0x80;
  64. }
  65. inline
  66. void CObjectIStreamAsnBinary::ExpectIndefiniteLength(void)
  67. {
  68.     if ( FlushTag() != 0x80 )
  69.         ThrowError(eFormatError, "indefinite length is expected");
  70. }
  71. inline
  72. size_t CObjectIStreamAsnBinary::StartTagData(size_t length)
  73. {
  74.     return length;
  75. }
  76. #endif
  77. inline
  78. void CObjectIStreamAsnBinary::ExpectSysTag(EClass c, bool constructed,
  79.                                            ETag tag)
  80. {
  81.     _ASSERT(tag != CObjectStreamAsnBinaryDefs::eLongTag);
  82.     if ( StartTag() != CObjectStreamAsnBinaryDefs::MakeTagByte(c,
  83.                                                                constructed,
  84.                                                                tag) )
  85.         UnexpectedTag(tag);
  86.     m_CurrentTagLength = 1;
  87. #if CHECK_STREAM_INTEGRITY
  88.     m_CurrentTagState = eTagParsed;
  89. #endif
  90. }
  91. inline
  92. void CObjectIStreamAsnBinary::ExpectSysTag(ETag tag)
  93. {
  94.     ExpectSysTag(CObjectStreamAsnBinaryDefs::eUniversal, false, tag);
  95. }
  96. #if !CHECK_STREAM_INTEGRITY
  97. inline
  98. void CObjectIStreamAsnBinary::EndOfTag(void)
  99. {
  100. }
  101. inline
  102. void CObjectIStreamAsnBinary::ExpectEndOfContent(void)
  103. {
  104.     ExpectSysTag(CObjectStreamAsnBinaryDefs::eNone);
  105.     if ( FlushTag() != 0 )
  106.         ThrowError(eFormatError, "zero length expected");
  107. }
  108. inline
  109. Uint1 CObjectIStreamAsnBinary::ReadByte(void)
  110. {
  111.     return static_cast<Uint1>(m_Input.GetChar());
  112. }
  113. #endif
  114. inline
  115. Int1 CObjectIStreamAsnBinary::ReadSByte(void)
  116. {
  117.     return static_cast<Int1>(ReadByte());
  118. }
  119. inline
  120. void CObjectIStreamAsnBinary::ExpectByte(Uint1 byte)
  121. {
  122.     if ( ReadByte() != byte )
  123.         UnexpectedByte(byte);
  124. }
  125. inline
  126. bool CObjectIStreamAsnBinary::HaveMoreElements(void)
  127. {
  128.     return PeekTagByte() != CObjectStreamAsnBinaryDefs::eEndOfContentsByte;
  129. }
  130. #endif /* def OBJISTRASNB__HPP  &&  ndef OBJISTRASNB__INL */
  131. /* ---------------------------------------------------------------------------
  132. * $Log: objistrasnb.inl,v $
  133. * Revision 1000.0  2003/10/29 17:26:31  gouriano
  134. * PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.4
  135. *
  136. * Revision 1.4  2002/12/23 18:38:51  dicuccio
  137. * Added WIn32 export specifier: NCBI_XSERIAL_EXPORT.
  138. * Moved all CVS logs to the end.
  139. *
  140. * Revision 1.3  2001/08/15 20:53:02  juran
  141. * Heed warnings.
  142. *
  143. * Revision 1.2  2000/12/15 21:28:47  vasilche
  144. * Moved some typedefs/enums from corelib/ncbistd.hpp.
  145. * Added flags to CObjectIStream/CObjectOStream: eFlagAllowNonAsciiChars.
  146. * TByte typedef replaced by Uint1.
  147. *
  148. * Revision 1.1  2000/09/18 20:00:05  vasilche
  149. * Separated CVariantInfo and CMemberInfo.
  150. * Implemented copy hooks.
  151. * All hooks now are stored in CTypeInfo/CMemberInfo/CVariantInfo.
  152. * Most type specific functions now are implemented via function pointers instead of virtual functions.
  153. *
  154. * ===========================================================================
  155. */