mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-30 21:30:04 +00:00 
			
		
		
		
	added swap types to common
This commit is contained in:
		
							parent
							
								
									cd6e998e9a
								
							
						
					
					
						commit
						f24f4ff978
					
				
					 4 changed files with 549 additions and 0 deletions
				
			
		|  | @ -95,6 +95,9 @@ | |||
|       <GenerateDebugInformation>true</GenerateDebugInformation> | ||||
|     </Link> | ||||
|     <Lib /> | ||||
|     <ClCompile> | ||||
|       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> | ||||
|     </ClCompile> | ||||
|   </ItemDefinitionGroup> | ||||
|   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> | ||||
|     <ClCompile /> | ||||
|  | @ -172,6 +175,7 @@ | |||
|     <ClInclude Include="src\std_mutex.h" /> | ||||
|     <ClInclude Include="src\std_thread.h" /> | ||||
|     <ClInclude Include="src\string_util.h" /> | ||||
|     <ClInclude Include="src\swap.h" /> | ||||
|     <ClInclude Include="src\thread.h" /> | ||||
|     <ClInclude Include="src\thunk.h" /> | ||||
|     <ClInclude Include="src\timer.h" /> | ||||
|  | @ -197,6 +201,13 @@ | |||
|   <ItemGroup> | ||||
|     <None Include="CMakeLists.txt" /> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <Reference Include="System" /> | ||||
|     <Reference Include="System.Data" /> | ||||
|     <Reference Include="System.Drawing" /> | ||||
|     <Reference Include="System.Windows.Forms" /> | ||||
|     <Reference Include="System.Xml" /> | ||||
|   </ItemGroup> | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> | ||||
|   <ImportGroup Label="ExtensionTargets"> | ||||
|   </ImportGroup> | ||||
|  |  | |||
|  | @ -54,6 +54,7 @@ | |||
|     <ClInclude Include="src\atomic_win32.h" /> | ||||
|     <ClInclude Include="src\emu_window.h" /> | ||||
|     <ClInclude Include="src\platform.h" /> | ||||
|     <ClInclude Include="src\swap.h" /> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <None Include="CMakeLists.txt" /> | ||||
|  |  | |||
|  | @ -45,4 +45,6 @@ typedef signed long long s64; | |||
| 
 | ||||
| #endif // _WIN32
 | ||||
| 
 | ||||
| #include "swap.h" | ||||
| 
 | ||||
| #endif // _COMMONTYPES_H_
 | ||||
|  |  | |||
							
								
								
									
										535
									
								
								src/common/src/swap.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										535
									
								
								src/common/src/swap.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,535 @@ | |||
| // Copyright (c) 2012- PPSSPP Project / Dolphin Project.
 | ||||
| 
 | ||||
| // This program 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, version 2.0 or later versions.
 | ||||
| 
 | ||||
| // This program 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 2.0 for more details.
 | ||||
| 
 | ||||
| // A copy of the GPL 2.0 should have been included with the program.
 | ||||
| // If not, see http://www.gnu.org/licenses/
 | ||||
| 
 | ||||
| // Official git repository and contact information can be found at
 | ||||
| // https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/.
 | ||||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| // Android
 | ||||
| #if defined(ANDROID) | ||||
| #include <sys/endian.h> | ||||
| 
 | ||||
| #if _BYTE_ORDER == _LITTLE_ENDIAN && !defined(COMMON_LITTLE_ENDIAN) | ||||
| #define COMMON_LITTLE_ENDIAN 1 | ||||
| #elif _BYTE_ORDER == _BIG_ENDIAN && !defined(COMMON_BIG_ENDIAN) | ||||
| #define COMMON_BIG_ENDIAN 1 | ||||
| #endif | ||||
| 
 | ||||
| // GCC 4.6+
 | ||||
| #elif __GNUC__ >= 5 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6) | ||||
| 
 | ||||
| #if __BYTE_ORDER__ && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) && !defined(COMMON_LITTLE_ENDIAN) | ||||
| #define COMMON_LITTLE_ENDIAN 1 | ||||
| #elif __BYTE_ORDER__ && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) && !defined(COMMON_BIG_ENDIAN) | ||||
| #define COMMON_BIG_ENDIAN 1 | ||||
| #endif | ||||
| 
 | ||||
| // LLVM/clang
 | ||||
| #elif __clang__ | ||||
| 
 | ||||
| #if __LITTLE_ENDIAN__ && !defined(COMMON_LITTLE_ENDIAN) | ||||
| #define COMMON_LITTLE_ENDIAN 1 | ||||
| #elif __BIG_ENDIAN__ && !defined(COMMON_BIG_ENDIAN) | ||||
| #define COMMON_BIG_ENDIAN 1 | ||||
| #endif | ||||
| 
 | ||||
| // MSVC
 | ||||
| #elif defined(_MSC_VER) && !defined(COMMON_BIG_ENDIAN) && !defined(COMMON_LITTLE_ENDIAN) | ||||
| 
 | ||||
| #ifdef _XBOX | ||||
| #define COMMON_BIG_ENDIAN 1 | ||||
| #else | ||||
| #define COMMON_LITTLE_ENDIAN 1 | ||||
| #endif | ||||
| 
 | ||||
| #endif | ||||
| 
 | ||||
| // Worst case, default to little endian.
 | ||||
| #if !COMMON_BIG_ENDIAN && !COMMON_LITTLE_ENDIAN | ||||
| #define COMMON_LITTLE_ENDIAN 1 | ||||
| #endif | ||||
| 
 | ||||
| template <typename T, typename F> | ||||
| struct swap_struct_t { | ||||
| 	typedef swap_struct_t<T, F> swapped_t; | ||||
| 
 | ||||
| protected: | ||||
| 	T value; | ||||
| 
 | ||||
| 	static T swap(T v) { | ||||
| 		return F::swap(v); | ||||
| 	} | ||||
| public: | ||||
| 	T const swap() const { | ||||
| 		return swap(value); | ||||
| 
 | ||||
| 	} | ||||
| 	swap_struct_t() : value((T)0) {} | ||||
| 	swap_struct_t(const T &v): value(swap(v)) {} | ||||
| 
 | ||||
| 	template <typename S> | ||||
| 	swapped_t& operator=(const S &source) { | ||||
| 		value = swap((T)source); | ||||
| 		return *this; | ||||
| 	} | ||||
| 
 | ||||
| 	operator long() const { return (long)swap(); }	 | ||||
| 	operator s8() const { return (s8)swap(); } | ||||
| 	operator u8() const { return (u8)swap(); } | ||||
| 	operator s16() const { return (s16)swap(); } | ||||
| 	operator u16() const { return (u16)swap(); } | ||||
| 	operator s32() const { return (s32)swap(); } | ||||
| 	operator u32() const { return (u32)swap(); } | ||||
| 	operator s64() const { return (s64)swap(); } | ||||
| 	operator u64() const { return (u64)swap(); } | ||||
| 	operator float() const { return (float)swap(); } | ||||
| 	operator double() const { return (double)swap(); } | ||||
| 
 | ||||
| 	// +v
 | ||||
| 	swapped_t operator +() const { | ||||
| 		return +swap(); | ||||
| 	} | ||||
| 	// -v
 | ||||
| 	swapped_t operator -() const { | ||||
| 		return -swap(); | ||||
| 	} | ||||
| 
 | ||||
| 	// v / 5
 | ||||
| 	swapped_t operator/(const swapped_t &i) const { | ||||
| 		return swap() / i.swap(); | ||||
| 	} | ||||
| 	template <typename S> | ||||
| 	swapped_t operator/(const S &i) const { | ||||
| 		return swap() / i; | ||||
| 	} | ||||
| 
 | ||||
| 	// v * 5
 | ||||
| 	swapped_t operator*(const swapped_t &i) const { | ||||
| 		return swap() * i.swap(); | ||||
| 	} | ||||
| 	template <typename S> | ||||
| 	swapped_t operator*(const S &i) const { | ||||
| 		return swap() * i; | ||||
| 	} | ||||
| 
 | ||||
| 	// v + 5
 | ||||
| 	swapped_t operator+(const swapped_t &i) const { | ||||
| 		return swap() + i.swap(); | ||||
| 	} | ||||
| 	template <typename S> | ||||
| 	swapped_t operator+(const S &i) const { | ||||
| 		return swap() + (T)i; | ||||
| 	} | ||||
| 	// v - 5
 | ||||
| 	swapped_t operator-(const swapped_t &i) const { | ||||
| 		return swap() - i.swap(); | ||||
| 	} | ||||
| 	template <typename S> | ||||
| 	swapped_t operator-(const S &i) const { | ||||
| 		return swap() - (T)i; | ||||
| 	} | ||||
| 
 | ||||
| 	// v += 5
 | ||||
| 	swapped_t& operator+=(const swapped_t &i) { | ||||
| 		value = swap(swap() + i.swap()); | ||||
| 		return *this; | ||||
| 	} | ||||
| 	template <typename S> | ||||
| 	swapped_t& operator+=(const S &i) { | ||||
| 		value = swap(swap() + (T)i); | ||||
| 		return *this; | ||||
| 	} | ||||
| 	// v -= 5
 | ||||
| 	swapped_t& operator-=(const swapped_t &i) { | ||||
| 		value = swap(swap() - i.swap()); | ||||
| 		return *this; | ||||
| 	} | ||||
| 	template <typename S> | ||||
| 	swapped_t& operator-=(const S &i) { | ||||
| 		value = swap(swap() - (T)i); | ||||
| 		return *this; | ||||
| 	} | ||||
| 
 | ||||
| 	// ++v
 | ||||
| 	swapped_t& operator++() { | ||||
| 		value = swap(swap()+1); | ||||
| 		return *this; | ||||
| 	} | ||||
| 	// --v
 | ||||
| 	swapped_t& operator--()  { | ||||
| 		value = swap(swap()-1); | ||||
| 		return *this; | ||||
| 	} | ||||
| 
 | ||||
| 	// v++
 | ||||
| 	swapped_t operator++(int) { | ||||
| 		swapped_t old = *this; | ||||
| 		value = swap(swap()+1); | ||||
| 		return old; | ||||
| 	} | ||||
| 	// v--
 | ||||
| 	swapped_t operator--(int) { | ||||
| 		swapped_t old = *this; | ||||
| 		value = swap(swap()-1); | ||||
| 		return old; | ||||
| 	} | ||||
| 	// Comparaison
 | ||||
| 	// v == i
 | ||||
| 	bool operator==(const swapped_t &i) const { | ||||
| 		return swap() == i.swap(); | ||||
| 	} | ||||
| 	template <typename S> | ||||
| 	bool operator==(const S &i) const { | ||||
| 		return swap() == i; | ||||
| 	} | ||||
| 
 | ||||
| 	// v != i
 | ||||
| 	bool operator!=(const swapped_t &i) const { | ||||
| 		return swap() != i.swap(); | ||||
| 	} | ||||
| 	template <typename S> | ||||
| 	bool operator!=(const S &i) const { | ||||
| 		return swap() != i; | ||||
| 	} | ||||
| 
 | ||||
| 	// v > i
 | ||||
| 	bool operator>(const swapped_t &i) const { | ||||
| 		return swap() > i.swap(); | ||||
| 	} | ||||
| 	template <typename S> | ||||
| 	bool operator>(const S &i) const { | ||||
| 		return swap() > i; | ||||
| 	} | ||||
| 
 | ||||
| 	// v < i
 | ||||
| 	bool operator<(const swapped_t &i) const { | ||||
| 		return swap() < i.swap(); | ||||
| 	} | ||||
| 	template <typename S> | ||||
| 	bool operator<(const S &i) const { | ||||
| 		return swap() < i; | ||||
| 	} | ||||
| 
 | ||||
| 	// v >= i
 | ||||
| 	bool operator>=(const swapped_t &i) const { | ||||
| 		return swap() >= i.swap(); | ||||
| 	} | ||||
| 	template <typename S> | ||||
| 	bool operator>=(const S &i) const { | ||||
| 		return swap() >= i; | ||||
| 	} | ||||
| 
 | ||||
| 	// v <= i
 | ||||
| 	bool operator<=(const swapped_t &i) const { | ||||
| 		return swap() <= i.swap(); | ||||
| 	} | ||||
| 	template <typename S> | ||||
| 	bool operator<=(const S &i) const { | ||||
| 		return swap() <= i; | ||||
| 	} | ||||
| 
 | ||||
| 	// logical
 | ||||
| 	swapped_t operator !() const { | ||||
| 		return !swap(); | ||||
| 	} | ||||
| 
 | ||||
| 	// bitmath
 | ||||
| 	swapped_t operator ~() const { | ||||
| 		return ~swap(); | ||||
| 	} | ||||
| 
 | ||||
| 	swapped_t operator &(const swapped_t &b) const { | ||||
| 		return swap() & b.swap(); | ||||
| 	} | ||||
| 	template <typename S> | ||||
| 	swapped_t operator &(const S &b) const { | ||||
| 		return swap() & b; | ||||
| 	} | ||||
| 	swapped_t& operator &=(const swapped_t &b) { | ||||
| 		value = swap(swap() & b.swap()); | ||||
| 		return *this; | ||||
| 	} | ||||
| 	template <typename S> | ||||
| 	swapped_t& operator &=(const S b) { | ||||
| 		value = swap(swap() & b); | ||||
| 		return *this; | ||||
| 	} | ||||
| 
 | ||||
| 	swapped_t operator |(const swapped_t &b) const { | ||||
| 		return swap() | b.swap(); | ||||
| 	} | ||||
| 	template <typename S> | ||||
| 	swapped_t operator |(const S &b) const { | ||||
| 		return swap() | b; | ||||
| 	} | ||||
| 	swapped_t& operator |=(const swapped_t &b) { | ||||
| 		value = swap(swap() | b.swap()); | ||||
| 		return *this; | ||||
| 	} | ||||
| 	template <typename S> | ||||
| 	swapped_t& operator |=(const S &b) { | ||||
| 		value = swap(swap() | b); | ||||
| 		return *this; | ||||
| 	} | ||||
| 
 | ||||
| 	swapped_t operator ^(const swapped_t &b) const { | ||||
| 		return swap() ^ b.swap(); | ||||
| 	} | ||||
| 	template <typename S> | ||||
| 	swapped_t operator ^(const S &b) const { | ||||
| 		return swap() ^ b; | ||||
| 	} | ||||
| 	swapped_t& operator ^=(const swapped_t &b) { | ||||
| 		value = swap(swap() ^ b.swap()); | ||||
| 		return *this; | ||||
| 	} | ||||
| 	template <typename S> | ||||
| 	swapped_t& operator ^=(const S &b) { | ||||
| 		value = swap(swap() ^ b); | ||||
| 		return *this; | ||||
| 	} | ||||
| 
 | ||||
| 	template <typename S> | ||||
| 	swapped_t operator <<(const S &b) const { | ||||
| 		return swap() << b; | ||||
| 	} | ||||
| 	template <typename S> | ||||
| 	swapped_t& operator <<=(const S &b) const { | ||||
| 		value = swap(swap() << b); | ||||
| 		return *this; | ||||
| 	} | ||||
| 
 | ||||
| 	template <typename S> | ||||
| 	swapped_t operator >>(const S &b) const { | ||||
| 		return swap() >> b; | ||||
| 	} | ||||
| 	template <typename S> | ||||
| 	swapped_t& operator >>=(const S &b) const { | ||||
| 		value = swap(swap() >> b); | ||||
| 		return *this; | ||||
| 	} | ||||
| 
 | ||||
| 	// Member
 | ||||
| 	/** todo **/ | ||||
| 
 | ||||
| 
 | ||||
| 	// Arithmetics
 | ||||
| 	template <typename S, typename T2, typename F2> | ||||
| 	friend S operator+(const S &p, const swapped_t v); | ||||
| 
 | ||||
| 	template <typename S, typename T2, typename F2> | ||||
| 	friend S operator-(const S &p, const swapped_t v); | ||||
| 
 | ||||
| 	template <typename S, typename T2, typename F2> | ||||
| 	friend S operator/(const S &p, const swapped_t v); | ||||
| 
 | ||||
| 	template <typename S, typename T2, typename F2> | ||||
| 	friend S operator*(const S &p, const swapped_t v); | ||||
| 
 | ||||
| 	template <typename S, typename T2, typename F2> | ||||
| 	friend S operator%(const S &p, const swapped_t v); | ||||
| 
 | ||||
| 	// Arithmetics + assignements
 | ||||
| 	template <typename S, typename T2, typename F2> | ||||
| 	friend S operator+=(const S &p, const swapped_t v); | ||||
| 
 | ||||
| 	template <typename S, typename T2, typename F2> | ||||
| 	friend S operator-=(const S &p, const swapped_t v); | ||||
| 
 | ||||
| 	// Bitmath
 | ||||
| 	template <typename S, typename T2, typename F2> | ||||
| 	friend S operator&(const S &p, const swapped_t v); | ||||
| 
 | ||||
| 	// Comparison
 | ||||
| 	template <typename S, typename T2, typename F2> | ||||
| 	friend bool operator<(const S &p, const swapped_t v); | ||||
| 
 | ||||
| 	template <typename S, typename T2, typename F2> | ||||
| 	friend bool operator>(const S &p, const swapped_t v); | ||||
| 
 | ||||
| 	template <typename S, typename T2, typename F2> | ||||
| 	friend bool operator<=(const S &p, const swapped_t v); | ||||
| 
 | ||||
| 	template <typename S, typename T2, typename F2> | ||||
| 	friend bool operator>=(const S &p, const swapped_t v); | ||||
| 
 | ||||
| 	template <typename S, typename T2, typename F2> | ||||
| 	friend bool operator!=(const S &p, const swapped_t v); | ||||
| 
 | ||||
| 	template <typename S, typename T2, typename F2> | ||||
| 	friend bool operator==(const S &p, const swapped_t v); | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| // Arithmetics
 | ||||
| template <typename S, typename T, typename F> | ||||
| S operator+(const S &i, const swap_struct_t<T, F> v) { | ||||
| 	return i + v.swap(); | ||||
| } | ||||
| 
 | ||||
| template <typename S, typename T, typename F> | ||||
| S operator-(const S &i, const swap_struct_t<T, F> v) { | ||||
| 	return i - v.swap(); | ||||
| } | ||||
| 
 | ||||
| template <typename S, typename T, typename F> | ||||
| S operator/(const S &i, const swap_struct_t<T, F> v) { | ||||
| 	return i / v.swap(); | ||||
| } | ||||
| 
 | ||||
| template <typename S, typename T, typename F> | ||||
| S operator*(const S &i, const swap_struct_t<T, F> v) { | ||||
| 	return i * v.swap(); | ||||
| } | ||||
| 
 | ||||
| template <typename S, typename T, typename F> | ||||
| S operator%(const S &i, const swap_struct_t<T, F> v) { | ||||
| 	return i % v.swap(); | ||||
| } | ||||
| 
 | ||||
| // Arithmetics + assignements
 | ||||
| template <typename S, typename T, typename F> | ||||
| S &operator+=(S &i, const swap_struct_t<T, F> v) { | ||||
| 	i += v.swap(); | ||||
| 	return i; | ||||
| } | ||||
| 
 | ||||
| template <typename S, typename T, typename F> | ||||
| S &operator-=(S &i, const swap_struct_t<T, F> v) { | ||||
| 	i -= v.swap(); | ||||
| 	return i; | ||||
| } | ||||
| 
 | ||||
| // Logical
 | ||||
| template <typename S, typename T, typename F> | ||||
| S operator&(const S &i, const swap_struct_t<T, F> v) { | ||||
| 	return i & v.swap(); | ||||
| } | ||||
| 
 | ||||
| template <typename S, typename T, typename F> | ||||
| S operator&(const swap_struct_t<T, F> v, const S &i) { | ||||
| 	return (S)(v.swap() & i); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| // Comparaison
 | ||||
| template <typename S, typename T, typename F> | ||||
| bool operator<(const S &p, const swap_struct_t<T, F> v) { | ||||
| 	return p < v.swap(); | ||||
| } | ||||
| template <typename S, typename T, typename F> | ||||
| bool operator>(const S &p, const swap_struct_t<T, F> v) { | ||||
| 	return p > v.swap(); | ||||
| } | ||||
| template <typename S, typename T, typename F> | ||||
| bool operator<=(const S &p, const swap_struct_t<T, F> v) { | ||||
| 	return p <= v.swap(); | ||||
| } | ||||
| template <typename S, typename T, typename F> | ||||
| bool operator>=(const S &p, const swap_struct_t<T, F> v) { | ||||
| 	return p >= v.swap(); | ||||
| } | ||||
| template <typename S, typename T, typename F> | ||||
| bool operator!=(const S &p, const swap_struct_t<T, F> v) { | ||||
| 	return p != v.swap(); | ||||
| } | ||||
| template <typename S, typename T, typename F> | ||||
| bool operator==(const S &p, const swap_struct_t<T, F> v) { | ||||
| 	return p == v.swap(); | ||||
| } | ||||
| 
 | ||||
| template <typename T> | ||||
| struct swap_64_t { | ||||
| 	static T swap(T x) { | ||||
| 		return (T)bswap64(*(u64 *)&x); | ||||
| 	} | ||||
| }; | ||||
| 
 | ||||
| template <typename T> | ||||
| struct swap_32_t { | ||||
| 	static T swap(T x) { | ||||
| 		return (T)bswap32(*(u32 *)&x); | ||||
| 	} | ||||
| }; | ||||
| 
 | ||||
| template <typename T> | ||||
| struct swap_16_t { | ||||
| 	static T swap(T x) { | ||||
| 		return (T)bswap16(*(u16 *)&x); | ||||
| 	} | ||||
| }; | ||||
| 
 | ||||
| template <typename T> | ||||
| struct swap_float_t { | ||||
| 	static T swap(T x) { | ||||
| 		return (T)bswapf(*(float *)&x); | ||||
| 	} | ||||
| }; | ||||
| 
 | ||||
| template <typename T> | ||||
| struct swap_double_t { | ||||
| 	static T swap(T x) { | ||||
| 		return (T)bswapd(*(double *)&x); | ||||
| 	} | ||||
| }; | ||||
| 
 | ||||
| #if COMMON_LITTLE_ENDIAN | ||||
| typedef u32 u32_le; | ||||
| typedef u16 u16_le; | ||||
| typedef u64 u64_le; | ||||
| 
 | ||||
| typedef s32 s32_le; | ||||
| typedef s16 s16_le; | ||||
| typedef s64 s64_le; | ||||
| 
 | ||||
| typedef float float_le; | ||||
| typedef double double_le; | ||||
| 
 | ||||
| typedef swap_struct_t<u64, swap_64_t<u64>> u64_be; | ||||
| typedef swap_struct_t<s64, swap_64_t<s64>> s64_be; | ||||
| 
 | ||||
| typedef swap_struct_t<u32, swap_32_t<u32>> u32_be; | ||||
| typedef swap_struct_t<s32, swap_32_t<s32>> s32_be; | ||||
| 
 | ||||
| typedef swap_struct_t<u16, swap_16_t<u16>> u16_be; | ||||
| typedef swap_struct_t<s16, swap_16_t<s16>> s16_be; | ||||
| 
 | ||||
| typedef swap_struct_t<float, swap_float_t<float> > float_be; | ||||
| typedef swap_struct_t<double, swap_double_t<double> > double_be; | ||||
| #else | ||||
| 
 | ||||
| typedef swap_struct_t<u64, swap_64_t<u64>> u64_le; | ||||
| typedef swap_struct_t<s64, swap_64_t<s64>> s64_le; | ||||
| 
 | ||||
| typedef swap_struct_t<u32, swap_32_t<u32>> u32_le; | ||||
| typedef swap_struct_t<s32, swap_32_t<s32>> s32_le; | ||||
| 
 | ||||
| typedef swap_struct_t<u16, swap_16_t<u16>> u16_le; | ||||
| typedef swap_struct_t<s16, swap_16_t<s16>> s16_le; | ||||
| 
 | ||||
| typedef swap_struct_t<float, swap_float_t<float> > float_le; | ||||
| typedef swap_struct_t<double, swap_double_t<double> > double_le; | ||||
| 
 | ||||
| typedef u32 u32_be; | ||||
| typedef u16 u16_be; | ||||
| typedef u64 u64_be; | ||||
| 
 | ||||
| typedef s32 s32_be; | ||||
| typedef s16 s16_be; | ||||
| typedef s64 s64_be; | ||||
| 
 | ||||
| typedef float float_be; | ||||
| typedef double double_be; | ||||
| #endif | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue