diff options
| author | Chris Lattner <sabre@nondot.org> | 2001-07-23 18:26:21 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2001-07-23 18:26:21 +0000 |
| commit | 4bc3daaa3f3c9f22d5dd695e987e8d20f999791c (patch) | |
| tree | bfe6a9bf56b0b1c926c0ab41a56a9283cd007fc4 /include/llvm/Support | |
| parent | 57dbb3ad63b6a0e77798edb156ef43daa3bfc67e (diff) | |
| download | external_llvm-4bc3daaa3f3c9f22d5dd695e987e8d20f999791c.zip external_llvm-4bc3daaa3f3c9f22d5dd695e987e8d20f999791c.tar.gz external_llvm-4bc3daaa3f3c9f22d5dd695e987e8d20f999791c.tar.bz2 | |
Eliminated the Unique class in favor of NonCopyable and NonCopyableV
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@280 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Support')
| -rw-r--r-- | include/llvm/Support/DataTypes.h | 18 | ||||
| -rw-r--r-- | include/llvm/Support/NonCopyable.h | 37 | ||||
| -rw-r--r-- | include/llvm/Support/Unique.h | 56 |
3 files changed, 50 insertions, 61 deletions
diff --git a/include/llvm/Support/DataTypes.h b/include/llvm/Support/DataTypes.h index 84b8a65..2f69479 100644 --- a/include/llvm/Support/DataTypes.h +++ b/include/llvm/Support/DataTypes.h @@ -1,3 +1,16 @@ +//===-- include/Support/DataTypes.h - Define fixed size types ----*- C++ -*--=// +// +// This file contains definitions to figure out the size of _HOST_ data types. +// This file is important because different host OS's define different macros, +// which makes portability tough. This file exports the following definitions: +// +// LITTLE_ENDIAN: is #define'd if the host is little endian +// int64_t : is a typedef for the signed 64 bit system type +// uint64_t : is a typedef for the unsigned 64 bit system type +// +// No library is required when using these functinons. +// +//===----------------------------------------------------------------------===// // TODO: This file sucks. Not only does it not work, but this stuff should be // autoconfiscated anyways. Major FIXME @@ -6,11 +19,6 @@ #ifndef LLVM_SUPPORT_DATATYPES_H #define LLVM_SUPPORT_DATATYPES_H -// Should define the following: -// LITTLE_ENDIAN if applicable -// int64_t -// uint64_t - #ifdef LINUX #include <stdint.h> // Defined by ISO C 99 #include <endian.h> diff --git a/include/llvm/Support/NonCopyable.h b/include/llvm/Support/NonCopyable.h new file mode 100644 index 0000000..f4fc268 --- /dev/null +++ b/include/llvm/Support/NonCopyable.h @@ -0,0 +1,37 @@ +//===-- NonCopyable.h - Disable copy ctor and op= in subclasses --*- C++ -*--=// +// +// This file defines the NonCopyable and NonCopyableV classes. These mixin +// classes may be used to mark a class not being copyable. You should derive +// from NonCopyable if you don't want to have a virtual dtor, or NonCopyableV +// if you do want polymorphic behavior in your class. +// +// No library is required when using these functinons. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_SUPPORT_NONCOPYABLE_H +#define LLVM_SUPPORT_NONCOPYABLE_H + +class NonCopyable { + // Disable the copy constructor and the assignment operator + // by making them both private: + // + NonCopyable(const NonCopyable &); // DO NOT IMPLEMENT + NonCopyable &operator=(const NonCopyable &); // DO NOT IMPLEMENT +protected: + inline NonCopyable() {} + inline ~NonCopyable() {} +}; + +class NonCopyableV { + // Disable the copy constructor and the assignment operator + // by making them both private: + // + NonCopyableV(const NonCopyableV &); // DO NOT IMPLEMENT + NonCopyableV &operator=(const NonCopyableV &); // DO NOT IMPLEMENT +protected: + inline NonCopyableV() {} + virtual ~NonCopyableV() {} +}; + +#endif diff --git a/include/llvm/Support/Unique.h b/include/llvm/Support/Unique.h deleted file mode 100644 index 2219553..0000000 --- a/include/llvm/Support/Unique.h +++ /dev/null @@ -1,56 +0,0 @@ -//************************************************************-*- C++ -*- -// class Unique: -// Mixin class for classes that should never be copied. -// -// Purpose: -// This mixin disables both the copy constructor and the -// assignment operator. It also provides a default equality operator. -// -// History: -// 09/24/96 - vadve - Created (adapted from dHPF). -// -//*************************************************************************** - -#ifndef UNIQUE_H -#define UNIQUE_H - -#include <assert.h> - - -class Unique -{ -protected: - /*ctor*/ Unique () {} - /*dtor*/ virtual ~Unique () {} - -public: - virtual bool operator== (const Unique& u1) const; - virtual bool operator!= (const Unique& u1) const; - -private: - // - // Disable the copy constructor and the assignment operator - // by making them both private: - // - /*ctor*/ Unique (Unique&) { assert(0); } - virtual Unique& operator= (const Unique& u1) { assert(0); - return *this; } -}; - - -// Unique object equality. -inline bool -Unique::operator==(const Unique& u2) const -{ - return (bool) (this == &u2); -} - - -// Unique object inequality. -inline bool -Unique::operator!=(const Unique& u2) const -{ - return (bool) !(this == &u2); -} - -#endif |
