void fr_cursor_copy(fr_cursor_t *out, fr_cursor_t const *in) CC_HINT(nonnull);
-void *fr_cursor_head(fr_cursor_t *cursor) CC_HINT(nonnull);
+void *fr_cursor_head(fr_cursor_t *cursor);
-void *fr_cursor_tail(fr_cursor_t *cursor) CC_HINT(nonnull);
+void *fr_cursor_tail(fr_cursor_t *cursor);
-void *fr_cursor_next(fr_cursor_t *cursor) CC_HINT(nonnull);
+void *fr_cursor_next(fr_cursor_t *cursor);
-void *fr_cursor_next_peek(fr_cursor_t *cursor) CC_HINT(nonnull);
+void *fr_cursor_next_peek(fr_cursor_t *cursor);
-void *fr_cursor_list_next_peek(fr_cursor_t *cursor) CC_HINT(nonnull);
+void *fr_cursor_list_next_peek(fr_cursor_t *cursor);
-void *fr_cursor_list_prev_peek(fr_cursor_t *cursor) CC_HINT(nonnull);
+void *fr_cursor_list_prev_peek(fr_cursor_t *cursor);
-void *fr_cursor_current(fr_cursor_t *cursor) CC_HINT(nonnull);
+void *fr_cursor_current(fr_cursor_t *cursor);
void fr_cursor_prepend(fr_cursor_t *cursor, void *v) CC_HINT(nonnull);
*/
void *fr_cursor_head(fr_cursor_t *cursor)
{
+ if (!cursor) return NULL;
+
cursor->current = *cursor->head;
cursor->prev = NULL;
*/
void *fr_cursor_tail(fr_cursor_t *cursor)
{
- if (!*cursor->head) return NULL;
+ if (!cursor || !*cursor->head) return NULL;
cursor->current = cursor_tail(&cursor->prev, cursor, cursor->current);
cursor->tail = cursor->current; /* my as well update our insertion tail */
*/
void * CC_HINT(hot) fr_cursor_next(fr_cursor_t *cursor)
{
- if (!*cursor->head) return NULL;
+ if (!cursor || !*cursor->head) return NULL;
cursor->current = cursor_next(&cursor->prev, cursor, cursor->current);
*/
void *fr_cursor_list_next_peek(fr_cursor_t *cursor)
{
- if (!cursor->current) return NULL;
+ if (!cursor || !cursor->current) return NULL;
return *NEXT_PTR(cursor->current);
}
*/
void *fr_cursor_list_prev_peek(fr_cursor_t *cursor)
{
+ if (!cursor) return NULL;
+
return cursor->prev;
}
*/
void * CC_HINT(hot) fr_cursor_current(fr_cursor_t *cursor)
{
+ if (!cursor) return NULL;
+
return cursor->current;
}