vec.h: add auto_delete_vec
authorDavid Malcolm <dmalcolm@redhat.com>
Thu, 9 Jan 2020 01:39:45 +0000 (01:39 +0000)
committerDavid Malcolm <dmalcolm@gcc.gnu.org>
Thu, 9 Jan 2020 01:39:45 +0000 (01:39 +0000)
commite4d2203e31e7c017266e61dbf0d24ee85e59fa55
tree280fe13e89a65db7d5867eceacee2ae31f26afda
parentb3de347f3296995eb2a648d6303ab66bf689e104
vec.h: add auto_delete_vec

This patch adds a class auto_delete_vec<T>, a subclass of auto_vec <T *>
that deletes all of its elements on destruction; it's used in many
places in the analyzer patch kit.

This is a crude way for a vec to "own" the objects it points to
and clean up automatically (essentially a workaround for not being able
to use unique_ptr, due to C++98).

gcc/ChangeLog:
* vec.c (class selftest::count_dtor): New class.
(selftest::test_auto_delete_vec): New test.
(selftest::vec_c_tests): Call it.
* vec.h (class auto_delete_vec): New class template.
(auto_delete_vec<T>::~auto_delete_vec): New dtor.

From-SVN: r280027
gcc/ChangeLog
gcc/vec.c
gcc/vec.h