Ruby 4.1.0dev (2026-10-21 revision 536dc6f98b72e6999a84bb6373562c43cb1ddf8a)
buffer.hpp
Go to the documentation of this file.
1
6#ifndef PRISM_BUFFER_HPP
7#define PRISM_BUFFER_HPP
8
11
12#include "prism/buffer.h"
13
14#include <memory>
15#include <string_view>
16
17namespace prism {
18
26 void operator()(pm_buffer_t *buffer) const noexcept { pm_buffer_free(buffer); }
27};
28
30using unique_buffer = std::unique_ptr<pm_buffer_t, buffer_deleter>;
31
37[[nodiscard]] inline unique_buffer
38make_buffer() noexcept {
39 return unique_buffer(pm_buffer_new());
40}
41
48[[nodiscard]] inline std::string_view
49view(const pm_buffer_t *buffer PRISM_LIFETIMEBOUND) noexcept {
50 return std::string_view(pm_buffer_value(buffer), pm_buffer_length(buffer));
51}
52
53}
54
55#endif
unique_buffer make_buffer() noexcept
Allocate a new empty buffer.
Definition buffer.hpp:38
std::unique_ptr< pm_buffer_t, buffer_deleter > unique_buffer
An owned buffer.
Definition buffer.hpp:30
std::string_view view(const pm_buffer_t *buffer PRISM_LIFETIMEBOUND) noexcept
The bytes written to the given buffer so far.
Definition buffer.hpp:49
#define PRISM_LIFETIMEBOUND
Mark a parameter that the return value points into, so that the compiler warns if a temporary is pass...
A wrapper around a contiguous block of allocated memory.
Frees a buffer with pm_buffer_free.
Definition buffer.hpp:20
void operator()(pm_buffer_t *buffer) const noexcept
Frees the given buffer.
Definition buffer.hpp:26