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__ */