diff options
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 |