Type.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_TYPE_H_
4 #define AWKWARD_TYPE_H_
5 
6 #include <memory>
7 #include <string>
8 #include <vector>
9 
10 #include "awkward/common.h"
11 #include "awkward/util.h"
12 
13 namespace awkward {
14  class Content;
15  using ContentPtr = std::shared_ptr<Content>;
16 
17  class Type;
18  using TypePtr = std::shared_ptr<Type>;
19 
24  public:
27  Type(const util::Parameters& parameters, const std::string& typestr);
28 
32  virtual ~Type();
33 
40  virtual std::string
41  tostring_part(const std::string& indent,
42  const std::string& pre,
43  const std::string& post) const = 0;
44 
47  virtual const TypePtr
48  shallow_copy() const = 0;
49 
57  virtual bool
58  equal(const TypePtr& other, bool check_parameters) const = 0;
59 
62  virtual int64_t
63  numfields() const = 0;
64 
67  virtual int64_t
68  fieldindex(const std::string& key) const = 0;
69 
74  virtual const std::string
75  key(int64_t fieldindex) const = 0;
76 
79  virtual bool
80  haskey(const std::string& key) const = 0;
81 
84  virtual const std::vector<std::string>
85  keys() const = 0;
86 
88  virtual const ContentPtr
89  empty() const = 0;
90 
98  const util::Parameters
99  parameters() const;
100 
111  void
112  setparameters(const util::Parameters& parameters);
113 
122  const std::string
123  parameter(const std::string& key) const;
124 
135  void
136  setparameter(const std::string& key, const std::string& value);
137 
148  bool
149  parameter_equals(const std::string& key, const std::string& value) const;
150 
164  bool
165  parameters_equal(const util::Parameters& other, bool check_all) const;
166 
169  bool
170  parameter_isstring(const std::string& key) const;
171 
174  bool
175  parameter_isname(const std::string& key) const;
176 
179  const std::string
180  parameter_asstring(const std::string& key) const;
181 
185  const std::string
186  tostring() const;
187 
192  const std::string
193  compare(TypePtr supertype);
194 
197  const std::string
198  typestr() const;
199 
200  protected:
204  bool
205  get_typestr(std::string& output) const;
206 
209  bool
210  parameters_empty() const;
211 
214  std::string
215  wrap_categorical(const std::string& output) const;
216 
219  const std::string
220  string_parameters() const;
221 
225  const std::string typestr_;
226  };
227 }
228 
229 #endif // AWKWARD_TYPE_H_
bool parameter_isstring(const Parameters &parameters, const std::string &key)
Returns true if the parameter associated with key is a string; false otherwise.
const std::string parameter_asstring(const Parameters &parameters, const std::string &key)
Returns the parameter associated with key as a string if parameter_isstring; raises an error otherwis...
#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...
Definition: BitMaskedArray.h:15
Abstract superclass of all high level types (flat hierarchy).
Definition: Type.h:23
const std::string typestr_
See typestr.
Definition: Type.h:225
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::map< std::string, std::string > Parameters
Definition: util.h:165
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...
Mapping::value_type::value_type value(Mapping a, const std::string &name)
Definition: datetime_util.h:49
bool parameter_equals(const Parameters &parameters, const std::string &key, const std::string &value)
Returns true if the value associated with a key in parameters is equal to the specified value...
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
bool parameters_equal(const Parameters &self, const Parameters &other, bool check_all)
Returns true if all key-value pairs in self is equal to all key-value pairs in other.
bool parameter_isname(const Parameters &parameters, const std::string &key)
Returns true if the parameter associated with key is a string that matches [A-Za-z_][A-Za-z_0-9]*; fa...
util::Parameters parameters_
See parameters.
Definition: Type.h:223
std::shared_ptr< Content > ContentPtr
Definition: ArrayBuilder.h:16