Skip to content
Snippets Groups Projects
Select Git revision
  • 139055a4f1c6e36fb995ea7979883a7d2be874b8
  • master default protected
  • fix-words-ann
  • wccl-rules-migration
  • develop
5 results

funexeccontext.h

Blame
  • user avatar
    Adam Wardynski authored
    Intentionally left implicit.
    ffafa97f
    History
    funexeccontext.h 1.46 KiB
    #ifndef LIBWCCL_OPS_FUNEXECCONTEXT_H
    #define LIBWCCL_OPS_FUNEXECCONTEXT_H
    
    #include <boost/noncopyable.hpp>
    #include <libwccl/variables.h>
    #include <libwccl/sentencecontext.h>
    #include <libwccl/ops/actionexeccontext.h>
    
    namespace Wccl {
    
    /**
     * Class holding execution context of a functional operator
     * i.e. state that the function should operate on.
     */
    class FunExecContext : boost::noncopyable
    {
    public:
    	FunExecContext( const SentenceContext& sentence_context,
    					const boost::shared_ptr<Variables>& vars)
    		: sentence_context_(sentence_context), vars_(vars)
    	{
    	}
    
    	FunExecContext(const ActionExecContext& action_exec_context)
    		: sentence_context_(action_exec_context.sentence_context()),
    		  vars_(action_exec_context.variables())
    	{
    		// this is intentionally left implicit :)
    	}
    
    	/**
    	 * @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