- add cl_indirect to facilitate the indirect form. Make this the implicit
class of all attributes.
add (offset_form (DW_FORM_strp, cl_string));
add (address_form (DW_FORM_addr, cl_address));
add (address_form (DW_FORM_ref_addr, cl_reference));
+
+ add (form (DW_FORM_indirect, cl_indirect, fw_uleb, sc_value));
}
};
return static_cast<form_width_t> (_m_width);
}
-attribute::attribute (int a_name, dw_class_set a_classes)
+namespace
+{
+ dw_class_set
+ include_indirect (dw_class_set a_classes)
+ {
+ a_classes.set (cl_indirect);
+ return a_classes;
+ }
+}
+
+attribute::attribute (int a_name, dw_class_set const &a_classes)
: _m_name (a_name)
- , _m_classes (a_classes)
+ , _m_classes (include_indirect (a_classes))
{}
enum dw_class
{
+ cl_indirect,
cl_address,
cl_block,
cl_constant,
dw_class_set const _m_classes;
public:
- attribute (int a_name, dw_class_set a_classes);
+ /// NB this ctor automatically adds cl_indirect to a_classes.
+ attribute (int a_name, dw_class_set const &a_classes);
int
name () const