typedef struct { uchar row[3]; uchar col[3]; } Level; typedef struct { int moves; /* nr of moves needed */ Level *base; /* 0th level of group */ Level *beyond; /* past last level of group */ int count; /* beyond - base */ } Group; typedef struct { int base; /* nr of moves needed for group[0] */ int beyond; /* past last nr-of-moves */ int ngroup; /* beyond - base */ Group *group; /* each next group needs one more move */ int nlevel; Level *level; /* all levels; group contains pointers into this */ } Directory; enum { ORow = 0, OCol }; typedef struct { char *name; struct { int min; int max; int count; } req; int min; int max; int count; int avail; int total; int seen; char *data; int ndata; ulong mtime; } Generated; typedef struct { int nseen; } GrpSeen; typedef struct { int ngroup; GrpSeen *group; uchar *seen; } Seen;