From: Ben Pfaff Date: Mon, 21 Mar 2011 21:06:35 +0000 (-0700) Subject: list: Allow list_front(), list_back() to take 'const' arguments. X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0574c613cd00c03d287316a4c78c797ba0beea51;p=openvswitch 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. --- 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 *);