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

其他游戏

开发平台:

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_HKISTREAM_H
  9. #define HKBASE_HKISTREAM_H
  10. #include <Common/Base/hkBase.h>
  11. class hkStreamReader;
  12. /// Text formatted data reader. Provides functionality similar to std::istream.
  13. /// All the usual operators are provided plus operators
  14. /// for 64 bit integers. printf style output is also
  15. /// supported.
  16. class hkIstream : public hkReferencedObject
  17. {
  18. public:
  19. HK_DECLARE_CLASS_ALLOCATOR(HK_MEMORY_CLASS_STREAM);
  20. /// Constructs an hkIstream using the given hkStreamReader.
  21. /// Adds a reference to the reader.
  22. explicit hkIstream(hkStreamReader* sr);
  23. /// An istream which is connected to a file.
  24. explicit hkIstream(const char* filename);
  25. /// An istream which is connected to an existing buffer.
  26. /// The buffer must exist for the lifetime of this istream.
  27. explicit hkIstream(const void* mem, int memSize);
  28. /// Destroys the stream
  29. /// Removes a reference to its reader.
  30. ~hkIstream();
  31. /// Checks that this stream has not had a read error.
  32. hkBool isOk() const;
  33. /// Inputs an hkBool.
  34. hkIstream& operator>> (hkBool& b);
  35. /// Inputs a char.
  36. hkIstream& operator>> (char& c);
  37. /// Inputs a signed char.
  38. hkIstream& operator>> (signed char& c);
  39. /// Inputs unsigned char.
  40. hkIstream& operator>> (unsigned char& c);
  41. /// Inputs a short.
  42. hkIstream& operator>> (short& s);
  43. /// Input an unsigned short.
  44. hkIstream& operator>> (unsigned short& s);
  45. /// Inputs an int.
  46. hkIstream& operator>> (int& i);
  47. /// Inputs an unsigned int.
  48. hkIstream& operator>> (unsigned int& u);
  49. /// Inputs a float (reads in full double and casts back)
  50. hkIstream& operator>> (float& f);
  51. /// Inputs a double. 
  52. // Will actually read a float
  53. hkIstream& operator>> (double& d); 
  54. /// Inputs a 64 bit int.
  55. hkIstream& operator>> (hkInt64& i);
  56. /// Input a 64 bit unsigned int
  57. // Will actually read an int64
  58. hkIstream& operator>> (hkUint64& u);
  59. /// Inputs an hkString
  60. hkIstream& operator>> (hkString& str);
  61. /// Gets a string with the given delimiter. Return number of chars read, or -1 if maxsize was reached 
  62. /// without finding the delimiter. Note that any leading whitespace is discarded.
  63. int getline(char* str, int maxsize, char delim = 'n');
  64. /// Reads in one character.
  65. hkIstream& get( char& c );
  66. /// Reads raw data.
  67. int read( void* buf, int nbytes );
  68. /// Returns the underlying hkStreamReader used by this hkIstream.
  69. hkStreamReader* getStreamReader();
  70. /// Sets the underlying hkStreamReader for this hkIstream.
  71. void setStreamReader(hkStreamReader* newReader);
  72. protected:
  73. hkStreamReader* m_streamReader;
  74. };
  75. typedef hkIstream hkIfstream;
  76. #include <Common/Base/System/Io/IStream/hkIStream.inl>
  77. #endif // HKBASE_HKISTREAM_H
  78. /*
  79. * Havok SDK - NO SOURCE PC DOWNLOAD, BUILD(#20090216)
  80. * Confidential Information of Havok.  (C) Copyright 1999-2009
  81. * Telekinesys Research Limited t/a Havok. All Rights Reserved. The Havok
  82. * Logo, and the Havok buzzsaw logo are trademarks of Havok.  Title, ownership
  83. * rights, and intellectual property rights in the Havok software remain in
  84. * Havok and/or its suppliers.
  85. * Use of this software for evaluation purposes is subject to and indicates
  86. * acceptance of the End User licence Agreement for this product. A copy of
  87. * the license is included with this software and is also available at www.havok.com/tryhavok.
  88. */