File indexing completed on 2024-04-28 03:53:04
0001 /* -*- C++ -*- 0002 SPDX-FileCopyrightText: 1998 Netscape Communications Corporation <developer@mozilla.org> 0003 0004 SPDX-License-Identifier: MIT 0005 */ 0006 0007 #ifndef nsPkgInt_h__ 0008 #define nsPkgInt_h__ 0009 0010 namespace kencodingprober 0011 { 0012 typedef enum { 0013 eIdxSft4bits = 3, 0014 eIdxSft8bits = 2, 0015 eIdxSft16bits = 1, 0016 } nsIdxSft; 0017 0018 typedef enum { 0019 eSftMsk4bits = 7, 0020 eSftMsk8bits = 3, 0021 eSftMsk16bits = 1, 0022 } nsSftMsk; 0023 0024 typedef enum { 0025 eBitSft4bits = 2, 0026 eBitSft8bits = 3, 0027 eBitSft16bits = 4, 0028 } nsBitSft; 0029 0030 typedef enum { 0031 eUnitMsk4bits = 0x0000000FL, 0032 eUnitMsk8bits = 0x000000FFL, 0033 eUnitMsk16bits = 0x0000FFFFL, 0034 } nsUnitMsk; 0035 0036 typedef struct nsPkgInt { 0037 nsIdxSft idxsft; 0038 nsSftMsk sftmsk; 0039 nsBitSft bitsft; 0040 nsUnitMsk unitmsk; 0041 const unsigned int *data; 0042 } nsPkgInt; 0043 } 0044 0045 #define PCK16BITS(a, b) ((unsigned int)(((b) << 16) | (a))) 0046 0047 #define PCK8BITS(a, b, c, d) PCK16BITS(((unsigned int)(((b) << 8) | (a))), ((unsigned int)(((d) << 8) | (c)))) 0048 0049 #define PCK4BITS(a, b, c, d, e, f, g, h) \ 0050 PCK8BITS(((unsigned int)(((b) << 4) | (a))), ((unsigned int)(((d) << 4) | (c))), ((unsigned int)(((f) << 4) | (e))), ((unsigned int)(((h) << 4) | (g)))) 0051 0052 #define GETFROMPCK(i, c) (((((c).data)[(i) >> (c).idxsft]) >> (((i) & (c).sftmsk) << (c).bitsft)) & (c).unitmsk) 0053 0054 #endif /* nsPkgInt_h__ */