home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / X / mit / lib / Xt / TranslateI.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-07-21  |  16.4 KB  |  627 lines

  1. /* $XConsortium: TranslateI.h,v 1.45 92/12/22 17:17:33 converse Exp $ */
  2.  
  3. /***********************************************************
  4. Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts,
  5. and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
  6.  
  7.                         All Rights Reserved
  8.  
  9. Permission to use, copy, modify, and distribute this software and its 
  10. documentation for any purpose and without fee is hereby granted, 
  11. provided that the above copyright notice appear in all copies and that
  12. both that copyright notice and this permission notice appear in 
  13. supporting documentation, and that the names of Digital or MIT not be
  14. used in advertising or publicity pertaining to distribution of the
  15. software without specific, written prior permission.  
  16.  
  17. DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
  18. ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
  19. DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
  20. ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  21. WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
  22. ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
  23. SOFTWARE.
  24.  
  25. ******************************************************************/
  26.  
  27. /* 
  28.  * TranslateI.h - Header file private to translation management
  29.  * 
  30.  * Author:    Gabe Beged-Dov, HP
  31.  *
  32.  * Former Author:    Charles Haynes
  33.  *         Digital Equipment Corporation
  34.  *         Western Research Laboratory
  35.  * Date:    Sat Aug 29 1987
  36.  */
  37.  
  38. /*#define REFCNT_TRANSLATIONS*/
  39. #define CACHE_TRANSLATIONS
  40.  
  41. #define TM_NO_MATCH (-2)
  42.  
  43. #define _XtRStateTablePair "_XtStateTablePair"
  44.  
  45. typedef unsigned char TMByteCard;
  46. typedef unsigned short TMShortCard;
  47. typedef unsigned long TMLongCard;
  48. typedef short TMShortInt;
  49.  
  50. typedef Boolean (*MatchProc)();
  51.     /* Event *parsed, TMEventPtr incoming */
  52.  
  53. typedef struct _ModToKeysymTable {
  54.     Modifiers mask;
  55.     int count;
  56.     int idx;
  57. } ModToKeysymTable;
  58.  
  59. typedef struct _LateBindings {
  60.     unsigned int knot:1;
  61.     unsigned int pair:1;
  62.     unsigned short ref_count;    /* garbage collection */
  63.     KeySym keysym;
  64. } LateBindings, *LateBindingsPtr;
  65.  
  66. typedef short ModifierMask;
  67.  
  68. typedef struct _ActionsRec *ActionPtr;
  69. typedef struct _ActionsRec {
  70.     int idx;            /* index into quarkTable to find proc */
  71.     String *params;        /* pointer to array of params */
  72.     Cardinal num_params;    /* number of params */
  73.     ActionPtr next;        /* next action to perform */
  74. } ActionRec;
  75.  
  76. typedef struct _XtStateRec *StatePtr;
  77. typedef struct _XtStateRec {
  78.     unsigned int    isCycleStart:1;
  79.     unsigned int    isCycleEnd:1;
  80.     TMShortCard        typeIndex;
  81.     TMShortCard        modIndex;
  82.     ActionPtr        actions;    /* rhs list of actions to perform */
  83.     StatePtr         nextLevel;
  84. }StateRec;
  85.  
  86.  
  87. #define XtTableReplace    0
  88. #define XtTableAugment    1
  89. #define XtTableOverride    2
  90. #define XtTableUnmerge  3
  91.  
  92. typedef unsigned int _XtTranslateOp;
  93.  
  94. /*
  95.  * New Definitions
  96.  */
  97. typedef struct _TMModifierMatchRec{
  98.     TMLongCard     modifiers;
  99.     TMLongCard     modifierMask;
  100.     LateBindingsPtr lateModifiers;
  101.     Boolean     standard;
  102. }TMModifierMatchRec, *TMModifierMatch;
  103.  
  104. typedef struct _TMTypeMatchRec{
  105.     TMLongCard     eventType;
  106.     TMLongCard     eventCode;
  107.     TMLongCard     eventCodeMask;
  108.     MatchProc     matchEvent;
  109. }TMTypeMatchRec, *TMTypeMatch;
  110.  
  111. typedef struct _TMBranchHeadRec {
  112.     unsigned int    isSimple:1;
  113.     unsigned int    hasActions:1;
  114.     unsigned int    hasCycles:1;
  115.     int            more:13;
  116.     TMShortCard        typeIndex;
  117.     TMShortCard        modIndex;
  118. }TMBranchHeadRec, *TMBranchHead;
  119.  
  120. /* NOTE: elements of this structure must match those of
  121.  * TMComplexStateTreeRec and TMParseStateTreeRec.
  122.  */
  123. typedef struct _TMSimpleStateTreeRec{
  124.     unsigned int    isSimple:1;
  125.     unsigned int    isAccelerator:1;
  126.     unsigned int    mappingNotifyInterest:1;
  127.     unsigned int    refCount:13;
  128.     TMShortCard        numBranchHeads;
  129.     TMShortCard        numQuarks;   /* # of entries in quarkTbl */
  130.     TMShortCard        unused;         /* to ensure same alignment */
  131.     TMBranchHeadRec    *branchHeadTbl;
  132.     XrmQuark        *quarkTbl;  /* table of quarkified rhs*/
  133. }TMSimpleStateTreeRec, *TMSimpleStateTree;    
  134.  
  135. /* NOTE: elements of this structure must match those of
  136.  * TMSimpleStateTreeRec and TMParseStateTreeRec.
  137.  */
  138. typedef struct _TMComplexStateTreeRec{
  139.     unsigned int    isSimple:1;
  140.     unsigned int    isAccelerator:1;
  141.     unsigned int    mappingNotifyInterest:1;
  142.     unsigned int    refCount:13;
  143.     TMShortCard        numBranchHeads;
  144.     TMShortCard        numQuarks;   /* # of entries in quarkTbl */
  145.     TMShortCard        numComplexBranchHeads;
  146.     TMBranchHeadRec    *branchHeadTbl;
  147.     XrmQuark        *quarkTbl;  /* table of quarkified rhs*/
  148.     StatePtr        *complexBranchHeadTbl;
  149. }TMComplexStateTreeRec, *TMComplexStateTree;    
  150.  
  151. /* NOTE: elements of this structure must match those of
  152.  * TMSimpleStateTreeRec and TMComplexStateTreeRec.
  153.  */
  154. typedef struct _TMParseStateTreeRec{
  155.     unsigned int    isSimple:1;
  156.     unsigned int    isAccelerator:1;
  157.     unsigned int    mappingNotifyInterest:1;
  158.     unsigned int    isStackQuarks:1;
  159.     unsigned int    isStackBranchHeads:1;
  160.     unsigned int    isStackComplexBranchHeads:1;
  161.     unsigned int    unused:10; /* to ensure correct alignment */
  162.     TMShortCard        numBranchHeads;
  163.     TMShortCard        numQuarks;   /* # of entries in quarkTbl */
  164.     TMShortCard        numComplexBranchHeads;
  165.     TMBranchHeadRec    *branchHeadTbl;
  166.     XrmQuark        *quarkTbl;  /* table of quarkified rhs*/
  167.     StatePtr        *complexBranchHeadTbl;
  168.     TMShortCard        branchHeadTblSize;
  169.     TMShortCard        quarkTblSize; /*total size of quarkTbl */
  170.     TMShortCard        complexBranchHeadTblSize;
  171.     StatePtr        head;
  172. }TMParseStateTreeRec, *TMParseStateTree;    
  173.  
  174. typedef union _TMStateTreeRec{
  175.     TMSimpleStateTreeRec    simple;
  176.     TMParseStateTreeRec        parse;
  177.     TMComplexStateTreeRec    complex;
  178. }*TMStateTree, **TMStateTreePtr, **TMStateTreeList;
  179.  
  180. typedef struct _TMSimpleBindProcsRec {
  181.     XtActionProc    *procs;
  182. }TMSimpleBindProcsRec, *TMSimpleBindProcs;
  183.  
  184. typedef struct _TMComplexBindProcsRec {
  185.     Widget         widget;        /*widgetID to pass to action Proc*/
  186.     XtTranslations    aXlations;
  187.     XtActionProc    *procs;
  188. }TMComplexBindProcsRec, *TMComplexBindProcs;
  189.  
  190. typedef struct _TMSimpleBindDataRec {
  191.     unsigned int        isComplex:1;    /* must be first */
  192.     TMSimpleBindProcsRec    bindTbl[1];    /* variable length */
  193. }TMSimpleBindDataRec, *TMSimpleBindData;
  194.  
  195. typedef struct _TMComplexBindDataRec {
  196.     unsigned int        isComplex:1;    /* must be first */
  197.     struct _ATranslationData    *accel_context;    /* for GetValues */
  198.     TMComplexBindProcsRec    bindTbl[1];     /* variable length */
  199. }TMComplexBindDataRec, *TMComplexBindData;
  200.  
  201. typedef union _TMBindDataRec{
  202.     TMSimpleBindDataRec        simple;
  203.     TMComplexBindDataRec    complex;
  204. }*TMBindData;
  205.  
  206. typedef struct _TranslationData{
  207.     unsigned char        hasBindings;    /* must be first */
  208.     unsigned char        operation; /*replace,augment,override*/
  209.     TMShortCard            numStateTrees;
  210.     struct _TranslationData        *composers[2];
  211.     EventMask            eventMask;
  212.     TMStateTree            stateTreeTbl[1]; /* variable length */
  213. }TranslationData;
  214.  
  215. /*
  216.  * ATranslations is returned by GetValues for translations that contain 
  217.  * accelerators.  The TM can differentiate between this and TranslationData
  218.  * (that don't have a bindTbl) by looking at the first field (hasBindings)
  219.  * of either structure.  All ATranslationData structures associated with a 
  220.  * widget are chained off the BindData record of the widget. 
  221.  */
  222. typedef struct _ATranslationData{ 
  223.     unsigned char        hasBindings;    /* must be first */
  224.     unsigned char        operation;
  225.     struct _TranslationData    *xlations;  /* actual translations */
  226.     struct _ATranslationData    *next;      /* chain the contexts together */
  227.     TMComplexBindProcsRec    bindTbl[1]; /* accelerator bindings */
  228. }ATranslationData, *ATranslations;
  229.  
  230. typedef struct _TMConvertRec {
  231.     XtTranslations    old; /* table to merge into */
  232.     XtTranslations    new; /* table to merge from */
  233. } TMConvertRec;
  234.  
  235. #define _XtEventTimerEventType ((TMLongCard)~0L)
  236. #define KeysymModMask        (1L<<27) /* private to TM */
  237. #define AnyButtonMask        (1L<<28) /* private to TM */
  238.  
  239. typedef struct _EventRec {
  240.     TMLongCard modifiers;
  241.     TMLongCard modifierMask;
  242.     LateBindingsPtr lateModifiers;
  243.     TMLongCard eventType;
  244.     TMLongCard eventCode;
  245.     TMLongCard eventCodeMask;
  246.     MatchProc matchEvent;
  247.     Boolean standard;
  248. } Event;
  249.  
  250. typedef struct _EventSeqRec *EventSeqPtr;
  251. typedef struct _EventSeqRec {
  252.     Event event;    /* X event description */
  253.     StatePtr state;    /* private to state table builder */
  254.     EventSeqPtr next;    /* next event on line */
  255.     ActionPtr actions;    /* r.h.s.   list of actions to perform */
  256. } EventSeqRec;
  257.  
  258. typedef EventSeqRec EventRec;
  259. typedef EventSeqPtr EventPtr;
  260.  
  261. typedef struct _TMEventRec {
  262.     XEvent *xev;
  263.     Event event;
  264. }TMEventRec,*TMEventPtr;
  265.  
  266. typedef struct _ActionHookRec {
  267.     struct _ActionHookRec* next; /* must remain first */
  268.     XtAppContext app;
  269.     XtActionHookProc proc;
  270.     XtPointer closure;
  271. } ActionHookRec, *ActionHook;
  272.  
  273. /* choose a number between 2 and 8 */
  274. #define TMKEYCACHELOG2 6
  275. #define TMKEYCACHESIZE (1<<TMKEYCACHELOG2)
  276.  
  277. typedef struct _KeyCacheRec {
  278.     unsigned char modifiers_return[256]; /* constant per KeyCode, key proc */
  279.     KeyCode keycode[TMKEYCACHESIZE];
  280.     unsigned char modifiers[TMKEYCACHESIZE];
  281.     KeySym keysym[TMKEYCACHESIZE];
  282. } TMKeyCache;
  283.  
  284. typedef struct _TMKeyContextRec {
  285.     XEvent *event;
  286.     unsigned long serial;
  287.     KeySym keysym;
  288.     Modifiers modifiers;
  289.     TMKeyCache keycache;  /* keep this last, to keep offsets to others small */
  290. } TMKeyContextRec, *TMKeyContext;
  291.  
  292. typedef struct _TMGlobalRec{
  293.     TMTypeMatchRec         **typeMatchSegmentTbl;
  294.     TMShortCard            numTypeMatches;
  295.     TMShortCard            numTypeMatchSegments;
  296.     TMShortCard            typeMatchSegmentTblSize;
  297.     TMModifierMatchRec         **modMatchSegmentTbl;
  298.     TMShortCard            numModMatches;
  299.     TMShortCard            numModMatchSegments;
  300.     TMShortCard            modMatchSegmentTblSize;
  301.     Boolean            newMatchSemantics;
  302. #ifdef TRACE_TM
  303.     XtTranslations        *tmTbl;
  304.     TMShortCard            numTms;
  305.     TMShortCard            tmTblSize;
  306.     struct _TMBindCacheRec    **bindCacheTbl;
  307.     TMShortCard            numBindCache;
  308.     TMShortCard            bindCacheTblSize;
  309.     TMShortCard            numLateBindings;
  310.     TMShortCard            numBranchHeads;
  311.     TMShortCard            numComplexStates;
  312.     TMShortCard            numComplexActions;
  313. #endif /* TRACE_TM */
  314. }TMGlobalRec;
  315.  
  316. extern TMGlobalRec _XtGlobalTM;
  317.  
  318. #define TM_MOD_SEGMENT_SIZE     16
  319. #define TM_TYPE_SEGMENT_SIZE     16
  320.  
  321. #define TMGetTypeMatch(idx) \
  322.   ((TMTypeMatch) \
  323.    &((_XtGlobalTM.typeMatchSegmentTbl[((idx) >> 4)])[(idx) & 15]))
  324. #define TMGetModifierMatch(idx) \
  325.   ((TMModifierMatch) \
  326.    &((_XtGlobalTM.modMatchSegmentTbl[(idx) >> 4])[(idx) & 15]))
  327.  
  328. /* Useful Access Macros */
  329. #define TMNewMatchSemantics() (_XtGlobalTM.newMatchSemantics)
  330. #define TMBranchMore(branch) (branch->more)
  331. #define TMComplexBranchHead(tree, br) \
  332.   (((TMComplexStateTree)tree)->complexBranchHeadTbl[TMBranchMore(br)])
  333.  
  334. #define TMGetComplexBindEntry(bindData, idx) \
  335.   ((TMComplexBindProcs)&(((TMComplexBindData)bindData)->bindTbl[idx]))
  336.  
  337. #define TMGetSimpleBindEntry(bindData, idx) \
  338.   ((TMSimpleBindProcs)&(((TMSimpleBindData)bindData)->bindTbl[idx]))
  339.  
  340.  
  341. #define _InitializeKeysymTables(dpy, pd) \
  342.     if (pd->keysyms == NULL) \
  343.         _XtBuildKeysymTables(dpy, pd)
  344.  
  345. /* 
  346.  * Internal Functions
  347.  */
  348.  
  349. extern void _XtPopup(
  350. #if NeedFunctionPrototypes
  351.     Widget      /* widget */,
  352.     XtGrabKind  /* grab_kind */,
  353.     _XtBoolean    /* spring_loaded */
  354. #endif
  355. );
  356.  
  357. extern String _XtPrintXlations(
  358. #if NeedFunctionPrototypes
  359.     Widget        /* w */,
  360.     XtTranslations     /* xlations */,
  361.     Widget        /* accelWidget */,
  362.     _XtBoolean        /* includeRHS */
  363. #endif
  364. );
  365.  
  366. extern void _XtRegisterGrabs(
  367. #if NeedFunctionPrototypes
  368.     Widget    /* widget */
  369. #endif
  370. );
  371.  
  372. extern XtPointer _XtInitializeActionData(
  373. #if NeedFunctionPrototypes
  374.     struct _XtActionsRec *    /* actions */,
  375.     Cardinal             /* count */,
  376.     _XtBoolean            /* inPlace */
  377. #endif
  378. );
  379.  
  380. extern void _XtAddEventSeqToStateTree(
  381. #if NeedFunctionPrototypes
  382.     EventSeqPtr        /* eventSeq */,
  383.     TMParseStateTree    /* stateTree */
  384. #endif 
  385. );
  386.  
  387. extern Boolean _XtMatchUsingStandardMods(
  388. #if NeedFunctionPrototypes
  389.     TMTypeMatch        /* typeMatch */,
  390.     TMModifierMatch    /* modMatch */,
  391.     TMEventPtr        /* eventSeq */
  392. #endif
  393. );
  394.  
  395. extern Boolean _XtMatchUsingDontCareMods(
  396. #if NeedFunctionPrototypes
  397.     TMTypeMatch        /* typeMatch */,
  398.     TMModifierMatch    /* modMatch */,
  399.     TMEventPtr        /* eventSeq */
  400. #endif
  401. );
  402.  
  403. extern Boolean _XtRegularMatch(
  404. #if NeedFunctionPrototypes
  405.     TMTypeMatch        /* typeMatch */,
  406.     TMModifierMatch    /* modMatch */,
  407.     TMEventPtr        /* eventSeq */
  408. #endif
  409. );
  410.  
  411. extern Boolean _XtMatchAtom(
  412. #if NeedFunctionPrototypes
  413.     TMTypeMatch        /* typeMatch */,
  414.     TMModifierMatch    /* modMatch */,
  415.     TMEventPtr        /* eventSeq */
  416. #endif
  417. );
  418.  
  419. extern void _XtTranslateEvent(
  420. #if NeedFunctionPrototypes
  421.     Widget        /* widget */,
  422.     XEvent*        /* event */
  423. #endif
  424. );
  425.  
  426. extern void _XtBuildKeysymTables();
  427.  
  428. #ifndef NO_MIT_HACKS
  429. extern void  _XtDisplayTranslations(
  430. #if NeedFunctionPrototypes
  431.     Widget        /* widget */,
  432.     XEvent*        /* event */,
  433.     String*        /* params */,
  434.     Cardinal*        /* num_params */
  435. #endif 
  436. );
  437.  
  438. extern void  _XtDisplayAccelerators(
  439. #if NeedFunctionPrototypes
  440.     Widget        /* widget */,
  441.     XEvent*        /* event */,
  442.     String*        /* params */,
  443.     Cardinal*        /* num_params */
  444. #endif
  445. );
  446.  
  447. extern void _XtDisplayInstalledAccelerators(
  448. #if NeedFunctionPrototypes
  449.     Widget        /* widget */,
  450.     XEvent*        /* event */,
  451.     String*        /* params */,
  452.     Cardinal*        /* num_params */
  453. #endif
  454. );
  455. #endif /* ifndef NO_MIT_HACKS */
  456.  
  457. extern void _XtPopupInitialize(
  458. #if NeedFunctionPrototypes
  459.     XtAppContext    /* app_context */
  460. #endif
  461. );
  462.  
  463. extern void _XtBindActions(
  464. #if NeedFunctionPrototypes
  465.     Widget    /* widget */,
  466.     XtTM     /* tm_rec */
  467. #endif
  468. );
  469.  
  470. extern Boolean _XtComputeLateBindings(
  471. #if NeedFunctionPrototypes
  472.     Display*        /* dpy */,
  473.     LateBindingsPtr    /* lateModifiers */,
  474.     Modifiers*        /* computed */,
  475.     Modifiers*        /* computedMask */
  476. #endif
  477. );
  478.  
  479. extern XtTranslations _XtCreateXlations(
  480. #if NeedFunctionPrototypes
  481.     TMStateTree *    /* stateTrees */,
  482.     TMShortCard        /* numStateTrees */,
  483.     XtTranslations     /* first */,
  484.     XtTranslations    /* second */
  485. #endif
  486. );
  487.  
  488. extern Boolean _XtCvtMergeTranslations(
  489. #if NeedFunctionPrototypes
  490.     Display*    /* dpy */,
  491.     XrmValuePtr    /* args */,
  492.     Cardinal*    /* num_args */,
  493.     XrmValuePtr    /* from */,
  494.     XrmValuePtr    /* to */,
  495.     XtPointer*    /* closure_ret */
  496. #endif
  497. );
  498.  
  499. void _XtFreeTranslations(
  500. #if NeedFunctionPrototypes
  501.     XtAppContext    /* app */,
  502.     XrmValuePtr        /* toVal */,
  503.     XtPointer        /* closure */,
  504.     XrmValuePtr        /* args */,
  505.     Cardinal*        /* num_args */
  506. #endif
  507. );
  508.  
  509. extern TMShortCard _XtGetModifierIndex(
  510. #if NeedFunctionPrototypes
  511.     Event*    /* event */
  512. #endif
  513. );
  514.    
  515. extern TMShortCard _XtGetQuarkIndex(
  516. #if NeedFunctionPrototypes
  517.     TMParseStateTree    /* stateTreePtr */,
  518.     XrmQuark        /* quark */
  519. #endif
  520. );
  521.  
  522. extern XtTranslations _XtGetTranslationValue(
  523. #if NeedFunctionPrototypes
  524.     Widget        /* widget */
  525. #endif
  526. );
  527.  
  528. extern TMShortCard _XtGetTypeIndex(
  529. #if NeedFunctionPrototypes
  530.     Event*    /* event */
  531. #endif
  532. );
  533.  
  534. extern void _XtGrabInitialize(
  535. #if NeedFunctionPrototypes
  536.     XtAppContext    /* app */
  537. #endif
  538. );
  539.  
  540. extern void _XtInstallTranslations(
  541. #if NeedFunctionPrototypes
  542.     Widget        /* widget */
  543. #endif
  544. );
  545.  
  546. extern void _XtRemoveTranslations(
  547. #if NeedFunctionPrototypes
  548.     Widget        /* widget */
  549. #endif
  550. );
  551.  
  552. extern void _XtDestroyTMData(
  553. #if NeedFunctionPrototypes
  554.     Widget        /* widget */
  555. #endif
  556. );
  557.  
  558. extern void _XtMergeTranslations(
  559. #if NeedFunctionPrototypes
  560.     Widget        /* widget */,
  561.     XtTranslations    /* newXlations */,
  562.     _XtTranslateOp    /* operation */
  563. #endif
  564. );
  565.  
  566. extern void _XtActionInitialize(
  567. #if NeedFunctionPrototypes
  568.     XtAppContext    /* app */
  569. #endif
  570. );
  571.  
  572. extern TMStateTree _XtParseTreeToStateTree(
  573. #if NeedFunctionPrototypes
  574.     TMParseStateTree     /* parseTree */
  575. #endif
  576. );
  577.  
  578. extern String _XtPrintActions(
  579. #if NeedFunctionPrototypes
  580.     ActionRec*    /* actions */,
  581.     XrmQuark*    /* quarkTbl */
  582. #endif
  583. );
  584.  
  585. extern String _XtPrintEventSeq(
  586. #if NeedFunctionPrototypes
  587.     EventSeqPtr    /* eventSeq */,
  588.     Display*    /* dpy */
  589. #endif
  590. );
  591.  
  592. typedef Boolean (*_XtTraversalProc)(
  593. #if NeedFunctionPrototypes
  594.     StatePtr    /* state */,
  595.     XtPointer    /* data */
  596. #endif
  597. );
  598.                     
  599. extern void _XtTraverseStateTree(
  600. #if NeedFunctionPrototypes
  601.     TMStateTree        /* tree */,
  602.     _XtTraversalProc    /* func */,                 
  603.     XtPointer        /* data */
  604. #endif
  605. );
  606.  
  607. extern void _XtTranslateInitialize(
  608. #if NeedFunctionPrototypes
  609.     void
  610. #endif
  611. );
  612.  
  613. extern void _XtUnbindActions(
  614. #if NeedFunctionPrototypes
  615.     Widget        /* widget */,
  616.     XtTranslations    /* xlations */,
  617.     TMBindData        /* bindData */
  618. #endif
  619. );
  620.  
  621. extern void _XtUnmergeTranslations(
  622. #if NeedFunctionPrototypes
  623.     Widget        /* widget */,
  624.     XtTranslations     /* xlations */
  625. #endif
  626. );
  627.