]> git.saurik.com Git - cycript.git/blobdiff - Parser.hpp
Merge CYStatement::ReplaceAll with the new CYCompound::Replace version of CYExpressio...
[cycript.git] / Parser.hpp
index 54ad617abbfcae0fb63e4703958bf8f66af36ed7..5d860182f315ec41d7c5a594915c1bec1edbefe7 100644 (file)
@@ -143,9 +143,7 @@ struct CYStatement :
     void Single(CYOutput &out, CYFlags flags) const;
     void Multiple(CYOutput &out, CYFlags flags = CYNoFlags) const;
 
-    CYStatement *ReplaceAll(CYContext &context);
     virtual CYStatement *Collapse(CYContext &context);
-
     virtual CYStatement *Replace(CYContext &context) = 0;
 
   private:
@@ -369,6 +367,15 @@ struct CYContext {
     virtual ~CYContext() {
     }
 
+    template <typename Type_>
+    void ReplaceAll(Type_ *&values) {
+        Type_ **last(&values);
+        for (Type_ *next(values); next != NULL; next = next->next_) {
+            Replace(*last);
+            last = &(*last)->next_;
+        }
+    }
+
     template <typename Type_>
     void Replace(Type_ *&value) {
         for (;;) if (value == NULL)