From 0574c613cd00c03d287316a4c78c797ba0beea51 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Mon, 21 Mar 2011 14:06:35 -0700 Subject: [PATCH] list: Allow list_front(), list_back() to take 'const' arguments. It totally makes sense to pass a const struct list * to one of these functions. Ideally the return type would be the same as the argument type but C can't handle that, so this is the best second choice. --- lib/list.c | 16 ++++++++++------ lib/list.h | 6 +++--- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/lib/list.c b/lib/list.c index 6d5f6fe0..0f4f2f84 100644 --- a/lib/list.c +++ b/lib/list.c @@ -127,20 +127,24 @@ list_pop_back(struct list *list) return back; } -/* Returns the front element in 'list'. - Undefined behavior if 'list' is empty. */ +/* Returns the front element in 'list_'. + Undefined behavior if 'list_' is empty. */ struct list * -list_front(struct list *list) +list_front(const struct list *list_) { + struct list *list = (struct list *) list_; + assert(!list_is_empty(list)); return list->next; } -/* Returns the back element in 'list'. - Undefined behavior if 'list' is empty. */ +/* Returns the back element in 'list_'. + Undefined behavior if 'list_' is empty. */ struct list * -list_back(struct list *list) +list_back(const struct list *list_) { + struct list *list = (struct list *) list_; + assert(!list_is_empty(list)); return list->prev; } diff --git a/lib/list.h b/lib/list.h index ddb0e659..915ee854 100644 --- a/lib/list.h +++ b/lib/list.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2009, 2010 Nicira Networks. + * Copyright (c) 2008, 2009, 2010, 2011 Nicira Networks. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -47,8 +47,8 @@ struct list *list_pop_front(struct list *); struct list *list_pop_back(struct list *); /* List elements. */ -struct list *list_front(struct list *); -struct list *list_back(struct list *); +struct list *list_front(const struct list *); +struct list *list_back(const struct list *); /* List properties. */ size_t list_size(const struct list *); -- 2.30.2