aboutsummaryrefslogtreecommitdiff
path: root/include/clang/Analysis/Support/Optional.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/clang/Analysis/Support/Optional.h')
-rw-r--r--include/clang/Analysis/Support/Optional.h66
1 files changed, 0 insertions, 66 deletions
diff --git a/include/clang/Analysis/Support/Optional.h b/include/clang/Analysis/Support/Optional.h
deleted file mode 100644
index a4e6d519a04f..000000000000
--- a/include/clang/Analysis/Support/Optional.h
+++ /dev/null
@@ -1,66 +0,0 @@
-//===-- Optional.h - Simple variant for passing optional values ---*- C++ -*-=//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file provides Optional, a template class modeled in the spirit of
-// OCaml's 'opt' variant. The idea is to strongly type whether or not
-// a value can be optional.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_CLANG_ANALYSIS_OPTIONAL
-#define LLVM_CLANG_ANALYSIS_OPTIONAL
-
-namespace clang {
-
-template<typename T>
-class Optional {
- T x;
- unsigned hasVal : 1;
-public:
- explicit Optional() : x(), hasVal(false) {}
- Optional(const T &y) : x(y), hasVal(true) {}
-
- static inline Optional create(const T* y) {
- return y ? Optional(*y) : Optional();
- }
-
- Optional &operator=(const T &y) {
- x = y;
- hasVal = true;
- return *this;
- }
-
- const T* getPointer() const { assert(hasVal); return &x; }
- const T& getValue() const { assert(hasVal); return x; }
-
- operator bool() const { return hasVal; }
- bool hasValue() const { return hasVal; }
- const T* operator->() const { return getPointer(); }
- const T& operator*() const { assert(hasVal); return x; }
-};
-} //end clang namespace
-
-namespace llvm {
-
-template<typename T> struct simplify_type;
-
-template <typename T>
-struct simplify_type<const ::clang::Optional<T> > {
- typedef const T* SimpleType;
- static SimpleType getSimplifiedValue(const ::clang::Optional<T> &Val) {
- return Val.getPointer();
- }
-};
-
-template <typename T>
-struct simplify_type< ::clang::Optional<T> >
- : public simplify_type<const ::clang::Optional<T> > {};
-} // end llvm namespace
-
-#endif