Blame lib/Xm/BaseClassP.h

Packit b099d7
/* 
Packit b099d7
 * Motif
Packit b099d7
 *
Packit b099d7
 * Copyright (c) 1987-2012, The Open Group. All rights reserved.
Packit b099d7
 *
Packit b099d7
 * These libraries and programs are free software; you can
Packit b099d7
 * redistribute them and/or modify them under the terms of the GNU
Packit b099d7
 * Lesser General Public License as published by the Free Software
Packit b099d7
 * Foundation; either version 2 of the License, or (at your option)
Packit b099d7
 * any later version.
Packit b099d7
 *
Packit b099d7
 * These libraries and programs are distributed in the hope that
Packit b099d7
 * they will be useful, but WITHOUT ANY WARRANTY; without even the
Packit b099d7
 * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
Packit b099d7
 * PURPOSE. See the GNU Lesser General Public License for more
Packit b099d7
 * details.
Packit b099d7
 *
Packit b099d7
 * You should have received a copy of the GNU Lesser General Public
Packit b099d7
 * License along with these librararies and programs; if not, write
Packit b099d7
 * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
Packit b099d7
 * Floor, Boston, MA 02110-1301 USA
Packit b099d7
*/ 
Packit b099d7
/* 
Packit b099d7
 * HISTORY
Packit b099d7
*/ 
Packit b099d7
/* $XConsortium: BaseClassP.h /main/11 1995/10/25 19:53:53 cde-sun $ */
Packit b099d7
/* (c) Copyright 1987, 1988, 1989, 1990, 1991, 1992 HEWLETT-PACKARD COMPANY */
Packit b099d7
/* (c) Copyright 1989, 1990 DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
Packit b099d7
/* (c) Copyright 1988 MASSACHUSETTS INSTITUTE OF TECHNOLOGY  */
Packit b099d7
#ifndef _XmBaseClassP_h
Packit b099d7
#define _XmBaseClassP_h
Packit b099d7
Packit b099d7
#ifndef _XmNO_BC_INCL
Packit b099d7
#define _XmNO_BC_INCL
Packit b099d7
#endif
Packit b099d7
Packit b099d7
#include <Xm/XmP.h>
Packit b099d7
Packit b099d7
#ifdef __cplusplus
Packit b099d7
extern "C" {
Packit b099d7
#endif
Packit b099d7
Packit b099d7
Packit b099d7
#define _XmBCEPTR(wc)	((XmBaseClassExt *)(&(((WidgetClass)(wc))\
Packit b099d7
					      ->core_class.extension)))
Packit b099d7
#define _XmBCE(wc)	((XmBaseClassExt)(((WidgetClass)(wc))\
Packit b099d7
					  ->core_class.extension))
Packit b099d7
Packit b099d7
#define _XmGetBaseClassExtPtr(wc, owner) \
Packit b099d7
    ((_XmBCE(wc) && (((_XmBCE(wc))->record_type) == owner)) ? \
Packit b099d7
     _XmBCEPTR(wc) :  \
Packit b099d7
     ((XmBaseClassExt *) _XmGetClassExtensionPtr( \
Packit b099d7
						 ((XmGenericClassExt *)  \
Packit b099d7
						  _XmBCEPTR( wc)),  \
Packit b099d7
						 owner)))
Packit b099d7
Packit b099d7
/* defines for 256 bit (at least) bit field
Packit b099d7
 */
Packit b099d7
#define _XmGetFlagsBit(field, bit) \
Packit b099d7
	(field[ (bit >> 3) ]) & (1 << (bit & 0x07))
Packit b099d7
Packit b099d7
#define _XmSetFlagsBit(field, bit) \
Packit b099d7
	    (field[ (bit >> 3) ] |= (1 << (bit & 0x07)))
Packit b099d7
Packit b099d7
Packit b099d7
#ifndef XTHREADS
Packit b099d7
#define _XmFastSubclassInit(wc, bit_field) { \
Packit b099d7
	if((_Xm_fastPtr = _XmGetBaseClassExtPtr( wc, XmQmotif)) && \
Packit b099d7
	   (*_Xm_fastPtr)) \
Packit b099d7
		_XmSetFlagsBit((*_Xm_fastPtr)->flags, bit_field) ; \
Packit b099d7
   }
Packit b099d7
Packit b099d7
/* _XmGetBaseClassExtPtr can return NULL or a pointer to a NULL extension,
Packit b099d7
 * for non Motif classes in particular, so we check that up front.
Packit b099d7
 * We use the global _Xm_fastPtr for that purpose, this variable exists
Packit b099d7
 * already in BaseClass.c for apparently no other use.
Packit b099d7
 */
Packit b099d7
Packit b099d7
#define _XmIsFastSubclass(wc, bit) \
Packit b099d7
	((_Xm_fastPtr = _XmGetBaseClassExtPtr((wc),XmQmotif)) && \
Packit b099d7
         (*_Xm_fastPtr)) ? \
Packit b099d7
	     (_XmGetFlagsBit(((*_Xm_fastPtr)->flags), bit) ? TRUE : FALSE) \
Packit b099d7
		 : FALSE
Packit b099d7
Packit b099d7
#else
Packit b099d7
extern void _XmFastSubclassInit(WidgetClass, unsigned int);
Packit b099d7
extern Boolean _XmIsFastSubclass(WidgetClass, unsigned int);
Packit b099d7
#endif  /* XTHREADS */
Packit b099d7
Packit b099d7
#define XmBaseClassExtVersion 2L
Packit b099d7
#define XmBaseClassExtVersion 2L
Packit b099d7
Packit b099d7
Packit b099d7
typedef Cardinal (*XmGetSecResDataFunc)( WidgetClass,
Packit b099d7
					    XmSecondaryResourceData **);
Packit b099d7
Packit b099d7
typedef struct _XmObjectClassExtRec{
Packit b099d7
    XtPointer 		next_extension;	
Packit b099d7
    XrmQuark 		record_type;	
Packit b099d7
    long 		version;	
Packit b099d7
    Cardinal 		record_size;	
Packit b099d7
} XmObjectClassExtRec, *XmObjectClassExt;
Packit b099d7
Packit b099d7
typedef struct _XmGenericClassExtRec{
Packit b099d7
    XtPointer 		next_extension;	
Packit b099d7
    XrmQuark 		record_type;	
Packit b099d7
    long 		version;	
Packit b099d7
    Cardinal 		record_size;	
Packit b099d7
} XmGenericClassExtRec, *XmGenericClassExt;
Packit b099d7
Packit b099d7
typedef struct _XmWrapperDataRec{
Packit b099d7
    struct _XmWrapperDataRec *next;
Packit b099d7
    WidgetClass		widgetClass;
Packit b099d7
    XtInitProc		initializeLeaf;
Packit b099d7
    XtSetValuesFunc	setValuesLeaf;
Packit b099d7
    XtArgsProc		getValuesLeaf;
Packit b099d7
    XtRealizeProc	realize;
Packit b099d7
    XtWidgetClassProc	classPartInitLeaf;
Packit b099d7
    XtWidgetProc	resize;
Packit b099d7
    XtGeometryHandler   geometry_manager;
Packit b099d7
Packit b099d7
    /* init_depth is obselete now .. */
Packit b099d7
    Cardinal		init_depth;
Packit b099d7
Packit b099d7
    int                 initializeLeafCount;
Packit b099d7
    int                 setValuesLeafCount;
Packit b099d7
    int                 getValuesLeafCount;
Packit b099d7
    XtInitProc          constraintInitializeLeaf;
Packit b099d7
    XtSetValuesFunc     constraintSetValuesLeaf;
Packit b099d7
    int                 constraintInitializeLeafCount;
Packit b099d7
    int 		constraintSetValuesLeafCount;
Packit b099d7
} XmWrapperDataRec, *XmWrapperData;
Packit b099d7
Packit b099d7
typedef struct _XmBaseClassExtRec{
Packit b099d7
    XtPointer 		next_extension;	
Packit b099d7
    XrmQuark 		record_type;	
Packit b099d7
    long 		version;	
Packit b099d7
    Cardinal 		record_size;	
Packit b099d7
    XtInitProc		initializePrehook;
Packit b099d7
    XtSetValuesFunc 	setValuesPrehook;
Packit b099d7
    XtInitProc		initializePosthook;
Packit b099d7
    XtSetValuesFunc 	setValuesPosthook;
Packit b099d7
    WidgetClass		secondaryObjectClass;
Packit b099d7
    XtInitProc		secondaryObjectCreate;
Packit b099d7
    XmGetSecResDataFunc	getSecResData;
Packit b099d7
    unsigned char	flags[32];
Packit b099d7
    XtArgsProc		getValuesPrehook;
Packit b099d7
    XtArgsProc		getValuesPosthook;
Packit b099d7
    XtWidgetClassProc	classPartInitPrehook;
Packit b099d7
    XtWidgetClassProc	classPartInitPosthook;
Packit b099d7
    XtResourceList	ext_resources;
Packit b099d7
    XtResourceList	compiled_ext_resources;
Packit b099d7
    Cardinal		num_ext_resources;
Packit b099d7
    Boolean		use_sub_resources;
Packit b099d7
    XmWidgetNavigableProc widgetNavigable;
Packit b099d7
    XmFocusChangeProc	focusChange;
Packit b099d7
    XmWrapperData	wrapperData;
Packit b099d7
} XmBaseClassExtRec, *XmBaseClassExt;
Packit b099d7
Packit b099d7
Packit b099d7
typedef struct _XmWidgetExtDataRec{
Packit b099d7
    Widget		widget;
Packit b099d7
    Widget		reqWidget;
Packit b099d7
    Widget		oldWidget;
Packit b099d7
} XmWidgetExtDataRec, *XmWidgetExtData;
Packit b099d7
Packit b099d7
externalref XrmQuark	     XmQmotif;
Packit b099d7
externalref int		     _XmInheritClass;
Packit b099d7
externalref XmBaseClassExt * _Xm_fastPtr;
Packit b099d7
  
Packit b099d7
/********    Private Function Declarations    ********/
Packit b099d7
Packit b099d7
Packit b099d7
extern XmGenericClassExt * _XmGetClassExtensionPtr( 
Packit b099d7
                        XmGenericClassExt *listHeadPtr,
Packit b099d7
                        XrmQuark owner) ;
Packit b099d7
extern Boolean _XmIsSubclassOf(WidgetClass wc, WidgetClass sc);
Packit b099d7
Packit b099d7
Packit b099d7
/********    End Private Function Declarations    ********/
Packit b099d7
Packit b099d7
#ifdef __cplusplus
Packit b099d7
}  /* Close scope of 'extern "C"' declaration which encloses file. */
Packit b099d7
#endif
Packit b099d7
Packit b099d7
#endif /* _XmBaseClassP_h */
Packit b099d7
/* DON'T ADD ANYTHING AFTER THIS #endif */