CX Framework
Cross-platform C utility framework
Loading...
Searching...
No Matches
Core Types & Access

Macros

#define htSize(ref)   ((ref) ? _htHdr((ref))->valid : 0)
 
#define htKeyType(ref)   ((ref) ? _htHdr((ref))->keytype : stType(none))
 
#define htValType(ref)   ((ref) ? _htHdr((ref))->valtype : stType(none))
 
#define hteKeyPtrHdr(hdr, type, elem)   ((stStorageType(type)*)_hteElemKeyPtr(hdr, elem))
 
#define hteValPtrHdr(hdr, type, elem)   ((stStorageType(type)*)_hteElemValPtr(hdr, elem))
 
#define hteKeyPtr(ref, type, elem)   hteKeyPtrHdr(_htHdr(ref), type, elem)
 
#define hteValPtr(ref, type, elem)   hteValPtrHdr(_htHdr(ref), type, elem)
 
#define hteKey(ref, type, elem)   (*hteKeyPtr(ref, type, elem))
 
#define hteVal(ref, type, elem)   (*hteValPtr(ref, type, elem))
 
#define htiKeyPtr(type, iter)   (hteKeyPtrHdr((iter).hdr, type, (iter).slot))
 
#define htiValPtr(type, iter)   (hteValPtrHdr((iter).hdr, type, (iter).slot))
 
#define htiKey(type, iter)   (*htiKeyPtr(type, iter))
 
#define htiVal(type, iter)   (*htiValPtr(type, iter))
 

Typedefs

typedef struct hashtable_ref * hashtable
 

Detailed Description

Core data structures, table information queries, and element access functions

Macro Definition Documentation

◆ hteKey

#define hteKey (   ref,
  type,
  elem 
)    (*hteKeyPtr(ref, type, elem))

[type] hteKey(hashtable ref, type, htelem elem)

Returns the key stored at the given element (by value)

Parameters
refThe hash table
typeType of the key
elemElement handle
Returns
Key value

Definition at line 156 of file hashtable.h.

◆ hteKeyPtr

#define hteKeyPtr (   ref,
  type,
  elem 
)    hteKeyPtrHdr(_htHdr(ref), type, elem)

[type] *hteKeyPtr(hashtable ref, type, htelem elem)

Returns a typed pointer to the key stored at the given element The element handle must be obtained from htInsert() or htFind()

Parameters
refThe hash table
typeType of the key
elemElement handle
Returns
Typed pointer to the key

Definition at line 137 of file hashtable.h.

◆ hteKeyPtrHdr

#define hteKeyPtrHdr (   hdr,
  type,
  elem 
)    ((stStorageType(type)*)_hteElemKeyPtr(hdr, elem))

[type] *hteKeyPtrHdr(HashTableHeader *hdr, type, htelem elem)

Returns a typed pointer to the key stored at the given element Internal version that takes a header pointer directly

Parameters
hdrHash table header pointer
typeType of the key
elemElement handle
Returns
Typed pointer to the key

Definition at line 117 of file hashtable.h.

◆ hteVal

#define hteVal (   ref,
  type,
  elem 
)    (*hteValPtr(ref, type, elem))

[type] hteVal(hashtable ref, type, htelem elem)

Returns the value stored at the given element (by value)

Parameters
refThe hash table
typeType of the value
elemElement handle
Returns
Value

Definition at line 165 of file hashtable.h.

◆ hteValPtr

#define hteValPtr (   ref,
  type,
  elem 
)    hteValPtrHdr(_htHdr(ref), type, elem)

[type] *hteValPtr(hashtable ref, type, htelem elem)

Returns a typed pointer to the value stored at the given element The element handle must be obtained from htInsert() or htFind()

Parameters
refThe hash table
typeType of the value
elemElement handle
Returns
Typed pointer to the value

Definition at line 147 of file hashtable.h.

◆ hteValPtrHdr

#define hteValPtrHdr (   hdr,
  type,
  elem 
)    ((stStorageType(type)*)_hteElemValPtr(hdr, elem))

[type] *hteValPtrHdr(HashTableHeader *hdr, type, htelem elem)

Returns a typed pointer to the value stored at the given element Internal version that takes a header pointer directly

Parameters
hdrHash table header pointer
typeType of the value
elemElement handle
Returns
Typed pointer to the value

Definition at line 127 of file hashtable.h.

◆ htiKey

#define htiKey (   type,
  iter 
)    (*htiKeyPtr(type, iter))

[type] htiKey(type, htiter iter)

Returns the key at the current iterator position (by value)

Parameters
typeType of the key
iterHash table iterator
Returns
Key value

Definition at line 189 of file hashtable.h.

◆ htiKeyPtr

#define htiKeyPtr (   type,
  iter 
)    (hteKeyPtrHdr((iter).hdr, type, (iter).slot))

[type] *htiKeyPtr(type, htiter iter)

Returns a typed pointer to the key at the current iterator position

Parameters
typeType of the key
iterHash table iterator
Returns
Typed pointer to the key

Definition at line 173 of file hashtable.h.

◆ htiVal

#define htiVal (   type,
  iter 
)    (*htiValPtr(type, iter))

[type] htiVal(type, htiter iter)

Returns the value at the current iterator position (by value)

Parameters
typeType of the value
iterHash table iterator
Returns
Value

Definition at line 197 of file hashtable.h.

◆ htiValPtr

#define htiValPtr (   type,
  iter 
)    (hteValPtrHdr((iter).hdr, type, (iter).slot))

[type] *htiValPtr(type, htiter iter)

Returns a typed pointer to the value at the current iterator position

Parameters
typeType of the value
iterHash table iterator
Returns
Typed pointer to the value

Definition at line 181 of file hashtable.h.

◆ htKeyType

#define htKeyType (   ref)    ((ref) ? _htHdr((ref))->keytype : stType(none))

stype htKeyType(hashtable ref)

Returns the canonical type descriptor for the hash table's keys.

Parameters
refThe hash table to query
Returns
Canonical key type descriptor, or NULL if ref is NULL

Definition at line 97 of file hashtable.h.

◆ htSize

#define htSize (   ref)    ((ref) ? _htHdr((ref))->valid : 0)

uint32 htSize(hashtable ref)

Returns the number of valid entries in the hash table

Parameters
refThe hash table to query
Returns
Number of valid entries in the table

Definition at line 89 of file hashtable.h.

◆ htValType

#define htValType (   ref)    ((ref) ? _htHdr((ref))->valtype : stType(none))

stype htValType(hashtable ref)

Returns the canonical type descriptor for the hash table's values.

For hash sets (initialized with valtype = none), returns stType(none).

Parameters
refThe hash table to query
Returns
Canonical value type descriptor, or NULL if ref is NULL

Definition at line 107 of file hashtable.h.

Typedef Documentation

◆ hashtable

typedef struct hashtable_ref* hashtable

Opaque handle to a hash table Must be destroyed with htDestroy() when no longer needed

Definition at line 28 of file hashtable.h.