]> git.saurik.com Git - cycript.git/blobdiff - Parser.hpp
Force Fink's PATH (but only when required).
[cycript.git] / Parser.hpp
index 5d860182f315ec41d7c5a594915c1bec1edbefe7..b126d5a5fee8e4578a3d84300fb6189597d5b419 100644 (file)
@@ -19,8 +19,8 @@
 **/
 /* }}} */
 
 **/
 /* }}} */
 
-#ifndef CYPARSER_HPP
-#define CYPARSER_HPP
+#ifndef CYCRIPT_PARSER_HPP
+#define CYCRIPT_PARSER_HPP
 
 #include <iostream>
 
 
 #include <iostream>
 
 #include <cstdlib>
 
 #include "location.hh"
 #include <cstdlib>
 
 #include "location.hh"
+
+#include "List.hpp"
 #include "Pooling.hpp"
 #include "Options.hpp"
 
 class CYContext;
 
 #include "Pooling.hpp"
 #include "Options.hpp"
 
 class CYContext;
 
-template <typename Type_>
-struct CYNext {
-    Type_ *next_;
-
-    CYNext() :
-        next_(NULL)
-    {
-    }
-
-    CYNext(Type_ *next) :
-        next_(next)
-    {
-    }
-
-    void SetNext(Type_ *next) {
-        next_ = next;
-    }
-};
-
 struct CYThing {
     virtual ~CYThing() {
     }
 struct CYThing {
     virtual ~CYThing() {
     }
@@ -320,6 +303,7 @@ struct CYScope {
     CYIdentifierValueSet identifiers_;
 
     CYScope(CYScopeType type, CYContext &context, CYStatement *&statements);
     CYIdentifierValueSet identifiers_;
 
     CYScope(CYScopeType type, CYContext &context, CYStatement *&statements);
+    virtual ~CYScope();
 
     void Close();
 
 
     void Close();
 
@@ -370,8 +354,8 @@ struct CYContext {
     template <typename Type_>
     void ReplaceAll(Type_ *&values) {
         Type_ **last(&values);
     template <typename Type_>
     void ReplaceAll(Type_ *&values) {
         Type_ **last(&values);
-        for (Type_ *next(values); next != NULL; next = next->next_) {
-            Replace(*last);
+        CYForEach (next, values) {
+            Replace(*last = next);
             last = &(*last)->next_;
         }
     }
             last = &(*last)->next_;
         }
     }
@@ -423,10 +407,7 @@ struct CYBlock :
     }
 
     void AddPrev(CYStatement *statement) {
     }
 
     void AddPrev(CYStatement *statement) {
-        CYStatement *last(statement);
-        while (last->next_ != NULL)
-            last = last->next_;
-        last->SetNext(statements_);
+        CYSetLast(statement, statements_);
         statements_ = statement;
     }
 
         statements_ = statement;
     }
 
@@ -611,10 +592,7 @@ struct CYCompound :
     }
 
     void AddPrev(CYExpression *expression) {
     }
 
     void AddPrev(CYExpression *expression) {
-        CYExpression *last(expression);
-        while (last->next_ != NULL)
-            last = last->next_;
-        last->SetNext(expressions_);
+        CYSetLast(expression, expressions_);
         expressions_ = expression;
     }
 
         expressions_ = expression;
     }
 
@@ -1864,4 +1842,4 @@ CYAssignment_("&=", BitwiseAnd)
 CYAssignment_("^=", BitwiseXOr)
 CYAssignment_("|=", BitwiseOr)
 
 CYAssignment_("^=", BitwiseXOr)
 CYAssignment_("|=", BitwiseOr)
 
-#endif/*CYPARSER_HPP*/
+#endif/*CYCRIPT_PARSER_HPP*/