|
Simple data structures / objects in plain C Snapshot
|
#include <cutils/dlistunr.h>Go to the source code of this file.
Functions | |
| M_INLINE DLISTUNR_entry * | DLISTUNR_new_list_entry (size_t datasize) |
| M_INLINE void * | DLISTUNR_insert_entry (DLISTUNR_entry *entry, size_t pos, size_t elmmaxcount, size_t elmsize) |
| M_INLINE void * | DLISTUNR_insert_newnode (DLISTUNR *list, DLISTUNR_position insert_pos) |
| int | DLISTUNR_insert_after (DLISTUNR *list, DLISTUNR_position pos, void *data, size_t size) |
| insert new entry after a given entry into this unrolled linked list | |
| int | DLISTUNR_unlink (DLISTUNR *list, DLISTUNR_position pos) |
| delete an element from a unrolled list. | |
| M_INLINE void* DLISTUNR_insert_entry | ( | DLISTUNR_entry * | entry, |
| size_t | pos, | ||
| size_t | elmmaxcount, | ||
| size_t | elmsize | ||
| ) |
Definition at line 16 of file dlistunr.c.
{
if (!entry) {
return 0;
}
if (entry->elmcount >= elmmaxcount || entry->elmcount == (size_t) -1) {
return 0;
}
pos ++;
if (pos < entry->elmcount) {
memmove(entry->buffer + (pos + 1) * elmsize,
entry->buffer + pos * elmsize,
(entry->elmcount - pos) * elmsize);
}
entry->elmcount ++ ;
return entry->buffer + (pos * elmsize);
}
| M_INLINE void* DLISTUNR_insert_newnode | ( | DLISTUNR * | list, |
| DLISTUNR_position | insert_pos | ||
| ) |
Definition at line 39 of file dlistunr.c.
{
DLISTUNR_entry *newnode;
newnode = DLISTUNR_new_list_entry( list->elmsize * list->elmmaxcount);
if (!newnode) {
return 0;
}
DRING_insert_after( (DRING *) insert_pos.entry, (DRING *) newnode );
newnode->elmcount = 1;
return newnode->buffer;
}
| M_INLINE DLISTUNR_entry* DLISTUNR_new_list_entry | ( | size_t | datasize | ) |
Definition at line 3 of file dlistunr.c.
{
DLISTUNR_entry *entry;
entry = malloc( sizeof(DLISTUNR_entry) + datasize );
if (!entry) {
return 0;
}
entry->elmcount = 0;
return entry;
}
1.7.4