((STRUCT *) ((char *) (NODE) - offsetof (STRUCT, MEMBER)))
/* A node within a tower. */
-struct tower_node
+struct tower_node
{
struct abt_node abt_node; /* ABT node. */
unsigned long int subtree_height; /* Node's plus descendants' heights. */
/* Returns the height of a tower node. */
static inline unsigned long
-tower_node_get_height (const struct tower_node *node)
+tower_node_get_height (const struct tower_node *node)
{
return node->height;
}
/* A tower. */
-struct tower
+struct tower
{
struct abt abt; /* Tree. */
struct tower_node *cache; /* Cache node. */
unsigned long int level,
unsigned long int *node_start);
struct tower_node *tower_first (const struct tower *);
+struct tower_node *tower_last (const struct tower *);
struct tower_node *tower_next (const struct tower *,
const struct tower_node *);
+struct tower_node *tower_prev (const struct tower *,
+ const struct tower_node *);
#endif /* libpspp/tower.h */