Difference between pages "r7.1.1:Macro LFDS711 LIST ASU GET START AND THEN NEXT" and "r7.1.1:Macro LFDS711 LIST ASU GET USER STATE FROM STATE"

From liblfds.org
(Difference between pages)
Jump to navigation Jump to search
m (1 revision imported)
 
m (1 revision imported)
 
Line 1: Line 1:
{{DISPLAYTITLE:macro LFDS711_LIST_ASU_GET_START_AND_THEN_NEXT}}
{{DISPLAYTITLE:macro LFDS711_LIST_ASU_GET_USER_STATE_FROM_STATE}}
==Source File==
==Source File==
  └───liblfds711
  └───liblfds711
Line 7: Line 7:


==Opaque Structures==
==Opaque Structures==
struct [[r7.1.1:struct lfds711_list_asu_element|lfds711_list_asu_element]];
  struct [[r7.1.1:struct lfds711_list_asu_state|lfds711_list_asu_state]];
  struct [[r7.1.1:struct lfds711_list_asu_state|lfds711_list_asu_state]];


==Macro==
==Macro==
  #define LFDS711_LIST_ASU_GET_START_AND_THEN_NEXT( list_asu_state, pointer_to_list_asu_element )
  #define LFDS711_LIST_ASU_GET_USER_STATE_FROM_STATE( list_asu_state )


==Parameters==
==Parameters==
''list_asu_state''
''list_asu_state''
: A ''struct lfds711_list_asu_state''.  Not a pointer to it - the struct itself.
: An initialized ''struct lfds711_list_asu_state''.  Not a pointer to it - the struct itself.
 
''pointer_to_list_asu_element''
: A pointer to ''struct lfds711_list_asu_element''.  This is and only is a pointer - it's not the address of an actual, allocated struct.


==Return Value==
==Return Value==
If ''pointer_to_list_element'' is NULL, returns (and sets ''pointer_to_list_element'' to be the same value) a ''struct lfds711_list_asu_element *'' to the first element in the list.
Returns a ''void *'', the ''user_state'' argument from ''[[r7.1.1:function lfds711_list_asu_init_valid_on_current_logical_core|lfds711_list_asu_init_valid_on_current_logical_core]]''.


If ''pointer_to_list_element'' is not NULL, returns (and sets ''pointer_to_list_element'' to be the same value) a ''struct lfds711_list_asu_element *'' to the element after the list element ''*pointer_to_list_element''.
==Notes==
The user state value can only be set the once, when the data structure instance is initialized.


==Notes==
As with all ''liblfds'' macros, the macro operates on the structure itself, not a pointer to it.
As with all ''liblfds'' macros, the macro operates on the structure itself, not a pointer to it.
This is a convenience macro, expected use is in the conditional part of while loops.  If the element argument is NULL, then the macro returns (and sets the element pointer to be) the first element; if it is non-NULL (and then should be a pointer to an element in the list), then the macro returns (and sets the element pointer to be)  the next element in the list, eventully returning (and setting the element pointer to be) NULL, which causes the while loop to finish.


==Example==
==Example==
#include "liblfds711.h"
#include <stdio.h>
#include <string.h>
int main()
{
  char
    list_asu_name[64] = "Do You Love Me";
  struct lfds711_list_asu_state
    lasus;
  void
    *user_state;
  lfds711_misc_library_init_valid_on_current_logical_core();
  lfds711_list_asu_init_valid_on_current_logical_core( &lasus, NULL, (void *) list_asu_name );
  user_state = LFDS711_LIST_ASU_GET_USER_STATE_FROM_STATE( lasus );
  printf( "list_asu name is \"%s\"\n", (char *) user_state );
  lfds711_list_asu_cleanup( &lasus, NULL );
  lfds711_misc_library_cleanup();
  return( EXIT_SUCCESS );
}


==See Also==
==See Also==
* [[r7.1.1:List (add-only, singly-linked, unordered)|List (add-only, singly-linked, unordered)]]
* [[r7.1.1:List (add-only, singly-linked, unordered)|List (add-only, singly-linked, unordered)]]

Latest revision as of 18:12, 16 February 2017

Source File

└───liblfds711
    └───inc
        └───liblfds711
                lfds711_list_addonly_singlylinked_unordered.h

Opaque Structures

struct lfds711_list_asu_state;

Macro

#define LFDS711_LIST_ASU_GET_USER_STATE_FROM_STATE( list_asu_state )

Parameters

list_asu_state

An initialized struct lfds711_list_asu_state. Not a pointer to it - the struct itself.

Return Value

Returns a void *, the user_state argument from lfds711_list_asu_init_valid_on_current_logical_core.

Notes

The user state value can only be set the once, when the data structure instance is initialized.

As with all liblfds macros, the macro operates on the structure itself, not a pointer to it.

Example

#include "liblfds711.h"
#include <stdio.h>
#include <string.h>

int main()
{
  char
    list_asu_name[64] = "Do You Love Me";

  struct lfds711_list_asu_state
    lasus;

  void
    *user_state;

  lfds711_misc_library_init_valid_on_current_logical_core();

  lfds711_list_asu_init_valid_on_current_logical_core( &lasus, NULL, (void *) list_asu_name );

  user_state = LFDS711_LIST_ASU_GET_USER_STATE_FROM_STATE( lasus );

  printf( "list_asu name is \"%s\"\n", (char *) user_state );

  lfds711_list_asu_cleanup( &lasus, NULL );

  lfds711_misc_library_cleanup();

  return( EXIT_SUCCESS );
}

See Also