XmResolveAllPartOffsets man page on DigitalUNIX

Man page or keyword search:  
man Server   12896 pages
apropos Keyword Search (all sections)
Output format
DigitalUNIX logo
[printable version]

XmResolveAllPartOffsets(3X)			   XmResolveAllPartOffsets(3X)

NAME
       XmResolveAllPartOffsets - A function that allows writing of upward-com‐
       patible applications and widgets

SYNOPSIS
       #include <Xm/XmP.h>

       void XmResolveAllPartOffsets (widget_class, offset, constraint_offset)
	       WidgetClass widget_class;
	       XmOffsetPtr * offset;
	       XmOffsetPtr * constraint_offset;

DESCRIPTION
       The use of offset records requires two extra global variables per  wid‐
       get class.  The variables consist of pointers to arrays of offsets into
       the widget record and constraint record for each	 part  of  the	widget
       structure.  The	XmResolveAllPartOffsets	 function allocates the offset
       records needed by an application to guarantee upward-compatible	access
       to  widget instance and constraint records by applications and widgets.
       These offset records are used by the widget to access all of  the  wid‐
       get's variables. A widget needs to take the following steps: Instead of
       creating a resource list, the widget creates an offset  resource	 list.
       To  help	 you accomplish this, use the XmPartResource structure and the
       XmPartOffset macro. The XmPartResource data structure looks just like a
       resource list, but instead of having one integer for its offset, it has
       two shorts. This is put into the class record as if it  were  a	normal
       resource	 list.	 Instead  of using XtOffset for the offset, the widget
       uses XmPartOffset.

	      If the widget is a subclass  of  the  Constraint	class  and  it
	      defines	additional  constraint	resources,  create  an	offset
	      resource list for the constraint part as well. Instead of	 using
	      XtOffset	for the offset, the widget uses XmConstraintPartOffset
	      in the constraint resource list.

	      XmPartResource resources[] = {
		{  BarNxyz, BarCXyz, XmRBoolean, sizeof(Boolean),
		   XmPartOffset(Bar,xyz), XmRImmediate, (XtPointer)False } };

	      XmPartResource constraints[] = {
		{  BarNmaxWidth, BarNMaxWidth,
			XmRDimension, sizeof(Dimension),
			XmConstraintPartOffset(Bar,max_width),
			XmRImmediate, (XtPointer)100 } }; Instead  of  putting
	      the  widget size in the class record, the widget puts the widget
	      part size in the same field. If the widget is a subclass of  the
	      Constraint  class,  instead  of  putting	the  widget constraint
	      record size in the class record, the widget puts the widget con‐
	      straint  part size in the same field.  Instead of putting XtVer‐
	      sion in the class record, the widget puts XtVersionDontCheck  in
	      the  class  record.   Define a variable, of type XmOffsetPtr, to
	      point to the offset record. If the widget is a subclass  of  the
	      Constraint class, define a variable of type XmOffsetPtr to point
	      to the constraint offset record. These can be part of  the  wid‐
	      get's  class record or separate global variables.	 In class ini‐
	      tialization, the widget calls  XmResolveAllPartOffsets,  passing
	      it  pointers  to	the  class  record,  the address of the offset
	      record, and the address of the constraint offset record. If  the
	      widget not is a subclass of the Constraint class, it should pass
	      NULL as the address of the constraint offset record.  This  does
	      several  things:	Adds the superclass (which, by definition, has
	      already been initialized) size field to the part size field.  If
	      the  widget  is  a  subclass  of	the Constraint class, adds the
	      superclass constraint size field to the constraint  size	field.
	      Allocates	 an  array  based upon the number of superclasses.  If
	      the widget is a subclass of the constraint class,	 allocates  an
	      array for the constraint offset record.  Fills in the offsets of
	      all the widget parts and constraint parts with  the  appropriate
	      values,  determined  by  examining the size fields of all super‐
	      class records.  Uses the part offset array to modify the	offset
	      entries  in  the	resource  list to be real offsets.  The widget
	      defines a constant which will be the index to its part structure
	      in  the  offsets	array.	The value should be 1 greater than the
	      index of the widget's superclass. Constants defined for  all  Xm
	      widgets can be found in <XmP.h>.

	      #define  BarIndex	 (XmBulletinBIndex  +  1) Instead of accessing
	      fields directly, the widget must always go  through  the	offset
	      table.  The XmField and XmConstraintField macros help you access
	      these fields. Because the XmPartOffset,  XmConstraintPartOffset,
	      XmField,	 and   XmConstraintField   macros  concatenate	things
	      together, you must ensure that there is no space after the  part
	      argument.	 For example, the following macros do not work because
	      of the space after the part (Label) argument:

	      XmField(w, offset, Label , text, char  *)	 XmPartOffset(Label  ,
	      text).

	      Therefore,  you  must not have any spaces after the part (Label)
	      argument, as illustrated here:

	      XmField(w, offset, Label, text, char *)

	      You can define macros for each field to make this easier. Assume
	      an integer field xyz:

	      #define BarXyz(w) (*(int *)(((char *) w) + \
		offset[BarIndex] + XtOffset(BarPart,xyz)))

	      For constraint field max_width:

	      #define BarMaxWidth(w) \
		XmConstraintField(w,constraint_offsets,Bar,max_width,Dimen‐
	      sion)

       The parameters for XmResolveAllPartOffsets are defined below: Specifies
       the  widget  class  pointer  for	 the created widget Returns the offset
       record Returns the constraint offset record

SEE ALSO
       XmResolvePartOffsets(3X)

						   XmResolveAllPartOffsets(3X)
[top]

List of man pages available for DigitalUNIX

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net