/* Code dealing with "using" directives for GDB.
- Copyright (C) 2003-2015 Free Software Foundation, Inc.
+ Copyright (C) 2003-2019 Free Software Foundation, Inc.
This file is part of GDB.
const char *src,
const char *alias,
const char *declaration,
- VEC (const_char_ptr) *excludes,
+ const std::vector<const char *> &excludes,
int copy_names,
struct obstack *obstack)
{
struct using_direct *current;
struct using_direct *newobj;
+ int alloc_len;
/* Has it already been added? */
for (current = *using_directives; current != NULL; current = current->next)
{
int ix;
- const char *param;
if (strcmp (current->import_src, src) != 0)
continue;
continue;
/* Compare the contents of EXCLUDES. */
- for (ix = 0; VEC_iterate (const_char_ptr, excludes, ix, param); ix++)
+ for (ix = 0; ix < excludes.size (); ++ix)
if (current->excludes[ix] == NULL
- || strcmp (param, current->excludes[ix]) != 0)
+ || strcmp (excludes[ix], current->excludes[ix]) != 0)
break;
- if (ix < VEC_length (const_char_ptr, excludes)
- || current->excludes[ix] != NULL)
+ if (ix < excludes.size () || current->excludes[ix] != NULL)
continue;
/* Parameters exactly match CURRENT. */
return;
}
- newobj = obstack_alloc (obstack, (sizeof (*newobj)
- + (VEC_length (const_char_ptr, excludes)
- * sizeof (*newobj->excludes))));
+ alloc_len = (sizeof(*newobj)
+ + (excludes.size () * sizeof(*newobj->excludes)));
+ newobj = (struct using_direct *) obstack_alloc (obstack, alloc_len);
memset (newobj, 0, sizeof (*newobj));
if (copy_names)
{
- newobj->import_src = obstack_copy0 (obstack, src, strlen (src));
- newobj->import_dest = obstack_copy0 (obstack, dest, strlen (dest));
+ newobj->import_src = obstack_strdup (obstack, src);
+ newobj->import_dest = obstack_strdup (obstack, dest);
}
else
{
}
if (alias != NULL && copy_names)
- newobj->alias = obstack_copy0 (obstack, alias, strlen (alias));
+ newobj->alias = obstack_strdup (obstack, alias);
else
newobj->alias = alias;
if (declaration != NULL && copy_names)
- newobj->declaration = obstack_copy0 (obstack,
- declaration, strlen (declaration));
+ newobj->declaration = obstack_strdup (obstack, declaration);
else
newobj->declaration = declaration;
- memcpy (newobj->excludes, VEC_address (const_char_ptr, excludes),
- VEC_length (const_char_ptr, excludes) * sizeof (*newobj->excludes));
- newobj->excludes[VEC_length (const_char_ptr, excludes)] = NULL;
+ if (!excludes.empty ())
+ memcpy (newobj->excludes, excludes.data (),
+ excludes.size () * sizeof (*newobj->excludes));
+ newobj->excludes[excludes.size ()] = NULL;
newobj->next = *using_directives;
*using_directives = newobj;