/* This symbol must always be defined when compiling for Motif.  This is to
 * ensure that the correct set of Xt header files are used (ie those in
 * /usr/include/Xm rather than the X11 Release 4 ones in /usr/include/X11).
 * All the R4 Xt headers check for this symbol; if it is defined, they give
 * an error.
 */

#ifndef _MOTIF_XT
#define _MOTIF_XT
#endif

#ifdef REV_INFO
#ifndef lint
static char SCCSID[] = "OSF/Motif: @(#)IntrinsicP.h	1.1 89/07/19";
#endif /* lint */
#endif /* REV_INFO */
/******************************************************************************
*******************************************************************************
*
*  (c) Copyright 1989, OPEN SOFTWARE FOUNDATION, INC.
*  (c) Copyright 1989, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
*  (c) Copyright 1987, 1988, 1989 HEWLETT-PACKARD COMPANY
*  (c) Copyright 1988 MASSACHUSETTS INSTITUTE OF TECHNOLOGY 
*  ALL RIGHTS RESERVED
*  
*  	THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED
*  AND COPIED ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND
*  WITH THE INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR
*  ANY OTHER COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE
*  AVAILABLE TO ANY OTHER PERSON.  NO TITLE TO AND OWNERSHIP OF THE
*  SOFTWARE IS HEREBY TRANSFERRED.
*  
*  	THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
*  NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY OPEN SOFTWARE
*  FOUNDATION, INC. OR ITS THIRD PARTY SUPPLIERS  
*  
*  	OPEN SOFTWARE FOUNDATION, INC. AND ITS THIRD PARTY SUPPLIERS,
*  ASSUME NO RESPONSIBILITY FOR THE USE OR INABILITY TO USE ANY OF ITS
*  SOFTWARE .   OSF SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
*  KIND, AND OSF EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES, INCLUDING
*  BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
*  FITNESS FOR A PARTICULAR PURPOSE.
*  
*  Notice:  Notwithstanding any other lease or license that may pertain to,
*  or accompany the delivery of, this computer software, the rights of the
*  Government regarding its use, reproduction and disclosure are as set
*  forth in Section 52.227-19 of the FARS Computer Software-Restricted
*  Rights clause.
*  
*  (c) Copyright 1989, Open Software Foundation, Inc.  Unpublished - all
*  rights reserved under the Copyright laws of the United States.
*  
*  RESTRICTED RIGHTS NOTICE:  Use, duplication, or disclosure by the
*  Government is subject to the restrictions as set forth in subparagraph
*  (c)(1)(ii) of the Rights in Technical Data and Computer Software clause
*  at DFARS 52.227-7013.
*  
*  Open Software Foundation, Inc.
*  11 Cambridge Center
*  Cambridge, MA   02142
*  (617)621-8700
*  
*  RESTRICTED RIGHTS LEGEND:  This computer software is submitted with
*  "restricted rights."  Use, duplication or disclosure is subject to the
*  restrictions as set forth in NASA FAR SUP 18-52.227-79 (April 1985)
*  "Commercial Computer Software- Restricted Rights (April 1985)."  Open
*  Software Foundation, Inc., 11 Cambridge Center, Cambridge, MA  02142.  If
*  the contract contains the Clause at 18-52.227-74 "Rights in Data General"
*  then the "Alternate III" clause applies.
*  
*  (c) Copyright 1989, Open Software Foundation, Inc.
*  ALL RIGHTS RESERVED 
*  
*  
* Open Software Foundation is a trademark of The Open Software Foundation, Inc.
* OSF is a trademark of Open Software Foundation, Inc.
* OSF/Motif is a trademark of Open Software Foundation, Inc.
* Motif is a trademark of Open Software Foundation, Inc.
* DEC is a registered trademark of Digital Equipment Corporation
* DIGITAL is a registered trademark of Digital Equipment Corporation
* X Window System is a trademark of the Massachusetts Institute of Technology
*
*******************************************************************************
******************************************************************************/

#ifndef _XtintrinsicP_h
#define _XtintrinsicP_h

#ifndef _XtIntrinsic_h
#include "Intrinsic.h"
#endif

typedef unsigned long XtVersionType;

#define XT_VERSION 11
#define XT_REVISION 3
#define XtVersion (XT_VERSION * 1000 + XT_REVISION)
#define XtVersionDontCheck 0

/*
 * Hints to help determine the focus model being implemented
 */

#define NotCurrentlyActivated 0
#define FocusInActivated      1
#define EnterNotifyActivated  2
extern int _XtFocusMode;          /* Defined in Event.c */

extern void _XtInherit();
    /* takes no arguments */

typedef void (*XtProc)();
    /* takes no arguments */

typedef void (*XtWidgetClassProc)();
    /* WidgetClass class */

typedef void (*XtWidgetProc)();
    /* Widget widget */

typedef Boolean (*XtAcceptFocusProc)();
    /* Widget widget; */
    /* Time *time; */ /* X time */

typedef void (*XtArgsProc)();
    /* Widget   widget */
    /* ArgList  args */
    /* Cardinal *num_args */

typedef void (*XtInitProc)();
    /* Widget request_widget; */
    /* Widget new_widget; */

typedef Boolean (*XtSetValuesFunc)();  /* returns TRUE if redisplay needed */
    /* Widget widget;       */
    /* Widget request;      */
    /* Widget new;	    */

typedef Boolean (*XtArgsFunc)();
    /* Widget   widget      */
    /* ArgList  args	    */
    /* Cardinal *num_args   */

typedef void (*XtAlmostProc)();
    /* Widget		widget;     */
    /* Widget		new_widget; */
    /* XtWidgetGeometry *request;   */
    /* XtWidgetGeometry *reply;     */

typedef void (*XtExposeProc)();
    /* Widget    widget; */
    /* XEvent    *event; */
    /* Region	 region; */

typedef void (*XtRealizeProc) ();
    /* Widget	widget;			    */
    /* XtValueMask mask;		    */
    /* XSetWindowAttributes *attributes;    */

typedef void (*XtCreatePopupChildProc)();

typedef XtGeometryResult (*XtGeometryHandler)();
    /* Widget		widget      */
    /* XtWidgetGeometry *request    */
    /* XtWidgetGeometry *reply      */

typedef void (*XtStringProc)();
    /* Widget		widget	    */
    /* String		str	    */

typedef struct _StateRec *StatePtr;

typedef struct _XtTMRec {
    XtTranslations  translations;	/* private to Translation Manager    */
    XtBoundActions  proc_table;		/* procedure bindings for actions    */
    StatePtr        current_state;      /* Translation Manager state ptr     */
    unsigned long   lastEventTime;
} XtTMRec, *XtTM;

#ifndef XtCoreP_h
#include "CoreP.h"
#endif
#ifndef _XtCompositeP_h
#include "CompositeP.h"
#endif
#ifndef _XtConstraintP_h
#include "ConstrainP.h"
#endif

#ifndef NOT_MOTIF
/*
 * Include the gadget headers so that clients don't have to reference
 * IntrinsicI.h
 */
#ifndef _Xt_ObjectP_h_
#include "ObjectP.h"
#endif
#ifndef _Xt_RectObjP_h_
#include "RectObjP.h"
#endif
#ifndef _Xt_WindowObjP_h_
#include "WindowObjP.h"
#endif
#ifndef _Xt_CompObjP_h_
#include "CompObjP.h"
#endif
#endif /* NOT_MOTIF */

#define XtDisplay(widget)	((widget)->core.screen->display)
#define XtScreen(widget)	((widget)->core.screen)
#define XtWindow(widget)	((widget)->core.window)
#define XtClass(widget)		((widget)->core.widget_class)
#define XtSuperclass(widget)	(XtClass(widget)->core_class.superclass)
#define XtIsManaged(widget)     ((widget)->core.managed)
#define XtIsRealized(widget)	((widget)->core.window != NULL)
#define XtIsSensitive(widget)	((widget)->core.sensitive && \
				 (widget)->core.ancestor_sensitive)
#define XtParent(widget)	((widget)->core.parent)

#ifdef DEBUG
#define XtCheckSubclass(w, widget_class_ptr, message)	\
	if (!XtIsSubclass((w), (widget_class_ptr))) {	\
	    String params[3];				\
	    Cardinal num_params = 3;			\
	    params[0] = (w)->core.widget_class->core_class.class_name;	     \
	    params[1] = (widget_class_ptr)->core_class.class_name;	     \
	    params[2] = (message);					     \
	    XtErrorMsg("subclassMismatch", "xtCheckSubclass",		     \
		    "XtToolkitError",					     \
		    "Widget class %s found when subclass of %s expected: %s",\
		    params, &num_params);		\
	}
#else
#define XtCheckSubclass(w, widget_class, message)	/* nothing */
#endif

#ifndef NOT_MOTIF

#define _XtInitBit			(1<<0)
#define _XtCompositeBit			(1<<1)
#define _XtCompositeObjectBit		(1<<2)
#define _XtWindowObjectBit		(1<<3)
#define _XtRectObjectBit		(1<<4)
#define _XtConstraintBit		(1<<5)
#define _XtShellBit			(1<<6)
#define _XtApplicationShellBit		(1<<7)

#undef XtIsComposite
#define XtIsComposite(widget)       (XtClass(widget)->core_class.class_inited & _XtCompositeBit)

#undef XtIsCompositeObject
#define XtIsCompositeObject(widget) (XtClass(widget)->core_class.class_inited & _XtCompositeObjectBit)

#undef XtIsWindowObject
#define XtIsWindowObject(widget)    (XtClass(widget)->core_class.class_inited & _XtWindowObjectBit)

#undef XtIsRectObject
#define XtIsRectObject(widget)      (XtClass(widget)->core_class.class_inited & _XtRectObjectBit)

#undef XtIsConstraint
#define XtIsConstraint(widget)      (XtClass(widget)->core_class.class_inited & _XtConstraintBit)

#undef XtIsShell
#define XtIsShell(widget)	    (XtClass(widget)->core_class.class_inited & _XtShellBit)

#undef XtIsApplicationShell
#define XtIsApplicationShell(widget) (XtClass(widget)->core_class.class_inited & _XtApplicationShellBit)

#endif /* NOT_MOTIF */

extern void XtCreateWindow ();
    /* Widget widget; */
    /* unsigned int windowClass; */
    /* Visual *visual; */
    /* Mask valueMask; */
    /* XSetWindowAttributes *attributes; */

extern void XtResizeWidget(); /* widget, width, height, borderWidth */
    /* Widget  widget */
    /* Dimension width, height, borderWidth; */

extern void XtMoveWidget(); /* widget, x, y */
    /* Widget  widget */
    /* Position x, y  */

extern void XtConfigureWidget(); /* widget, x, y, width, height, borderWidth */
    /* Widget widget; */
    /* Position x, y; */
    /* Dimension height, width, borderWidth; */

extern XtCallbackStatus XtWidgetHasCallbacks();
extern void XtWidgetCallCallbacks();
extern void XtWidgetOverrideCallback();
extern void XtOverrideCallback();

#endif /* _XtIntrinsicP_h */
/* DON'T ADD STUFF AFTER THIS #endif */
