|
| #define | BITSTYPE U32 |
| |
| #define | BITSTYPELEN 32 |
| |
| #define | BITSTYPEBYTES 4 |
| |
| #define | BITSTOPMASK (1UL<<(BITSTYPELEN-1)) |
| |
| #define | VarBitsOpen(vb, pointer) { (vb).cur=(vb).init=pointer; (vb).bits=(vb).bitlen=0; } |
| |
| #define | VarBitsLocalOpen(vb, pointer) { vb##cur=pointer; vb##bits=vb##bitlen=0; } |
| |
| #define | VARBITSTEMP BITSTYPE |
| |
| #define | VarBitsPut(vb, val, size) { U32 __s=size; U32 __v=(val)&VarBitsLens[__s]; (vb).bits|=__v<<((vb).bitlen); (vb).bitlen+=__s; if ((vb).bitlen>=32) { *((U32*)(vb).cur)=(vb).bits; (vb).cur=((char*)((vb).cur)+4); (vb).bitlen-=32; (vb).bits=0; if ((vb).bitlen) { (vb).bits=__v>>(__s-(vb).bitlen); } } } |
| |
| #define | VarBitsPut1(vb, boolean) { if (boolean) (vb).bits|=(1<<(vb).bitlen); if ((++(vb).bitlen)==32) { *((U32*)(vb).cur)=(vb).bits; (vb).cur=((char*)((vb).cur)+4); (vb).bits=(vb).bitlen=0; } } |
| |
| #define | VarBitsPuta1(vb) { (vb).bits|=(1<<(vb).bitlen); if ((++(vb).bitlen)==32) { *((U32*)(vb).cur)=(vb).bits; (vb).cur=((char*)((vb).cur)+4); (vb).bits=(vb).bitlen=0; } } |
| |
| #define | VarBitsPuta0(vb) { if ((++(vb).bitlen)==32) { *((U32*)(vb).cur)=(vb).bits; (vb).cur=((char*)((vb).cur)+4); (vb).bits=(vb).bitlen=0; } } |
| |
| #define | VarBitsPutAlign(vb) { U32 __s2=(32-(vb).bitlen)&31; if (__s2) { VarBitsPut((vb),0,__s2); } } |
| |
| #define | VarBitsFlushtoMemOnly(vb) { if (((vb).bitlen)) { *((U32*)(vb).cur)=(vb).bits; } } |
| |
| #define | VarBitsConvertPutToGet(gvb, pvb) { if (((pvb).bitlen)) { (gvb).bits=(*((U32*)(pvb).cur))>>(pvb).bitlen; (gvb).bitlen=BITSTYPELEN-(pvb).bitlen; (gvb).cur=((char*)((pvb).cur)+4); } else { (gvb).bits=0; (gvb).bitlen=0; (gvb).cur=(pvb).cur; } (gvb).init=(pvb).init; } |
| |
| #define | VarBitsFlush(vb) VarBitsPutAlign(vb) |
| |
| #define | VarBitsSize(vb) ((U32)( (((char*)(vb).cur)-((char*)(vb).init))*8 +(vb).bitlen )) |
| |
| #define | getbitlevelconst(level) |
| |
| #define | VarBitsGetAlign(vb) { (vb).bitlen=0; } |
| |
| #define | VarBitsPos(vb) ((U32)( (((U8*)(vb).cur)-((U8*)(vb).init))*8-(vb).bitlen )) |
| |
| #define | GetBitsLen(val) (((U32)0xffffffff)>>(U32)(32-(val))) |
| |
| #define | VarBitsGet1(vb, i) |
| |
| #define | VarBitsGet1LE(vb, i) |
| |
| #define | VarBitsGet(v, typ, vb, len) |
| |
| #define | VarBitsGetWithCheck(v, typ, vb, len, endp, dowhat) |
| |
| #define | VarBitsGetWithCheckBE(v, typ, vb, len, endp, dowhat) |
| |
| #define | VarBitsGetWithCheckLE(v, typ, vb, len, endp, dowhat) |
| |
| #define | VarBitsPeek(v, typ, vb, len) |
| |
| #define | VarBitsGetLE(v, typ, vb, len) |
| |
| #define | VarBitsUse(vb, len) |
| |
| #define | VARBITSLOCAL(name) void * name##cur; BITSTYPE name##bits; U32 name##bitlen |
| |
| #define | VarBitsLocalGet(v, typ, vb, len) |
| |
| #define | VarBitsLocalGetWithCheckBase(v, typ, vb, len, mask, endp, dowhat, load) |
| |
| #define | radloadbitsnative(ptr) (*((BITSTYPE* RADRESTRICT)(ptr))) |
| |
| #define | VarBitsLocalGetWithCheck(v, typ, vb, len, endp, dowhat) VarBitsLocalGetWithCheckBase(v,typ,vb,len,GetBitsLen(len),endp,dowhat,radloadbitsnative) |
| |
| #define | VarBitsLocalGetWithCheckBE(v, typ, vb, len, endp, dowhat) VarBitsLocalGetWithCheckBase(v,typ,vb,len,GetBitsLen(len),endp,dowhat,radloadu32ptrBE) |
| |
| #define | VarBitsLocalGetWithCheckLE(v, typ, vb, len, endp, dowhat) VarBitsLocalGetWithCheckBase(v,typ,vb,len,GetBitsLen(len),endp,dowhat,radloadu32ptr) |
| |
| #define | VarBitsLocalGetWithCheckM(v, typ, vb, len, mask, endp, dowhat) VarBitsLocalGetWithCheckBase(v,typ,vb,len,mask,endp,dowhat,radloadbitsnative) |
| |
| #define | VarBitsLocalGetWithCheckMBE(v, typ, vb, len, mask, endp, dowhat) VarBitsLocalGetWithCheckBase(v,typ,vb,len,mask,endp,dowhat,radloadu32ptrBE) |
| |
| #define | VarBitsLocalGetWithCheckMLE(v, typ, vb, len, mask, endp, dowhat) VarBitsLocalGetWithCheckBase(v,typ,vb,len,mask,endp,dowhat,radloadu32ptr) |
| |
| #define | VarBitsLocalFill1WithCheckBase(vb, endp, cond, dowhat, load) |
| |
| #define | VarBitsLocalGet1WithCheckBase(v, vb, endp, dowhat, load) |
| |
| #define | VarBitsLocalFill1WithCheck(vb, endp, cond, dowhat) VarBitsLocalFill1WithCheckBase(vb,endp,cond,dowhat,radloadbitsnative) |
| |
| #define | VarBitsLocalFill1WithCheckBE(vb, endp, cond, dowhat) VarBitsLocalFill1WithCheckBase(vb,endp,cond,dowhat,radloadu32ptrBE) |
| |
| #define | VarBitsLocalFill1WithCheckLE(vb, endp, cond, dowhat) VarBitsLocalFill1WithCheckBase(vb,endp,cond,dowhat,radloadu32ptr) |
| |
| #define | VarBitsLocalGet1WithCheck(v, vb, endp, dowhat) VarBitsLocalGet1WithCheckBase(v,vb,endp,dowhat,radloadbitsnative) |
| |
| #define | VarBitsLocalGet1WithCheckBE(v, vb, endp, dowhat) VarBitsLocalGet1WithCheckBase(v,vb,endp,dowhat,radloadu32ptrBE) |
| |
| #define | VarBitsLocalGet1WithCheckLE(v, vb, endp, dowhat) VarBitsLocalGet1WithCheckBase(v,vb,endp,dowhat,radloadu32ptr) |
| |
| #define | VarBitsLocalGetIfxSM(v, typ, vb, len, i, x, mask) |
| |
| #define | VarBitsLocalGetIfx(v, typ, vb, len, i, x) VarBitsLocalGetIfxSM(v,typ,vb,len,i,x,&GetBitLen(len)) |
| |
| #define | VarBitsLocalGetIfxNM(v, typ, vb, len, i, x) VarBitsLocalGetIfxSM(v,typ,vb,len,i,x, ) |
| |
| #define | VarBitsLocalPeek(v, typ, vb, len) |
| |
| #define | VarBitsLocalGet1BE(vb, i) |
| |
| #define | VarBitsLocalGet1LE(vb, i) |
| |
| #define | VarBitsLocalMaskFromMaskAndUse1(omask, vb, imask) |
| |
| #define | VarBitsLocalGet1(vb, i) |
| |
| #define | VarBitsLocalUse(vb, len) |
| |
| #define | VarBitsLocalPos(vb, origvb) ((U32)( (((char*)vb##cur)-((char*)(origvb)->init))*8 +(32-vb##bitlen) )) |
| |
| #define | VarBitsCopyToLocal(local, vb) local##cur = (vb).cur; local##bits = (vb).bits; local##bitlen = (vb).bitlen; |
| |
| #define | VarBitsCopyFromLocal(vb, local) (vb).cur = local##cur; (vb).bits = local##bits; (vb).bitlen = local##bitlen; |
| |
| #define | CLASSIFY_SIGN(val) ( (((U32)((S32)(val))) >> 31 ) + ((((U32)(-(S32)(val))) >> 30 ) & 2 ) ) |
| |
| #define | VarBitsBPutOpen(vb, ptr) { (vb).cur=(vb).init=(void *)(ptr); (vb).bits=(vb).bitlen=0; (vb).isPut = 1; } |
| |
| #define | VarBitsBGetOpen(vb, ptr) { (vb).cur=(vb).init=(void *)(ptr); (vb).bits=(vb).bitlen=0; (vb).isPut = 0; } |
| |
| #define | VarBitsBPut(vb, val, size) |
| |
| #define | VarBitsBPuta1(vb) { (vb).bits = (vb).bits + (vb).bits + 1; if ((++(vb).bitlen)==BITSTYPELEN) { *((U32*)(vb).cur)=(vb).bits; (vb).cur=((char*)((vb).cur)+4); (vb).bits=(vb).bitlen=0; } } |
| |
| #define | VarBitsBPuta0(vb) { (vb).bits <<= 1; if ((++(vb).bitlen)==BITSTYPELEN) { *((U32*)(vb).cur)=(vb).bits; (vb).cur=((char*)((vb).cur)+4); (vb).bits=(vb).bitlen=0; } } |
| |
| #define | VarBitsBPut1(vb, bit) { (vb).bits = (vb).bits + (vb).bits + ((bit)?1:0); if ((++(vb).bitlen)==BITSTYPELEN) { *((U32*)(vb).cur)=(vb).bits; (vb).cur=((char*)((vb).cur)+4); (vb).bits=(vb).bitlen=0; } } |
| |
| #define | VarBitsBPutAlign(vb) { U32 __s2=(32-(vb).bitlen)&31; if (__s2) { VarBitsBPut((vb),0,__s2); } } |
| |
| #define | VarBitsBPutFlush(vb) VarBitsBPutAlign(vb) |
| |
| #define | VarBitsBGetAlign(vb) { (vb).bitlen=0; } |
| |
| #define | VarBitsBPutSize(vb) ((U32)( (((char*)(vb).cur)-((char*)(vb).init))*8 +(vb).bitlen )) |
| |
| #define | VarBitsBGetSize(vb) ((U32)( (((char*)(vb).cur)-((char*)(vb).init))*8 -(vb).bitlen )) |
| |
| #define | VarBitsBGet(v, typ, vb, len) |
| |
| #define | VarBitsBPeek(v, typ, vb, len) |
| |
| #define | VarBitsBUse(vb, len) |
| |
| #define | VarBitsBGet1(vb, temp_u32) |
| |