19#include <fmt/format.h>
33 size_t buffer_chunk_size_;
34 const char *filepath_;
38 FileBuffer(
const char *filepath,
size_t buffer_chunk_size = 64 * 1024);
78 if (blocks_.
is_empty() || (blocks_.
last().capacity() - blocks_.
last().size() < at_least)) {
80 blocks_.
last().reserve(std::max(at_least, buffer_chunk_size_));
84 template<
typename... T>
void write_fstring(
const char *fmt, T &&...args)
87 fmt::memory_buffer buf;
88 fmt::format_to(fmt::appender(buf), fmt, std::forward<T>(args)...);
89 size_t len = buf.size();
92 bb.
insert(bb.
end(), buf.begin(), buf.end());
ATTR_WARN_UNUSED_RESULT const BMVert * v
SIMD_FORCE_INLINE const btScalar & z() const
Return the z value.
void append(const T &value)
void insert(const int64_t insert_index, const T &value)
const T & last(const int64_t n=0) const
virtual void write_data(float v)=0
virtual void write_vertex_normal(float nx, float ny, float nz)=0
void ensure_space(size_t at_least)
void write_fstring(const char *fmt, T &&...args)
virtual void write_vertex_color(uchar r, uchar g, uchar b, uchar a)=0
virtual void write_vertex(float x, float y, float z)=0
virtual void write_UV(float u, float v)=0
virtual void write_edge(int first, int second)=0
virtual void write_vertex_end()=0
void write_string(StringRef s)
void write_header_scalar_property(StringRef dataType, StringRef name)
void write_bytes(Span< char > bytes)
void write_header_list_property(StringRef countType, StringRef dataType, StringRef name)
virtual void write_face(char count, Span< uint32_t > const &vertex_indices)=0
FileBuffer(const char *filepath, size_t buffer_chunk_size=64 *1024)
void write_header_element(StringRef name, int count)
virtual ~FileBuffer()=default
local_group_size(16, 16) .push_constant(Type b