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 )