3#ifndef AWKWARD_FORTHOUTPUTBUFFER_H_
4#define AWKWARD_FORTHOUTPUTBUFFER_H_
13 #define NATIVELY_BIG_ENDIAN (*(uint16_t *)"\0\xff" < 0x100)
51 rewind(int64_t num_items, util::ForthError& err) noexcept;
59 dup(int64_t num_times, util::ForthError& err) noexcept = 0;
62 virtual const std::shared_ptr<
void>
63 ptr() const noexcept = 0;
67 toNumpyArray() const = 0;
75 toIndexU8() const = 0;
79 toIndex32() const = 0;
83 toIndexU32() const = 0;
87 toIndex64() const = 0;
91 write_one_bool(
bool value,
bool byteswap) noexcept = 0;
95 write_one_int8(int8_t value,
bool byteswap) noexcept = 0;
99 write_one_int16(int16_t value,
bool byteswap) noexcept = 0;
103 write_one_int32(int32_t value,
bool byteswap) noexcept = 0;
107 write_one_int64(int64_t value,
bool byteswap) noexcept = 0;
111 write_one_intp(ssize_t value,
bool byteswap) noexcept = 0;
115 write_one_uint8(uint8_t value,
bool byteswap) noexcept = 0;
119 write_one_uint16(uint16_t value,
bool byteswap) noexcept = 0;
123 write_one_uint32(uint32_t value,
bool byteswap) noexcept = 0;
127 write_one_uint64(uint64_t value,
bool byteswap) noexcept = 0;
131 write_one_uintp(
size_t value,
bool byteswap) noexcept = 0;
135 write_one_float32(
float value,
bool byteswap) noexcept = 0;
139 write_one_float64(
double value,
bool byteswap) noexcept = 0;
143 write_one_string(
char* string_buffer, int64_t length) noexcept = 0;
147 write_bool(int64_t num_items,
bool* values,
bool byteswap) noexcept = 0;
151 write_int8(int64_t num_items, int8_t* values,
bool byteswap) noexcept = 0;
155 write_int16(int64_t num_items, int16_t* values,
bool byteswap) noexcept = 0;
159 write_int32(int64_t num_items, int32_t* values,
bool byteswap) noexcept = 0;
163 write_int64(int64_t num_items, int64_t* values,
bool byteswap) noexcept = 0;
167 write_intp(int64_t num_items, ssize_t* values,
bool byteswap) noexcept = 0;
171 write_const_uint8(int64_t num_items, const uint8_t* values) noexcept = 0;
175 write_uint8(int64_t num_items, uint8_t* values,
bool byteswap) noexcept = 0;
179 write_uint16(int64_t num_items, uint16_t* values,
bool byteswap) noexcept = 0;
183 write_uint32(int64_t num_items, uint32_t* values,
bool byteswap) noexcept = 0;
187 write_uint64(int64_t num_items, uint64_t* values,
bool byteswap) noexcept = 0;
191 write_uintp(int64_t num_items,
size_t* values,
bool byteswap) noexcept = 0;
195 write_float32(int64_t num_items,
float* values,
bool byteswap) noexcept = 0;
199 write_float64(int64_t num_items,
double* values,
bool byteswap) noexcept = 0;
203 write_add_int32(int32_t value) noexcept = 0;
207 write_add_int64(int64_t value) noexcept = 0;
215 template <typename OUT>
223 const std::shared_ptr<void>
224 ptr() const noexcept override;
227 toNumpyArray() const override;
230 toIndex8() const override;
233 toIndexU8() const override;
236 toIndex32() const override;
239 toIndexU32() const override;
242 toIndex64() const override;
245 write_one_bool(
bool value,
bool byteswap) noexcept override;
248 write_one_int8(int8_t value,
bool byteswap) noexcept override;
251 write_one_int16(int16_t value,
bool byteswap) noexcept override;
254 write_one_int32(int32_t value,
bool byteswap) noexcept override;
257 write_one_int64(int64_t value,
bool byteswap) noexcept override;
260 write_one_intp(ssize_t value,
bool byteswap) noexcept override;
263 write_one_uint8(uint8_t value,
bool byteswap) noexcept override;
266 write_one_uint16(uint16_t value,
bool byteswap) noexcept override;
269 write_one_uint32(uint32_t value,
bool byteswap) noexcept override;
272 write_one_uint64(uint64_t value,
bool byteswap) noexcept override;
275 write_one_uintp(
size_t value,
bool byteswap) noexcept override;
278 write_one_float32(
float value,
bool byteswap) noexcept override;
281 write_one_float64(
double value,
bool byteswap) noexcept override;
284 write_one_string(
char* string_buffer, int64_t length) noexcept override;
287 write_bool(int64_t num_items,
bool* values,
bool byteswap) noexcept override;
290 write_int8(int64_t num_items, int8_t* values,
bool byteswap) noexcept override;
293 write_int16(int64_t num_items, int16_t* values,
bool byteswap) noexcept override;
296 write_int32(int64_t num_items, int32_t* values,
bool byteswap) noexcept override;
299 write_int64(int64_t num_items, int64_t* values,
bool byteswap) noexcept override;
302 write_intp(int64_t num_items, ssize_t* values,
bool byteswap) noexcept override;
305 write_const_uint8(int64_t num_items, const uint8_t* values) noexcept override;
308 write_uint8(int64_t num_items, uint8_t* values,
bool byteswap) noexcept override;
311 write_uint16(int64_t num_items, uint16_t* values,
bool byteswap) noexcept override;
314 write_uint32(int64_t num_items, uint32_t* values,
bool byteswap) noexcept override;
317 write_uint64(int64_t num_items, uint64_t* values,
bool byteswap) noexcept override;
320 write_uintp(int64_t num_items,
size_t* values,
bool byteswap) noexcept override;
323 write_float32(int64_t num_items,
float* values,
bool byteswap) noexcept override;
326 write_float64(int64_t num_items,
double* values,
bool byteswap) noexcept override;
329 write_add_int32(int32_t value) noexcept override;
332 write_add_int64(int64_t value) noexcept override;
338 maybe_resize(int64_t next);
341 template <typename IN>
342 inline
void write_one(IN value) noexcept {
344 maybe_resize(length_);
345 ptr_.get()[length_ - 1] = (OUT)value;
349 template <
typename IN>
350 inline void write_copy(int64_t num_items,
const IN* values)
noexcept {
351 int64_t next = length_ + num_items;
353 for (int64_t i = 0; i < num_items; i++) {
354 ptr_.get()[length_ + i] = (OUT)values[i];
359 std::shared_ptr<OUT> ptr_;
Definition: ForthOutputBuffer.h:216
void dup(int64_t num_times, util::ForthError &err) noexcept override
HERE.
ForthOutputBufferOf(int64_t initial, double resize)
const std::shared_ptr< void > ptr() const noexcept override
HERE.
HERE.
Definition: ForthOutputBuffer.h:36
ForthOutputBuffer(int64_t initial, double resize)
int64_t len() const noexcept
HERE.
virtual ~ForthOutputBuffer()
Virtual destructor acts as a first non-inline virtual function that determines a specific translation...
A contiguous, one-dimensional array of integers used to represent data structures,...
Definition: Index.h:82
#define LIBAWKWARD_EXPORT_SYMBOL
Definition: common.h:45
ForthError
Exhaustive list of runtime errors possible in the ForthMachine.
Definition: util.h:224
Definition: BitMaskedArray.h:15
void byteswap_intp(int64_t num_items, T &value)
HERE.
void byteswap64(int64_t num_items, T &value)
HERE.
void byteswap16(int64_t num_items, T &value)
HERE.
std::shared_ptr< Content > ContentPtr
Definition: Content.h:15
void byteswap32(int64_t num_items, T &value)
HERE.