PDI 1.2.0-alpha.2021-05-03.c9942bc

Data exchange made easy

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

Classes

class  Accessor
 Accessor for pointer datatype. More...
 

Public Member Functions

 Pointer_datatype (Datatype_uptr subtype)
 
 Pointer_datatype (Datatype_uptr subtype, std::function< void *(void *, const void *)> copy, std::function< void(void *)> destroy)
 
const Datatypesubtype () const
 Type of the pointed element. More...
 
Datatype_template_uptr clone () const override
 Creates a new datatype as an exact copy of this one. More...
 
Datatype_uptr clone_type () const override
 Creates a new datatype as an exact copy of this one. More...
 
Datatype_uptr densify () const override
 Creates a new datatype as the dense copy of this one. More...
 
Datatype_uptr 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...
 
std::pair< void *, Datatype_uptrsubaccess_by_iterators (void *from, std::vector< std::unique_ptr< Accessor_base >>::const_iterator remaining_begin, std::vector< std::unique_ptr< Accessor_base >>::const_iterator remaining_end) const override
 Creates datatype of subtype and returns it with a moved pointer. More...
 
void destroy_data (void *ptr) const override
 Function used to delete the data behind 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...
 
Datatype_uptr dereference () const
 
- Public Member Functions inherited from PDI::Datatype
 ~Datatype () override
 
bool operator!= (const Datatype &other) const
 Test for inequality. More...
 
std::pair< void *, Datatype_uptrsubaccess (void *from, const Accessor_base &accessor) const
 Creates datatype of subtype and returns it with a moved pointer. More...
 
std::pair< void *, Datatype_uptrsubaccess (void *from, const std::vector< std::unique_ptr< Accessor_base >> &accessors) const
 Creates datatype of subtype and returns it with a moved pointer. More...
 
- Public Member Functions inherited from PDI::Datatype_template
virtual ~Datatype_template ()
 Destroys the template. More...
 

Additional Inherited Members

- 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...
 

Constructor & Destructor Documentation

◆ Pointer_datatype() [1/2]

PDI::Pointer_datatype::Pointer_datatype ( Datatype_uptr  subtype)

◆ Pointer_datatype() [2/2]

PDI::Pointer_datatype::Pointer_datatype ( Datatype_uptr  subtype,
std::function< void *(void *, const void *)>  copy,
std::function< void(void *)>  destroy 
)

Member Function Documentation

◆ subtype()

const Datatype& PDI::Pointer_datatype::subtype ( ) const

Type of the pointed element.

Returns
the type of the pointed element

◆ clone()

Datatype_template_uptr PDI::Pointer_datatype::clone ( ) const
overridevirtual

Creates a new datatype as an exact copy of this one.

Returns
the dense type that is produced

Implements PDI::Datatype_template.

◆ clone_type()

Datatype_uptr PDI::Pointer_datatype::clone_type ( ) const
overridevirtual

Creates a new datatype as an exact copy of this one.

Returns
the dense type that is produced

Implements PDI::Datatype.

◆ densify()

Datatype_uptr 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_uptr 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.

◆ subaccess_by_iterators()

std::pair<void*, Datatype_uptr> PDI::Pointer_datatype::subaccess_by_iterators ( void *  from,
std::vector< std::unique_ptr< Accessor_base >>::const_iterator  remaining_begin,
std::vector< std::unique_ptr< Accessor_base >>::const_iterator  remaining_end 
) const
overridevirtual

Creates datatype of subtype and returns it with a moved pointer.

Parameters
[in]fromthe pointer to the data
[in]remaining_beginiterator to the begin of remaining accessors
[in]remaining_enditerator to the end of remaining accessors
Returns
pointer moved by offset and new datatype

Reimplemented from PDI::Datatype.

◆ destroy_data()

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

Function used to delete the data behind the datatype.

This should not deallocate the memory.

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.

◆ dereference()

Datatype_uptr PDI::Pointer_datatype::dereference ( ) const

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