/* Create mutable addrmap. */
auto_obstack temp_obstack;
- std::unique_ptr<struct addrmap_mutable> map (new addrmap_mutable);
+ auto map = gdb::make_unique<struct addrmap_mutable> ();
SELF_CHECK (map != nullptr);
/* Check initial state. */
if (*arg == '\0')
arg = nullptr;
- std::unique_ptr<solib_catchpoint> c (new solib_catchpoint (gdbarch, is_temp,
- nullptr,
- is_load, arg));
+ auto c = gdb::make_unique<solib_catchpoint> (gdbarch, is_temp, nullptr,
+ is_load, arg);
c->enable_state = enabled ? bp_enabled : bp_disabled;
error (_("The loaded version of GCC does not support the required version "
"of the API."));
- return std::unique_ptr<compile_instance> (new INSTTYPE (context));
+ return gdb::make_unique<INSTTYPE> (context);
}
/* A C-language implementation of get_compile_context. */
state.demangle_info = allocate_info ();
- std::unique_ptr<demangle_parse_info> result (new demangle_parse_info);
+ auto result = gdb::make_unique<demangle_parse_info> ();
result->info = state.demangle_info;
if (yyparse (&state))
options, memory);
if (ret)
{
- std::unique_ptr<demangle_parse_info> info (new demangle_parse_info);
+ auto info = gdb::make_unique<demangle_parse_info> ();
info->tree = ret;
*demangled_p = NULL;
return info;
struct gdbarch *gdbarch = objfile->arch ();
/* Build a minimal decoding of the DWARF2 compilation unit. */
- std::unique_ptr<comp_unit> unit (new comp_unit (objfile));
+ auto unit = gdb::make_unique<comp_unit> (objfile);
if (objfile->separate_debug_objfile_backlink == NULL)
{
bool
dwarf2_read_debug_names (dwarf2_per_objfile *per_objfile)
{
- std::unique_ptr<mapped_debug_names> map (new mapped_debug_names);
+ auto map = gdb::make_unique<mapped_debug_names> ();
mapped_debug_names dwz_map;
struct objfile *objfile = per_objfile->objfile;
dwarf2_per_bfd *per_bfd = per_objfile->per_bfd;
if (main_index_contents.empty ())
return 0;
- std::unique_ptr<mapped_gdb_index> map (new mapped_gdb_index);
+ auto map = gdb::make_unique<mapped_gdb_index> ();
if (!read_gdb_index_from_buffer (objfile_name (objfile),
use_deprecated_index_sections,
main_index_contents, map.get (), &cu_list,
static std::unique_ptr<type_unit_group>
create_type_unit_group (struct dwarf2_cu *cu, sect_offset line_offset_struct)
{
- std::unique_ptr<type_unit_group> tu_group (new type_unit_group);
+ auto tu_group = gdb::make_unique<type_unit_group> ();
tu_group->hash.dwo_unit = cu->dwo_unit;
tu_group->hash.line_sect_off = line_offset_struct;
void
allocate_fixed_point_type_info (struct type *type)
{
- std::unique_ptr<fixed_point_type_info> up (new fixed_point_type_info);
+ auto up = gdb::make_unique<fixed_point_type_info> ();
fixed_point_type_info *info;
if (type->is_objfile_owned ())
error (_("Could not get children iterator"));
}
- return std::unique_ptr<varobj_iter> (new py_varobj_iter (var,
- std::move (iter),
- opts));
+ return gdb::make_unique<py_varobj_iter> (var, std::move (iter), opts);
}
internal_error (_("table header must be specified after table_begin and "
"before table_body."));
- std::unique_ptr<ui_out_hdr> header (new ui_out_hdr (m_headers.size () + 1,
- width, alignment,
- col_name, col_hdr));
+ auto header = gdb::make_unique<ui_out_hdr> (m_headers.size () + 1,
+ width, alignment,
+ col_name, col_hdr);
m_headers.push_back (std::move (header));
}
void
ui_out::push_level (ui_out_type type)
{
- std::unique_ptr<ui_out_level> level (new ui_out_level (type));
+ auto level = gdb::make_unique<ui_out_level> (type);
m_levels.push_back (std::move (level));
}
{
if (start == end)
any_empty_tasks = true;
- return std::unique_ptr<int> (new int (end - start));
+ return gdb::make_unique<int> (end - start);
});
SELF_CHECK (!any_empty_tasks);
SELF_CHECK (std::all_of (intresults.begin (),
{
if (start == end)
any_empty_tasks = true;
- return std::unique_ptr<int> (new int (end - start));
+ return gdb::make_unique<int> (end - start);
},
task_size_one);
SELF_CHECK (!any_empty_tasks);
const char *expression, CORE_ADDR frame, enum varobj_type type)
{
/* Fill out a varobj structure for the (root) variable being constructed. */
- std::unique_ptr<varobj> var (new varobj (new varobj_root));
+ auto var = gdb::make_unique<varobj> (new varobj_root);
if (expression != NULL)
{
void operator() (T *ptr) const { }
};
+/* Create simple std::unique_ptr<T> objects. */
+
+template<typename T, typename... Arg>
+std::unique_ptr<T>
+make_unique (Arg &&...args)
+{
+#if __cplusplus >= 201402L
+ return std::make_unique<T> (std::forward<Arg> (args)...);
+#else
+ return std::unique_ptr<T> (new T (std::forward<Arg> (args)...));
+#endif /* __cplusplus < 201402L */
+}
+
} /* namespace gdb */
/* Dup STR and return a unique_xmalloc_ptr for the result. */