lsnes/serialize.hpp

46 lines
907 B
C++

#pragma once
void write_val8(char* out, const uint8_t& var)
{
*out = var;
}
void write_val32(char* out, const unsigned& var)
{
out[0] = var >> 24;
out[1] = var >> 16;
out[2] = var >> 8;
out[3] = var;
}
void write_val16a(char* out, const uint16_t* var, size_t elems)
{
for(size_t i = 0; i < elems; i++) {
out[2 * i + 0] = var[i] >> 8;
out[2 * i + 1] = var[i];
}
}
void read_val32(const char* in, unsigned& var)
{
var = 0;
var |= ((unsigned)(unsigned char)in[0] << 24);
var |= ((unsigned)(unsigned char)in[1] << 16);
var |= ((unsigned)(unsigned char)in[2] << 8);
var |= ((unsigned)(unsigned char)in[3]);
}
void read_val8(const char* in, uint8_t& var)
{
var = in[0];
}
void read_val16a(const char* in, uint16_t* var, size_t elems)
{
for(size_t i = 0; i < elems; i++) {
var[i] = 0;
var[i] |= ((unsigned)(unsigned char)in[0] << 8);
var[i] |= ((unsigned)(unsigned char)in[1]);
}
}