Abstract superclass of all high level types (flat hierarchy). More...
#include <Type.h>
Public Member Functions | |
Type (const util::Parameters ¶meters, const std::string &typestr) | |
Called by all subclass constructors; assigns parameters and typestr upon construction. | |
virtual | ~Type () |
Virtual destructor acts as a first non-inline virtual function that determines a specific translation unit in which vtable shall be emitted. | |
virtual std::string | tostring_part (const std::string &indent, const std::string &pre, const std::string &post) const =0 |
Internal function to build an output string for tostring. | |
virtual const TypePtr | shallow_copy () const =0 |
Copies this Type without copying any hierarchically nested types. | |
virtual bool | equal (const TypePtr &other, bool check_parameters) const =0 |
Returns true if this type is equal to other ; false otherwise. | |
virtual int64_t | numfields () const =0 |
The number of fields in the first nested tuple or records or -1 if this array does not contain a RecordType. | |
virtual int64_t | fieldindex (const std::string &key) const =0 |
The position of a tuple or record key name if this array contains a RecordType. | |
virtual const std::string | key (int64_t fieldindex) const =0 |
The record name associated with a given field index or the tuple index as a string (e.g. "0" , "1" , "2" ) if a tuple. | |
virtual bool | haskey (const std::string &key) const =0 |
Returns true if the type contains a RecordType with the specified key ; false otherwise. | |
virtual const std::vector< std::string > | keys () const =0 |
A list of RecordType keys or an empty list if this type does not contain a RecordType. | |
virtual const ContentPtr | empty () const =0 |
Returns an empty array (Content) with this type. | |
const util::Parameters | parameters () const |
Get one parameter from this type. | |
void | setparameters (const util::Parameters ¶meters) |
Assign one parameter for this type (in-place). | |
const std::string | parameter (const std::string &key) const |
Custom parameters inherited from the Content that this type describes. | |
void | setparameter (const std::string &key, const std::string &value) |
Assign one parameter to this type (in-place). | |
bool | parameter_equals (const std::string &key, const std::string &value) const |
Returns true if the parameter associated with key exists and is equal to value ; false otherwise. | |
bool | parameters_equal (const util::Parameters &other, bool check_all) const |
Returns true if all parameters of this type are equal to the other parameters. | |
bool | parameter_isstring (const std::string &key) const |
Returns true if the parameter associated with key is a string; false otherwise. | |
bool | parameter_isname (const std::string &key) const |
Returns true if the parameter associated with key is a string that matches [A-Za-z_][A-Za-z_0-9]* ; false otherwise. | |
const std::string | parameter_asstring (const std::string &key) const |
Returns the parameter associated with key as a string if parameter_isstring; raises an error otherwise. | |
const std::string | tostring () const |
Returns a string representation of the type as a Datashape or its typestr overload (if non-empty). | |
const std::string | compare (TypePtr supertype) |
Returns a string showing a side-by-side comparison of two types, highlighting differences. | |
const std::string | typestr () const |
Optional string that overrides the default string representation (missing if empty). | |
Protected Member Functions | |
bool | get_typestr (std::string &output) const |
Internal function that replaces output in-place with the typestr and returns true if the typestr is not missing (i.e. empty); otherwise, it leaves output untouched and returns false . | |
bool | parameters_empty () const |
Internal function to determine if there are no parameters except __categorical__ . | |
std::string | wrap_categorical (const std::string &output) const |
Internal function that wraps output with categorical[type= and ] if __categorical__ is true ; passes through otherwise. | |
const std::string | string_parameters () const |
Internal function to format parameters as part of the tostring string. | |
Protected Attributes | |
util::Parameters | parameters_ |
See parameters. | |
const std::string | typestr_ |
See typestr. | |
Abstract superclass of all high level types (flat hierarchy).
Type | ( | const util::Parameters & | parameters, |
const std::string & | typestr | ||
) |
Called by all subclass constructors; assigns parameters and typestr upon construction.
|
virtual |
Virtual destructor acts as a first non-inline virtual function that determines a specific translation unit in which vtable shall be emitted.
const std::string compare | ( | TypePtr | supertype | ) |
Returns a string showing a side-by-side comparison of two types, highlighting differences.
|
pure virtual |
Returns an empty array (Content) with this type.
Implemented in ArrayType, ListType, OptionType, PrimitiveType, RecordType, RegularType, UnionType, and UnknownType.
|
pure virtual |
Returns true
if this type is equal to other
; false
otherwise.
other | The other Type. |
check_parameters | If true , types must have the same parameters to be considered equal; if false , types do not check parameters. |
Implemented in ArrayType, ListType, OptionType, PrimitiveType, RecordType, RegularType, UnionType, and UnknownType.
|
pure virtual |
The position of a tuple or record key name if this array contains a RecordType.
Implemented in ArrayType, ListType, OptionType, PrimitiveType, RecordType, RegularType, UnionType, and UnknownType.
|
protected |
|
pure virtual |
Returns true
if the type contains a RecordType with the specified key
; false
otherwise.
Implemented in ArrayType, ListType, OptionType, PrimitiveType, RecordType, RegularType, UnionType, and UnknownType.
|
pure virtual |
The record name associated with a given field index or the tuple index as a string (e.g. "0"
, "1"
, "2"
) if a tuple.
Raises an error if the array does not contain a RecordType.
Implemented in ArrayType, ListType, OptionType, PrimitiveType, RecordType, RegularType, UnionType, and UnknownType.
|
pure virtual |
A list of RecordType keys or an empty list if this type does not contain a RecordType.
Implemented in ArrayType, ListType, OptionType, PrimitiveType, RecordType, RegularType, UnionType, and UnknownType.
|
pure virtual |
The number of fields in the first nested tuple or records or -1
if this array does not contain a RecordType.
Implemented in ArrayType, ListType, OptionType, PrimitiveType, RecordType, RegularType, UnionType, and UnknownType.
const std::string parameter | ( | const std::string & | key | ) | const |
Custom parameters inherited from the Content that this type describes.
If the key
does not exist, this function returns "null"
.
Keys are simple strings, but values are JSON-encoded strings. For this reason, values that represent single strings are double-quoted: e.g. "\"actual_value\""
.
const std::string parameter_asstring | ( | const std::string & | key | ) | const |
Returns the parameter associated with key
as a string if parameter_isstring; raises an error otherwise.
bool parameter_equals | ( | const std::string & | key, |
const std::string & | value | ||
) | const |
Returns true
if the parameter associated with key
exists and is equal to value
; false
otherwise.
Keys are simple strings, but values are JSON-encoded strings. For this reason, values that represent single strings are double-quoted: e.g. "\"actual_value\""
.
Equality is checked at the level of JSON DOMs. The value
does not need to be exactly the same string; it needs to have equivalent JSON value.
bool parameter_isname | ( | const std::string & | key | ) | const |
Returns true
if the parameter associated with key
is a string that matches [A-Za-z_][A-Za-z_0-9]*
; false
otherwise.
bool parameter_isstring | ( | const std::string & | key | ) | const |
Returns true
if the parameter associated with key
is a string; false
otherwise.
const util::Parameters parameters | ( | ) | const |
Get one parameter from this type.
If the key
does not exist, this function returns "null"
.
Keys are simple strings, but values are JSON-encoded strings. For this reason, values that represent single strings are double-quoted: e.g. "\"actual_value\""
.
|
protected |
Internal function to determine if there are no parameters except __categorical__
.
bool parameters_equal | ( | const util::Parameters & | other, |
bool | check_all | ||
) | const |
Returns true
if all parameters of this type are equal to the other
parameters.
Keys are simple strings, but values are JSON-encoded strings. For this reason, values that represent single strings are double-quoted: e.g. "\"actual_value\""
.
Equality is checked at the level of JSON DOMs. The value
does not need to be exactly the same string; it needs to have equivalent JSON value.
If check_all
, every parameter is checked; otherwise, only "__array__"
and "__record__"
are checked.
void setparameter | ( | const std::string & | key, |
const std::string & | value | ||
) |
Assign one parameter to this type (in-place).
Keys are simple strings, but values are JSON-encoded strings. For this reason, values that represent single strings are double-quoted: e.g. "\"actual_value\""
.
void setparameters | ( | const util::Parameters & | parameters | ) |
Assign one parameter for this type (in-place).
Keys are simple strings, but values are JSON-encoded strings. For this reason, values that represent single strings are double-quoted: e.g. "\"actual_value\""
.
|
pure virtual |
Copies this Type without copying any hierarchically nested types.
Implemented in ArrayType, ListType, OptionType, PrimitiveType, RecordType, RegularType, UnionType, and UnknownType.
|
protected |
Internal function to format parameters as part of the tostring string.
const std::string tostring | ( | ) | const |
|
pure virtual |
Internal function to build an output string for tostring.
indent | Indentation depth as a string of spaces. |
pre | Prefix string, usually an opening XML tag. |
post | Postfix string, usually a closing XML tag and carriage return. |
Implemented in ArrayType, ListType, OptionType, PrimitiveType, RecordType, RegularType, UnionType, and UnknownType.
const std::string typestr | ( | ) | const |
Optional string that overrides the default string representation (missing if empty).
|
protected |
Internal function that wraps output
with categorical[type=
and ]
if __categorical__
is true
; passes through otherwise.
|
protected |
See parameters.
|
protected |
See typestr.