#ifndef LIBWCCL_OPS_FUNEXECCONTEXT_H #define LIBWCCL_OPS_FUNEXECCONTEXT_H #include <boost/noncopyable.hpp> #include <libwccl/variables.h> #include <libwccl/sentencecontext.h> namespace Wccl { /** * Class holding execution context of a functional operator * i.e. state that the function should operate on. */ class FunExecContext : public boost::noncopyable { public: FunExecContext( const SentenceContext& sentence_context, const boost::shared_ptr<Variables>& vars) : sentence_context_(sentence_context), vars_(vars) { } /** * @returns Context of a sentence the operator is applied to. * @note Functional operators should not change sentence state, * hence the const reference. */ const SentenceContext& sentence_context() const { return sentence_context_; } /** * @returns Pointer to variables the operator should operate with. * @note Variables should be accesible to modifications, but overall * object should not get replaced, hence the const pointer. */ const boost::shared_ptr<Variables>& variables() const { return vars_; } private: const SentenceContext& sentence_context_; const boost::shared_ptr<Variables> vars_; }; } /* end ns Wccl */ #endif // LIBWCCL_OPS_FUNEXECCONTEXT_H