14 class TestBitFields :
public BitField<uword, int32_t, 1, 8> {};
15 EXPECT(TestBitFields::is_valid(16));
16 EXPECT(!TestBitFields::is_valid(256));
17 EXPECT_EQ(0x00ffU, TestBitFields::mask());
18 EXPECT_EQ(0x001feU, TestBitFields::mask_in_place());
19 EXPECT_EQ(1, TestBitFields::shift());
20 EXPECT_EQ(8, TestBitFields::bitsize());
21 EXPECT_EQ(32U, TestBitFields::encode(16));
22 EXPECT_EQ(16, TestBitFields::decode(32));
23 EXPECT_EQ(2U, TestBitFields::update(1, 16));
28 class F1 :
public BitField<T, intptr_t, 0, 8, true> {};
30 :
public BitField<T, uintptr_t, F1::kNextBit, 8, false> {
33 :
public BitField<T, intptr_t, F2::kNextBit, 8, true> {};
35 :
public BitField<T, uintptr_t, F3::kNextBit, 8, false> {
38 const uint32_t
value =
39 F1::encode(-1) | F2::encode(1) | F3::encode(-2) | F4::encode(2);
40 EXPECT_EQ(0x02fe01ffU,
value);
41 EXPECT_EQ(-1, F1::decode(
value));
42 EXPECT_EQ(1U, F2::decode(
value));
43 EXPECT_EQ(-2, F3::decode(
value));
44 EXPECT_EQ(2U, F4::decode(
value));
49 class F1 :
public BitField<T, intptr_t, 0, 8, false> {};
51 :
public BitField<T, uintptr_t, F1::kNextBit, 8, false> {
54 :
public BitField<T, intptr_t, F2::kNextBit, 8, false> {};
56 :
public BitField<T, uintptr_t, F3::kNextBit, 8, false> {
59 const uint32_t
value =
60 F1::encode(-1) | F2::encode(1) | F3::encode(-2) | F4::encode(2);
61 EXPECT_EQ(0x02fe01ffU,
value);
62 EXPECT_EQ(3, F1::decode(
value));
63 EXPECT_EQ(1, F2::decode(
value));
64 EXPECT_EQ(2, F3::decode(
value));
65 EXPECT_EQ(2, F3::decode(
value));