PDI 1.6.0

the PDI data interface

PDI::Scalar_datatype Class Reference
Inheritance diagram for PDI::Scalar_datatype:
PDI::Datatype PDI::Datatype_template

Public Member Functions

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.
 
- Public Member Functions inherited from PDI::Datatype
 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_sptrindex (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_sptrslice (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_sptrmember (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_sptrdereference (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.
 
- Public Member Functions inherited from PDI::Datatype_template
 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_mapattributes () const
 Returns all attributes as a unordered map.
 

Static Public Member Functions

static std::shared_ptr< Scalar_datatypemake (Scalar_kind kind, size_t size, const Attributes_map &attributes={})
 Creates new scalar datatype.
 
static std::shared_ptr< Scalar_datatypemake (Scalar_kind kind, size_t size, size_t align, const Attributes_map &attributes={})
 Creates new scalar datatype.
 
static std::shared_ptr< Scalar_datatypemake (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 Public Member Functions inherited from PDI::Datatype_template
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.
 

Static Public Attributes

template<class T >
static constexpr auto kind_of_v = kind_of<std::remove_cv_t<T>>()
 
template<class T >
static constexpr auto const & type_for_v = cv_type_for_v<std::remove_cv_t<T>>
 

Additional Inherited Members

- Protected Attributes inherited from PDI::Datatype_template
Attributes_map m_attributes
 

Member Function Documentation

◆ kind()

Scalar_kind PDI::Scalar_datatype::kind ( ) const

Interpretation of the content.

◆ densify()

Datatype_sptr PDI::Scalar_datatype::densify ( ) const
overridevirtual

Creates a new datatype as the dense copy of this one.

Returns
the type that is produced

Implements PDI::Datatype.

◆ evaluate()

Datatype_sptr PDI::Scalar_datatype::evaluate ( Context ctx) const
overridevirtual

Creates a new datatype by resolving the value of all metadata references.

Parameters
ctxthe context in which to evaluate this template
Returns
the evaluated type that is produced

Implements PDI::Datatype_template.

◆ dense()

bool PDI::Scalar_datatype::dense ( ) const
overridevirtual

Indicate if the datatype is dense or not.

Returns
whether the datatype is dense

Implements PDI::Datatype.

◆ datasize()

size_t PDI::Scalar_datatype::datasize ( ) const
overridevirtual

Computes the data size of a type, excluding potentially unused memory from a sparse type.

Returns
the size in bytes

Implements PDI::Datatype.

◆ buffersize()

size_t PDI::Scalar_datatype::buffersize ( ) const
overridevirtual

Computes the data size of a type, including potentially unused memory from a sparse type.

Returns
the size in bytes

Implements PDI::Datatype.

◆ alignment()

size_t PDI::Scalar_datatype::alignment ( ) const
overridevirtual

Returns the required alignment for a type.

Returns
the size in bytes

Implements PDI::Datatype.

◆ simple()

bool PDI::Scalar_datatype::simple ( ) const
overridevirtual

Tells if data can be copied as bytes (if type is dense) and doesn't need a destroyer.

Returns
true if data has trivial copier and destroyer, false otherwise

Implements PDI::Datatype.

◆ data_to_dense_copy()

void * PDI::Scalar_datatype::data_to_dense_copy ( void *  to,
const void *  from 
) const
overridevirtual

Creates a dense deep copy of data.

Parameters
[in]tothe pointer to the allocated memory to fill (dense data)
[in]fromthe pointer to the copied data (size of buffersize)
Returns
updated ‘to’ pointer

Implements PDI::Datatype.

◆ data_from_dense_copy()

void * PDI::Scalar_datatype::data_from_dense_copy ( void *  to,
const void *  from 
) const
overridevirtual

Creates a sparse deep copy of dense data.

Parameters
[in]tothe pointer to the allocated memory to fill (size of buffersize)
[in]fromthe pointer to the copied data (dense data)
Returns
updated ‘to’ pointer

Implements PDI::Datatype.

◆ destroy_data()

void PDI::Scalar_datatype::destroy_data ( void *  ptr) const
overridevirtual

Delete data whose type is described by the Datatype.

This does not deallocate the buffer used to store the data.

Parameters
[in]ptrto the data to free

Implements PDI::Datatype.

◆ debug_string()

std::string PDI::Scalar_datatype::debug_string ( ) const
overridevirtual

Returns the datatype yaml representation as a string.

Returns
the datatype yaml representation as a string

Implements PDI::Datatype.

◆ operator==()

bool PDI::Scalar_datatype::operator== ( const Datatype other) const
overridevirtual

Test for equality.

Parameters
otherthe Datatype to compare
Returns
true if the Datatype's are equal

Implements PDI::Datatype.

◆ make() [1/3]

static std::shared_ptr< Scalar_datatype > PDI::Scalar_datatype::make ( Scalar_kind  kind,
size_t  size,
const Attributes_map attributes = {} 
)
static

Creates new scalar datatype.

Parameters
[in]kindkind of the scalar datatype
[in]sizebuffersize of the scalar datatype
[in]attributesattributes of the scalar datatype

◆ make() [2/3]

static std::shared_ptr< Scalar_datatype > PDI::Scalar_datatype::make ( Scalar_kind  kind,
size_t  size,
size_t  align,
const Attributes_map attributes = {} 
)
static

Creates new scalar datatype.

Parameters
[in]kindkind of the scalar datatype
[in]sizebuffersize of the scalar datatype
[in]alignalignment of the scalar datatype
[in]attributesattributes of the scalar datatype

◆ make() [3/3]

static std::shared_ptr< Scalar_datatype > PDI::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 = {} 
)
static

Creates new scalar datatype.

Parameters
[in]kindkind of the scalar datatype
[in]sizebuffersize of the scalar datatype
[in]alignalignment of the scalar datatype
[in]dense_sizedense size of the scalar datatype
[in]copyfunction that copies data of this datatype
[in]destroyfunction that destroys data of this datatype (doesn't deallocate memory)
[in]attributesattributes of the scalar datatype

Member Data Documentation

◆ kind_of_v

template<class T >
constexpr auto PDI::Scalar_datatype::kind_of_v = kind_of<std::remove_cv_t<T>>()
staticconstexpr

◆ type_for_v

template<class T >
constexpr auto const& PDI::Scalar_datatype::type_for_v = cv_type_for_v<std::remove_cv_t<T>>
staticconstexpr

The documentation for this class was generated from the following file: