Difference between pages "r6:Function:stack pop" and "r6:Function:stack push"

From liblfds.org
(Difference between pages)
Jump to navigation Jump to search
m (1 revision imported)
 
m (1 revision imported)
 
Line 4: Line 4:


==Prototype==
==Prototype==
  int stack_pop( struct stack_state *ss, void **user_data );
  int stack_push( struct stack_state *ss, void *user_data );


==Parameters==
==Parameters==
Line 10: Line 10:
: A stack state as allocated by ''[[r6:Function:stack_new|stack_new]]''.
: A stack state as allocated by ''[[r6:Function:stack_new|stack_new]]''.


''void **user_data''
''void *user_data''
: The address of a pointer into which the user data will be placed.  If the stack is empty, ''*user_data'' is not modified, as NULL is a valid user data value.
: A void pointer of user data which will be pushed onto the stack.


==Return Value==
==Return Value==
The return value is 1 upon successful pop, 0 upon unsuccessful popPopping fails only if the stack is emptyNote that on an unsuccessful pop, ''*user_data'' is untouched; it is not set to NULL, since NULL is a valid user data valueOnly the return value indicates whether or not the pop was successful.
The return value is 1 upon successful push, 0 upon failureFailure occurs only when the stack has exhausted its freelist of elementsIn this case, the user can call ''[[r6:Function:stack_guaranteed_push|stack_guaranteed_push]]'', which will allocate a new element and push using thatRemember however that the stack can never shrink, so any such call will permanently increase the size of the stack by one element.


==Notes==
==Notes==
Line 21: Line 21:
==See Also==
==See Also==
* [[r6:API:Stack|Stack]]
* [[r6:API:Stack|Stack]]
* [[r6:Function:stack_push|stack_push]]
* [[r6:Function:stack_pop|stack_pop]]
* [[r6:Function:stack_guaranteed_push|stack_guaranteed_push]]

Latest revision as of 14:07, 4 January 2015

Source Files

/src/stack/stack_push_pop.c
/inc/liblfds.h

Prototype

int stack_push( struct stack_state *ss, void *user_data );

Parameters

struct stack_state *ss

A stack state as allocated by stack_new.

void *user_data

A void pointer of user data which will be pushed onto the stack.

Return Value

The return value is 1 upon successful push, 0 upon failure. Failure occurs only when the stack has exhausted its freelist of elements. In this case, the user can call stack_guaranteed_push, which will allocate a new element and push using that. Remember however that the stack can never shrink, so any such call will permanently increase the size of the stack by one element.

Notes

No notes.

See Also