// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- // vim: ts=8 sw=2 smarttab #include #include "PyUtil.h" PyObject *get_python_typed_option_value( Option::type_t type, const std::string& value) { switch (type) { case Option::TYPE_INT: case Option::TYPE_UINT: case Option::TYPE_SIZE: return PyLong_FromString((char *)value.c_str(), nullptr, 0); case Option::TYPE_SECS: case Option::TYPE_MILLISECS: case Option::TYPE_FLOAT: { PyObject *s = PyUnicode_FromString(value.c_str()); PyObject *f = PyFloat_FromString(s); Py_DECREF(s); return f; } case Option::TYPE_BOOL: if (value == "1" || value == "true" || value == "True" || value == "on" || value == "yes") { Py_INCREF(Py_True); return Py_True; } else { Py_INCREF(Py_False); return Py_False; } case Option::TYPE_STR: case Option::TYPE_ADDR: case Option::TYPE_ADDRVEC: case Option::TYPE_UUID: break; } return PyUnicode_FromString(value.c_str()); }