First
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Copyright (c) Lewis Baker
|
||||
// Licenced under MIT license. See LICENSE.txt for details.
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
#ifndef CPPCORO_TESTS_COUNTED_HPP_INCLUDED
|
||||
#define CPPCORO_TESTS_COUNTED_HPP_INCLUDED
|
||||
|
||||
struct counted
|
||||
{
|
||||
static int default_construction_count;
|
||||
static int copy_construction_count;
|
||||
static int move_construction_count;
|
||||
static int destruction_count;
|
||||
|
||||
int id;
|
||||
|
||||
static void reset_counts()
|
||||
{
|
||||
default_construction_count = 0;
|
||||
copy_construction_count = 0;
|
||||
move_construction_count = 0;
|
||||
destruction_count = 0;
|
||||
}
|
||||
|
||||
static int construction_count()
|
||||
{
|
||||
return default_construction_count + copy_construction_count + move_construction_count;
|
||||
}
|
||||
|
||||
static int active_count()
|
||||
{
|
||||
return construction_count() - destruction_count;
|
||||
}
|
||||
|
||||
counted() : id(default_construction_count++) {}
|
||||
counted(const counted& other) : id(other.id) { ++copy_construction_count; }
|
||||
counted(counted&& other) : id(other.id) { ++move_construction_count; other.id = -1; }
|
||||
~counted() { ++destruction_count; }
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user