X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flibpspp%2Fll.h;h=bf871f6b0f842a0a42726de48364aad08ea4d3ea;hb=0d323042aa7503f67186c88a5d41d1517ba9926c;hp=65ecf55f2cad759a50085a85e90f1e3c79cf7f02;hpb=8af88c0b7ea2fe75df7e45497988ed0371006a86;p=pspp diff --git a/src/libpspp/ll.h b/src/libpspp/ll.h index 65ecf55f2c..bf871f6b0f 100644 --- a/src/libpspp/ll.h +++ b/src/libpspp/ll.h @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 2006 Free Software Foundation, Inc. + Copyright (C) 2006, 2009 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -50,6 +50,9 @@ #include #include #include +#include + +#include /* Embedded, circular doubly linked list. @@ -108,8 +111,9 @@ /* Returns the data structure corresponding to the given node LL, assuming that LL is embedded as the given MEMBER name in data type STRUCT. */ -#define ll_data(LL, STRUCT, MEMBER) \ - ((STRUCT *) ((char *) (LL) - offsetof (STRUCT, MEMBER))) +#define ll_data(LL, STRUCT, MEMBER) \ + (CHECK_POINTER_HAS_TYPE(LL, struct ll *), \ + UP_CAST(LL, STRUCT, MEMBER)) /* Linked list node. */ struct ll @@ -378,7 +382,7 @@ ll_tail (const struct ll_list *list) static inline struct ll * ll_null (const struct ll_list *list) { - return (struct ll *) &list->null; + return CONST_CAST (struct ll *, &list->null); } /* Returns the node following LL in its list,