1 /* Cycript - Optimizing JavaScript Compiler/Runtime
 
   2  * Copyright (C) 2009-2013  Jay Freeman (saurik)
 
   5 /* GNU General Public License, Version 3 {{{ */
 
   7  * Cycript is free software: you can redistribute it and/or modify
 
   8  * it under the terms of the GNU General Public License as published
 
   9  * by the Free Software Foundation, either version 3 of the License,
 
  10  * or (at your option) any later version.
 
  12  * Cycript is distributed in the hope that it will be useful, but
 
  13  * WITHOUT ANY WARRANTY; without even the implied warranty of
 
  14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
  15  * GNU General Public License for more details.
 
  17  * You should have received a copy of the GNU General Public License
 
  18  * along with Cycript.  If not, see <http://www.gnu.org/licenses/>.
 
  22 #ifndef CYCRIPT_LIST_HPP
 
  23 #define CYCRIPT_LIST_HPP
 
  25 template <typename Type_>
 
  39     void SetNext(Type_ *next) {
 
  44 template <typename Type_>
 
  45 Type_ *&CYSetLast(Type_ *&list) {
 
  50     while (next->next_ != NULL)
 
  55 template <typename Type_>
 
  56 Type_ *CYGetLast(Type_ *list) {
 
  61     while (next->next_ != NULL)
 
  66 #define CYForEach(value, list) \
 
  67     for (__typeof__(*list) *value(list); value != NULL; value = value->next_)
 
  69 #endif/*CYCRIPT_LIST_HPP*/