diff --git a/swig/libccloperator.i b/swig/libccloperator.i new file mode 100644 index 0000000000000000000000000000000000000000..609d91715a35d2ea7b424eb7232dac9418ac2b7a --- /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 */