Loading...
Searching...
No Matches
RegularArrayBuilder.h
Go to the documentation of this file.
1// BSD 3-Clause License; see https://github.com/scikit-hep/awkward-1.0/blob/main/LICENSE
2
3#ifndef AWKWARD_REGULARARRAYBUILDER_H_
4#define AWKWARD_REGULARARRAYBUILDER_H_
5
7
8namespace awkward {
9
13 template <typename T, typename I>
15 public:
18 const util::Parameters& parameters,
19 const std::string& form_key,
20 const int64_t size,
21 const std::string attribute = "regular",
22 const std::string partition = "0");
23
25 const std::string
26 classname() const override;
27
28 const std::string
29 to_buffers(BuffersContainer& container, const ForthOutputBufferMap& outputs) const override;
30
32 const std::string
33 vm_output() const override;
34
36 const std::string
37 vm_output_data() const override;
38
40 const std::string
41 vm_func() const override;
42
44 const std::string
45 vm_func_name() const override;
46
48 const std::string
49 vm_func_type() const override;
50
53 const std::string
54 vm_from_stack() const override;
55
57 const std::string
58 vm_error() const override;
59
61 void
62 boolean(bool x, LayoutBuilderPtr<T, I> builder) override;
63
65 void
66 int64(int64_t x, LayoutBuilderPtr<T, I> builder) override;
67
69 void
70 float64(double x, LayoutBuilderPtr<T, I> builder) override;
71
73 void
74 complex(std::complex<double> x, LayoutBuilderPtr<T, I> builder) override;
75
78 void
79 bytestring(const std::string& x, LayoutBuilderPtr<T, I> builder) override;
80
83 void
84 string(const std::string& x, LayoutBuilderPtr<T, I> builder) override;
85
87 void
89
91 void
93
95 const
96 FormBuilderPtr<T, I> content() const { return content_; }
97
99 const util::Parameters&
100 form_parameters() const { return parameters_; }
101
102 const std::string&
103 form_key() const {return form_key_; }
104
106 const int64_t
107 form_size() const { return form_size_; }
108
109 ssize_t
110 len(const ForthOutputBufferMap& outputs) const override {
111 auto search = outputs.find(content().get()->vm_output_data());
112 if (search != outputs.end()) {
113 auto length = content().get()->is_complex() ?
114 (ssize_t)search->second.get()->len() >> 1 :
115 (ssize_t)search->second.get()->len();
116 return length / form_size_;
117 }
118 return 0;
119 }
120
121 private:
123 const FormBuilderPtr<T, I> content_;
124
126 const util::Parameters parameters_;
127 const std::string form_key_;
128 const int64_t form_size_;
129
132 std::string vm_output_data_;
133 std::string vm_output_;
134 std::string vm_func_name_;
135 std::string vm_func_;
136 std::string vm_func_type_;
137 std::string vm_data_from_stack_;
138 std::string vm_error_;
139 };
140
141}
142
143#endif // AWKWARD_REGULARARRAYBUILDER_H_
Abstract class to represent the output of ak.to_buffers. In Python, this would be a dict of NumPy arr...
Definition: Builder.h:20
Abstract base class for nodes within a LayoutBuilder Every builder will have an output buffer based o...
Definition: FormBuilder.h:30
User interface to the FormBuilder system: the LayoutBuilder is a fixed reference while the FormBuilde...
Definition: LayoutBuilder.h:62
Definition: RegularArrayBuilder.h:14
const int64_t form_size() const
Definition: RegularArrayBuilder.h:107
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: RegularArrayBuilder.h:110
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: RegularArrayBuilder.h:103
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: RegularArrayBuilder.h:100
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.
RegularArrayBuilder(const FormBuilderPtr< T, I > content, const util::Parameters &parameters, const std::string &form_key, const int64_t size, const std::string attribute="regular", const std::string partition="0")
Creates a RegularArrayBuilder from a full set of parameters.
const FormBuilderPtr< T, I > content() const
Definition: RegularArrayBuilder.h:96
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.
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.
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
std::shared_ptr< FormBuilder< T, I > > FormBuilderPtr
Definition: FormBuilder.h:177