link_uniform_block_active * process_block(void *mem_ctx, struct hash_table *ht, ir_variable *var) { const uint32_t h = _mesa_hash_string(var->get_interface_type()->name); const hash_entry *const existing_block = _mesa_hash_table_search(ht, h, var->get_interface_type()->name); const glsl_type *const block_type = var->is_interface_instance() ? var->type : var->get_interface_type(); /* If a block with this block-name has not previously been seen, add it. * If a block with this block-name has been seen, it must be identical to * the block currently being examined. */ if (existing_block == NULL) { link_uniform_block_active *const b = rzalloc(mem_ctx, struct link_uniform_block_active); b->type = block_type; b->has_instance_name = var->is_interface_instance(); if (var->data.explicit_binding) { b->has_binding = true; b->binding = var->data.binding; } else { b->has_binding = false; b->binding = 0; } _mesa_hash_table_insert(ht, h, var->get_interface_type()->name, (void *) b); return b; } else {
int main(int argc, char **argv) { struct hash_table *ht; uint32_t hash_str1 = _mesa_hash_string(str1); uint32_t hash_str2 = _mesa_hash_string(str2); ht = _mesa_hash_table_create(NULL, _mesa_key_string_equal); _mesa_hash_table_insert(ht, hash_str1, str1, NULL); _mesa_hash_table_insert(ht, hash_str2, str2, NULL); _mesa_hash_table_destroy(ht, delete_callback); assert(delete_str1 && delete_str2); return 0; }