hkOArchive.h
上传用户:yisoukefu
上传日期:2020-08-09
资源大小:39506k
文件大小:5k
源码类别:

其他游戏

开发平台:

Visual C++

  1. /* 
  2.  * 
  3.  * Confidential Information of Telekinesys Research Limited (t/a Havok). Not for disclosure or distribution without Havok's
  4.  * prior written consent. This software contains code, techniques and know-how which is confidential and proprietary to Havok.
  5.  * Level 2 and Level 3 source code contains trade secrets of Havok. Havok Software (C) Copyright 1999-2009 Telekinesys Research Limited t/a Havok. All Rights Reserved. Use of this software is subject to the terms of an end user license agreement.
  6.  * 
  7.  */
  8. #ifndef HK_BASE_OARCHIVE_H
  9. #define HK_BASE_OARCHIVE_H
  10. class hkStreamWriter;
  11. /// Endian-aware binary formatted data writer.
  12. /// Outputs all data in little endian format and converts on the fly if necessary.
  13. class hkOArchive: public hkReferencedObject
  14. {
  15. public:
  16. HK_DECLARE_CLASS_ALLOCATOR(HK_MEMORY_CLASS_STREAM);
  17. /// Create with the specified hkStreamWriter.
  18. hkOArchive(hkStreamWriter* sb, hkBool byteswap=HK_ENDIAN_BIG);
  19. /// Create with a stream from the hkStreamWriter factory.
  20. /// The file is truncated.
  21. hkOArchive(const char* filename, hkBool byteswap=HK_ENDIAN_BIG);
  22. /// Create with a memory block. 'mem' must exist for the lifetime of this object.
  23. hkOArchive(void* mem, int memSize, hkBool byteswap=HK_ENDIAN_BIG);
  24. /// Creates with an expanding memory block. 'arr' must exist for the lifetime of this object.
  25. hkOArchive(hkArray<char>& arr, hkBool byteswap=HK_ENDIAN_BIG);
  26. /// Destructor.
  27. ~hkOArchive();
  28. //
  29. // Write single elements.
  30. //
  31. /// Writes 8 bits.
  32. void write8(hkChar c);
  33. /// Writes 8 bits.
  34. void write8u(hkUchar u);
  35. /// Writes 16 bits.
  36. void write16(hkInt16 i);
  37. /// Writes 16 bits.
  38. void write16u(hkUint16 u);
  39. /// Writes 32 bits.
  40. void write32(hkInt32 i);
  41. /// Writes 32 bits.
  42. void write32u(hkUint32 u);
  43. /// Write 64 bits.
  44. void write64(hkInt64 i);
  45. /// Writes 64 bits.
  46. void write64u(hkUint64 u);
  47. /// Writes 32 bit IEEE floats.
  48. void writeFloat32(hkFloat32 f);
  49. /// Writes 64 bit IEEE doubles.
  50. void writeDouble64(hkDouble64 d);
  51. //
  52. // Write array elements.
  53. //
  54. /// Writes array of 8 byte data.
  55. void writeArray8(const hkInt8* buf, int nelem);
  56. /// Writes array of 8 byte data.
  57. void writeArray8u(const hkUint8* buf, int nelem);
  58. /// Writes array of 16 byte data.
  59. void writeArray16(const hkInt16* buf, int nelem);
  60. /// Writes array of 16 byte data.
  61. void writeArray16u(const hkUint16* buf, int nelem);
  62. /// Writes array of 32 byte data.
  63. void writeArray32(const hkInt32* buf, int nelem);
  64. /// Writes array of 32 byte data.
  65. void writeArray32u(const hkUint32* buf, int nelem);
  66. /// Writes array of 64 byte data.
  67. void writeArray64(const hkInt64* buf, int nelem);
  68. /// Writes array of 64 byte data.
  69. void writeArray64u(const hkUint64* buf, int nelem);
  70. /// Writes array of 32 byte float data.
  71. void writeArrayFloat32(const hkFloat32* buf, int nelem);
  72. /// Writes array of 64 byte float data.
  73. void writeArrayDouble64(const hkDouble64* buf, int nelem);
  74. /// Writes array of sizeelem byte data.
  75. void writeArrayGeneric(const void* buf, int sizeelem, int nelem);
  76. //
  77. // Other.
  78. //
  79. /// Writes raw data.
  80. int writeRaw(const void* buf, int nbytes);
  81. /// Set byteswapping.
  82. void setByteSwap(hkBool on);
  83. /// Set byteswapping.
  84. hkBool getByteSwap() const;
  85. /// Returns the current error status of the stream.
  86. hkBool isOk() const;
  87. /// Returns the underlying hkStreamWriter used by this hkOArchive.
  88. hkStreamWriter* getStreamWriter();
  89. /// Set the underlying hkStreamWriter for this hkOArchive
  90. void setStreamWriter(hkStreamWriter* writer);
  91. protected:
  92. /// The underlying hkStreamWriter.
  93. hkStreamWriter* m_writer;
  94. /// Should we byteswap.
  95. hkBool m_byteSwap;
  96. };
  97. typedef hkOArchive hkOfArchive;
  98. #endif // HK_BASE_OARCHIVE_H
  99. /*
  100. * Havok SDK - NO SOURCE PC DOWNLOAD, BUILD(#20090216)
  101. * Confidential Information of Havok.  (C) Copyright 1999-2009
  102. * Telekinesys Research Limited t/a Havok. All Rights Reserved. The Havok
  103. * Logo, and the Havok buzzsaw logo are trademarks of Havok.  Title, ownership
  104. * rights, and intellectual property rights in the Havok software remain in
  105. * Havok and/or its suppliers.
  106. * Use of this software for evaluation purposes is subject to and indicates
  107. * acceptance of the End User licence Agreement for this product. A copy of
  108. * the license is included with this software and is also available at www.havok.com/tryhavok.
  109. */