class PDI::Array_datatype

Description

an Array_datatype is a Datatype that represents an array: i.e storage of multiple elements of the same type continuously in memory.

Content

Member Types

class Index_accessor
Accessor to get single element from array.
class Slice_accessor
Accessor to get a slice of an array, returns array of the same subtype.

Member Functions

Array_datatype ( size_t size, size_t start, size_t subsize, Datatype_uptr subtype )
Construct a new partially filled Array_datatype.
Array_datatype ( size_t size, Datatype_uptr subtype )
Construct a new completely filled Array_datatype.
size_t alignment ( )
Returns the required alignment for a type.
size_t buffersize ( )
Computes the data size of a type, including potentially unused memory from a sparse type.
Datatype_template_uptr clone ( )
Creates a new datatype as an exact copy of this one.
Datatype_uptr clone_type ( )
Creates a new datatype as an exact copy of this one.
void * data_from_dense_copy ( const void * from, void * to )
Creates a sparse deep copy of dense data.
void * data_to_dense_copy ( const void * from, void * to )
Creates a dense deep copy of data.
size_t datasize ( )
Computes the data size of a type, excluding potentially unused memory from a sparse type.
std::string debug_string ( )
Returns the datatype yaml representation as a string.
bool dense ( )
Indicate if the datatype is dense or not.
Datatype_uptr densify ( )
Creates a new datatype as the dense copy of this one.
void destroy_data ( void * ptr )
Function used to delete the data behind the datatype.
Datatype_uptr evaluate ( Context & ctx )
Creates a new datatype by resolving the value of all metadata references.
bool operator== ( const Datatype & other )
Test for equality.
bool simple ( )
Tells if data can be copied as bytes (if type is dense) and doesn't need a destroyer.
size_t size ( )
Number of elements the array can store.
size_t start ( )
id of the first actual element of the array
std::pair< void *, Datatype_uptr > 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 )
Creates datatype of subtype and returns it with a moved pointer.
size_t subsize ( )
Number of actual elements in the array.
const Datatype & subtype ( )
Type of the elements contained in the array.

Documentation

Member Functions

Array_datatype ( size_t size, size_t start, size_t subsize, Datatype_uptr subtype )

Description

Construct a new partially filled Array_datatype.

Parameters

size
the number of elements the array can store
start
the id of the first actual element of the array
subsize
the number of actual elements in the array
subtype
the type of the elements contained in the array

Array_datatype ( size_t size, Datatype_uptr subtype )

Description

Construct a new completely filled Array_datatype.

Parameters

size
the number of elements the array can store
subtype
the type of the elements contained in the array

size_t alignment ( )

Description

Returns the required alignment for a type.

Result

the size in bytes

size_t buffersize ( )

Description

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

Result

the size in bytes

Datatype_template_uptr clone ( )

Description

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

Result

the dense type that is produced

Datatype_uptr clone_type ( )

Description

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

Result

the dense type that is produced

void * data_from_dense_copy ( const void * from, void * to )

Description

Creates a sparse deep copy of dense data.

Parameters

from
the pointer to the copied data (dense data)
to
the pointer to the allocated memory to fill (size of buffersize)

Result

updated ‘to’ pointer

void * data_to_dense_copy ( const void * from, void * to )

Description

Creates a dense deep copy of data.

Parameters

from
the pointer to the copied data (size of buffersize)
to
the pointer to the allocated memory to fill (dense data)

Result

updated ‘to’ pointer

size_t datasize ( )

Description

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

Result

the size in bytes

std::string debug_string ( )

Description

Returns the datatype yaml representation as a string.

Result

the datatype yaml representation as a string

bool dense ( )

Description

Indicate if the datatype is dense or not.

Result

whether the datatype is dense

Datatype_uptr densify ( )

Description

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

Result

the type that is produced

void destroy_data ( void * ptr )

Description

Function used to delete the data behind the datatype. This should not deallocate the memory.

Parameters

ptr
to the data to free

Datatype_uptr evaluate ( Context & ctx )

Description

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

Parameters

ctx
the context in which to evaluate this template

Result

the evaluated type that is produced

bool operator== ( const Datatype & other )

Description

Test for equality.

Parameters

other
the Datatype to compare

Result

true if the Datatype’s are equal

bool simple ( )

Description

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

Result

true if data has trivial copier and destroyer, false otherwise

size_t size ( )

Description

Number of elements the array can store.

Result

the number of elements the array can store

size_t start ( )

Description

id of the first actual element of the array

Result

the id of the first actual element of the array

std::pair< void *, Datatype_uptr > 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 )

Description

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

Parameters

from
the pointer to the data
remaining_begin
iterator to the begin of remaining accessors
remaining_end
iterator to the end of remaining accessors

Result

pointer moved by offset and new datatype

size_t subsize ( )

Description

Number of actual elements in the array.

Result

the number of actual elements in the array

const Datatype & subtype ( )

Description

Type of the elements contained in the array.

Result

the type of the elements contained in the array


Last modified January 1, 0001