3#ifndef AWKWARD_FORTHOUTPUTBUFFER_H_
4#define AWKWARD_FORTHOUTPUTBUFFER_H_
11 #define NATIVELY_BIG_ENDIAN (*(uint16_t *)"\0\xff" < 0x100)
49 rewind(int64_t num_items,
util::ForthError& err) noexcept;
57 dup(int64_t num_times,
util::ForthError& err) noexcept = 0;
60 virtual const std::shared_ptr<
void>
61 ptr() const noexcept = 0;
124 write_bool(int64_t num_items,
bool* values,
bool byteswap) noexcept = 0;
128 write_int8(int64_t num_items, int8_t* values,
bool byteswap) noexcept = 0;
132 write_int16(int64_t num_items, int16_t* values,
bool byteswap) noexcept = 0;
136 write_int32(int64_t num_items, int32_t* values,
bool byteswap) noexcept = 0;
140 write_int64(int64_t num_items, int64_t* values,
bool byteswap) noexcept = 0;
144 write_intp(int64_t num_items, ssize_t* values,
bool byteswap) noexcept = 0;
152 write_uint8(int64_t num_items, uint8_t* values,
bool byteswap) noexcept = 0;
156 write_uint16(int64_t num_items, uint16_t* values,
bool byteswap) noexcept = 0;
160 write_uint32(int64_t num_items, uint32_t* values,
bool byteswap) noexcept = 0;
164 write_uint64(int64_t num_items, uint64_t* values,
bool byteswap) noexcept = 0;
168 write_uintp(int64_t num_items,
size_t* values,
bool byteswap) noexcept = 0;
172 write_float32(int64_t num_items,
float* values,
bool byteswap) noexcept = 0;
176 write_float64(int64_t num_items,
double* values,
bool byteswap) noexcept = 0;
195 template <typename OUT>
201 dup(int64_t num_times, util::ForthError& err)
noexcept override;
203 const std::shared_ptr<void>
204 ptr() const noexcept override;
252 write_bool(int64_t num_items,
bool* values,
bool byteswap) noexcept override;
255 write_int8(int64_t num_items, int8_t* values,
bool byteswap) noexcept override;
258 write_int16(int64_t num_items, int16_t* values,
bool byteswap) noexcept override;
261 write_int32(int64_t num_items, int32_t* values,
bool byteswap) noexcept override;
264 write_int64(int64_t num_items, int64_t* values,
bool byteswap) noexcept override;
267 write_intp(int64_t num_items, ssize_t* values,
bool byteswap) noexcept override;
273 write_uint8(int64_t num_items, uint8_t* values,
bool byteswap) noexcept override;
276 write_uint16(int64_t num_items, uint16_t* values,
bool byteswap) noexcept override;
279 write_uint32(int64_t num_items, uint32_t* values,
bool byteswap) noexcept override;
282 write_uint64(int64_t num_items, uint64_t* values,
bool byteswap) noexcept override;
285 write_uintp(int64_t num_items,
size_t* values,
bool byteswap) noexcept override;
288 write_float32(int64_t num_items,
float* values,
bool byteswap) noexcept override;
291 write_float64(int64_t num_items,
double* values,
bool byteswap) noexcept override;
305 maybe_resize(int64_t next);
308 template <typename IN>
309 inline
void write_one(IN value) noexcept {
312 ptr_.get()[
length_ - 1] = (OUT)value;
316 template <
typename IN>
317 inline void write_copy(int64_t num_items,
const IN* values)
noexcept {
318 int64_t next = length_ + num_items;
320 for (int64_t i = 0; i < num_items; i++) {
321 ptr_.get()[length_ + i] = (OUT)values[i];
326 std::shared_ptr<OUT> ptr_;
void write_int32(int64_t num_items, int32_t *values, bool byteswap) noexcept override
HERE.
void dup(int64_t num_times, util::ForthError &err) noexcept override
HERE.
void write_uint8(int64_t num_items, uint8_t *values, bool byteswap) noexcept override
HERE.
void write_one_bool(bool value, bool byteswap) noexcept override
HERE.
void write_one_uint64(uint64_t value, bool byteswap) noexcept override
HERE.
void write_one_string(char *string_buffer, int64_t length) noexcept override
HERE.
void write_one_int16(int16_t value, bool byteswap) noexcept override
HERE.
ForthOutputBufferOf(int64_t initial, double resize)
void write_int8(int64_t num_items, int8_t *values, bool byteswap) noexcept override
HERE.
void write_one_float64(double value, bool byteswap) noexcept override
HERE.
void write_int16(int64_t num_items, int16_t *values, bool byteswap) noexcept override
HERE.
void write_intp(int64_t num_items, ssize_t *values, bool byteswap) noexcept override
HERE.
void write_one_intp(ssize_t value, bool byteswap) noexcept override
HERE.
void write_add_int64(int64_t value) noexcept override
HERE.
void write_uintp(int64_t num_items, size_t *values, bool byteswap) noexcept override
HERE.
void write_float64(int64_t num_items, double *values, bool byteswap) noexcept override
HERE.
void write_one_uintp(size_t value, bool byteswap) noexcept override
HERE.
void write_one_uint8(uint8_t value, bool byteswap) noexcept override
HERE.
void write_int64(int64_t num_items, int64_t *values, bool byteswap) noexcept override
HERE.
void write_one_int8(int8_t value, bool byteswap) noexcept override
HERE.
void write_one_uint32(uint32_t value, bool byteswap) noexcept override
HERE.
std::string tostring() const override
const std::shared_ptr< void > ptr() const noexcept override
HERE.
void write_add_int32(int32_t value) noexcept override
HERE.
void write_one_uint16(uint16_t value, bool byteswap) noexcept override
HERE.
void write_bool(int64_t num_items, bool *values, bool byteswap) noexcept override
HERE.
void write_uint64(int64_t num_items, uint64_t *values, bool byteswap) noexcept override
HERE.
void write_float32(int64_t num_items, float *values, bool byteswap) noexcept override
HERE.
void write_const_uint8(int64_t num_items, const uint8_t *values) noexcept override
HERE.
void write_one_float32(float value, bool byteswap) noexcept override
HERE.
util::dtype dtype() const override
void write_uint32(int64_t num_items, uint32_t *values, bool byteswap) noexcept override
HERE.
void write_one_int32(int32_t value, bool byteswap) noexcept override
HERE.
void write_uint16(int64_t num_items, uint16_t *values, bool byteswap) noexcept override
HERE.
void write_one_int64(int64_t value, bool byteswap) noexcept override
HERE.
virtual util::dtype dtype() const =0
virtual void write_int16(int64_t num_items, int16_t *values, bool byteswap) noexcept=0
HERE.
virtual void write_int8(int64_t num_items, int8_t *values, bool byteswap) noexcept=0
HERE.
virtual void write_bool(int64_t num_items, bool *values, bool byteswap) noexcept=0
HERE.
void reset() noexcept
HERE.
virtual void write_uint8(int64_t num_items, uint8_t *values, bool byteswap) noexcept=0
HERE.
virtual void write_one_int64(int64_t value, bool byteswap) noexcept=0
HERE.
virtual void write_const_uint8(int64_t num_items, const uint8_t *values) noexcept=0
HERE.
virtual void write_intp(int64_t num_items, ssize_t *values, bool byteswap) noexcept=0
HERE.
virtual void write_one_uintp(size_t value, bool byteswap) noexcept=0
HERE.
ForthOutputBuffer(int64_t initial, double resize)
virtual void write_add_int32(int32_t value) noexcept=0
HERE.
virtual void write_one_uint32(uint32_t value, bool byteswap) noexcept=0
HERE.
virtual void dup(int64_t num_times, util::ForthError &err) noexcept=0
HERE.
virtual void write_float32(int64_t num_items, float *values, bool byteswap) noexcept=0
HERE.
virtual void write_uint32(int64_t num_items, uint32_t *values, bool byteswap) noexcept=0
HERE.
int64_t length_
Definition ForthOutputBuffer.h:190
virtual void write_one_float32(float value, bool byteswap) noexcept=0
HERE.
virtual void write_one_float64(double value, bool byteswap) noexcept=0
HERE.
void rewind(int64_t num_items, util::ForthError &err) noexcept
HERE.
virtual void write_one_bool(bool value, bool byteswap) noexcept=0
HERE.
virtual void write_int64(int64_t num_items, int64_t *values, bool byteswap) noexcept=0
HERE.
virtual void write_one_int16(int16_t value, bool byteswap) noexcept=0
HERE.
virtual void write_uint64(int64_t num_items, uint64_t *values, bool byteswap) noexcept=0
HERE.
virtual void write_int32(int64_t num_items, int32_t *values, bool byteswap) noexcept=0
HERE.
virtual void write_add_int64(int64_t value) noexcept=0
HERE.
virtual void write_one_uint8(uint8_t value, bool byteswap) noexcept=0
HERE.
int64_t len() const noexcept
HERE.
virtual void write_one_uint16(uint16_t value, bool byteswap) noexcept=0
HERE.
virtual std::string tostring() const =0
double resize_
Definition ForthOutputBuffer.h:192
virtual void write_uint16(int64_t num_items, uint16_t *values, bool byteswap) noexcept=0
HERE.
virtual void write_one_intp(ssize_t value, bool byteswap) noexcept=0
HERE.
virtual ~ForthOutputBuffer()
Virtual destructor acts as a first non-inline virtual function that determines a specific translation...
virtual const std::shared_ptr< void > ptr() const noexcept=0
HERE.
virtual void write_float64(int64_t num_items, double *values, bool byteswap) noexcept=0
HERE.
virtual void write_one_int32(int32_t value, bool byteswap) noexcept=0
HERE.
virtual void write_one_uint64(uint64_t value, bool byteswap) noexcept=0
HERE.
virtual void write_uintp(int64_t num_items, size_t *values, bool byteswap) noexcept=0
HERE.
virtual void write_one_string(char *string_buffer, int64_t length) noexcept=0
HERE.
int64_t reserved_
Definition ForthOutputBuffer.h:191
virtual void write_one_int8(int8_t value, bool byteswap) noexcept=0
HERE.
#define EXPORT_SYMBOL
Definition common.h:14
Definition ArrayBuilder.h:14
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.
void byteswap32(int64_t num_items, T &value)
HERE.