Skip to content

Commit

Permalink
Add requirements to header files and specification version macro
Browse files Browse the repository at this point in the history
  • Loading branch information
akukanov committed Sep 27, 2024
1 parent 6ad4cc5 commit 961ec55
Showing 1 changed file with 40 additions and 3 deletions.
43 changes: 40 additions & 3 deletions source/elements/oneDPL/source/common.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,51 @@
..
.. SPDX-License-Identifier: CC-BY-4.0
General Information
-------------------

This section describes the most general functionality of |dpl_full_name| (oneDPL)
such as namespaces, versioning, etc.

Namespaces
----------
++++++++++

oneDPL uses ``namespace oneapi::dpl`` and a shorter variant ``namespace dpl`` for all
functionality including parallel algorithms, oneDPL execution policies, etc.
For the subset of the standard C++ library for kernels, the standard class
and function names are also aliased in ``namespace oneapi::dpl``.

oneDPL uses nested namespaces for the functionality aligned with the C++ standard.
The names of those namespaces are the same as in ``namespace std``. For example,
oneDPL execution policies are provided in ``namespace oneapi::dpl::execution``.
The names of those namespaces are the same as for their analogues in ``namespace std``.
[*Example*: oneDPL execution policies are provided in ``namespace oneapi::dpl::execution``. -- *end example*]

Header Files
++++++++++++

The oneDPL header files are provided under the ``oneapi/dpl/`` include path,
which must explicitly precede oneDPL header file names in ``#include`` directives.

Following the naming convention for the C++ standard library header files,
the oneDPL header files have no extension suffix in their names.

A oneDPL header file automatically includes the C++ standard library header file
which name matches that of the oneDPL header file without the include path prefix.
[*Example*: ``#include <oneapi/dpl/version>`` automatically includes ``<version>``
if that is available. -- *end example*]

Version Information
+++++++++++++++++++

A oneDPL implementation must define a preprocessor macro representing the version
of the oneDPL specification that the implementation is compliant with.

.. code:: cpp
// Defined in <oneapi/dpl/version>
#define ONEDPL_SPEC_VERSION /*implementation-defined*/
The ``ONEDPL_SPEC_VERSION`` macro must be defined to the decimal literal which value equals to
*major-spec-version* * 100 + *minor-spec-version*, where *major-spec-version* and *minor-spec-version*
are the major and the minor versions of the latest fully supported specification.
[*Example*: ``#define ONEDPL_SPEC_VERSION 104`` for the oneDPL specification 1.4. -- *end example*]

0 comments on commit 961ec55

Please sign in to comment.