void Comm::add_to_module () { if (comm_module == NULL) initcomm(); if (comm_module != NULL) { PyObject *comm = PyComm_new(this); PyModule_AddObject(comm_module, "inst", comm); } }
void Comm::add_to_module () { if (comm_module == NULL) { if (!c_init_comm()) { cerr << "Comm module failed to initialize the backend" << endl; PyErr_Print(); } } if (comm_module != NULL) { PyObject *comm = PyComm_new(this); PyModule_AddObject(comm_module, "inst", comm); } }
bool c_init_comm (void) { if (!Py_IsInitialized()) Py_Initialize(); if (PyType_Ready(&PyCommType) < 0 #ifdef USE_PYTHON_GC || PyType_Ready(&PyGameControllerType) < 0 #endif ) { fprintf(stderr, "Error creating Comm Python class type\n"); if (PyErr_Occurred()) PyErr_Print(); else fprintf(stderr, "But no error available!\n"); return false; } comm_module = Py_InitModule3("_comm", module_methods, "Container module for Comm proxy class to C++"); if (comm_module == NULL) { fprintf(stderr, "Error initializing Comm Python module\n"); return false; } Py_INCREF(&PyCommType); PyModule_AddObject(comm_module, "Comm", (PyObject *)&PyCommType); #ifdef USE_PYTHON_GC Py_INCREF(&PyGameControllerType); PyModule_AddObject(comm_module, "GameController", (PyObject *)&PyGameControllerType); #endif PyModule_AddObject(comm_module, "STATE_INITIAL", PyInt_FromLong(STATE_INITIAL)); PyModule_AddObject(comm_module, "STATE_SET", PyInt_FromLong(STATE_SET)); PyModule_AddObject(comm_module, "STATE_READY", PyInt_FromLong(STATE_READY)); PyModule_AddObject(comm_module, "STATE_PLAYING", PyInt_FromLong(STATE_PLAYING)); PyModule_AddObject(comm_module, "STATE_FINISHED", PyInt_FromLong(STATE_FINISHED)); PyModule_AddObject(comm_module, "PENALTY_NONE", PyInt_FromLong(PENALTY_NONE)); PyModule_AddObject(comm_module, "PENALTY_BALL_HOLDING", PyInt_FromLong(PENALTY_BALL_HOLDING)); PyModule_AddObject(comm_module, "PENALTY_GOALIE_PUSHING", PyInt_FromLong(PENALTY_GOALIE_PUSHING)); PyModule_AddObject(comm_module, "PENALTY_PLAYER_PUSHING", PyInt_FromLong(PENALTY_PLAYER_PUSHING)); PyModule_AddObject(comm_module, "PENALTY_ILLEGAL_DEFENDER", PyInt_FromLong(PENALTY_ILLEGAL_DEFENDER)); PyModule_AddObject(comm_module, "PENALTY_ILLEGAL_DEFENSE", PyInt_FromLong(PENALTY_ILLEGAL_DEFENSE)); PyModule_AddObject(comm_module, "PENALTY_OBSTRUCTION", PyInt_FromLong(PENALTY_OBSTRUCTION)); PyModule_AddObject(comm_module, "PENALTY_REQ_FOR_PICKUP", PyInt_FromLong(PENALTY_REQ_FOR_PICKUP)); PyModule_AddObject(comm_module, "PENALTY_LEAVING", PyInt_FromLong(PENALTY_LEAVING)); PyModule_AddObject(comm_module, "PENALTY_DAMAGE", PyInt_FromLong(PENALTY_DAMAGE)); PyModule_AddObject(comm_module, "PENALTY_MANUAL", PyInt_FromLong(PENALTY_MANUAL)); #ifdef USE_PYCOMM_FAKE_BACKEND Sensors *s = new Sensors(); Vision *v = new Vision(new NaoPose(s), new Profiler(µ_time)); PyObject *pcomm = PyComm_new(new Comm(s, v)); PyModule_AddObject(comm_module, "inst", pcomm); #endif return true; }