X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbackends%2Fvulkan%2Fstructurebuilder.h;fp=source%2Fbackends%2Fvulkan%2Fstructurebuilder.h;h=f59153fd7ca5f0b4037163dd385e6595e42fa279;hb=99ca354f18119f82f1adeca100cd665a8f640317;hp=0000000000000000000000000000000000000000;hpb=4cd245dafe6a7ee5c93edca5aee2d146f1155309;p=libs%2Fgl.git diff --git a/source/backends/vulkan/structurebuilder.h b/source/backends/vulkan/structurebuilder.h new file mode 100644 index 00000000..f59153fd --- /dev/null +++ b/source/backends/vulkan/structurebuilder.h @@ -0,0 +1,36 @@ +#ifndef MSP_GL_VULKAN_STRUCTUREBUILDER_H_ +#define MSP_GL_VULKAN_STRUCTUREBUILDER_H_ + +#include +#include + +namespace Msp { +namespace GL { + +class StructureBuilder +{ +private: + struct Part + { + std::size_t offset = 0; + void *pointer = 0; + }; + + std::vector &storage; + std::vector parts; + +public: + StructureBuilder(std::vector &, unsigned); + + template + T *&add(std::size_t count = 1) + { return reinterpret_cast(add(sizeof(T)*count, alignof(T))); } + +private: + void *&add(std::size_t, std::size_t); +}; + +} // namespace GL +} // namespace Msp + +#endif