Fix "type punning" warning in printing floats (#33)
Signed-off-by: Erik Boasson <eb@ilities.com>
This commit is contained in:
		
							parent
							
								
									3edf332573
								
							
						
					
					
						commit
						44e61e20e0
					
				
					 1 changed files with 10 additions and 6 deletions
				
			
		| 
						 | 
				
			
			@ -411,18 +411,22 @@ public:
 | 
			
		|||
  }
 | 
			
		||||
  inline void print(float & x)
 | 
			
		||||
  {
 | 
			
		||||
    union { uint32_t u; float f; } tmp;
 | 
			
		||||
    align(sizeof(x));
 | 
			
		||||
    uint32_t z = *reinterpret_cast<const uint32_t *>(data + pos);
 | 
			
		||||
    if (swap_bytes) {z = bswap4u(z);}
 | 
			
		||||
    prtf(&buf, &bufsize, "%f", *reinterpret_cast<float *>(&z));
 | 
			
		||||
    tmp.u = *reinterpret_cast<const uint32_t *>(data + pos);
 | 
			
		||||
    if (swap_bytes) {tmp.u = bswap4u(tmp.u);}
 | 
			
		||||
    static_cast<void>(tmp.u);
 | 
			
		||||
    prtf(&buf, &bufsize, "%f", tmp.f);
 | 
			
		||||
    pos += sizeof(x);
 | 
			
		||||
  }
 | 
			
		||||
  inline void print(double & x)
 | 
			
		||||
  {
 | 
			
		||||
    union { uint64_t u; double f; } tmp;
 | 
			
		||||
    align(sizeof(x));
 | 
			
		||||
    uint64_t z = *reinterpret_cast<const uint64_t *>(data + pos);
 | 
			
		||||
    if (swap_bytes) {z = bswap8u(z);}
 | 
			
		||||
    prtf(&buf, &bufsize, "%f", *reinterpret_cast<double *>(&z));
 | 
			
		||||
    tmp.u = *reinterpret_cast<const uint64_t *>(data + pos);
 | 
			
		||||
    if (swap_bytes) {tmp.u = bswap8u(tmp.u);}
 | 
			
		||||
    static_cast<void>(tmp.u);
 | 
			
		||||
    prtf(&buf, &bufsize, "%f", tmp.f);
 | 
			
		||||
    pos += sizeof(x);
 | 
			
		||||
  }
 | 
			
		||||
  inline uint32_t get32()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue