PostgreSQL Source Code  git master
simplehash.h File Reference
#include "port/pg_bitutils.h"
Include dependency graph for simplehash.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  SH_TYPE
 
struct  SH_ITERATOR
 

Macros

#define SH_MAKE_PREFIX(a)   CppConcat(a,_)
 
#define SH_MAKE_NAME(name)   SH_MAKE_NAME_(SH_MAKE_PREFIX(SH_PREFIX),name)
 
#define SH_MAKE_NAME_(a, b)   CppConcat(a,b)
 
#define SH_TYPE   SH_MAKE_NAME(hash)
 
#define SH_STATUS   SH_MAKE_NAME(status)
 
#define SH_STATUS_EMPTY   SH_MAKE_NAME(SH_EMPTY)
 
#define SH_STATUS_IN_USE   SH_MAKE_NAME(SH_IN_USE)
 
#define SH_ITERATOR   SH_MAKE_NAME(iterator)
 
#define SH_CREATE   SH_MAKE_NAME(create)
 
#define SH_DESTROY   SH_MAKE_NAME(destroy)
 
#define SH_RESET   SH_MAKE_NAME(reset)
 
#define SH_INSERT   SH_MAKE_NAME(insert)
 
#define SH_INSERT_HASH   SH_MAKE_NAME(insert_hash)
 
#define SH_DELETE_ITEM   SH_MAKE_NAME(delete_item)
 
#define SH_DELETE   SH_MAKE_NAME(delete)
 
#define SH_LOOKUP   SH_MAKE_NAME(lookup)
 
#define SH_LOOKUP_HASH   SH_MAKE_NAME(lookup_hash)
 
#define SH_GROW   SH_MAKE_NAME(grow)
 
#define SH_START_ITERATE   SH_MAKE_NAME(start_iterate)
 
#define SH_START_ITERATE_AT   SH_MAKE_NAME(start_iterate_at)
 
#define SH_ITERATE   SH_MAKE_NAME(iterate)
 
#define SH_ALLOCATE   SH_MAKE_NAME(allocate)
 
#define SH_FREE   SH_MAKE_NAME(free)
 
#define SH_STAT   SH_MAKE_NAME(stat)
 
#define SH_COMPUTE_SIZE   SH_MAKE_NAME(compute_size)
 
#define SH_UPDATE_PARAMETERS   SH_MAKE_NAME(update_parameters)
 
#define SH_NEXT   SH_MAKE_NAME(next)
 
#define SH_PREV   SH_MAKE_NAME(prev)
 
#define SH_DISTANCE_FROM_OPTIMAL   SH_MAKE_NAME(distance)
 
#define SH_INITIAL_BUCKET   SH_MAKE_NAME(initial_bucket)
 
#define SH_ENTRY_HASH   SH_MAKE_NAME(entry_hash)
 
#define SH_INSERT_HASH_INTERNAL   SH_MAKE_NAME(insert_hash_internal)
 
#define SH_LOOKUP_HASH_INTERNAL   SH_MAKE_NAME(lookup_hash_internal)
 

Typedefs

typedef struct SH_TYPE SH_TYPE
 
typedef enum SH_STATUS SH_STATUS
 
typedef struct SH_ITERATOR SH_ITERATOR
 

Enumerations

enum  SH_STATUS { SH_STATUS_EMPTY = 0x00 , SH_STATUS_IN_USE = 0x01 }
 

Functions

SH_SCOPE SH_TYPESH_CREATE (MemoryContext ctx, uint32 nelements, void *private_data)
 
SH_SCOPE void SH_DESTROY (SH_TYPE *tb)
 
SH_SCOPE void SH_RESET (SH_TYPE *tb)
 
SH_SCOPE void SH_GROW (SH_TYPE *tb, uint64 newsize)
 
SH_SCOPE SH_ELEMENT_TYPESH_INSERT (SH_TYPE *tb, SH_KEY_TYPE key, bool *found)
 
SH_SCOPE SH_ELEMENT_TYPESH_INSERT_HASH (SH_TYPE *tb, SH_KEY_TYPE key, uint32 hash, bool *found)
 
SH_SCOPE SH_ELEMENT_TYPESH_LOOKUP (SH_TYPE *tb, SH_KEY_TYPE key)
 
SH_SCOPE SH_ELEMENT_TYPESH_LOOKUP_HASH (SH_TYPE *tb, SH_KEY_TYPE key, uint32 hash)
 
SH_SCOPE void SH_DELETE_ITEM (SH_TYPE *tb, SH_ELEMENT_TYPE *entry)
 
SH_SCOPE bool SH_DELETE (SH_TYPE *tb, SH_KEY_TYPE key)
 
SH_SCOPE void SH_START_ITERATE (SH_TYPE *tb, SH_ITERATOR *iter)
 
SH_SCOPE void SH_START_ITERATE_AT (SH_TYPE *tb, SH_ITERATOR *iter, uint32 at)
 
SH_SCOPE SH_ELEMENT_TYPESH_ITERATE (SH_TYPE *tb, SH_ITERATOR *iter)
 
SH_SCOPE void SH_STAT (SH_TYPE *tb)
 

Macro Definition Documentation

◆ SH_ALLOCATE

#define SH_ALLOCATE   SH_MAKE_NAME(allocate)

Definition at line 126 of file simplehash.h.

◆ SH_COMPUTE_SIZE

#define SH_COMPUTE_SIZE   SH_MAKE_NAME(compute_size)

Definition at line 131 of file simplehash.h.

◆ SH_CREATE

#define SH_CREATE   SH_MAKE_NAME(create)

Definition at line 113 of file simplehash.h.

◆ SH_DELETE

#define SH_DELETE   SH_MAKE_NAME(delete)

Definition at line 119 of file simplehash.h.

◆ SH_DELETE_ITEM

#define SH_DELETE_ITEM   SH_MAKE_NAME(delete_item)

Definition at line 118 of file simplehash.h.

◆ SH_DESTROY

#define SH_DESTROY   SH_MAKE_NAME(destroy)

Definition at line 114 of file simplehash.h.

◆ SH_DISTANCE_FROM_OPTIMAL

#define SH_DISTANCE_FROM_OPTIMAL   SH_MAKE_NAME(distance)

Definition at line 135 of file simplehash.h.

◆ SH_ENTRY_HASH

#define SH_ENTRY_HASH   SH_MAKE_NAME(entry_hash)

Definition at line 137 of file simplehash.h.

◆ SH_FREE

#define SH_FREE   SH_MAKE_NAME(free)

Definition at line 127 of file simplehash.h.

◆ SH_GROW

#define SH_GROW   SH_MAKE_NAME(grow)

Definition at line 122 of file simplehash.h.

◆ SH_INITIAL_BUCKET

#define SH_INITIAL_BUCKET   SH_MAKE_NAME(initial_bucket)

Definition at line 136 of file simplehash.h.

◆ SH_INSERT

#define SH_INSERT   SH_MAKE_NAME(insert)

Definition at line 116 of file simplehash.h.

◆ SH_INSERT_HASH

#define SH_INSERT_HASH   SH_MAKE_NAME(insert_hash)

Definition at line 117 of file simplehash.h.

◆ SH_INSERT_HASH_INTERNAL

#define SH_INSERT_HASH_INTERNAL   SH_MAKE_NAME(insert_hash_internal)

Definition at line 138 of file simplehash.h.

◆ SH_ITERATE

#define SH_ITERATE   SH_MAKE_NAME(iterate)

Definition at line 125 of file simplehash.h.

◆ SH_ITERATOR

#define SH_ITERATOR   SH_MAKE_NAME(iterator)

Definition at line 110 of file simplehash.h.

◆ SH_LOOKUP

#define SH_LOOKUP   SH_MAKE_NAME(lookup)

Definition at line 120 of file simplehash.h.

◆ SH_LOOKUP_HASH

#define SH_LOOKUP_HASH   SH_MAKE_NAME(lookup_hash)

Definition at line 121 of file simplehash.h.

◆ SH_LOOKUP_HASH_INTERNAL

#define SH_LOOKUP_HASH_INTERNAL   SH_MAKE_NAME(lookup_hash_internal)

Definition at line 139 of file simplehash.h.

◆ SH_MAKE_NAME

#define SH_MAKE_NAME (   name)    SH_MAKE_NAME_(SH_MAKE_PREFIX(SH_PREFIX),name)

Definition at line 100 of file simplehash.h.

◆ SH_MAKE_NAME_

#define SH_MAKE_NAME_ (   a,
  b 
)    CppConcat(a,b)

Definition at line 101 of file simplehash.h.

◆ SH_MAKE_PREFIX

#define SH_MAKE_PREFIX (   a)    CppConcat(a,_)

Definition at line 99 of file simplehash.h.

◆ SH_NEXT

#define SH_NEXT   SH_MAKE_NAME(next)

Definition at line 133 of file simplehash.h.

◆ SH_PREV

#define SH_PREV   SH_MAKE_NAME(prev)

Definition at line 134 of file simplehash.h.

◆ SH_RESET

#define SH_RESET   SH_MAKE_NAME(reset)

Definition at line 115 of file simplehash.h.

◆ SH_START_ITERATE

#define SH_START_ITERATE   SH_MAKE_NAME(start_iterate)

Definition at line 123 of file simplehash.h.

◆ SH_START_ITERATE_AT

#define SH_START_ITERATE_AT   SH_MAKE_NAME(start_iterate_at)

Definition at line 124 of file simplehash.h.

◆ SH_STAT

#define SH_STAT   SH_MAKE_NAME(stat)

Definition at line 128 of file simplehash.h.

◆ SH_STATUS

#define SH_STATUS   SH_MAKE_NAME(status)

Definition at line 107 of file simplehash.h.

◆ SH_STATUS_EMPTY

#define SH_STATUS_EMPTY   SH_MAKE_NAME(SH_EMPTY)

Definition at line 108 of file simplehash.h.

◆ SH_STATUS_IN_USE

#define SH_STATUS_IN_USE   SH_MAKE_NAME(SH_IN_USE)

Definition at line 109 of file simplehash.h.

◆ SH_TYPE

#define SH_TYPE   SH_MAKE_NAME(hash)

Definition at line 106 of file simplehash.h.

◆ SH_UPDATE_PARAMETERS

#define SH_UPDATE_PARAMETERS   SH_MAKE_NAME(update_parameters)

Definition at line 132 of file simplehash.h.

Typedef Documentation

◆ SH_ITERATOR

typedef struct SH_ITERATOR SH_ITERATOR

◆ SH_STATUS

typedef enum SH_STATUS SH_STATUS

◆ SH_TYPE

typedef struct SH_TYPE SH_TYPE

Enumeration Type Documentation

◆ SH_STATUS

enum SH_STATUS
Enumerator
SH_STATUS_EMPTY 
SH_STATUS_IN_USE 

Definition at line 175 of file simplehash.h.

176 {
177  SH_STATUS_EMPTY = 0x00,
178  SH_STATUS_IN_USE = 0x01
179 } SH_STATUS;
#define SH_STATUS
Definition: simplehash.h:107
#define SH_STATUS_IN_USE
Definition: simplehash.h:109
#define SH_STATUS_EMPTY
Definition: simplehash.h:108

Function Documentation

◆ SH_CREATE()

SH_SCOPE SH_TYPE* SH_CREATE ( MemoryContext  ctx,
uint32  nelements,
void *  private_data 
)

◆ SH_DELETE()

SH_SCOPE bool SH_DELETE ( SH_TYPE tb,
SH_KEY_TYPE  key 
)

◆ SH_DELETE_ITEM()

SH_SCOPE void SH_DELETE_ITEM ( SH_TYPE tb,
SH_ELEMENT_TYPE entry 
)

◆ SH_DESTROY()

SH_SCOPE void SH_DESTROY ( SH_TYPE tb)

◆ SH_GROW()

SH_SCOPE void SH_GROW ( SH_TYPE tb,
uint64  newsize 
)

◆ SH_INSERT()

SH_SCOPE SH_ELEMENT_TYPE* SH_INSERT ( SH_TYPE tb,
SH_KEY_TYPE  key,
bool found 
)

◆ SH_INSERT_HASH()

SH_SCOPE SH_ELEMENT_TYPE* SH_INSERT_HASH ( SH_TYPE tb,
SH_KEY_TYPE  key,
uint32  hash,
bool found 
)

◆ SH_ITERATE()

SH_SCOPE SH_ELEMENT_TYPE* SH_ITERATE ( SH_TYPE tb,
SH_ITERATOR iter 
)

◆ SH_LOOKUP()

SH_SCOPE SH_ELEMENT_TYPE* SH_LOOKUP ( SH_TYPE tb,
SH_KEY_TYPE  key 
)

◆ SH_LOOKUP_HASH()

SH_SCOPE SH_ELEMENT_TYPE* SH_LOOKUP_HASH ( SH_TYPE tb,
SH_KEY_TYPE  key,
uint32  hash 
)

◆ SH_RESET()

SH_SCOPE void SH_RESET ( SH_TYPE tb)

◆ SH_START_ITERATE()

SH_SCOPE void SH_START_ITERATE ( SH_TYPE tb,
SH_ITERATOR iter 
)

◆ SH_START_ITERATE_AT()

SH_SCOPE void SH_START_ITERATE_AT ( SH_TYPE tb,
SH_ITERATOR iter,
uint32  at 
)

◆ SH_STAT()

SH_SCOPE void SH_STAT ( SH_TYPE tb)