X-Git-Url: https://git.saurik.com/cycript.git/blobdiff_plain/b3378a02d0a811be38e530933fb9a57a3012a823..cde20a5add55cd85f55405acf6d60c2eafc2b575:/Replace.cpp diff --git a/Replace.cpp b/Replace.cpp index acc4a44..b804ce3 100644 --- a/Replace.cpp +++ b/Replace.cpp @@ -86,7 +86,7 @@ CYExpression *CYAssignment::Replace(CYContext &context) { } CYStatement *CYBlock::Replace(CYContext &context) { - statements_ = statements_->ReplaceAll(context); + context.ReplaceAll(statements_); if (statements_ == NULL) return $ CYEmpty(); return this; @@ -127,7 +127,7 @@ void Catch::Replace(CYContext &context) { $T() void CYClause::Replace(CYContext &context) { $T() context.Replace(case_); - statements_ = statements_->ReplaceAll(context); + context.ReplaceAll(statements_); next_->Replace(context); } @@ -136,8 +136,8 @@ CYStatement *CYComment::Replace(CYContext &context) { } CYExpression *CYCompound::Replace(CYContext &context) { - expressions_ = expressions_->ReplaceAll(context); - return expressions_ == NULL ? NULL : this; + context.ReplaceAll(expressions_); + return this; } CYFunctionParameter *CYComprehension::Parameters(CYContext &context) const { $T(NULL) @@ -283,18 +283,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); } @@ -555,7 +543,7 @@ void CYProgram::Replace(CYContext &context) { CYScope scope(CYScopeProgram, context, statements_); context.nextlocal_ = $ CYNonLocal(); - statements_ = statements_->ReplaceAll(context); + context.ReplaceAll(statements_); context.NonLocal(statements_); scope.Close(); @@ -758,13 +746,6 @@ CYStatement *CYStatement::Collapse(CYContext &context) { return this; } -CYStatement *CYStatement::ReplaceAll(CYContext &context) { $T(NULL) - CYStatement *replace(this); - context.Replace(replace); - replace->SetNext(next_->ReplaceAll(context)); - return replace->Collapse(context); -} - CYString *CYString::Concat(CYContext &context, CYString *rhs) const { size_t size(size_ + rhs->size_); char *value($ char[size + 1]);