From e8185fae7d0b376b91c1a6043badf136662eb9f3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pawe=C5=82=20K=C4=99dzia?= <pawel.kedzia@pwr.wroc.pl>
Date: Mon, 4 Apr 2011 15:52:29 +0200
Subject: [PATCH] Add wrapper for Wccl::Operator

---
 swig/libccloperator.i | 71 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 71 insertions(+)
 create mode 100644 swig/libccloperator.i

diff --git a/swig/libccloperator.i b/swig/libccloperator.i
new file mode 100644
index 0000000..609d917
--- /dev/null
+++ b/swig/libccloperator.i
@@ -0,0 +1,71 @@
+#ifndef SWIG_LIBWCCL_OPERATOR_I
+#define SWIG_LIBWCCL_OPERATOR_I
+
+%module libccloperator
+%{
+  #include <libwccl/ops/operator.h>
+%}
+
+
+%include "libcclvalue.i"
+%include "libcclsentencecontext.i"
+%include "libcclfunctionaloperator.i"
+
+/*
+%include "libcclvariables.i"
+%include "libcclparsedexpression.i"
+*/
+
+%include "std_string.i"
+%include "boost_shared_ptr.i"
+
+%feature("notabstract") Wccl::Operator;
+
+%rename(__op_cop__) Wccl::Operator::operator=(const Operator& other);
+%rename(__op_fun__) Wccl::Operator::operator()(const SentenceContext& sentence_context);
+
+namespace Wccl {
+  template <class T> class Operator : public FunctionalOperator {
+  public:
+    Operator();
+    Operator& operator=(const Operator& other);
+/*
+    Operator(const boost::shared_ptr<const Function<T> >& body, const Variables& variables);
+*/
+
+    Operator(const Operator& other, bool clean = false);
+
+    boost::shared_ptr<const T> operator()(const SentenceContext& sentence_context);
+    boost::shared_ptr<const T> apply(const SentenceContext& sentence_context);
+    boost::shared_ptr<T> copy_apply(const SentenceContext& sentence_context);
+    boost::shared_ptr<const Value> base_apply(const SentenceContext& sc);
+    
+    Operator clone() const;
+    Operator clone_clean() const;
+    
+    boost::shared_ptr<Operator<T> > clone_ptr() const;
+    boost::shared_ptr<Operator<T> > clone_clean_ptr() const;
+
+    std::string to_string(const Corpus2::Tagset& tagset) const;
+
+  protected:
+    Operator* clone_internal() const;
+    std::ostream& write_to(std::ostream& ostream) const;
+  };
+
+  %template (BoolOperator) Operator<Bool>;
+  %template (TSetOperator) Operator<TSet>;
+  %template (StrSetOperator) Operator<StrSet>;
+  %template (PositionOperator) Operator<Position>;
+
+  %template (SharedPtrBoolOperator) boost::shared_ptr<Operator<Bool> >;
+  %template (SharedPtrTSetOperator) boost::shared_ptr<Operator<TSet> >;
+  %template (SharedPtrStrSetOperator) boost::shared_ptr<Operator<StrSet> >;
+  %template (SharedPtrPositionOperator) boost::shared_ptr<Operator<Position> >;
+}
+
+using namespace boost;
+using namespace std;
+using namespace Wccl;
+
+#endif /* SWIG_LIBWCCL_OPERATOR_I */
-- 
GitLab