Example #1
0
int main(void)
{
	{
		list_t *dl = make_double_list(8);
		assert(dl->size == 0);
		assert(dl->elemsize == sizeof(double));

		double d = 1.00;
		append(dl, &d);
		assert(dl->size == 1);
		assert(((double* )dl->elements)[0] == d);

//		double d2 = 2.00;
//		assert(append_all(dl, 3, &d, &d, &d2));
//		assert(dl->size == 4);
//		assert(((double* )dl->elements)[0] == d);
//		assert(((double* )dl->elements)[1] == d);
//		assert(((double* )dl->elements)[2] == d);
//		assert(((double* )dl->elements)[3] == d2);

		free_list(dl);
	}

	{
		list_t *il = make_int_list(8);
		assert(il->size == 0);
		assert(il->elemsize == sizeof(int));

		int i1 = 42;
		append(il, &i1);
		assert(il->size == 1);
		assert(((int* )il->elements)[0] == i1);

		int i2 = 23;
		append(il, &i2);
		assert(il->size == 2);
		assert(((int* )il->elements)[0] == i1);
		assert(((int* )il->elements)[1] == i2);

		list_t *il2 = make_int_list(8);
		append(il2, &i2);
		append(il2, &i1);
		assert(il->size == 2);
		assert(((int* )il2->elements)[0] == i2);
		assert(((int* )il2->elements)[1] == i1);

		assert(append_list(il2, il));

		assert(il2->size == 4);
		assert(((int* )il2->elements)[0] == i2);
		assert(((int* )il2->elements)[1] == i1);
		assert(((int* )il2->elements)[2] == i1);
		assert(((int* )il2->elements)[3] == i2);

		free_list(il);
		free_list(il2);
	}
}
Example #2
0
struct int_list *
parse_atoms(struct simple_buffer *buffer, unsigned limit)
{
  unsigned count;
  unsigned i;
  struct int_list *res;

  assert(limit);

  if (!LEFT)
    return make_int_list(0, -1);
  
  /* Count commas (no commas means one atom) */
  for (i = buffer->pos, count = 1; i < buffer->capacity; i++)
    if (buffer->data[i] == ',')
      {
	if (count >= limit)
	  return NULL;
	count++;
      }

  res = alloc_int_list(count);

  for (i = 0; i < count; i++)
    {
      enum lsh_atom atom;
      
      if (!parse_next_atom(buffer, &atom))
	{
	  KILL(res);
	  return NULL;
	}
      LIST(res)[i] = atom;
    }

  return res;
}