From da2af935087da0e425bbfb06fe1cc24107e3f32d Mon Sep 17 00:00:00 2001 From: "Jay Freeman (saurik)" Date: Mon, 12 Jul 2010 04:05:17 +0000 Subject: [PATCH 1/1] Move CYNext, CYSetLast, and CYForEach to List.hpp. --- GNUmakefile.in | 2 +- List.hpp | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++ Parser.hpp | 36 ++---------------------------- makefile | 2 +- 4 files changed, 63 insertions(+), 36 deletions(-) create mode 100644 List.hpp diff --git a/GNUmakefile.in b/GNUmakefile.in index a992747..01a0c96 100644 --- a/GNUmakefile.in +++ b/GNUmakefile.in @@ -85,7 +85,7 @@ all := cycript #arch := $(shell $(dpkg_architecture) -qDEB_HOST_ARCH 2>/dev/null) #endif -header := Cycript.tab.hh Parser.hpp Pooling.hpp Local.hpp cycript.hpp Internal.hpp Error.hpp String.hpp Exception.hpp Standard.hpp +header := Cycript.tab.hh Parser.hpp Pooling.hpp List.hpp Local.hpp cycript.hpp Internal.hpp Error.hpp String.hpp Exception.hpp Standard.hpp code := code += Replace.lo Output.lo diff --git a/List.hpp b/List.hpp new file mode 100644 index 0000000..7113492 --- /dev/null +++ b/List.hpp @@ -0,0 +1,59 @@ +/* Cycript - Optimizing JavaScript Compiler/Runtime + * Copyright (C) 2009-2010 Jay Freeman (saurik) +*/ + +/* GNU Lesser General Public License, Version 3 {{{ */ +/* + * Cycript is free software: you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. + * + * Cycript is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + * License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Cycript. If not, see . +**/ +/* }}} */ + +#ifndef CYCRIPT_LIST_HPP +#define CYCRIPT_LIST_HPP + +template +struct CYNext { + Type_ *next_; + + CYNext() : + next_(NULL) + { + } + + CYNext(Type_ *next) : + next_(next) + { + } + + void SetNext(Type_ *next) { + next_ = next; + } +}; + +template +void CYSetLast(Type_ *&list, Type_ *item) { + if (list == NULL) + list = item; + else { + Type_ *next(list); + while (next->next_ != NULL) + next = next->next_; + next->next_ = item; + } +} + +#define CYForEach(value, list) \ + for (__typeof__(*list) *value(list); value != NULL; value = value->next_) + +#endif/*CYCRIPT_LIST_HPP*/ diff --git a/Parser.hpp b/Parser.hpp index 0b9099a..d853939 100644 --- a/Parser.hpp +++ b/Parser.hpp @@ -33,45 +33,13 @@ #include #include "location.hh" + +#include "List.hpp" #include "Pooling.hpp" #include "Options.hpp" class CYContext; -template -struct CYNext { - Type_ *next_; - - CYNext() : - next_(NULL) - { - } - - CYNext(Type_ *next) : - next_(next) - { - } - - void SetNext(Type_ *next) { - next_ = next; - } -}; - -template -void CYSetLast(Type_ *&list, Type_ *item) { - if (list == NULL) - list = item; - else { - Type_ *next(list); - while (next->next_ != NULL) - next = next->next_; - next->next_ = item; - } -} - -#define CYForEach(value, list) \ - for (__typeof__(*list) *value(list); value != NULL; value = value->next_) - struct CYThing { virtual ~CYThing() { } diff --git a/makefile b/makefile index f84a821..cf4e769 100644 --- a/makefile +++ b/makefile @@ -23,7 +23,7 @@ ifneq ($(dpkg_architecture),) arch := $(shell $(dpkg_architecture) -qDEB_HOST_ARCH 2>/dev/null) endif -header := Cycript.tab.hh Parser.hpp Pooling.hpp Local.hpp cycript.hpp Internal.hpp Error.hpp String.hpp Exception.hpp Standard.hpp +header := Cycript.tab.hh Parser.hpp Pooling.hpp List.hpp Local.hpp cycript.hpp Internal.hpp Error.hpp String.hpp Exception.hpp Standard.hpp code := code += Replace.o Output.o -- 2.45.2