.BI "struct TYPE *CIRCLEQ_LAST(CIRCLEQ_HEAD *" head );
.BI "struct TYPE *CIRCLEQ_PREV(struct TYPE *" elm ", CIRCLEQ_ENTRY " NAME );
.BI "struct TYPE *CIRCLEQ_NEXT(struct TYPE *" elm ", CIRCLEQ_ENTRY " NAME );
-.BI "void CIRCLEQ_LOOP_PREV(CIRCLEQ_HEAD *" head ,
+.BI "struct TYPE *CIRCLEQ_LOOP_PREV(CIRCLEQ_HEAD *" head ,
.BI " struct TYPE *" elm ", CIRCLEQ_ENTRY " NAME );
-.BI "void CIRCLEQ_LOOP_NEXT(CIRCLEQ_HEAD *" head ,
+.BI "struct TYPE *CIRCLEQ_LOOP_NEXT(CIRCLEQ_HEAD *" head ,
.BI " struct TYPE *" elm ", CIRCLEQ_ENTRY " NAME );
.PP
.BI "CIRCLEQ_FOREACH(struct TYPE *" var ", CIRCLEQ_HEAD *" head ,
.PP
.BR CIRCLEQ_FIRST (),
.BR CIRCLEQ_LAST (),
-.BR CIRCLEQ_PREV (),
+.BR CIRCLEQ_LOOP_PREV (),
and
-.BR CIRCLEQ_NEXT ()
+.BR CIRCLEQ_LOOP_NEXT ()
return a pointer to the first, last, previous, or next
.I TYPE
structure, respectively.
.PP
+.BR CIRCLEQ_PREV (),
+and
+.BR CIRCLEQ_NEXT ()
+are similar to their
+.BR CIRCLEQ_LOOP_* ()
+counterparts,
+except that if the argument is the first or last element, respectively,
+they return
+.IR &head .
+.PP
.BR CIRCLEQ_HEAD_INITIALIZER ()
returns an initializer that can be assigned to the queue
.IR head .