static PyObject *append(PyObject *self, PyObject *data) { int fail; if(PyUnicode_Check(data)) { fail = add_to_data((ligolw_Tokenizer *) self, data); } else if(PyString_Check(data)) { if(!(data = PyUnicode_FromObject(data))) return NULL; fail = add_to_data((ligolw_Tokenizer *) self, data); Py_DECREF(data); } else { PyErr_SetObject(PyExc_TypeError, data); return NULL; } if(fail < 0) return PyErr_NoMemory(); Py_INCREF(self); return self; }
void get_good_entity(t_trame *trame, t_id_req *id_req, t_game_info_scale *save, t_game_info_scale *select, t_info_scale *sel, int app) { char *tmp; int i; int d; int flag_sel; int flag_att; t_req_info_scale scale; t_game_select_move dest; char *attack; int len; int c; flag_sel = 0; flag_att = 0; memcpy(&scale, trame->msg, trame->len); tmp = fill_data(sizeof(int), (char*)&id_req->select); len = sizeof(int); attack = fill_data(sizeof(int), (char*)&id_req->attac); for (i = 0; i < (int)scale.nb_ent; i++) { for (c = 0; c <= FW_MAX_SELECT - 1 && sel[c].id != -1; c++) ; for (d = 0; d <= FW_MAX_SELECT - 1; d++) if (select[d].id_req == scale.id_req) { memcpy(&(sel[c]), &scale.ent[i], sizeof(scale.ent[i])); select[d].id_req = -1; c++; flag_sel = 1; break; } for (d = 0; d < MAX_SAVE_EVENTS; d++) if (save[d].id_req == scale.id_req) { attack = add_to_data(sizeof(int), (char*)attack, sizeof(scale.ent[i].id), (char*)&scale.ent[i].id); flag_att = 1; break; } if (d == MAX_SAVE_EVENTS && flag_sel != 1) { memcpy(&(sel[c]), &scale.ent[i], sizeof(scale.ent[i])); flag_sel = 1; } } if (flag_sel == 1) { for (c = 0; c <= FW_MAX_SELECT - 1 && sel[c].id != -1; c++) { ; tmp = add_to_data(len, (char*)tmp, sizeof(sel[c].id), (char*)&sel[c].id); len += sizeof(sel[c].id); } stock_msg(&cnt->clients[0], TAG_SELECT, len , (void*)tmp); id_req->select++; } else if (flag_att == 1 && scale.ent[i - 1].app != app) { fprintf(stderr, "spy === %i\n", scale.ent[i].app); stock_msg(&cnt->clients[0], TAG_SELECT_ATTACK, sizeof(int) + sizeof(scale.ent[i].id) , (void*)attack); id_req->attac++; } if (i == 0) for (d = 0; d < MAX_SAVE_EVENTS; d++) if (save[d].id_req == scale.id_req) { memcpy(&(dest), &save[d], sizeof(save[d])); stock_msg(&cnt->clients[0], TAG_SELECT_MOVE, sizeof(dest) , (void*)&dest); } free(tmp); free(attack); }