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