31#define PYOBJECT_NULL_STRING PyBytes_FromStringAndSize("", 0)
32#define C_STR_TO_PY_BYTES(cstr) \
33 PyBytes_FromStringAndSize(cstr.c_str(), cstr.size())
37 T obj_ptr = (T)PyCapsule_GetPointer(pyobj, type_ptr.c_str());
38 if (obj_ptr ==
nullptr) {
39 AERROR <<
"PyObjectToPtr failed,type->" << type_ptr <<
"pyobj: " << pyobj;
46 return PyCapsule_New(pyparameter,
"apollo_cybertron_pyparameter",
nullptr);
50 PyObject* pyobj_param =
nullptr;
51 if (!PyArg_ParseTuple(args,
const_cast<char*
>(
"O:cyber_delete_PyParameter"),
58 PyCapsule_GetPointer(pyobj_param,
"apollo_cybertron_pyparameter"));
59 if (
nullptr == pyparameter) {
60 AERROR <<
"cyber_delete_PyParameter:parameter ptr is null!";
72 int64_t int_value = 0;
73 if (!PyArg_ParseTuple(args,
74 const_cast<char*
>(
"s#L:cyber_new_PyParameter_int"),
75 &name, &len, &int_value)) {
76 AERROR <<
"cyber_new_PyParameter_int parsetuple failed!";
82 return PyCapsule_New(pyparameter,
"apollo_cybertron_pyparameter",
nullptr);
88 double double_value = 0;
89 if (!PyArg_ParseTuple(args,
90 const_cast<char*
>(
"s#d:cyber_new_PyParameter_double"),
91 &name, &len, &double_value)) {
92 AERROR <<
"cyber_new_PyParameter_double parsetuple failed!";
98 new PyParameter(std::string(name, len), double_value);
99 return PyCapsule_New(pyparameter,
"apollo_cybertron_pyparameter",
nullptr);
103 char* name =
nullptr;
104 char* string_param =
nullptr;
105 if (!PyArg_ParseTuple(args,
106 const_cast<char*
>(
"ss:cyber_new_PyParameter_string"),
107 &name, &string_param)) {
108 AERROR <<
"cyber_new_PyParameter_string parsetuple failed!";
114 new PyParameter(std::string(name), std::string(string_param));
115 return PyCapsule_New(pyparameter,
"apollo_cybertron_pyparameter",
nullptr);
119 PyObject* pyobj_param =
nullptr;
120 if (!PyArg_ParseTuple(args,
121 const_cast<char*
>(
"O:cyber_PyParameter_type_name"),
123 AERROR <<
"cyber_PyParameter_type_name failed!";
128 PyCapsule_GetPointer(pyobj_param,
"apollo_cybertron_pyparameter"));
129 if (
nullptr == param) {
130 AERROR <<
"cyber_PyParameter_type_name ptr is null!";
134 const std::string type = param->
type_name();
139 PyObject* pyobj_param =
nullptr;
140 if (!PyArg_ParseTuple(args,
141 const_cast<char*
>(
"O:cyber_PyParameter_descriptor"),
143 AERROR <<
"cyber_PyParameter_descriptor failed!";
148 PyCapsule_GetPointer(pyobj_param,
"apollo_cybertron_pyparameter"));
149 if (
nullptr == param) {
150 AERROR <<
"cyber_PyParameter_descriptor ptr is null!";
159 PyObject* pyobj_param =
nullptr;
160 if (!PyArg_ParseTuple(args,
const_cast<char*
>(
"O:cyber_PyParameter_name"),
162 AERROR <<
"cyber_PyParameter_name failed!";
167 PyCapsule_GetPointer(pyobj_param,
"apollo_cybertron_pyparameter"));
168 if (
nullptr == param) {
169 AERROR <<
"cyber_PyParameter_name ptr is null!";
173 const std::string name = param->
name();
178 PyObject* pyobj_param =
nullptr;
179 if (!PyArg_ParseTuple(args,
180 const_cast<char*
>(
"O:cyber_PyParameter_debug_string"),
182 AERROR <<
"cyber_PyParameter_debug_string failed!";
187 PyCapsule_GetPointer(pyobj_param,
"apollo_cybertron_pyparameter"));
188 if (
nullptr == param) {
189 AERROR <<
"cyber_PyParameter_debug_string ptr is null!";
198 PyObject* pyobj_param =
nullptr;
199 if (!PyArg_ParseTuple(args,
200 const_cast<char*
>(
"O:cyber_PyParameter_as_string"),
202 AERROR <<
"cyber_PyParameter_as_string failed!";
207 PyCapsule_GetPointer(pyobj_param,
"apollo_cybertron_pyparameter"));
208 if (
nullptr == param) {
209 AERROR <<
"cyber_PyParameter_as_string ptr is null!";
213 std::string debug_string = param->
as_string();
218 PyObject* pyobj_param =
nullptr;
219 if (!PyArg_ParseTuple(args,
220 const_cast<char*
>(
"O:cyber_PyParameter_as_double"),
222 AERROR <<
"cyber_PyParameter_as_double failed!";
223 return PyFloat_FromDouble(0.0);
227 PyCapsule_GetPointer(pyobj_param,
"apollo_cybertron_pyparameter"));
228 if (
nullptr == param) {
229 AERROR <<
"cyber_PyParameter_as_double ptr is null!";
230 return PyFloat_FromDouble(0.0);
233 double dTemp = param->as_double();
234 return PyFloat_FromDouble(dTemp);
238 PyObject* pyobj_param =
nullptr;
239 if (!PyArg_ParseTuple(args,
const_cast<char*
>(
"O:cyber_PyParameter_as_int64"),
241 AERROR <<
"cyber_PyParameter_as_int64 failed!";
242 return PyLong_FromLongLong(0);
246 PyCapsule_GetPointer(pyobj_param,
"apollo_cybertron_pyparameter"));
247 if (
nullptr == param) {
248 AERROR <<
"cyber_PyParameter_as_int64 ptr is null!";
249 return PyLong_FromLongLong(0);
252 int64_t lTemp = param->as_int64();
253 return PyLong_FromLongLong(lTemp);
258 PyObject* pyobj_node =
nullptr;
259 char* service_node_name =
nullptr;
261 if (!PyArg_ParseTuple(args,
262 const_cast<char*
>(
"Os#:cyber_new_PyParameterClient"),
263 &pyobj_node, &service_node_name, &len)) {
264 AERROR <<
"cyber_new_PyParameterClient parsetuple failed!";
269 PyNode* pynode = PyObjectToPtr<PyNode*>(pyobj_node,
"apollo_cyber_pynode");
270 if (
nullptr == pynode) {
271 AERROR <<
"pynode ptr is null!";
277 if (
nullptr == node) {
278 AERROR <<
"node ptr is null!";
285 return PyCapsule_New(pyparameter_clt,
"apollo_cybertron_pyparameterclient",
290 PyObject* pyobj_param =
nullptr;
291 if (!PyArg_ParseTuple(args,
292 const_cast<char*
>(
"O:cyber_delete_PyParameterClient"),
294 AERROR <<
"cyber_delete_PyParameterClient parsetuple failed!";
300 PyCapsule_GetPointer(pyobj_param,
"apollo_cybertron_pyparameterclient"));
301 if (
nullptr == pyparameter_clt) {
302 AERROR <<
"cyber_delete_PyParameterClient:pyparameter_clt ptr is null!";
306 delete pyparameter_clt;
312 PyObject* pyobj_param_clt =
nullptr;
313 PyObject* pyobj_param =
nullptr;
314 if (!PyArg_ParseTuple(args,
315 const_cast<char*
>(
"OO:cyber_PyParameter_set_parameter"),
316 &pyobj_param_clt, &pyobj_param)) {
317 AERROR <<
"cyber_PyParameter_set_parameter parsetuple failed!";
322 pyobj_param_clt,
"apollo_cybertron_pyparameterclient");
323 if (
nullptr == pyparam_clt) {
324 AERROR <<
"pyparam_clt ptr is null!";
329 PyObjectToPtr<PyParameter*>(pyobj_param,
"apollo_cybertron_pyparameter");
330 if (
nullptr == pyparam) {
331 AERROR <<
"pyparam ptr is null!";
343 char* name =
nullptr;
345 PyObject* pyobj_param_clt =
nullptr;
346 if (!PyArg_ParseTuple(
347 args,
const_cast<char*
>(
"Os#:cyber_PyParameter_get_parameter"),
348 &pyobj_param_clt, &name, &len)) {
349 AERROR <<
"cyber_PyParameter_get_parameter parsetuple failed!";
354 pyobj_param_clt,
"apollo_cybertron_pyparameterclient");
355 if (
nullptr == pyparam_clt) {
356 AERROR <<
"pyparam_clt ptr is null!";
362 std::string str_param = std::string(name, len);
364 AERROR <<
"pyparam_clt get_parameter is false!";
370 return PyCapsule_New(pyparameter,
"apollo_cybertron_pyparameter",
nullptr);
375 PyObject* pyobj_param_clt =
nullptr;
376 if (!PyArg_ParseTuple(
377 args,
const_cast<char*
>(
"O:cyber_PyParameter_clt_get_parameter_list"),
380 <<
"cyber_PyParameter_clt_get_parameter_list:PyArg_ParseTuple failed!";
386 pyobj_param_clt,
"apollo_cybertron_pyparameterclient"));
387 if (
nullptr == pyparam_clt) {
388 AERROR <<
"cyber_PyParameter_clt_get_parameter_list pyparam_clt is null!";
393 std::vector<Parameter> param_list;
394 pyparam_clt->list_parameters(¶m_list);
396 PyObject* pyobj_list = PyList_New(param_list.size());
398 for (
auto& param : param_list) {
401 PyObject* pyobj_param =
402 PyCapsule_New(pyparameter,
"apollo_cybertron_pyparameter",
nullptr);
403 PyList_SetItem(pyobj_list, pos, pyobj_param);
412 PyObject* pyobj_node =
nullptr;
413 if (!PyArg_ParseTuple(args,
414 const_cast<char*
>(
"O:cyber_new_PyParameterServer"),
416 AERROR <<
"cyber_new_PyParameterServer parsetuple failed!";
421 PyNode* pynode = PyObjectToPtr<PyNode*>(pyobj_node,
"apollo_cyber_pynode");
422 if (
nullptr == pynode) {
423 AERROR <<
"pynode ptr is null!";
429 if (
nullptr == node) {
430 AERROR <<
"node ptr is null!";
436 return PyCapsule_New(pyparameter_srv,
"apollo_cybertron_pyparameterserver",
441 PyObject* pyobj_param =
nullptr;
442 if (!PyArg_ParseTuple(args,
443 const_cast<char*
>(
"O:cyber_delete_PyParameterServer"),
445 AERROR <<
"cyber_delete_PyParameterServer parsetuple failed!";
451 PyCapsule_GetPointer(pyobj_param,
"apollo_cybertron_pyparameterserver"));
452 if (
nullptr == pyparameter_srv) {
453 AERROR <<
"cyber_delete_PyParameterServer:pyparameter_srv ptr is null!";
457 delete pyparameter_srv;
463 PyObject* pyobj_param_srv =
nullptr;
464 PyObject* pyobj_param =
nullptr;
465 if (!PyArg_ParseTuple(args,
466 const_cast<char*
>(
"OO:cyber_PyParameter_set_parameter"),
467 &pyobj_param_srv, &pyobj_param)) {
468 AERROR <<
"cyber_PyParameter_set_parameter parsetuple failed!";
474 pyobj_param_srv,
"apollo_cybertron_pyparameterserver");
475 if (
nullptr == pyparam_srv) {
476 AERROR <<
"pyparam_srv ptr is null!";
482 PyObjectToPtr<PyParameter*>(pyobj_param,
"apollo_cybertron_pyparameter");
483 if (
nullptr == pyparam) {
484 AERROR <<
"pyparam ptr is null!";
495 char* name =
nullptr;
497 PyObject* pyobj_param_srv =
nullptr;
498 if (!PyArg_ParseTuple(
499 args,
const_cast<char*
>(
"Os#:cyber_PyParameter_get_parameter"),
500 &pyobj_param_srv, &name, &len)) {
501 AERROR <<
"cyber_PyParameter_get_parameter parsetuple failed!";
506 pyobj_param_srv,
"apollo_cybertron_pyparameterserver");
507 if (
nullptr == pyparam_srv) {
508 AERROR <<
"pyparam_srv ptr is null!";
514 std::string str_param = std::string(name, len);
516 AERROR <<
"pyparam_srv get_parameter is false!";
522 return PyCapsule_New(pyparameter,
"apollo_cybertron_pyparameter",
nullptr);
527 PyObject* pyobj_param_srv =
nullptr;
528 if (!PyArg_ParseTuple(
529 args,
const_cast<char*
>(
"O:cyber_PyParameter_srv_get_parameter_list"),
532 <<
"cyber_PyParameter_srv_get_parameter_list:PyArg_ParseTuple failed!";
538 pyobj_param_srv,
"apollo_cybertron_pyparameterserver"));
539 if (
nullptr == pyparam_srv) {
540 AERROR <<
"cyber_PyParameter_srv_get_parameter_list pyparam_srv is null!";
545 std::vector<Parameter> param_list;
546 pyparam_srv->list_parameters(¶m_list);
548 PyObject* pyobj_list = PyList_New(param_list.size());
550 for (
auto& param : param_list) {
553 PyObject* pyobj_param =
554 PyCapsule_New(pyparameter,
"apollo_cybertron_pyparameter",
nullptr);
555 PyList_SetItem(pyobj_list, pos, pyobj_param);
562static PyMethodDef _cyber_parameter_methods[] = {
584 {
"PyParameter_clt_get_parameter_list",
594 {
"PyParameter_srv_get_parameter_list",
597 {
nullptr,
nullptr, 0,
nullptr}
602 static struct PyModuleDef module_def = {
603 PyModuleDef_HEAD_INIT,
604 "_cyber_parameter_wrapper",
605 "CyberParameter module",
607 _cyber_parameter_methods,
614 return PyModule_Create(&module_def);
A Parameter holds an apollo::cyber::proto::Param, It's more human-readable, you can use basic-value t...
std::shared_ptr< Node > get_node()
bool set_parameter(const Parameter ¶meter)
bool get_parameter(const std::string ¶m_name, Parameter *parameter)
bool get_parameter(const std::string ¶m_name, Parameter *parameter)
void set_parameter(const Parameter ¶meter)
std::string debug_string()
PyObject * cyber_PyParameter_as_int64(PyObject *self, PyObject *args)
PyObject * cyber_new_PyParameter_double(PyObject *self, PyObject *args)
PyObject * cyber_delete_PyParameterServer(PyObject *self, PyObject *args)
PyObject * cyber_delete_PyParameter(PyObject *self, PyObject *args)
PyObject * cyber_PyParameter_as_string(PyObject *self, PyObject *args)
PyObject * cyber_PyParameter_clt_get_parameter_list(PyObject *self, PyObject *args)
#define PYOBJECT_NULL_STRING
PyObject * cyber_PyParameter_name(PyObject *self, PyObject *args)
PyObject * cyber_delete_PyParameterClient(PyObject *self, PyObject *args)
PyObject * cyber_PyParameter_as_double(PyObject *self, PyObject *args)
PyMODINIT_FUNC PyInit__cyber_parameter_wrapper(void)
Init function of this module
PyObject * cyber_new_PyParameterClient(PyObject *self, PyObject *args)
PyObject * cyber_new_PyParameter_string(PyObject *self, PyObject *args)
PyObject * cyber_PyParameter_debug_string(PyObject *self, PyObject *args)
PyObject * cyber_PyParameter_srv_get_parameter_list(PyObject *self, PyObject *args)
T PyObjectToPtr(PyObject *pyobj, const std::string &type_ptr)
#define C_STR_TO_PY_BYTES(cstr)
PyObject * cyber_PyParameter_type_name(PyObject *self, PyObject *args)
PyObject * cyber_PyParameter_clt_set_parameter(PyObject *self, PyObject *args)
PyObject * cyber_PyParameter_srv_get_parameter(PyObject *self, PyObject *args)
PyObject * cyber_PyParameter_srv_set_parameter(PyObject *self, PyObject *args)
PyObject * cyber_PyParameter_descriptor(PyObject *self, PyObject *args)
PyObject * cyber_PyParameter_clt_get_parameter(PyObject *self, PyObject *args)
PyObject * cyber_new_PyParameter_noparam(PyObject *self, PyObject *args)
PyObject * cyber_new_PyParameter_int(PyObject *self, PyObject *args)
PyObject * cyber_new_PyParameterServer(PyObject *self, PyObject *args)