3#ifndef AWKWARD_NUMPYARRAYBUILDER_H_
4#define AWKWARD_NUMPYARRAYBUILDER_H_
13 template <
typename T,
typename I>
18 const std::string& form_key,
19 const std::string& form_dtype,
20 const std::string& form_dtype_state,
21 const std::string& form_dtype_to_vm_format,
22 const std::string attribute =
"data",
23 const std::string partition =
"0");
106 if (form_primitive() ==
"float64") {
107 return sizeof(double);
108 }
else if (form_primitive() ==
"int64") {
109 return sizeof(int64_t);
110 }
else if (form_primitive() ==
"complex128") {
111 return sizeof(std::complex<double>);
112 }
else if (form_primitive() ==
"bool") {
115 return util::dtype_to_itemsize(util::name_to_dtype(form_primitive()));
120 auto search = outputs.find(vm_output_data());
121 if (search != outputs.end()) {
122 return (is_complex() ?
123 (ssize_t)search->second.get()->len() >> 1 :
124 (ssize_t)search->second.get()->len());
138 const std::string form_key_;
139 const std::string form_primitive_;
144 std::string vm_output_;
145 std::string vm_output_data_;
146 std::string vm_func_;
147 std::string vm_func_name_;
148 std::string vm_func_type_;
149 std::string vm_data_from_stack_;
150 std::string vm_error_;
Abstract class to represent the output of ak.to_buffers. In Python, this would be a dict of NumPy arr...
Definition: Builder.h:20
User interface to the FormBuilder system: the LayoutBuilder is a fixed reference while the FormBuilde...
Definition: LayoutBuilder.h:62
Definition: NumpyArrayBuilder.h:14
const std::string vm_output() const override
AwkwardForth virtual machine instructions of the data outputs.
void begin_list(LayoutBuilderPtr< T, I > builder) override
Begins building a nested list.
ssize_t len(const ForthOutputBufferMap &outputs) const override
The builder's output buffer length.
Definition: NumpyArrayBuilder.h:119
ssize_t itemsize() const
Definition: NumpyArrayBuilder.h:105
void float64(double x, LayoutBuilderPtr< T, I > builder) override
Adds a real value x to the accumulated data.
const std::string to_buffers(BuffersContainer &container, const ForthOutputBufferMap &outputs) const override
Copy the current snapshot into the BuffersContainer and return a Form as a std::string (JSON).
const std::string & form_key() const
Definition: NumpyArrayBuilder.h:99
void string(const std::string &x, LayoutBuilderPtr< T, I > builder) override
Adds a UTF-8 encoded bytestring x in STL format to the accumulated data.
void int64(int64_t x, LayoutBuilderPtr< T, I > builder) override
Adds an integer value x to the accumulated data.
const util::Parameters & form_parameters() const
Definition: NumpyArrayBuilder.h:96
const std::string vm_func_name() const override
The array builder VM function name.
const std::string vm_output_data() const override
AwkwardForth virtual machine data output key.
const std::string vm_func() const override
AwkwardForth virtual machine instructions of the array builder function.
bool is_complex() const override
Definition: NumpyArrayBuilder.h:130
const std::string vm_func_type() const override
The array builder VM function type.
void boolean(bool x, LayoutBuilderPtr< T, I > builder) override
Adds a boolean value x to the accumulated data.
NumpyArrayBuilder(const util::Parameters ¶meters, const std::string &form_key, const std::string &form_dtype, const std::string &form_dtype_state, const std::string &form_dtype_to_vm_format, const std::string attribute="data", const std::string partition="0")
Creates a NumpyArrayBuilder from a full set of parameters.
const std::string vm_error() const override
Error messages in the AwkwardForth virtual machine instructions.
void bytestring(const std::string &x, LayoutBuilderPtr< T, I > builder) override
Adds an unencoded bytestring x in STL format to the accumulated data.
void complex(std::complex< double > x, LayoutBuilderPtr< T, I > builder) override
Adds a complex value x to the accumulated data.
const std::string vm_from_stack() const override
AwkwardForth virtual machine instructions to retrieve the data from the VM stack.
const std::string & form_primitive() const
Definition: NumpyArrayBuilder.h:102
void end_list(LayoutBuilderPtr< T, I > builder) override
Ends a nested list.
const std::string classname() const override
User-friendly name of this class.
#define LIBAWKWARD_EXPORT_SYMBOL
Definition: common.h:45
std::map< std::string, std::string > Parameters
Definition: util.h:165
Definition: BitMaskedArray.h:15
std::map< std::string, std::shared_ptr< ForthOutputBuffer > > ForthOutputBufferMap
Definition: FormBuilder.h:16