| 
| Scalar_kind  | kind () const | 
|   | Interpretation of the content.  
  | 
|   | 
| 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 *to, const void *from) const override | 
|   | Creates a dense deep copy of data.  
  | 
|   | 
| void *  | data_from_dense_copy (void *to, const void *from) const override | 
|   | Creates a sparse deep copy of dense data.  
  | 
|   | 
| void  | destroy_data (void *ptr) 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.  
  | 
|   | 
 | 
| static std::shared_ptr< Scalar_datatype >  | make (Scalar_kind kind, size_t size, const Attributes_map &attributes={}) | 
|   | Creates new scalar datatype.  
  | 
|   | 
| static std::shared_ptr< Scalar_datatype >  | make (Scalar_kind kind, size_t size, size_t align, const Attributes_map &attributes={}) | 
|   | Creates new scalar datatype.  
  | 
|   | 
| static std::shared_ptr< Scalar_datatype >  | make (Scalar_kind kind, size_t size, size_t align, size_t dense_size, std::function< void *(void *, const void *) > copy, std::function< void(void *) > destroy, const Attributes_map &attributes={}) | 
|   | Creates new scalar datatype.  
  | 
|   | 
| static void  | load_basic_datatypes (Context &ctx) | 
|   | Adds to the context the basic Array, Record, C and Fortran datatypes.  
  | 
|   | 
| static void  | load_user_datatypes (Context &ctx, PC_tree_t types_tree) | 
|   | Adds to the context the user defined datatypes.  
  | 
|   |