XmResolveAllPartOffsets man page on Ultrix

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

XmResolveAllPartOffsets(3X)	   OSF/Motif	   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;      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 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 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  wid‐
       get  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 examin‐
       ing the size fields of all superclass records.  Uses  the  part	offset
       array to modify the offset entries in the resource list to be real off‐
       sets.  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,	 XmConstraint‐
       PartOffset,  XmField,  and  XmConstraintField macros concatenate things
       together, you must ensure that there is no space after the  part	 argu‐
       ment.   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)  \	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 Ultrix

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