| #ifndef EXTEND_SHIFT_HELPERS_H |
| #define EXTEND_SHIFT_HELPERS_H |
| |
| #define RT_EXT_CT_RSHIFT_N_AT(RTS,RT,CTS,CT,N,ATS,AT) \ |
| RTS RT \ |
| RTS##_##RT##_ext_##CTS##_##CT##_rshift_##N##_##ATS##_##AT(ATS AT v) \ |
| { \ |
| return (CTS CT)(v >> N); \ |
| } |
| |
| #define SLONG_EXT_SCHAR_RSHIFT_N_SLONG(N) \ |
| RT_EXT_CT_RSHIFT_N_AT(signed,long,signed,char,N,signed,long) |
| |
| #define SLONG_EXT_SSHORT_RSHIFT_N_SLONG(N) \ |
| RT_EXT_CT_RSHIFT_N_AT(signed,long,signed,short,N,signed,long) |
| |
| #define SLONG_EXT_SINT_RSHIFT_N_SLONG(N) \ |
| RT_EXT_CT_RSHIFT_N_AT(signed,long,signed,int,N,signed,long) |
| |
| #define SINT_EXT_SSHORT_RSHIFT_N_SINT(N) \ |
| RT_EXT_CT_RSHIFT_N_AT(signed,int,signed,short,N,signed,int) |
| |
| #define SINT_EXT_SSHORT_RSHIFT_N_SLONG(N) \ |
| RT_EXT_CT_RSHIFT_N_AT(signed,int,signed,short,N,signed,long) |
| |
| #define SLONG_EXT_SSHORT_RSHIFT_N_SINT(N) \ |
| RT_EXT_CT_RSHIFT_N_AT(signed,long,signed,short,N,signed,int) |
| |
| |
| |
| #define ULONG_EXT_USHORT_RSHIFT_N_ULONG(N) \ |
| RT_EXT_CT_RSHIFT_N_AT(unsigned,long,unsigned,short,N,unsigned,long) |
| |
| #define ULONG_EXT_UINT_RSHIFT_N_ULONG(N) \ |
| RT_EXT_CT_RSHIFT_N_AT(unsigned,long,unsigned,int,N,unsigned,long) |
| |
| #define UINT_EXT_USHORT_RSHIFT_N_UINT(N) \ |
| RT_EXT_CT_RSHIFT_N_AT(unsigned,int,unsigned,short,N,unsigned,int) |
| |
| #define UINT_EXT_USHORT_RSHIFT_N_ULONG(N) \ |
| RT_EXT_CT_RSHIFT_N_AT(unsigned,int,unsigned,short,N,unsigned,long) |
| |
| #define ULONG_EXT_USHORT_RSHIFT_N_UINT(N) \ |
| RT_EXT_CT_RSHIFT_N_AT(unsigned,long,unsigned,short,N,unsigned,int) |
| |
| #endif /* EXTEND_SHIFT_HELPERS_H */ |