1 //===----------------------------------------------------------------------===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 #ifndef DEFAULTONLY_H
11 #define DEFAULTONLY_H
12 
13 #include <cassert>
14 
15 class DefaultOnly
16 {
17     int data_;
18 
19     DefaultOnly(const DefaultOnly&);
20     DefaultOnly& operator=(const DefaultOnly&);
21 public:
22     static int count;
23 
DefaultOnly()24     DefaultOnly() : data_(-1) {++count;}
~DefaultOnly()25     ~DefaultOnly() {data_ = 0; --count;}
26 
27     friend bool operator==(const DefaultOnly& x, const DefaultOnly& y)
28         {return x.data_ == y.data_;}
29     friend bool operator< (const DefaultOnly& x, const DefaultOnly& y)
30         {return x.data_ < y.data_;}
31 };
32 
33 int DefaultOnly::count = 0;
34 
35 #endif  // DEFAULTONLY_H
36