X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flibpspp%2Ftower.h;h=2ec5a0d820b354a91f19cfa1dd961f5407f52dc0;hb=81579d9e9f994fb2908f50af41c3eb033d216e58;hp=246984a2c1bfd6cd1c46100fbe95f84140843a92;hpb=7fbfc32fc3c636959b0a25b3e76609f86519e84a;p=pspp-builds.git diff --git a/src/libpspp/tower.h b/src/libpspp/tower.h index 246984a2..2ec5a0d8 100644 --- a/src/libpspp/tower.h +++ b/src/libpspp/tower.h @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 2007 Free Software Foundation, Inc. + Copyright (C) 2007, 2009, 2011 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,13 +50,15 @@ #define LIBPSPP_TOWER_H #include -#include +#include "libpspp/abt.h" +#include "libpspp/cast.h" /* Returns the data structure corresponding to the given NODE, assuming that NODE is embedded as the given MEMBER name in data type STRUCT. */ -#define tower_data(NODE, STRUCT, MEMBER) \ - ((STRUCT *) ((char *) (NODE) - offsetof (STRUCT, MEMBER))) +#define tower_data(NODE, STRUCT, MEMBER) \ + (CHECK_POINTER_HAS_TYPE (NODE, struct tower_node *), \ + UP_CAST (NODE, STRUCT, MEMBER)) /* A node within a tower. */ struct tower_node