Apollo 11.0
自动驾驶开放平台
py_parameter.cc
浏览该文件的文档.
1/******************************************************************************
2 * Copyright 2019 The Apollo Authors. All Rights Reserved.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 *****************************************************************************/
16
18
19#include <set>
20#include <string>
21
22#include <Python.h>
24
30
31#define PYOBJECT_NULL_STRING PyBytes_FromStringAndSize("", 0)
32#define C_STR_TO_PY_BYTES(cstr) \
33 PyBytes_FromStringAndSize(cstr.c_str(), cstr.size())
34
35template <typename T>
36T PyObjectToPtr(PyObject* pyobj, const std::string& type_ptr) {
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;
40 }
41 return obj_ptr;
42}
43
44PyObject* cyber_new_PyParameter_noparam(PyObject* self, PyObject* args) {
45 PyParameter* pyparameter = new PyParameter();
46 return PyCapsule_New(pyparameter, "apollo_cybertron_pyparameter", nullptr);
47}
48
49PyObject* cyber_delete_PyParameter(PyObject* self, PyObject* args) {
50 PyObject* pyobj_param = nullptr;
51 if (!PyArg_ParseTuple(args, const_cast<char*>("O:cyber_delete_PyParameter"),
52 &pyobj_param)) {
53 Py_INCREF(Py_None);
54 return Py_None;
55 }
56
57 auto* pyparameter = reinterpret_cast<PyParameter*>(
58 PyCapsule_GetPointer(pyobj_param, "apollo_cybertron_pyparameter"));
59 if (nullptr == pyparameter) {
60 AERROR << "cyber_delete_PyParameter:parameter ptr is null!";
61 Py_INCREF(Py_None);
62 return Py_None;
63 }
64 delete pyparameter;
65 Py_INCREF(Py_None);
66 return Py_None;
67}
68
69PyObject* cyber_new_PyParameter_int(PyObject* self, PyObject* args) {
70 char* name = nullptr;
71 Py_ssize_t len = 0;
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!";
77 Py_INCREF(Py_None);
78 return Py_None;
79 }
80
81 PyParameter* pyparameter = new PyParameter(std::string(name, len), int_value);
82 return PyCapsule_New(pyparameter, "apollo_cybertron_pyparameter", nullptr);
83}
84
85PyObject* cyber_new_PyParameter_double(PyObject* self, PyObject* args) {
86 char* name = nullptr;
87 Py_ssize_t len = 0;
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!";
93 Py_INCREF(Py_None);
94 return Py_None;
95 }
96
97 PyParameter* pyparameter =
98 new PyParameter(std::string(name, len), double_value);
99 return PyCapsule_New(pyparameter, "apollo_cybertron_pyparameter", nullptr);
100}
101
102PyObject* cyber_new_PyParameter_string(PyObject* self, PyObject* args) {
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!";
109 Py_INCREF(Py_None);
110 return Py_None;
111 }
112
113 PyParameter* pyparameter =
114 new PyParameter(std::string(name), std::string(string_param));
115 return PyCapsule_New(pyparameter, "apollo_cybertron_pyparameter", nullptr);
116}
117
118PyObject* cyber_PyParameter_type_name(PyObject* self, PyObject* args) {
119 PyObject* pyobj_param = nullptr;
120 if (!PyArg_ParseTuple(args,
121 const_cast<char*>("O:cyber_PyParameter_type_name"),
122 &pyobj_param)) {
123 AERROR << "cyber_PyParameter_type_name failed!";
125 }
126
127 auto* param = reinterpret_cast<PyParameter*>(
128 PyCapsule_GetPointer(pyobj_param, "apollo_cybertron_pyparameter"));
129 if (nullptr == param) {
130 AERROR << "cyber_PyParameter_type_name ptr is null!";
132 }
133
134 const std::string type = param->type_name();
135 return C_STR_TO_PY_BYTES(type);
136}
137
138PyObject* cyber_PyParameter_descriptor(PyObject* self, PyObject* args) {
139 PyObject* pyobj_param = nullptr;
140 if (!PyArg_ParseTuple(args,
141 const_cast<char*>("O:cyber_PyParameter_descriptor"),
142 &pyobj_param)) {
143 AERROR << "cyber_PyParameter_descriptor failed!";
145 }
146
147 auto* param = reinterpret_cast<PyParameter*>(
148 PyCapsule_GetPointer(pyobj_param, "apollo_cybertron_pyparameter"));
149 if (nullptr == param) {
150 AERROR << "cyber_PyParameter_descriptor ptr is null!";
152 }
153
154 const std::string desc = param->descriptor();
155 return C_STR_TO_PY_BYTES(desc);
156}
157
158PyObject* cyber_PyParameter_name(PyObject* self, PyObject* args) {
159 PyObject* pyobj_param = nullptr;
160 if (!PyArg_ParseTuple(args, const_cast<char*>("O:cyber_PyParameter_name"),
161 &pyobj_param)) {
162 AERROR << "cyber_PyParameter_name failed!";
164 }
165
166 auto* param = reinterpret_cast<PyParameter*>(
167 PyCapsule_GetPointer(pyobj_param, "apollo_cybertron_pyparameter"));
168 if (nullptr == param) {
169 AERROR << "cyber_PyParameter_name ptr is null!";
171 }
172
173 const std::string name = param->name();
174 return C_STR_TO_PY_BYTES(name);
175}
176
177PyObject* cyber_PyParameter_debug_string(PyObject* self, PyObject* args) {
178 PyObject* pyobj_param = nullptr;
179 if (!PyArg_ParseTuple(args,
180 const_cast<char*>("O:cyber_PyParameter_debug_string"),
181 &pyobj_param)) {
182 AERROR << "cyber_PyParameter_debug_string failed!";
184 }
185
186 auto* param = reinterpret_cast<PyParameter*>(
187 PyCapsule_GetPointer(pyobj_param, "apollo_cybertron_pyparameter"));
188 if (nullptr == param) {
189 AERROR << "cyber_PyParameter_debug_string ptr is null!";
191 }
192
193 const std::string debug_string = param->debug_string();
194 return C_STR_TO_PY_BYTES(debug_string);
195}
196
197PyObject* cyber_PyParameter_as_string(PyObject* self, PyObject* args) {
198 PyObject* pyobj_param = nullptr;
199 if (!PyArg_ParseTuple(args,
200 const_cast<char*>("O:cyber_PyParameter_as_string"),
201 &pyobj_param)) {
202 AERROR << "cyber_PyParameter_as_string failed!";
204 }
205
206 auto* param = reinterpret_cast<PyParameter*>(
207 PyCapsule_GetPointer(pyobj_param, "apollo_cybertron_pyparameter"));
208 if (nullptr == param) {
209 AERROR << "cyber_PyParameter_as_string ptr is null!";
211 }
212
213 std::string debug_string = param->as_string();
214 return C_STR_TO_PY_BYTES(debug_string);
215}
216
217PyObject* cyber_PyParameter_as_double(PyObject* self, PyObject* args) {
218 PyObject* pyobj_param = nullptr;
219 if (!PyArg_ParseTuple(args,
220 const_cast<char*>("O:cyber_PyParameter_as_double"),
221 &pyobj_param)) {
222 AERROR << "cyber_PyParameter_as_double failed!";
223 return PyFloat_FromDouble(0.0);
224 }
225
226 auto* param = reinterpret_cast<PyParameter*>(
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);
231 }
232
233 double dTemp = param->as_double();
234 return PyFloat_FromDouble(dTemp);
235}
236
237PyObject* cyber_PyParameter_as_int64(PyObject* self, PyObject* args) {
238 PyObject* pyobj_param = nullptr;
239 if (!PyArg_ParseTuple(args, const_cast<char*>("O:cyber_PyParameter_as_int64"),
240 &pyobj_param)) {
241 AERROR << "cyber_PyParameter_as_int64 failed!";
242 return PyLong_FromLongLong(0);
243 }
244
245 auto* param = reinterpret_cast<PyParameter*>(
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);
250 }
251
252 int64_t lTemp = param->as_int64();
253 return PyLong_FromLongLong(lTemp);
254}
255
256// PyParameterClient
257PyObject* cyber_new_PyParameterClient(PyObject* self, PyObject* args) {
258 PyObject* pyobj_node = nullptr;
259 char* service_node_name = nullptr;
260 Py_ssize_t len = 0;
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!";
265 Py_INCREF(Py_None);
266 return Py_None;
267 }
268
269 PyNode* pynode = PyObjectToPtr<PyNode*>(pyobj_node, "apollo_cyber_pynode");
270 if (nullptr == pynode) {
271 AERROR << "pynode ptr is null!";
272 Py_INCREF(Py_None);
273 return Py_None;
274 }
275
276 auto node = pynode->get_node();
277 if (nullptr == node) {
278 AERROR << "node ptr is null!";
279 Py_INCREF(Py_None);
280 return Py_None;
281 }
282
283 PyParameterClient* pyparameter_clt =
284 new PyParameterClient(node, std::string(service_node_name, len));
285 return PyCapsule_New(pyparameter_clt, "apollo_cybertron_pyparameterclient",
286 nullptr);
287}
288
289PyObject* cyber_delete_PyParameterClient(PyObject* self, PyObject* args) {
290 PyObject* pyobj_param = nullptr;
291 if (!PyArg_ParseTuple(args,
292 const_cast<char*>("O:cyber_delete_PyParameterClient"),
293 &pyobj_param)) {
294 AERROR << "cyber_delete_PyParameterClient parsetuple failed!";
295 Py_INCREF(Py_None);
296 return Py_None;
297 }
298
299 PyParameterClient* pyparameter_clt = reinterpret_cast<PyParameterClient*>(
300 PyCapsule_GetPointer(pyobj_param, "apollo_cybertron_pyparameterclient"));
301 if (nullptr == pyparameter_clt) {
302 AERROR << "cyber_delete_PyParameterClient:pyparameter_clt ptr is null!";
303 Py_INCREF(Py_None);
304 return Py_None;
305 }
306 delete pyparameter_clt;
307 Py_INCREF(Py_None);
308 return Py_None;
309}
310
311PyObject* cyber_PyParameter_clt_set_parameter(PyObject* self, PyObject* args) {
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!";
318 Py_RETURN_FALSE;
319 }
320
321 PyParameterClient* pyparam_clt = PyObjectToPtr<PyParameterClient*>(
322 pyobj_param_clt, "apollo_cybertron_pyparameterclient");
323 if (nullptr == pyparam_clt) {
324 AERROR << "pyparam_clt ptr is null!";
325 Py_RETURN_FALSE;
326 }
327
328 PyParameter* pyparam =
329 PyObjectToPtr<PyParameter*>(pyobj_param, "apollo_cybertron_pyparameter");
330 if (nullptr == pyparam) {
331 AERROR << "pyparam ptr is null!";
332 Py_RETURN_FALSE;
333 }
334
335 if (!pyparam_clt->set_parameter(pyparam->get_param())) {
336 Py_RETURN_FALSE;
337 } else {
338 Py_RETURN_TRUE;
339 }
340}
341
342PyObject* cyber_PyParameter_clt_get_parameter(PyObject* self, PyObject* args) {
343 char* name = nullptr;
344 Py_ssize_t len = 0;
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!";
350 Py_INCREF(Py_None);
351 return Py_None;
352 }
353 PyParameterClient* pyparam_clt = PyObjectToPtr<PyParameterClient*>(
354 pyobj_param_clt, "apollo_cybertron_pyparameterclient");
355 if (nullptr == pyparam_clt) {
356 AERROR << "pyparam_clt ptr is null!";
357 Py_INCREF(Py_None);
358 return Py_None;
359 }
360
361 Parameter* param = new Parameter();
362 std::string str_param = std::string(name, len);
363 if (!pyparam_clt->get_parameter(str_param, param)) {
364 AERROR << "pyparam_clt get_parameter is false!";
365 Py_INCREF(Py_None);
366 return Py_None;
367 }
368
369 PyParameter* pyparameter = new PyParameter(param);
370 return PyCapsule_New(pyparameter, "apollo_cybertron_pyparameter", nullptr);
371}
372
374 PyObject* args) {
375 PyObject* pyobj_param_clt = nullptr;
376 if (!PyArg_ParseTuple(
377 args, const_cast<char*>("O:cyber_PyParameter_clt_get_parameter_list"),
378 &pyobj_param_clt)) {
379 AERROR
380 << "cyber_PyParameter_clt_get_parameter_list:PyArg_ParseTuple failed!";
381 Py_INCREF(Py_None);
382 return Py_None;
383 }
384
385 auto* pyparam_clt = reinterpret_cast<PyParameterClient*>(PyCapsule_GetPointer(
386 pyobj_param_clt, "apollo_cybertron_pyparameterclient"));
387 if (nullptr == pyparam_clt) {
388 AERROR << "cyber_PyParameter_clt_get_parameter_list pyparam_clt is null!";
389 Py_INCREF(Py_None);
390 return Py_None;
391 }
392
393 std::vector<Parameter> param_list;
394 pyparam_clt->list_parameters(&param_list);
395
396 PyObject* pyobj_list = PyList_New(param_list.size());
397 size_t pos = 0;
398 for (auto& param : param_list) {
399 Parameter* param_ptr = new Parameter(param);
400 PyParameter* pyparameter = new PyParameter(param_ptr);
401 PyObject* pyobj_param =
402 PyCapsule_New(pyparameter, "apollo_cybertron_pyparameter", nullptr);
403 PyList_SetItem(pyobj_list, pos, pyobj_param);
404 pos++;
405 }
406
407 return pyobj_list;
408}
409
410// PyParameterServer
411PyObject* cyber_new_PyParameterServer(PyObject* self, PyObject* args) {
412 PyObject* pyobj_node = nullptr;
413 if (!PyArg_ParseTuple(args,
414 const_cast<char*>("O:cyber_new_PyParameterServer"),
415 &pyobj_node)) {
416 AERROR << "cyber_new_PyParameterServer parsetuple failed!";
417 Py_INCREF(Py_None);
418 return Py_None;
419 }
420
421 PyNode* pynode = PyObjectToPtr<PyNode*>(pyobj_node, "apollo_cyber_pynode");
422 if (nullptr == pynode) {
423 AERROR << "pynode ptr is null!";
424 Py_INCREF(Py_None);
425 return Py_None;
426 }
427
428 auto node = pynode->get_node();
429 if (nullptr == node) {
430 AERROR << "node ptr is null!";
431 Py_INCREF(Py_None);
432 return Py_None;
433 }
434
435 PyParameterServer* pyparameter_srv = new PyParameterServer(node);
436 return PyCapsule_New(pyparameter_srv, "apollo_cybertron_pyparameterserver",
437 nullptr);
438}
439
440PyObject* cyber_delete_PyParameterServer(PyObject* self, PyObject* args) {
441 PyObject* pyobj_param = nullptr;
442 if (!PyArg_ParseTuple(args,
443 const_cast<char*>("O:cyber_delete_PyParameterServer"),
444 &pyobj_param)) {
445 AERROR << "cyber_delete_PyParameterServer parsetuple failed!";
446 Py_INCREF(Py_None);
447 return Py_None;
448 }
449
450 PyParameterServer* pyparameter_srv = reinterpret_cast<PyParameterServer*>(
451 PyCapsule_GetPointer(pyobj_param, "apollo_cybertron_pyparameterserver"));
452 if (nullptr == pyparameter_srv) {
453 AERROR << "cyber_delete_PyParameterServer:pyparameter_srv ptr is null!";
454 Py_INCREF(Py_None);
455 return Py_None;
456 }
457 delete pyparameter_srv;
458 Py_INCREF(Py_None);
459 return Py_None;
460}
461
462PyObject* cyber_PyParameter_srv_set_parameter(PyObject* self, PyObject* args) {
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!";
469 Py_INCREF(Py_None);
470 return Py_None;
471 }
472
473 PyParameterServer* pyparam_srv = PyObjectToPtr<PyParameterServer*>(
474 pyobj_param_srv, "apollo_cybertron_pyparameterserver");
475 if (nullptr == pyparam_srv) {
476 AERROR << "pyparam_srv ptr is null!";
477 Py_INCREF(Py_None);
478 return Py_None;
479 }
480
481 PyParameter* pyparam =
482 PyObjectToPtr<PyParameter*>(pyobj_param, "apollo_cybertron_pyparameter");
483 if (nullptr == pyparam) {
484 AERROR << "pyparam ptr is null!";
485 Py_INCREF(Py_None);
486 return Py_None;
487 }
488
489 pyparam_srv->set_parameter(pyparam->get_param());
490 Py_INCREF(Py_None);
491 return Py_None;
492}
493
494PyObject* cyber_PyParameter_srv_get_parameter(PyObject* self, PyObject* args) {
495 char* name = nullptr;
496 Py_ssize_t len = 0;
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!";
502 Py_INCREF(Py_None);
503 return Py_None;
504 }
505 PyParameterServer* pyparam_srv = PyObjectToPtr<PyParameterServer*>(
506 pyobj_param_srv, "apollo_cybertron_pyparameterserver");
507 if (nullptr == pyparam_srv) {
508 AERROR << "pyparam_srv ptr is null!";
509 Py_INCREF(Py_None);
510 return Py_None;
511 }
512
513 Parameter* param = new Parameter();
514 std::string str_param = std::string(name, len);
515 if (!pyparam_srv->get_parameter(str_param, param)) {
516 AERROR << "pyparam_srv get_parameter is false!";
517 Py_INCREF(Py_None);
518 return Py_None;
519 }
520
521 PyParameter* pyparameter = new PyParameter(param);
522 return PyCapsule_New(pyparameter, "apollo_cybertron_pyparameter", nullptr);
523}
524
526 PyObject* args) {
527 PyObject* pyobj_param_srv = nullptr;
528 if (!PyArg_ParseTuple(
529 args, const_cast<char*>("O:cyber_PyParameter_srv_get_parameter_list"),
530 &pyobj_param_srv)) {
531 AERROR
532 << "cyber_PyParameter_srv_get_parameter_list:PyArg_ParseTuple failed!";
533 Py_INCREF(Py_None);
534 return Py_None;
535 }
536
537 auto* pyparam_srv = reinterpret_cast<PyParameterServer*>(PyCapsule_GetPointer(
538 pyobj_param_srv, "apollo_cybertron_pyparameterserver"));
539 if (nullptr == pyparam_srv) {
540 AERROR << "cyber_PyParameter_srv_get_parameter_list pyparam_srv is null!";
541 Py_INCREF(Py_None);
542 return Py_None;
543 }
544
545 std::vector<Parameter> param_list;
546 pyparam_srv->list_parameters(&param_list);
547
548 PyObject* pyobj_list = PyList_New(param_list.size());
549 size_t pos = 0;
550 for (auto& param : param_list) {
551 Parameter* param_ptr = new Parameter(param);
552 PyParameter* pyparameter = new PyParameter(param_ptr);
553 PyObject* pyobj_param =
554 PyCapsule_New(pyparameter, "apollo_cybertron_pyparameter", nullptr);
555 PyList_SetItem(pyobj_list, pos, pyobj_param);
556 pos++;
557 }
558
559 return pyobj_list;
560}
561
562static PyMethodDef _cyber_parameter_methods[] = {
563 {"new_PyParameter_noparam", cyber_new_PyParameter_noparam, METH_NOARGS, ""},
564 {"delete_PyParameter", cyber_delete_PyParameter, METH_VARARGS, ""},
565 {"new_PyParameter_int", cyber_new_PyParameter_int, METH_VARARGS, ""},
566 {"new_PyParameter_double", cyber_new_PyParameter_double, METH_VARARGS, ""},
567 {"new_PyParameter_string", cyber_new_PyParameter_string, METH_VARARGS, ""},
568 {"PyParameter_type_name", cyber_PyParameter_type_name, METH_VARARGS, ""},
569 {"PyParameter_descriptor", cyber_PyParameter_descriptor, METH_VARARGS, ""},
570 {"PyParameter_name", cyber_PyParameter_name, METH_VARARGS, ""},
571 {"PyParameter_debug_string", cyber_PyParameter_debug_string, METH_VARARGS,
572 ""},
573 {"PyParameter_as_string", cyber_PyParameter_as_string, METH_VARARGS, ""},
574 {"PyParameter_as_double", cyber_PyParameter_as_double, METH_VARARGS, ""},
575 {"PyParameter_as_int64", cyber_PyParameter_as_int64, METH_VARARGS, ""},
576
577 {"new_PyParameterClient", cyber_new_PyParameterClient, METH_VARARGS, ""},
578 {"delete_PyParameterClient", cyber_delete_PyParameterClient, METH_VARARGS,
579 ""},
580 {"PyParameter_clt_set_parameter", cyber_PyParameter_clt_set_parameter,
581 METH_VARARGS, ""},
582 {"PyParameter_clt_get_parameter", cyber_PyParameter_clt_get_parameter,
583 METH_VARARGS, ""},
584 {"PyParameter_clt_get_parameter_list",
586
587 {"new_PyParameterServer", cyber_new_PyParameterServer, METH_VARARGS, ""},
588 {"delete_PyParameterServer", cyber_delete_PyParameterServer, METH_VARARGS,
589 ""},
590 {"PyParameter_srv_set_parameter", cyber_PyParameter_srv_set_parameter,
591 METH_VARARGS, ""},
592 {"PyParameter_srv_get_parameter", cyber_PyParameter_srv_get_parameter,
593 METH_VARARGS, ""},
594 {"PyParameter_srv_get_parameter_list",
596
597 {nullptr, nullptr, 0, nullptr} /* sentinel */
598};
599
602 static struct PyModuleDef module_def = {
603 PyModuleDef_HEAD_INIT,
604 "_cyber_parameter_wrapper", // Module name.
605 "CyberParameter module", // Module doc.
606 -1, // Module size.
607 _cyber_parameter_methods, // Module methods.
608 nullptr,
609 nullptr,
610 nullptr,
611 nullptr,
612 };
613
614 return PyModule_Create(&module_def);
615}
A Parameter holds an apollo::cyber::proto::Param, It's more human-readable, you can use basic-value t...
Definition parameter.h:42
std::shared_ptr< Node > get_node()
Definition py_cyber.h:331
bool set_parameter(const Parameter &parameter)
bool get_parameter(const std::string &param_name, Parameter *parameter)
bool get_parameter(const std::string &param_name, Parameter *parameter)
void set_parameter(const Parameter &parameter)
#define AERROR
Definition log.h:44
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)