1 ///////////////////////////////////////////////////////////////////////////////
3 // This file contains the definitions used in the bitfield and bitfield
4 // pattern matcher/constraint solver.
6 ///////////////////////////////////////////////////////////////////////////////
7 #ifndef bitfields_and_bit_patterns_h
8 #define bitfields_and_bit_patterns_h
13 ///////////////////////////////////////////////////////////////////////////////
15 // Definition of a field declaration
17 ///////////////////////////////////////////////////////////////////////////////
18 datatype FieldDef : Loc =
19 FIELDdef { field_name : Id, // bitfield declaration
22 is_signed : Bool = false
24 | FIELDCONdef { field_name : Id, // bitfield constructor
35 ///////////////////////////////////////////////////////////////////////////////
36 // The bitfield compiler is used to compile bitfield constructors
38 ///////////////////////////////////////////////////////////////////////////////
39 class BitfieldCompiler : virtual public CodeGen {
40 BitfieldCompiler (const BitfieldCompiler&);
41 void operator = (const BitfieldCompiler&);
44 virtual ~BitfieldCompiler();
46 ////////////////////////////////////////////////////////////////////////////
47 // Methods to define and generate bitfield declarations.
48 ////////////////////////////////////////////////////////////////////////////
49 void define_bitfield (Id name, int width, FieldDefs, FieldLaws);
50 void gen_bitfield (Id name, int width, FieldDefs, FieldLaws);