From 9ea332d418dd1a371f30988939a05e6a8f4891b1 Mon Sep 17 00:00:00 2001
From: Bartosz Broda <bartosz.broda@gmail.com>
Date: Sat, 11 Jun 2011 15:25:38 +0200
Subject: [PATCH] add bool ops simple indexing

---
 libmwereader/mweparser.cpp | 30 +++++++++++++++++++++++++++++-
 libmwereader/mweparser.h   | 11 +++++++++--
 2 files changed, 38 insertions(+), 3 deletions(-)

diff --git a/libmwereader/mweparser.cpp b/libmwereader/mweparser.cpp
index 3530760..901b1ef 100644
--- a/libmwereader/mweparser.cpp
+++ b/libmwereader/mweparser.cpp
@@ -14,7 +14,32 @@ namespace Corpus2 {
 	MWEBuilder::MWEBuilder(const Tagset& tagset)
 		: tagset_(tagset), parser_(tagset)
 	{
+	}
+
+	MWEBuilder::BoolOpPtr MWEBuilder::get_head_condition(
+		const std::string & headcond)
+	{
+		return get_condition(headcond, head_conditions_);
+	}
+	MWEBuilder::BoolOpPtr MWEBuilder::get_mwe_condition(
+		const std::string &cond)
+	{
+		return get_condition(cond, main_conditions_);
+	}
 
+	MWEBuilder::BoolOpPtr MWEBuilder::get_condition(
+		const std::string & cond, value_type& where)
+	{
+		value_type::iterator search = where.find(cond);
+
+		if(search != where.end())
+			return search->second;
+
+		BoolOpPtr op = parser_.parseBoolOperator(cond);
+
+		where[cond] = op;
+
+		return op;
 	}
 
 	MWEParser::MWEParser(MWEIndex &index)
@@ -29,7 +54,10 @@ namespace Corpus2 {
 
 	void MWEParser::create_mwe()
 	{
-
+		MWEBuilder::BoolOpPtr main = mwe_builder_->get_mwe_condition(
+					wccl_operator_);
+		MWEBuilder::BoolOpPtr head = mwe_builder_->get_head_condition(
+					head_cond_);
 	}
 
 	std::string MWEParser::get_attribute(const AttributeList& attributes,
diff --git a/libmwereader/mweparser.h b/libmwereader/mweparser.h
index 71f4ce8..bb38228 100644
--- a/libmwereader/mweparser.h
+++ b/libmwereader/mweparser.h
@@ -6,7 +6,7 @@
 #include <boost/unordered_map.hpp>
 
 #include <libwccl/parser/Parser.h>
-
+#include <libwccl/ops/operator.h>
 #include "mwe.h"
 
 namespace Corpus2 {
@@ -14,11 +14,18 @@ namespace Corpus2 {
 class MWEBuilder
 {
 public:
+	typedef boost::shared_ptr<Wccl::Operator<Wccl::Bool> > BoolOpPtr;
+
 	MWEBuilder(const Tagset& tagset);
 
+	BoolOpPtr get_head_condition(const std::string &);
+	BoolOpPtr get_mwe_condition(const std::string &);
+
 
 private:
-	typedef boost::unordered_map<std::string, std::string> value_type;
+	typedef boost::unordered_map<std::string, BoolOpPtr> value_type;
+
+	BoolOpPtr get_condition(const std::string & cond, value_type& where);
 
 	const Tagset& tagset_;
 	/// str -> ptr to ccl operator
-- 
GitLab