PDI 1.6.0-alpha.2022-04-22.b70acbf

the PDI data interface

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

Public Member Functions

Datatype_sptr subtype () const
 Type of the pointed element. More...
 
Datatype_sptr densify () const override
 Creates a new datatype as the dense copy of this one. More...
 
Datatype_sptr evaluate (Context &) const override
 Creates a new datatype by resolving the value of all metadata references. More...
 
bool dense () const override
 Indicate if the datatype is dense or not. More...
 
size_t datasize () const override
 Computes the data size of a type, excluding potentially unused memory from a sparse type. More...
 
size_t buffersize () const override
 Computes the data size of a type, including potentially unused memory from a sparse type. More...
 
size_t alignment () const override
 Returns the required alignment for a type. More...
 
bool simple () const override
 Tells if data can be copied as bytes (if type is dense) and doesn't need a destroyer. More...
 
void * data_to_dense_copy (void *to, const void *from) const override
 Creates a dense deep copy of data. More...
 
void * data_from_dense_copy (void *to, const void *from) const override
 Creates a sparse deep copy of dense data. More...
 
Datatype_sptr index (size_t index) const override
 Access the type of the element at the provided index. More...
 
std::pair< void *, Datatype_sptrindex (size_t index, void *data) const override
 Access the type and value of the element at the provided index. More...
 
Datatype_sptr slice (size_t start_index, size_t end_index) const override
 Access the type of the elements slice between the provided indices. More...
 
std::pair< void *, Datatype_sptrslice (size_t start_index, size_t end_index, void *data) const override
 Access the type and value of the elements slice between the provided indices. More...
 
Datatype_sptr member (const char *name) const override
 Access the type of the member with the provided name. More...
 
std::pair< void *, Datatype_sptrmember (const char *name, void *data) const override
 Access the type and value of the member with the provided name. More...
 
Datatype_sptr dereference () const override
 Access the type referenced by this. More...
 
std::pair< void *, Datatype_sptrdereference (void *data) const override
 Access the type and value referenced by this. More...
 
void destroy_data (void *ptr) const override
 Delete data whose type is described by the Datatype. More...
 
std::string debug_string () const override
 Returns the datatype yaml representation as a string. More...
 
bool operator== (const Datatype &) const override
 Test for equality. More...
 
- Public Member Functions inherited from PDI::Datatype
 Datatype (const Attributes_map &attributes={})
 Creates a new datatype. More...
 
 ~Datatype () override
 
virtual bool operator== (const Datatype &other) const =0
 Test for equality. More...
 
bool operator!= (const Datatype &other) const
 Test for inequality. More...
 
virtual Datatype_sptr densify () const =0
 Creates a new datatype as the dense copy of this one. More...
 
virtual bool dense () const =0
 Indicate if the datatype is dense or not. More...
 
virtual size_t datasize () const =0
 Computes the data size of a type, excluding potentially unused memory from a sparse type. More...
 
virtual size_t buffersize () const =0
 Computes the data size of a type, including potentially unused memory from a sparse type. More...
 
virtual size_t alignment () const =0
 Returns the required alignment for a type. More...
 
virtual bool simple () const =0
 Tells if data can be copied as bytes (if type is dense) and doesn't need a destroyer. More...
 
virtual void * data_to_dense_copy (void *to, const void *from) const =0
 Creates a dense deep copy of data. More...
 
virtual void * data_from_dense_copy (void *to, const void *from) const =0
 Creates a sparse deep copy of dense data. More...
 
virtual Datatype_sptr index (size_t index) const
 Access the type of the element at the provided index. More...
 
virtual std::pair< void *, Datatype_sptrindex (size_t index, void *data) const
 Access the type and value of the element at the provided index. More...
 
virtual Datatype_sptr slice (size_t start_index, size_t end_index) const
 Access the type of the elements slice between the provided indices. More...
 
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. More...
 
virtual Datatype_sptr member (const char *name) const
 Access the type of the member with the provided name. More...
 
virtual std::pair< void *, Datatype_sptrmember (const char *name, void *data) const
 Access the type and value of the member with the provided name. More...
 
virtual Datatype_sptr dereference () const
 Access the type referenced by this. More...
 
virtual std::pair< void *, Datatype_sptrdereference (void *data) const
 Access the type and value referenced by this. More...
 
virtual void destroy_data (void *ptr) const =0
 Delete data whose type is described by the Datatype. More...
 
virtual std::string debug_string () const =0
 Returns the datatype yaml representation as a string. More...
 
- Public Member Functions inherited from PDI::Datatype_template
 Datatype_template (const Attributes_map &attributes={})
 Creates datatype template with given attributes. More...
 
 Datatype_template (PC_tree_t datatype_tree)
 Creates datatype template. More...
 
virtual ~Datatype_template ()
 Destroys the template. More...
 
virtual Datatype_sptr evaluate (Context &ctx) const =0
 Creates a new datatype by resolving the value of all metadata references. More...
 
Expression attribute (const std::string &attribute_name) const
 Returns attribute of given name as Expression. More...
 
const Attributes_mapattributes () const
 Returns all attributes as a unordered map. More...
 

Static Public Member Functions

static std::shared_ptr< Pointer_datatypemake (Datatype_sptr subtype, const Attributes_map &attributes={})
 Creates new pointer datatype. More...
 
static std::shared_ptr< Pointer_datatypemake (Datatype_sptr subtype, std::function< void *(void *, const void *)> copy, std::function< void(void *)> destroy, const Attributes_map &attributes={})
 Creates new pointer datatype. More...
 
- 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. More...
 
static void load_user_datatypes (Context &ctx, PC_tree_t types_tree)
 Adds to the context the user defined datatypes. More...
 

Additional Inherited Members

- Protected Attributes inherited from PDI::Datatype_template
Attributes_map m_attributes
 

Member Function Documentation

◆ subtype()

Datatype_sptr PDI::Pointer_datatype::subtype ( ) const

Type of the pointed element.

Returns
the type of the pointed element

◆ densify()

Datatype_sptr PDI::Pointer_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::Pointer_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::Pointer_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::Pointer_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::Pointer_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::Pointer_datatype::alignment ( ) const
overridevirtual

Returns the required alignment for a type.

Returns
the size in bytes

Implements PDI::Datatype.

◆ simple()

bool PDI::Pointer_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::Pointer_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::Pointer_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.

◆ index() [1/2]

Datatype_sptr PDI::Pointer_datatype::index ( size_t  index) const
overridevirtual

Access the type of the element at the provided index.

Parameters
indexthe index where to look
Returns
the Datatype of the indexed sub-element

Reimplemented from PDI::Datatype.

◆ index() [2/2]

std::pair< void *, Datatype_sptr > PDI::Pointer_datatype::index ( size_t  index,
void *  data 
) const
overridevirtual

Access the type and value of the element at the provided index.

Parameters
indexthe index where to look
datathe address of the element to index
Returns
the Datatype and address of the indexed sub-element

Reimplemented from PDI::Datatype.

◆ slice() [1/2]

Datatype_sptr PDI::Pointer_datatype::slice ( size_t  start_index,
size_t  end_index 
) const
overridevirtual

Access the type of the elements slice between the provided indices.

Parameters
start_indexthe index where to start
end_indexthe index where to end
Returns
the Datatype of the slice

Reimplemented from PDI::Datatype.

◆ slice() [2/2]

std::pair< void *, Datatype_sptr > PDI::Pointer_datatype::slice ( size_t  start_index,
size_t  end_index,
void *  data 
) const
overridevirtual

Access the type and value of the elements slice between the provided indices.

Parameters
start_indexthe index where to start
end_indexthe index where to end
datathe address of the element to slice
Returns
the Datatype and address of the slice

Reimplemented from PDI::Datatype.

◆ member() [1/2]

Datatype_sptr PDI::Pointer_datatype::member ( const char *  name) const
overridevirtual

Access the type of the member with the provided name.

Parameters
namethe name of the member to access
Returns
the Datatype of the member

Reimplemented from PDI::Datatype.

◆ member() [2/2]

std::pair< void *, Datatype_sptr > PDI::Pointer_datatype::member ( const char *  name,
void *  data 
) const
overridevirtual

Access the type and value of the member with the provided name.

Parameters
namethe name of the member to access
datathe address of the element whose member to access
Returns
the Datatype and address of the member

Reimplemented from PDI::Datatype.

◆ dereference() [1/2]

Datatype_sptr PDI::Pointer_datatype::dereference ( ) const
overridevirtual

Access the type referenced by this.

Returns
the Datatype referenced

Reimplemented from PDI::Datatype.

◆ dereference() [2/2]

std::pair< void *, Datatype_sptr > PDI::Pointer_datatype::dereference ( void *  data) const
overridevirtual

Access the type and value referenced by this.

Parameters
datathe address of the reference
Returns
the Datatype and address referenced

Reimplemented from PDI::Datatype.

◆ destroy_data()

void PDI::Pointer_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::Pointer_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::Pointer_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/2]

static std::shared_ptr< Pointer_datatype > PDI::Pointer_datatype::make ( Datatype_sptr  subtype,
const Attributes_map attributes = {} 
)
static

Creates new pointer datatype.

Parameters
[in]subtypesubtype of the pointer datatype
[in]attributesattributes of the pointer datatype

◆ make() [2/2]

static std::shared_ptr< Pointer_datatype > PDI::Pointer_datatype::make ( Datatype_sptr  subtype,
std::function< void *(void *, const void *)>  copy,
std::function< void(void *)>  destroy,
const Attributes_map attributes = {} 
)
static

Creates new pointer datatype.

Parameters
[in]subtypesubtype of the pointer 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 pointer datatype

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