mirror of
https://github.com/git/git.git
synced 2026-01-09 17:46:37 +00:00
reftable/basics: provide wrappers for big endian conversion
We're using a mixture of big endian conversion functions provided by both the reftable library, but also by the Git codebase. Refactor the code so that we exclusively use reftable-provided wrappers in order to untangle us from the Git codebase. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
6e3ea71639
commit
e676694298
@@ -76,9 +76,79 @@ char *reftable_buf_detach(struct reftable_buf *buf);
|
||||
|
||||
/* Bigendian en/decoding of integers */
|
||||
|
||||
void put_be24(uint8_t *out, uint32_t i);
|
||||
uint32_t get_be24(uint8_t *in);
|
||||
void put_be16(uint8_t *out, uint16_t i);
|
||||
static inline void reftable_put_be16(void *out, uint16_t i)
|
||||
{
|
||||
unsigned char *p = out;
|
||||
p[0] = (uint8_t)((i >> 8) & 0xff);
|
||||
p[1] = (uint8_t)((i >> 0) & 0xff);
|
||||
}
|
||||
|
||||
static inline void reftable_put_be24(void *out, uint32_t i)
|
||||
{
|
||||
unsigned char *p = out;
|
||||
p[0] = (uint8_t)((i >> 16) & 0xff);
|
||||
p[1] = (uint8_t)((i >> 8) & 0xff);
|
||||
p[2] = (uint8_t)((i >> 0) & 0xff);
|
||||
}
|
||||
|
||||
static inline void reftable_put_be32(void *out, uint32_t i)
|
||||
{
|
||||
unsigned char *p = out;
|
||||
p[0] = (uint8_t)((i >> 24) & 0xff);
|
||||
p[1] = (uint8_t)((i >> 16) & 0xff);
|
||||
p[2] = (uint8_t)((i >> 8) & 0xff);
|
||||
p[3] = (uint8_t)((i >> 0) & 0xff);
|
||||
}
|
||||
|
||||
static inline void reftable_put_be64(void *out, uint64_t i)
|
||||
{
|
||||
unsigned char *p = out;
|
||||
p[0] = (uint8_t)((i >> 56) & 0xff);
|
||||
p[1] = (uint8_t)((i >> 48) & 0xff);
|
||||
p[2] = (uint8_t)((i >> 40) & 0xff);
|
||||
p[3] = (uint8_t)((i >> 32) & 0xff);
|
||||
p[4] = (uint8_t)((i >> 24) & 0xff);
|
||||
p[5] = (uint8_t)((i >> 16) & 0xff);
|
||||
p[6] = (uint8_t)((i >> 8) & 0xff);
|
||||
p[7] = (uint8_t)((i >> 0) & 0xff);
|
||||
}
|
||||
|
||||
static inline uint16_t reftable_get_be16(const void *in)
|
||||
{
|
||||
const unsigned char *p = in;
|
||||
return (uint16_t)(p[0]) << 8 |
|
||||
(uint16_t)(p[1]) << 0;
|
||||
}
|
||||
|
||||
static inline uint32_t reftable_get_be24(const void *in)
|
||||
{
|
||||
const unsigned char *p = in;
|
||||
return (uint32_t)(p[0]) << 16 |
|
||||
(uint32_t)(p[1]) << 8 |
|
||||
(uint32_t)(p[2]) << 0;
|
||||
}
|
||||
|
||||
static inline uint32_t reftable_get_be32(const void *in)
|
||||
{
|
||||
const unsigned char *p = in;
|
||||
return (uint32_t)(p[0]) << 24 |
|
||||
(uint32_t)(p[1]) << 16 |
|
||||
(uint32_t)(p[2]) << 8|
|
||||
(uint32_t)(p[3]) << 0;
|
||||
}
|
||||
|
||||
static inline uint64_t reftable_get_be64(const void *in)
|
||||
{
|
||||
const unsigned char *p = in;
|
||||
return (uint64_t)(p[0]) << 56 |
|
||||
(uint64_t)(p[1]) << 48 |
|
||||
(uint64_t)(p[2]) << 40 |
|
||||
(uint64_t)(p[3]) << 32 |
|
||||
(uint64_t)(p[4]) << 24 |
|
||||
(uint64_t)(p[5]) << 16 |
|
||||
(uint64_t)(p[6]) << 8 |
|
||||
(uint64_t)(p[7]) << 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* find smallest index i in [0, sz) at which `f(i) > 0`, assuming that f is
|
||||
|
||||
Reference in New Issue
Block a user