diff --git a/libwccl/ops/match/applyoperator.cpp b/libwccl/ops/match/applyoperator.cpp index 50742593cbf4840e7990f4282c6c3adfb2814f74..cfecd52112358e6187939b69044f51b65b7fd5e4 100644 --- a/libwccl/ops/match/applyoperator.cpp +++ b/libwccl/ops/match/applyoperator.cpp @@ -5,13 +5,11 @@ namespace Wccl { ApplyOperator::ApplyOperator( - const VariableAccessor<Position>& cur_iter_pos, const VariableAccessor<Match>& matches, const boost::shared_ptr<const MatchOperator>& match_op, const boost::shared_ptr<const std::vector<boost::shared_ptr<MatchAction> > >& actions, const boost::shared_ptr<const std::vector<boost::shared_ptr<Function<Bool> > > >& conditions) - : _cur_iter_pos(cur_iter_pos), - _matches(matches), + : _matches(matches), _match_op(match_op), _actions(actions), _conditions(conditions) @@ -22,9 +20,9 @@ ApplyOperator::ApplyOperator( void ApplyOperator::execute(const ActionExecContext &context) const { - boost::shared_ptr<Position> iter_pos = context.variables()->get_fast(_cur_iter_pos); + boost::shared_ptr<Position> iter_pos(new Position(0)); boost::shared_ptr<MatchVector> matches = - boost::dynamic_pointer_cast<MatchVector>(context.variables()->get_fast(_matches)); + boost::dynamic_pointer_cast<MatchVector>(context.variables()->get_fast(_matches)); while(context.sentence_context().is_current_inside()) { // Set initial values of $_ and $m:_M variables for this iteration and launch the match: iter_pos->set_value(0); diff --git a/libwccl/ops/match/applyoperator.h b/libwccl/ops/match/applyoperator.h index 2feea7ced77370ed5810c8200ac74a9a5a6cf1b3..65db7e946d6cbdb2df2c4456e9e6dbef86109163 100644 --- a/libwccl/ops/match/applyoperator.h +++ b/libwccl/ops/match/applyoperator.h @@ -17,14 +17,12 @@ class ApplyOperator : public Expression public: typedef LogicalPredicate::BoolFunctionPtrVector BoolFunctionPtrVector; /** - * @param cur_iter_pos Accessor to the "$_" variable * @param matches Accessor to the "$m:_M" variable * @param match_op "match" operator for apply * @param actions "actions" section of apply, should not be empty * @param conditions "cond" section of apply, empty by default */ ApplyOperator( - const VariableAccessor<Position>& cur_iter_pos, const VariableAccessor<Match>& matches, const boost::shared_ptr<const MatchOperator>& match_op, const boost::shared_ptr<const std::vector<boost::shared_ptr<MatchAction> > >& actions, @@ -60,7 +58,6 @@ protected: virtual void execute(const ActionExecContext &context) const; private: - const VariableAccessor<Position> _cur_iter_pos; const VariableAccessor<Match> _matches; const boost::shared_ptr<const MatchOperator> _match_op; const boost::shared_ptr<const std::vector<boost::shared_ptr<MatchAction> > > _actions;