hkOStream.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 HKBASE_HKOSTREAM_H
  9. #define HKBASE_HKOSTREAM_H
  10. class hkOstream;
  11. class hkStreamWriter;
  12. class hkString;
  13. template<typename T> class hkArray;
  14. namespace hkOstreamManip
  15. {
  16. /// Ostream manipulation operator.
  17. typedef hkOstream& (HK_CALL *function)(hkOstream&);
  18. /// Output 'endl'
  19. hkOstream& HK_CALL endl(hkOstream& os);
  20. /// Flush stream
  21. hkOstream& HK_CALL flush(hkOstream& os);
  22. }
  23. /// Text formatted data writer. Provides functionality similar to std::ostream.
  24. /// All the usual operators are provided plus operators
  25. /// for 64 bit integers. printf style output is also
  26. /// supported.
  27. class hkOstream : public hkReferencedObject
  28. {
  29. public:
  30. HK_DECLARE_CLASS_ALLOCATOR(HK_MEMORY_CLASS_STREAM);
  31. /// Constructs an hkOstream using the given hkStreamWriter for writing.
  32. explicit hkOstream(hkStreamWriter* sr);
  33. /// Create an ostream connected to a file.
  34. /// The file is truncated.
  35. explicit hkOstream(const char* filename);
  36. /// Create an ostream connected to a memory buffer.
  37. /// The buffer must exist for the lifetime of this object.
  38. /// If isString, the buffer is guaranteed to be null terminated.
  39. hkOstream(void* mem, int memSize, hkBool isString=false);
  40. /// Create an ostream connected to a growable memory buffer.
  41. /// The buffer must exist for the lifetime of this object.
  42. explicit hkOstream( hkArray<char>& buf );
  43. /// Destroys the stream.
  44. ~hkOstream();
  45. /// Checks the error status of the stream.
  46. hkBool isOk() const;
  47. /// Outputs a hex address.
  48. hkOstream& operator<< (const void* p);
  49. /// Outputs a hkBool.
  50. hkOstream& operator<< (hkBool b);
  51. /// Outputs a char.
  52. hkOstream& operator<< (char c);
  53. /// Outputs a signed char.
  54. hkOstream& operator<< (signed char c);
  55. /// Outputs an unsigned char.
  56. hkOstream& operator<< (unsigned char c);
  57. /// Outputs a string.
  58. hkOstream& operator<< (const char* s);
  59. /// Outputs a string.
  60. hkOstream& operator<< (const signed char* s);
  61. /// Outputs a string.
  62. hkOstream& operator<< (const unsigned char* s);
  63. /// Outputs a short.
  64. hkOstream& operator<< (short s);
  65. /// Outputs an unsigned short
  66. hkOstream& operator<< (unsigned short s);
  67. /// Outputs an int
  68. hkOstream& operator<< (int i);
  69. /// Outputs an unsigned int.
  70. hkOstream& operator<< (unsigned int u);
  71. /// Outputs a float.
  72. hkOstream& operator<< (float f);
  73. /// Outputs a double.
  74. hkOstream& operator<< (double d);
  75. /// Outputs a 64 bit int.
  76. hkOstream& operator<< (hkInt64 i);
  77. /// Outputs a 64 bit unsigned int.
  78. hkOstream& operator<< (hkUint64 u);
  79. /// Outputs an hkString.
  80. hkOstream& operator<< (const hkString& str);
  81. /// Outputs raw data.
  82. int write( const char* buf, int nbytes);
  83. /// Outputs formatted data.
  84. void printf( const char *fmt, ...);
  85. /// Flushes printf stream.
  86. void flush();
  87. /// Manipulates the stream format.
  88. hkOstream& operator<< (hkOstreamManip::function f);
  89. /// Returns the underlying hkStreamWriter used by this hkOstream.
  90. hkStreamWriter* getStreamWriter();
  91. /// Set the underlying hkStreamWriter for this hkOstream
  92. void setStreamWriter(hkStreamWriter* newWriter);
  93. protected:
  94. hkStreamWriter* m_writer;
  95. };
  96. typedef hkOstream hkOfstream;
  97. #define hkendl hkOstreamManip::endl
  98. #define hkflush hkOstreamManip::flush
  99. #include <Common/Base/System/Io/OStream/hkOStream.inl>
  100. #endif // HKBASE_HKOSTREAM_H
  101. /*
  102. * Havok SDK - NO SOURCE PC DOWNLOAD, BUILD(#20090216)
  103. * Confidential Information of Havok.  (C) Copyright 1999-2009
  104. * Telekinesys Research Limited t/a Havok. All Rights Reserved. The Havok
  105. * Logo, and the Havok buzzsaw logo are trademarks of Havok.  Title, ownership
  106. * rights, and intellectual property rights in the Havok software remain in
  107. * Havok and/or its suppliers.
  108. * Use of this software for evaluation purposes is subject to and indicates
  109. * acceptance of the End User licence Agreement for this product. A copy of
  110. * the license is included with this software and is also available at www.havok.com/tryhavok.
  111. */