| 123456789101112131415161718192021222324252627282930 |
- //
- // adaptor.h
- // stream
- //
- // Created by Sam Jaffe on 4/6/23.
- //
- #pragma once
- #include <stream/forward.h>
- namespace stream::detail {
- template <typename T, typename It = void> struct adaptor {
- using dereference_t = T (*)(void *);
- using equal_to_t = bool (*)(void *, void *);
- using increment_t = void (*)(void *);
- static dereference_t dereference() {
- return [](void * p) -> T { return **((It *)p); };
- }
- static equal_to_t equal_to() {
- return [](void * l, void * r) { return *((It *)l) == *((It *)r); };
- }
- static increment_t increment() {
- return [](void * p) { ++(*(It *)(p)); };
- }
- };
- }
|