xref: /llvm-project/libcxx/test/support/DefaultOnly.h (revision 4cd6ca102a94e1b64ba3f940cc26b4d7b2b82964)
1354d39caSMarshall Clow //===----------------------------------------------------------------------===//
2354d39caSMarshall Clow //
3*57b08b09SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*57b08b09SChandler Carruth // See https://llvm.org/LICENSE.txt for license information.
5*57b08b09SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6354d39caSMarshall Clow //
7354d39caSMarshall Clow //===----------------------------------------------------------------------===//
8354d39caSMarshall Clow 
9a26fcc79SMarshall Clow #ifndef DEFAULTONLY_H
10a26fcc79SMarshall Clow #define DEFAULTONLY_H
11a26fcc79SMarshall Clow 
12a26fcc79SMarshall Clow #include <cassert>
13a26fcc79SMarshall Clow 
14a26fcc79SMarshall Clow class DefaultOnly
15a26fcc79SMarshall Clow {
16a26fcc79SMarshall Clow     int data_;
17a26fcc79SMarshall Clow 
18a26fcc79SMarshall Clow     DefaultOnly(const DefaultOnly&);
19a26fcc79SMarshall Clow     DefaultOnly& operator=(const DefaultOnly&);
20a26fcc79SMarshall Clow public:
21a26fcc79SMarshall Clow     static int count;
22a26fcc79SMarshall Clow 
DefaultOnly()23a26fcc79SMarshall Clow     DefaultOnly() : data_(-1) {++count;}
~DefaultOnly()24a26fcc79SMarshall Clow     ~DefaultOnly() {data_ = 0; --count;}
25a26fcc79SMarshall Clow 
26a26fcc79SMarshall Clow     friend bool operator==(const DefaultOnly& x, const DefaultOnly& y)
27a26fcc79SMarshall Clow         {return x.data_ == y.data_;}
28a26fcc79SMarshall Clow     friend bool operator< (const DefaultOnly& x, const DefaultOnly& y)
29a26fcc79SMarshall Clow         {return x.data_ < y.data_;}
30a26fcc79SMarshall Clow };
31a26fcc79SMarshall Clow 
32a26fcc79SMarshall Clow int DefaultOnly::count = 0;
33a26fcc79SMarshall Clow 
34a26fcc79SMarshall Clow #endif // DEFAULTONLY_H
35