File indexing completed on 2024-05-12 05:29:23

0001 /*
0002  *   SPDX-FileCopyrightText: 2015-2016 Ivan Cukic <ivan.cukic@kde.org>
0003  *
0004  *   SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005  */
0006 
0007 #pragma once
0008 
0009 #include <algorithm>
0010 
0011 // Inspired by C++ Seasoning talk by Sean Parent
0012 
0013 namespace kamd
0014 {
0015 namespace utils
0016 {
0017 template<typename Iterator>
0018 void slide(Iterator f, Iterator l, Iterator p)
0019 {
0020     if (p < f) {
0021         std::rotate(p, f, l);
0022     } else if (l < p) {
0023         std::rotate(f, l, p);
0024     }
0025 }
0026 
0027 template<typename Iterator>
0028 void slide_one(Iterator f, Iterator p)
0029 {
0030     slide(f, f + 1, p);
0031 }
0032 
0033 } // namespace utils
0034 } // namespace kamd