return;
}
- struct type *ftype = check_typedef (TYPE_FIELD_TYPE (type, field_idx));
+ struct type *ftype = check_typedef (type->field (field_idx).type ());
if (type->code () == TYPE_CODE_UNION)
{
/* Since union fields don't have the concept of offsets, we just
struct decl_field *tdef = &TYPE_TYPEDEF_FIELD (t, i);
void **slot;
- slot = htab_find_slot (m_table, tdef, INSERT);
+ slot = htab_find_slot (m_table.get (), tdef, INSERT);
/* Only add a given typedef name once. Really this shouldn't
happen; but it is safe enough to do the updates breadth-first
and thus use the most specific typedef. */
tf->name = TYPE_TEMPLATE_ARGUMENT (t, i)->linkage_name ();
tf->type = SYMBOL_TYPE (TYPE_TEMPLATE_ARGUMENT (t, i));
- slot = htab_find_slot (m_table, tf, INSERT);
+ slot = htab_find_slot (m_table.get (), tf, INSERT);
if (*slot == NULL)
*slot = tf;
}
/* See typeprint.h. */
typedef_hash_table::typedef_hash_table ()
+ : m_table (htab_create_alloc (10, hash_typedef_field, eq_typedef_field,
+ NULL, xcalloc, xfree))
{
- m_table = htab_create_alloc (10, hash_typedef_field, eq_typedef_field,
- NULL, xcalloc, xfree);
-}
-
-/* Free a typedef field table. */
-
-typedef_hash_table::~typedef_hash_table ()
-{
- htab_delete (m_table);
}
/* Helper function for typedef_hash_table::copy. */
typedef_hash_table::typedef_hash_table (const typedef_hash_table &table)
{
- m_table = htab_create_alloc (10, hash_typedef_field, eq_typedef_field,
- NULL, xcalloc, xfree);
- htab_traverse_noresize (table.m_table, copy_typedef_hash_element,
- m_table);
+ m_table.reset (htab_create_alloc (10, hash_typedef_field, eq_typedef_field,
+ NULL, xcalloc, xfree));
+ htab_traverse_noresize (table.m_table.get (), copy_typedef_hash_element,
+ m_table.get ());
}
/* Look up the type T in the global typedef hash. If it is found,
tf.name = NULL;
tf.type = t;
- slot = htab_find_slot (flags->global_typedefs->m_table, &tf, INSERT);
+ slot = htab_find_slot (flags->global_typedefs->m_table.get (), &tf, INSERT);
if (*slot != NULL)
{
new_tf = (struct decl_field *) *slot;
tf.name = NULL;
tf.type = t;
- found = (struct decl_field *) htab_find (flags->local_typedefs->m_table,
- &tf);
+ htab_t table = flags->local_typedefs->m_table.get ();
+ found = (struct decl_field *) htab_find (table, &tf);
if (found != NULL)
return found->name;
LA_PRINT_TYPEDEF (type, newobj, stream);
}
-/* The default way to print a typedef. */
-
-void
-default_print_typedef (struct type *type, struct symbol *new_symbol,
- struct ui_file *stream)
-{
- error (_("Language not supported."));
-}
-
/* Print a description of a type TYPE in the form of a declaration of a
variable named VARSTRING. (VARSTRING is demangled if necessary.)
Output goes to STREAM (via stdio).
break;
case TYPE_CODE_INT:
- print_longest (stream, TYPE_UNSIGNED (type) ? 'u' : 'd', 0, val);
+ print_longest (stream, type->is_unsigned () ? 'u' : 'd', 0, val);
break;
case TYPE_CODE_CHAR: