add uint32_read interface.

master
leitner 23 years ago
parent eb3596b745
commit 5143381995

@ -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];
}

@ -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];
}

@ -3,40 +3,21 @@
typedef unsigned int uint32; typedef unsigned int uint32;
#ifndef __linux__ #if defined(__i386__) && !defined(NO_UINT32_MACROS)
#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 <endian.h>
#if __BYTE_ORDER == __LITTLE_ENDIAN
#define uint32_pack(out,in) (*(uint32*)(out)=(in)) #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_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 void uint32_unpack_big(const char *in,uint32* out);
extern uint32 uint32_read_big(const char *in);
#else #else
extern void uint32_pack(char *out,uint32 in); extern void uint32_pack(char *out,uint32 in);
extern void uint32_pack_big(char *out,uint32 in);
#define uint32_pack_big(out,in) (*(uint32*)(out)=(in))
extern void uint32_unpack(const char *in,uint32* out); extern void uint32_unpack(const char *in,uint32* out);
extern void uint32_unpack_big(const char *in,uint32* out);
#define uint32_unpack_big(in,out) (*(out)=*(uint32*)(in)) extern uint32 uint32_read(const char *in);
extern uint32 uint32_read_big(const char *in);
#endif
#endif #endif

Loading…
Cancel
Save