77namespace pl ::test {
88
99 template <typename T>
10- std::shared_ptr<T> downcast_ref (std::shared_ptr<Pattern> & pat)
10+ std::shared_ptr<T> downcast_ref (std::shared_ptr<Pattern> pat)
1111 {
12- return std::static_pointer_cast<PatternBitfield>(pat->reference ())
12+ return std::static_pointer_cast<PatternBitfield>(pat->reference ());
1313 }
1414
1515 class TestPatternBitfields : public TestPattern {
1616 public:
1717 TestPatternBitfields (core::Evaluator *evaluator) : TestPattern(evaluator, " Bitfields" ) {
1818 auto testBitfield = create<PatternBitfield>(" TestBitfield" , " testBitfield" , 0x25 , 0 , 2 + 3 + (4 * 8 ), 0 );
1919
20- auto downcast_ref<PatternBitfield>(testBitfield) [&](){return std::static_pointer_cast<PatternBitfield>(testBitfield->reference ());};
21-
2220 std::vector<std::shared_ptr<Pattern>> bitfieldFields;
2321 {
2422 bitfieldFields.push_back (create<PatternBitfieldField>(" " , " a" , 0x25 , 0 , 2 , 0 , downcast_ref<PatternBitfield>(testBitfield)));
@@ -44,8 +42,8 @@ namespace pl::test {
4442 auto array0Bitfield = create<PatternBitfield>(" NestedBitfield" , " [0]" , 0x27 , 5 , 4 * 2 , 0 );
4543 std::vector<std::shared_ptr<Pattern>> array0Fields;
4644 {
47- array0Fields.push_back (create<PatternBitfieldField>(" " , " nestedA" , 0x27 , 5 , 4 , 0 , array0Bitfield-> reference ( )));
48- array0Fields.push_back (create<PatternBitfieldField>(" " , " nestedB" , 0x28 , 1 , 4 , 0 , array0Bitfield-> reference ( )));
45+ array0Fields.push_back (create<PatternBitfieldField>(" " , " nestedA" , 0x27 , 5 , 4 , 0 , downcast_ref<PatternBitfield>(array0Bitfield )));
46+ array0Fields.push_back (create<PatternBitfieldField>(" " , " nestedB" , 0x28 , 1 , 4 , 0 , downcast_ref<PatternBitfield>(array0Bitfield )));
4947 }
5048 array0Bitfield->setParent (array->reference ());
5149 array0Bitfield->setFields (std::move (array0Fields));
@@ -115,14 +113,14 @@ namespace pl::test {
115113
116114 std::vector<std::shared_ptr<Pattern>> bitfieldFields;
117115 {
118- bitfieldFields.push_back (create<PatternBitfieldField>(" " , " flag0" , 0x03 , 7 , 1 , 0 , testBitfield-> reference ( )));
119- bitfieldFields.push_back (create<PatternBitfieldField>(" " , " flag1" , 0x03 , 6 , 1 , 0 , testBitfield-> reference ( )));
120- bitfieldFields.push_back (create<PatternBitfieldField>(" " , " flag2" , 0x03 , 5 , 1 , 0 , testBitfield-> reference ( )));
121- bitfieldFields.push_back (create<PatternBitfieldField>(" " , " flag3" , 0x03 , 4 , 1 , 0 , testBitfield-> reference ( )));
122- bitfieldFields.push_back (create<PatternBitfieldField>(" " , " flag4" , 0x03 , 3 , 1 , 0 , testBitfield-> reference ( )));
123- bitfieldFields.push_back (create<PatternBitfieldField>(" " , " flag5" , 0x03 , 2 , 1 , 0 , testBitfield-> reference ( )));
124-
125- auto enumField = create<PatternBitfieldFieldEnum>(" Enum" , " enumerated" , 0x02 , 4 , 6 , 0 , testBitfield-> reference ( ));
116+ bitfieldFields.push_back (create<PatternBitfieldField>(" " , " flag0" , 0x03 , 7 , 1 , 0 , downcast_ref<PatternBitfield>(testBitfield )));
117+ bitfieldFields.push_back (create<PatternBitfieldField>(" " , " flag1" , 0x03 , 6 , 1 , 0 , downcast_ref<PatternBitfield>(testBitfield )));
118+ bitfieldFields.push_back (create<PatternBitfieldField>(" " , " flag2" , 0x03 , 5 , 1 , 0 , downcast_ref<PatternBitfield>(testBitfield )));
119+ bitfieldFields.push_back (create<PatternBitfieldField>(" " , " flag3" , 0x03 , 4 , 1 , 0 , downcast_ref<PatternBitfield>(testBitfield )));
120+ bitfieldFields.push_back (create<PatternBitfieldField>(" " , " flag4" , 0x03 , 3 , 1 , 0 , downcast_ref<PatternBitfield>(testBitfield )));
121+ bitfieldFields.push_back (create<PatternBitfieldField>(" " , " flag5" , 0x03 , 2 , 1 , 0 , downcast_ref<PatternBitfield>(testBitfield )));
122+
123+ auto enumField = create<PatternBitfieldFieldEnum>(" Enum" , " enumerated" , 0x02 , 4 , 6 , 0 , downcast_ref<PatternBitfield>(testBitfield ));
126124 std::map<std::string, PatternEnum::EnumValue> values;
127125 {
128126 values.insert ({ " A" , { 0x39 , 0x39 } });
0 commit comments