123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- #undef CAREFUL_ALIGNMENT
- #undef AVOID_BYTEORDER_INLINE
- #ifdef __i386__
- #define CAREFUL_ALIGNMENT 0
- #endif
- #ifndef CAREFUL_ALIGNMENT
- #define CAREFUL_ALIGNMENT 1
- #endif
- #define CVAL(buf,pos) (((unsigned char *)(buf))[pos])
- #define UVAL(buf,pos) ((uint32)CVAL(buf,pos))
- #if CAREFUL_ALIGNMENT
- #define PVAL(buf,pos) (UVAL(buf,pos)|UVAL(buf,(pos)+1)<<8)
- #define IVAL(buf,pos) (PVAL(buf,pos)|PVAL(buf,(pos)+2)<<16)
- #define SSVALX(buf,pos,val) (CVAL(buf,pos)=(val)&0xFF,CVAL(buf,pos+1)=(val)>>8)
- #define SIVALX(buf,pos,val) (SSVALX(buf,pos,val&0xFFFF),SSVALX(buf,pos+2,val>>16))
- #define SIVAL(buf,pos,val) SIVALX((buf),(pos),((uint32)(val)))
- #define IVALu(buf,pos) IVAL(buf,pos)
- #define SIVALu(buf,pos,val) SIVAL(buf,pos,val)
- #else /* !CAREFUL_ALIGNMENT */
- # ifdef AVOID_BYTEORDER_INLINE
- #define IVAL(buf,pos) (*(uint32 *)((char *)(buf) + (pos)))
- #define SIVAL(buf,pos,val) IVAL(buf,pos)=((uint32)(val))
- #define IVALu(buf,pos) IVAL(buf,pos)
- #define SIVALu(buf,pos,val) SIVAL(buf,pos,val)
- # else /* !AVOID_BYTEORDER_INLINE */
- static inline uint32
- IVALu(const uchar *buf, int pos)
- {
- union {
- const uchar *b;
- const uint32 *num;
- } u;
- u.b = buf + pos;
- return *u.num;
- }
- static inline void
- SIVALu(uchar *buf, int pos, uint32 val)
- {
- union {
- uchar *b;
- uint32 *num;
- } u;
- u.b = buf + pos;
- *u.num = val;
- }
- static inline uint32
- IVAL(const char *buf, int pos)
- {
- return IVALu((uchar*)buf, pos);
- }
- static inline void
- SIVAL(char *buf, int pos, uint32 val)
- {
- SIVALu((uchar*)buf, pos, val);
- }
- # endif /* !AVOID_BYTEORDER_INLINE */
- #endif /* !CAREFUL_ALIGNMENT */
|