UnmaskedArray.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_UNMASKEDARRAY_H_
4 #define AWKWARD_UNMASKEDARRAY_H_
5 
6 #include <string>
7 #include <memory>
8 #include <vector>
9 
10 #include "awkward/common.h"
11 #include "awkward/Slice.h"
12 #include "awkward/Index.h"
13 #include "awkward/Content.h"
14 
15 namespace awkward {
16 
17  class ByteMaskedArray;
18 
23  public:
25  UnmaskedForm(bool has_identities,
26  const util::Parameters& parameters,
27  const FormKey& form_key,
28  const FormPtr& content);
29 
30  const FormPtr
31  content() const;
32 
33  const TypePtr
34  type(const util::TypeStrs& typestrs) const override;
35 
36  void
37  tojson_part(ToJson& builder, bool verbose) const override;
38 
39  const FormPtr
40  shallow_copy() const override;
41 
42  const FormPtr
43  with_form_key(const FormKey& form_key) const override;
44 
45  const std::string
46  purelist_parameter(const std::string& key) const override;
47 
48  bool
49  purelist_isregular() const override;
50 
51  int64_t
52  purelist_depth() const override;
53 
54  bool
55  dimension_optiontype() const override;
56 
57  const std::pair<int64_t, int64_t>
58  minmax_depth() const override;
59 
60  const std::pair<bool, int64_t>
61  branch_depth() const override;
62 
63  int64_t
64  numfields() const override;
65 
66  int64_t
67  fieldindex(const std::string& key) const override;
68 
69  const std::string
70  key(int64_t fieldindex) const override;
71 
72  bool
73  haskey(const std::string& key) const override;
74 
75  const std::vector<std::string>
76  keys() const override;
77 
78  bool
79  istuple() const override;
80 
81  bool
82  equal(const FormPtr& other,
83  bool check_identities,
84  bool check_parameters,
85  bool check_form_key,
86  bool compatibility_check) const override;
87 
88  const FormPtr
89  getitem_field(const std::string& key) const override;
90 
91  const FormPtr
92  getitem_fields(const std::vector<std::string>& keys) const override;
93 
94  const FormPtr
95  simplify_optiontype() const;
96 
97  private:
98  const FormPtr content_;
99  };
100 
108  public:
116  UnmaskedArray(const IdentitiesPtr& identities,
117  const util::Parameters& parameters,
118  const ContentPtr& content);
119 
121  const ContentPtr
122  content() const;
123 
126  const ContentPtr
127  project() const;
128 
132  const ContentPtr
133  project(const Index8& mask) const;
134 
136  const Index8
137  bytemask() const;
138 
143  const ContentPtr
144  simplify_optiontype() const;
145 
147  const std::shared_ptr<ByteMaskedArray>
148  toByteMaskedArray() const;
149 
152  const ContentPtr
153  toIndexedOptionArray64() const;
154 
156  const std::string
157  classname() const override;
158 
159  void
160  setidentities() override;
161 
162  void
163  setidentities(const IdentitiesPtr& identities) override;
164 
165  const TypePtr
166  type(const util::TypeStrs& typestrs) const override;
167 
168  const FormPtr
169  form(bool materialize) const override;
170 
172  kernels() const override;
173 
174  void
175  caches(std::vector<ArrayCachePtr>& out) const override;
176 
177  const std::string
178  tostring_part(const std::string& indent,
179  const std::string& pre,
180  const std::string& post) const override;
181 
182  void
183  tojson_part(ToJson& builder, bool include_beginendlist) const override;
184 
185  void
186  nbytes_part(std::map<size_t, int64_t>& largest) const override;
187 
188  int64_t
189  length() const override;
190 
191  const ContentPtr
192  shallow_copy() const override;
193 
194  const ContentPtr
195  deep_copy(bool copyarrays,
196  bool copyindexes,
197  bool copyidentities) const override;
198 
199  void
200  check_for_iteration() const override;
201 
202  const ContentPtr
203  getitem_nothing() const override;
204 
205  const ContentPtr
206  getitem_at(int64_t at) const override;
207 
208  const ContentPtr
209  getitem_at_nowrap(int64_t at) const override;
210 
211  const ContentPtr
212  getitem_range(int64_t start, int64_t stop) const override;
213 
214  const ContentPtr
215  getitem_range_nowrap(int64_t start, int64_t stop) const override;
216 
217  const ContentPtr
218  getitem_field(const std::string& key) const override;
219 
220  const ContentPtr
221  getitem_field(const std::string& key,
222  const Slice& only_fields) const override;
223 
224  const ContentPtr
225  getitem_fields(const std::vector<std::string>& keys) const override;
226 
227  const ContentPtr
228  getitem_fields(const std::vector<std::string>& keys,
229  const Slice& only_fields) const override;
230 
231  const ContentPtr
232  getitem_next(const SliceItemPtr& head,
233  const Slice& tail,
234  const Index64& advanced) const override;
235 
236  const ContentPtr
237  carry(const Index64& carry, bool allow_lazy) const override;
238 
239  int64_t
240  purelist_depth() const override;
241 
242  const std::pair<int64_t, int64_t>
243  minmax_depth() const override;
244 
245  const std::pair<bool, int64_t>
246  branch_depth() const override;
247 
248  int64_t
249  numfields() const override;
250 
251  int64_t
252  fieldindex(const std::string& key) const override;
253 
254  const std::string
255  key(int64_t fieldindex) const override;
256 
257  bool
258  haskey(const std::string& key) const override;
259 
260  const std::vector<std::string>
261  keys() const override;
262 
263  bool
264  istuple() const override;
265 
266  // operations
267  const std::string
268  validityerror(const std::string& path) const override;
269 
273  const ContentPtr
274  shallow_simplify() const override;
275 
276  const ContentPtr
277  num(int64_t axis, int64_t depth) const override;
278 
279  const std::pair<Index64, ContentPtr>
280  offsets_and_flattened(int64_t axis, int64_t depth) const override;
281 
282  bool
283  mergeable(const ContentPtr& other, bool mergebool) const override;
284 
285  bool
286  referentially_equal(const ContentPtr& other) const override;
287 
288  const ContentPtr
289  reverse_merge(const ContentPtr& other) const override;
290 
291  const ContentPtr
292  mergemany(const ContentPtrVec& others) const override;
293 
294  const SliceItemPtr
295  asslice() const override;
296 
297  const ContentPtr
298  fillna(const ContentPtr& value) const override;
299 
300  const ContentPtr
301  rpad(int64_t target, int64_t axis, int64_t depth) const override;
302 
303  const ContentPtr
304  rpad_and_clip(int64_t target,
305  int64_t axis,
306  int64_t depth) const override;
307 
308  const ContentPtr
309  reduce_next(const Reducer& reducer,
310  int64_t negaxis,
311  const Index64& starts,
312  const Index64& shifts,
313  const Index64& parents,
314  int64_t outlength,
315  bool mask,
316  bool keepdims) const override;
317 
318  const ContentPtr
319  sort_next(int64_t negaxis,
320  const Index64& starts,
321  const Index64& parents,
322  int64_t outlength,
323  bool ascending,
324  bool stable) const override;
325 
326  const ContentPtr
327  argsort_next(int64_t negaxis,
328  const Index64& starts,
329  const Index64& shifts,
330  const Index64& parents,
331  int64_t outlength,
332  bool ascending,
333  bool stable) const override;
334 
335  const ContentPtr
336  localindex(int64_t axis, int64_t depth) const override;
337 
338  const ContentPtr
339  combinations(int64_t n,
340  bool replacement,
341  const util::RecordLookupPtr& recordlookup,
342  const util::Parameters& parameters,
343  int64_t axis,
344  int64_t depth) const override;
345 
346  const ContentPtr
347  getitem_next(const SliceAt& at,
348  const Slice& tail,
349  const Index64& advanced) const override;
350 
351  const ContentPtr
352  getitem_next(const SliceRange& range,
353  const Slice& tail,
354  const Index64& advanced) const override;
355 
356  const ContentPtr
357  getitem_next(const SliceArray64& array,
358  const Slice& tail,
359  const Index64& advanced) const override;
360 
361  const ContentPtr
362  getitem_next(const SliceJagged64& jagged,
363  const Slice& tail,
364  const Index64& advanced) const override;
365 
366  const ContentPtr
367  getitem_next_jagged(const Index64& slicestarts,
368  const Index64& slicestops,
369  const SliceArray64& slicecontent,
370  const Slice& tail) const override;
371 
372  const ContentPtr
373  getitem_next_jagged(const Index64& slicestarts,
374  const Index64& slicestops,
375  const SliceMissing64& slicecontent,
376  const Slice& tail) const override;
377 
378  const ContentPtr
379  getitem_next_jagged(const Index64& slicestarts,
380  const Index64& slicestops,
381  const SliceJagged64& slicecontent,
382  const Slice& tail) const override;
383 
384  const ContentPtr
385  copy_to(kernel::lib ptr_lib) const override;
386 
387  const ContentPtr
388  numbers_to_type(const std::string& name) const override;
389 
391  bool
392  is_unique() const override;
393 
395  const ContentPtr
396  unique() const override;
397 
399  bool
400  is_subrange_equal(const Index64& start, const Index64& stop) const override;
401 
402 protected:
403  template <typename S>
404  const ContentPtr
405  getitem_next_jagged_generic(const Index64& slicestarts,
406  const Index64& slicestops,
407  const S& slicecontent,
408  const Slice& tail) const;
409 
410  private:
412  const ContentPtr content_;
413 
414  };
415 }
416 
417 #endif // AWKWARD_UNMASKEDARRAY_H_
Represents a Python slice object (usual syntax: array[start:stop:step]).
Definition: Slice.h:93
#define LIBAWKWARD_EXPORT_SYMBOL
Definition: common.h:45
const std::string key(const RecordLookupPtr &recordlookup, int64_t fieldindex, int64_t numfields)
Returns the key associated with a field index, given a RecordLookup and a number of fields...
Abstract superclass of all array node types (flat hierarchy). Any Content can be nested within any ot...
Definition: Content.h:276
Definition: json.h:19
Definition: BitMaskedArray.h:15
A contiguous, one-dimensional array of integers used to represent data structures, rather than numerical data in the arrays themselves.
Definition: Index.h:16
std::string name(Mapping a, V value)
Definition: datetime_util.h:39
Represents a SliceArrayOf, SliceMissingOf, or SliceJaggedOf with missing values: None (no equivalent ...
Definition: Slice.h:431
Abstract class for all reducer algorithms.
Definition: Reducer.h:20
ERROR combinations(kernel::lib ptr_lib, T *toindex, int64_t n, bool replacement, int64_t singlelen)
const std::vector< std::string > keys(const RecordLookupPtr &recordlookup, int64_t numfields)
Returns a given RecordLookup as keys or generate anonymous ones form a number of fields.
std::shared_ptr< std::string > FormKey
Definition: Content.h:19
ERROR unique(kernel::lib ptr_lib, T *toptr, int64_t length, int64_t *tolength)
Represents an array of integers in a slice (possibly converted from an array of booleans).
Definition: Slice.h:225
std::map< std::string, std::string > Parameters
Definition: util.h:165
ERROR copy_to(kernel::lib to_lib, kernel::lib from_lib, void *to_ptr, void *from_ptr, int64_t bytelength)
Internal Function an array buffer from library FROM to library TO, usually between main memory and a ...
std::shared_ptr< Form > FormPtr
Definition: Content.h:18
int64_t fieldindex(const RecordLookupPtr &recordlookup, const std::string &key, int64_t numfields)
Returns the field index associated with a key, given a RecordLookup and a number of fields...
Represents an array of nested lists, where the content may be SliceArrayOf, SliceMissingOf, or SliceJaggedOf (no equivalent in NumPy).
Definition: Slice.h:511
std::vector< std::shared_ptr< Content > > ContentPtrVec
Definition: Content.h:16
Mapping::value_type::value_type value(Mapping a, const std::string &name)
Definition: datetime_util.h:49
A sequence of SliceItem objects representing a tuple passed to Python&#39;s __getitem__.
Definition: Slice.h:585
bool haskey(const RecordLookupPtr &recordlookup, const std::string &key, int64_t numfields)
Returns true if a RecordLookup has a given key; false otherwise.
std::shared_ptr< Type > TypePtr
Definition: Content.h:23
std::shared_ptr< RecordLookup > RecordLookupPtr
Definition: util.h:130
Represents an integer in a tuple of slices passed to __getitem__ in Python.
Definition: Slice.h:58
std::map< std::string, std::string > TypeStrs
Definition: util.h:215
Form describing UnmaskedArray.
Definition: UnmaskedArray.h:22
Abstract superclass of all array node forms, which expresses the nesting structure without any large ...
Definition: Content.h:39
std::shared_ptr< Identities > IdentitiesPtr
Definition: Identities.h:16
std::shared_ptr< Content > ContentPtr
Definition: ArrayBuilder.h:16
std::shared_ptr< SliceItem > SliceItemPtr
Definition: Slice.h:15
lib
Definition: kernel-dispatch.h:20
Converts content of any type into an OptionType in which all values happen to be valid.
Definition: UnmaskedArray.h:107