Skip to content

Commit 958c006

Browse files
author
thk123
committed
Adding utilities for code_type structures
1 parent 72a041b commit 958c006

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

unit/testing-utils/require_type.cpp

+29
Original file line numberDiff line numberDiff line change
@@ -49,3 +49,32 @@ struct_union_typet::componentt require_type::require_component(
4949
REQUIRE(componet != struct_type.components().end());
5050
return *componet;
5151
}
52+
53+
/// Checks a type is a code_type (i.e. a function)
54+
/// \param type: The type to check
55+
/// \return The cast version of the type code_type
56+
code_typet require_type::require_code(const typet &type)
57+
{
58+
REQUIRE(type.id() == ID_code);
59+
return to_code_type(type);
60+
}
61+
62+
/// Verify that a function has a parameter of a specific name.
63+
/// \param function_type: The type of the function
64+
/// \param param_name: The name of the parameter
65+
/// \return: A reference to the parameter structure corresponding to this
66+
/// parameter name.
67+
code_typet::parametert require_type::require_parameter(
68+
const code_typet &function_type,
69+
const irep_idt &param_name)
70+
{
71+
const auto param = std::find_if(
72+
function_type.parameters().begin(),
73+
function_type.parameters().end(),
74+
[&param_name](const code_typet::parametert param) {
75+
return param.get_base_name() == param_name;
76+
});
77+
78+
REQUIRE(param != function_type.parameters().end());
79+
return *param;
80+
}

unit/testing-utils/require_type.h

+4
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@ require_pointer(const typet &type, const optionalt<typet> &subtype);
2727
struct_typet::componentt require_component(
2828
const struct_typet &struct_type,
2929
const irep_idt &component_name);
30+
31+
code_typet require_code(const typet &type);
32+
code_typet::parametert
33+
require_parameter(const code_typet &function_type, const irep_idt &param_name);
3034
}
3135

3236
#endif

0 commit comments

Comments
 (0)