diff options
Diffstat (limited to 'src/mbgl/gfx/vertex_vector.hpp')
-rw-r--r-- | src/mbgl/gfx/vertex_vector.hpp | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/mbgl/gfx/vertex_vector.hpp b/src/mbgl/gfx/vertex_vector.hpp new file mode 100644 index 0000000000..5d892e9136 --- /dev/null +++ b/src/mbgl/gfx/vertex_vector.hpp @@ -0,0 +1,50 @@ +#pragma once + +#include <mbgl/util/ignore.hpp> + +#include <vector> + +namespace mbgl { +namespace gfx { + +template <class V> +class VertexVector { +public: + using Vertex = V; + + template <class... Args> + void emplace_back(Args&&... args) { + static_assert(sizeof...(args) == 1, "wrong buffer element count"); + util::ignore({ (v.emplace_back(std::forward<Args>(args)), 0)... }); + } + + std::size_t vertexSize() const { + return v.size(); + } + + std::size_t byteSize() const { + return v.size() * sizeof(Vertex); + } + + bool empty() const { + return v.empty(); + } + + void clear() { + v.clear(); + } + + const Vertex* data() const { + return v.data(); + } + + const std::vector<Vertex>& vector() const { + return v; + } + +private: + std::vector<Vertex> v; +}; + +} // namespace gfx +} // namespace mbgl |