#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 */