// SPDX-License-Identifier: GPL-2.0-or-later /* * Inkscape::Util::reverse_list - generate a reversed list from iterator range * * Authors: * MenTaLguY * * Copyright (C) 2004 MenTaLguY * * Released under GNU GPL v2+, read the file 'COPYING' for more information. */ #ifndef SEEN_INKSCAPE_UTIL_REVERSE_LIST_H #define SEEN_INKSCAPE_UTIL_REVERSE_LIST_H #include "util/list.h" #include "util/list-copy.h" namespace Inkscape { namespace Util { template inline typename Traits::ListCopy::ResultList reverse_list(InputIterator start, InputIterator end) { typename Traits::ListCopy::ResultList head; while ( start != end ) { head = cons(*start, head); ++start; } return head; } template inline typename Traits::ListCopy >::ResultList reverse_list(List const &list) { return reverse_list(list, List()); } template inline MutableList reverse_list_in_place(MutableList start, MutableList end=MutableList()) { MutableList reversed(end); while ( start != end ) { MutableList temp(start); ++start; set_rest(temp, reversed); reversed = temp; } return reversed; } } } #endif /* Local Variables: mode:c++ c-file-style:"stroustrup" c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) indent-tabs-mode:nil fill-column:99 End: */ // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :