From: Jay Freeman (saurik) <saurik@saurik.com> Date: Mon, 12 Jul 2010 00:20:10 +0000 (+0000) Subject: Remove CYExpression::ReplaceAll into CYCompound::Replace. X-Git-Tag: v0.9.432~19 X-Git-Url: https://git.saurik.com/cycript.git/commitdiff_plain/9efd8b032d404ee2ad8267df43e7888416e4ff83?ds=inline Remove CYExpression::ReplaceAll into CYCompound::Replace. --- diff --git a/Parser.hpp b/Parser.hpp index 48ba4f0..12a5afd 100644 --- a/Parser.hpp +++ b/Parser.hpp @@ -561,8 +561,6 @@ struct CYExpression : virtual CYExpression *ClassName(CYContext &context, bool object); virtual void ClassName(CYOutput &out, bool object) const; - CYExpression *ReplaceAll(CYContext &context); - virtual CYExpression *Replace(CYContext &context) = 0; virtual CYExpression *Primitive(CYContext &context) { diff --git a/Replace.cpp b/Replace.cpp index acc4a44..3538944 100644 --- a/Replace.cpp +++ b/Replace.cpp @@ -136,8 +136,10 @@ CYStatement *CYComment::Replace(CYContext &context) { } CYExpression *CYCompound::Replace(CYContext &context) { - expressions_ = expressions_->ReplaceAll(context); - return expressions_ == NULL ? NULL : this; + CYExpression **last(&expressions_); + for (CYExpression *next(expressions_); next != NULL; next = next->next_) + last = &(*last = next->Replace(context))->next_; + return this; } CYFunctionParameter *CYComprehension::Parameters(CYContext &context) const { $T(NULL) @@ -283,18 +285,6 @@ CYExpression *CYExpression::ForEachIn(CYContext &context) { return this; } -CYExpression *CYExpression::ReplaceAll(CYContext &context) { $T(NULL) - CYExpression *replace(this); - context.Replace(replace); - - if (CYExpression *next = next_->ReplaceAll(context)) - replace->SetNext(next); - else - replace->SetNext(next_); - - return replace; -} - CYNumber *CYFalse::Number(CYContext &context) { return $D(0); }