#define MXDISABLEGADG  0x0001  /* gadget forces disable of exclude group */
#define MXENABLEGADG   0x0002  /* gadget forces enable of exclude group */
#define MXGADGONOFF    0x0004  /* gadget is enabled/disabled by
                                  the flags MXENABLEGADG/MXDISABLEGADG */
#define MXSELECT       0x0008  /* Gadget is SELECTED (but disabled) */

#define GadgFlagSet(x,y)    ((x->Flags & (y)) == (y))
#define GadgFlagNotSet(x,y) (GadgFlagSet(x,y) == 0)

#define MxFlagSet(x,y)      (((int)(x->UserData) & (y)) == (y))
#define MxFlagNotSet(x,y)   (MxFlagSet(x,y) == 0)


#define SetGadgFlag(x,y)    (x->Flags |=  (y))
#define ClearGadgFlag(x,y)  (x->Flags &= ~(y))

#define SetMxFlag(x,y)   (x->UserData = (APTR) ((int)(x->UserData) | (y)))
#define ClearMxFlag(x,y) (x->UserData = (APTR) ((int)(x->UserData) & ~(y)))


#define isSelected(x)    (GadgFlagSet(x,SELECTED))
#define isMxSelected(x)  (MxFlagSet(x,MXSELECT))
#define isAnySelected(x) (GadgFlagSet(x,SELECTED) || MxFlagSet(x,MXSELECT))
#define isNotSelected(x) (isSelected(x) == 0)
#define isDisabled(x)    (GadgFlagSet(x,GADGDISABLED))
#define isNotDisabled(x) (isDisabled(x) == 0)
#define isMxGadget(x)    (x->MutualExclude != 0)
#define isReqGadg(x)     ((x->GadgetType & REQGADGET) == REQGADGET)
#define isNotReqGadg(x)  (isReqGadg(x) == 0)


#define MxAddGadget        AddGadget
#define MxRemoveGadget     RemoveGadget
#define MxRefreshGadgets   RefreshGadgets

struct MxGadgetMasks {
   LONG DisableMask;    /* stores the Disable mask for the window */
   LONG EnableMask;     /* stores the Enable  mask for the window */
   BYTE *UserData;      /* allows more user extensions */
};

