15#ifndef LIEF_DWARF_PARAMETER_H
16#define LIEF_DWARF_PARAMETER_H
50 enum class Type : uint8_t {
59 if (T::classof(
this)) {
60 return static_cast<const T*
>(
this);
103 const T*
as()
const {
104 if (T::classof(
this)) {
105 return static_cast<const T*
>(
this);
113 create(std::unique_ptr<details::Parameter> impl);
116 Parameter(std::unique_ptr<details::Parameter> impl);
117 std::unique_ptr<details::Parameter> impl_;
This class exposes information about the location of a parameter.
Definition Parameter.hpp:48
Type
Definition Parameter.hpp:50
@ UNKNOWN
Definition Parameter.hpp:51
@ REG
Definition Parameter.hpp:52
const T * as() const
Definition Parameter.hpp:58
Type type
Definition Parameter.hpp:65
Location(Type ty)
Definition Parameter.hpp:54
static bool classof(const Location *loc)
Definition Parameter.hpp:75
uint64_t id
DWARF id of the register.
Definition Parameter.hpp:80
RegisterLoc(uint64_t reg_id)
Definition Parameter.hpp:71
std::string name() const
Name of the parameter.
Parameter(Parameter &&other)
Parameter & operator=(Parameter &&other)
KIND
Definition Parameter.hpp:40
@ TEMPLATE_VALUE
DW_TAG_template_value_parameter.
Definition Parameter.hpp:43
@ TEMPLATE_TYPE
DW_TAG_template_type_parameter.
Definition Parameter.hpp:42
@ FORMAL
DW_TAG_formal_parameter.
Definition Parameter.hpp:44
static std::unique_ptr< Parameter > create(std::unique_ptr< details::Parameter > impl)
std::unique_ptr< Type > type() const
Type of this parameter.
Parameter(const Parameter &)=delete
std::unique_ptr< Location > location() const
Location of this parameter. For instance it can be a specific register that is not following the call...
const T * as() const
Definition Parameter.hpp:103
Parameter & operator=(const Parameter &)=delete
This class represents a DWARF Type which includes:
Definition DWARF/Type.hpp:67
This class represents a template type parameter.
Definition Parameter.hpp:176
~TemplateType() override=default
static bool classof(const Parameter *P)
Definition Parameter.hpp:179
This class represents a template value parameter.
Definition Parameter.hpp:156
~TemplateValue() override=default
static bool classof(const Parameter *P)
Definition Parameter.hpp:159
#define LIEF_LIFETIMEBOUND
Definition compiler_attributes.hpp:72
Definition DWARF/CompilationUnit.hpp:32
Definition Parameter.hpp:120
Namespace for the DWARF debug format.
Definition DWARF/CompilationUnit.hpp:30
LIEF namespace.
Definition Abstract/Binary.hpp:41
#define LIEF_API
Definition visibility.h:45
#define LIEF_LOCAL
Definition visibility.h:46