/*******************************************************************************
* The information contained in this file is confidential and proprietary to
* ZNK Corporation. No part of this file may be reproduced or distributed,
* in any form or by any means for any purpose, without the express written
* permission of ZNK Corporation.
*
* (c) COPYRIGHT 1998 ZNK Corporation, ALL RIGHTS RESERVED.
*
* Single link list routines:
* void s_list_init (s_list_t *, *head, *tail, cnt)
* void s_list_clear (s_list_t *)
* void s_list_push_head (s_list_t *, s_list_entry_t *)
* s_list_entry_t * s_list_pop_head (s_list_t *)
* void s_list_push_tail (s_list_t *, s_list_entry_t *)
* s_list_entry_t * s_list_peek_head (s_list_t *)
* s_list_entry_t * s_list_peek_tail (s_list_t *)
* s_list_entry_t * s_list_next_entry (s_list_entry_t *)
* unsigned long s_list_entry_cnt (s_list_t *)
* char s_list_is_empty (s_list_t *)
* void s_list_add_head (s_list_t *, s_list_t *)
* void s_list_add_tail (s_list_t *, s_list_t *)
* void s_list_split (d_list_t *, d_list_t *, d_list_entry_t *, ulong)
*
* Double link list routines:
* void d_list_init (d_list_t *, *head, *tail, cnt)
* void d_list_clear (d_list_t *)
* void d_list_push_head (d_list_t *, d_list_entry_t *)
* d_list_entry_t * d_list_pop_head (d_list_t *)
* void d_list_push_tail (d_list_t *, d_list_entry_t *)
* d_list_entry_t * d_list_pop_tail (d_list_t *)
* d_list_entry_t * d_list_peek_head (d_list_t *)
* d_list_entry_t * d_list_peek_tail (d_list_t *)
* d_list_entry_t * d_list_next_entry (d_list_entry_t *)
* void d_list_remove_entry(d_list_t *, d_list_entry_t *)
* void d_list_insert_entry(d_list_t *, *prev, *next, *new)
* d_list_entry_t * d_list_prev_entry (d_list_entry_t *)
* unsigned long d_list_entry_cnt (d_list_t *)
* char d_list_is_empty (d_list_t *)
* void d_list_add_head (d_list_t *, d_list_t *)
* void d_list_add_tail (d_list_t *, d_list_t *)
*
* Array list routines:
* void q_list_init (q_list_t *, q_list_entry *, ulong)
* void q_list_clear (q_list_t *)
* void q_list_push_head (q_list_t *, q_list_entry_t)
* q_list_entry_t q_list_pop_head (q_list_t *)
* void q_list_push_tail (q_list_t *, q_list_entry_t)
* q_list_entry_t q_list_pop_tail (q_list_t *)
* q_list_entry_t q_list_peek_head (q_list_t *)
* q_list_entry_t q_list_peek_tail (q_list_t *)
* unsigned long q_list_entry_cnt (q_list_t *)
* char q_list_is_empty (q_list_t *)
* char q_list_is_full (q_list_t *)
*
* History:
* 03/30/98 Hav Khauv Initial version.
******************************************************************************/
#ifndef _listq_h_
#define _listq_h_
/*******************************************************************************
* Single link list.
******************************************************************************/
typedef struct _s_list_entry_t
{
typedef struct _s_list_t
{
unsigned long cnt;
} s_list_t;
#ifdef _INLINE_LISTQ_CALLS
void
unsigned long entry_cnt)
{
}
void
{
}
void
{
{
}
}
{
{
{
}
}
return s_entry;
}
void
{
{
}
else
{
}
}
{
}
{
}
{
}
unsigned long
{
}
char
{
}
void
{
{
*s_list = *s_list_head;
}
else if(s_list_head->cnt)
{
}
}
void
{
{
*s_list = *s_list_tail;
}
else if(s_list_tail->cnt)
{
}
}
void
unsigned long entry_cnt)
{
} else {
}
}
#else
{ \
} \
{ \
{ \
} \
}
{ \
} \
else \
{ \
} \
{ \
*(_s_list) = *(_s_list_head); \
} \
else if((_s_list_head)->cnt) \
{ \
}
{ \
*(_s_list) = *(_s_list_tail); \
} \
else if((_s_list_tail)->cnt) \
{ \
}
} else { \
}
#endif
/*******************************************************************************
* Double link list entry.
******************************************************************************/
typedef struct _d_list_entry_t
{
typedef struct _d_list_t
{
unsigned long cnt;
} d_list_t;
#ifdef _INLINE_LISTQ_CALLS
void
unsigned long entry_cnt)
{
}
void
{
}
void
{
{
}
else
{
}
}
{
{
{
}
else
{
}
}
return d_entry;
}
void
{
{
}
else
{
}
}
{
{
{
}
else
{
}
}
return d_entry;
}
{
}
{
}
{
}
void
{
{
}
{
}
else
{
}
}
void
{
if (d_entry_prev == NULL)
{
}
else if (d_entry_next == NULL)
{
}
else
{
}
}
{
}
unsigned long
{
}
char
{
}
void
{
{
}
else
{
}
}
void
{
{
}
else
{
}
}
#else
{ \
} \
else \
{ \
} \
{ \
{ \
} \
else \
{ \
} \
}
{ \
} \
else \
{ \
} \
{ \
{ \
} \
else \
{ \
} \
}
if (_d_entry_prev == NULL ) \
{ \
{ \
} \
} \
else if (_d_entry_next == NULL ) \
{ \
{ \
} \
else \
{ \
} \
} \
else \
{ \
}
{ \
{ \
{ \
} \
else \
{ \
} \
} \
} \
{ \
{ \
{ \
} \
else \
{ \
} \
} \
} \
else \
{ \
}
{ \
} \
else \
{ \
} \
{ \
} \
else \
{ \
} \
#endif
/*******************************************************************************
* Array list.
******************************************************************************/
typedef void *q_list_entry_t;
typedef struct _q_list_t
{
unsigned long cnt;
unsigned long max_cnt;
} q_list_t;
#ifdef _INLINE_LISTQ_CALLS
void
unsigned long max_cnt)
{
}
void
{
}
void
{
{
{
}
else
{
}
}
}
{
{
{
}
else
{
}
}
return q_entry;
}
void
{
{
{
}
else
{
}
}
}
{
(q_list_entry_t *) 0;
{
{
}
else
{
}
}
return q_entry;
}
{
return q_entry;
}
{
(q_list_entry_t *) 0;
return q_entry;
}
unsigned long
{
}
char
{
}
char
{
}
#else
{ \
{ \
} \
else \
{ \
} \
}
{ \
{ \
} \
else \
{ \
} \
}
{ \
{ \
} \
else \
{ \
} \
}
(q_list_entry_t *) 0; \
{ \
{ \
} \
else \
{ \
} \
} \
(q_list_entry_t *) 0)
#endif
#endif /* _listq_h_ */