From 1677fd4ce233febc00813d1f9385316579c35cb2 Mon Sep 17 00:00:00 2001
From: Adam Wardynski <award@.(B-4.4.46a)>
Date: Fri, 19 Nov 2010 19:11:26 +0100
Subject: [PATCH] Helper static method Predicate::evaluate

---
 libwccl/ops/intersects.h  | 5 +----
 libwccl/ops/isinside.h    | 5 +----
 libwccl/ops/isoutside.h   | 5 +----
 libwccl/ops/issubsetof.h  | 7 +++----
 libwccl/ops/predicate.cpp | 5 +++++
 libwccl/ops/predicate.h   | 4 ++++
 6 files changed, 15 insertions(+), 16 deletions(-)

diff --git a/libwccl/ops/intersects.h b/libwccl/ops/intersects.h
index ad4716d..39ed272 100644
--- a/libwccl/ops/intersects.h
+++ b/libwccl/ops/intersects.h
@@ -29,10 +29,7 @@ protected:
 	virtual BaseRetValPtr apply_internal(const FunExecContext& context) const {
 		boost::shared_ptr<T> set1 = this->set1_expr_->apply(context);
 		boost::shared_ptr<T> set2 = this->set2_expr_->apply(context);
-		if(set1->is_subset_of(*set2)) {
-			return Predicate::True(context);
-		}
-		return Predicate::False(context);
+		return Predicate::evaluate(set1->intersects(*set2), context);
 	}
 
 };
diff --git a/libwccl/ops/isinside.h b/libwccl/ops/isinside.h
index 1a3339d..0acbb86 100644
--- a/libwccl/ops/isinside.h
+++ b/libwccl/ops/isinside.h
@@ -42,10 +42,7 @@ protected:
 	 */
 	virtual BaseRetValPtr apply_internal(const FunExecContext& context) const {
 		const boost::shared_ptr<const Position>& pos = pos_expr_->apply(context);
-		if(pos->is_inside(context.sentence_context())) {
-			return Predicate::True(context);
-		}
-		return Predicate::False(context);
+		return Predicate::evaluate(pos->is_inside(context.sentence_context()), context);
 	}
 };
 
diff --git a/libwccl/ops/isoutside.h b/libwccl/ops/isoutside.h
index cf74440..f32591d 100644
--- a/libwccl/ops/isoutside.h
+++ b/libwccl/ops/isoutside.h
@@ -42,10 +42,7 @@ protected:
 	 */
 	virtual BaseRetValPtr apply_internal(const FunExecContext& context) const {
 		const boost::shared_ptr<const Position>& pos = pos_expr_->apply(context);
-		if(pos->is_outside(context.sentence_context())) {
-			return Predicate::True(context);
-		}
-		return Predicate::False(context);
+		return Predicate::evaluate(pos->is_outside(context.sentence_context()), context);
 	}
 };
 
diff --git a/libwccl/ops/issubsetof.h b/libwccl/ops/issubsetof.h
index a16622c..0fd276f 100644
--- a/libwccl/ops/issubsetof.h
+++ b/libwccl/ops/issubsetof.h
@@ -32,11 +32,10 @@ protected:
 	 */
 	virtual BaseRetValPtr apply_internal(const FunExecContext& context) const {
 		boost::shared_ptr<T> possible_subset = this->set1_expr_->apply(context);
-		if(!possible_subset->empty()) {
+		if(!possible_subset->empty())
+		{
 			boost::shared_ptr<T> set_compared_to = this->set2_expr_->apply(context);
-			if(possible_subset->is_subset_of(*set_compared_to)) {
-				return Predicate::True(context);
-			}
+			return Predicate::evaluate(possible_subset->is_subset_of(*set_compared_to), context);
 		}
 		return Predicate::False(context);
 	}
diff --git a/libwccl/ops/predicate.cpp b/libwccl/ops/predicate.cpp
index 57d5ee1..e3d7b7f 100644
--- a/libwccl/ops/predicate.cpp
+++ b/libwccl/ops/predicate.cpp
@@ -14,4 +14,9 @@ Predicate::RetValPtr Predicate::False(const FunExecContext& context)
 	return false_constant.apply(context);
 }
 
+Predicate::RetValPtr Predicate::evaluate(bool condition, const FunExecContext &context)
+{
+	return condition ? True(context) : False(context);
+}
+
 } /* end ns Wccl */
diff --git a/libwccl/ops/predicate.h b/libwccl/ops/predicate.h
index e6176ff..a569b4e 100644
--- a/libwccl/ops/predicate.h
+++ b/libwccl/ops/predicate.h
@@ -21,6 +21,10 @@ public:
 	 * Helper function returing False, to use by predicates when returning value
 	 */
 	static RetValPtr False(const FunExecContext& context);
+	/**
+	 * Helper function returing True or False depending on condition
+	 */
+	static RetValPtr evaluate(bool condition, const FunExecContext& context);
 };
 
 } /* end ns Wccl */
-- 
GitLab