xref: /plan9/sys/src/libventi/cvt.h (revision 368c31ab13393dea083228fdd1c3445076f83a4b)
1*368c31abSDavid du Colombier /*
2*368c31abSDavid du Colombier  * integer conversion routines
3*368c31abSDavid du Colombier  */
4*368c31abSDavid du Colombier #define	U8GET(p)	((p)[0])
5*368c31abSDavid du Colombier #define	U16GET(p)	(((p)[0]<<8)|(p)[1])
6*368c31abSDavid du Colombier #define	U32GET(p)	((u32int)(((p)[0]<<24)|((p)[1]<<16)|((p)[2]<<8)|(p)[3]))
7*368c31abSDavid du Colombier #define	U48GET(p)	(((vlong)U16GET(p)<<32)|(vlong)U32GET((p)+2))
8*368c31abSDavid du Colombier #define	U64GET(p)	(((vlong)U32GET(p)<<32)|(vlong)U32GET((p)+4))
9*368c31abSDavid du Colombier 
10*368c31abSDavid du Colombier #define	U8PUT(p,v)	(p)[0]=(v)
11*368c31abSDavid du Colombier #define	U16PUT(p,v)	(p)[0]=(v)>>8;(p)[1]=(v)
12*368c31abSDavid du Colombier #define	U32PUT(p,v)	(p)[0]=(v)>>24;(p)[1]=(v)>>16;(p)[2]=(v)>>8;(p)[3]=(v)
13*368c31abSDavid du Colombier #define	U48PUT(p,v,t32)	t32=(v)>>32;U16PUT(p,t32);t32=(v);U32PUT((p)+2,t32)
14*368c31abSDavid du Colombier #define	U64PUT(p,v,t32)	t32=(v)>>32;U32PUT(p,t32);t32=(v);U32PUT((p)+4,t32)
15*368c31abSDavid du Colombier 
16