| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 | //	Copyright (C) 2011 Michael McMaster <michael@codesrc.com>////	This file is part of libzipper.////	libzipper is free software: you can redistribute it and/or modify//	it under the terms of the GNU General Public License as published by//	the Free Software Foundation, either version 3 of the License, or//	(at your option) any later version.////	libzipper is distributed in the hope that it will be useful,//	but WITHOUT ANY WARRANTY; without even the implied warranty of//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the//	GNU General Public License for more details.////	You should have received a copy of the GNU General Public License//	along with libzipper.  If not, see <http://www.gnu.org/licenses/>.#ifndef zipper_util_hh#define zipper_util_hhnamespace zipper{	template <typename T>	struct	dummy_delete	{		void operator()(T*) {}	};	template<typename T>	uint32_t	read32_le(const T& inArray, size_t pos = 0)	{		// Read 4 bytes in little-endian order.		// Return results in host-endian.		return uint32_t(			inArray[pos] |			(uint32_t(inArray[pos+1]) << 8) |			(uint32_t(inArray[pos+2]) << 16) |			(uint32_t(inArray[pos+3]) << 24)			);	}	template<typename T>	uint16_t	read16_le(const T& inArray, size_t pos = 0)	{		// Read 2 bytes in little-endian order.		// Return results in host-endian.		return uint16_t(			inArray[pos] |			(uint16_t(inArray[pos+1]) << 8)			);	}	template<typename T>	void	write32_le(uint32_t value, T& outArray, size_t pos = 0)	{		// Write 4 bytes in little-endian order.		outArray[pos] = value & 0xff;		outArray[pos + 1] = (value >> 8) & 0xff;		outArray[pos + 2] = (value >> 16) & 0xff;		outArray[pos + 3] = (value >> 24) & 0xff;	}	template<typename T>	void	write32_le(uint32_t value, T* outArray, size_t pos = 0)	{		// Write 4 bytes in little-endian order.		outArray[pos] = value & 0xff;		outArray[pos + 1] = (value >> 8) & 0xff;		outArray[pos + 2] = (value >> 16) & 0xff;		outArray[pos + 3] = (value >> 24) & 0xff;	}	template<typename T>	void	write16_le(uint16_t value, T& outArray, size_t pos = 0)	{		// Write 4 bytes in little-endian order.		outArray[pos] = value & 0xff;		outArray[pos + 1] = (value >> 8);	}	template<typename T>	void	write16_le(uint16_t value, T* outArray, size_t pos = 0)	{		// Write 4 bytes in little-endian order.		outArray[pos] = value & 0xff;		outArray[pos + 1] = (value >> 8);	}}#endif
 |