WIP: [ParameterTreeParser] add ParameterTreeParser for python scripts
This MR adds two static methods to ParameterTreeParser that can be used to read a python dictionary into a ParameterTree.
readPythonDict:
- Traverses all key-value pairs in the python dictionary
- if the value is an instance of
pybind11::dictreadPythonDict is called for the sub-ParameterTree of the corresponding key - else the string representation is added to the ParameterTree for the corresponding key
- if the value is an instance of
readPythonFile:
- The python script is interpret using pybind11
eval_filemethod - The variable with the specified name (default:
__dict__, which is the global scope) is casted to apybind11:dictand passed toreadPythonDict
For readPythonDict the include files and libraries of python must be available. I added a CMake variable HAVE_PYTHON3_DEV and an entry in the config.h for that. Futhermore I added AddPythonFlags.cmake for the management of the linking and includes.
For readPythonFile the embed functionality of python must be available this is checked with the CMake variable Python3_Development.Embed_FOUND and passed to the c++ side with HAVE_PYTHON3_EMBED.
Furthermore a type_caster is added for conversion of a python dict into a ParameterTree. That makes python bindings that take a ParameterTree as a function argument callable from the python-side with a dict.