>>>>> On Thu, 9 Nov 2000 15:22:16 +0100, Alexander Mai 
><[EMAIL PROTECTED]> said:

  Alexander> "Stupid question time" obviously ... :-)

  Alexander> Our XmP.h features this code snippet:


  Alexander> #ifdef     __BOUNDS_CHECKING_ON
  Alexander> /* This is a version that works with Bounds Checking GCC */
  Alexander> #define    XtWidth(w)       (((XmGadget)(w))->rectangle.width)
  Alexander> #define    XtHeight(w)      (((XmGadget)(w))->rectangle.height)
  Alexander> #define XtX(w)              (((XmGadget)(w))->rectangle.x)
  Alexander> #define XtY(w)              (((XmGadget)(w))->rectangle.y)
  Alexander> #define XtBackground(w)     (((Widget)(w))->core.background_pixel)
  Alexander> #define XtBorderWidth(w) (((XmGadget)(w))->rectangle.border_width)
  Alexander> #define XtSensitive(w)      (((XmGadget)(w))->rectangle.sensitive && \
  Alexander>                      ((XmGadget)(w))->rectangle.ancestor_sensitive)
  Alexander> #define XtCoreProc(w,p)  
(((XmGadget)(w))->core.widget_class->core_class.p)
  Alexander> #else
  Alexander> #define XtWidth(w)  (((Widget)(w))->core.width)
  Alexander> #define XtHeight(w)         (((Widget)(w))->core.height)
  Alexander> #define XtX(w)              (((Widget)(w))->core.x)
  Alexander> #define XtY(w)              (((Widget)(w))->core.y)
  Alexander> #define XtBackground(w)     (((Widget)(w))->core.background_pixel)
  Alexander> #define XtBorderWidth(w) (((Widget)(w))->core.border_width)
  Alexander> #define XtSensitive(w)      (((Widget)(w))->core.sensitive && \
  Alexander>                      ((Widget)(w))->core.ancestor_sensitive)
  Alexander> #define XtCoreProc(w,p)  (((Widget)(w))->core.widget_class->core_class.p)
  Alexander> #endif

  Alexander> I know roughly what bounds checking extensions for gcc are,
  Alexander> but I don't understand what's the purpose of this code?!

At a guess, sizeof(XmGadget) < sizeof(Widget) so casting a gadget to Widget
will trigger a bounds check?

__Martin

Reply via email to