static bool ghash_insert_link( GHash *gh, void *key, void *val, bool use_test, MemArena *mem_arena) { struct LinkBase *ls_base; LinkNode *ls; ls_base = BLI_ghash_lookup(gh, key); if (ls_base) { if (use_test && (BLI_linklist_index(ls_base->list, key) != -1)) { return false; } } else { ls_base = BLI_memarena_alloc(mem_arena, sizeof(*ls_base)); ls_base->list = NULL; ls_base->list_len = 0; BLI_ghash_insert(gh, key, ls_base); } ls = BLI_memarena_alloc(mem_arena, sizeof(*ls)); ls->next = ls_base->list; ls->link = val; ls_base->list = ls; ls_base->list_len += 1; return true; }
static bool ghash_insert_link( GHash *gh, void *key, void *val, bool use_test, MemArena *mem_arena) { void **ls_base_p; struct LinkBase *ls_base; LinkNode *ls; if (!BLI_ghash_ensure_p(gh, key, &ls_base_p)) { ls_base = *ls_base_p = BLI_memarena_alloc(mem_arena, sizeof(*ls_base)); ls_base->list = NULL; ls_base->list_len = 0; } else { ls_base = *ls_base_p; if (use_test && (BLI_linklist_index(ls_base->list, val) != -1)) { return false; } } ls = BLI_memarena_alloc(mem_arena, sizeof(*ls)); ls->next = ls_base->list; ls->link = val; ls_base->list = ls; ls_base->list_len += 1; return true; }
static void vert_dissolve_add( struct ISectState *s, BMVert *v) { BLI_assert(v->head.htype == BM_VERT); BLI_assert(!BM_elem_flag_test(v, BM_ELEM_TAG)); BLI_assert(BLI_linklist_index(s->vert_dissolve, v) == -1); BM_elem_flag_enable(v, BM_ELEM_TAG); BLI_linklist_prepend_arena(&s->vert_dissolve, v, s->mem_arena); }
bool bc_is_in_Export_set(LinkNode *export_set, Object *ob) { return (BLI_linklist_index(export_set, ob) != -1); }