PDI 0.5.1

Data exchange made easy

Specification tree Reference

The root of PDI configuration is a dictionary that contains the following keys:

keyvalue
"data" (optional)a data_list
"metadata" (optional)a data_list
"plugins" (optional)a plugin_list
".*" (optional)anything
  • the data and metadata sections specify the type of the data in buffers exposed by the application; for metadata, PDI keeps a copy while it only keeps references for data,
  • the plugin section specifies the list of plugins to load and their configuration,
  • additional sections are ignored.

array

A array is a dictionary that contains the following keys:

keyvalue
"type""array"
"size"a integer_or_list_node
"subtype" (optional)a datatype
"subsize" (optional)a integer_or_list_node
"start" (optional)a integer_or_list_node

A array represents a potentially multi-dimensional array where:

  • the value associated to the size key represents the size of the array in each dimension (C order),
  • the value associated to the subtype key represents the type of the elements in the array,

char

A char is a dictionary that contains the following keys:

keyvalue
"type""char"

A char represents the C char datatype; it accepts no parameter.

character

A character is a dictionary that contains the following keys:

keyvalue
"type""character"
"kind" (optional)an Integer expression

A character represents the Fortran character datatype. The value associated to the kind key corresponds to the Fortran kind parameter (character(kind=...)).

datatype

A datatype can be any of:

All these are dictionaries (except for simple_datatype) with a type key whose value disambiguate between them, other keys act as parameters to the type. Plugins can add new datatypes that follow the same pattern.

data_list

A data_list is a dictionary that contains the following keys:

keyvalue
".*" (optional)a datatype
  • each key identifies the name of a buffer exposed to PDI associated to its type.

double

A double is a dictionary that contains the following keys:

keyvalue
"type""double"

A double is a datatype that represents the C double type. It accepts no parameter.

float

A float is a dictionary that contains the following keys:

keyvalue
"type""float"

A float is a datatype that represents the C float type. It accepts no parameter.

int

A int is a dictionary that contains the following keys:

keyvalue
"type""int"

A int is a datatype that represents the C int type. It accepts no parameter.

int8

A int8 is a dictionary that contains the following keys:

keyvalue
"type""int8"

A int8 is a datatype that represents the C int8_t type from the <stdtypes.h> header. It accepts no parameter.

int16

A int is a dictionary that contains the following keys:

keyvalue
"type""int16"

A int16 is a datatype that represents the C int16_t type from the <stdtypes.h> header. It accepts no parameter.

int32

A int32 is a dictionary that contains the following keys:

keyvalue
"type""int32"

A int32 is a datatype that represents the C int32_t type from the <stdtypes.h> header. It accepts no parameter.

int64

A int64 is a dictionary that contains the following keys:

keyvalue
"type""int64"

A int64 is a datatype that represents the C int64_t type from the <stdtypes.h> header. It accepts no parameter.

integer

A integer is a dictionary that contains the following keys:

keyvalue
"type""integer"
"kind" (optional)an Integer expression

A integer represents the Fortran integer datatype. The value associated to the kind key corresponds to the Fortran kind parameter (integer(kind=...)).

logical

A logical is a dictionary that contains the following keys:

keyvalue
"type""logical"
"kind" (optional)an Integer expression

A logical represents the Fortran logical datatype. The value associated to the kind key corresponds to the Fortran kind parameter (logical(kind=...)).

plugin_list

A plugin_list is a dictionary that contains the following keys:

keyvalue
".*" (optional)anything
  • each key identifies the name of a plugin to load associated to its configuration; the content of the configuration depends on the plugin.

real

A real is a dictionary that contains the following keys:

keyvalue
"type""real"
"kind" (optional)an Integer expression

A real represents the Fortran real datatype. The value associated to the kind key corresponds to the Fortran kind parameter (real(kind=...)).

record

A record is a dictionary that contains the following keys:

keyvalue
"type""record"
"buffersize"a integer_or_list_node
"members" (optional)a member_list_node

A record represents a potentially multi-dimensional array where:

simple_datatype

A simple_datatype is a scalar.

The simple_datatype is interpreted as a shortcut for a dictionary with a single key type whose value is the provided scalar and therefore another datatype.

For example, the following value:

"my_type"

is interpreted as if it was:

{ type: "my_type" }