Пример #1
0
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;
}
Пример #2
0
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);
}