Newer
Older
* Distributed under the OSI-approved Apache License, Version 2.0. See
* accompanying file Copyright.txt for details.
*
* MethodPy.cpp
*
* Created on: Mar 14, 2017
* Author: wfg
*/
#include <iostream>
#include "MethodPy.h"
#include "adiosPyFunctions.h"
namespace adios
{
#ifdef HAVE_BOOSTPYTHON
namespace py = boost::python;
#endif
#ifdef HAVE_PYBIND11
namespace py = pybind11;
#endif
MethodPy::MethodPy(const std::string type, const bool debugMode)
: Method(type, debugMode)
{
}
#ifdef HAVE_BOOSTPYTHON
pyObject MethodPy::SetParametersPy(pyTuple args, pyDict kwargs)
if (py::len(args) > 1)
throw std::invalid_argument("ERROR: syntax of Method SetParameters "
"function is incorrect, only use dictionary\n");
MethodPy &self = PyCast<MethodPy &>(args[0]);
self.m_Parameters = DictToMap(kwargs);
return args[0];
pyObject MethodPy::AddTransportPy(pyTuple args, pyDict kwargs)
if (py::len(args) != 2)
throw std::invalid_argument(
"ERROR: syntax of Method AddTransport function is incorrect, only use "
"one string for transport followed by a dictionary for parameters\n");
MethodPy &self = PyCast<MethodPy &>(args[0]);
const std::string type = PyCast<std::string>(args[1]);
auto parameters = DictToMap(kwargs);
parameters.insert(std::make_pair("transport", type));
self.m_TransportParameters.push_back(parameters);
return args[0];
#endif
#ifdef HAVE_PYBIND11
void MethodPy::SetParametersPyBind11(pybind11::kwargs kwargs)
this->m_Parameters = KwargsToMap(kwargs);
void MethodPy::AddTransportPyBind11(const std::string type,
pybind11::kwargs kwargs)
auto parameters = KwargsToMap(kwargs);
parameters.insert(std::make_pair("transport", type));
this->m_TransportParameters.push_back(parameters);
std::cout << "Method parameters\n";
for (const auto ¶m : m_Parameters)
std::cout << "Parameter: " << param.first << "\t Value: " << param.second
<< "\n";
std::cout << "\n";
std::cout << "Transport Parameters\n";
for (const auto &transportParameters : m_TransportParameters)
{
std::cout << "Transport:\n";
for (const auto ¶m : transportParameters)
std::cout << "Parameter: " << param.first << "\t Value: " << param.second
<< "\n";