X-Git-Url: https://git.saurik.com/cycript.git/blobdiff_plain/039ea0ce2f7197c9dae2382e09cfdfb0ddf6021e..cde20a5add55cd85f55405acf6d60c2eafc2b575:/Parser.hpp diff --git a/Parser.hpp b/Parser.hpp index 54ad617..5d86018 100644 --- a/Parser.hpp +++ b/Parser.hpp @@ -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 + void ReplaceAll(Type_ *&values) { + Type_ **last(&values); + for (Type_ *next(values); next != NULL; next = next->next_) { + Replace(*last); + last = &(*last)->next_; + } + } + template void Replace(Type_ *&value) { for (;;) if (value == NULL)