|
const std::vector< Element > & | elements () const |
| Accesses the elements in increasing offset order.
|
|
size_t | size () const |
| Number of elements of the tuple.
|
|
Datatype_sptr | densify () const override |
| Creates a new datatype as the dense copy of this one.
|
|
Datatype_sptr | evaluate (Context &) const override |
| Creates a new datatype by resolving the value of all metadata references.
|
|
bool | dense () const override |
| Indicate if the datatype is dense or not.
|
|
size_t | datasize () const override |
| Computes the data size of a type, excluding potentially unused memory from a sparse type.
|
|
size_t | buffersize () const override |
| Computes the data size of a type, including potentially unused memory from a sparse type.
|
|
size_t | alignment () const override |
| Returns the required alignment for a type.
|
|
bool | simple () const override |
| Tells if data can be copied as bytes (if type is dense) and doesn't need a destroyer.
|
|
void * | data_to_dense_copy (void *, const void *) const override |
| Creates a dense deep copy of data.
|
|
void * | data_from_dense_copy (void *, const void *) const override |
| Creates a sparse deep copy of dense data.
|
|
Datatype_sptr | index (size_t) const override |
| Access the type of the element at the provided index.
|
|
std::pair< void *, Datatype_sptr > | index (size_t, void *) const override |
| Access the type and value of the element at the provided index.
|
|
Datatype_sptr | slice (size_t, size_t) const override |
| Access the type of the elements slice between the provided indices.
|
|
std::pair< void *, Datatype_sptr > | slice (size_t, size_t, void *) const override |
| Access the type and value of the elements slice between the provided indices.
|
|
void | destroy_data (void *) const override |
| Delete data whose type is described by the Datatype.
|
|
std::string | debug_string () const override |
| Returns the datatype yaml representation as a string.
|
|
bool | operator== (const Datatype &) const override |
| Test for equality.
|
|
| Datatype (const Attributes_map &attributes={}) |
| Creates a new datatype.
|
|
| ~Datatype () override |
|
virtual bool | operator== (const Datatype &other) const =0 |
| Test for equality.
|
|
bool | operator!= (const Datatype &other) const |
| Test for inequality.
|
|
virtual Datatype_sptr | densify () const =0 |
| Creates a new datatype as the dense copy of this one.
|
|
virtual bool | dense () const =0 |
| Indicate if the datatype is dense or not.
|
|
virtual size_t | datasize () const =0 |
| Computes the data size of a type, excluding potentially unused memory from a sparse type.
|
|
virtual size_t | buffersize () const =0 |
| Computes the data size of a type, including potentially unused memory from a sparse type.
|
|
virtual size_t | alignment () const =0 |
| Returns the required alignment for a type.
|
|
virtual bool | simple () const =0 |
| Tells if data can be copied as bytes (if type is dense) and doesn't need a destroyer.
|
|
virtual void * | data_to_dense_copy (void *to, const void *from) const =0 |
| Creates a dense deep copy of data.
|
|
virtual void * | data_from_dense_copy (void *to, const void *from) const =0 |
| Creates a sparse deep copy of dense data.
|
|
virtual Datatype_sptr | index (size_t index) const |
| Access the type of the element at the provided index.
|
|
virtual std::pair< void *, Datatype_sptr > | index (size_t index, void *data) const |
| Access the type and value of the element at the provided index.
|
|
virtual Datatype_sptr | slice (size_t start_index, size_t end_index) const |
| Access the type of the elements slice between the provided indices.
|
|
virtual std::pair< void *, Datatype_sptr > | slice (size_t start_index, size_t end_index, void *data) const |
| Access the type and value of the elements slice between the provided indices.
|
|
virtual Datatype_sptr | member (const char *name) const |
| Access the type of the member with the provided name.
|
|
virtual std::pair< void *, Datatype_sptr > | member (const char *name, void *data) const |
| Access the type and value of the member with the provided name.
|
|
virtual Datatype_sptr | dereference () const |
| Access the type referenced by this.
|
|
virtual std::pair< void *, Datatype_sptr > | dereference (void *data) const |
| Access the type and value referenced by this.
|
|
virtual void | destroy_data (void *ptr) const =0 |
| Delete data whose type is described by the Datatype.
|
|
virtual std::string | debug_string () const =0 |
| Returns the datatype yaml representation as a string.
|
|
| Datatype_template (const Attributes_map &attributes={}) |
| Creates datatype template with given attributes.
|
|
| Datatype_template (PC_tree_t datatype_tree) |
| Creates datatype template.
|
|
virtual | ~Datatype_template () |
| Destroys the template.
|
|
virtual Datatype_sptr | evaluate (Context &ctx) const =0 |
| Creates a new datatype by resolving the value of all metadata references.
|
|
Expression | attribute (const std::string &attribute_name) const |
| Returns attribute of given name as Expression.
|
|
const Attributes_map & | attributes () const |
| Returns all attributes as a unordered map.
|
|
A Tuple_datatype is a Datatype that represents a fixed number of elements of potentially different types layed out in a specific way in memory.
Each element is given a index to access it.