XmResolveAllPartOffsets man page on IRIX

Man page or keyword search:  
man Server   31559 pages
apropos Keyword Search (all sections)
Output format
IRIX 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)
	    WidgetClasswidget_class;	    XmOffsetPtr*  offset;	XmOff‐
       setPtr* constraint_offset;

VERSION
       This page documents version 1.2 of the Motif library.

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 wid‐
       get  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 constraint part  size	 in  the  same
       field.	Instead	 of  putting XtVersion 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
       widget's class record or separate global variables.  In class  initial‐
       ization,	 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  con‐
       straint offset record.  This does several things:

       Adds  the  superclass  (which, by definition, has already been initial‐
       ized) size field to the part size field

       If the widget is a subclass of the Constraint class,  adds  the	super‐
       class 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
       superclass records

       Uses the part offset array to modify the offset entries in the resource
       list  to	 be real offsets, in place 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) argu‐
       ment, as illustrated here: XmField(w, offset, Label, text, char *)  You
       can  define macros for each field to make this easier.  Assume an inte‐
       ger field xyz: #define BarXyz(w) (*(int *)(((char  *)  w)  +  \	  off‐
       set[BarIndex] + XtOffset(BarPart,xyz)))

       For  constraint	field  max_width:  #define  BarMaxWidth(w)  \	XmCon‐
       straintField(w,constraint_offsets,Bar,max_width,Dimension)

       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

RELATED INFORMATION
       XmResolvePartOffsets(3X).

						   XmResolveAllPartOffsets(3X)
[top]

List of man pages available for IRIX

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