⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tu_swap.h

📁 一个开源的Flash 播放器,可以在Windows/Linux 上运行
💻 H
字号:
// tu_swap.h	-- Ignacio Casta駉, Thatcher Ulrich 2003// This source code has been donated to the Public Domain.  Do// whatever you want with it.// Basic endian-swapping stuff.#ifndef TU_SWAP_H#define TU_SWAP_H#include "base/tu_config.h"#include "base/tu_types.h"template<class T>void	swap(T* a, T* b)// Convenient swap function.{	T	temp(*a);	*a = *b;	*b = temp;}//// endian conversions//inline Uint16 swap16(Uint16 u){ 	return ((u & 0x00FF) << 8) | 		((u & 0xFF00) >> 8);}inline Uint32 swap32(Uint32 u){ 	return ((u & 0x000000FF) << 24) | 		((u & 0x0000FF00) << 8)  |		((u & 0x00FF0000) >> 8)  |		((u & 0xFF000000) >> 24);}inline Uint64 swap64(Uint64 u){#ifdef __GNUC__	return ((u & 0x00000000000000FFLL) << 56) |		((u & 0x000000000000FF00LL) << 40)  |		((u & 0x0000000000FF0000LL) << 24)  |		((u & 0x00000000FF000000LL) << 8) |		((u & 0x000000FF00000000LL) >> 8) |		((u & 0x0000FF0000000000LL) >> 24) |		((u & 0x00FF000000000000LL) >> 40) |		((u & 0xFF00000000000000LL) >> 56);#else	return ((u & 0x00000000000000FF) << 56) | 		((u & 0x000000000000FF00) << 40)  |		((u & 0x0000000000FF0000) << 24)  |		((u & 0x00000000FF000000) << 8) |		((u & 0x000000FF00000000) >> 8) |		((u & 0x0000FF0000000000) >> 24) |		((u & 0x00FF000000000000) >> 40) |		((u & 0xFF00000000000000) >> 56);#endif}inline Uint64	swap_le64(Uint64 le_64)// Given a 64-bit little-endian piece of data, return it as a 64-bit// integer in native endian-ness.  I.e., do a swap if we're on a// big-endian machine.{#ifdef _TU_LITTLE_ENDIAN_	return le_64;#else	// not _TU_LITTLE_ENDIAN_	return swap64(le_64);	// convert to big-endian.#endif	// not _TU_LITTLE_ENDIAN_}inline Uint32	swap_le32(Uint32 le_32)// Given a 32-bit little-endian piece of data, return it as a 32-bit// integer in native endian-ness.  I.e. on a little-endian machine,// this just returns the input; on a big-endian machine, this swaps// the bytes around first.{#ifdef _TU_LITTLE_ENDIAN_	return le_32;#else	// not _TU_LITTLE_ENDIAN_	return swap32(le_32);	// convert to big-endian.#endif	// not _TU_LITTLE_ENDIAN_}inline Uint16	swap_le16(Uint16 le_16)// Given a 16-bit little-endian piece of data, return it as a 16-bit// integer in native endianness.{#ifdef _TU_LITTLE_ENDIAN_	return le_16;#else	// not _TU_LITTLE_ENDIAN_	return swap16(le_16);	// convert to big-endian.#endif	// not _TU_LITTLE_ENDIAN_}inline Uint32	swap_be32(Uint32 le_32)// Given a 32-bit big-endian piece of data, return it as a 32-bit// integer in native endian-ness.  I.e. on a little-endian machine,// this swaps the bytes around; on a big-endian machine, it just// returns the input.{#ifdef _TU_LITTLE_ENDIAN_	return swap32(le_32);	// convert to little-endian.#else	// not _TU_LITTLE_ENDIAN_	return le_32;#endif	// not _TU_LITTLE_ENDIAN_}inline Uint16	swap_be16(Uint16 le_16)// Given a 16-bit big-endian piece of data, return it as a 16-bit// integer in native endianness.{#ifdef _TU_LITTLE_ENDIAN_	return swap16(le_16);	// convert to little-endian.#else	// not _TU_LITTLE_ENDIAN_	return le_16;#endif	// not _TU_LITTLE_ENDIAN_}#endif // TU_SWAP_H// Local Variables:// mode: C++// c-basic-offset: 8 // tab-width: 8// indent-tabs-mode: t// End:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -