LIEF: Library to Instrument Executable Formats
Version 0.17.4
Toggle main menu visibility
Loading...
Searching...
No Matches
install
linux
x86_64
sdk
static
include
LIEF
DWARF
Parameter.hpp
Go to the documentation of this file.
1
/* Copyright 2022 - 2025 R. Thomas
2
*
3
* Licensed under the Apache License, Version 2.0 (the "License");
4
* you may not use this file except in compliance with the License.
5
* You may obtain a copy of the License at
6
*
7
* http://www.apache.org/licenses/LICENSE-2.0
8
*
9
* Unless required by applicable law or agreed to in writing, software
10
* distributed under the License is distributed on an "AS IS" BASIS,
11
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
* See the License for the specific language governing permissions and
13
* limitations under the License.
14
*/
15
#ifndef LIEF_DWARF_PARAMETER_H
16
#define LIEF_DWARF_PARAMETER_H
17
18
#include "
LIEF/visibility.h
"
19
20
#include <memory>
21
#include <string>
22
23
namespace
LIEF
{
24
namespace
dwarf
{
25
26
class
Type
;
27
28
namespace
details
{
29
class
Parameter;
30
}
31
36
class
LIEF_API
Parameter
{
37
public
:
38
enum class
KIND
{
39
UNKNOWN = 0,
40
TEMPLATE_TYPE,
41
TEMPLATE_VALUE,
42
FORMAL,
43
};
44
Parameter
() =
delete
;
45
Parameter
(
Parameter
&& other);
46
Parameter
&
operator=
(
Parameter
&& other);
47
Parameter
&
operator=
(
const
Parameter
&) =
delete
;
48
Parameter
(
const
Parameter
&) =
delete
;
49
50
KIND
kind
()
const
;
51
53
std::string
name
()
const
;
54
56
std::unique_ptr<Type>
type
()
const
;
57
58
template
<
class
T>
59
const
T*
as
()
const
{
60
if
(T::classof(
this
)) {
61
return
static_cast<
const
T*
>
(
this
);
62
}
63
return
nullptr
;
64
}
65
66
virtual
~Parameter
();
67
68
LIEF_LOCAL
static
69
std::unique_ptr<Parameter>
create
(std::unique_ptr<details::Parameter> impl);
70
71
protected
:
72
Parameter
(std::unique_ptr<details::Parameter> impl);
73
std::unique_ptr<details::Parameter> impl_;
74
};
75
76
namespace
parameters
{
77
91
class
LIEF_API
Formal
:
public
Parameter
{
92
public
:
93
using
Parameter::Parameter
;
94
static
bool
classof
(
const
Parameter
* P) {
95
return
P->kind() ==
Parameter::KIND::FORMAL
;
96
}
97
98
~Formal
()
override
=
default
;
99
};
100
101
112
class
LIEF_API
TemplateValue
:
public
Parameter
{
113
public
:
114
using
Parameter::Parameter
;
115
static
bool
classof
(
const
Parameter
* P) {
116
return
P->kind() ==
Parameter::KIND::TEMPLATE_VALUE
;
117
}
118
119
~TemplateValue
()
override
=
default
;
120
};
121
132
class
LIEF_API
TemplateType
:
public
Parameter
{
133
public
:
134
using
Parameter::Parameter
;
135
static
bool
classof
(
const
Parameter
* P) {
136
return
P->kind() ==
Parameter::KIND::TEMPLATE_TYPE
;
137
}
138
139
~TemplateType
()
override
=
default
;
140
};
141
142
}
143
144
}
145
}
146
#endif
LIEF::dwarf::Parameter::name
std::string name() const
Name of the parameter.
LIEF::dwarf::Parameter::Parameter
Parameter()=delete
LIEF::dwarf::Parameter::Parameter
Parameter(Parameter &&other)
LIEF::dwarf::Parameter::operator=
Parameter & operator=(Parameter &&other)
LIEF::dwarf::Parameter::KIND
KIND
Definition
Parameter.hpp:38
LIEF::dwarf::Parameter::KIND::TEMPLATE_VALUE
@ TEMPLATE_VALUE
DW_TAG_template_value_parameter.
Definition
Parameter.hpp:41
LIEF::dwarf::Parameter::KIND::TEMPLATE_TYPE
@ TEMPLATE_TYPE
DW_TAG_template_type_parameter.
Definition
Parameter.hpp:40
LIEF::dwarf::Parameter::KIND::FORMAL
@ FORMAL
DW_TAG_formal_parameter.
Definition
Parameter.hpp:42
LIEF::dwarf::Parameter::create
static std::unique_ptr< Parameter > create(std::unique_ptr< details::Parameter > impl)
LIEF::dwarf::Parameter::~Parameter
virtual ~Parameter()
LIEF::dwarf::Parameter::type
std::unique_ptr< Type > type() const
Type of this parameter.
LIEF::dwarf::Parameter::Parameter
Parameter(const Parameter &)=delete
LIEF::dwarf::Parameter::kind
KIND kind() const
LIEF::dwarf::Parameter::as
const T * as() const
Definition
Parameter.hpp:59
LIEF::dwarf::Parameter::operator=
Parameter & operator=(const Parameter &)=delete
LIEF::dwarf::Type
This class represents a DWARF Type which includes:
Definition
DWARF/Type.hpp:64
LIEF::dwarf::parameters::Formal
This class represents a regular function parameter.
Definition
Parameter.hpp:91
LIEF::dwarf::parameters::Formal::classof
static bool classof(const Parameter *P)
Definition
Parameter.hpp:94
LIEF::dwarf::parameters::Formal::Parameter
Parameter()=delete
LIEF::dwarf::parameters::Formal::~Formal
~Formal() override=default
LIEF::dwarf::parameters::TemplateType
This class represents a template type parameter.
Definition
Parameter.hpp:132
LIEF::dwarf::parameters::TemplateType::~TemplateType
~TemplateType() override=default
LIEF::dwarf::parameters::TemplateType::Parameter
Parameter()=delete
LIEF::dwarf::parameters::TemplateType::classof
static bool classof(const Parameter *P)
Definition
Parameter.hpp:135
LIEF::dwarf::parameters::TemplateValue
This class represents a template value parameter.
Definition
Parameter.hpp:112
LIEF::dwarf::parameters::TemplateValue::Parameter
Parameter()=delete
LIEF::dwarf::parameters::TemplateValue::~TemplateValue
~TemplateValue() override=default
LIEF::dwarf::parameters::TemplateValue::classof
static bool classof(const Parameter *P)
Definition
Parameter.hpp:115
LIEF::dwarf::details
Definition
DWARF/CompilationUnit.hpp:30
LIEF::dwarf::parameters
Definition
Parameter.hpp:76
LIEF::dwarf
Namespace for the DWARF debug format.
Definition
DWARF/CompilationUnit.hpp:28
LIEF
LIEF namespace.
Definition
Abstract/Binary.hpp:40
visibility.h
LIEF_API
#define LIEF_API
Definition
visibility.h:41
LIEF_LOCAL
#define LIEF_LOCAL
Definition
visibility.h:42
Generated by
1.17.0