libctf: add ctf_type_kind_forwarded
This is just like ctf_type_kind, except that forwards get the type of the thing being pointed to rather than CTF_K_FORWARD. include/ * ctf-api.h (ctf_type_kind_forwarded): New. libctf/ * ctf-types.c (ctf_type_kind_forwarded): New.
This commit is contained in:
parent
01d9317436
commit
9b15cbb789
5 changed files with 30 additions and 0 deletions
|
@ -677,6 +677,26 @@ ctf_type_kind (ctf_file_t *fp, ctf_id_t type)
|
|||
return kind;
|
||||
}
|
||||
|
||||
/* Return the kind of this type, except, for forwards, return the kind of thing
|
||||
this is a forward to. */
|
||||
int
|
||||
ctf_type_kind_forwarded (ctf_file_t *fp, ctf_id_t type)
|
||||
{
|
||||
int kind;
|
||||
const ctf_type_t *tp;
|
||||
|
||||
if ((kind = ctf_type_kind (fp, type)) < 0)
|
||||
return -1; /* errno is set for us. */
|
||||
|
||||
if (kind != CTF_K_FORWARD)
|
||||
return kind;
|
||||
|
||||
if ((tp = ctf_lookup_by_id (&fp, type)) == NULL)
|
||||
return -1; /* errno is set for us. */
|
||||
|
||||
return tp->ctt_type;
|
||||
}
|
||||
|
||||
/* If the type is one that directly references another type (such as POINTER),
|
||||
then return the ID of the type to which it refers. */
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue