XS-libdwarf
view release on metacpan or search on metacpan
libdwarf-code-0.11.1/src/bin/dwarfgen/irepform.h view on Meta::CPAN
signedness_ = r.signedness_;
uval_ = r.uval_;
sval_ = r.sval_;
data16_ = r.data16_;
}
virtual IRFormConstant * clone() const {
return new IRFormConstant(*this);
}
void setInitialForm(Dwarf_Half v) { initialform_ = v;}
void setFinalForm(Dwarf_Half v) { finalform_ = v;}
Dwarf_Half getInitialForm() { return initialform_;}
Dwarf_Half getFinalForm() {return finalform_;}
Dwarf_Form_Class getFormClass() const { return formclass_; };
Signedness getSignedness() const {return signedness_; };
Dwarf_Signed getSignedVal() const {return sval_;};
Dwarf_Unsigned getUnsignedVal() const {return uval_;};
Dwarf_Form_Data16 getData16Val() const {return data16_;};
private:
Dwarf_Half finalform_;
// In most cases directform == indirect form.
// Otherwise, directform == DW_FORM_indirect.
Dwarf_Half initialform_;
enum Dwarf_Form_Class formclass_;
// Starts at SIGN_NOT_SET.
// SIGN_UNKNOWN means it was a DW_FORM_data* of some
// kind so we do not really know.
Signedness signedness_;
// Both uval_ and sval_ are always set to the same bits.
Dwarf_Unsigned uval_;
Dwarf_Signed sval_;
Dwarf_Form_Data16 data16_;
void setValues16(Dwarf_Form_Data16 *v,
enum Signedness s) {
(void)s;
uval_ = 0;
sval_ = 0;
data16_ = *v;
}
void setValues(Dwarf_Signed sval, Dwarf_Unsigned uval,
enum Signedness s) {
signedness_ = s;
uval_ = uval;
sval_ = sval;
}
};
class IRFormExprloc : public IRForm {
public:
IRFormExprloc():
finalform_(0), initialform_(0),
formclass_(DW_FORM_CLASS_EXPRLOC)
{};
IRFormExprloc(IRFormInterface *);
~IRFormExprloc() {};
IRFormExprloc & operator=(const IRFormExprloc &r) {
if (this == &r) return *this;
finalform_ = r.finalform_;
initialform_ = r.initialform_;
formclass_ = r.formclass_;
exprlocdata_ = r.exprlocdata_;
return *this;
};
IRFormExprloc(const IRFormExprloc &r) {
finalform_ = r.finalform_;
initialform_ = r.initialform_;
formclass_ = r.formclass_;
exprlocdata_ = r.exprlocdata_;
}
virtual IRFormExprloc * clone() const {
return new IRFormExprloc(*this);
}
void setInitialForm(Dwarf_Half v) { initialform_ = v;}
void setFinalForm(Dwarf_Half v) { finalform_ = v;}
Dwarf_Half getInitialForm() { return initialform_;}
Dwarf_Half getFinalForm() {return finalform_;}
enum Dwarf_Form_Class getFormClass() const { return formclass_; };
std::vector<char> getexprlocdata() const {return exprlocdata_; };
void insertBlock(Dwarf_Unsigned len, Dwarf_Ptr data) {
char *d = static_cast<char *>(data);
exprlocdata_.clear();
exprlocdata_.insert(exprlocdata_.end(),d+0,d+len);
};
private:
Dwarf_Half finalform_;
// In most cases directform == indirect form.
// Otherwise, directform == DW_FORM_indirect.
Dwarf_Half initialform_;
enum Dwarf_Form_Class formclass_;
std::vector<char> exprlocdata_;
};
class IRFormFlag : public IRForm {
public:
IRFormFlag():
initialform_(0),
finalform_(0),
formclass_(DW_FORM_CLASS_FLAG),
flagval_(0)
{};
IRFormFlag(IRFormInterface*);
~IRFormFlag() {};
IRFormFlag & operator=(const IRFormFlag &r) {
if (this == &r) return *this;
initialform_ = r.initialform_;
finalform_ = r.finalform_;
formclass_ = r.formclass_;
flagval_ = r.flagval_;
return *this;
};
IRFormFlag(const IRFormFlag &r) {
initialform_ = r.initialform_;
finalform_ = r.finalform_;
formclass_ = r.formclass_;
flagval_ = r.flagval_;
}
virtual IRFormFlag * clone() const {
return new IRFormFlag(*this);
}
enum Dwarf_Form_Class getFormClass() const { return formclass_; };
void setInitialForm(Dwarf_Half v) { initialform_ = v;}
void setFinalForm(Dwarf_Half v) { finalform_ = v;}
Dwarf_Half getInitialForm() { return initialform_;}
Dwarf_Half getFinalForm() {return finalform_;}
void setFlagVal(Dwarf_Bool v) { flagval_ = v;}
Dwarf_Bool getFlagVal() { return flagval_; }
private:
Dwarf_Half initialform_;
// In most cases initialform_ == finalform_.
// Otherwise, initialform == DW_FORM_indirect.
Dwarf_Half finalform_;
enum Dwarf_Form_Class formclass_;
Dwarf_Bool flagval_;
};
class IRFormLinePtr : public IRForm {
public:
IRFormLinePtr():
finalform_(0), initialform_(0),
formclass_(DW_FORM_CLASS_LINEPTR),
debug_line_offset_(0)
{};
IRFormLinePtr(IRFormInterface *);
~IRFormLinePtr() {};
IRFormLinePtr & operator=(const IRFormLinePtr &r) {
if (this == &r) return *this;
finalform_ = r.finalform_;
initialform_ = r.initialform_;
formclass_ = r.formclass_;
debug_line_offset_ = r.debug_line_offset_;
( run in 0.932 second using v1.01-cache-2.11-cpan-39bf76dae61 )