add auto_sbitmap class

gcc/ChangeLog:

2016-07-26  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

	* sbitmap.h (auto_sbitmap): New class.

From-SVN: r238747
This commit is contained in:
Trevor Saunders 2016-07-26 10:43:58 +00:00 committed by Trevor Saunders
parent 3ef7d2236b
commit 62e2078514
2 changed files with 29 additions and 0 deletions

View File

@ -1,3 +1,7 @@
2016-07-26 Trevor Saunders <tbsaunde+gcc@tbsaunde.org>
* sbitmap.h (auto_sbitmap): New class.
2016-07-26 Alan Modra <amodra@gmail.com>
PR target/72103

View File

@ -256,4 +256,29 @@ extern int bitmap_last_set_bit (const_sbitmap);
extern void debug_bitmap (const_sbitmap);
extern sbitmap sbitmap_realloc (sbitmap, unsigned int);
/* a class that ties the lifetime of a sbitmap to its scope. */
class auto_sbitmap
{
public:
explicit auto_sbitmap (unsigned int size) :
m_bitmap (sbitmap_alloc (size)) {}
~auto_sbitmap () { sbitmap_free (m_bitmap); }
/* Allow calling sbitmap functions on our bitmap. */
operator sbitmap () { return m_bitmap; }
private:
/* Prevent making a copy that refers to our sbitmap. */
auto_sbitmap (const auto_sbitmap &);
auto_sbitmap &operator = (const auto_sbitmap &);
#if __cplusplus >= 201103L
auto_sbitmap (auto_sbitmap &&);
auto_sbitmap &operator = (auto_sbitmap &&);
#endif
/* The bitmap we are managing. */
sbitmap m_bitmap;
};
#endif /* ! GCC_SBITMAP_H */