⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 objistr.inl

📁 ncbi源码
💻 INL
字号:
/* * =========================================================================== * PRODUCTION $Log: objistr.inl,v $ * PRODUCTION Revision 1000.4  2004/04/12 17:15:04  gouriano * PRODUCTION PRODUCTION: UPGRADED [CATCHUP_003] Dev-tree R1.30 * PRODUCTION * =========================================================================== */#if defined(OBJISTR__HPP)  &&  !defined(OBJISTR__INL)#define OBJISTR__INL/*  $Id: objistr.inl,v 1000.4 2004/04/12 17:15:04 gouriano Exp $* ===========================================================================**                            PUBLIC DOMAIN NOTICE*               National Center for Biotechnology Information**  This software/database is a "United States Government Work" under the*  terms of the United States Copyright Act.  It was written as part of*  the author's official duties as a United States Government employee and*  thus cannot be copyrighted.  This software/database is freely available*  to the public for use. The National Library of Medicine and the U.S.*  Government have not placed any restriction on its use or reproduction.**  Although all reasonable efforts have been taken to ensure the accuracy*  and reliability of the software and data, the NLM and the U.S.*  Government do not and cannot warrant the performance or results that*  may be obtained by using this software or data. The NLM and the U.S.*  Government disclaim all warranties, express or implied, including*  warranties of performance, merchantability or fitness for any particular*  purpose.**  Please cite the author in any work or product based on this material.** ===========================================================================** Author: Eugene Vasilchenko** File Description:*   !!! PUT YOUR DESCRIPTION HERE !!!*/inlineESerialDataFormat CObjectIStream::GetDataFormat(void) const{    return m_DataFormat;}inlineCObjectIStream* CObjectIStream::Open(const string& fileName,                                     ESerialDataFormat format){    return Open(format, fileName);}inlineCObjectIStream::TFailFlags CObjectIStream::GetFailFlags(void) const{    return m_Fail;}inlinebool CObjectIStream::fail(void) const{    return GetFailFlags() != 0;}inlineCObjectIStream::TFailFlags CObjectIStream::ClearFailFlags(TFailFlags flags){    TFailFlags old = GetFailFlags();    m_Fail &= ~flags;    return old;}inlineCObjectIStream::TFlags CObjectIStream::GetFlags(void) const{    return m_Flags;}inlineCObjectIStream::TFlags CObjectIStream::SetFlags(TFlags flags){    TFlags old = GetFlags();    m_Flags |= flags;    return old;}inlineCObjectIStream::TFlags CObjectIStream::ClearFlags(TFlags flags){    TFlags old = GetFlags();    m_Flags &= ~flags;    return old;}inlinevoid CObjectIStream::ReadObject(TObjectPtr object, TTypeInfo typeInfo){    typeInfo->ReadData(*this, object);}inlinevoid CObjectIStream::SkipObject(TTypeInfo typeInfo){    typeInfo->SkipData(*this);}inlinebool CObjectIStream::DetectLoops(void) const{    return m_Objects;}inlineCObjectIStream& CObjectIStream::ByteBlock::GetStream(void) const{    return m_Stream;}inlinebool CObjectIStream::ByteBlock::KnownLength(void) const{    return m_KnownLength;}inlinesize_t CObjectIStream::ByteBlock::GetExpectedLength(void) const{    return m_Length;}inlinevoid CObjectIStream::ByteBlock::SetLength(size_t length){    m_Length = length;    m_KnownLength = true;}inlinevoid CObjectIStream::ByteBlock::EndOfBlock(void){    _ASSERT(!KnownLength());    m_Length = 0;}inlineCObjectIStream& CObjectIStream::CharBlock::GetStream(void) const{    return m_Stream;}inlinebool CObjectIStream::CharBlock::KnownLength(void) const{    return m_KnownLength;}inlinesize_t CObjectIStream::CharBlock::GetExpectedLength(void) const{    return m_Length;}inlinevoid CObjectIStream::CharBlock::SetLength(size_t length){    m_Length = length;    m_KnownLength = true;}inlinevoid CObjectIStream::CharBlock::EndOfBlock(void){    _ASSERT(!KnownLength());    m_Length = 0;}// standard readers// boolinlinevoid CObjectIStream::ReadStd(bool& data){    data = ReadBool();}inlinevoid CObjectIStream::SkipStd(const bool &){    SkipBool();}// charinlinevoid CObjectIStream::ReadStd(char& data){    data = ReadChar();}inlinevoid CObjectIStream::SkipStd(const char& ){    SkipChar();}// integer numbers#if SIZEOF_CHAR == 1inlinevoid CObjectIStream::ReadStd(signed char& data){    data = ReadInt1();}inlinevoid CObjectIStream::ReadStd(unsigned char& data){    data = ReadUint1();}inlinevoid CObjectIStream::SkipStd(const signed char& ){    SkipInt1();}inlinevoid CObjectIStream::SkipStd(const unsigned char& ){    SkipUint1();}#else#  error Unsupported size of char - must be 1#endif#if SIZEOF_SHORT == 2inlinevoid CObjectIStream::ReadStd(short& data){    data = ReadInt2();}inlinevoid CObjectIStream::ReadStd(unsigned short& data){    data = ReadUint2();}inlinevoid CObjectIStream::SkipStd(const short& ){    SkipInt2();}inlinevoid CObjectIStream::SkipStd(const unsigned short& ){    SkipUint2();}#else#  error Unsupported size of short - must be 2#endif#if SIZEOF_INT == 4inlinevoid CObjectIStream::ReadStd(int& data){    data = ReadInt4();}inlinevoid CObjectIStream::ReadStd(unsigned& data){    data = ReadUint4();}inlinevoid CObjectIStream::SkipStd(const int& ){    SkipInt4();}inlinevoid CObjectIStream::SkipStd(const unsigned& ){    SkipUint4();}#else#  error Unsupported size of int - must be 4#endif#if SIZEOF_LONG == 4inlinevoid CObjectIStream::ReadStd(long& data){    data = ReadInt4();}inlinevoid CObjectIStream::ReadStd(unsigned long& data){    data = ReadUint4();}inlinevoid CObjectIStream::SkipStd(const long& ){    SkipInt4();}inlinevoid CObjectIStream::SkipStd(const unsigned long& ){    SkipUint4();}#endifinlinevoid CObjectIStream::ReadStd(Int8& data){    data = ReadInt8();}inlinevoid CObjectIStream::ReadStd(Uint8& data){    data = ReadUint8();}inlinevoid CObjectIStream::SkipStd(const Int8& ){    SkipInt8();}inlinevoid CObjectIStream::SkipStd(const Uint8& ){    SkipUint8();}// float numbersinlinevoid CObjectIStream::ReadStd(float& data){    data = ReadFloat();}inlinevoid CObjectIStream::ReadStd(double& data){    data = ReadDouble();}inlinevoid CObjectIStream::SkipStd(const float& ){    SkipFloat();}inlinevoid CObjectIStream::SkipStd(const double& ){    SkipDouble();}#if SIZEOF_LONG_DOUBLE != 0inlinevoid CObjectIStream::ReadStd(long double& data){    data = ReadLDouble();}inlinevoid CObjectIStream::SkipStd(const long double& ){    SkipLDouble();}#endif// stringinlinevoid CObjectIStream::ReadStd(string& data){    ReadString(data);}inlinevoid CObjectIStream::SkipStd(const string& ){    SkipString();}inlinevoid CObjectIStream::ReadStd(CStringUTF8& data){    ReadString(data, eStringTypeUTF8);}inlinevoid CObjectIStream::SkipStd(CStringUTF8& ){    SkipString(eStringTypeUTF8);}// C stringinlinevoid CObjectIStream::ReadStd(char* & data){    data = ReadCString();}inlinevoid CObjectIStream::ReadStd(const char* & data){    data = ReadCString();}inlinevoid CObjectIStream::SkipStd(char* const& ){    SkipCString();}inlinevoid CObjectIStream::SkipStd(const char* const& ){    SkipCString();}inlinebool GoodVisibleChar(char c){    return c >= ' ' && c <= '~';}inlinevoid FixVisibleChar(char& c, EFixNonPrint fix_method, size_t at_line){    if ( !GoodVisibleChar(c) ) {        c = ReplaceVisibleChar(c, fix_method, at_line);    }}inlinevoid CObjectIStream::SetVerifyData(ESerialVerifyData verify){    if (m_VerifyData == eSerialVerifyData_Never ||        m_VerifyData == eSerialVerifyData_Always ||        m_VerifyData == eSerialVerifyData_DefValueAlways) {        return;    }    m_VerifyData = (verify == eSerialVerifyData_Default) ?                   x_GetVerifyDataDefault() : verify;}inlineESerialVerifyData CObjectIStream::GetVerifyData(void) const{    switch (m_VerifyData) {    default:        break;    case eSerialVerifyData_No:    case eSerialVerifyData_Never:        return eSerialVerifyData_No;    case eSerialVerifyData_Yes:    case eSerialVerifyData_Always:        return eSerialVerifyData_Yes;    case eSerialVerifyData_DefValue:    case eSerialVerifyData_DefValueAlways:        return eSerialVerifyData_DefValue;    }    return ms_VerifyDataDefault;}inlinevoid CObjectIStream::SetSkipUnknownMembers(ESerialSkipUnknown skip){    if (m_SkipUnknown == eSerialSkipUnknown_Never ||        m_SkipUnknown == eSerialSkipUnknown_Always) {        return;    }    m_SkipUnknown = (skip == eSerialSkipUnknown_Default) ?                    x_GetSkipUnknownDefault() : skip;}inlineESerialSkipUnknown CObjectIStream::GetSkipUnknownMembers(void){    switch (m_SkipUnknown) {    default:        break;    case eSerialSkipUnknown_No:    case eSerialSkipUnknown_Never:        return eSerialSkipUnknown_No;    case eSerialSkipUnknown_Yes:    case eSerialSkipUnknown_Always:        return eSerialSkipUnknown_Yes;    }    return ms_SkipUnknownDefault;}inlinebool CObjectIStream::HaveMoreData(void){    return m_Input.PeekChar() != EOF;}inlineCStreamDelayBufferGuard::CStreamDelayBufferGuard(CObjectIStream& istr)     : m_ObjectIStream(&istr) {    istr.StartDelayBuffer();}inlineCStreamDelayBufferGuard::~CStreamDelayBufferGuard(){    if (m_ObjectIStream)        m_ObjectIStream->EndDelayBuffer();}inlineCRef<CByteSource> CStreamDelayBufferGuard::EndDelayBuffer(void){    CObjectIStream* tmp = m_ObjectIStream;    m_ObjectIStream = 0;    return tmp->EndDelayBuffer();}inlinevoid CStreamDelayBufferGuard::EndDelayBuffer(CDelayBuffer& buffer,                                             const CItemInfo* itemInfo,                                              TObjectPtr objectPtr){    m_ObjectIStream->EndDelayBuffer(buffer, itemInfo, objectPtr);    m_ObjectIStream = 0;}#endif /* def OBJISTR__HPP  &&  ndef OBJISTR__INL *//* ---------------------------------------------------------------------------* $Log: objistr.inl,v $* Revision 1000.4  2004/04/12 17:15:04  gouriano* PRODUCTION: UPGRADED [CATCHUP_003] Dev-tree R1.30** Revision 1.30  2004/03/23 15:39:52  gouriano* Added setup options for skipping unknown data members** Revision 1.29  2004/03/05 20:28:37  gouriano* make it possible to skip unknown data fields** Revision 1.28  2004/02/09 18:21:52  gouriano* enforced checking environment vars when setting initialization* verification parameters** Revision 1.27  2003/11/26 19:59:37  vasilche* GetPosition() and GetDataFormat() methods now are implemented* in parent classes CObjectIStream and CObjectOStream to avoid* pure virtual method call in destructors.** Revision 1.26  2003/11/19 15:42:10  vasilche* Added CObjectIStream::HaveMoreData().** Revision 1.25  2003/11/13 14:06:45  gouriano* Elaborated data verification on read/write/get to enable skipping mandatory class data members** Revision 1.24  2003/09/24 20:55:13  kuznets* Implemented CStreamDelayBufferGuard** Revision 1.23  2003/09/10 20:57:23  gouriano* added possibility to ignore missing mandatory members on reading** Revision 1.22  2003/08/19 18:32:37  vasilche* Optimized reading and writing strings.* Avoid string reallocation when checking char values.* Try to reuse old string data when string reference counting is not working.** Revision 1.21  2003/05/22 20:08:41  gouriano* added UTF8 strings** Revision 1.20  2002/12/23 18:38:51  dicuccio* Added WIn32 export specifier: NCBI_XSERIAL_EXPORT.* Moved all CVS logs to the end.** Revision 1.19  2002/10/25 14:49:29  vasilche* NCBI C Toolkit compatibility code extracted to libxcser library.* Serial streams flags names were renamed to fXxx.** Names of flags** Revision 1.18  2001/10/17 20:41:19  grichenk* Added CObjectOStream::CharBlock class** Revision 1.17  2001/07/17 14:52:39  kholodov* Fixed: replaced int argument by size_t in CheckVisibleChar() and* ReplaceVisibleChar to avoid truncation in 64 bit mode.** Revision 1.16  2001/06/11 14:34:55  grichenk* Added support for numeric tags in ASN.1 specifications and data streams.** Revision 1.15  2001/06/07 17:12:46  grichenk* Redesigned checking and substitution of non-printable characters* in VisibleString** Revision 1.14  2001/05/17 14:59:17  lavr* Typos corrected** Revision 1.13  2000/12/15 21:28:47  vasilche* Moved some typedefs/enums from corelib/ncbistd.hpp.* Added flags to CObjectIStream/CObjectOStream: eFlagAllowNonAsciiChars.* TByte typedef replaced by Uint1.** Revision 1.12  2000/12/15 15:38:00  vasilche* Added support of Int8 and long double.* Enum values now have type Int4 instead of long.** Revision 1.11  2000/10/20 15:51:26  vasilche* Fixed data error processing.* Added interface for constructing container objects directly into output stream.* object.hpp, object.inl and object.cpp were split to* objectinfo.*, objecttype.*, objectiter.* and objectio.*.** Revision 1.10  2000/10/03 17:22:34  vasilche* Reduced header dependency.* Reduced size of debug libraries on WorkShop by 3 times.* Fixed tag allocation for parent classes.* Fixed CObject allocation/deallocation in streams.* Moved instantiation of several templates in separate source file.** Revision 1.9  2000/09/29 16:18:13  vasilche* Fixed binary format encoding/decoding on 64 bit compulers.* Implemented CWeakMap<> for automatic cleaning map entries.* Added cleaning local hooks via CWeakMap<>.* Renamed ReadTypeName -> ReadFileHeader, ENoTypeName -> ENoFileHeader.* Added some user interface methods to CObjectIStream, CObjectOStream and* CObjectStreamCopier.** Revision 1.8  2000/09/18 20:00:05  vasilche* Separated CVariantInfo and CMemberInfo.* Implemented copy hooks.* All hooks now are stored in CTypeInfo/CMemberInfo/CVariantInfo.* Most type specific functions now are implemented via function pointers instead of virtual functions.** Revision 1.7  2000/08/15 19:44:40  vasilche* Added Read/Write hooks:* CReadObjectHook/CWriteObjectHook for objects of specified type.* CReadClassMemberHook/CWriteClassMemberHook for specified members.* CReadChoiceVariantHook/CWriteChoiceVariant for specified choice variants.* CReadContainerElementHook/CWriteContainerElementsHook for containers.** Revision 1.6  2000/06/16 20:01:20  vasilche* Avoid use of unexpected_exception() which is unimplemented on Mac.** Revision 1.5  2000/05/24 20:08:13  vasilche* Implemented XML dump.** Revision 1.4  2000/05/09 16:38:33  vasilche* CObject::GetTypeInfo now moved to CObjectGetTypeInfo::GetTypeInfo to reduce possible errors.* Added write context to CObjectOStream.* Inlined most of methods of helping class Member, Block, ByteBlock etc.** Revision 1.3  2000/05/04 16:22:23  vasilche* Cleaned and optimized blocks and members.** ===========================================================================*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -