language_lookup_primitive_type, std::function -> gdb::function_view
gdb/ChangeLog: * language.c (language_arch_info::lookup_primitive_type): Use gdb::function_view instead of gdb::function. (template language_lookup_primitive_type): Rename to ... (language_lookup_primitive_type_1): ... this, and make static. (language_lookup_primitive_type(const struct language_defn *, struct gdbarch *, const char *): Make non-template. (language_lookup_primitive_type(const struct language_defn *, struct gdbarch *, std::function<bool (struct type *)>): Make non-template and use gdb::function_view. * language.h (language_arch_info::lookup_primitive_type): Use gdb::function_view instead of std::function. (language_lookup_primitive_type): No longer template. * opencl-lang.c (lookup_opencl_vector_type): 'filter' is now a lambda instead of a std::function.
This commit is contained in:
parent
e6f6aa8d18
commit
cbbcd7a716
4 changed files with 55 additions and 20 deletions
|
@ -1,3 +1,20 @@
|
||||||
|
2020-11-20 Pedro Alves <pedro@palves.net>
|
||||||
|
|
||||||
|
* language.c (language_arch_info::lookup_primitive_type): Use
|
||||||
|
gdb::function_view instead of gdb::function.
|
||||||
|
(template language_lookup_primitive_type): Rename to ...
|
||||||
|
(language_lookup_primitive_type_1): ... this, and make static.
|
||||||
|
(language_lookup_primitive_type(const struct language_defn *,
|
||||||
|
struct gdbarch *, const char *): Make non-template.
|
||||||
|
(language_lookup_primitive_type(const struct language_defn *,
|
||||||
|
struct gdbarch *, std::function<bool (struct type *)>): Make
|
||||||
|
non-template and use gdb::function_view.
|
||||||
|
* language.h (language_arch_info::lookup_primitive_type): Use
|
||||||
|
gdb::function_view instead of std::function.
|
||||||
|
(language_lookup_primitive_type): No longer template.
|
||||||
|
* opencl-lang.c (lookup_opencl_vector_type): 'filter' is now a
|
||||||
|
lambda instead of a std::function.
|
||||||
|
|
||||||
2020-11-19 Andreas Arnez <arnez@linux.ibm.com>
|
2020-11-19 Andreas Arnez <arnez@linux.ibm.com>
|
||||||
|
|
||||||
PR tdep/26916
|
PR tdep/26916
|
||||||
|
|
|
@ -1088,7 +1088,7 @@ language_arch_info::lookup_primitive_type (const char *name)
|
||||||
|
|
||||||
struct type *
|
struct type *
|
||||||
language_arch_info::lookup_primitive_type
|
language_arch_info::lookup_primitive_type
|
||||||
(std::function<bool (struct type *)> filter)
|
(gdb::function_view<bool (struct type *)> filter)
|
||||||
{
|
{
|
||||||
for (struct type_and_symbol &tas : primitive_types_and_symbols)
|
for (struct type_and_symbol &tas : primitive_types_and_symbols)
|
||||||
{
|
{
|
||||||
|
@ -1111,11 +1111,12 @@ language_arch_info::lookup_primitive_type_as_symbol (const char *name,
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* See language.h. */
|
/* Helper for the language_lookup_primitive_type overloads to forward
|
||||||
|
to the corresponding language's lookup_primitive_type overload. */
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
struct type *
|
static struct type *
|
||||||
language_lookup_primitive_type (const struct language_defn *la,
|
language_lookup_primitive_type_1 (const struct language_defn *la,
|
||||||
struct gdbarch *gdbarch,
|
struct gdbarch *gdbarch,
|
||||||
T arg)
|
T arg)
|
||||||
{
|
{
|
||||||
|
@ -1124,19 +1125,25 @@ language_lookup_primitive_type (const struct language_defn *la,
|
||||||
return ld->arch_info[la->la_language].lookup_primitive_type (arg);
|
return ld->arch_info[la->la_language].lookup_primitive_type (arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Template instantiation. */
|
/* See language.h. */
|
||||||
|
|
||||||
template struct type *
|
struct type *
|
||||||
language_lookup_primitive_type (const struct language_defn *la,
|
language_lookup_primitive_type (const struct language_defn *la,
|
||||||
struct gdbarch *gdbarch,
|
struct gdbarch *gdbarch,
|
||||||
const char *arg);
|
const char *name)
|
||||||
|
{
|
||||||
|
return language_lookup_primitive_type_1 (la, gdbarch, name);
|
||||||
|
}
|
||||||
|
|
||||||
/* Template instantiation. */
|
/* See language.h. */
|
||||||
|
|
||||||
template struct type *
|
struct type *
|
||||||
language_lookup_primitive_type (const struct language_defn *la,
|
language_lookup_primitive_type (const struct language_defn *la,
|
||||||
struct gdbarch *gdbarch,
|
struct gdbarch *gdbarch,
|
||||||
std::function<bool (struct type *)> arg);
|
gdb::function_view<bool (struct type *)> filter)
|
||||||
|
{
|
||||||
|
return language_lookup_primitive_type_1 (la, gdbarch, filter);
|
||||||
|
}
|
||||||
|
|
||||||
/* See language.h. */
|
/* See language.h. */
|
||||||
|
|
||||||
|
|
|
@ -140,7 +140,7 @@ struct language_arch_info
|
||||||
/* Lookup a primitive type for which FILTER returns true. Will return
|
/* Lookup a primitive type for which FILTER returns true. Will return
|
||||||
nullptr if no matching type is found. */
|
nullptr if no matching type is found. */
|
||||||
struct type *lookup_primitive_type
|
struct type *lookup_primitive_type
|
||||||
(std::function<bool (struct type *)> filter);
|
(gdb::function_view<bool (struct type *)> filter);
|
||||||
|
|
||||||
/* Lookup a primitive type called NAME and return the type as a symbol.
|
/* Lookup a primitive type called NAME and return the type as a symbol.
|
||||||
LANG is the language for which type is being looked up. */
|
LANG is the language for which type is being looked up. */
|
||||||
|
@ -719,15 +719,26 @@ struct type *language_bool_type (const struct language_defn *l,
|
||||||
struct type *language_string_char_type (const struct language_defn *l,
|
struct type *language_string_char_type (const struct language_defn *l,
|
||||||
struct gdbarch *gdbarch);
|
struct gdbarch *gdbarch);
|
||||||
|
|
||||||
/* Look up a type from the set of OS/ABI specific types defined in GDBARCH
|
/* Look up a type from the set of OS/ABI specific types defined in
|
||||||
for language L. ARG is used for selecting the matching type, and is
|
GDBARCH for language L. NAME is used for selecting the matching
|
||||||
passed through to the corresponding lookup_primitive_type member
|
type, and is passed through to the corresponding
|
||||||
function inside the language_arch_info class. */
|
lookup_primitive_type member function inside the language_arch_info
|
||||||
|
class. */
|
||||||
|
|
||||||
template<typename T>
|
|
||||||
struct type *language_lookup_primitive_type (const struct language_defn *l,
|
struct type *language_lookup_primitive_type (const struct language_defn *l,
|
||||||
struct gdbarch *gdbarch,
|
struct gdbarch *gdbarch,
|
||||||
T arg);
|
const char *name);
|
||||||
|
|
||||||
|
/* Look up a type from the set of OS/ABI specific types defined in
|
||||||
|
GDBARCH for language L. FILTER is used for selecting the matching
|
||||||
|
type, and is passed through to the corresponding
|
||||||
|
lookup_primitive_type member function inside the language_arch_info
|
||||||
|
class. */
|
||||||
|
|
||||||
|
struct type *language_lookup_primitive_type
|
||||||
|
(const struct language_defn *la,
|
||||||
|
struct gdbarch *gdbarch,
|
||||||
|
gdb::function_view<bool (struct type *)> filter);
|
||||||
|
|
||||||
/* Wrapper around language_lookup_primitive_type to return the
|
/* Wrapper around language_lookup_primitive_type to return the
|
||||||
corresponding symbol. */
|
corresponding symbol. */
|
||||||
|
|
|
@ -46,7 +46,7 @@ lookup_opencl_vector_type (struct gdbarch *gdbarch, enum type_code code,
|
||||||
/* Triple vectors have the size of a quad vector. */
|
/* Triple vectors have the size of a quad vector. */
|
||||||
length = (n == 3) ? el_length * 4 : el_length * n;
|
length = (n == 3) ? el_length * 4 : el_length * n;
|
||||||
|
|
||||||
std::function<bool (struct type *)> filter = [&] (struct type *type)
|
auto filter = [&] (struct type *type)
|
||||||
{
|
{
|
||||||
LONGEST lowb, highb;
|
LONGEST lowb, highb;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue