function lfds700_hash_a_query

From liblfds.org
Revision as of 01:50, 30 December 2015 by Admin (talk | contribs) (→‎Example)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Source Files

└───liblfds700
    ├───inc
    │   └───liblfds700
    │           lfds700_hash_addonly.h
    └───src
        └───lfds700_hash_addonly
                lfds700_hash_addonly_query.c

Enums

enum lfds700_hash_a_query
{
  LFDS700_HASH_A_QUERY_GET_POTENTIALLY_INACCURATE_COUNT,
  LFDS700_HASH_A_QUERY_SINGLETHREADED_VALIDATE
};

Opaque Structures

struct lfds700_hash_a_state;

Prototype

void lfds700_hash_a_query( struct lfds700_hash_a_state *has,
                           enum lfds700_hash_a_query query_type,
                           void *query_input,
                           void *query_output );

Parameters

struct lfds700_hash_a_state *has

A pointer to an initialized struct lfds700_hash_a_state.

enum lfds700_hash_a_query query_type

Indicates which query to perform.

void *query_input

A pointer to input data for the query, where the data varies by query;
LFDS700_HASH_A_QUERY_GET_POTENTIALLY_INACCURATE_COUNT
query_input is NULL.
LFDS700_HASH_A_QUERY_SINGLETHREADED_VALIDATE
query_input can be NULL, or or can be a pointer to a struct lfds700_misc_validation_info, which specifies an expected min/max count, in which case validation also counts the number of elements and check they fall within the specified range.

void *query_output

A pointer to output store for the query, where the output varies by query;
LFDS700_HASH_A_QUERY_GET_POTENTIALLY_INACCURATE_COUNT
Points to a lfds700_pal_uint_t, which is set to the number of elements in the hash.
LFDS700_HASH_A_QUERY_SINGLETHREADED_VALIDATE
Points to an enum lfds700_misc_validity, which is set to indicate the result of the validation operation.

Notes

All SINGLETHREADED queries can only be safely performed if no insert operations occur while the operation runs. If insert operations do occur during the execution of a SINGLETHREADED query, it is theoretically possible for the query to enter an infinite loop or to access random memory. Do not do this.

The LFDS700_HASH_A_QUERY_GET_POTENTIALLY_INACCURATE_COUNT query is non-atomic and walks the trees which comprise the hash, counting elements; if new element are added during the count walks, they may not be seen. As such, the count is potentially inaccurate.

Example

Coming soon. No, really! (Written 29th Dec 2015).

See Also