| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 | 
							
- /*
 
-  * CBinaryReader.h, part of VCMI engine
 
-  *
 
-  * Authors: listed in file AUTHORS in main folder
 
-  *
 
-  * License: GNU General Public License v2.0 or later
 
-  * Full text of license available in license.txt file, in main folder
 
-  *
 
-  */
 
- #pragma once
 
- class CInputStream;
 
- /**
 
-  * Reads primitive binary values from a underlying stream.
 
-  *
 
-  * The integers which are read are supposed to be little-endian values permanently. They will be
 
-  * converted to big-endian values on big-endian machines.
 
-  */
 
- class DLL_LINKAGE CBinaryReader : public boost::noncopyable
 
- {
 
- public:
 
- 	/**
 
- 	 * Default c-tor.
 
- 	 */
 
- 	CBinaryReader();
 
- 	/**
 
- 	 * C-tor.
 
- 	 *
 
- 	 * @param stream The base stream object which serves as the reading input.
 
- 	 */
 
-     CBinaryReader(CInputStream * stream);
 
- 	/**
 
- 	 * Gets the underlying stream.
 
- 	 *
 
- 	 * @return the base stream.
 
- 	 */
 
- 	CInputStream * getStream();
 
- 	/**
 
- 	 * Sets the underlying stream.
 
- 	 *
 
- 	 * @param stream The base stream to set
 
- 	 */
 
-     void setStream(CInputStream * stream);
 
- 	/**
 
- 	 * Reads n bytes from the stream into the data buffer.
 
- 	 *
 
- 	 * @param data A pointer to the destination data array.
 
- 	 * @param size The number of bytes to read.
 
- 	 * @return the number of bytes read actually.
 
- 	 */
 
- 	si64 read(ui8 * data, si64 size);
 
- 	/**
 
- 	 * Reads integer of various size. Advances the read pointer.
 
- 	 *
 
- 	 * @return a read integer.
 
- 	 *
 
- 	 * @throws std::runtime_error if the end of the stream was reached unexpectedly
 
- 	 */
 
- 	ui8 readUInt8();
 
- 	si8 readInt8();
 
- 	ui16 readUInt16();
 
- 	si16 readInt16();
 
- 	ui32 readUInt32();
 
- 	si32 readInt32();
 
- 	ui64 readUInt64();
 
- 	si64 readInt64();
 
- 	std::string readString();
 
- 	inline bool readBool()
 
- 	{
 
- 		return readUInt8() != 0;
 
- 	}
 
- 	void skip(int count);
 
- private:
 
-     /**
 
-      * Reads any integer. Advances the read pointer by its size.
 
-      *
 
-      * @return read integer.
 
-      *
 
-      * @throws std::runtime_error if the end of the stream was reached unexpectedly
 
-      */
 
-     template <typename CData>
 
-     CData readInteger();
 
- 	/**
 
- 	 * Gets a end of stream exception message.
 
- 	 *
 
- 	 * @param bytesToRead The number of bytes which should be read.
 
- 	 * @return the exception message text
 
- 	 */
 
- 	std::string getEndOfStreamExceptionMsg(long bytesToRead) const;
 
- 	/** The underlying base stream */
 
- 	CInputStream * stream;
 
- };
 
 
  |