macro LFDS700_BTREE_AU_SET_VALUE_IN_ELEMENT
Jump to navigation
Jump to search
Source File
└───liblfds700 └───inc └───liblfds700 lfds700_btree_addonly_unbalanced.h
Opaque Structures
struct lfds700_btree_au_element;
Macro
#define LFDS700_BTREE_AU_SET_VALUE_IN_ELEMENT( btree_au_element, new_value )
Parameters
btree_au_element
- A struct lfds700_btree_au_element. Not a pointer to it - the struct itself.
new_value
- A pointer, which will be cast by the macro to a void *, which the value in btree_au_element is set to.
Return Value
No return value.
Notes
The value is set atomically, and so can be used at any time, on an element in the tree or before it enters the tree, unlike setting a key, which can only be done before an element enters the tree.
As with all liblfds macros, the macro operates on the structure itself, not a pointer to it.
Example
#include <stdio.h> #include "liblfds700.h" struct test_data { int long long unsigned unique_id; char payload[64]; struct lfds700_btree_au_element buae; }; int key_compare_function( void const *new_key, void const *existing_key ) { int cr = 0; int long long unsigned *new_key = (int long long unsigned *) new_key, *existing_key = (int long long unsigned *) existing_key; if( *new_key > *existing_key ) cr = 1; if( *new_key < *existing_key ) cr = -1; return( cr ); } int main() { struct lfds700_btree_au_element *buae; struct lfds700_btree_au_state baus; struct lfds700_misc_prng_state ps; struct test_data td = { 15, "Xenon-136" }, *temp_td; lfds700_misc_library_init_valid_on_current_logical_core(); lfds700_misc_prng_init( &ps ); lfds700_btree_au_init_valid_on_current_logical_core( &baus, key_compare_function, LFDS700_BTREE_AU_EXISTING_KEY_FAIL, NULL ); LFDS700_BTREE_AU_SET_KEY_IN_ELEMENT( td.baue, &td.unique_id ); LFDS700_BTREE_AU_SET_VALUE_IN_ELEMENT( td.baue, &td ); lfds700_btree_au_link( baus, &td.baue, NULL, &ps ); lfds700_btree_au_get_by_position( &baus, &baue, LFDS700_BTREE_AU_ROOT ); temp_td = LFDS700_BTREE_AU_GET_VALUE_FROM_ELEMENT( *baue ); printf( "payload in element is \"%s\"\n", temp_td->payload ); lfds700_btree_au_cleanup( &baus ); lfds700_misc_library_cleanup(); return( EXIT_SUCCESS ); }