remove round robin

This commit is contained in:
pigeatgarlic 2026-04-05 21:42:20 +07:00
parent 877f06fdae
commit feb99b5f64
3 changed files with 0 additions and 247 deletions

View File

@ -66,10 +66,8 @@ set(SUNSHINE_TARGET_FILES
"${CMAKE_SOURCE_DIR}/src/audio.cpp"
"${CMAKE_SOURCE_DIR}/src/audio.h"
"${CMAKE_SOURCE_DIR}/src/platform/common.h"
"${CMAKE_SOURCE_DIR}/src/move_by_copy.h"
"${CMAKE_SOURCE_DIR}/src/thread_safe.h"
"${CMAKE_SOURCE_DIR}/src/sync.h"
"${CMAKE_SOURCE_DIR}/src/round_robin.h"
${PLATFORM_TARGET_FILES})
if(NOT SUNSHINE_ASSETS_DIR_DEF)

View File

@ -1,58 +0,0 @@
/**
* @file src/move_by_copy.h
* @brief todo
*/
#pragma once
#include <utility>
namespace move_by_copy_util {
/**
* When a copy is made, it moves the object
* This allows you to move an object when a move can't be done.
*/
template <class T>
class MoveByCopy {
public:
typedef T move_type;
private:
move_type _to_move;
public:
explicit MoveByCopy(move_type &&to_move):
_to_move(std::move(to_move)) {}
MoveByCopy(MoveByCopy &&other) = default;
MoveByCopy(const MoveByCopy &other) {
*this = other;
}
MoveByCopy &
operator=(MoveByCopy &&other) = default;
MoveByCopy &
operator=(const MoveByCopy &other) {
this->_to_move = std::move(const_cast<MoveByCopy &>(other)._to_move);
return *this;
}
operator move_type() {
return std::move(_to_move);
}
};
template <class T>
MoveByCopy<T>
cmove(T &movable) {
return MoveByCopy<T>(std::move(movable));
}
// Do NOT use this unless you are absolutely certain the object to be moved is no longer used by the caller
template <class T>
MoveByCopy<T>
const_cmove(const T &movable) {
return MoveByCopy<T>(std::move(const_cast<T &>(movable)));
}
} // namespace move_by_copy_util

View File

@ -1,187 +0,0 @@
/**
* @file src/round_robin.h
* @brief todo
*/
#pragma once
#include <iterator>
namespace round_robin_util {
template <class V, class T>
class it_wrap_t {
public:
using iterator_category = std::random_access_iterator_tag;
using value_type = V;
using difference_type = V;
using pointer = V *;
using const_pointer = V const *;
using reference = V &;
using const_reference = V const &;
typedef T iterator;
typedef std::ptrdiff_t diff_t;
iterator
operator+=(diff_t step) {
while (step-- > 0) {
++_this();
}
return _this();
}
iterator
operator-=(diff_t step) {
while (step-- > 0) {
--_this();
}
return _this();
}
iterator
operator+(diff_t step) {
iterator new_ = _this();
return new_ += step;
}
iterator
operator-(diff_t step) {
iterator new_ = _this();
return new_ -= step;
}
diff_t
operator-(iterator first) {
diff_t step = 0;
while (first != _this()) {
++step;
++first;
}
return step;
}
iterator
operator++() {
_this().inc();
return _this();
}
iterator
operator--() {
_this().dec();
return _this();
}
iterator
operator++(int) {
iterator new_ = _this();
++_this();
return new_;
}
iterator
operator--(int) {
iterator new_ = _this();
--_this();
return new_;
}
reference
operator*() { return *_this().get(); }
const_reference
operator*() const { return *_this().get(); }
pointer
operator->() { return &*_this(); }
const_pointer
operator->() const { return &*_this(); }
bool
operator!=(const iterator &other) const {
return !(_this() == other);
}
bool
operator<(const iterator &other) const {
return !(_this() >= other);
}
bool
operator>=(const iterator &other) const {
return _this() == other || _this() > other;
}
bool
operator<=(const iterator &other) const {
return _this() == other || _this() < other;
}
bool
operator==(const iterator &other) const { return _this().eq(other); };
bool
operator>(const iterator &other) const { return _this().gt(other); }
private:
iterator &
_this() { return *static_cast<iterator *>(this); }
const iterator &
_this() const { return *static_cast<const iterator *>(this); }
};
template <class V, class It>
class round_robin_t: public it_wrap_t<V, round_robin_t<V, It>> {
public:
using iterator = It;
using pointer = V *;
round_robin_t(iterator begin, iterator end):
_begin(begin), _end(end), _pos(begin) {}
void
inc() {
++_pos;
if (_pos == _end) {
_pos = _begin;
}
}
void
dec() {
if (_pos == _begin) {
_pos = _end;
}
--_pos;
}
bool
eq(const round_robin_t &other) const {
return *_pos == *other._pos;
}
pointer
get() const {
return &*_pos;
}
private:
It _begin;
It _end;
It _pos;
};
template <class V, class It>
round_robin_t<V, It>
make_round_robin(It begin, It end) {
return round_robin_t<V, It>(begin, end);
}
} // namespace round_robin_util