/*
*****************************************************************************
**                                                                          *
**                         COPYRIGHT (c) 1988 BY                            *
**             DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.                *
**	MASSACHUSSETTS INSTITUTE OF TECHNOLOGY, CAMBRIDGE, MASS.	    *
**                         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 DIGITAL EQUIPMENT  *
**  CORPORATION OR MIT.                                                     *
**                                                                          *
**  DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR  RELIABILITY  OF  ITS  *
**  SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.                 *
**                                                                          *
*****************************************************************************
**++
**  FACILITY:
**
**      < to be supplied >
**
**  ABSTRACT:
**
**      < to be supplied >
**
**  ENVIRONMENT:
**
**      < to be supplied >
**
**  MODIFICATION HISTORY:
**
**      < to be supplied >
**
**--
**/

#ifndef _Translate_h_
#define _Translate_h_

class TranslationData;
typedef TranslationData *XtTranslations;
typedef TranslationData *XtAccelerators;
typedef unsigned int Modifiers;
/****************************************************************
 *
 * Translation Management
 *
 ****************************************************************/


typedef void (*XtActionProc)(Widget, XEvent*, String*, Cardinal*);

typedef XtActionProc* XtBoundActions;

struct XtActionsRec {
    char    *string;
    XtActionProc proc;
};

extern XtTranslations XtParseTranslationTable(String);

extern XtAccelerators XtParseAcceleratorTable(String);

// next function really isn't implemented
extern void XtFreeTranslations(XtTranslations);

extern void XtOverrideTranslations(Widget, XtTranslations);

extern void XtAugmentTranslations(Widget, XtTranslations);

extern void XtInstallAccelerators(Widget, Widget);

extern void XtInstallAllAccelerators(Widget, Widget);

extern void XtUninstallTranslations(Widget);

extern void XtAddActions(XtActionList, Cardinal);


/***************************************************************
 *
 * Keycode and Keysym procedures for translation management
 *
 ****************************************************************/

typedef void (*XtKeyProc)(Display*, KeyCode, Modifiers, Modifiers*, KeySym*);

extern void XtTranslateKeycode(Display*, KeyCode, Modifiers, Modifiers*, KeySym*);

extern void XtTranslateKey(Display*, KeyCode, Modifiers, Modifiers*, KeySym*);

extern void XtSetKeyTranslator(Display*, XtKeyProc);


typedef void (*XtCaseProc)(KeySym*, KeySym*, KeySym*);

extern void XtRegisterCaseConverter(Display*, XtCaseProc, KeySym, KeySym);

extern void XtConvertCase(Display*, KeySym, KeySym*, KeySym*);

#endif
/* don't add anything after the endif */
