]> git.saurik.com Git - cycript.git/commitdiff
Refactor some for loops to a CYForEach() over CYNext<>.
authorJay Freeman (saurik) <saurik@saurik.com>
Mon, 12 Jul 2010 03:24:54 +0000 (03:24 +0000)
committerJay Freeman (saurik) <saurik@saurik.com>
Mon, 12 Jul 2010 03:24:54 +0000 (03:24 +0000)
Console.cpp
ObjectiveC/Output.mm
ObjectiveC/Replace.cpp
Output.cpp
Parser.hpp
Replace.cpp

index 6ecc251a7cc53c152c369426c624c5a77c488e09..89cd62ef635192ee0730650f57f1bd60949640d2 100644 (file)
@@ -313,7 +313,7 @@ static char **Complete(const char *word, int start, int end) {
     std::string common;
     bool rest(false);
 
     std::string common;
     bool rest(false);
 
-    for (CYElement *element(array->elements_); element != NULL; element = element->next_) {
+    CYForEach (element, array->elements_) {
         CYString *string(dynamic_cast<CYString *>(element->value_));
         _assert(string != NULL);
 
         CYString *string(dynamic_cast<CYString *>(element->value_));
         _assert(string != NULL);
 
index 91696cbba288da01b2917eeabc8548872aa95e85..e406493cf4662b413ce5e587f0941976950f357e 100644 (file)
@@ -85,7 +85,7 @@ void CYImport::Output(CYOutput &out, CYFlags flags) const {
 void CYMessage::Output(CYOutput &out, bool replace) const {
     out << (instance_ ? '-' : '+');
 
 void CYMessage::Output(CYOutput &out, bool replace) const {
     out << (instance_ ? '-' : '+');
 
-    for (CYMessageParameter *parameter(parameters_); parameter != NULL; parameter = parameter->next_)
+    CYForEach (parameter, parameters_)
         if (parameter->tag_ != NULL) {
             out << ' ' << *parameter->tag_;
             if (parameter->name_ != NULL)
         if (parameter->tag_ != NULL) {
             out << ' ' << *parameter->tag_;
             if (parameter->name_ != NULL)
@@ -113,7 +113,7 @@ void CYSelectorPart::Output(CYOutput &out) const {
 }
 
 void CYSend::Output(CYOutput &out, CYFlags flags) const {
 }
 
 void CYSend::Output(CYOutput &out, CYFlags flags) const {
-    for (CYArgument *argument(arguments_); argument != NULL; argument = argument->next_)
+    CYForEach (argument, arguments_)
         if (argument->name_ != NULL) {
             out << ' ' << *argument->name_;
             if (argument->value_ != NULL)
         if (argument->name_ != NULL) {
             out << ' ' << *argument->name_;
             if (argument->value_ != NULL)
index 35389b9086b84f4832c6c0f68c415742b4e06e54..9d2d1ab72e6bcdf420cc053526bc4eb166f00e67 100644 (file)
@@ -119,7 +119,7 @@ CYExpression *CYSelector::Replace(CYContext &context) {
 
 CYString *CYSelectorPart::Replace(CYContext &context) {
     std::ostringstream str;
 
 CYString *CYSelectorPart::Replace(CYContext &context) {
     std::ostringstream str;
-    for (const CYSelectorPart *part(this); part != NULL; part = part->next_) {
+    CYForEach (part, this) {
         if (part->name_ != NULL)
             str << part->name_->Word();
         if (part->value_)
         if (part->name_ != NULL)
             str << part->name_->Word();
         if (part->value_)
index 6e70b6b94c68d25adb6a205392243a6524d03235..ee58d06ecc8608da559df22e6839198538fef6ff 100644 (file)
@@ -607,7 +607,7 @@ void CYRubyProc::Output(CYOutput &out, CYFlags flags) const {
 
 void CYStatement::Multiple(CYOutput &out, CYFlags flags) const {
     bool first(true);
 
 void CYStatement::Multiple(CYOutput &out, CYFlags flags) const {
     bool first(true);
-    for (const CYStatement *next(this); next != NULL; next = next->next_) {
+    CYForEach (next, this) {
         bool last(next->next_ == NULL);
         CYFlags jacks(first ? last ? flags : CYLeft(flags) : last ? CYRight(flags) : CYCenter(flags));
         first = false;
         bool last(next->next_ == NULL);
         CYFlags jacks(first ? last ? flags : CYLeft(flags) : last ? CYRight(flags) : CYCenter(flags));
         first = false;
index 5d860182f315ec41d7c5a594915c1bec1edbefe7..ebcbb7f8f577b48ca154d52427d1f18fd0e4598d 100644 (file)
@@ -57,6 +57,9 @@ struct CYNext {
     }
 };
 
     }
 };
 
+#define CYForEach(value, list) \
+    for (__typeof__(*list) *value(list); value != NULL; value = value->next_)
+
 struct CYThing {
     virtual ~CYThing() {
     }
 struct CYThing {
     virtual ~CYThing() {
     }
@@ -370,7 +373,7 @@ 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_) {
+        CYForEach (next, values) {
             Replace(*last);
             last = &(*last)->next_;
         }
             Replace(*last);
             last = &(*last)->next_;
         }
index 8023bdb112bb9c784f891bc58c2cf1b5b8e2b7f5..d1f8ab5b11a9c53ee797832e9447c25d9562fdaa 100644 (file)
@@ -549,8 +549,8 @@ void CYProgram::Replace(CYContext &context) {
     IdentifierUsages usages;
 
     if (offset < context.rename_.size())
     IdentifierUsages usages;
 
     if (offset < context.rename_.size())
-        for (CYIdentifier *i(context.rename_[offset].identifier_); i != NULL; i = i->next_)
-             usages.insert(i);
+        CYForEach (i, context.rename_[offset].identifier_)
+            usages.insert(i);
 
     // XXX: totalling the probable occurrences and sorting by them would improve the result
     for (CYIdentifierUsageVector::const_iterator i(context.rename_.begin()); i != context.rename_.end(); ++i, ++offset) {
 
     // XXX: totalling the probable occurrences and sorting by them would improve the result
     for (CYIdentifierUsageVector::const_iterator i(context.rename_.begin()); i != context.rename_.end(); ++i, ++offset) {
@@ -582,7 +582,7 @@ void CYProgram::Replace(CYContext &context) {
             // XXX: at some point, this could become a keyword
         }
 
             // XXX: at some point, this could become a keyword
         }
 
-        for (CYIdentifier *identifier(i->identifier_); identifier != NULL; identifier = identifier->next_)
+        CYForEach (identifier, i->identifier_)
             identifier->Set(name);
     }
 }
             identifier->Set(name);
     }
 }