const std::string PugAPI::map(const std::string node, const boost::python::dict& d) const { QVariantMap qmap; boost::python::list keys = (boost::python::list)d.iterkeys(); for (int i = 0; i < boost::python::len(keys); i++) { boost::python::object obj = d[keys[i]]; if (PyString_Check(obj.ptr())) { qmap[QString::fromStdString(boost::python::extract<std::string>(keys[i]))] = QString::fromStdString(boost::python::extract<std::string>(obj)); } else if (PyInt_Check(obj.ptr())) { qmap[QString::fromStdString(boost::python::extract<std::string>(keys[i]))] = QVariant(boost::python::extract<int>(obj)); } // ignore things we can't convert } QString qresult = m_root->map(QString::fromStdString(node), qmap); return qresult.toStdString(); }