UCommon
Public Member Functions | Static Public Member Functions | Protected Attributes | Friends
ucommon::stack Class Reference

Manage a thread-safe stack of objects through reference pointers. More...

#include <containers.h>

Inheritance diagram for ucommon::stack:
Inheritance graph
[legend]
Collaboration diagram for ucommon::stack:
Collaboration graph
[legend]

Public Member Functions

size_t getCount (void)
 Get number of object points currently in the stack.
ObjectProtocoloperator[] (unsigned pos)
ObjectProtocolpeek (unsigned offset=0)
 Examine an existing object on the stack.
ObjectProtocolpull (timeout_t timeout=0)
 Get and remove last object pushed on the stack.
bool push (ObjectProtocol *object, timeout_t timeout=0)
 Push an object into the stack by it's pointer.
bool remove (ObjectProtocol *object)
 Remove a specific object pointer for the queue.
 stack (mempager *pager=((void *) 0), size_t number=0)
 Create a stack that uses a memory pager for internally managed member objects for a specified maximum number of object pointers.
 ~stack ()
 Destroy queue.

Static Public Member Functions

static size_t count (stack &stack)
 Convenience function to get count of objects in the stack.
static ObjectProtocolpull (stack &stack, timeout_t timeout=0)
 Convenience function pull last object from the stack.
static bool push (stack &stack, ObjectProtocol *object, timeout_t timeout=0)
 Convenience function to push object into the stack.
static bool remove (stack &stack, ObjectProtocol *object)
 Convenience function to remove an object from the stacl.

Protected Attributes

size_t limit

Friends

class member

Additional Inherited Members

- Static Protected Member Functions inherited from ucommon::Conditional
static void gettimeout (timeout_t timeout, struct timespec *hires)
 Convert a millisecond timeout into use for high resolution conditional timers.
static pthread_condattr_t * initializer (void)
 Support function for getting conditional attributes for realtime scheduling.

Detailed Description

Manage a thread-safe stack of objects through reference pointers.

This Thread-safe access is managed through a conditional. This differs from the queue in lifo mode because delinking the last object is immediate, and because it has much less overhead. A pool of self-managed member objects are used to operate the stack.

Author
David Sugar dyfet.nosp@m.@gnu.nosp@m.telep.nosp@m.hony.nosp@m..org

Definition at line 353 of file containers.h.

Constructor & Destructor Documentation

ucommon::stack::stack ( mempager pager = ((void *) 0),
size_t  number = 0 
)

Create a stack that uses a memory pager for internally managed member objects for a specified maximum number of object pointers.

Parameters
pagerto use for internal member object or NULL to use heap.
numberof pointers that can be in the stack or 0 if unlimited.
ucommon::stack::~stack ( )

Destroy queue.

If no pager is used, then frees heap.

Member Function Documentation

static size_t ucommon::stack::count ( stack stack)
inlinestatic

Convenience function to get count of objects in the stack.

Parameters
stackto count.
Returns
number of objects in the stack.

Definition at line 460 of file containers.h.

Here is the call graph for this function:

size_t ucommon::stack::getCount ( void  )

Get number of object points currently in the stack.

Returns
number of objects in stack.
ObjectProtocol* ucommon::stack::peek ( unsigned  offset = 0)

Examine an existing object on the stack.

Parameters
offsetto stack entry.
Returns
object examined.

Reimplemented in ucommon::stackof< T >.

ObjectProtocol* ucommon::stack::pull ( timeout_t  timeout = 0)

Get and remove last object pushed on the stack.

This can wait for a specified timeout of the stack is empty. The object is still retained and must be released or deleted by the receiving function.

Parameters
timeoutto wait if empty in milliseconds.
Returns
object pulled from stack or NULL if empty and timed out.

Reimplemented in ucommon::stackof< T >.

static ObjectProtocol* ucommon::stack::pull ( stack stack,
timeout_t  timeout = 0 
)
inlinestatic

Convenience function pull last object from the stack.

Parameters
stackto get from.
timeoutto wait if empty.
Returns
last object or NULL if timed out empty.

Definition at line 452 of file containers.h.

Here is the call graph for this function:

bool ucommon::stack::push ( ObjectProtocol object,
timeout_t  timeout = 0 
)

Push an object into the stack by it's pointer.

This can wait for a specified timeout if the stack is full, for example, for another thread to remove an object pointer. This also retains the object.

Parameters
objectto push.
timeoutto wait if stack is full in milliseconds.
Returns
true if object pushed, false if stack full and timeout expired.
static bool ucommon::stack::push ( stack stack,
ObjectProtocol object,
timeout_t  timeout = 0 
)
inlinestatic

Convenience function to push object into the stack.

Parameters
stackto push into.
objectto push.
timeoutto wait if full.
Returns
true if pusheded, false if timed out while full.

Definition at line 443 of file containers.h.

Here is the call graph for this function:

bool ucommon::stack::remove ( ObjectProtocol object)

Remove a specific object pointer for the queue.

This can remove a member from any location in the queue, whether beginning, end, or somewhere in the middle. This also releases the object.

Parameters
objectto remove.
Returns
true if object was removed, false if not found.
static bool ucommon::stack::remove ( stack stack,
ObjectProtocol object 
)
inlinestatic

Convenience function to remove an object from the stacl.

Parameters
stackto remove object from.
objectto remove.
Returns
true if removed, false if not found.

Definition at line 433 of file containers.h.

Here is the call graph for this function:


The documentation for this class was generated from the following file: