view mercurial/bitmanipulation.h @ 34900:3a3adbcbd3a0

obsfate: rename obsfate into obsolete in changeset_printer Yuja's comment on the original obsfate about how we would translate obsfate and the recent discussions about exposing users to new concepts and names lead have led me to think that 'obsfate' should be treated as internal jargon. End- users should not be aware of obsfate, so we replace 'obsfate' by 'obsolete' in changeset_printer. It will be easier to understand for end-users, easier to translate and closer to the original Evolve obsfate output. I'm aware it's extremely late in the cycle but I think it's an UX improvement for the end-users. Differential Revision: https://phab.mercurial-scm.org/D1189
author Boris Feld <boris.feld@octobus.net>
date Thu, 19 Oct 2017 12:32:42 +0200
parents ce77b0563228
children 1fb2510cf8c8
line wrap: on
line source

#ifndef _HG_BITMANIPULATION_H_
#define _HG_BITMANIPULATION_H_

#include <string.h>

#include "compat.h"

static inline uint32_t getbe32(const char *c)
{
	const unsigned char *d = (const unsigned char *)c;

	return ((d[0] << 24) | (d[1] << 16) | (d[2] << 8) | (d[3]));
}

static inline int16_t getbeint16(const char *c)
{
	const unsigned char *d = (const unsigned char *)c;

	return ((d[0] << 8) | (d[1]));
}

static inline uint16_t getbeuint16(const char *c)
{
	const unsigned char *d = (const unsigned char *)c;

	return ((d[0] << 8) | (d[1]));
}

static inline void putbe32(uint32_t x, char *c)
{
	c[0] = (x >> 24) & 0xff;
	c[1] = (x >> 16) & 0xff;
	c[2] = (x >> 8) & 0xff;
	c[3] = (x)&0xff;
}

static inline double getbefloat64(const char *c)
{
	const unsigned char *d = (const unsigned char *)c;
	double ret;
	int i;
	uint64_t t = 0;
	for (i = 0; i < 8; i++) {
		t = (t << 8) + d[i];
	}
	memcpy(&ret, &t, sizeof(t));
	return ret;
}

#endif