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