mirror of git://gcc.gnu.org/git/gcc.git
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:
parent
3ef7d2236b
commit
62e2078514
|
|
@ -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>
|
2016-07-26 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
PR target/72103
|
PR target/72103
|
||||||
|
|
|
||||||
|
|
@ -256,4 +256,29 @@ extern int bitmap_last_set_bit (const_sbitmap);
|
||||||
|
|
||||||
extern void debug_bitmap (const_sbitmap);
|
extern void debug_bitmap (const_sbitmap);
|
||||||
extern sbitmap sbitmap_realloc (sbitmap, unsigned int);
|
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 */
|
#endif /* ! GCC_SBITMAP_H */
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue