summaryrefslogtreecommitdiff
path: root/source3
diff options
context:
space:
mode:
Diffstat (limited to 'source3')
-rw-r--r--source3/ubiqx/ubi_dLinkList.c5
-rw-r--r--source3/ubiqx/ubi_dLinkList.h17
-rw-r--r--source3/ubiqx/ubi_sLinkList.c24
-rw-r--r--source3/ubiqx/ubi_sLinkList.h27
4 files changed, 54 insertions, 19 deletions
diff --git a/source3/ubiqx/ubi_dLinkList.c b/source3/ubiqx/ubi_dLinkList.c
index a2db4a2d0d..c780bd1df8 100644
--- a/source3/ubiqx/ubi_dLinkList.c
+++ b/source3/ubiqx/ubi_dLinkList.c
@@ -24,7 +24,10 @@
*
* -------------------------------------------------------------------------- **
*
- * Log: ubi_dLinkList.c,v
+ * Log: ubi_dLinkList.c,v
+ * Revision 0.10 1998/07/24 07:30:20 crh
+ * Added the ubi_dlNewList() macro.
+ *
* Revision 0.9 1998/06/04 21:29:27 crh
* Upper-cased defined constants (eg UBI_BINTREE_H) in some header files.
* This is more "standard", and is what people expect. Weird, eh?
diff --git a/source3/ubiqx/ubi_dLinkList.h b/source3/ubiqx/ubi_dLinkList.h
index 9e2cb9c4d2..548f8e5200 100644
--- a/source3/ubiqx/ubi_dLinkList.h
+++ b/source3/ubiqx/ubi_dLinkList.h
@@ -26,7 +26,10 @@
*
* -------------------------------------------------------------------------- **
*
- * Log: ubi_dLinkList.h,v
+ * Log: ubi_dLinkList.h,v
+ * Revision 0.10 1998/07/24 07:30:20 crh
+ * Added the ubi_dlNewList() macro.
+ *
* Revision 0.9 1998/06/04 21:29:27 crh
* Upper-cased defined constants (eg UBI_BINTREE_H) in some header files.
* This is more "standard", and is what people expect. Weird, eh?
@@ -101,6 +104,13 @@ typedef ubi_dlList *ubi_dlListPtr;
/* ========================================================================== **
* Macros...
*
+ * ubi_dlNewList - Macro used to declare and initialize a new list in one
+ * swell foop. It is used when defining a variable of
+ * type ubi_dlList. The definition
+ * static ubi_dlNewList( gerbil );
+ * is translated to
+ * static ubi_dlList gerbil[1] = {{ NULL, NULL, 0 }};
+ *
* ubi_dlCount - Return the number of entries currently in the list.
*
* ubi_dlAddHead - Add a new node at the head of the list.
@@ -128,11 +138,12 @@ typedef ubi_dlList *ubi_dlListPtr;
* Add and Rem macros are nothing more than nice front-ends to the
* Insert and Remove operations.
*
- * Also note that there the First, Next and Last macros do no parameter
- * checking!
+ * Also note that the First, Next and Last macros do no parameter checking!
*
*/
+#define ubi_dlNewList( L ) ubi_dlList (L)[1] = {{ NULL, NULL, 0 }}
+
#define ubi_dlCount( L ) (((ubi_dlListPtr)(L))->count)
#define ubi_dlAddHead( L, N ) \
diff --git a/source3/ubiqx/ubi_sLinkList.c b/source3/ubiqx/ubi_sLinkList.c
index a281711b81..25eb5f7e41 100644
--- a/source3/ubiqx/ubi_sLinkList.c
+++ b/source3/ubiqx/ubi_sLinkList.c
@@ -24,7 +24,10 @@
*
* -------------------------------------------------------------------------- **
*
- * Log: ubi_sLinkList.c,v
+ * Log: ubi_sLinkList.c,v
+ * Revision 0.9 1998/07/24 07:30:20 crh
+ * Added the ubi_slNewList() macro.
+ *
* Revision 0.8 1998/06/04 21:29:27 crh
* Upper-cased defined constants (eg UBI_BINTREE_H) in some header files.
* This is more "standard", and is what people expect. Weird, eh?
@@ -63,15 +66,20 @@
* mind-numbingly simple, but I'm surprised by the number of programs out
* there which re-implement this a dozen or so times.
*
- * Notes: When the list header is initialized, the Tail pointer is set to
- * point to the Head pointer. This simplifies things a great deal,
- * except that you can't initialize a stack or queue by simply
- * zeroing it out. One sure way to initialize the header is to call
- * ubi_slInit(). Another option would be something like this:
+ * Note: When the list header is initialized, the Tail pointer is set to
+ * point to the Head pointer. This simplifies things a great deal,
+ * except that you can't initialize a stack or queue by simply
+ * zeroing it out. One sure way to initialize the header is to call
+ * ubi_slInit(). Another option would be something like this:
+ *
+ * ubi_slNewList( MyList );
+ *
+ * Which translates to:
*
- * static ubi_slList MyList = { NULL, (ubi_slNodePtr)&MyList, 0 };
+ * ubi_slList MyList[1] = { NULL, (ubi_slNodePtr)MyList, 0 };
*
- * See ubi_slInit() and the ubi_slList structure for more info.
+ * See ubi_slInit(), ubi_slNewList(), and the ubi_slList structure
+ * for more info.
*
* + Also, note that this module is similar to the ubi_dLinkList
* module. There are three key differences:
diff --git a/source3/ubiqx/ubi_sLinkList.h b/source3/ubiqx/ubi_sLinkList.h
index 24f91178aa..1f331cd5b9 100644
--- a/source3/ubiqx/ubi_sLinkList.h
+++ b/source3/ubiqx/ubi_sLinkList.h
@@ -26,7 +26,10 @@
*
* -------------------------------------------------------------------------- **
*
- * Log: ubi_sLinkList.h,v
+ * Log: ubi_sLinkList.h,v
+ * Revision 0.9 1998/07/24 07:30:20 crh
+ * Added the ubi_slNewList() macro.
+ *
* Revision 0.8 1998/06/04 21:29:27 crh
* Upper-cased defined constants (eg UBI_BINTREE_H) in some header files.
* This is more "standard", and is what people expect. Weird, eh?
@@ -57,7 +60,7 @@
* Initial Revision.
*
* -------------------------------------------------------------------------- **
- * This module implements a singly-linked list which may also be used as a
+ * This module implements a singly-linked list which may also be used as a
* queue or a stack. For a queue, entries are added at the tail and removed
* from the head of the list. For a stack, the entries are entered and
* removed from the head of the list. A traversal of the list will always
@@ -71,9 +74,14 @@
* zeroing it out. One sure way to initialize the header is to call
* ubi_slInit(). Another option would be something like this:
*
- * static ubi_slList MyList = { NULL, (ubi_slNodePtr)&MyList, 0 };
+ * ubi_slNewList( MyList );
+ *
+ * Which translates to:
+ *
+ * ubi_slList MyList[1] = { NULL, (ubi_slNodePtr)MyList, 0 };
*
- * See ubi_slInit() and the ubi_slList structure for more info.
+ * See ubi_slInit(), ubi_slNewList(), and the ubi_slList structure
+ * for more info.
*
* + Also, note that this module is similar to the ubi_dLinkList
* module. There are three key differences:
@@ -84,7 +92,7 @@
* is not done in ubi_dLinkList.
* - The ubi_slRemove() function, by necessity, removed the 'next'
* node. In ubi_dLinkList, the ubi_dlRemove() function removes
- * the 'current' node.
+ * the 'current' node.
*
* ========================================================================== **
*/
@@ -117,9 +125,13 @@ typedef struct
typedef ubi_slList *ubi_slListPtr;
+
/* ========================================================================== **
* Macros...
*
+ * ubi_slNewList - Macro used to declare and initialize a list header in
+ * one step.
+ *
* ubi_slCount - Returns the current number of entries in the list.
*
* ubi_slAddHead - Add a new node at the head of the list.
@@ -143,11 +155,12 @@ typedef ubi_slList *ubi_slListPtr;
* Add and Rem macros are nothing more than nice front-ends to the
* Insert and Remove functions.
*
- * Also note that there the First, Next and Last macros do no parameter
- * checking!
+ * Also note that the First, Next and Last macros do no parameter checking!
*
*/
+#define ubi_slNewList( L ) ubi_slList (L)[1] = {{ NULL, (ubi_slNodePtr)(L), 0 }}
+
#define ubi_slCount( L ) (((ubi_slListPtr)(L))->count)
#define ubi_slAddHead( L, N ) \