diff --git a/libwccl/ops/actions/delete.cpp b/libwccl/ops/actions/delete.cpp index e6b8b3eca6ebabcb37a40466e4038097a2d73069..df2cd223b04110141e1f0d0c5f0fbefd065bb845 100644 --- a/libwccl/ops/actions/delete.cpp +++ b/libwccl/ops/actions/delete.cpp @@ -1,5 +1,4 @@ #include <libwccl/ops/actions/delete.h> -#include <libwccl/ops/functions/constant.h> #include <libpwrutils/foreach.h> #include <sstream> @@ -8,13 +7,12 @@ namespace Wccl { Bool Delete::execute(const ActionExecContext& context) const { Bool changed(false); - const boost::shared_ptr<const Position> pos = pos_->apply(context); - int abs_pos = context.sentence_context().get_abs_position(*pos); + int abs_pos = context.sentence_context().get_abs_position(*pos_->apply(context)); if (context.sentence_context().is_inside(abs_pos)) { Corpus2::Token& token = *context.sentence_context().at(abs_pos); std::vector<Corpus2::Lexeme> original(token.lexemes()); std::vector<Corpus2::Lexeme> remaining; - token.lexemes() = remaining; + token.lexemes().clear(); foreach (const Corpus2::Lexeme& lexeme, original) { token.add_lexeme(lexeme); if (!condition_->apply(context)->get_value()) { diff --git a/libwccl/ops/actions/select.cpp b/libwccl/ops/actions/select.cpp index 507e8cd6e5e4d674391c0e5aff0370246098aa73..cd746b21362737bd3ff8162e2b5cfaea1f899e40 100644 --- a/libwccl/ops/actions/select.cpp +++ b/libwccl/ops/actions/select.cpp @@ -1,5 +1,5 @@ #include <libwccl/ops/actions/select.h> -#include <libwccl/ops/functions/constant.h> +#include <libpwrutils/foreach.h> #include <sstream> namespace Wccl { @@ -7,13 +7,12 @@ namespace Wccl { Bool Select::execute(const ActionExecContext& context) const { Bool changed(false); - const boost::shared_ptr<const Position> pos = pos_->apply(context); - int abs_pos = context.sentence_context().get_abs_position(*pos); + int abs_pos = context.sentence_context().get_abs_position(*pos_->apply(context)); if (context.sentence_context().is_inside(abs_pos)) { Corpus2::Token& token = *context.sentence_context().at(abs_pos); std::vector<Corpus2::Lexeme> original(token.lexemes()); std::vector<Corpus2::Lexeme> remaining; - token.lexemes() = remaining; + token.lexemes().clear(); foreach (const Corpus2::Lexeme& lexeme, original) { token.add_lexeme(lexeme); if (condition_->apply(context)->get_value()) {