Exemple #1
0
void*
multiset_add_item (multiset_t* mset, void* item)
{
  void* ret;
  int cmp;
  list_t** liter;
  set_t* set;
  ret = NULL;
  set = (set_t*)mset;
  if(set && set->cmp) {
    cmp = 1;
    liter = &(set->items);
    while(*liter) {
      cmp = set->cmp((list_get_data(item_t, (*liter)))->item, item);
      if(cmp >= 0)
	break;
      else
	liter = &((*liter)->next);
    }
    if(!cmp) {
      (list_get_data(item_t, (*liter)))->size++;
      ret = (list_get_data(item_t, (*liter)))->item;
    } else {
      *liter = list_add_data(XMALLOC(list_t, 1), *liter, XMALLOC(item_t, 1));
      (list_get_data(item_t, (*liter)))->item = item;
      (list_get_data(item_t, (*liter)))->size = 1;
      mset->dorder++;
      ret = item;
    }
    set->imark = NULL;
    set->order++;
    mset->step = 0;
  } else warning("null pointer");
  return ret;
}
Exemple #2
0
void _add_block(t_context *C,t_block *block)
{
	// get list
	t_set *set = get_current_set(C);
	t_lst *list = set->blocks;

	list_add_data(list, block);
}
Exemple #3
0
void block_brick_add(t_block *block,t_node *node_brick)
{
	t_brick *brick=node_brick->data;
	brick->block=block;
	brick->geom.block_pos=block->tot_bricks;
	block->tot_bricks++;

	list_add_data(block->bricks,brick);
}
Exemple #4
0
void list_add_list(List* list, const List* ll)
{
   ListData data;

   assert(list_is_valid(list));
   assert(list_is_valid(ll));
   assert(list->type == LIST_LIST);
   
   data.list = list_copy(ll);

   list_add_data(list, &data);
}
Exemple #5
0
void list_add_entry(List* list, const Entry* entry)
{
   ListData data;

   assert(list_is_valid(list));
   assert(entry_is_valid(entry));
   assert(list->type == LIST_ENTRY);

   data.entry = entry_copy(entry);

   list_add_data(list, &data);
}
Exemple #6
0
void list_add_tuple(List* list, const Tuple* tuple)
{
   ListData data;

   assert(list_is_valid(list));
   assert(tuple_is_valid(tuple));
   assert(list->type == LIST_TUPLE);
   
   data.tuple = tuple_copy(tuple);

   list_add_data(list, &data);
}
Exemple #7
0
void list_add_elem(List* list, const Elem* elem)
{
   ListData data;

   assert(list_is_valid(list));
   assert(elem_is_valid(elem));
   assert(list->type == LIST_ELEM);
   
   data.elem = elem_copy(elem);

   list_add_data(list, &data);
}
Exemple #8
0
void screen_block_add(t_screen *screen, t_block *block)
{
	t_context *C = ctx_get();

	if(screen->blocks)
	{
		list_add_data(screen->blocks, block);
	}
	else
	{
		t_node *node = scene_add(C->scene, dt_lst, "lst");
		t_lst *lst = node->data;
		screen->blocks = lst;

		screen_block_add(screen, block);
	}
}
Exemple #9
0
static List* list_new(ListType type, const ListData* data)
{
   List* list = calloc(1, sizeof(*list));
   
   assert(list != NULL);
   assert(data != NULL);
   
   list->refc        = 1;
   list->elems       = 0;
   list->type        = type;
   list->anchor.prev = &list->anchor;
   list->anchor.next = &list->anchor;
   
   SID_set(list, LIST_SID);
   assert(list_is_valid(list));

   list_add_data(list, data);

   return list;
}
Exemple #10
0
t_screen *screen_add_3d(const char *name, void (* draw)(t_screen *s))
{
	t_context *C=ctx_get();

	t_node *node=scene_add(C->scene,dt_screen,name);
	t_screen *screen=node->data;

	screen->keymap=keymap_generic;
	screen->draw=draw;

	lst_add(C->ui->screens,node,name);

	// Lst
	t_node *node_lst = scene_add( C->scene, dt_list, "lst_screen");
	t_lst *lst = node_lst->data;

	screen->viewports = lst;

	// Viewport
	t_node *node_viewport = scene_add( C->scene, dt_viewport, "viewport");
	t_viewport *viewport = node_viewport->data;

	// Camera
	t_node *node_camera = scene_add( C->scene, dt_camera, name);
	t_camera *camera = node_camera->data;
	camera_add_controls( camera);

	viewport->camera = camera;
	viewport_add_controls( viewport);


	screen->width = C->app->window->width;
	screen->height = C->app->window->height;

	viewport->width = C->app->window->width;
	viewport->height = C->app->window->height;

	list_add_data(screen->viewports, viewport);

	return screen;
}