Blender  V2.93
BLI_ghash_utils.c File Reference
#include <string.h>
#include "MEM_guardedalloc.h"
#include "BLI_ghash.h"
#include "BLI_hash_mm2a.h"
#include "BLI_utildefines.h"
#include "BLI_strict_flags.h"

Go to the source code of this file.

Functions

Generic Key Hash & Comparison Functions
uint BLI_ghashutil_ptrhash (const void *key)
 
bool BLI_ghashutil_ptrcmp (const void *a, const void *b)
 
uint BLI_ghashutil_uinthash_v4 (const uint key[4])
 
uint BLI_ghashutil_uinthash_v4_murmur (const uint key[4])
 
bool BLI_ghashutil_uinthash_v4_cmp (const void *a, const void *b)
 
uint BLI_ghashutil_uinthash (uint key)
 
uint BLI_ghashutil_inthash_p (const void *ptr)
 
uint BLI_ghashutil_inthash_p_murmur (const void *ptr)
 
uint BLI_ghashutil_inthash_p_simple (const void *ptr)
 
bool BLI_ghashutil_intcmp (const void *a, const void *b)
 
size_t BLI_ghashutil_combine_hash (size_t hash_a, size_t hash_b)
 
uint BLI_ghashutil_strhash_n (const char *key, size_t n)
 
uint BLI_ghashutil_strhash_p (const void *ptr)
 
uint BLI_ghashutil_strhash_p_murmur (const void *ptr)
 
bool BLI_ghashutil_strcmp (const void *a, const void *b)
 
GHashPairBLI_ghashutil_pairalloc (const void *first, const void *second)
 
uint BLI_ghashutil_pairhash (const void *ptr)
 
bool BLI_ghashutil_paircmp (const void *a, const void *b)
 
void BLI_ghashutil_pairfree (void *ptr)
 
Convenience GHash Creation Functions
GHashBLI_ghash_ptr_new_ex (const char *info, const uint nentries_reserve)
 
GHashBLI_ghash_ptr_new (const char *info)
 
GHashBLI_ghash_str_new_ex (const char *info, const uint nentries_reserve)
 
GHashBLI_ghash_str_new (const char *info)
 
GHashBLI_ghash_int_new_ex (const char *info, const uint nentries_reserve)
 
GHashBLI_ghash_int_new (const char *info)
 
GHashBLI_ghash_pair_new_ex (const char *info, const uint nentries_reserve)
 
GHashBLI_ghash_pair_new (const char *info)
 
Convenience GSet Creation Functions
GSetBLI_gset_ptr_new_ex (const char *info, const uint nentries_reserve)
 
GSetBLI_gset_ptr_new (const char *info)
 
GSetBLI_gset_str_new_ex (const char *info, const uint nentries_reserve)
 
GSetBLI_gset_str_new (const char *info)
 
GSetBLI_gset_pair_new_ex (const char *info, const uint nentries_reserve)
 
GSetBLI_gset_pair_new (const char *info)
 
GSetBLI_gset_int_new_ex (const char *info, const uint nentries_reserve)
 
GSetBLI_gset_int_new (const char *info)
 

Detailed Description

Helper functions and implementations of standard data types for GHash (not its implementation).

Definition in file BLI_ghash_utils.c.

Function Documentation

◆ BLI_ghash_int_new()

GHash* BLI_ghash_int_new ( const char *  info)

◆ BLI_ghash_int_new_ex()

GHash* BLI_ghash_int_new_ex ( const char *  info,
const uint  nentries_reserve 
)

◆ BLI_ghash_pair_new()

GHash* BLI_ghash_pair_new ( const char *  info)

Definition at line 244 of file BLI_ghash_utils.c.

References BLI_ghash_pair_new_ex().

◆ BLI_ghash_pair_new_ex()

GHash* BLI_ghash_pair_new_ex ( const char *  info,
const uint  nentries_reserve 
)

◆ BLI_ghash_ptr_new()

GHash* BLI_ghash_ptr_new ( const char *  info)

Definition at line 217 of file BLI_ghash_utils.c.

References BLI_ghash_ptr_new_ex().

Referenced by BKE_mask_clipboard_copy_from_layer(), BKE_tracking_copy(), Freestyle::BlenderStrokeRenderer::BlenderStrokeRenderer(), BLI_array_store_is_valid(), bm_edgering_pair_calc(), bm_edgering_pair_store_create(), bm_face_region_pivot_edge_find(), BM_mesh_bevel(), BM_mesh_edgesplit(), BM_mesh_intersect(), BM_select_history_map_create(), bmo_inset_region_exec(), bmo_mesh_copy(), bmo_op_slots_init(), bmo_weld_verts_exec(), bpy_lib_exit(), cloth_sim_initialize_default_node_state(), drw_duplidata_load(), ED_gpencil_select_stroke_segment(), ED_object_data_xform_container_create(), ED_object_data_xform_container_item_ensure(), ED_object_xform_skip_child_container_create(), ED_transform_snap_object_context_create(), edbm_face_split_by_edges_exec(), EEVEE_materials_cache_init(), gpencil_analyze_strokes(), gpencil_interpolate_seq_exec(), gpencil_sculpt_brush_init(), gpencil_stroke_pair_table(), gpencil_strokes_copypastebuf_colors_material_to_name_create(), init_editNurb_keyIndex(), init_stabilization_working_context(), knife_add_cut(), knifetool_init(), make_object_duplilist_real(), menu_items_from_ui_create(), mesh_customdatacorrect_init_container_generic(), ntree_copy_data(), OVERLAY_armature_cache_init(), pbvh_bmesh_collapse_short_edges(), recalcData_gpencil_strokes(), sb_new_scratch(), scanfill_preprocess_self_isect(), snap_object_data_editmesh_get(), tracks_map_new(), WM_gizmomap_gizmo_hash_new(), workbench_opaque_cache_init(), and workbench_transparent_cache_init().

◆ BLI_ghash_ptr_new_ex()

GHash* BLI_ghash_ptr_new_ex ( const char *  info,
const unsigned int  nentries_reserve 
)

◆ BLI_ghash_str_new()

GHash* BLI_ghash_str_new ( const char *  info)

◆ BLI_ghash_str_new_ex()

GHash* BLI_ghash_str_new_ex ( const char *  info,
const uint  nentries_reserve 
)

◆ BLI_ghashutil_combine_hash()

size_t BLI_ghashutil_combine_hash ( size_t  hash_a,
size_t  hash_b 
)

◆ BLI_ghashutil_intcmp()

bool BLI_ghashutil_intcmp ( const void *  a,
const void *  b 
)

◆ BLI_ghashutil_inthash_p()

uint BLI_ghashutil_inthash_p ( const void *  ptr)

Definition at line 101 of file BLI_ghash_utils.c.

References ptr.

Referenced by BLI_ghash_int_new_ex(), BLI_gset_int_new_ex(), and TEST().

◆ BLI_ghashutil_inthash_p_murmur()

uint BLI_ghashutil_inthash_p_murmur ( const void *  ptr)

Definition at line 115 of file BLI_ghash_utils.c.

References BLI_hash_mm2(), and ptr.

Referenced by TEST().

◆ BLI_ghashutil_inthash_p_simple()

uint BLI_ghashutil_inthash_p_simple ( const void *  ptr)

Definition at line 122 of file BLI_ghash_utils.c.

References POINTER_AS_UINT, and ptr.

Referenced by BLO_memfile_write_init().

◆ BLI_ghashutil_pairalloc()

GHashPair* BLI_ghashutil_pairalloc ( const void *  first,
const void *  second 
)

Definition at line 179 of file BLI_ghash_utils.c.

References GHashPair::first, MEM_mallocN, and GHashPair::second.

Referenced by bm_edgering_pair_calc().

◆ BLI_ghashutil_paircmp()

bool BLI_ghashutil_paircmp ( const void *  a,
const void *  b 
)

Definition at line 194 of file BLI_ghash_utils.c.

References A, Freestyle::a, and B.

Referenced by BLI_ghash_pair_new_ex(), and BLI_gset_pair_new_ex().

◆ BLI_ghashutil_pairfree()

void BLI_ghashutil_pairfree ( void *  ptr)

Definition at line 202 of file BLI_ghash_utils.c.

References MEM_freeN, and ptr.

◆ BLI_ghashutil_pairhash()

uint BLI_ghashutil_pairhash ( const void *  ptr)

◆ BLI_ghashutil_ptrcmp()

bool BLI_ghashutil_ptrcmp ( const void *  a,
const void *  b 
)

◆ BLI_ghashutil_ptrhash()

uint BLI_ghashutil_ptrhash ( const void *  key)

◆ BLI_ghashutil_strcmp()

bool BLI_ghashutil_strcmp ( const void *  a,
const void *  b 
)

◆ BLI_ghashutil_strhash_n()

uint BLI_ghashutil_strhash_n ( const char *  key,
size_t  n 
)

This function implements the widely used "djb" hash apparently posted by Daniel Bernstein to comp.lang.c some time ago. The 32 bit unsigned hash value starts at 5381 and for each byte 'c' in the string, is updated: hash = hash * 33 + c. This function uses the signed value of each byte.

note: this is the same hash method that glib 2.34.0 uses.

Definition at line 146 of file BLI_ghash_utils.c.

Referenced by ui_popup_string_hash().

◆ BLI_ghashutil_strhash_p()

uint BLI_ghashutil_strhash_p ( const void *  ptr)

◆ BLI_ghashutil_strhash_p_murmur()

uint BLI_ghashutil_strhash_p_murmur ( const void *  ptr)

◆ BLI_ghashutil_uinthash()

uint BLI_ghashutil_uinthash ( uint  key)

◆ BLI_ghashutil_uinthash_v4()

uint BLI_ghashutil_uinthash_v4 ( const uint  key[4])

Definition at line 66 of file BLI_ghash_utils.c.

References hash.

◆ BLI_ghashutil_uinthash_v4_cmp()

bool BLI_ghashutil_uinthash_v4_cmp ( const void *  a,
const void *  b 
)

Definition at line 84 of file BLI_ghash_utils.c.

References Freestyle::a.

Referenced by filelist_cache_init(), filelist_new(), and TEST().

◆ BLI_ghashutil_uinthash_v4_murmur()

uint BLI_ghashutil_uinthash_v4_murmur ( const uint  key[4])

Definition at line 79 of file BLI_ghash_utils.c.

References BLI_hash_mm2().

◆ BLI_gset_int_new()

GSet* BLI_gset_int_new ( const char *  info)

◆ BLI_gset_int_new_ex()

GSet* BLI_gset_int_new_ex ( const char *  info,
const uint  nentries_reserve 
)

◆ BLI_gset_pair_new()

GSet* BLI_gset_pair_new ( const char *  info)

Definition at line 277 of file BLI_ghash_utils.c.

References BLI_gset_pair_new_ex().

Referenced by bm_edgering_pair_calc().

◆ BLI_gset_pair_new_ex()

GSet* BLI_gset_pair_new_ex ( const char *  info,
const uint  nentries_reserve 
)

◆ BLI_gset_ptr_new()

GSet* BLI_gset_ptr_new ( const char *  info)

◆ BLI_gset_ptr_new_ex()

GSet* BLI_gset_ptr_new_ex ( const char *  info,
const uint  nentries_reserve 
)

◆ BLI_gset_str_new()

GSet* BLI_gset_str_new ( const char *  info)

◆ BLI_gset_str_new_ex()

GSet* BLI_gset_str_new_ex ( const char *  info,
const uint  nentries_reserve 
)