about summary refs log tree commit diff homepage
path: root/lib/Expr
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2009-06-04 07:09:13 +0000
committerDaniel Dunbar <daniel@zuster.org>2009-06-04 07:09:13 +0000
commitc4a0e57c082e567e81ad3609a32ee492d41f03f9 (patch)
tree428ab02726ff8a8ba8f4b090ce864826591ce639 /lib/Expr
parent136068f571d7f47bf1c2ab9417a874b0829bc670 (diff)
downloadklee-c4a0e57c082e567e81ad3609a32ee492d41f03f9.tar.gz
Change ConstantExpr::{alloc,create} to return a ref<ConstantExpr>
git-svn-id: https://llvm.org/svn/llvm-project/klee/trunk@72853 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Expr')
-rw-r--r--lib/Expr/Parser.cpp20
1 files changed, 19 insertions, 1 deletions
diff --git a/lib/Expr/Parser.cpp b/lib/Expr/Parser.cpp
index 3bbe3334..1808ca7b 100644
--- a/lib/Expr/Parser.cpp
+++ b/lib/Expr/Parser.cpp
@@ -49,8 +49,26 @@ namespace {
     }
   };
   
+  class ExprResult {
+    bool IsValid;
+    ExprHandle Value;
+
+  public:
+    ExprResult() : IsValid(false) {}
+    ExprResult(ExprHandle _Value) : IsValid(true), Value(_Value) {}
+    ExprResult(ref<ConstantExpr> _Value) : IsValid(true), Value(_Value.get()) {}
+    ExprResult(bool _IsValid, ExprHandle _Value) : IsValid(_IsValid), Value(_Value) {}
+
+    bool isValid() { 
+      return IsValid; 
+    }
+    ExprHandle get() { 
+      assert(IsValid && "get() on invalid ParseResult!");
+      return Value; 
+    }
+  };
+
   typedef ParseResult<Decl*> DeclResult;
-  typedef ParseResult<ExprHandle> ExprResult;
   typedef ParseResult<Expr::Width> TypeResult;
   typedef ParseResult<VersionHandle> VersionResult;