When a FITS header is scanned in memory or read from a file several basic values are retrieved from the header and stored in the FITSHead or FITSBasic structures. This structure may be accesed with the following macros:
    #define ft_ncards(fits)           ( fits->ncard )
    #define ft_cardnth(fits, nth)     ( ( nth <= fits->ncard )        \
                                            ? &fits->cards[nth-1]       \
                                            : NULL )
    #define ft_last(fits)             ft_cardnth(fits, fits->ncard)
    #define ft_swapped()              (*(short *)"001000" & 0x0001)
    #define ft_seek(fits)             ( fits->seek )
    typedef struct FITSHead {
            FITSCard     cards;
            FITSCard        *index;
            FITSCard         last;
            int          acard;
            int          ncard;
            int          mem;
            int          seek;
            int          data;
            FITSBasic    basic;
            FITSImage    image;
            FITSTable    table;
    } *FITSHead;
    #define ft_simple(fits)           ( fits->basic->simple   )
    #define ft_name(fits)             ( fits->basic->name     )
    #define ft_bitpix(fits)           ( fits->basic->bitpix   )
    #define ft_naxes(fits)            ( fits->basic->naxes    )
    #define ft_naxis(fits, i)         ( fits->basic->naxis[i-1])
    #define ft_pcount(fits)           ( fits->basic->pcount   )
    #define ft_gcount(fits)           ( fits->basic->gcount   )
    #define ft_databytes(fits)        ( fits->basic->databytes)
    #define ft_databloks(fits)        ( fits->basic->databloks)
    typedef struct FITSBasic {
            int  simple;
            char        *name;
            int  bitpix;
            int  naxes;
            int *naxis;
            int  gcount;
            int  pcount;
            int  databytes;
            int  databloks;
    } *FITSBasic;