This section describes the types related to the table concept.

Table Types




A common implementation of the table concept. Base class for other table types.


An implementation of table metadata concept.

Data layout

An enumeration of data layouts used to store contiguous data blocks inside the table.

Feature type

An enumeration of feature types used in oneDAL to define set of available operations onto the data.

Requirements on table types

Each implementation of table concept:

  1. Follows the definition of the table concept and its restrictions (e.g., immutability).

  2. Is derived from the oneapi::dal::table class. The behavior of this class can be extended, but cannot be weaken.

  3. Is reference-counted.

  4. Defines a unique id number: the “kind” that represents objects of that type in runtime.

The following listing provides an example of table API to illustrate table kinds and copy-assignment operation:

using namespace onedal;

// Creating homogen_table sub-type.
dal::homogen_table table1 = homogen_table::wrap(queue, data_ptr, row_count, column_count);

// table1 and table2 share the same data (no data copy is performed)
dal::table table2 = table1;

// Creating an empty table
dal::table table3;

std::cout << table1.get_kind()     == table2.get_kind() << std::endl; // true
std::cout << homogen_table::kind() == table2.get_kind() << std::endl; // true
std::cout << table2.get_kind()     == table3.get_kind() << std::endl; // false

// Referring table3 to the table2.
table3 = table2;
std::cout << table2.get_kind() == table3.get_kind() << std::endl; // true

Table types

oneDAL defines a set of classes that implement the table concept for a specific data format:

Table Types for specific data formats

Table type


homogen table

A dense table that contains contiguous homogeneous data.

Programming interface

Refer to API: Tables.