From 51433819957dbac8558c3c195ffbfd10e2aaa91c Mon Sep 17 00:00:00 2001 From: leitner Date: Mon, 15 Apr 2002 18:57:03 +0000 Subject: [PATCH] add uint32_read interface. --- uint/uint32_read.c | 9 +++++++++ uint/uint32_read_big.c | 9 +++++++++ uint32.h | 35 ++++++++--------------------------- 3 files changed, 26 insertions(+), 27 deletions(-) create mode 100644 uint/uint32_read.c create mode 100644 uint/uint32_read_big.c diff --git a/uint/uint32_read.c b/uint/uint32_read.c new file mode 100644 index 0000000..2a355c9 --- /dev/null +++ b/uint/uint32_read.c @@ -0,0 +1,9 @@ +#define NO_UINT32_MACROS +#include "uint32.h" + +uint32 uint32_read(const char *in) { + return (((uint32)(unsigned char)in[3])<<24) | + (((uint32)(unsigned char)in[2])<<16) | + (((uint32)(unsigned char)in[1])<<8) | + (uint32)(unsigned char)in[0]; +} diff --git a/uint/uint32_read_big.c b/uint/uint32_read_big.c new file mode 100644 index 0000000..ea73897 --- /dev/null +++ b/uint/uint32_read_big.c @@ -0,0 +1,9 @@ +#define NO_UINT32_MACROS +#include "uint32.h" + +uint32 uint32_read_big(const char *in) { + return (((uint32)(unsigned char)in[0])<<24) | + (((uint32)(unsigned char)in[1])<<16) | + (((uint32)(unsigned char)in[2])<<8) | + (uint32)(unsigned char)in[3]; +} diff --git a/uint32.h b/uint32.h index 609eeef..b32db31 100644 --- a/uint32.h +++ b/uint32.h @@ -3,40 +3,21 @@ typedef unsigned int uint32; -#ifndef __linux__ -#define NO_UINT32_MACROS -#endif - -#ifdef NO_UINT32_MACROS -extern void uint32_pack(char *out,uint32 in); -extern void uint32_pack_big(char *out,uint32 in); -extern void uint32_unpack(const char *in,uint32* out); -extern void uint32_unpack_big(const char *in,uint32* out); -#else - -#include - -#if __BYTE_ORDER == __LITTLE_ENDIAN - +#if defined(__i386__) && !defined(NO_UINT32_MACROS) #define uint32_pack(out,in) (*(uint32*)(out)=(in)) - -extern void uint32_pack_big(char *out,uint32 in); - #define uint32_unpack(in,out) (*(out)=*(uint32*)(in)) - +#define uint32_read(in) (*(uint32*)in) +extern void uint32_pack_big(char *out,uint32 in); extern void uint32_unpack_big(const char *in,uint32* out); - +extern uint32 uint32_read_big(const char *in); #else extern void uint32_pack(char *out,uint32 in); - -#define uint32_pack_big(out,in) (*(uint32*)(out)=(in)) - +extern void uint32_pack_big(char *out,uint32 in); extern void uint32_unpack(const char *in,uint32* out); - -#define uint32_unpack_big(in,out) (*(out)=*(uint32*)(in)) - -#endif +extern void uint32_unpack_big(const char *in,uint32* out); +extern uint32 uint32_read(const char *in); +extern uint32 uint32_read_big(const char *in); #endif