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
15class DefaultOnly
16{
17    int data_;
18
19    DefaultOnly(const DefaultOnly&);
20    DefaultOnly& operator=(const DefaultOnly&);
21public:
22    static int count;
23
24    DefaultOnly() : data_(-1) {++count;}
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
33int DefaultOnly::count = 0;
34
35#endif  // DEFAULTONLY_H
36