]> git.saurik.com Git - cycript.git/commitdiff
Remove CYExpression::ReplaceAll into CYCompound::Replace.
authorJay Freeman (saurik) <saurik@saurik.com>
Mon, 12 Jul 2010 00:20:10 +0000 (00:20 +0000)
committerJay Freeman (saurik) <saurik@saurik.com>
Mon, 12 Jul 2010 00:20:10 +0000 (00:20 +0000)
Parser.hpp
Replace.cpp

index 48ba4f0d8cbf8ed22eec74a1ed37d72361f0856c..12a5afd85b27d1b76b6cc68c3f26a48364bc5ae4 100644 (file)
@@ -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) {
index acc4a44d3f85c8603d2499a53d8eccfd1f65f848..353894483deed0a2e58693bf937466d30561c50d 100644 (file)
@@ -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);
 }