#include <stdlib.h>
#include <assert.h>
Go to the source code of this file.
#define DECLARE_AND_IMPLEMENT_LIST |
( |
|
type, |
|
|
|
prefix |
|
) |
| |
Value:
IMPLEMENT_LIST(
type, prefix)
#define DECLARE_LIST |
( |
|
type, |
|
|
|
prefix |
|
) |
| |
Value:\
struct prefix##element_##
type\
{\
struct prefix##element_##
type* m_prev;\
struct prefix##element_##
type* m_next;\
type m_data;\
};\
typedef
struct prefix##element_##
type ELEMENT_##
type;\
\
_LIST_INLINE
_CVLIST* prefix##create_list_##
type(
long);\
_LIST_INLINE
void prefix##destroy_list_##
type(
_CVLIST*);\
\
\
_LIST_INLINE
void prefix##clear_list_##
type(
_CVLIST*);\
_LIST_INLINE
void prefix##remove_head_##
type(
_CVLIST*);\
_LIST_INLINE
void prefix##remove_tail_##
type(
_CVLIST*);\
\
#define IMPLEMENT_LIST |
( |
|
type, |
|
|
|
prefix |
|
) |
| |
#define INSERT_FREE |
( |
|
element_type, |
|
|
|
l, |
|
|
|
element |
|
) |
| |
Value:if(l->m_head_free.m_pos != NULL)\
{\
((element_type*)l->m_head_free.m_pos)->m_prev =
element;\
element->m_next = ((element_type*)l->m_head_free.m_pos);\
#define INSERT_NEW |
( |
|
element_type, |
|
|
|
l, |
|
|
|
element |
|
) |
| |
Value:l->m_size++;\
if(l->m_head_free.m_pos != NULL)\
element = (element_type*)(l->m_head_free.m_pos);\
l->m_head_free.m_pos =
element->m_next;\
}\
else\
{\
l->m_head_free.m_pos = NULL;\
}\
}\
else\
{\
if(l->m_buf_size < l->m_size && l->m_head_free.m_pos == NULL)\
{\
*(
void**)l->m_buffer =
cvAlloc(l->m_buf_size*
sizeof(element_type) +
sizeof(
void*));\
l->m_buffer = *(void**)l->m_buffer;\
*(
void**)l->m_buffer = NULL;
\
element = (element_type*)((
char*)l->m_buffer +
sizeof(
void*));\
}\
else\
element = (element_type*)((
char*)l->m_buffer +
sizeof(
void*)) + l->m_size - 1;\
}\
}