SpArchive.inl
上传用户:zhanglf88
上传日期:2013-11-19
资源大小:6036k
文件大小:5k
源码类别:

金融证券系统

开发平台:

Visual C++

  1. // CSPArchive
  2. _SPARCHIVE_INLINE BOOL CSPArchive::IsLoading() const
  3. { return (m_nMode & CSPArchive::load) != 0; }
  4. _SPARCHIVE_INLINE BOOL CSPArchive::IsStoring() const
  5. { return (m_nMode & CSPArchive::load) == 0; }
  6. _SPARCHIVE_INLINE BOOL CSPArchive::IsByteSwapping() const
  7. { return (m_nMode & CSPArchive::bNoByteSwap) == 0; }
  8. _SPARCHIVE_INLINE BOOL CSPArchive::IsBufferEmpty() const
  9. { return m_lpBufCur == m_lpBufMax; }
  10. _SPARCHIVE_INLINE CSPFile* CSPArchive::GetFile() const
  11. { return m_pFile; }
  12. _SPARCHIVE_INLINE CSPArchive& CSPArchive::operator<<(int i)
  13. { return CSPArchive::operator<<((LONG)i); }
  14. _SPARCHIVE_INLINE CSPArchive& CSPArchive::operator<<(unsigned u)
  15. { return CSPArchive::operator<<((LONG)u); }
  16. _SPARCHIVE_INLINE CSPArchive& CSPArchive::operator<<(short w)
  17. { return CSPArchive::operator<<((WORD)w); }
  18. _SPARCHIVE_INLINE CSPArchive& CSPArchive::operator<<(char ch)
  19. { return CSPArchive::operator<<((BYTE)ch); }
  20. _SPARCHIVE_INLINE CSPArchive& CSPArchive::operator<<(BYTE by)
  21. { if (m_lpBufCur + sizeof(BYTE) > m_lpBufMax) Flush();
  22. *(UNALIGNED BYTE*)m_lpBufCur = by; m_lpBufCur += sizeof(BYTE); return *this; }
  23. #ifndef _AFX_BYTESWAP
  24. _SPARCHIVE_INLINE CSPArchive& CSPArchive::operator<<(WORD w)
  25. { if (m_lpBufCur + sizeof(WORD) > m_lpBufMax) Flush();
  26. *(UNALIGNED WORD*)m_lpBufCur = w; m_lpBufCur += sizeof(WORD); return *this; }
  27. _SPARCHIVE_INLINE CSPArchive& CSPArchive::operator<<(LONG l)
  28. { if (m_lpBufCur + sizeof(LONG) > m_lpBufMax) Flush();
  29. *(UNALIGNED LONG*)m_lpBufCur = l; m_lpBufCur += sizeof(LONG); return *this; }
  30. _SPARCHIVE_INLINE CSPArchive& CSPArchive::operator<<(DWORD dw)
  31. { if (m_lpBufCur + sizeof(DWORD) > m_lpBufMax) Flush();
  32. *(UNALIGNED DWORD*)m_lpBufCur = dw; m_lpBufCur += sizeof(DWORD); return *this; }
  33. _SPARCHIVE_INLINE CSPArchive& CSPArchive::operator<<(float f)
  34. { if (m_lpBufCur + sizeof(float) > m_lpBufMax) Flush();
  35. *(UNALIGNED float*)m_lpBufCur = *(float*)&f; m_lpBufCur += sizeof(float); return *this;
  36. }
  37. _SPARCHIVE_INLINE CSPArchive& CSPArchive::operator<<(double d)
  38. { if (m_lpBufCur + sizeof(double) > m_lpBufMax) Flush();
  39. *(UNALIGNED double*)m_lpBufCur = *(double*)&d; m_lpBufCur += sizeof(double); return *this; }
  40. #endif
  41. _SPARCHIVE_INLINE CSPArchive& CSPArchive::operator>>(int& i)
  42. { return CSPArchive::operator>>((LONG&)i); }
  43. _SPARCHIVE_INLINE CSPArchive& CSPArchive::operator>>(unsigned& u)
  44. { return CSPArchive::operator>>((LONG&)u); }
  45. _SPARCHIVE_INLINE CSPArchive& CSPArchive::operator>>(short& w)
  46. { return CSPArchive::operator>>((WORD&)w); }
  47. _SPARCHIVE_INLINE CSPArchive& CSPArchive::operator>>(char& ch)
  48. { return CSPArchive::operator>>((BYTE&)ch); }
  49. _SPARCHIVE_INLINE CSPArchive& CSPArchive::operator>>(BYTE& by)
  50. { if (m_lpBufCur + sizeof(BYTE) > m_lpBufMax)
  51. FillBuffer(sizeof(BYTE) - (UINT)(m_lpBufMax - m_lpBufCur));
  52. by = *(UNALIGNED BYTE*)m_lpBufCur; m_lpBufCur += sizeof(BYTE); return *this; }
  53. #ifndef _AFX_BYTESWAP
  54. _SPARCHIVE_INLINE CSPArchive& CSPArchive::operator>>(WORD& w)
  55. { if (m_lpBufCur + sizeof(WORD) > m_lpBufMax)
  56. FillBuffer(sizeof(WORD) - (UINT)(m_lpBufMax - m_lpBufCur));
  57. w = *(UNALIGNED WORD*)m_lpBufCur; m_lpBufCur += sizeof(WORD); return *this; }
  58. _SPARCHIVE_INLINE CSPArchive& CSPArchive::operator>>(DWORD& dw)
  59. { if (m_lpBufCur + sizeof(DWORD) > m_lpBufMax)
  60. FillBuffer(sizeof(DWORD) - (UINT)(m_lpBufMax - m_lpBufCur));
  61. dw = *(UNALIGNED DWORD*)m_lpBufCur; m_lpBufCur += sizeof(DWORD); return *this; }
  62. _SPARCHIVE_INLINE CSPArchive& CSPArchive::operator>>(float& f)
  63. { if (m_lpBufCur + sizeof(float) > m_lpBufMax)
  64. FillBuffer(sizeof(float) - (UINT)(m_lpBufMax - m_lpBufCur));
  65. *(float*)&f = *(UNALIGNED float*)m_lpBufCur; m_lpBufCur += sizeof(float); return *this; }
  66. _SPARCHIVE_INLINE CSPArchive& CSPArchive::operator>>(double& d)
  67. { if (m_lpBufCur + sizeof(double) > m_lpBufMax)
  68. FillBuffer(sizeof(double) - (UINT)(m_lpBufMax - m_lpBufCur));
  69. *(double*)&d = *(UNALIGNED double*)m_lpBufCur; m_lpBufCur += sizeof(double); return *this; }
  70. _SPARCHIVE_INLINE CSPArchive& CSPArchive::operator>>(LONG& l)
  71. { if (m_lpBufCur + sizeof(LONG) > m_lpBufMax)
  72. FillBuffer(sizeof(LONG) - (UINT)(m_lpBufMax - m_lpBufCur));
  73. l = *(UNALIGNED LONG*)m_lpBufCur; m_lpBufCur += sizeof(LONG); return *this; }
  74. #endif
  75. _SPARCHIVE_INLINE CSPArchive& CSPArchive::operator<<(const CSPTime& tm)
  76. { *this << tm.GetTime(); return *this; }
  77. _SPARCHIVE_INLINE CSPArchive& CSPArchive::operator>>(CSPTime& tm)
  78. { time_t tmt; *this >> tmt;
  79. tm = CSPTime(tmt); return *this; }
  80. _SPARCHIVE_INLINE CSPArchive::CSPArchive(const CSPArchive& /* arSrc */)
  81. { }
  82. _SPARCHIVE_INLINE void CSPArchive::operator=(const CSPArchive& /* arSrc */)
  83. { }