1
0
Fork 0
Univerxel/src/client/render/api/common.hpp

36 lines
978 B
C++

#pragma once
#include "../../../core/flags.hpp"
#include <memory>
#include <cassert>
namespace render {
struct data_view {
data_view() { }
data_view(const void *ptr, size_t size): ptr(ptr), size(size) { }
template <typename Container>
data_view(const Container &c): data_view(c.data(), c.size() * sizeof(typename Container::value_type)) {}
constexpr bool isUsable() const { return ptr != nullptr && size > 0; }
explicit operator bool() const { return isUsable(); }
const void *ptr = nullptr;
size_t size = 0;
};
struct data_ref {
data_ref() { }
data_ref(void *ptr, size_t size): ptr(ptr), size(size) { }
template<typename Container>
data_ref(Container &c):
data_ref(c.data(), c.size() * sizeof(typename Container::value_type)) {}
constexpr bool isUsable() const { return ptr != nullptr && size > 0; }
explicit operator bool() const { return isUsable(); }
void *ptr = nullptr;
size_t size = 0;
};
}