-
-
-#### Fixes
-_**Fixed**_
- - [CPPDEV-507][] - [System] `a_util::system::Timer` crashes [\[view\]][79913024c9a] [\[view\]][e1e759f0b69] [\[view\]][cbd935f973f]
- - Fixes sporadically crashing timer
- - Fixes timer in case of ONESHOT
- - Fixes timer test for repeatedly calls
- - [CPPDEV-590][] - [mapping] Test execution creates and deletes files in source tree [\[view\]][99f440f0f83]
- - Creation of files moved to build folder
- - [CPPDEV-592][] - [system] system_test.TestUsername fails when executed in Ubuntu 18.04 32 bit docker image [\[view\]][8bad6d55f5f]
- - Runs commands in docker container as non-root
- - [CPPDEV-615][] - [result,ddl] Using `min()/max()` in public headers might interfere with function like macros in Windows.h [\[view\]][ee37afe687f]
- - Fixes min/max macro expansion from "Windows.h" using parenthesis around the min/max function calls
- - [CPPDEV-617][] - [ddl] Mapping language version interpreted as double [\[view\]][55777ea26fa]
- - [CPPDEV-619][] - Known issues links in changelog contain useless information [\[view\]][4aa35bf38b3]
- - [CPPDEV-620][] - [concurrency] Execution of `a_util::concurrency::semaphore` tests takes a long time [\[view\]][926ce37a1b0]
- - [CPPDEV-624][] - [system] `a_util::system::AddressInfo` does not decrease the ref count of the referenced module (windows only) [\[view\]][c47707f6210]
- - Fixes reference count for module handle
- - [CPPDEV-631][] - MPL2.0 license notice is wrong [\[view\]][3475aecc47a]
- - [CPPDEV-636][] - [DOC] Documentation contains false information (ongoing) [\[view\]][b3cc17cdbc7] [\[view\]][d4703d5fa86]
- - [CPPDEV-638][] - [build] _version_ file not exported to conan exports folder [\[view\]][b0f8ea36a60]
- - version file is now exported to conan exports folder
- - [CPPDEV-639][] - [ddl] Build error when cross building from "Windows:x86_64" to "Windows:x86" [\[view\]][1af294a5f4a]
-
-
-
-
-
-#### Changes
-_**Done**_
-- [CPPDEV-165][] - [Result] Make `a_util::result::isOk()` self explaining and type safe
- - Adds explicit bool conversion operator with `a_util::result::Result::operator bool()` [\[view\]][95b93898b08]
- - Deprecates `a_util::result::isOk()` and `a_util::result::isFailed()` [\[view\]][f83a3d6cb93]
-- [CPPDEV-178][] - [system] Add functionality to query the file path of the binary a memory address is located in [\[view\]][a67082bbd15]
- - Added `a_util::system::AddressInfo` class to query the file path of the binary the memory address is located in
-- [CPPDEV-535][] - Update to conan version 1.48.2 and enable [CONAN_V2_MODE][]
- - Replaces build_requires with tool_requires [\[view\]][f494c5bba58]
- - Removes short_paths attribute from conanfiles and uses environment variable `CONAN_USE_ALWAYS_SHORT_PATHS="True"` in Jenkinsfile instead [\[view\]][975c0e2bbd8]
- - Uses MPL-2.0 license (SPDX identifier) as value for license attribute [\[view\]][5a3a0d1487e]
- - Adds homepage attribute [\[view\]][0fd9f12d8cb]
- - Removes deprecated settings arch_build and os_build attributes and sets the necessary settings in the Jenkinsfile instead [\[view\]][f680db51621]
- - Removes attributes default_channel and default_user which can be passed on the command line when calling conan install/create [\[view\]][d837e8d1b88]
- - Enables CONAN_V2_MODE and fixes the warnings acccordingly [\[view\]][025b8717105]
-- [CPPDEV-514][] - [ddl] Adapt `ddl::DDCompare` to deal with padding bytes [\[view\]][8e240bd2153]
- - Adapt `ddl::DDCompare::isBinaryEqual()` for padding bytes
-- [CPPDEV-544][] - [build] Docker adjustments for Linux x86 packages [\[view\]][fc04fd277da]
- - Adds an i386 Dockerfile for different gcc/conan versions
- - Adds two new stages to Jenkinsfile using the dockerfile agent to build gcc5/7 32 bit variants
-- [CPPDEV-546][] - [build] Update CMake version
- - Replaces add_test() with gtest_discover_tests() [\[view\]][644c448713e]
- - Adds `add_test()` usage check [\[view\]][95a6be7c4a0]
- - Uses `cmake_path()` over (deprecated) `get_filename_components()` (requires at least CMake 3.20) [\[view\]][f8ebf440e77]
- - Changes `gtest discover tests()` mode to PRE_TEST [\[view\]][5a3ff1a2c22]
- - Uses `ctest --output-junit` to create junit xml file (requires at least CMake 3.21) [\[view\]][4190e6b4882]
-- [CPPDEV-574][] - [clipp][] available in dev essentials
- - Adds clipp 1.2.3 to 3rdparty components [\[view\]][e94e0c91f6c]
- - Adds clipp find script to scripts/cmake/modules [\[view\]][201c1a6aac3]
- - Adds clipp tests as private 3rdparty tests [\[view\]][4b213f21ce8] [\[view\]][7c8159c6fa0]
- - Removes [clara][] which is replaced by clipp [\[view\]][899031056ed]
- - Adds acceptance tests for stubgenerator [\[view\]][f85400c3eb7]
- - Replaces `cCommandLine` with clipp [\[view\]][bbe6bb0c6c5]
-- [CPPDEV-581][] - [preprocessor] Add macro to enable/disable deprecated warnings [\[view\]][32362f137a9] [\[view\]][166dd57162a]
- - Adds `DEV_ESSENTIAL_DEPRECATED()` macro in new file _a\_util/preprocessor/deprecated.h_
- - The deprecation of entities can be disabled by defining `DEV_ESSENTIAL_DEPRECATED_DISABLE_WARNINGS`
- - Adds "Deprecated section" in doxygen documentation
- - Adds doxygen alias "\@dev_essential_deprecated" to document deprecated entities
-- [CPPDEV-598][] - [rpc] Add possibility to handle non-RPC http requests [\[view\]][4c79d02e394]
- - Added new virtual function that is passed all relevant HTTP request and response data
-- [CPPDEV-610][] Append _cmake/modules_ path to CMAKE_MODULE_PATH for downstream projects [\[view\]][505353db5e0]
- - Adds path _<dev_essential_DIR>/cmake/modules_ to `CMAKE_MODULE_PATH` if component pkg_rpc is found by consuming project
-
-_**Won't Do**_
-- [CPPDEV-248][] - Evaluate and - if possible - use [argtable3][] instead of `cCommandLine` for libjson-rpc-cpp
- - Already solved with [CPPDEV-574][]
-
-
-#### Fixes
-_**Fixed**_
-- [CPPDEV-524][] - DDL specification documentation contains information about ADTF but not about streams [\[view\]][f6eae2d106b]
- - Added documentation for streams and a TOC for ddl chapters in documentation
- - "ADTF" in documentation is now removed
- - documentation for streams is added to the specification
-- [CPPDEV-560][] - [build] clang-tidy default checks show findings [\[view\]][4ec2d960974]
- - Found and fixed/silenced all default clang-tidy (10.0.0) findings
-- [CPPDEV-573][] - Merge of incompatible DDL structs of the same name does not throw an exception [\[view\]][a53e41151ef]
- - Added tests for merging of data definitions
- - Fixed merging of different and incompatible StructTypes with the same name
-- [CPPDEV-586][] - [base] Redefinition of `std::is_enum_v` if _a\_util/base/type\_traits.h_ is compiled with clang -std=c++17 [\[view\]][cd970efb7d6]
- - Fixes feature check for `std::is_enum_v`
-- [CPPDEV-587][] - [build] Different symbol visibility between standalone and integrated tests [\[view\]][52663731064]
- - Renamed file to _set_symbol_visibility.cmake_
- - Included file _scripts/cmake/set_symbol_visibility.cmake_ in standalone tests as well
-- [CPPDEV-589][] - [ddl] Check for MSVC does not consider selected C++ language in _ddl/utilities/dd_access_list.h_ [\[view\]][3913852ec5f]
- - Adds library feature check for `std::string_view`
- - Uses the library feature check to correctly determine C++14/17 compliant compilers
-- [CPPDEV-609][] Result description is missing for 32bit [\[view\]][58c61bfd693]
- - Fixes result pointer cast for gcc x86
-
-_**Duplicate**_
-- [CPPDEV-588][] - [ddl] DD::StructureGenerator creates invalid DDL descriptions if used as global variable
- - Fixed with [CPPDEV-580][] and released with [dev_essential 1.2.1](#dev_essential_1_2_1)
-
-_**Won't Do**_
-- [CPPDEV-602][] - [rpc] static library compiled without -fPIC might cause coredumps on QNX when linked into a shared library
- - No QNX release is scheduled for pkg_rpc anymore. However, a fix was provided in [dev_essential 1.0.0](#dev_essential_1_0_0) with issue [CPPDEV-270][].
-
-
-
-
-
-#### Fixes
-_**Fixed**_
-- [CPPDEV-604] - [ddl] DDL has performance problems within dependency management if many dependencies added [\[view\]][a818d733a51]
- - changed the datastructure within (hidden - deprecated) validationmodel to std::unordered_set<> (see CPPDEV-611)
- - more time is "wasted" within typeinfo model while copying a StructType/DataType/EnumType from one DD to another DD
-
-
-
-
-
-#### Fixes
-_**Fixed**_
-- [CPPDEV-580] - [ddl] Static intializing order problem for all `ddl::dd::Version::ddl_version_*` used within other static variables [\[view\]][48fa35f7cd3]
-- [CPPDEV-585] - [ddl] Wrong bit_size by `ddl::codec::CodecIndex::getIndexForArrayPos()` [\[view\]][b12e8500d96]
-
-
-
-
-
-#### Changes
-_**Done**_
-- [CPPDEV-214][] - Use clang-tidy as static code analyzer [\[view\]][f4cd19d2705] [\[view\]][a40ec9e5d7c]
-- [CPPDEV-217][] - Add `a_util::ScopeGuard` class [\[view\]][2321ca13609]
- - Adds scope guards based on Andrei Alexandrescu's talk "Declarative Control Flow"
-- [CPPDEV-306][] - Enable TCP_NODELAY in httplib for faster RPC [\[view\]][9ddd6bc6a9c]
-- [CPPDEV-420][] - [ddl] Merge StructLayout (of Codec API) and StructTypeAccess [\[view\]][4122a427c3d]
-- [CPPDEV-430][] - [Tests] Create automated memory leak tests
-- [CPPDEV-456][] - [filesystem] Refactor `a_util::filesystem::Path::getRoot()` to be consistent with std naming [\[view\]][89b9047a7f3]
- - Deprecates `a_util::filesystem::Path::getRoot()` and adds
- - `a_util::filesystem::Path::getRootName()` and
- - `a_util::filesystem::Path::getRootPath()`
-- [CPPDEV-484][] - [build] Decouple conan and CMake [\[view\]][ca6bdd7fe6b] [\[view\]][62a40d231dd]
-- [CPPDEV-493][] - Provide common error codes and types [\[view\]][bcc89848174]
- - Introduces `enum a_util::errc`
-- [CPPDEV-541][] - [ddl] Extend type reflection API to support all optional DDL struct and element information [\[view\]][c33b96ea557]
- - Extends `ddl::DDStructure` with methods
- - `ddl::DDStructure::setStructInfo()`
- - `ddl::DDStructure::setElementInfo()`
- - `ddl::DDStructure::setElementUnit()`
-- [CPPDEV-543][] - [memory] Add `a_util::memory::makeStackPtr()` function equivalent to `std::make_unique` [\[view\]][eb730959e6a]
-- [CPPDEV-548][] - [ddl] Description files saved by the xml writer always follow the same pattern [\[view\]][58b9538330b]
-- [CPPDEV-554][] - [xml] Add possibility to sort xml nodes [\[view\]][42bdfeb6dec]
- - Adds function overload `a_util::strings::replace()` and new methods
- `a_util::xml::DOMElement::sortNodes()`
-- [CPPDEV-577][] - Add a small LeafCodecIndex to raise performance for default decoding [\[view\]][f52137f7d32] [\[view\]][30bcabca24f]
- - Introduces `ddl::codec::LeafCodecIndex` class for high performant ddl coder/decoder access
- - Introduces type traits file with the following function/types:
- - `std::is_enum_v` and `std::void_t` as std backports only for non C++17 compliant compilers
- - `a_util::underlying_type_or_type` and `a_util::underlying_type_or_type_t`
- - `a_util::is_explicitly_convertible_to` and `a_util::is_explicitly_convertible_to_v`
-
-_**Won't Do**_
-- [CPPDEV-5][] - Add Solution for old cFile \(AUL-70\)
-- [CPPDEV-85][] - [concurrency] Implement method `semaphore::wait_until`
-- [CPPDEV-107][] - Add child process control functions
-- [CPPDEV-117][] - Provide solution for further requirements regarding `a_util::process`
-- [CPPDEV-118][] - Array Support for As*-Methods of Variant
-- [CPPDEV-128][] - Use `_nullptr` instead of `nullptr` in public headers
-- [CPPDEV-134][] - Cleanup usage of defines and preprocessor macros
-- [CPPDEV-146][] - [process] Create possibility to interact with child process \(stdIn\)
-- [CPPDEV-264][] - [DOC] Methods, Variables, Classes need documentation
-- [CPPDEV-387][] - [ddl] Add Functionality to define 'aliases' to predefined data types in \ section
- - Superseded by [CPPDEV-426][]
-- [CPPDEV-505][] - Try sending RPC with SendRPCMessage in a predefined IP first
-- [CPPDEV-506][] - Add a thread safe queue
-
-_**Duplicate**_
-- [CPPDEV-173][] - [process] Add functionality to resolve environment variables
- - Duplicated by [CPPDEV-108][]
-- [CPPDEV-249][] - Change to new coding style and use clang tidy to convert user code
- - Duplicates by [CPPDEV-214][]
-- [CPPDEV-475][] - Redesign of the `ddl::access_element` API and CodecFactory internal data to increase creation performance
- - Duplicated by [CPPDEV-420][]
-- [CPPDEV-502][] - Predefined error codes for cross-project use
- - Duplicated by [CPPDEV-493][]
-- [CPPDEV-551][] - [ddl2header] Preserve ddl struct namespaces
- - Duplicated by [DDLUTILITY-111][]
-
-
-#### Fixes
-_**Fixed**_
-- [CPPDEV-135][] - [Result] Construction with 'ResultInfo' doesn't call desired constructor [\[view\]][b444f606a47]
- - **Please note:** This change might lead to compile time errors when using `_MAKE_RESULT()`
- with a value of `0` in customer code. For hints how to fix/deactivate this behavior, consult
- the resulting compiler message.
-- [CPPDEV-381][] - `ddl::getType()` does not return a meaningful error message [\[view\]][449e2e7553c]
-- [CPPDEV-509][] - dev_essential cannot be built with clang 10.0.0 and mingw32 frontend [\[view\]][6976be5e94b]
-- [CPPDEV-512][] - [ddl] compare for enums does not check for equivalence [\[view\]][3cd76c4adaf]
-- [CPPDEV-571][] - [build] No SCA stage for develop branch executed [\[view\]][9170346bdac]
-- [CPPDEV-575][] - threaded_http_server doesn't wait for detached threads on call to StopListening [\[view\]][a7cb41901f6]
-
-_**Won't Do**_
-- [CPPDEV-233][] - [HTTP Parser] The used http parser is too minimal
- - Fixed with [CPPDEV-250][]
-- [CPPDEV-565][] - [ddl] TesterOODDL::checkTypeCalculationPerformance test fails for gcc5 and gcc7
- - Fixed with [CPPDEV-420][]
-
-
-
-
-
-#### Fixes
-_**Fixed**_
-- [CPPDEV-539][] - [ddl] ElementTypeInfo will not be updated if add is used and has performance problem [\[view\]][95f6184c087]
-- [CPPDEV-545][] - [Variant] Move construction and move assignment very slow [\[view\]][33a0843551d]
-- [CPPDEV-550][] - [ddl] If a predefined type is used in enum the ValidationInfo will not be created
-
-
-
-
-
-#### Changes
-_**Done**_
-- [CPPDEV-460][] - [ddl_capi] Move DDL C-API to fep dev_essential
- - See [CPPDEV-476][]
-- [CPPDEV-465][] - [build] Comply to C\+\+ Core Guidelines [SF.12][] rule [\[view\]][6d1dfbdac60]
-- [CPPDEV-474][] - [ddl] DDL TypeReflection - Extend detection of missing elements by adding padding bytes automatically [\[view\]][373f6582788]
-- [CPPDEV-476][] - [ddl_capi] Integrate ddl-c-api into top level directory of a_util [\[view\]][83280e9efcc]
-- [CPPDEV-481][] - [build] Provide conditional clang-format SCA tester in CI [\[view\]][cf594afbf9f]
-- [CPPDEV-483][] - [build] Add baseline check to Jenkinsfile [\[view\]][8718cd9bf16]
-- [CPPDEV-485][] - [memory] Support alignment specification for `a_util::memory::StackPtr` [\[view\]][ea46c3f12bd]
-- [CPPDEV-488][] - [ddl] Possibility to create a description only with pre-defined data types [\[view\]][67b76f293f0]
-- [CPPDEV-489][] - [build] Provide single source of truth for product version [\[view\]][b28a734fb92]
-- [CPPDEV-491][] - [ddl] DDL Mapping Engine does not forward the correct time while using "data" or "signal" as trigger type [\[view\]][e17b65d147f]
-- [CPPDEV-492][] - [regex] Use `std::regex` for implementation of `a_util::regex` functionality [\[view\]][136da05b3a8]
-- [CPPDEV-498][] - [ddl] DDL TypeReflection - Add a dedicated validate function to the `DDStructureGenerator` [\[view\]][373f6582788]
-
-_**Won't Do**_
-- [CPPDEV-380][] - [ddl] Remove DDLCompareFunctor and use lambdas where necessary
- - File deleted in [2d5bd295a87][] in issue [CPPDEV-431][]
-- [CPPDEV-382][] - [ddl] Add missing documentation to header file
- - DDLImporter has been deleted with commit [2d5bd295a87][] in [CPPDEV-431][]
-- [CPPDEV-401][] - [ddl] Cleanup copy and move semantics
- - Superseded by issue [CPPDEV-431][] which removed almost all classes in question
-- [CPPDEV-403][] - [header2ddl] Use abstract syntax tree to generate description file
- - Superseded by [DDLUTILITY-101][]
-
-_**Duplicate**_
-- [CPPDEV-429][] - [build] Extend Conan Pkg Info in ddl
- - DDL integrated into dev_essential, so it will be done together with [CPPDEV-190][]
-
-
-#### Fixes
-_**Fixed**_
-- [CPPDEV-453][] - [concurrency] _a\_util/concurency.h_ brings windows includes in scope and destroys APIs [\[view\]][3d4bdb79210] [\[view\]][0b449eaffa8]
-- [CPPDEV-458][] - [system] Leftover ADTF include emits compiler error under `__APPLE__` [\[view\]][fb2a088917b]
-- [CPPDEV-480][] - [build] Self-contained header tester takes a long time to complete [\[view\]][c0252fe2ba7] [\[view\]][a4715ea42dd]
-- [CPPDEV-486][] - [ddl] Typo in _dd_predefined_datatypes.h_ prevents creating DataType int8_t [\[view\]][9f2285521a4] [\[view\]][e8781cc14b8]
-- [CPPDEV-487][] - [result] nativs file only installed for MSVC [\[view\]][f0085fe1176]
-- [CPPDEV-496][] - [xml] pugixml in a_util_xml causes linker problems when using a pugixml in a derivated work [\[view\]][81ccdb3bbe4]
-- [CPPDEV-497][] - [ddl] The CTOR with elements of `DDEnumGenerator` has a problem if type is not arithmetic [\[view\]][370f6e0613d]
-- [CPPDEV-500][] - [build] Compiler error when building with gcc >= 8.x [\[view\]][e405f89e75d]
-
-_**Won't Do**_
-- [CPPDEV-343][] - [ddlinspector] Duplicated types if renamed and merged
- - Fixed with redesign of OO DDL in issue [CPPDEV-431][]
-
-_**Cannot Reproduce**_
-- [CPPDEV-490][] - [ddl] `ddl::dd::StructType::Element::getNumBits()` returns zero for `DataTypes`, also if size is set in ddl file
-
-
-
-> _**This release is the successor of a_util, ddl library and pkg_rpc, merging all three libraries
-> into one repository.**_
-
-
-#### Changes
-- [CPPDEV-79](https://devstack.vwgroup.com/jira/browse/CPPDEV-79) -
- [Result] Enable usage of error description objects with static storage
-- [CPPDEV-270][] -
- Enable position independent code and position independent executables
-- [CPPDEV-301](https://devstack.vwgroup.com/jira/browse/CPPDEV-301) -
- [build] Elevate compiler warning levels for all util components
-- [CPPDEV-302](https://devstack.vwgroup.com/jira/browse/CPPDEV-302) -
- [build] Fix all compiler warnings and set compiler warnings as errors
-- [CPPDEV-313](https://devstack.vwgroup.com/jira/browse/CPPDEV-313) -
- Integrate cdpkgrpc master and tags into a_util repository
-- [CPPDEV-314](https://devstack.vwgroup.com/jira/browse/CPPDEV-314) -
- Integrate cdddl master and tags into a_util repository
-- [CPPDEV-385](https://devstack.vwgroup.com/jira/browse/CPPDEV-385) -
- Move or copy DDL description generation code from ADTF 3 to DDL Library
-- [CPPDEV-405](https://devstack.vwgroup.com/jira/browse/CPPDEV-405) -
- Add type reflection API to the DDL Library
-- [CPPDEV-423](https://devstack.vwgroup.com/jira/browse/CPPDEV-423) -
- Improve XML Data Model and DDL Parser
-- [CPPDEV-431][] -
- Redesign OO DDL Description API (Data Model + API)
- - **Breaking change:** The deprecated `ddl::DDLDescription` API has been replaced with the
- [DDL DataDefinition](ddl/dd.md). Customer code using the deprecated `ddl::DDLDescription` needs
- to be rewritten accordingly.
-- [CPPDEV-451](https://devstack.vwgroup.com/jira/browse/CPPDEV-451) -
- Integrate cdpkgrpc into top level directory of a_util
-- [CPPDEV-459](https://devstack.vwgroup.com/jira/browse/CPPDEV-459) -
- Provide ddl, pkg_rpc and a_util as dev_essential package version 1.0.0
-- [CPPDEV-461](https://devstack.vwgroup.com/jira/browse/CPPDEV-461) -
- Integrate cdddl into top level directory of a_util
-- [CPPDEV-462](https://devstack.vwgroup.com/jira/browse/CPPDEV-462) -
- Update license disclaimers to MPL2.0 and VW Group copyright
-- [CPPDEV-463](https://devstack.vwgroup.com/jira/browse/CPPDEV-463) -
- [BuildSystem] Add Linux_x64_gcc7, Linux_armv8_gcc7, and Windows_x64_vc142_VS2019 profile
-- [CPPDEV-468](https://devstack.vwgroup.com/jira/browse/CPPDEV-468) -
- [BuildSystem] Provide Release builds for additional platforms
-- [CPPDEV-471](https://devstack.vwgroup.com/jira/browse/CPPDEV-471) -
- [BuildSystem] Provide updated build information in README.md
-- [CPPDEV-472](https://devstack.vwgroup.com/jira/browse/CPPDEV-472) - Remove ddl2header and header2ddl
- - The successors of those tools will be available as part of the DDL Utilities. See
- [here](https://devstack.vwgroup.com/jira/browse/DDLUTILITY-100) and
- [here](https://devstack.vwgroup.com/jira/browse/DDLUTILITY-101) for details.
-
-
-#### Fixes
-- [CPPDEV-454](https://devstack.vwgroup.com/jira/browse/CPPDEV-454) -
- [filesystem] `a_util::filesytem::Path::makeRelative()` fails if any path contains ".."
-- [CPPDEV-464](https://devstack.vwgroup.com/jira/browse/CPPDEV-464) -
- remove / access for DDL internal datastructures type_access_list, type_access_map are not working
- correctly
-- [CPPDEV-467](https://devstack.vwgroup.com/jira/browse/CPPDEV-467) -
- If removing a struct_type which is used in another type the validation model will crash
-- [CPPDEV-470](https://devstack.vwgroup.com/jira/browse/CPPDEV-470) -
- Mapping Configuration for invalid file will crash
-- [CPPDEV-473](https://devstack.vwgroup.com/jira/browse/CPPDEV-473) -
- Codec: serialized and deserialized offsets of structures in array elements are not evaluated right
-
-
-
-> _**Important note for users updating their downstream projects to this version:**_
->
-> Some of the implementation details of component _Result_ had to be made public and are part of the
-> users code now. This results in a change of exported symbols in the delivered binary. To prevent
-> linker errors due to missing symbols recompiling and relinking against the a\_util 5.8.0 is
-> necessary.
-
-
-#### Changes
-- [CPPDEV-125](https://devstack.vwgroup.com/jira/browse/CPPDEV-125) -
- Provide component `a_util::result` header-only and deploy as single library
- - Starting from this release, the _Result_ component can be built and deployed as own header-only
- package. To require the package, conan reference `a_util_result/5.8.0@fep/stable` can be used.
- Changes to `find_package(a_util ...)` calls are not required.
-- [CPPDEV-175](https://devstack.vwgroup.com/jira/browse/CPPDEV-175) -
- [memory] Add support for `std::make_unique()` for pre C\+\+14 compilers
- - This introduces backport implementations `a_util::memory::make_unique()`
-- [CPPDEV-188](https://devstack.vwgroup.com/jira/browse/CPPDEV-188) -
- [build] Use native GTest and CMake functionality
-- [CPPDEV-191](https://devstack.vwgroup.com/jira/browse/CPPDEV-191) -
- [filesystem] Compare content of two files
- - This introduces new functions `a_util::filesystem::compareFiles()`
-- [CPPDEV-196](https://devstack.vwgroup.com/jira/browse/CPPDEV-196) -
- Use user "fep" instead of "aev25" in package references of the conan recipes
- - Starting from this release, a_util packages can be required with the conan reference
- `a_util/@fep/`, e.g. `a_util/5.8.0@fep/stable`.
-- [CPPDEV-199](https://devstack.vwgroup.com/jira/browse/CPPDEV-199) -
- Add _.clang-format_ file and apply ruleset on C\+\+ codebase
-- [CPPDEV-200](https://devstack.vwgroup.com/jira/browse/CPPDEV-200) -
- Add preprocessor component to a_util library
- - This adds the new component `a_util::preprocessor` for basic preprocessor functionality
-- [CPPDEV-205](https://devstack.vwgroup.com/jira/browse/CPPDEV-205) -
- [build] Provide packages for missing new profiles
-- [CPPDEV-206](https://devstack.vwgroup.com/jira/browse/CPPDEV-206) -
- [build] Define and apply whitespace settings in _.gitattributes_ file
-- [CPPDEV-208](https://devstack.vwgroup.com/jira/browse/CPPDEV-208) -
- [build] Generate API documentation using CoRTEXDocumentationHelper with doxygen
-- [CPPDEV-219](https://devstack.vwgroup.com/jira/browse/CPPDEV-219) -
- [build] License information of dependencies must be part of the package
-- [CPPDEV-300](https://devstack.vwgroup.com/jira/browse/CPPDEV-300) -
- [documentation] Provide easier access and better overview for API documentation
-
-
-#### Fixes
-- [CPPDEV-122](https://devstack.vwgroup.com/jira/browse/CPPDEV-122) -
- [variant] Copy Constructor does not correctly copy array values
-- [CPPDEV-174](https://devstack.vwgroup.com/jira/browse/CPPDEV-174) -
- Product name in wiki does not match delivery
-- [CPPDEV-181](https://devstack.vwgroup.com/jira/browse/CPPDEV-181) -
- [cmake] Redundant include directories and link libraries defined by targets
-- [CPPDEV-204](https://devstack.vwgroup.com/jira/browse/CPPDEV-204) -
- [result] Functional test "result_type_from_lib_test" runs the wrong executable
-- [CPPDEV-207](https://devstack.vwgroup.com/jira/browse/CPPDEV-207) -
- [build] Missing includes for VS2019 vc142
-- [CPPDEV-209](https://devstack.vwgroup.com/jira/browse/CPPDEV-209) -
- [filesystem] `a_util::filesystem::Path::makeRelative()` fails for Root
-- [CPPDEV-211](https://devstack.vwgroup.com/jira/browse/CPPDEV-211) -
- [build] Conan recipes not compatible with conan versions \>1.16.2
-- [CPPDEV-212](https://devstack.vwgroup.com/jira/browse/CPPDEV-212) -
- [result] Exported CMake config does not work for either 32 bit or 64 bit architectures
-- [CPPDEV-215](https://devstack.vwgroup.com/jira/browse/CPPDEV-215) -
- [build] Packaged CMake target 'a\_util' not part of export set
-
-
-
-> _**Important note for users updating to this version:**_
->
-> If you encounter any link errors due to unresolved symbols or any build errors due to missing
-> or unknown types, please consult the documentation of the types and functions in question about
-> the correct components to link and headers to include.
->
-> Those errors may be raised due to fixes and clean up of includes and linked libraries, but will
-> not break any other existing code.
-
-
-#### Changes
-- [CPPDEV-76](https://devstack.vwgroup.com/jira/browse/CPPDEV-76) -
- [filesystem] Provide means to convert absolute to relative paths and vice versa
-- [CPPDEV-93](https://devstack.vwgroup.com/jira/browse/CPPDEV-93) -
- [system] Get path to executable in currently running process
-- [CPPDEV-124](https://devstack.vwgroup.com/jira/browse/CPPDEV-124) -
- [filesystem] Appending arbitrary strings to basenames of paths
-- [CPPDEV-138](https://devstack.vwgroup.com/jira/browse/CPPDEV-138) -
- [filesystem] `operator<<` required for `a_util::filesystem::Path`
-- [CPPDEV-161](https://devstack.vwgroup.com/jira/browse/CPPDEV-161) -
- [build] Generate documentation using conan
-- [CPPDEV-176](https://devstack.vwgroup.com/jira/browse/CPPDEV-176) -
- [build] Use the newly defined profiles as base for the delivery packages
-- [CPPDEV-182](https://devstack.vwgroup.com/jira/browse/CPPDEV-182) -
- [build] All public header files need to be self contained
-- [CPPDEV-183](https://devstack.vwgroup.com/jira/browse/CPPDEV-183) -
- [documentation] Provide thorough documentation for the public API
-
-
-
-
-
-#### Changes
-- [CPPDEV-163](https://devstack.vwgroup.com/jira/browse/CPPDEV-163) -
- Extend Jenkinsfile for cross platform build of QNX target on Windows host
-
-
-#### Fixes
-- [CPPDEV-105](https://devstack.vwgroup.com/jira/browse/CPPDEV-105) -
- [Result] Warning "unreferenced formal parameter" arises when including result\_type\_impl.h
-- [CPPDEV-157](https://devstack.vwgroup.com/jira/browse/CPPDEV-157) -
- [BuildSystem] Language standard C\+\+11 is not propagated
-- [CPPDEV-168](https://devstack.vwgroup.com/jira/browse/CPPDEV-168) -
- [Result] Macros cannot be used with a closing semicolon without compiler warning
-- [CPPDEV-169](https://devstack.vwgroup.com/jira/browse/CPPDEV-169) -
- Function findNode of dom.h raises `-Werror=comment` warning on gcc
-
-
-
-
-
-#### Changes
-- [CPPDEV-119](https://devstack.vwgroup.com/jira/browse/CPPDEV-119) - Porting to SCALEXIO QNX
-- [CPPDEV-121](https://devstack.vwgroup.com/jira/browse/CPPDEV-121) - Remove C\+\+11 compatibility code
- - **Breaking change:** Compilers without C\+\+11 support are not supported anymore. Please check
- the supported compiler section in the documentation.
-
-#### Tasks
-- [CPPDEV-123](https://devstack.vwgroup.com/jira/browse/CPPDEV-123) -
- Include the Open Source Disclaimer to the package
-- [CPPDEV-131](https://devstack.vwgroup.com/jira/browse/CPPDEV-131) -
- Add install complete reference files
-
-
-#### Fixes
-- [CPPDEV-126](https://devstack.vwgroup.com/jira/browse/CPPDEV-126) -
- Use of plain signature of `target_link_libraries` on test targets leads to CMake error during
- configuration
-- [CPPDEV-129](https://devstack.vwgroup.com/jira/browse/CPPDEV-129) -
- [Changelog] "Known Issues" use the wrong query
-- [CPPDEV-133](https://devstack.vwgroup.com/jira/browse/CPPDEV-133) -
- Usage of gtest and gtest_main instead of `GTest::GTest` and `GTest::Main` as link libraries leads
- to linker errors
-
-
-
-
-
-#### Changes
-- [CPPDEV-115](https://devstack.vwgroup.com/jira/browse/CPPDEV-115) -
- [common] Remove ADPL and add MPL 2.0 License
- - since the ADPL license is NOT compatible with the terms and conditions of the GPLv3 we will now
- distribute the A Util library under the common MPL 2.0 (Mozilla Public License 2.0). This
- will allow to reuse the library under GPLv3.
-
-
-
-
-
-#### Changes
-- [CPPDEV-94](https://devstack.vwgroup.com/jira/browse/CPPDEV-94) -
- [parser] Add basic functionality to parse comma separated value (CSV) files
- - New component `a_util::parser` added with initial implementation to read comma separated value
- (\*.csv) files
- - **Usage:**
- - `find_package(a_util COMPONENTS csv_reader)` includes the csv reader into the current project
- - `target_link_libraries(myProject a_util_csv_reader)` might be used to link against the
- library
- - \#include "a_util/parser.h" includes the parser API into your current source file
-- [CPPDEV-103](https://devstack.vwgroup.com/jira/browse/CPPDEV-103) -
- [process] Add a component for process control
- - New component `a_util::process` added with initial implementations to run executables within a
- new process as well as retrieve the current process id
- - **Usage:**
- - `find_package(a_util COMPONENTS process)` includes the process component into the current
- project
- - `target_link_libraries(myProject a_util_process)` might be used to link against the
- library
- - \#include "a_util/process.h" includes the process API into your current source file
-- [CPPDEV-108][] -
- [process] Add reading and writing environment variables to the process
-- [CPPDEV-109](https://devstack.vwgroup.com/jira/browse/CPPDEV-109) -
- Changelog must provide more and better readable information
-
-
-#### Fixes
-- [CPPDEV-99](https://devstack.vwgroup.com/jira/browse/CPPDEV-99) -
- Make odautil compiles out of the box
-- [CPPDEV-101](https://devstack.vwgroup.com/jira/browse/CPPDEV-101) -
- [CMAKE] Could not call `find_package(a_util COMPONENTS ...)` more than one time
- - **Important note:** This encourages the usage of CMake package components to include the wanted
- a\_util components into projects. So instead of writing `find_package(a_util_strings)` we
- encourage you to write `find_package(a_util COMPONENTS strings)`
-
-
-
-
-
-#### Changes
-- [CPPDEV-3](https://devstack.vwgroup.com/jira/browse/CPPDEV-3) -
- Add Solution for old cCommandLine (AUL-69)
- - [Clara](https://github.com/catchorg/Clara/tree/v1.1.2)
- v1.1.2 was added as 3rdparty command line tool (C\+\+11 and above required)
- - **Usage:** After a successful `find_package(a_util)` consuming projects may first call
- `find_package(Clara)` followed by a `target_link_libraries(myLibrary Clara)`.
- Afterwards, Clara can be used as documented on its
- [project page](https://github.com/catchorg/Clara/tree/v1.1.2)
-- [CPPDEV-77](https://devstack.vwgroup.com/jira/browse/CPPDEV-77) -
- [DateTime] Timestamps must be generated with reference to Julian Time or Unix Time
- - `enum TimeStampReference` may be used to choose the wanted behavior in methods `DateTime::set`
- and `DateTime::toTimestamp`
-- [CPPDEV-95](https://devstack.vwgroup.com/jira/browse/CPPDEV-95) -
- Use googletest functionality provided by CMake command `find_package(GTest)`
-- [CPPDEV-98](https://devstack.vwgroup.com/jira/browse/CPPDEV-98) -
- Add changelog file and initially start documenting changes for version 5.2.0
-
-
-#### Fixes
-- [CPPDEV-81](https://devstack.vwgroup.com/jira/browse/CPPDEV-81) -
- `Semaphore::wait_for` loops forever if timeout is too big
-- [CPPDEV-90](https://devstack.vwgroup.com/jira/browse/CPPDEV-90) -
- [DateTime] Scoped enums and `std::chrono` don't compile with pre-C\+\+11 gcc compilers
-- [CPPDEV-97](https://devstack.vwgroup.com/jira/browse/CPPDEV-97) -
- [base] CMake `configure_file()` must not generate config.h into source tree
-
-
-
-
-
-#### Changes
-- [CPPDEV-61](https://devstack.vwgroup.com/jira/browse/CPPDEV-61) -
- [Result] Add debug helper for Visual Studio 2012\+ (.natvis file) (AUL-65)
-- [CPPDEV-68](https://devstack.vwgroup.com/jira/browse/CPPDEV-68) -
- Remove googletest as 3rdparty dependency (AUL-68)
-- [CPPDEV-72](https://devstack.vwgroup.com/jira/browse/CPPDEV-72) -
- Add ADPL License Info to all artefact (Header, CPPs)
-- [CPPDEV-73](https://devstack.vwgroup.com/jira/browse/CPPDEV-73) -
- Automatically set C\+\+ standard to the platform maximum
-- [CPPDEV-75](https://devstack.vwgroup.com/jira/browse/CPPDEV-75) -
- Add try\_wait method to `a_util::concurrency::semaphore` class
-
-
-#### Fixes
-- [CPPDEV-10](https://devstack.vwgroup.com/jira/browse/CPPDEV-10) -
- Thread detach() test can fail due to race condition (AUL-67)
-- [CPPDEV-66](https://devstack.vwgroup.com/jira/browse/CPPDEV-66) -
- StackPtr Test crashes on U1604\_x64\_gcc54 (AUL-66)
-
-
-
-
-
-#### Changes
-- [CPPDEV-12](https://devstack.vwgroup.com/jira/browse/CPPDEV-12) -
- Fix Timer by rewriting Thread (AUL-63)
-- [CPPDEV-14](https://devstack.vwgroup.com/jira/browse/CPPDEV-14) -
- [XML] Provide functionality to check for empty DOM and DOMElement objects (AUL-61)
-- [CPPDEV-15](https://devstack.vwgroup.com/jira/browse/CPPDEV-15) -
- Split API and implementation of header only libraries into separate files (AUL-60)
-- [CPPDEV-16](https://devstack.vwgroup.com/jira/browse/CPPDEV-16) -
- Apply style guidelines (AUL-57)
-- [CPPDEV-17](https://devstack.vwgroup.com/jira/browse/CPPDEV-17) -
- [Base] Provide static_assert() backport (AUL-56)
-- [CPPDEV-20](https://devstack.vwgroup.com/jira/browse/CPPDEV-20) -
- Test result output path must be configurable in integrated build scenario (AUL-53)
-- [CPPDEV-21](https://devstack.vwgroup.com/jira/browse/CPPDEV-21) -
- Adapt API to updated style guidelines (AUL-51)
-- [CPPDEV-22](https://devstack.vwgroup.com/jira/browse/CPPDEV-22) -
- Improve DOM FindNodes performance (AUL-50)
-- [CPPDEV-26](https://devstack.vwgroup.com/jira/browse/CPPDEV-26) -
- Create a_util_base component (AUL-46)
-- [CPPDEV-29](https://devstack.vwgroup.com/jira/browse/CPPDEV-29) -
- Provide interface target pulling in all AUL components at once (AUL-42)
-- [CPPDEV-32](https://devstack.vwgroup.com/jira/browse/CPPDEV-32) -
- Provide mechanism to generate GUIDs (AUL-38)
-- [CPPDEV-33](https://devstack.vwgroup.com/jira/browse/CPPDEV-33) -
- Provide support for high resolution timing on all platforms (AUL-37)
-- [CPPDEV-34](https://devstack.vwgroup.com/jira/browse/CPPDEV-34) -
- Provide access to hostname (AUL-36)
-- [CPPDEV-35](https://devstack.vwgroup.com/jira/browse/CPPDEV-35) -
- Disallow deleted CCTORS and assignment operators in concurrency fallback classes (AUL-35)
-- [CPPDEV-37](https://devstack.vwgroup.com/jira/browse/CPPDEV-37) -
- [Base] Implement nullptr fallback for compilers not providing an implementation (AUL-33)
-- [CPPDEV-38](https://devstack.vwgroup.com/jira/browse/CPPDEV-38) -
- Add basic semaphore implementation (AUL-32)
-- [CPPDEV-40](https://devstack.vwgroup.com/jira/browse/CPPDEV-40) -
- Add missing string functionality (AUL-30)
-- [CPPDEV-41](https://devstack.vwgroup.com/jira/browse/CPPDEV-41) -
- [Result] Port tResult and error handling mechanism from a_util 4 (AUL-29)
-- [CPPDEV-42](https://devstack.vwgroup.com/jira/browse/CPPDEV-42) -
- `a_util::memory::MemoryBuffer` must support wrapping non-owned memory (AUL-28)
-- [CPPDEV-43](https://devstack.vwgroup.com/jira/browse/CPPDEV-43) -
- `a_util::filesystem` has to have a rename or move function (AUL-27)
-- [CPPDEV-44](https://devstack.vwgroup.com/jira/browse/CPPDEV-44) -
- extend `a_util::memory` for a mem_zero (AUL-26)
-- [CPPDEV-45](https://devstack.vwgroup.com/jira/browse/CPPDEV-45) -
- Add copy functionality to `a_util::strings` (AUL-25)
-- [CPPDEV-46](https://devstack.vwgroup.com/jira/browse/CPPDEV-46) -
- [System] Provide periodic timer - {Redmine #38883} (AUL-24)
-- [CPPDEV-47](https://devstack.vwgroup.com/jira/browse/CPPDEV-47) -
- [System] Provide access to system API - {Redmine #37454} (AUL-22)
-- [CPPDEV-48](https://devstack.vwgroup.com/jira/browse/CPPDEV-48) -
- [Filesystem] Provide support for filesytem access - {Redmine #37451} (AUL-20)
-- [CPPDEV-49](https://devstack.vwgroup.com/jira/browse/CPPDEV-49) -
- [Chrono] Provide date and time functionality - {Redmine #37446} (AUL-19)
-- [CPPDEV-50](https://devstack.vwgroup.com/jira/browse/CPPDEV-50) -
- [Regex] Provide support for regular expressions - {Redmine #37432} (AUL-18)
-- [CPPDEV-51](https://devstack.vwgroup.com/jira/browse/CPPDEV-51) -
- [Logging] Provide infrastructure for application logging - {Redmine #37426} (AUL-17)
-- [CPPDEV-52](https://devstack.vwgroup.com/jira/browse/CPPDEV-52) -
- [Variant] Provide wrapper to store arbitrary data types - {Redmine #37424} (AUL-16)
-- [CPPDEV-53](https://devstack.vwgroup.com/jira/browse/CPPDEV-53) -
- [Strings] Provide extended functionality for `std::string` and C-style strings -
- {Redmine #37423} (AUL-15)
-- [CPPDEV-54](https://devstack.vwgroup.com/jira/browse/CPPDEV-54) -
- [XML] Implement XML API - {Redmine #37350} (AUL-13)
-- [CPPDEV-55](https://devstack.vwgroup.com/jira/browse/CPPDEV-55) -
- [cmake] Enable a_util_library to be usable as CMake package - {Redmine #37301} (AUL-12)
-- [CPPDEV-56](https://devstack.vwgroup.com/jira/browse/CPPDEV-56) -
- Provide solution for last system error (AUL-11)
-- [CPPDEV-57](https://devstack.vwgroup.com/jira/browse/CPPDEV-57) -
- [PortableTypes] Provide portable base types for all supported platforms -
- {Redmine #37352} (AUL-10)
-- [CPPDEV-58](https://devstack.vwgroup.com/jira/browse/CPPDEV-58) -
- Enable doxygen documentation (AUL-3)
-- [CPPDEV-62](https://devstack.vwgroup.com/jira/browse/CPPDEV-62) -
- [cmake] Naming convention of target libraries must reflect their platform dependence and build
- type - {Redmine #37994} (AUL-23)
-- [CPPDEV-63](https://devstack.vwgroup.com/jira/browse/CPPDEV-63) -
- [Memory] Provide support for handling raw memory - {Redmine #37452} (AUL-21)
-- [CPPDEV-64](https://devstack.vwgroup.com/jira/browse/CPPDEV-64) -
- [Memory] Provide smart pointer implementations for platforms not providing them -
- {Redmine #37353} (AUL-14)
-- [CPPDEV-65](https://devstack.vwgroup.com/jira/browse/CPPDEV-65) -
- [Concurrency] Provide threading and synchronization mechanisms - {Redmine #38652} (AUL-4)
-- [CPPDEV-70](https://devstack.vwgroup.com/jira/browse/CPPDEV-70) -
- Provide means to make canonical paths in `a_util::filesystem` (AUL-43)
-- [CPPDEV-71](https://devstack.vwgroup.com/jira/browse/CPPDEV-71) -
- Provide fallback for C\+\+11 type traits (AUL-41)
-
-
-#### Fixes
-- [CPPDEV-13](https://devstack.vwgroup.com/jira/browse/CPPDEV-13) -
- [Result] Error definitions must not pollute the global namespace (AUL-62)
-- [CPPDEV-18](https://devstack.vwgroup.com/jira/browse/CPPDEV-18) -
- System error test fails on Windows 7 / Visual Studio 2010 (AUL-55)
-- [CPPDEV-23](https://devstack.vwgroup.com/jira/browse/CPPDEV-23) -
- `concurrency::thread::detach` crashes on fallback platforms (AUL-49)
-- [CPPDEV-24](https://devstack.vwgroup.com/jira/browse/CPPDEV-24) -
- [Test] Overwrite `add_test()` macro instead of providing wrapper `add_util_test()` (AUL-48)
-- [CPPDEV-25](https://devstack.vwgroup.com/jira/browse/CPPDEV-25) -
- [Test] Fix disabled installation of googletest (AUL-47)
-- [CPPDEV-31](https://devstack.vwgroup.com/jira/browse/CPPDEV-31) -
- [Testing] Setting an alternative working directory (AUL-39)
-- [CPPDEV-36](https://devstack.vwgroup.com/jira/browse/CPPDEV-36) -
- [Testing] Remove link dependency to a_util_filesystem for test targets (AUL-34)
-- [CPPDEV-39](https://devstack.vwgroup.com/jira/browse/CPPDEV-39) -
- `a_util::variant::Variant` CCTOR doesn't properly copy strings (AUL-31)
-
-
-
-
-
-#### Changes
-- [CDDDL-116](https://devstack.vwgroup.com/jira/browse/CDDDL-116) -
- [Header2DDL] Types of hexadecimal values in enums must be interpreted as underlying type
-- [CDDDL-117](https://devstack.vwgroup.com/jira/browse/CDDDL-117) -
- [Header2DDL] Basic preprocessor functionality needs to be implemented
-- [CDDDL-118](https://devstack.vwgroup.com/jira/browse/CDDDL-118) -
- [Header2DDL] Basic arithmetic operation of constant integers must be implemented
-- [CDDDL-132](https://devstack.vwgroup.com/jira/browse/CDDDL-132) -
- Use user "fep" instead of "aev25" in package references of the conan recipes
-- [CDDDL-136](https://devstack.vwgroup.com/jira/browse/CDDDL-136) -
- [build] Define and apply whitespace settings in .gitattributes file
-- [CDDDL-140](https://devstack.vwgroup.com/jira/browse/CDDDL-140) -
- [build] Use native GTest and CMake functionality
-- [CDDDL-141](https://devstack.vwgroup.com/jira/browse/CDDDL-141) -
- [build] Generate API documentation using CoRTEXDocumentationHelper with doxygen
-- [CDDDL-142](https://devstack.vwgroup.com/jira/browse/CDDDL-142) -
- [build] Restructure files and folders in source tree compliant to common configuration management
-- [CDDDL-146](https://devstack.vwgroup.com/jira/browse/CDDDL-146) -
- Add .clang-format file and apply ruleset on C\+\+ codebase
-- [CDDDL-155](https://devstack.vwgroup.com/jira/browse/CDDDL-155) - [test] Use more fitting test macros
-
-
-#### Fixes
-- [CDDDL-60](https://devstack.vwgroup.com/jira/browse/CDDDL-60) -
- Make cdddl compiles out of the box
-- [CDDDL-97](https://devstack.vwgroup.com/jira/browse/CDDDL-97) -
- [ddlcontainer] Segmentation fault on linux during deleteAll()
-- [CDDDL-98](https://devstack.vwgroup.com/jira/browse/CDDDL-98) -
- [build] Mutual dependency between conan recipe and CMake build automation of
- 'list_used_licenses.md.in'
-- [CDDDL-126](https://devstack.vwgroup.com/jira/browse/CDDDL-126) -
- [ddl2header] Test fixture cTesterddlgeneratorCmdLine fails on platforms using gcc
-- [CDDDL-134](https://devstack.vwgroup.com/jira/browse/CDDDL-134) -
- [build] Unresolved symbols after making parts of a_util_result header-only
-- [CDDDL-138](https://devstack.vwgroup.com/jira/browse/CDDDL-138) -
- [build] Conan recipes not compatible with conan versions \>1.16.2
-- [CDDDL-139](https://devstack.vwgroup.com/jira/browse/CDDDL-139) -
- [ddl2header] Might crash with --struct command line option
-- [CDDDL-153](https://devstack.vwgroup.com/jira/browse/CDDDL-153) -
- [Mapping] Possible null pointer exception
-
-
-
-
-
-#### Changes
-- [CDDDL-123](https://devstack.vwgroup.com/jira/browse/CDDDL-123) -
- Use the newly defined profiles as base for the delivery packages
-
-
-#### Fixes
-- [CDDDL-126](https://devstack.vwgroup.com/jira/browse/CDDDL-126) -
- [build] Build errors after update to a_util 5.7.0
-
-
-
-
-
-#### Changes
-- [CDDDL-111](https://devstack.vwgroup.com/jira/browse/CDDDL-111) -
- Extend Jenkinsfile for cross platform build of QNX target on Windows host
-
-
-#### Fixes
-- [CDDDL-119](https://devstack.vwgroup.com/jira/browse/CDDDL-119) -
- Missing semicolons when using a_util `_MAKE_ERROR` lead to error during compile time
-
-
-
-
-
-#### Fixes
-- [CDDDL-77](https://devstack.vwgroup.com/jira/browse/CDDDL-77) -
- DDLResolver uses current date and time in generated description
-
-
-
-
-Shows the upcoming features.
-
-
-[SF.12]: https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rs-incform
-[Keep a Changelog]: https://keepachangelog.com
-[Semantic Versioning]: https://semver.org
-[CONAN_V2_MODE]: https://docs.conan.io/en/1.48/reference/conan_v2_mode.html#conan-v2-mode
-[clipp]: https://github.com/muellan/clipp
-[clara]: https://github.com/catchorg/Clara
-[argtable3]: https://github.com/argtable/argtable3
diff --git a/doc/extern/dev_essential.html b/doc/extern/dev_essential.html
deleted file mode 100644
index 4301ead..0000000
--- a/doc/extern/dev_essential.html
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/doc/extern/howto_doxygen.dox b/doc/extern/howto_doxygen.dox
deleted file mode 100644
index 1434500..0000000
--- a/doc/extern/howto_doxygen.dox
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * @file howto_doxygen.dox
- * @copyright
- * @verbatim
-Copyright @ 2021 VW Group. All rights reserved.
-
-This Source Code Form is subject to the terms of the Mozilla
-Public License, v. 2.0. If a copy of the MPL was not distributed
-with this file, You can obtain one at https://mozilla.org/MPL/2.0/.
-@endverbatim
- *
- * @page page_howto_doxygen Doxygen configuration
- *
- * Below is the configuration for Doxygen that was used to
- * generate this documentation.
- *
- * @include doc/extern/Doxyfile
- */
diff --git a/doc/extern/a_util.md b/doc/html/a_util.md
similarity index 91%
rename from doc/extern/a_util.md
rename to doc/html/a_util.md
index ec2cf17..d40ec34 100644
--- a/doc/extern/a_util.md
+++ b/doc/html/a_util.md
@@ -1,5 +1,5 @@
-
# DDL Decoder/Codec
-
-
-
-- [DDL Decoder/Codec](#ddl-decodercodec)
- - [Accessing Data with a Decoder/Codec](#accessing-data-with-a-decodercodec)
- - [Decoding](#decoding)
- - [Encoding](#encoding)
- - [Selecting the Data Representation](#selecting-the-data-representation)
- - [Inspection](#inspection)
- - [Transformation](#transformation)
-
-
-
-
## Accessing Data with a Decoder/Codec
Let's take a look at a basic structure:
-````xml
+```xml
@@ -45,14 +30,13 @@ Let's take a look at a basic structure:
-````
+```
-
## Decoding
Read access is handled with the ddl::codec::StaticDecoder or ddl::codec::Decoder class:
-````cpp
+```cpp
tFloat64 readData(const void* const_data, size_t data_size)
{
// this should of course be cached (as a member etc.)
@@ -77,16 +61,15 @@ tFloat64 readData(const void* const_data, size_t data_size)
return value;
}
-````
+```
The example shows the usage of the ddl::codec::Decoder class with which handling of dynamic elements is possible (see also dynamic arrays within structs). A more efficient decoding initialization is provided via ddl::codec::StaticDecoder, but it allows only access to the static elements.
-
## Encoding
Write access is handled with the ddl::codec::Codec or ddl::codec::StaticCodec class:
-````cpp
+```cpp
void writeData(void* data, size_t data_size, tFloat64 value)
{
// this should of course be cached (as a member etc.)
@@ -102,27 +85,25 @@ void writeData(void* data, size_t data_size, tFloat64 value)
// or codec index based for fast access
codec.setElementValue(codec_index_for_fFloat32, value);
}
-````
+```
The example shows the usage of the ddl::codec::Coder class with which handling of dynamic elements is possible (see also dynamic arrays within structs). A more efficient coding initialization is provided via ddl::codec::StaticCodec, but it allows only access to the static elements.
-
## Selecting the Data Representation
By default decoders/codecs are created for the deserialized representation.
To create them for the serialized representation pass the correct parameters to the "make..." methods.
-````cpp
+```cpp
auto decoder = factory.makeDecoderFor(const_data, data_size,
DataRepresentation::serialized);
-````
+```
-
## Inspection
You can inspect the struct handled by a decoder/codec with the help of forEachLeafElement and ddl::codec::StaticDecoder::getElements:
-````cpp
+```cpp
void dumpStructElements(const ddl::codec::StaticDecoder& decoder)
{
forEachLeafElement(decoder.getElements(),
@@ -131,14 +112,13 @@ void dumpStructElements(const ddl::codec::StaticDecoder& decoder)
std::cout << element.getFullName();
});
}
-````
+```
-
## Transformation
Converting between the representations can be done with ddl::codec::transform:
-````cpp
+```cpp
a_util::memory::MemoryBuffer getSerializedBuffer(const ddl::codec::Decoder& decoder)
{
const auto serialized_size = decoder.getStaticBufferSize(ddl::DataRepresentation::serialized);
@@ -148,5 +128,4 @@ a_util::memory::MemoryBuffer getSerializedBuffer(const ddl::codec::Decoder& deco
ddl::codec::transform(decoder, codec);
return buffer;
}
-````
-
+```
diff --git a/doc/extern/ddl/dd.md b/doc/html/ddl/dd.md
similarity index 75%
rename from doc/extern/ddl/dd.md
rename to doc/html/ddl/dd.md
index 6e939d0..6947168 100644
--- a/doc/extern/ddl/dd.md
+++ b/doc/html/ddl/dd.md
@@ -1,56 +1,50 @@
-
# DataDefinition and its datamodel
-
-
-- [DataDefinition and its datamodel](#datadefinition-and-its-datamodel)
- - [Introduction](#introduction)
- - [The DDL Library](#the-ddl-library)
-
-
-
-
## Introduction
-The DDL (Data Definition Language) was introduced with the software ADTF
-(Automotive Data- and Time-Triggered Framework) developed and
-deployed by AUDI AG/VW Group since many years.
+The DDL (Data Definition Language) was introduced with the software ADTF
+(Automotive Data- and Time-Triggered Framework) developed and
+deployed by AUDI AG/VW Group since many years.
-The intension was to have a common dynamic description for byte positions
+The intension was to have a common dynamic description for byte positions
and value types for any structured data and memory blocks.
-Since the software was designed for C++ applications the DDL is similar to it and
-uses there data types by default.
+Since the software was designed for C++ applications the DDL is similar to it and
+uses there data types by default.
### Example
*DDL description for data of following struct:*
- struct MyData // => usually aligned size to 4 in c++ because value_3 is aligned to 4
- {
- uint8_t value_1; // => usually aligned to 1 in c++
- uint16_t value_2; // => usually aligned to 2 in c++
- uint8_t value_3; // => usually aligned to 1 in c++
- uint32_t value_3; // => usually aligned to 4 in c++
- };
+```cpp
+struct MyData // => usually aligned size to 4 in c++ because value_3 is aligned to 4
+{
+ uint8_t value_1; // => usually aligned to 1 in c++
+ uint16_t value_2; // => usually aligned to 2 in c++
+ uint8_t value_3; // => usually aligned to 1 in c++
+ uint32_t value_3; // => usually aligned to 4 in c++
+};
+```
*Description in DDL 4.1 as is (in XML):*
-* use of default alignments and byteorders
-* use of default byteorder "little endianess"
-````xml
+
+- use of default alignments and byteorders
+- use of default byteorder "little endianess"
+
+```xml
-
+
@@ -63,7 +57,6 @@ uses there data types by default.
-````
@@ -113,8 +106,8 @@ uses there data types by default.
uint32_t value_4
+```
-
## The DDL Library
To facilitate the handling of DDL hierarchies there is a datamodel provided (ddl::dd::datamodel::DataDefinition).
@@ -130,16 +123,16 @@ There are 3 ways to create a valid DataDefinition.
#### Create a file or read it
-* See ddl::DDFile
+- See ddl::DDFile
#### Create a string or read it
-* See ddl::DDString
+- See ddl::DDString
#### Create a DataDefinition via DDStructure or "type reflection"
-* See ddl::DDStructure
-* See ddl::DDStructureGenerator
+- See ddl::DDStructure
+- See ddl::DDStructureGenerator
### Binary model classes
@@ -155,6 +148,3 @@ There are 3 ways to create a valid DataDefinition.
|``|ddl::dd::StructType|
|``|ddl::dd::StreamMetaType|
|``|ddl::dd::Stream|
-
-
-
diff --git a/doc/extern/ddl/ddl_specification.md b/doc/html/ddl/ddl_specification.md
similarity index 93%
rename from doc/extern/ddl/ddl_specification.md
rename to doc/html/ddl/ddl_specification.md
index 7e52a18..1627a7d 100644
--- a/doc/extern/ddl/ddl_specification.md
+++ b/doc/html/ddl/ddl_specification.md
@@ -1,70 +1,49 @@
-
# DDL - XML Datamodel specification
-
-
-- [DDL - XML Datamodel specification](#ddl---xml-datamodel-specification)
- - [Versioning](#versioning)
-- [Specification](#specification)
- - [Description of General Datatypes in this specification](#description-of-general-datatypes-in-this-specification)
- - [header](#header)
- - [units](#units)
- - [datatypes](#datatypes)
- - [enums](#enums)
- - [structs](#structs)
- - [dynamic arrays](#dynamic-arrays)
- - [streammetatypes](#streammetatypes)
- - [streams](#streams)
-
-
-
-
With DDL (Data Definition Language) a xml datamodel was introduced to ***describe*** the semantics of any data that is exchanged between arbitrary software components. The term ***description*** is used for a string or a file containing this xml datamodel.
*The exchange of the data may be:*
-* sending data to or receiving data from a device
-* sending data to or receiving data from another software component
-* data stored within a binary file format
-
+- sending data to or receiving data from a device
+- sending data to or receiving data from another software component
+- data stored within a binary file format
+
The data must have one common characteristic to describe them with the help of DDL: Each data are is a contiguously byte array within memory.
-
## Versioning
-The DDL was introduced with version 1.0+, current version is 4.1.
+The DDL was introduced with version 1.0+, current version is 4.1.
### DDL Versions
An overview of changes in specification between the language versions is given below.
-For detailed information the changes and language features are explained in chapter Specification.
+For detailed information the changes and language features are explained in chapter specification.
| DDL Version | Description of changes |
| ----------- | ---------------------- |
| 1.0 | first concept DDL version, never released |
-| 1.0+ (1.01) | first released DDL version - add *alignment* to *struct* - change optional *bitpos* default from "1" to "0" |
+| 1.0+ (1.01) | first released DDL version - add *alignment* to *struct* - change optional *bitpos* default from "1" to "0" |
| 1.02 | XML specification type changes: change some tags from *CHAR* to *STRING* and *STRING* to *CLASS* |
-| 2.0 | - introduce support for dynamic arrays - add constant *value* attribute for *element* |
-| 3.0 | - change *alignment* behaviour for *struct* (now it influences the size of the struct in memory) - add *ddl_version* attribute for *struct* - introduce *min*, *max*, *default*, *scale*, *offset* to *element* |
-| 4.0 | - rearange the *element* tag with new sub-tag *serialized* *deserialized* - change *unit* in *element* from mandatory to optional - introduce *stream_meta_types* |
+| 2.0 | - introduce support for dynamic arrays - add constant *value* attribute for *element* |
+| 3.0 | - change *alignment* behaviour for *struct* (now it influences the size of the struct in memory)- add *ddl_version* attribute for *struct*- introduce *min*, *max*, *default*, *scale*, *offset* to *element* |
+| 4.0 | - rearange the *element* tag with new sub-tag *serialized* *deserialized*- change *unit* in *element* from mandatory to optional- introduce *stream_meta_types* |
| 4.1 | - add std types to the predefined datatypes ("bool", "uint8_t", "int8_t", ... "float", "double") |
-
# Specification
The newer versions of the DDL Definition File Format are also specified by a XSD specification file.
See the XSD specification for further details:
+
- [DDL 3 XSD specification](specification/ddl3.xsd)
- [DDL 4 XSD specification](specification/ddl4.xsd)
-
## Description of General Datatypes in this specification
There are several types that are used in attributes and as tag data in the
@@ -73,8 +52,8 @@ and/or their formatting.
| Type | Allowed values |
| ---- | -------------- |
-|CHAR|single character of [a-z][A-Z][0-9] _.-+/|
-|STRING|characters of [a-z][A-Z][0-9] _.-+/|
+|CHAR|single character of `[a-z][A-Z][0-9] _.-+/`|
+|STRING|characters of `[a-z][A-Z][0-9] _.-+/`|
|TEXT|all visible ASCII characters|
|UINT|unsigned integer values|
|INT|signed integer values|
@@ -84,12 +63,12 @@ and/or their formatting.
|ENUM|a predefined value from the description of the attribute|
|DDLVERSION|Version of 1.0/1.01/1.0+/1.02/2.0/3.0/4.0/4.1|
-
## header
The header section contains meta information about the document and version
information. Example:
-````xml
+
+```xml
4.1dev_essential team
@@ -97,7 +76,7 @@ information. Example:
DDL Description File
-````
+```
| Tag | Type | Description |
| --- | ---- | ----------- |
@@ -107,18 +86,17 @@ information. Example:
|date_change|DATE|Last modification date|
|description|TEXT|Short description|
-
All previously mentioned header tags are *mandatory*.
Additional information can be added by using the `ext_declaration` tag.
Example:
-````xml
+```xml
...
-````
+```
@@ -129,7 +107,6 @@ Example:
-
## units
The definition of units will be divided in SI-base units and own units. The
@@ -147,7 +124,8 @@ SI-based units are the following ones:
Units are defined within the tags `` and ``.
Example:
-````xml
+
+```xml
@@ -181,8 +159,7 @@ Example:
-````
-
+```
### baseunits
@@ -197,7 +174,6 @@ The baseunit needs the following mandatory attributes:
|symbol|STRING|mandatory| | Symbol of the base unit e.g. "m" |
|description|TEXT|optional| "" |Description of the represented base unit|
-
### prefixes
Prefixes between 10 power(-24) and 10 power(24) are predefined.
@@ -211,8 +187,8 @@ Every `` tag needs the following mandatory attributes:
|symbol|STRING|mandatory|Represents a short symbol e.g. k|changed to STRING from CHAR in DDL1.02|
|power|INT|mandatory|Defines the power of the prefix| |
+### custom units
-### units
A self defined unit is specified within the `` and ``
tag and needs the following mandatory attributes:
@@ -220,7 +196,6 @@ tag and needs the following mandatory attributes:
| ---- | ----- | -------- | ----------- |
|name|STRING|mandatory|Name of the new unit|
-
The `` tags needs the following mandatory sub-tags:
| Name | Value | Required | Description |
@@ -229,7 +204,6 @@ The `` tags needs the following mandatory sub-tags:
|denominator|STRING|mandatory|containing pi/PI or a floating-point value. The value '0' is not defined. (Denominator of the new unit related to the baseunits)|
|offset|FLOAT|mandatory|Offset to the baseunits|
-
The new unit is able to use several base units. To represent this, it is
possible to specify the related base units by the `` tag. This
tag uses the following mandatory attributes:
@@ -240,13 +214,13 @@ tag uses the following mandatory attributes:
|power|INT|Power of the new unit related to the base one| |
|prefix|CLASS|Reference to the prefix to use|changed to CLASS from STRING in DDL1.02|
-
### Calculation of new unit
The newly defined unit relates to the SI base units like this:
+```plain
newUnit = offset + (numerator / denominator) * Product (prefix(n) * baseUnit(n) ^ power(n))
-
+```
### Predefined units
@@ -291,13 +265,12 @@ The following prefixes are provided as default:
|zepto|-21|z|
|yocto|-24|y|
-
## datatypes
This section describes the primitive data types which can be used within the
struct elements. Example:
-````xml
+```xml
@@ -305,7 +278,7 @@ struct elements. Example:
...
-````
+```
@@ -319,8 +292,7 @@ struct elements. Example:
|min|STRING|optional|Minimum value of the data type| introduced in DDL 3.0| |
|max|STRING|optional|Maximum value of the data type| introduced in DDL 3.0| |
-
-### The following predefined data types are automatically used within DDL:
+### The following predefined data types are automatically used within DDL
The following predefined data types are automatically used within DDL. Since DDL 4.1 also the standard data type names can be used.
@@ -339,13 +311,12 @@ The following predefined data types are automatically used within DDL. Since DDL
|tFloat32|float|IEEE Float|32|
|tFloat64|double|IEEE Float|64|
-
## enums
This section describes the enum type which can be used within the struct
elements. Example:
-````xml
+```xml
@@ -357,7 +328,7 @@ elements. Example:
-````
+```
@@ -368,7 +339,6 @@ Enum Attributes
|name|STRING|mandatory|Name of the enum|
|type|CLASS|mandatory|Referenced data type of the enum|
-
Enum Element Attributes
| Name | Type | Required | Description |
@@ -376,8 +346,8 @@ Enum Element Attributes
|name|STRING|mandatory|Name of the element|
|value|INT or UINT|mandatory|Value of the element|
-
**Remarks:**
+
- An enum is also valid without enum elements.
@@ -386,7 +356,7 @@ Enum Element Attributes
This section describes constants which are implemented using the enum type. Example:
-````xml
+```xml
@@ -400,16 +370,15 @@ This section describes constants which are implemented using the enum type. Exam
-````
+```
-
## structs
The definition of structs allows to build complex data types. Example:
-````xml
+```xml
@@ -429,7 +398,7 @@ The definition of structs allows to build complex data types. Example:
-````
+```
The tag `` uses the following attributes:
@@ -441,12 +410,13 @@ The tag `` uses the following attributes:
|alignment|ENUM of 1/2/4/8/16/32/64 (default is "1")|optional|Alignment value to get the whole packing of the complex data type which is important to get the calculated size of the structure (relevant for serialization)| From version 3.0 on, the alignment influences the size of the struct. The size will always be a multiple of the alignment.|introduced in DDL 1.0+|
|ddlversion|STRING|optional|The version of the size calculation scheme, see alignment. If not specified the version from the containing definition will be used.| | |
-
**Remarks:**
+
- If the alignment tag is not set within version 4.1, the alignment will be set to 1 by default!
The tag `` uses the following attributes:
+```xml
Name
Type
Required
@@ -611,9 +581,11 @@ The tag `` uses the following attributes:
-
+```
The tag `` uses the following attributes:
+
+```xml
Name
Type
Required
@@ -641,7 +613,7 @@ The tag `` uses the following attributes:
introduced within the `` tag
-
+```
The tag `` uses the following attributes:
@@ -650,6 +622,7 @@ The tag `` uses the following attributes:
|alignment|Enum of 0/1/2/4/8/16/32/64|mandatory|Defines the alignment of the element in the deserialized representation.|
**Remarks:**
+
- The number of structs defined in a DDL description file is not limited.
- If the name of another struct is used as type for an element, a hierarchical structure is created.
@@ -667,7 +640,7 @@ of the alignment value. The considered memory address is always relative to the
struct (memory position 0).
As an example we assume having the following struct definition:
-````xml
+```xml
@@ -678,7 +651,7 @@ As an example we assume having the following struct definition:
-````
+```
In this case, ui8Array will be placed at address 0. Because of the order of the element tags,
ui32Value has to be placed after ui8Array. The next memory position after ui8Array is 5. But
@@ -690,7 +663,7 @@ The alignment of a struct does not affect the alignment of its elements. A struc
determines the positioning of this struct inside of arrays.
Assuming we have the following struct:
-````xml
+```xml
@@ -701,19 +674,19 @@ Assuming we have the following struct:
-````
+```
Lets now assume we have another struct `tOuterStruct`, that contains an array element and the
element's type is the struct `tInnerStruct`:
-````xml
+```xml
-````
+```
Inside the array, the array element's positions are influenced by the alignment of the type
(`tInnerStruct`). This means that the first array element is at position 0, in relation to the
@@ -736,26 +709,26 @@ in DDL now also influences the size of a struct defined in DDL (see new definiti
in DDL 3.0). This means that arrays and structs may now become bigger in DDL 3.0 as they were in
DDL 2.x. For example the struct
-````xml
+```xml
-````
+```
has the deserialized size of 1 byte in DDL 2.x and a deserialized size of 2 byte in DDL 3.0.
The struct
-````xml
+```xml
-````
+```
has a size of 5 bytes in DDL 2.x and a size of 6 Bytes in DDL 3.0.
This is due to the fact, that in 2.x the array looks like this:
@@ -768,7 +741,6 @@ This is due to the fact, that in 2.x the array looks like this:
|3|padding|
|4|aValue[2]|
-
resulting in a size of 5 bytes.
The padding elements are inserted, so that the *following* Element is correctly aligned.
In DDL 3.0 the `tFirstStruct` has already a padding alement attached to its end so that its
@@ -790,12 +762,10 @@ version from 2.x to 3.0, that you are creating new structs, that may not be comp
namesakes defined in DDL 2.x. Its better to use new names for the structs to differentiate
between the different versions.
-
### dynamic arrays
Detailed explanation of the dynamic array functionality.
-
Dynamic arrays were introduced in DDL 2.0.
**Attention:**
@@ -806,8 +776,8 @@ It is therefore recommended to use static arrays whenever possible.
To minimize the performance impact of dynamic arrays the user should adhere
to the following guidelines:
-- Always place dynamic data the end of a structure or structure hirarchy so
-all static data precede the dynamic data.
+
+- Always place dynamic data the end of a structure or structure hirarchy so all static data precede the dynamic data.
- Use the struct element directly preceding the dynamic array for array size.
- Use dynamic arrays of primitive data types instead of complex data types.
- Prefer flat data over deeply structured data.
@@ -816,12 +786,11 @@ all static data precede the dynamic data.
- Use default values bitpos.
- Use a bytepos that matches the position in memory when alignment=1.
-Dynamic Arrays are always a performance issue for the codecs. Address information
-of the elements are evaluated for the dynamic part each time a decoder/codec is initialized.
+Dynamic Arrays are always a performance issue for the codecs. Address information of the elements are evaluated for the dynamic part each time a decoder/codec is initialized.
-#### Fastest way to use dynamic arrays:
+#### Fastest way to use dynamic arrays
-````xml
+```xml
@@ -836,11 +805,11 @@ of the elements are evaluated for the dynamic part each time a decoder/codec is
-````
+```
#### When the dynamic data is not the last element the bytepos of the following elements must be -1
-````xml
+```xml
@@ -855,11 +824,11 @@ of the elements are evaluated for the dynamic part each time a decoder/codec is
-````
+```
-#### Dynamic array of complex data:
+#### Dynamic array of complex data
-````xml
+```xml
@@ -888,16 +857,14 @@ of the elements are evaluated for the dynamic part each time a decoder/codec is
-````
-
+```
-
## streammetatypes
Stream Meta Types are defined within the tags `` and ``.
Example:
-````xml
+```xml
@@ -913,7 +880,7 @@ Example:
-````
+```
The tag `` uses the following attributes:
@@ -930,21 +897,19 @@ The tag `` uses the following attributes:
|name|STRING|mandatory|The name of the property|
|type|STRING|mandatory|The type of the property|
-
## streams
-
-````xml
+```xml
-````
+```
Streams are defined within the tags `` and ``.
-They describe named instances of streams with concrete data content and a type of stream.
+They describe named instances of streams with concrete data content and a type of stream.
Usually this stream description is only necessary to describe the content of a streaming file.
The tag `` uses the following attributes:
@@ -955,8 +920,8 @@ The tag `` uses the following attributes:
|type|CLASS|mandatory|Referenced type of the stream (Is a reference to a Stream Meta Type or a Struct.)|
|description|STRING|optional|The description of the stream|
-The optional tag `` uses the following attributes:
-This tag should only be used, if
+The optional tag `` uses the following attributes:
+This tag should only be used, if
| Name | Type | Required | Description |
| ---- | ---- | -------- | ----------- |
diff --git a/doc/extern/ddl/mapping_specification.md b/doc/html/ddl/mapping_specification.md
similarity index 90%
rename from doc/extern/ddl/mapping_specification.md
rename to doc/html/ddl/mapping_specification.md
index ebf4846..981bf9f 100644
--- a/doc/extern/ddl/mapping_specification.md
+++ b/doc/html/ddl/mapping_specification.md
@@ -1,34 +1,17 @@
-
# Signal Mapping Format Specification
-
-
-- [Signal Mapping Format Specification](#signal-mapping-format-specification)
-- [Configuration format](#configuration-format)
- - [Overview](#overview)
- - [Specification](#specification)
- - [Example](#example)
-- [Features](#features)
- - [Constants and Macros](#constants-and-macros)
- - [Transformations](#transformations)
- - [Supported types and cross-type assignments](#supported-types-and-cross-type-assignments)
-
-
-
-
# Configuration format
The actual mapping of signals is configured using a xml-based configuration format.
-
## Overview
A mapping configuration file contains a header with meta information about the file, source signal declarations, target signal definitions and transformation definitions. A source signal consists of a name and a signal type. Target signals also consist of a name and a signal type. They define any number of signal element assignments as well as any trigger conditions.
@@ -37,10 +20,10 @@ Conceptionally, signal element assignments define how the target signal is assem
A target signal element can be assigned a constant numeric value or a source signal element. In the later case, a transformation can be used to alter the source signal element value during assignment. Trigger conditions are optional, since it is always possible to actively get the current target signal buffer. For now, only periodic triggers can be defined, using a period and a unit of time.
-
## Specification
This specification contains the following parts:
+
- Header
- Sources
- Targets
@@ -48,7 +31,6 @@ This specification contains the following parts:
These sections will be described in the following paragraphs, see the [XSD specification](specification/mapping_configuration.xsd) for more details.
-
### Header
The header section contains meta information about the document and version information.
@@ -62,7 +44,6 @@ It is similar to the header informations in the DDL Definition File Format.
|date_change|Date|mandatory|Last modification date|
|description|Text|mandatory|Short description|
-
### Sources
This section defines the source signals that can be used in assignments to any target signal elements.
@@ -74,7 +55,6 @@ The tag `` supports the following attributes:
|name|String|mandatory|Name of the signal|
|type|String|mandatory|DDL structured type of the signal|
-
### Targets
This section contains definitions of target signals, assignement to their target elements as well as any trigger definitions.
@@ -96,7 +76,6 @@ The tag `` supports the following attributes:
|from|String|optional*|Source signal or source signal element to assign|
|transformation|String|optional|Transformation to apply to the source element|
-
__*__: The attributes `constant`, `function` and `from` are mutually exclusive but one of them is required.
The attribute `transformation` can only be applied when the attribute `from` is defined.
@@ -109,7 +88,6 @@ The attribute `function` can have the values:
|trigger_counter()|Positive numeric value, modulo parameter|Trigger counter with wrap-around|
|received()|Name of the source signal|Received indicator, evaluates to true if the source signal has been received|
-
The tag `` supports the following attributes:
| Name | Type | Required | Description |
@@ -122,6 +100,7 @@ The tag `` supports the following attributes:
|value|String|optional|Float value to compare with the source element|
The attribute `type` has three acceptable values:
+
- `periodic`
- `data`
- `signal`
@@ -146,7 +125,6 @@ The tag `` supports the following attributes:
|d|String|optional|parameter of the polynom for X^3|
|e|String|optional|parameter of the polynom for X^4|
-
The tag `` supports the following attributes:
| Name | Type | Required | Description |
@@ -156,7 +134,6 @@ The tag `` supports the following attributes:
|to|String|mandatory|Enumeration type used as transformation target|
|default|String|mandatory|Default value used when no conversion is defined. It must be an element of the target enumeration|
-
The tag `` supports the following attributes:
| Name | Type | Required | Description |
@@ -164,7 +141,6 @@ The tag `` supports the following attributes:
|from|String|mandatory|Element from the enumeration type used as transformation source|
|to|String|mandatory|Element from the enumeration type used as transformation target|
-
## Example
The following example shows the mapping of the target signals `LightSource` and `Object`.
@@ -175,7 +151,7 @@ The following example shows the mapping of the target signals `LightSource` and
The Enumeration Type `tObjectType` is mapped in an obsolete Enumeration created for the example.
This Target is trigger when `LightOrientation` is received.
-````xml
+```xml
@@ -222,12 +198,10 @@ The following example shows the mapping of the target signals `LightSource` and
-````
+```
-
# Features
-
## Constants and Macros
A target signal element can be assigned a constant numeric value. This value will be parsed as a floating point number and casted to the target element type.
@@ -237,7 +211,6 @@ A target signal element can also be assigned the simulation time, a trigger coun
> _**Note:**_ Constants and Macros can only be used to initialize scalar as well as arrays of scalar elements
Any unassigned target elements will be assigned the default value configured in the DDL definition of the target signal type
-
## Transformations
Transformations can be used to alter the value of an assignment during runtime.
@@ -245,16 +218,14 @@ Polynomial and enum to enum transformations are supported.
Polynomial transformations use the following polynomial to transform the assignments:
-````
+```plain
value = a*value^0 + b*value^1 + c*value^2 + d*value^3 + e*value^4
-````
+```
Any undefined coefficients are set to 0.
-
> _**Note:**_ Transformations are only supported for scalar as well as arrays of scalar elements
-
## Supported types and cross-type assignments
Assignments from one type to another are supported in the following way
@@ -266,20 +237,20 @@ Assignments from one type to another are supported in the following way
| Trigger counter | Scalar | Datatype conversion using standard C++ casting methods |
| Received Flag | Scalar | Only for boolean |
| Scalar | Scalar | Datatype conversion using standard C++ casting methods. Transformations allowed |
-| Array | Array | Only for arrays of same size. Datatype conversion using standard C++ casting methods. Transformations allowed |
+| `Array` | `Array` | Only for arrays of same size. Datatype conversion using standard C++ casting methods. Transformations allowed |
| Structure | Structure | Only for structures of same type |
-| Array | Array | Only for arrays of same size and structures of same type |
+| `Array` | `Array` | Only for arrays of same size and structures of same type |
| Enum | Enum | Datatype conversion to the underlying numerical datatype using standard C++ casting methods |
-| Array | Array | Only for arrays of same size. Datatype conversion using standard C++ casting methods. |
+| `Array` | `Array` | Only for arrays of same size. Datatype conversion using standard C++ casting methods. |
Scalar datatypes are enumerations, `tBool`, `tChar`, `tUInt8`, `tInt8`, `tUInt16`, `tInt16`, `tUInt32`, `tInt32`, `tUInt64`, `tInt64`, `tFloat32` and `tFloat64`.
Array and structure elements can be used separately in assignments, for example:
-````xml
+```xml
-````
+```
> _**Note:**_ A target element can only be assigned once. For instance, if one element in a substructure is already assigned, the whole substructure can not be assigned and reciprocally.
diff --git a/doc/extern/ddl/specification/ddl3.xsd b/doc/html/ddl/specification/ddl3.xsd
similarity index 99%
rename from doc/extern/ddl/specification/ddl3.xsd
rename to doc/html/ddl/specification/ddl3.xsd
index 6ac46fd..fe02be3 100644
--- a/doc/extern/ddl/specification/ddl3.xsd
+++ b/doc/html/ddl/specification/ddl3.xsd
@@ -1,6 +1,6 @@

+
+
+ 3.00
+ adsc5zg
+ fnt2ndz
+ 26.07.2022
+ 01.08.2023
+ Object defines a representation of moving or stationary objects by means of three dimensional bounding boxes.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/function/ddl/dd/files/invalid_numbits_attribute.description b/test/function/ddl/dd/files/invalid_numbits_attribute.description
index 32ef8f8..1082a50 100644
--- a/test/function/ddl/dd/files/invalid_numbits_attribute.description
+++ b/test/function/ddl/dd/files/invalid_numbits_attribute.description
@@ -1,6 +1,6 @@