projects
/
silc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merged silc_1_1_branch to trunk.
[silc.git]
/
lib
/
silcutil
/
silclist.h
diff --git
a/lib/silcutil/silclist.h
b/lib/silcutil/silclist.h
index 50213491f0b361239d015a5cd08606752499b777..81ea3638bd8a468c9a4501c9eb55c1e353c9932c 100644
(file)
--- a/
lib/silcutil/silclist.h
+++ b/
lib/silcutil/silclist.h
@@
-4,7
+4,7
@@
Author: Pekka Riikonen <priikone@silcnet.org>
Author: Pekka Riikonen <priikone@silcnet.org>
- Copyright (C) 2002 - 200
5
Pekka Riikonen
+ Copyright (C) 2002 - 200
7
Pekka Riikonen
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@
-22,7
+22,10
@@
* DESCRIPTION
*
* Implementation of the SilcList interface. This interface provides
* DESCRIPTION
*
* Implementation of the SilcList interface. This interface provides
- * simple linked list.
+ * simple linked list. This interface does not allocate any memory.
+ *
+ * SILC List is not thread-safe. If the same list context must be used
+ * in multithreaded environment concurrency control must be employed.
*
***/
*
***/
@@
-41,12
+44,12
@@
* function silc_list_init.
*
***/
* function silc_list_init.
*
***/
-typedef struct {
+typedef struct
SilcListStruct
{
void *head; /* Start of the list */
void *tail; /* End of the list */
void *current; /* Current pointer in list */
void *head; /* Start of the list */
void *tail; /* End of the list */
void *current; /* Current pointer in list */
-
unsigned int next_offset : 16;
/* Offset to 'next' pointer */
-
unsigned int prev_offset : 16;
/* Offset to 'prev' pointer */
+
SilcUInt16 next_offset;
/* Offset to 'next' pointer */
+
SilcUInt16 prev_offset;
/* Offset to 'prev' pointer */
unsigned int prev_set : 1; /* Set if 'prev' exists */
unsigned int end_set : 1; /* Set if silc_list_end was called */
unsigned int count : 30; /* Number of entries in the list */
unsigned int prev_set : 1; /* Set if 'prev' exists */
unsigned int end_set : 1; /* Set if silc_list_end was called */
unsigned int count : 30; /* Number of entries in the list */
@@
-101,6
+104,7
@@
do { \
(list).next_offset = silc_offsetof(type, nextfield); \
(list).prev_set = 0; \
(list).prev_offset = 0; \
(list).next_offset = silc_offsetof(type, nextfield); \
(list).prev_set = 0; \
(list).prev_offset = 0; \
+ (list).end_set = 0; \
(list).head = (list).tail = (list).current = NULL; \
} while(0)
(list).head = (list).tail = (list).current = NULL; \
} while(0)
@@
-140,6
+144,7
@@
do { \
(list).next_offset = silc_offsetof(type, nextfield); \
(list).prev_offset = silc_offsetof(type, prevfield); \
(list).prev_set = 1; \
(list).next_offset = silc_offsetof(type, nextfield); \
(list).prev_offset = silc_offsetof(type, prevfield); \
(list).prev_set = 1; \
+ (list).end_set = 0; \
(list).head = (list).tail = (list).current = NULL; \
} while(0)
(list).head = (list).tail = (list).current = NULL; \
} while(0)