mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
				synced 2025-03-21 01:53:15 +00:00 
			
		
		
		
	ipc_helpers: Allow pushing and popping floating-point values
Certain values that are passed through the IPC buffer are actually floating point values, not solely integral values.
This commit is contained in:
		
							parent
							
								
									29c242721a
								
							
						
					
					
						commit
						64444ff481
					
				@ -274,6 +274,20 @@ inline void ResponseBuilder::Push(u64 value) {
 | 
			
		||||
    Push(static_cast<u32>(value >> 32));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template <>
 | 
			
		||||
inline void ResponseBuilder::Push(float value) {
 | 
			
		||||
    u32 integral;
 | 
			
		||||
    std::memcpy(&integral, &value, sizeof(u32));
 | 
			
		||||
    Push(integral);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template <>
 | 
			
		||||
inline void ResponseBuilder::Push(double value) {
 | 
			
		||||
    u64 integral;
 | 
			
		||||
    std::memcpy(&integral, &value, sizeof(u64));
 | 
			
		||||
    Push(integral);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template <>
 | 
			
		||||
inline void ResponseBuilder::Push(bool value) {
 | 
			
		||||
    Push(static_cast<u8>(value));
 | 
			
		||||
@ -415,6 +429,22 @@ inline s64 RequestParser::Pop() {
 | 
			
		||||
    return static_cast<s64>(Pop<u64>());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template <>
 | 
			
		||||
inline float RequestParser::Pop() {
 | 
			
		||||
    const u32 value = Pop<u32>();
 | 
			
		||||
    float real;
 | 
			
		||||
    std::memcpy(&real, &value, sizeof(real));
 | 
			
		||||
    return real;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template <>
 | 
			
		||||
inline double RequestParser::Pop() {
 | 
			
		||||
    const u64 value = Pop<u64>();
 | 
			
		||||
    float real;
 | 
			
		||||
    std::memcpy(&real, &value, sizeof(real));
 | 
			
		||||
    return real;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template <>
 | 
			
		||||
inline bool RequestParser::Pop() {
 | 
			
		||||
    return Pop<u8>() != 0;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user